Extending vfp command TEXT/ENDTEXT to big strings

Published on by Yousfi Benameur

        

[Post 270]

the web uses actually very big string to represent for ex a big picture,as 64 encoded string ....
vfp has natively limited the litteral string to 255 chars.
in text/endtext this string was limited to 8192 octets.

if you put in code between command text/endtext a big string (more 8192 octets), vfp returns error (in certain cases it crashes also).
a string is limited theorically to 16.7 Mo (tested more this limit with no problem but not general).
the problem is how to embed a litteral string between command text/endtext for big and even very big strings ?

its a simple trick:
cut this big string into pieces of 1000 to 3000 bytes (not override the limit 8192 octets) and separate these chunks with ctrf (chr(13)+chr(10)).
in text clause add flags as "pretext 1+2+4+8" to re evaluate the string dynamically.
and its all.the magic is this new string is accepted by vfp.

the first code is able to  convert any file,picture, exe... (even big) to a "compatible string"  running without problem.
in code *2* i used a js library  file with 53 Ko for this purpose and demo.
then you can integrate big pictures inside text/endtext codes without problem.
i used also the 64 hexdecimal encoded strings working as well in vfp.this avoid some problems with unicode strings (not readable with vfp)..
strconv(string,13) encode and strconv(string,14) decode.


Click on code to select [then copy] -click outside to deselect


*1* this code converts any file ,even big one,to a compatible string with text/endtext command.
*the string calculated can be pasted between text/endtext in any vfp code.
*this can avoid to attach some resources....
*special thanks to Marco Plaza

Local m.src
m.src = Getfile()
If Empty(m.src)
  Return .F.
Endi

Local m.source,m.source64,m.x,chunkL,m.str,m.cr
m.cr=Chr(13)+Chr(10)
m.source = Filetostr(m.src)
m.source64 = Strconv(m.source,13)

m.str = ''
m.x = 1
m.chunkL =2000

Do While m.x < Len(m.source64)
  m.str =m.str+Substr(M.source64,M.x,chunkL)+m.cr
  m.x = m.x+m.chunkL
Enddo

_Cliptext = M.str && ready to paste on source code..

*-- test:
TEXT to OUT64 pretext 1+2+3+8 textmerge NOSHOW
<<_cliptext>>
ENDTEXT

Local m.mess
If Strconv(m.out64,14) == m.source
  m.mess="Parfect egality strconv(m.out64,14) == m.source "
Else
  m.mess="code fails"
Endi

Messagebox(m.mess+cr+'The big string is in clipboard'+m.cr+'Paste the clipboard between text/endtext',0+32+4096,'in clipboard')



Click on code to select [then copy] -click outside to deselect


*2* created on wednesday 05 of april 2018
*this is a demo how to work with a big litteral string built with code *1*
*save this mandatory as ycolorPicker.prg  (used to build ycolorpicker.exe )
*this builds a web color picker with a jsfile and a html file.jscolor.js originall =53Ko (can be downloaded for free from http://jscolor.com/).
*the js file (as class or library) is converted to a string and inserted beteen text/endtext vfp command.
*the code shows to convert any big file to string and insert it between text/endtext.vfp have limited these litteral strings insertion to 8192 chars.
*by making big string as sum of many chunks (limited to 1000-3000 chars for ex) and insring a ctrf (chr(13)+chr(10),and evaluating it with clause "pretext", by magic this works.
*then with this artifact can insert big strings inside text/endtext.
*these strings inerted can go until 16.7 Mo theorically (and more).
*ycolorpicker.exe is standalone file (it create jscolor.js+ycolorpicker.html in temp and erase them immediatly  to run on memory only).

if !_vfp.startmode=0
on shutdown yshutdown()
endi
=yjs() &&build library jscolor.js

local m.myvar
text to m.myvar noshow
<!DOCTYPE html>
<html>
<head>
	<title>jscolor </title>
</head>
<body style="text-align:left;" bgcolor=cyan>
<script src="jscolor.js"></script>


<table style="margin-top:5px;">
<tr>
<td><input style="float:left;height:32px;"  class="jscolor {onFineChange:'update(this)'}" value="ffcc00"></td>
<td >
<div style="position:absolute; left:240px; top:10px;background-color:cyan;font-bold:bold;color:rgb(128,0,64);">
    toHEXString = <span id="hex-str"></span><br />
    toRGBString = <span id="rgb-str"></span><br />
    R, G, B = <span id="rgb"></span><br />
    H, S, V = <span id="hsv"></span>	
<br><br><br>


</td>
</tr>
<tr><td>
<button id="yb3" style="margin-top:110px;" onclick="add()">Add 30 pickers</button>
<p id="container"></p>
</td></tr>
</table><br>


<script>
function add() {
    for(var i = 0; i < 30; i++) {
        var input = document.createElement('INPUT')
        var picker = new jscolor(input)
        picker.fromHSV(360 / 100 * i, 100, 100)
        document.getElementById('container').appendChild(input)
    }
	document.getElementById("yb3").style.visibility="hidden";
}
</script>

<script>
function update(picker) {
    document.getElementById('hex-str').innerHTML = picker.toHEXString();
    document.getElementById('rgb-str').innerHTML = picker.toRGBString();
    document.getElementById('rgb').innerHTML =
        Math.round(picker.rgb[0]) + ', ' +
        Math.round(picker.rgb[1]) + ', ' +
        Math.round(picker.rgb[2]);

    document.getElementById('hsv').innerHTML =
        Math.round(picker.hsv[0]) + '°, ' +
        Math.round(picker.hsv[1]) + '%, ' +
        Math.round(picker.hsv[2]) + '%';
}

</script>
</body>
</html>
endtext

set safe off
local m.lcdest
m.lcdest=addbs(sys(2023))+"ycolorPicker.html"
strtofile(m.myvar,m.lcdest)

declare integer BringWindowToTop in user32 integer HWND
local apie
apie=newObject("internetexplorer.application")
with apie

.navigate(m.lcdest)
.menubar=0
.toolbar=0
.statusbar=0
.resizable=0
.width=600
.height=600
bringWindowToTop(.hwnd)
*.document.title="ColorPicker hexadecimal & RGB & HSL converter"  &&as alternative to setWindowText
.visible=.t.


Declare Integer ExtractIcon In shell32 Integer hInst, String  lpszExeFileName, Integer lpiIcon
  Declare Integer SendMessage In user32 Integer HWnd, Integer Msg, Integer wParam, Integer Lparam
  Declare Integer SetWindowText In user32 Integer HWnd, String lpString
  *Constants for SendMessage second parameter
  #Define WM_GETICON 0x7F
  #Define WM_SETICON 0x80

  *Constants for SendMessage third parameter
  #Define ICON_SMALL 0
  #Define ICON_BIG 1

  Local lnIcon
  lnIcon = ExtractIcon (0,Home(1)+"vfp9.exe",0)  && if exists on system

  SetWindowText(.HWnd, "ColorPicker hexadecimal & RGB & HSL converter")
  SendMessage(.HWnd, WM_SETICON, ICON_SMALL, lnIcon)
  *********
  .Visible=.T.
  Inke(2)

  .Document.body.Scroll="no"
Endwith


function yjs
text to m.myvar noshow
LyoqDQogKiBqc2NvbG9yIC0gSmF2YVNjcmlwdCBDb2xvciBQaWNrZXINCiAqDQogKiBAbGluayAgICBodHRwOi8vanNjb2xvci5jb20NCiAqIEBsaWNlbnNlIEZvciBvcGVuIHNvdXJjZSB1c2U6IEdQTHYzDQogKiAgICAgICAgICBGb3IgY29tbWVyY2lhbCB1c2U6IEpTQ29sb3IgQ29tbWVyY2lhbCBMaWNlbnNlDQogKiBAYXV0aG9yICBKYW4gT2R2YXJrbw0KICogQHZlcnNpb24gMi4wLjQNCiAqDQogKiBTZWUgdXNhZ2UgZXhhbXBsZXMgYXQgaHR0cDovL2pzY29sb3IuY29tL2V4YW1wbGVzLw0KICovDQoNCg0KInVzZSBzdHJpY3QiOw0KDQoNCmlmICghd2luZG93LmpzY29sb3IpIHsgd2luZG93LmpzY29sb3IgPSAoZnVuY3Rpb24gKCkgew0KDQoNCnZhciBqc2MgPSB7DQoNCg0KCXJlZ2lzdGVyIDogZnVuY3Rpb24gKCkgew0KCQlqc2MuYXR0YWNoRE9NUmVhZHlFdmVudChqc2MuaW5pdCk7DQoJCWpzYy5hdHRhY2hFdmVudChkb2N1bWVudCwgJ21vdXNlZG93bicsIGpzYy5vbkRvY3VtZW50TW91c2VEb3duKTsNCgkJanNjLmF0dGFjaEV2ZW50KGRvY3VtZW50LCAndG91Y2hzdGFydCcsIGpzYy5vbkRvY3VtZW50VG91Y2hTdGFydCk7DQoJCWpzYy5hdHRhY2hFdmVudCh3aW5kb3csICdyZXNpemUnLCBqc2Mub25XaW5kb3dSZXNpemUpOw0KCX0sDQoNCg0KCWluaXQgOiBmdW5jdGlvbiAoKSB7DQoJCWlmIChqc2MuanNjb2xvci5sb29rdXBDbGFzcykgew0KCQkJanNjLmpzY29sb3IuaW5zdGFsbEJ5Q2xhc3NOYW1lKGpzYy5qc2NvbG9yLmxvb2t1cENsYXNzKTsNCgkJfQ0KCX0sDQoNCg0KCXRyeUluc3RhbGxPbkVsZW1lbnRzIDogZnVuY3Rpb24gKGVsbXMsIGNsYXNzTmFtZSkgew0KCQl2YXIgbWF0Y2hDbGFzcyA9IG5ldyBSZWdFeHAoJyhefFxccykoJyArIGNsYXNzTmFtZSArICcpKFxccyooXFx7W159XSpcXH0pfFxcc3wkKScsICdpJyk7DQoNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBlbG1zLmxlbmd0aDsgaSArPSAxKSB7DQoJCQlpZiAoZWxtc1tpXS50eXBlICE9PSB1bmRlZmluZWQgJiYgZWxtc1tpXS50eXBlLnRvTG93ZXJDYXNlKCkgPT0gJ2NvbG9yJykgew0KCQkJCWlmIChqc2MuaXNDb2xvckF0dHJTdXBwb3J0ZWQpIHsNCgkJCQkJLy8gc2tpcCBpbnB1dHMgb2YgdHlwZSAnY29sb3InIGlmIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlcg0KCQkJCQljb250aW51ZTsNCgkJCQl9DQoJCQl9DQoJCQl2YXIgbTsNCgkJCWlmICghZWxtc1tpXS5qc2NvbG9yICYmIGVsbXNbaV0uY2xhc3NOYW1lICYmIChtID0gZWxtc1tpXS5jbGFzc05hbWUubWF0Y2gobWF0Y2hDbGFzcykpKSB7DQoJCQkJdmFyIHRhcmdldEVsbSA9IGVsbXNbaV07DQoJCQkJdmFyIG9wdHNTdHIgPSBudWxsOw0KDQoJCQkJdmFyIGRhdGFPcHRpb25zID0ganNjLmdldERhdGFBdHRyKHRhcmdldEVsbSwgJ2pzY29sb3InKTsNCgkJCQlpZiAoZGF0YU9wdGlvbnMgIT09IG51bGwpIHsNCgkJCQkJb3B0c1N0ciA9IGRhdGFPcHRpb25zOw0KCQkJCX0gZWxzZSBpZiAobVs0XSkg
ew0KCQkJCQlvcHRzU3RyID0gbVs0XTsNCgkJCQl9DQoNCgkJCQl2YXIgb3B0cyA9IHt9Ow0KCQkJCWlmIChvcHRzU3RyKSB7DQoJCQkJCXRyeSB7DQoJCQkJCQlvcHRzID0gKG5ldyBGdW5jdGlvbiAoJ3JldHVybiAoJyArIG9wdHNTdHIgKyAnKScpKSgpOw0KCQkJCQl9IGNhdGNoKGVQYXJzZUVycm9yKSB7DQoJCQkJCQlqc2Mud2FybignRXJyb3IgcGFyc2luZyBqc2NvbG9yIG9wdGlvbnM6ICcgKyBlUGFyc2VFcnJvciArICc6XG4nICsgb3B0c1N0cik7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdGFyZ2V0RWxtLmpzY29sb3IgPSBuZXcganNjLmpzY29sb3IodGFyZ2V0RWxtLCBvcHRzKTsNCgkJCX0NCgkJfQ0KCX0sDQoNCg0KCWlzQ29sb3JBdHRyU3VwcG9ydGVkIDogKGZ1bmN0aW9uICgpIHsNCgkJdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7DQoJCWlmIChlbG0uc2V0QXR0cmlidXRlKSB7DQoJCQllbG0uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2NvbG9yJyk7DQoJCQlpZiAoZWxtLnR5cGUudG9Mb3dlckNhc2UoKSA9PSAnY29sb3InKSB7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0pKCksDQoNCg0KCWlzQ2FudmFzU3VwcG9ydGVkIDogKGZ1bmN0aW9uICgpIHsNCgkJdmFyIGVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOw0KCQlyZXR1cm4gISEoZWxtLmdldENvbnRleHQgJiYgZWxtLmdldENvbnRleHQoJzJkJykpOw0KCX0pKCksDQoNCg0KCWZldGNoRWxlbWVudCA6IGZ1bmN0aW9uIChtaXhlZCkgew0KCQlyZXR1cm4gdHlwZW9mIG1peGVkID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1peGVkKSA6IG1peGVkOw0KCX0sDQoNCg0KCWlzRWxlbWVudFR5cGUgOiBmdW5jdGlvbiAoZWxtLCB0eXBlKSB7DQoJCXJldHVybiBlbG0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdHlwZS50b0xvd2VyQ2FzZSgpOw0KCX0sDQoNCg0KCWdldERhdGFBdHRyIDogZnVuY3Rpb24gKGVsLCBuYW1lKSB7DQoJCXZhciBhdHRyTmFtZSA9ICdkYXRhLScgKyBuYW1lOw0KCQl2YXIgYXR0clZhbHVlID0gZWwuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKTsNCgkJaWYgKGF0dHJWYWx1ZSAhPT0gbnVsbCkgew0KCQkJcmV0dXJuIGF0dHJWYWx1ZTsNCgkJfQ0KCQlyZXR1cm4gbnVsbDsNCgl9LA0KDQoNCglhdHRhY2hFdmVudCA6IGZ1bmN0aW9uIChlbCwgZXZudCwgZnVuYykgew0KCQlpZiAoZWwuYWRkRXZlbnRMaXN0ZW5lcikgew0KCQkJZWwuYWRkRXZlbnRMaXN0ZW5lcihldm50LCBmdW5jLCBmYWxzZSk7DQoJCX0gZWxzZSBpZiAoZWwuYXR0YWNoRXZlbnQpIHsNCgkJCWVsLmF0dGFjaEV2ZW50KCdvbicgKyBldm50LCBmdW5jKTsNCgkJfQ0KCX0sDQoNCg0KCWRldGFjaEV2ZW50IDogZnVuY3Rpb24gKGVsLCBldm50LCBmdW5jKSB7DQoJCWlmIChlbC5yZW1vdmVFdmVudExpc3RlbmVyKSB7DQoJCQllbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2
bnQsIGZ1bmMsIGZhbHNlKTsNCgkJfSBlbHNlIGlmIChlbC5kZXRhY2hFdmVudCkgew0KCQkJZWwuZGV0YWNoRXZlbnQoJ29uJyArIGV2bnQsIGZ1bmMpOw0KCQl9DQoJfSwNCg0KDQoJX2F0dGFjaGVkR3JvdXBFdmVudHMgOiB7fSwNCg0KDQoJYXR0YWNoR3JvdXBFdmVudCA6IGZ1bmN0aW9uIChncm91cE5hbWUsIGVsLCBldm50LCBmdW5jKSB7DQoJCWlmICghanNjLl9hdHRhY2hlZEdyb3VwRXZlbnRzLmhhc093blByb3BlcnR5KGdyb3VwTmFtZSkpIHsNCgkJCWpzYy5fYXR0YWNoZWRHcm91cEV2ZW50c1tncm91cE5hbWVdID0gW107DQoJCX0NCgkJanNjLl9hdHRhY2hlZEdyb3VwRXZlbnRzW2dyb3VwTmFtZV0ucHVzaChbZWwsIGV2bnQsIGZ1bmNdKTsNCgkJanNjLmF0dGFjaEV2ZW50KGVsLCBldm50LCBmdW5jKTsNCgl9LA0KDQoNCglkZXRhY2hHcm91cEV2ZW50cyA6IGZ1bmN0aW9uIChncm91cE5hbWUpIHsNCgkJaWYgKGpzYy5fYXR0YWNoZWRHcm91cEV2ZW50cy5oYXNPd25Qcm9wZXJ0eShncm91cE5hbWUpKSB7DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGpzYy5fYXR0YWNoZWRHcm91cEV2ZW50c1tncm91cE5hbWVdLmxlbmd0aDsgaSArPSAxKSB7DQoJCQkJdmFyIGV2dCA9IGpzYy5fYXR0YWNoZWRHcm91cEV2ZW50c1tncm91cE5hbWVdW2ldOw0KCQkJCWpzYy5kZXRhY2hFdmVudChldnRbMF0sIGV2dFsxXSwgZXZ0WzJdKTsNCgkJCX0NCgkJCWRlbGV0ZSBqc2MuX2F0dGFjaGVkR3JvdXBFdmVudHNbZ3JvdXBOYW1lXTsNCgkJfQ0KCX0sDQoNCg0KCWF0dGFjaERPTVJlYWR5RXZlbnQgOiBmdW5jdGlvbiAoZnVuYykgew0KCQl2YXIgZmlyZWQgPSBmYWxzZTsNCgkJdmFyIGZpcmVPbmNlID0gZnVuY3Rpb24gKCkgew0KCQkJaWYgKCFmaXJlZCkgew0KCQkJCWZpcmVkID0gdHJ1ZTsNCgkJCQlmdW5jKCk7DQoJCQl9DQoJCX07DQoNCgkJaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHsNCgkJCXNldFRpbWVvdXQoZmlyZU9uY2UsIDEpOyAvLyBhc3luYw0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsNCgkJCWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmaXJlT25jZSwgZmFsc2UpOw0KDQoJCQkvLyBGYWxsYmFjaw0KCQkJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmaXJlT25jZSwgZmFsc2UpOw0KDQoJCX0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsNCgkJCS8vIElFDQoJCQlkb2N1bWVudC5hdHRhY2hFdmVudCgnb25yZWFkeXN0YXRlY2hhbmdlJywgZnVuY3Rpb24gKCkgew0KCQkJCWlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnKSB7DQoJCQkJCWRvY3VtZW50LmRldGFjaEV2ZW50KCdvbnJlYWR5c3RhdGVjaGFuZ2UnLCBhcmd1bWVudHMuY2FsbGVlKTsNCgkJCQkJZmlyZU9uY2UoKTsNCgkJCQl9DQoJCQl9KQ0KDQoJCQkvLyBGYWxsYmFjaw0KCQkJd2luZG93LmF0dGFj
aEV2ZW50KCdvbmxvYWQnLCBmaXJlT25jZSk7DQoNCgkJCS8vIElFNy84DQoJCQlpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsICYmIHdpbmRvdyA9PSB3aW5kb3cudG9wKSB7DQoJCQkJdmFyIHRyeVNjcm9sbCA9IGZ1bmN0aW9uICgpIHsNCgkJCQkJaWYgKCFkb2N1bWVudC5ib2R5KSB7IHJldHVybjsgfQ0KCQkJCQl0cnkgew0KCQkJCQkJZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCdsZWZ0Jyk7DQoJCQkJCQlmaXJlT25jZSgpOw0KCQkJCQl9IGNhdGNoIChlKSB7DQoJCQkJCQlzZXRUaW1lb3V0KHRyeVNjcm9sbCwgMSk7DQoJCQkJCX0NCgkJCQl9Ow0KCQkJCXRyeVNjcm9sbCgpOw0KCQkJfQ0KCQl9DQoJfSwNCg0KDQoJd2FybiA6IGZ1bmN0aW9uIChtc2cpIHsNCgkJaWYgKHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLndhcm4pIHsNCgkJCXdpbmRvdy5jb25zb2xlLndhcm4obXNnKTsNCgkJfQ0KCX0sDQoNCg0KCXByZXZlbnREZWZhdWx0IDogZnVuY3Rpb24gKGUpIHsNCgkJaWYgKGUucHJldmVudERlZmF1bHQpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB9DQoJCWUucmV0dXJuVmFsdWUgPSBmYWxzZTsNCgl9LA0KDQoNCgljYXB0dXJlVGFyZ2V0IDogZnVuY3Rpb24gKHRhcmdldCkgew0KCQkvLyBJRQ0KCQlpZiAodGFyZ2V0LnNldENhcHR1cmUpIHsNCgkJCWpzYy5fY2FwdHVyZWRUYXJnZXQgPSB0YXJnZXQ7DQoJCQlqc2MuX2NhcHR1cmVkVGFyZ2V0LnNldENhcHR1cmUoKTsNCgkJfQ0KCX0sDQoNCg0KCXJlbGVhc2VUYXJnZXQgOiBmdW5jdGlvbiAoKSB7DQoJCS8vIElFDQoJCWlmIChqc2MuX2NhcHR1cmVkVGFyZ2V0KSB7DQoJCQlqc2MuX2NhcHR1cmVkVGFyZ2V0LnJlbGVhc2VDYXB0dXJlKCk7DQoJCQlqc2MuX2NhcHR1cmVkVGFyZ2V0ID0gbnVsbDsNCgkJfQ0KCX0sDQoNCg0KCWZpcmVFdmVudCA6IGZ1bmN0aW9uIChlbCwgZXZudCkgew0KCQlpZiAoIWVsKSB7DQoJCQlyZXR1cm47DQoJCX0NCgkJaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7DQoJCQl2YXIgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpOw0KCQkJZXYuaW5pdEV2ZW50KGV2bnQsIHRydWUsIHRydWUpOw0KCQkJZWwuZGlzcGF0Y2hFdmVudChldik7DQoJCX0gZWxzZSBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnRPYmplY3QpIHsNCgkJCXZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCk7DQoJCQllbC5maXJlRXZlbnQoJ29uJyArIGV2bnQsIGV2KTsNCgkJfSBlbHNlIGlmIChlbFsnb24nICsgZXZudF0pIHsgLy8gYWx0ZXJuYXRpdmVseSB1c2UgdGhlIHRyYWRpdGlvbmFsIGV2ZW50IG1vZGVsDQoJCQllbFsnb24nICsgZXZudF0oKTsNCgkJfQ0KCX0sDQoNCg0KCWNsYXNzTmFtZVRvTGlzdCA6IGZ1bmN0aW9uIChjbGFzc05hbWUpIHsNCgkJcmV0dXJuIGNsYXNzTmFtZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpLnNwbGl0KC9ccysvKTsNCgl9LA0KDQoNCgkvLyBUaGUg
Y2xhc3NOYW1lIHBhcmFtZXRlciAoc3RyKSBjYW4gb25seSBjb250YWluIGEgc2luZ2xlIGNsYXNzIG5hbWUNCgloYXNDbGFzcyA6IGZ1bmN0aW9uIChlbG0sIGNsYXNzTmFtZSkgew0KCQlpZiAoIWNsYXNzTmFtZSkgew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCXJldHVybiAtMSAhPSAoJyAnICsgZWxtLmNsYXNzTmFtZS5yZXBsYWNlKC9ccysvZywgJyAnKSArICcgJykuaW5kZXhPZignICcgKyBjbGFzc05hbWUgKyAnICcpOw0KCX0sDQoNCg0KCS8vIFRoZSBjbGFzc05hbWUgcGFyYW1ldGVyIChzdHIpIGNhbiBjb250YWluIG11bHRpcGxlIGNsYXNzIG5hbWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlDQoJc2V0Q2xhc3MgOiBmdW5jdGlvbiAoZWxtLCBjbGFzc05hbWUpIHsNCgkJdmFyIGNsYXNzTGlzdCA9IGpzYy5jbGFzc05hbWVUb0xpc3QoY2xhc3NOYW1lKTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc0xpc3QubGVuZ3RoOyBpICs9IDEpIHsNCgkJCWlmICghanNjLmhhc0NsYXNzKGVsbSwgY2xhc3NMaXN0W2ldKSkgew0KCQkJCWVsbS5jbGFzc05hbWUgKz0gKGVsbS5jbGFzc05hbWUgPyAnICcgOiAnJykgKyBjbGFzc0xpc3RbaV07DQoJCQl9DQoJCX0NCgl9LA0KDQoNCgkvLyBUaGUgY2xhc3NOYW1lIHBhcmFtZXRlciAoc3RyKSBjYW4gY29udGFpbiBtdWx0aXBsZSBjbGFzcyBuYW1lcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZQ0KCXVuc2V0Q2xhc3MgOiBmdW5jdGlvbiAoZWxtLCBjbGFzc05hbWUpIHsNCgkJdmFyIGNsYXNzTGlzdCA9IGpzYy5jbGFzc05hbWVUb0xpc3QoY2xhc3NOYW1lKTsNCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc0xpc3QubGVuZ3RoOyBpICs9IDEpIHsNCgkJCXZhciByZXBsID0gbmV3IFJlZ0V4cCgNCgkJCQknXlxccyonICsgY2xhc3NMaXN0W2ldICsgJ1xccyp8JyArDQoJCQkJJ1xccyonICsgY2xhc3NMaXN0W2ldICsgJ1xccyokfCcgKw0KCQkJCSdcXHMrJyArIGNsYXNzTGlzdFtpXSArICcoXFxzKyknLA0KCQkJCSdnJw0KCQkJKTsNCgkJCWVsbS5jbGFzc05hbWUgPSBlbG0uY2xhc3NOYW1lLnJlcGxhY2UocmVwbCwgJyQxJyk7DQoJCX0NCgl9LA0KDQoNCglnZXRTdHlsZSA6IGZ1bmN0aW9uIChlbG0pIHsNCgkJcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlID8gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxtKSA6IGVsbS5jdXJyZW50U3R5bGU7DQoJfSwNCg0KDQoJc2V0U3R5bGUgOiAoZnVuY3Rpb24gKCkgew0KCQl2YXIgaGVscGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQoJCXZhciBnZXRTdXBwb3J0ZWRQcm9wID0gZnVuY3Rpb24gKG5hbWVzKSB7DQoJCQlmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSArPSAxKSB7DQoJCQkJaWYgKG5hbWVzW2ldIGluIGhlbHBlci5zdHlsZSkgew0KCQkJCQlyZXR1cm4gbmFtZXNbaV07DQoJCQkJfQ0KCQkJfQ0KCQl9Ow0KCQl2YXIgcHJvcHMgPSB7DQoJCQlib3JkZXJSYWRpdXM6IGdldFN1cHBv
cnRlZFByb3AoWydib3JkZXJSYWRpdXMnLCAnTW96Qm9yZGVyUmFkaXVzJywgJ3dlYmtpdEJvcmRlclJhZGl1cyddKSwNCgkJCWJveFNoYWRvdzogZ2V0U3VwcG9ydGVkUHJvcChbJ2JveFNoYWRvdycsICdNb3pCb3hTaGFkb3cnLCAnd2Via2l0Qm94U2hhZG93J10pDQoJCX07DQoJCXJldHVybiBmdW5jdGlvbiAoZWxtLCBwcm9wLCB2YWx1ZSkgew0KCQkJc3dpdGNoIChwcm9wLnRvTG93ZXJDYXNlKCkpIHsNCgkJCWNhc2UgJ29wYWNpdHknOg0KCQkJCXZhciBhbHBoYU9wYWNpdHkgPSBNYXRoLnJvdW5kKHBhcnNlRmxvYXQodmFsdWUpICogMTAwKTsNCgkJCQllbG0uc3R5bGUub3BhY2l0eSA9IHZhbHVlOw0KCQkJCWVsbS5zdHlsZS5maWx0ZXIgPSAnYWxwaGEob3BhY2l0eT0nICsgYWxwaGFPcGFjaXR5ICsgJyknOw0KCQkJCWJyZWFrOw0KCQkJZGVmYXVsdDoNCgkJCQllbG0uc3R5bGVbcHJvcHNbcHJvcF1dID0gdmFsdWU7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCX07DQoJfSkoKSwNCg0KDQoJc2V0Qm9yZGVyUmFkaXVzIDogZnVuY3Rpb24gKGVsbSwgdmFsdWUpIHsNCgkJanNjLnNldFN0eWxlKGVsbSwgJ2JvcmRlclJhZGl1cycsIHZhbHVlIHx8ICcwJyk7DQoJfSwNCg0KDQoJc2V0Qm94U2hhZG93IDogZnVuY3Rpb24gKGVsbSwgdmFsdWUpIHsNCgkJanNjLnNldFN0eWxlKGVsbSwgJ2JveFNoYWRvdycsIHZhbHVlIHx8ICdub25lJyk7DQoJfSwNCg0KDQoJZ2V0RWxlbWVudFBvcyA6IGZ1bmN0aW9uIChlLCByZWxhdGl2ZVRvVmlld3BvcnQpIHsNCgkJdmFyIHg9MCwgeT0wOw0KCQl2YXIgcmVjdCA9IGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7DQoJCXggPSByZWN0LmxlZnQ7DQoJCXkgPSByZWN0LnRvcDsNCgkJaWYgKCFyZWxhdGl2ZVRvVmlld3BvcnQpIHsNCgkJCXZhciB2aWV3UG9zID0ganNjLmdldFZpZXdQb3MoKTsNCgkJCXggKz0gdmlld1Bvc1swXTsNCgkJCXkgKz0gdmlld1Bvc1sxXTsNCgkJfQ0KCQlyZXR1cm4gW3gsIHldOw0KCX0sDQoNCg0KCWdldEVsZW1lbnRTaXplIDogZnVuY3Rpb24gKGUpIHsNCgkJcmV0dXJuIFtlLm9mZnNldFdpZHRoLCBlLm9mZnNldEhlaWdodF07DQoJfSwNCg0KDQoJLy8gZ2V0IHBvaW50ZXIncyBYL1kgY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdmlld3BvcnQNCglnZXRBYnNQb2ludGVyUG9zIDogZnVuY3Rpb24gKGUpIHsNCgkJaWYgKCFlKSB7IGUgPSB3aW5kb3cuZXZlbnQ7IH0NCgkJdmFyIHggPSAwLCB5ID0gMDsNCgkJaWYgKHR5cGVvZiBlLmNoYW5nZWRUb3VjaGVzICE9PSAndW5kZWZpbmVkJyAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCkgew0KCQkJLy8gdG91Y2ggZGV2aWNlcw0KCQkJeCA9IGUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WDsNCgkJCXkgPSBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFk7DQoJCX0gZWxzZSBpZiAodHlwZW9mIGUuY2xpZW50WCA9PT0gJ251bWJlcicpIHsNCgkJCXggPSBlLmNsaWVudFg7DQoJCQl5ID0gZS5jbGllbnRZOw0KCQl9DQoJCXJldHVy
biB7IHg6IHgsIHk6IHkgfTsNCgl9LA0KDQoNCgkvLyBnZXQgcG9pbnRlcidzIFgvWSBjb29yZGluYXRlcyByZWxhdGl2ZSB0byB0YXJnZXQgZWxlbWVudA0KCWdldFJlbFBvaW50ZXJQb3MgOiBmdW5jdGlvbiAoZSkgew0KCQlpZiAoIWUpIHsgZSA9IHdpbmRvdy5ldmVudDsgfQ0KCQl2YXIgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50Ow0KCQl2YXIgdGFyZ2V0UmVjdCA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsNCg0KCQl2YXIgeCA9IDAsIHkgPSAwOw0KDQoJCXZhciBjbGllbnRYID0gMCwgY2xpZW50WSA9IDA7DQoJCWlmICh0eXBlb2YgZS5jaGFuZ2VkVG91Y2hlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGgpIHsNCgkJCS8vIHRvdWNoIGRldmljZXMNCgkJCWNsaWVudFggPSBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFg7DQoJCQljbGllbnRZID0gZS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZOw0KCQl9IGVsc2UgaWYgKHR5cGVvZiBlLmNsaWVudFggPT09ICdudW1iZXInKSB7DQoJCQljbGllbnRYID0gZS5jbGllbnRYOw0KCQkJY2xpZW50WSA9IGUuY2xpZW50WTsNCgkJfQ0KDQoJCXggPSBjbGllbnRYIC0gdGFyZ2V0UmVjdC5sZWZ0Ow0KCQl5ID0gY2xpZW50WSAtIHRhcmdldFJlY3QudG9wOw0KCQlyZXR1cm4geyB4OiB4LCB5OiB5IH07DQoJfSwNCg0KDQoJZ2V0Vmlld1BvcyA6IGZ1bmN0aW9uICgpIHsNCgkJdmFyIGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsNCgkJcmV0dXJuIFsNCgkJCSh3aW5kb3cucGFnZVhPZmZzZXQgfHwgZG9jLnNjcm9sbExlZnQpIC0gKGRvYy5jbGllbnRMZWZ0IHx8IDApLA0KCQkJKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAtIChkb2MuY2xpZW50VG9wIHx8IDApDQoJCV07DQoJfSwNCg0KDQoJZ2V0Vmlld1NpemUgOiBmdW5jdGlvbiAoKSB7DQoJCXZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7DQoJCXJldHVybiBbDQoJCQkod2luZG93LmlubmVyV2lkdGggfHwgZG9jLmNsaWVudFdpZHRoKSwNCgkJCSh3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jLmNsaWVudEhlaWdodCksDQoJCV07DQoJfSwNCg0KDQoJcmVkcmF3UG9zaXRpb24gOiBmdW5jdGlvbiAoKSB7DQoNCgkJaWYgKGpzYy5waWNrZXIgJiYganNjLnBpY2tlci5vd25lcikgew0KCQkJdmFyIHRoaXNPYmogPSBqc2MucGlja2VyLm93bmVyOw0KDQoJCQl2YXIgdHAsIHZwOw0KDQoJCQlpZiAodGhpc09iai5maXhlZCkgew0KCQkJCS8vIEZpeGVkIGVsZW1lbnRzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHZpZXdwb3J0LA0KCQkJCS8vIHRoZXJlZm9yZSB3ZSBjYW4gaWdub3JlIHRoZSBzY3JvbGwgb2Zmc2V0DQoJCQkJdHAgPSBqc2MuZ2V0RWxlbWVudFBvcyh0aGlzT2JqLnRhcmdldEVsZW1lbnQsIHRydWUpOyAvLyB0YXJnZXQgcG9zDQoJCQkJdnAgPSBbMCwgMF07IC8vIHZpZXcgcG9zDQoJCQl9IGVsc2Ugew0KCQkJ
CXRwID0ganNjLmdldEVsZW1lbnRQb3ModGhpc09iai50YXJnZXRFbGVtZW50KTsgLy8gdGFyZ2V0IHBvcw0KCQkJCXZwID0ganNjLmdldFZpZXdQb3MoKTsgLy8gdmlldyBwb3MNCgkJCX0NCg0KCQkJdmFyIHRzID0ganNjLmdldEVsZW1lbnRTaXplKHRoaXNPYmoudGFyZ2V0RWxlbWVudCk7IC8vIHRhcmdldCBzaXplDQoJCQl2YXIgdnMgPSBqc2MuZ2V0Vmlld1NpemUoKTsgLy8gdmlldyBzaXplDQoJCQl2YXIgcHMgPSBqc2MuZ2V0UGlja2VyT3V0ZXJEaW1zKHRoaXNPYmopOyAvLyBwaWNrZXIgc2l6ZQ0KCQkJdmFyIGEsIGIsIGM7DQoJCQlzd2l0Y2ggKHRoaXNPYmoucG9zaXRpb24udG9Mb3dlckNhc2UoKSkgew0KCQkJCWNhc2UgJ2xlZnQnOiBhPTE7IGI9MDsgYz0tMTsgYnJlYWs7DQoJCQkJY2FzZSAncmlnaHQnOmE9MTsgYj0wOyBjPTE7IGJyZWFrOw0KCQkJCWNhc2UgJ3RvcCc6ICBhPTA7IGI9MTsgYz0tMTsgYnJlYWs7DQoJCQkJZGVmYXVsdDogICAgIGE9MDsgYj0xOyBjPTE7IGJyZWFrOw0KCQkJfQ0KCQkJdmFyIGwgPSAodHNbYl0rcHNbYl0pLzI7DQoNCgkJCS8vIGNvbXB1dGUgcGlja2VyIHBvc2l0aW9uDQoJCQlpZiAoIXRoaXNPYmouc21hcnRQb3NpdGlvbikgew0KCQkJCXZhciBwcCA9IFsNCgkJCQkJdHBbYV0sDQoJCQkJCXRwW2JdK3RzW2JdLWwrbCpjDQoJCQkJXTsNCgkJCX0gZWxzZSB7DQoJCQkJdmFyIHBwID0gWw0KCQkJCQktdnBbYV0rdHBbYV0rcHNbYV0gPiB2c1thXSA/DQoJCQkJCQkoLXZwW2FdK3RwW2FdK3RzW2FdLzIgPiB2c1thXS8yICYmIHRwW2FdK3RzW2FdLXBzW2FdID49IDAgPyB0cFthXSt0c1thXS1wc1thXSA6IHRwW2FdKSA6DQoJCQkJCQl0cFthXSwNCgkJCQkJLXZwW2JdK3RwW2JdK3RzW2JdK3BzW2JdLWwrbCpjID4gdnNbYl0gPw0KCQkJCQkJKC12cFtiXSt0cFtiXSt0c1tiXS8yID4gdnNbYl0vMiAmJiB0cFtiXSt0c1tiXS1sLWwqYyA+PSAwID8gdHBbYl0rdHNbYl0tbC1sKmMgOiB0cFtiXSt0c1tiXS1sK2wqYykgOg0KCQkJCQkJKHRwW2JdK3RzW2JdLWwrbCpjID49IDAgPyB0cFtiXSt0c1tiXS1sK2wqYyA6IHRwW2JdK3RzW2JdLWwtbCpjKQ0KCQkJCV07DQoJCQl9DQoNCgkJCXZhciB4ID0gcHBbYV07DQoJCQl2YXIgeSA9IHBwW2JdOw0KCQkJdmFyIHBvc2l0aW9uVmFsdWUgPSB0aGlzT2JqLmZpeGVkID8gJ2ZpeGVkJyA6ICdhYnNvbHV0ZSc7DQoJCQl2YXIgY29udHJhY3RTaGFkb3cgPQ0KCQkJCShwcFswXSArIHBzWzBdID4gdHBbMF0gfHwgcHBbMF0gPCB0cFswXSArIHRzWzBdKSAmJg0KCQkJCShwcFsxXSArIHBzWzFdIDwgdHBbMV0gKyB0c1sxXSk7DQoNCgkJCWpzYy5fZHJhd1Bvc2l0aW9uKHRoaXNPYmosIHgsIHksIHBvc2l0aW9uVmFsdWUsIGNvbnRyYWN0U2hhZG93KTsNCgkJfQ0KCX0sDQoNCg0KCV9kcmF3UG9zaXRpb24gOiBmdW5jdGlvbiAodGhpc09iaiwgeCwgeSwgcG9zaXRpb25WYWx1ZSwgY29udHJhY3RTaGFkb3cpIHsNCgkJdmFyIHZTaGFkb3cgPSBjb250cmFjdFNo
YWRvdyA/IDAgOiB0aGlzT2JqLnNoYWRvd0JsdXI7IC8vIHB4DQoNCgkJanNjLnBpY2tlci53cmFwLnN0eWxlLnBvc2l0aW9uID0gcG9zaXRpb25WYWx1ZTsNCgkJanNjLnBpY2tlci53cmFwLnN0eWxlLmxlZnQgPSB4ICsgJ3B4JzsNCgkJanNjLnBpY2tlci53cmFwLnN0eWxlLnRvcCA9IHkgKyAncHgnOw0KDQoJCWpzYy5zZXRCb3hTaGFkb3coDQoJCQlqc2MucGlja2VyLmJveFMsDQoJCQl0aGlzT2JqLnNoYWRvdyA/DQoJCQkJbmV3IGpzYy5Cb3hTaGFkb3coMCwgdlNoYWRvdywgdGhpc09iai5zaGFkb3dCbHVyLCAwLCB0aGlzT2JqLnNoYWRvd0NvbG9yKSA6DQoJCQkJbnVsbCk7DQoJfSwNCg0KDQoJZ2V0UGlja2VyRGltcyA6IGZ1bmN0aW9uICh0aGlzT2JqKSB7DQoJCXZhciBkaXNwbGF5U2xpZGVyID0gISFqc2MuZ2V0U2xpZGVyQ29tcG9uZW50KHRoaXNPYmopOw0KCQl2YXIgZGltcyA9IFsNCgkJCTIgKiB0aGlzT2JqLmluc2V0V2lkdGggKyAyICogdGhpc09iai5wYWRkaW5nICsgdGhpc09iai53aWR0aCArDQoJCQkJKGRpc3BsYXlTbGlkZXIgPyAyICogdGhpc09iai5pbnNldFdpZHRoICsganNjLmdldFBhZFRvU2xpZGVyUGFkZGluZyh0aGlzT2JqKSArIHRoaXNPYmouc2xpZGVyU2l6ZSA6IDApLA0KCQkJMiAqIHRoaXNPYmouaW5zZXRXaWR0aCArIDIgKiB0aGlzT2JqLnBhZGRpbmcgKyB0aGlzT2JqLmhlaWdodCArDQoJCQkJKHRoaXNPYmouY2xvc2FibGUgPyAyICogdGhpc09iai5pbnNldFdpZHRoICsgdGhpc09iai5wYWRkaW5nICsgdGhpc09iai5idXR0b25IZWlnaHQgOiAwKQ0KCQldOw0KCQlyZXR1cm4gZGltczsNCgl9LA0KDQoNCglnZXRQaWNrZXJPdXRlckRpbXMgOiBmdW5jdGlvbiAodGhpc09iaikgew0KCQl2YXIgZGltcyA9IGpzYy5nZXRQaWNrZXJEaW1zKHRoaXNPYmopOw0KCQlyZXR1cm4gWw0KCQkJZGltc1swXSArIDIgKiB0aGlzT2JqLmJvcmRlcldpZHRoLA0KCQkJZGltc1sxXSArIDIgKiB0aGlzT2JqLmJvcmRlcldpZHRoDQoJCV07DQoJfSwNCg0KDQoJZ2V0UGFkVG9TbGlkZXJQYWRkaW5nIDogZnVuY3Rpb24gKHRoaXNPYmopIHsNCgkJcmV0dXJuIE1hdGgubWF4KHRoaXNPYmoucGFkZGluZywgMS41ICogKDIgKiB0aGlzT2JqLnBvaW50ZXJCb3JkZXJXaWR0aCArIHRoaXNPYmoucG9pbnRlclRoaWNrbmVzcykpOw0KCX0sDQoNCg0KCWdldFBhZFlDb21wb25lbnQgOiBmdW5jdGlvbiAodGhpc09iaikgew0KCQlzd2l0Y2ggKHRoaXNPYmoubW9kZS5jaGFyQXQoMSkudG9Mb3dlckNhc2UoKSkgew0KCQkJY2FzZSAndic6IHJldHVybiAndic7IGJyZWFrOw0KCQl9DQoJCXJldHVybiAncyc7DQoJfSwNCg0KDQoJZ2V0U2xpZGVyQ29tcG9uZW50IDogZnVuY3Rpb24gKHRoaXNPYmopIHsNCgkJaWYgKHRoaXNPYmoubW9kZS5sZW5ndGggPiAyKSB7DQoJCQlzd2l0Y2ggKHRoaXNPYmoubW9kZS5jaGFyQXQoMikudG9Mb3dlckNhc2UoKSkgew0KCQkJCWNhc2UgJ3MnOiByZXR1cm4gJ3MnOyBicmVhazsNCgkJCQljYXNl
ICd2JzogcmV0dXJuICd2JzsgYnJlYWs7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIG51bGw7DQoJfSwNCg0KDQoJb25Eb2N1bWVudE1vdXNlRG93biA6IGZ1bmN0aW9uIChlKSB7DQoJCWlmICghZSkgeyBlID0gd2luZG93LmV2ZW50OyB9DQoJCXZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7DQoNCgkJaWYgKHRhcmdldC5fanNjTGlua2VkSW5zdGFuY2UpIHsNCgkJCWlmICh0YXJnZXQuX2pzY0xpbmtlZEluc3RhbmNlLnNob3dPbkNsaWNrKSB7DQoJCQkJdGFyZ2V0Ll9qc2NMaW5rZWRJbnN0YW5jZS5zaG93KCk7DQoJCQl9DQoJCX0gZWxzZSBpZiAodGFyZ2V0Ll9qc2NDb250cm9sTmFtZSkgew0KCQkJanNjLm9uQ29udHJvbFBvaW50ZXJTdGFydChlLCB0YXJnZXQsIHRhcmdldC5fanNjQ29udHJvbE5hbWUsICdtb3VzZScpOw0KCQl9IGVsc2Ugew0KCQkJLy8gTW91c2UgaXMgb3V0c2lkZSB0aGUgcGlja2VyIGNvbnRyb2xzIC0+IGhpZGUgdGhlIGNvbG9yIHBpY2tlciENCgkJCWlmIChqc2MucGlja2VyICYmIGpzYy5waWNrZXIub3duZXIpIHsNCgkJCQlqc2MucGlja2VyLm93bmVyLmhpZGUoKTsNCgkJCX0NCgkJfQ0KCX0sDQoNCg0KCW9uRG9jdW1lbnRUb3VjaFN0YXJ0IDogZnVuY3Rpb24gKGUpIHsNCgkJaWYgKCFlKSB7IGUgPSB3aW5kb3cuZXZlbnQ7IH0NCgkJdmFyIHRhcmdldCA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDsNCg0KCQlpZiAodGFyZ2V0Ll9qc2NMaW5rZWRJbnN0YW5jZSkgew0KCQkJaWYgKHRhcmdldC5fanNjTGlua2VkSW5zdGFuY2Uuc2hvd09uQ2xpY2spIHsNCgkJCQl0YXJnZXQuX2pzY0xpbmtlZEluc3RhbmNlLnNob3coKTsNCgkJCX0NCgkJfSBlbHNlIGlmICh0YXJnZXQuX2pzY0NvbnRyb2xOYW1lKSB7DQoJCQlqc2Mub25Db250cm9sUG9pbnRlclN0YXJ0KGUsIHRhcmdldCwgdGFyZ2V0Ll9qc2NDb250cm9sTmFtZSwgJ3RvdWNoJyk7DQoJCX0gZWxzZSB7DQoJCQlpZiAoanNjLnBpY2tlciAmJiBqc2MucGlja2VyLm93bmVyKSB7DQoJCQkJanNjLnBpY2tlci5vd25lci5oaWRlKCk7DQoJCQl9DQoJCX0NCgl9LA0KDQoNCglvbldpbmRvd1Jlc2l6ZSA6IGZ1bmN0aW9uIChlKSB7DQoJCWpzYy5yZWRyYXdQb3NpdGlvbigpOw0KCX0sDQoNCg0KCW9uUGFyZW50U2Nyb2xsIDogZnVuY3Rpb24gKGUpIHsNCgkJLy8gaGlkZSB0aGUgcGlja2VyIHdoZW4gb25lIG9mIHRoZSBwYXJlbnQgZWxlbWVudHMgaXMgc2Nyb2xsZWQNCgkJaWYgKGpzYy5waWNrZXIgJiYganNjLnBpY2tlci5vd25lcikgew0KCQkJanNjLnBpY2tlci5vd25lci5oaWRlKCk7DQoJCX0NCgl9LA0KDQoNCglfcG9pbnRlck1vdmVFdmVudCA6IHsNCgkJbW91c2U6ICdtb3VzZW1vdmUnLA0KCQl0b3VjaDogJ3RvdWNobW92ZScNCgl9LA0KCV9wb2ludGVyRW5kRXZlbnQgOiB7DQoJCW1vdXNlOiAnbW91c2V1cCcsDQoJCXRvdWNoOiAndG91Y2hlbmQnDQoJfSwNCg0KDQoJX3BvaW50ZXJPcmlnaW4gOiBudWxsLA0KCV9jYXB0dXJlZFRh
cmdldCA6IG51bGwsDQoNCg0KCW9uQ29udHJvbFBvaW50ZXJTdGFydCA6IGZ1bmN0aW9uIChlLCB0YXJnZXQsIGNvbnRyb2xOYW1lLCBwb2ludGVyVHlwZSkgew0KCQl2YXIgdGhpc09iaiA9IHRhcmdldC5fanNjSW5zdGFuY2U7DQoNCgkJanNjLnByZXZlbnREZWZhdWx0KGUpOw0KCQlqc2MuY2FwdHVyZVRhcmdldCh0YXJnZXQpOw0KDQoJCXZhciByZWdpc3RlckRyYWdFdmVudHMgPSBmdW5jdGlvbiAoZG9jLCBvZmZzZXQpIHsNCgkJCWpzYy5hdHRhY2hHcm91cEV2ZW50KCdkcmFnJywgZG9jLCBqc2MuX3BvaW50ZXJNb3ZlRXZlbnRbcG9pbnRlclR5cGVdLA0KCQkJCWpzYy5vbkRvY3VtZW50UG9pbnRlck1vdmUoZSwgdGFyZ2V0LCBjb250cm9sTmFtZSwgcG9pbnRlclR5cGUsIG9mZnNldCkpOw0KCQkJanNjLmF0dGFjaEdyb3VwRXZlbnQoJ2RyYWcnLCBkb2MsIGpzYy5fcG9pbnRlckVuZEV2ZW50W3BvaW50ZXJUeXBlXSwNCgkJCQlqc2Mub25Eb2N1bWVudFBvaW50ZXJFbmQoZSwgdGFyZ2V0LCBjb250cm9sTmFtZSwgcG9pbnRlclR5cGUpKTsNCgkJfTsNCg0KCQlyZWdpc3RlckRyYWdFdmVudHMoZG9jdW1lbnQsIFswLCAwXSk7DQoNCgkJaWYgKHdpbmRvdy5wYXJlbnQgJiYgd2luZG93LmZyYW1lRWxlbWVudCkgew0KCQkJdmFyIHJlY3QgPSB3aW5kb3cuZnJhbWVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOw0KCQkJdmFyIG9mcyA9IFstcmVjdC5sZWZ0LCAtcmVjdC50b3BdOw0KCQkJcmVnaXN0ZXJEcmFnRXZlbnRzKHdpbmRvdy5wYXJlbnQud2luZG93LmRvY3VtZW50LCBvZnMpOw0KCQl9DQoNCgkJdmFyIGFicyA9IGpzYy5nZXRBYnNQb2ludGVyUG9zKGUpOw0KCQl2YXIgcmVsID0ganNjLmdldFJlbFBvaW50ZXJQb3MoZSk7DQoJCWpzYy5fcG9pbnRlck9yaWdpbiA9IHsNCgkJCXg6IGFicy54IC0gcmVsLngsDQoJCQl5OiBhYnMueSAtIHJlbC55DQoJCX07DQoNCgkJc3dpdGNoIChjb250cm9sTmFtZSkgew0KCQljYXNlICdwYWQnOg0KCQkJLy8gaWYgdGhlIHNsaWRlciBpcyBhdCB0aGUgYm90dG9tLCBtb3ZlIGl0IHVwDQoJCQlzd2l0Y2ggKGpzYy5nZXRTbGlkZXJDb21wb25lbnQodGhpc09iaikpIHsNCgkJCWNhc2UgJ3MnOiBpZiAodGhpc09iai5oc3ZbMV0gPT09IDApIHsgdGhpc09iai5mcm9tSFNWKG51bGwsIDEwMCwgbnVsbCk7IH07IGJyZWFrOw0KCQkJY2FzZSAndic6IGlmICh0aGlzT2JqLmhzdlsyXSA9PT0gMCkgeyB0aGlzT2JqLmZyb21IU1YobnVsbCwgbnVsbCwgMTAwKTsgfTsgYnJlYWs7DQoJCQl9DQoJCQlqc2Muc2V0UGFkKHRoaXNPYmosIGUsIDAsIDApOw0KCQkJYnJlYWs7DQoNCgkJY2FzZSAnc2xkJzoNCgkJCWpzYy5zZXRTbGQodGhpc09iaiwgZSwgMCk7DQoJCQlicmVhazsNCgkJfQ0KDQoJCWpzYy5kaXNwYXRjaEZpbmVDaGFuZ2UodGhpc09iaik7DQoJfSwNCg0KDQoJb25Eb2N1bWVudFBvaW50ZXJNb3ZlIDogZnVuY3Rpb24gKGUsIHRhcmdldCwgY29udHJvbE5hbWUsIHBvaW50ZXJUeXBlLCBv
ZmZzZXQpIHsNCgkJcmV0dXJuIGZ1bmN0aW9uIChlKSB7DQoJCQl2YXIgdGhpc09iaiA9IHRhcmdldC5fanNjSW5zdGFuY2U7DQoJCQlzd2l0Y2ggKGNvbnRyb2xOYW1lKSB7DQoJCQljYXNlICdwYWQnOg0KCQkJCWlmICghZSkgeyBlID0gd2luZG93LmV2ZW50OyB9DQoJCQkJanNjLnNldFBhZCh0aGlzT2JqLCBlLCBvZmZzZXRbMF0sIG9mZnNldFsxXSk7DQoJCQkJanNjLmRpc3BhdGNoRmluZUNoYW5nZSh0aGlzT2JqKTsNCgkJCQlicmVhazsNCg0KCQkJY2FzZSAnc2xkJzoNCgkJCQlpZiAoIWUpIHsgZSA9IHdpbmRvdy5ldmVudDsgfQ0KCQkJCWpzYy5zZXRTbGQodGhpc09iaiwgZSwgb2Zmc2V0WzFdKTsNCgkJCQlqc2MuZGlzcGF0Y2hGaW5lQ2hhbmdlKHRoaXNPYmopOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfSwNCg0KDQoJb25Eb2N1bWVudFBvaW50ZXJFbmQgOiBmdW5jdGlvbiAoZSwgdGFyZ2V0LCBjb250cm9sTmFtZSwgcG9pbnRlclR5cGUpIHsNCgkJcmV0dXJuIGZ1bmN0aW9uIChlKSB7DQoJCQl2YXIgdGhpc09iaiA9IHRhcmdldC5fanNjSW5zdGFuY2U7DQoJCQlqc2MuZGV0YWNoR3JvdXBFdmVudHMoJ2RyYWcnKTsNCgkJCWpzYy5yZWxlYXNlVGFyZ2V0KCk7DQoJCQkvLyBBbHdheXMgZGlzcGF0Y2ggY2hhbmdlcyBhZnRlciBkZXRhY2hpbmcgb3V0c3RhbmRpbmcgbW91c2UgaGFuZGxlcnMsDQoJCQkvLyBpbiBjYXNlIHNvbWUgdXNlciBpbnRlcmFjdGlvbiB3aWxsIG9jY3VyIGluIHVzZXIncyBvbmNoYW5nZSBjYWxsYmFjaw0KCQkJLy8gdGhhdCB3b3VsZCBpbnRydWRlIHdpdGggY3VycmVudCBtb3VzZSBldmVudHMNCgkJCWpzYy5kaXNwYXRjaENoYW5nZSh0aGlzT2JqKTsNCgkJfTsNCgl9LA0KDQoNCglkaXNwYXRjaENoYW5nZSA6IGZ1bmN0aW9uICh0aGlzT2JqKSB7DQoJCWlmICh0aGlzT2JqLnZhbHVlRWxlbWVudCkgew0KCQkJaWYgKGpzYy5pc0VsZW1lbnRUeXBlKHRoaXNPYmoudmFsdWVFbGVtZW50LCAnaW5wdXQnKSkgew0KCQkJCWpzYy5maXJlRXZlbnQodGhpc09iai52YWx1ZUVsZW1lbnQsICdjaGFuZ2UnKTsNCgkJCX0NCgkJfQ0KCX0sDQoNCg0KCWRpc3BhdGNoRmluZUNoYW5nZSA6IGZ1bmN0aW9uICh0aGlzT2JqKSB7DQoJCWlmICh0aGlzT2JqLm9uRmluZUNoYW5nZSkgew0KCQkJdmFyIGNhbGxiYWNrOw0KCQkJaWYgKHR5cGVvZiB0aGlzT2JqLm9uRmluZUNoYW5nZSA9PT0gJ3N0cmluZycpIHsNCgkJCQljYWxsYmFjayA9IG5ldyBGdW5jdGlvbiAodGhpc09iai5vbkZpbmVDaGFuZ2UpOw0KCQkJfSBlbHNlIHsNCgkJCQljYWxsYmFjayA9IHRoaXNPYmoub25GaW5lQ2hhbmdlOw0KCQkJfQ0KCQkJY2FsbGJhY2suY2FsbCh0aGlzT2JqKTsNCgkJfQ0KCX0sDQoNCg0KCXNldFBhZCA6IGZ1bmN0aW9uICh0aGlzT2JqLCBlLCBvZnNYLCBvZnNZKSB7DQoJCXZhciBwb2ludGVyQWJzID0ganNjLmdldEFic1BvaW50ZXJQb3MoZSk7DQoJCXZhciB4ID0gb2ZzWCArIHBvaW50ZXJBYnMueCAtIGpzYy5fcG9pbnRl
ck9yaWdpbi54IC0gdGhpc09iai5wYWRkaW5nIC0gdGhpc09iai5pbnNldFdpZHRoOw0KCQl2YXIgeSA9IG9mc1kgKyBwb2ludGVyQWJzLnkgLSBqc2MuX3BvaW50ZXJPcmlnaW4ueSAtIHRoaXNPYmoucGFkZGluZyAtIHRoaXNPYmouaW5zZXRXaWR0aDsNCg0KCQl2YXIgeFZhbCA9IHggKiAoMzYwIC8gKHRoaXNPYmoud2lkdGggLSAxKSk7DQoJCXZhciB5VmFsID0gMTAwIC0gKHkgKiAoMTAwIC8gKHRoaXNPYmouaGVpZ2h0IC0gMSkpKTsNCg0KCQlzd2l0Y2ggKGpzYy5nZXRQYWRZQ29tcG9uZW50KHRoaXNPYmopKSB7DQoJCWNhc2UgJ3MnOiB0aGlzT2JqLmZyb21IU1YoeFZhbCwgeVZhbCwgbnVsbCwganNjLmxlYXZlU2xkKTsgYnJlYWs7DQoJCWNhc2UgJ3YnOiB0aGlzT2JqLmZyb21IU1YoeFZhbCwgbnVsbCwgeVZhbCwganNjLmxlYXZlU2xkKTsgYnJlYWs7DQoJCX0NCgl9LA0KDQoNCglzZXRTbGQgOiBmdW5jdGlvbiAodGhpc09iaiwgZSwgb2ZzWSkgew0KCQl2YXIgcG9pbnRlckFicyA9IGpzYy5nZXRBYnNQb2ludGVyUG9zKGUpOw0KCQl2YXIgeSA9IG9mc1kgKyBwb2ludGVyQWJzLnkgLSBqc2MuX3BvaW50ZXJPcmlnaW4ueSAtIHRoaXNPYmoucGFkZGluZyAtIHRoaXNPYmouaW5zZXRXaWR0aDsNCg0KCQl2YXIgeVZhbCA9IDEwMCAtICh5ICogKDEwMCAvICh0aGlzT2JqLmhlaWdodCAtIDEpKSk7DQoNCgkJc3dpdGNoIChqc2MuZ2V0U2xpZGVyQ29tcG9uZW50KHRoaXNPYmopKSB7DQoJCWNhc2UgJ3MnOiB0aGlzT2JqLmZyb21IU1YobnVsbCwgeVZhbCwgbnVsbCwganNjLmxlYXZlUGFkKTsgYnJlYWs7DQoJCWNhc2UgJ3YnOiB0aGlzT2JqLmZyb21IU1YobnVsbCwgbnVsbCwgeVZhbCwganNjLmxlYXZlUGFkKTsgYnJlYWs7DQoJCX0NCgl9LA0KDQoNCglfdm1sTlMgOiAnanNjX3ZtbF8nLA0KCV92bWxDU1MgOiAnanNjX3ZtbF9jc3NfJywNCglfdm1sUmVhZHkgOiBmYWxzZSwNCg0KDQoJaW5pdFZNTCA6IGZ1bmN0aW9uICgpIHsNCgkJaWYgKCFqc2MuX3ZtbFJlYWR5KSB7DQoJCQkvLyBpbml0IFZNTCBuYW1lc3BhY2UNCgkJCXZhciBkb2MgPSBkb2N1bWVudDsNCgkJCWlmICghZG9jLm5hbWVzcGFjZXNbanNjLl92bWxOU10pIHsNCgkJCQlkb2MubmFtZXNwYWNlcy5hZGQoanNjLl92bWxOUywgJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sJyk7DQoJCQl9DQoJCQlpZiAoIWRvYy5zdHlsZVNoZWV0c1tqc2MuX3ZtbENTU10pIHsNCgkJCQl2YXIgdGFncyA9IFsnc2hhcGUnLCAnc2hhcGV0eXBlJywgJ2dyb3VwJywgJ2JhY2tncm91bmQnLCAncGF0aCcsICdmb3JtdWxhcycsICdoYW5kbGVzJywgJ2ZpbGwnLCAnc3Ryb2tlJywgJ3NoYWRvdycsICd0ZXh0Ym94JywgJ3RleHRwYXRoJywgJ2ltYWdlZGF0YScsICdsaW5lJywgJ3BvbHlsaW5lJywgJ2N1cnZlJywgJ3JlY3QnLCAncm91bmRyZWN0JywgJ292YWwnLCAnYXJjJywgJ2ltYWdlJ107DQoJCQkJdmFyIHNzID0gZG9jLmNyZWF0ZVN0eWxlU2hlZXQoKTsNCgkJCQlzcy5vd25p
bmdFbGVtZW50LmlkID0ganNjLl92bWxDU1M7DQoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgaSArPSAxKSB7DQoJCQkJCXNzLmFkZFJ1bGUoanNjLl92bWxOUyArICdcXDonICsgdGFnc1tpXSwgJ2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpOycpOw0KCQkJCX0NCgkJCX0NCgkJCWpzYy5fdm1sUmVhZHkgPSB0cnVlOw0KCQl9DQoJfSwNCg0KDQoJY3JlYXRlUGFsZXR0ZSA6IGZ1bmN0aW9uICgpIHsNCg0KCQl2YXIgcGFsZXR0ZU9iaiA9IHsNCgkJCWVsbTogbnVsbCwNCgkJCWRyYXc6IG51bGwNCgkJfTsNCg0KCQlpZiAoanNjLmlzQ2FudmFzU3VwcG9ydGVkKSB7DQoJCQkvLyBDYW52YXMgaW1wbGVtZW50YXRpb24gZm9yIG1vZGVybiBicm93c2Vycw0KDQoJCQl2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7DQoJCQl2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7DQoNCgkJCXZhciBkcmF3RnVuYyA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0LCB0eXBlKSB7DQoJCQkJY2FudmFzLndpZHRoID0gd2lkdGg7DQoJCQkJY2FudmFzLmhlaWdodCA9IGhlaWdodDsNCg0KCQkJCWN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsNCg0KCQkJCXZhciBoR3JhZCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCBjYW52YXMud2lkdGgsIDApOw0KCQkJCWhHcmFkLmFkZENvbG9yU3RvcCgwIC8gNiwgJyNGMDAnKTsNCgkJCQloR3JhZC5hZGRDb2xvclN0b3AoMSAvIDYsICcjRkYwJyk7DQoJCQkJaEdyYWQuYWRkQ29sb3JTdG9wKDIgLyA2LCAnIzBGMCcpOw0KCQkJCWhHcmFkLmFkZENvbG9yU3RvcCgzIC8gNiwgJyMwRkYnKTsNCgkJCQloR3JhZC5hZGRDb2xvclN0b3AoNCAvIDYsICcjMDBGJyk7DQoJCQkJaEdyYWQuYWRkQ29sb3JTdG9wKDUgLyA2LCAnI0YwRicpOw0KCQkJCWhHcmFkLmFkZENvbG9yU3RvcCg2IC8gNiwgJyNGMDAnKTsNCg0KCQkJCWN0eC5maWxsU3R5bGUgPSBoR3JhZDsNCgkJCQljdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsNCg0KCQkJCXZhciB2R3JhZCA9IGN0eC5jcmVhdGVMaW5lYXJHcmFkaWVudCgwLCAwLCAwLCBjYW52YXMuaGVpZ2h0KTsNCgkJCQlzd2l0Y2ggKHR5cGUudG9Mb3dlckNhc2UoKSkgew0KCQkJCWNhc2UgJ3MnOg0KCQkJCQl2R3JhZC5hZGRDb2xvclN0b3AoMCwgJ3JnYmEoMjU1LDI1NSwyNTUsMCknKTsNCgkJCQkJdkdyYWQuYWRkQ29sb3JTdG9wKDEsICdyZ2JhKDI1NSwyNTUsMjU1LDEpJyk7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3YnOg0KCQkJCQl2R3JhZC5hZGRDb2xvclN0b3AoMCwgJ3JnYmEoMCwwLDAsMCknKTsNCgkJCQkJdkdyYWQuYWRkQ29sb3JTdG9wKDEsICdyZ2JhKDAsMCwwLDEpJyk7DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCQljdHguZmlsbFN0eWxlID0gdkdyYWQ7DQoJCQkJY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0
aCwgY2FudmFzLmhlaWdodCk7DQoJCQl9Ow0KDQoJCQlwYWxldHRlT2JqLmVsbSA9IGNhbnZhczsNCgkJCXBhbGV0dGVPYmouZHJhdyA9IGRyYXdGdW5jOw0KDQoJCX0gZWxzZSB7DQoJCQkvLyBWTUwgZmFsbGJhY2sgZm9yIElFIDcgYW5kIDgNCg0KCQkJanNjLmluaXRWTUwoKTsNCg0KCQkJdmFyIHZtbENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOw0KCQkJdm1sQ29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJzsNCgkJCXZtbENvbnRhaW5lci5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOw0KDQoJCQl2YXIgaEdyYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGpzYy5fdm1sTlMgKyAnOmZpbGwnKTsNCgkJCWhHcmFkLnR5cGUgPSAnZ3JhZGllbnQnOw0KCQkJaEdyYWQubWV0aG9kID0gJ2xpbmVhcic7DQoJCQloR3JhZC5hbmdsZSA9ICc5MCc7DQoJCQloR3JhZC5jb2xvcnMgPSAnMTYuNjclICNGMEYsIDMzLjMzJSAjMDBGLCA1MCUgIzBGRiwgNjYuNjclICMwRjAsIDgzLjMzJSAjRkYwJw0KDQoJCQl2YXIgaFJlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGpzYy5fdm1sTlMgKyAnOnJlY3QnKTsNCgkJCWhSZWN0LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsNCgkJCWhSZWN0LnN0eWxlLmxlZnQgPSAtMSArICdweCc7DQoJCQloUmVjdC5zdHlsZS50b3AgPSAtMSArICdweCc7DQoJCQloUmVjdC5zdHJva2VkID0gZmFsc2U7DQoJCQloUmVjdC5hcHBlbmRDaGlsZChoR3JhZCk7DQoJCQl2bWxDb250YWluZXIuYXBwZW5kQ2hpbGQoaFJlY3QpOw0KDQoJCQl2YXIgdkdyYWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGpzYy5fdm1sTlMgKyAnOmZpbGwnKTsNCgkJCXZHcmFkLnR5cGUgPSAnZ3JhZGllbnQnOw0KCQkJdkdyYWQubWV0aG9kID0gJ2xpbmVhcic7DQoJCQl2R3JhZC5hbmdsZSA9ICcxODAnOw0KCQkJdkdyYWQub3BhY2l0eSA9ICcwJzsNCg0KCQkJdmFyIHZSZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChqc2MuX3ZtbE5TICsgJzpyZWN0Jyk7DQoJCQl2UmVjdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJCQl2UmVjdC5zdHlsZS5sZWZ0ID0gLTEgKyAncHgnOw0KCQkJdlJlY3Quc3R5bGUudG9wID0gLTEgKyAncHgnOw0KCQkJdlJlY3Quc3Ryb2tlZCA9IGZhbHNlOw0KCQkJdlJlY3QuYXBwZW5kQ2hpbGQodkdyYWQpOw0KCQkJdm1sQ29udGFpbmVyLmFwcGVuZENoaWxkKHZSZWN0KTsNCg0KCQkJdmFyIGRyYXdGdW5jID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIHR5cGUpIHsNCgkJCQl2bWxDb250YWluZXIuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7DQoJCQkJdm1sQ29udGFpbmVyLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7DQoNCgkJCQloUmVjdC5zdHlsZS53aWR0aCA9DQoJCQkJdlJlY3Quc3R5bGUud2lkdGggPQ0KCQkJCQkod2lkdGggKyAxKSArICdweCc7DQoJCQkJaFJlY3Quc3R5bGUuaGVpZ2h0ID0NCgkJCQl2UmVjdC5zdHls
ZS5oZWlnaHQgPQ0KCQkJCQkoaGVpZ2h0ICsgMSkgKyAncHgnOw0KDQoJCQkJLy8gQ29sb3JzIG11c3QgYmUgc3BlY2lmaWVkIGR1cmluZyBldmVyeSByZWRyYXcsIG90aGVyd2lzZSBJRSB3b24ndCBkaXNwbGF5DQoJCQkJLy8gYSBmdWxsIGdyYWRpZW50IGR1cmluZyBhIHN1YnNlcXVlbnRpYWwgcmVkcmF3DQoJCQkJaEdyYWQuY29sb3IgPSAnI0YwMCc7DQoJCQkJaEdyYWQuY29sb3IyID0gJyNGMDAnOw0KDQoJCQkJc3dpdGNoICh0eXBlLnRvTG93ZXJDYXNlKCkpIHsNCgkJCQljYXNlICdzJzoNCgkJCQkJdkdyYWQuY29sb3IgPSB2R3JhZC5jb2xvcjIgPSAnI0ZGRic7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3YnOg0KCQkJCQl2R3JhZC5jb2xvciA9IHZHcmFkLmNvbG9yMiA9ICcjMDAwJzsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfTsNCgkJCQ0KCQkJcGFsZXR0ZU9iai5lbG0gPSB2bWxDb250YWluZXI7DQoJCQlwYWxldHRlT2JqLmRyYXcgPSBkcmF3RnVuYzsNCgkJfQ0KDQoJCXJldHVybiBwYWxldHRlT2JqOw0KCX0sDQoNCg0KCWNyZWF0ZVNsaWRlckdyYWRpZW50IDogZnVuY3Rpb24gKCkgew0KDQoJCXZhciBzbGlkZXJPYmogPSB7DQoJCQllbG06IG51bGwsDQoJCQlkcmF3OiBudWxsDQoJCX07DQoNCgkJaWYgKGpzYy5pc0NhbnZhc1N1cHBvcnRlZCkgew0KCQkJLy8gQ2FudmFzIGltcGxlbWVudGF0aW9uIGZvciBtb2Rlcm4gYnJvd3NlcnMNCg0KCQkJdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOw0KCQkJdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOw0KDQoJCQl2YXIgZHJhd0Z1bmMgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCwgY29sb3IxLCBjb2xvcjIpIHsNCgkJCQljYW52YXMud2lkdGggPSB3aWR0aDsNCgkJCQljYW52YXMuaGVpZ2h0ID0gaGVpZ2h0Ow0KDQoJCQkJY3R4LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOw0KDQoJCQkJdmFyIGdyYWQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgY2FudmFzLmhlaWdodCk7DQoJCQkJZ3JhZC5hZGRDb2xvclN0b3AoMCwgY29sb3IxKTsNCgkJCQlncmFkLmFkZENvbG9yU3RvcCgxLCBjb2xvcjIpOw0KDQoJCQkJY3R4LmZpbGxTdHlsZSA9IGdyYWQ7DQoJCQkJY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7DQoJCQl9Ow0KDQoJCQlzbGlkZXJPYmouZWxtID0gY2FudmFzOw0KCQkJc2xpZGVyT2JqLmRyYXcgPSBkcmF3RnVuYzsNCg0KCQl9IGVsc2Ugew0KCQkJLy8gVk1MIGZhbGxiYWNrIGZvciBJRSA3IGFuZCA4DQoNCgkJCWpzYy5pbml0Vk1MKCk7DQoNCgkJCXZhciB2bWxDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsNCgkJCXZtbENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7DQoJCQl2bWxDb250YWluZXIuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsNCg0KCQkJdmFyIGdy
YWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGpzYy5fdm1sTlMgKyAnOmZpbGwnKTsNCgkJCWdyYWQudHlwZSA9ICdncmFkaWVudCc7DQoJCQlncmFkLm1ldGhvZCA9ICdsaW5lYXInOw0KCQkJZ3JhZC5hbmdsZSA9ICcxODAnOw0KDQoJCQl2YXIgcmVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoanNjLl92bWxOUyArICc6cmVjdCcpOw0KCQkJcmVjdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJCQlyZWN0LnN0eWxlLmxlZnQgPSAtMSArICdweCc7DQoJCQlyZWN0LnN0eWxlLnRvcCA9IC0xICsgJ3B4JzsNCgkJCXJlY3Quc3Ryb2tlZCA9IGZhbHNlOw0KCQkJcmVjdC5hcHBlbmRDaGlsZChncmFkKTsNCgkJCXZtbENvbnRhaW5lci5hcHBlbmRDaGlsZChyZWN0KTsNCg0KCQkJdmFyIGRyYXdGdW5jID0gZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQsIGNvbG9yMSwgY29sb3IyKSB7DQoJCQkJdm1sQ29udGFpbmVyLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnOw0KCQkJCXZtbENvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnOw0KDQoJCQkJcmVjdC5zdHlsZS53aWR0aCA9ICh3aWR0aCArIDEpICsgJ3B4JzsNCgkJCQlyZWN0LnN0eWxlLmhlaWdodCA9IChoZWlnaHQgKyAxKSArICdweCc7DQoNCgkJCQlncmFkLmNvbG9yID0gY29sb3IxOw0KCQkJCWdyYWQuY29sb3IyID0gY29sb3IyOw0KCQkJfTsNCgkJCQ0KCQkJc2xpZGVyT2JqLmVsbSA9IHZtbENvbnRhaW5lcjsNCgkJCXNsaWRlck9iai5kcmF3ID0gZHJhd0Z1bmM7DQoJCX0NCg0KCQlyZXR1cm4gc2xpZGVyT2JqOw0KCX0sDQoNCg0KCWxlYXZlVmFsdWUgOiAxPDwwLA0KCWxlYXZlU3R5bGUgOiAxPDwxLA0KCWxlYXZlUGFkIDogMTw8MiwNCglsZWF2ZVNsZCA6IDE8PDMsDQoNCg0KCUJveFNoYWRvdyA6IChmdW5jdGlvbiAoKSB7DQoJCXZhciBCb3hTaGFkb3cgPSBmdW5jdGlvbiAoaFNoYWRvdywgdlNoYWRvdywgYmx1ciwgc3ByZWFkLCBjb2xvciwgaW5zZXQpIHsNCgkJCXRoaXMuaFNoYWRvdyA9IGhTaGFkb3c7DQoJCQl0aGlzLnZTaGFkb3cgPSB2U2hhZG93Ow0KCQkJdGhpcy5ibHVyID0gYmx1cjsNCgkJCXRoaXMuc3ByZWFkID0gc3ByZWFkOw0KCQkJdGhpcy5jb2xvciA9IGNvbG9yOw0KCQkJdGhpcy5pbnNldCA9ICEhaW5zZXQ7DQoJCX07DQoNCgkJQm94U2hhZG93LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsNCgkJCXZhciB2YWxzID0gWw0KCQkJCU1hdGgucm91bmQodGhpcy5oU2hhZG93KSArICdweCcsDQoJCQkJTWF0aC5yb3VuZCh0aGlzLnZTaGFkb3cpICsgJ3B4JywNCgkJCQlNYXRoLnJvdW5kKHRoaXMuYmx1cikgKyAncHgnLA0KCQkJCU1hdGgucm91bmQodGhpcy5zcHJlYWQpICsgJ3B4JywNCgkJCQl0aGlzLmNvbG9yDQoJCQldOw0KCQkJaWYgKHRoaXMuaW5zZXQpIHsNCgkJCQl2YWxzLnB1c2goJ2luc2V0Jyk7DQoJCQl9DQoJCQlyZXR1cm4gdmFscy5qb2luKCcgJyk7DQoJCX07DQoNCgkJcmV0dXJuIEJveFNoYWRv
dzsNCgl9KSgpLA0KDQoNCgkvLw0KCS8vIFVzYWdlOg0KCS8vIHZhciBteUNvbG9yID0gbmV3IGpzY29sb3IoPHRhcmdldEVsZW1lbnQ+IFssIDxvcHRpb25zPl0pDQoJLy8NCg0KCWpzY29sb3IgOiBmdW5jdGlvbiAodGFyZ2V0RWxlbWVudCwgb3B0aW9ucykgew0KDQoJCS8vIEdlbmVyYWwgb3B0aW9ucw0KCQkvLw0KCQl0aGlzLnZhbHVlID0gbnVsbDsgLy8gaW5pdGlhbCBIRVggY29sb3IuIFRvIGNoYW5nZSBpdCBsYXRlciwgdXNlIG1ldGhvZHMgZnJvbVN0cmluZygpLCBmcm9tSFNWKCkgYW5kIGZyb21SR0IoKQ0KCQl0aGlzLnZhbHVlRWxlbWVudCA9IHRhcmdldEVsZW1lbnQ7IC8vIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBhbmQgaW5wdXQgdGhlIGNvbG9yIGNvZGUNCgkJdGhpcy5zdHlsZUVsZW1lbnQgPSB0YXJnZXRFbGVtZW50OyAvLyBlbGVtZW50IHRoYXQgd2lsbCBwcmV2aWV3IHRoZSBwaWNrZWQgY29sb3IgdXNpbmcgQ1NTIGJhY2tncm91bmRDb2xvcg0KCQl0aGlzLnJlcXVpcmVkID0gdHJ1ZTsgLy8gd2hldGhlciB0aGUgYXNzb2NpYXRlZCB0ZXh0IDxpbnB1dD4gY2FuIGJlIGxlZnQgZW1wdHkNCgkJdGhpcy5yZWZpbmUgPSB0cnVlOyAvLyB3aGV0aGVyIHRvIHJlZmluZSB0aGUgZW50ZXJlZCBjb2xvciBjb2RlIChlLmcuIHVwcGVyY2FzZSBpdCBhbmQgcmVtb3ZlIHdoaXRlc3BhY2UpDQoJCXRoaXMuaGFzaCA9IGZhbHNlOyAvLyB3aGV0aGVyIHRvIHByZWZpeCB0aGUgSEVYIGNvbG9yIGNvZGUgd2l0aCAjIHN5bWJvbA0KCQl0aGlzLnVwcGVyY2FzZSA9IHRydWU7IC8vIHdoZXRoZXIgdG8gdXBwZXJjYXNlIHRoZSBjb2xvciBjb2RlDQoJCXRoaXMub25GaW5lQ2hhbmdlID0gbnVsbDsgLy8gY2FsbGVkIGluc3RhbnRseSBldmVyeSB0aW1lIHRoZSBjb2xvciBjaGFuZ2VzICh2YWx1ZSBjYW4gYmUgZWl0aGVyIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmcgd2l0aCBqYXZhc2NyaXB0IGNvZGUpDQoJCXRoaXMuYWN0aXZlQ2xhc3MgPSAnanNjb2xvci1hY3RpdmUnOyAvLyBjbGFzcyB0byBiZSBzZXQgdG8gdGhlIHRhcmdldCBlbGVtZW50IHdoZW4gYSBwaWNrZXIgd2luZG93IGlzIG9wZW4gb24gaXQNCgkJdGhpcy5taW5TID0gMDsgLy8gbWluIGFsbG93ZWQgc2F0dXJhdGlvbiAoMCAtIDEwMCkNCgkJdGhpcy5tYXhTID0gMTAwOyAvLyBtYXggYWxsb3dlZCBzYXR1cmF0aW9uICgwIC0gMTAwKQ0KCQl0aGlzLm1pblYgPSAwOyAvLyBtaW4gYWxsb3dlZCB2YWx1ZSAoYnJpZ2h0bmVzcykgKDAgLSAxMDApDQoJCXRoaXMubWF4ViA9IDEwMDsgLy8gbWF4IGFsbG93ZWQgdmFsdWUgKGJyaWdodG5lc3MpICgwIC0gMTAwKQ0KDQoJCS8vIEFjY2Vzc2luZyB0aGUgcGlja2VkIGNvbG9yDQoJCS8vDQoJCXRoaXMuaHN2ID0gWzAsIDAsIDEwMF07IC8vIHJlYWQtb25seSAgWzAtMzYwLCAwLTEwMCwgMC0xMDBdDQoJCXRoaXMucmdiID0gWzI1NSwgMjU1LCAyNTVdOyAvLyByZWFkLW9ubHkgIFswLTI1NSwgMC0yNTUsIDAt
MjU1XQ0KDQoJCS8vIENvbG9yIFBpY2tlciBvcHRpb25zDQoJCS8vDQoJCXRoaXMud2lkdGggPSAxODE7IC8vIHdpZHRoIG9mIGNvbG9yIHBhbGV0dGUgKGluIHB4KQ0KCQl0aGlzLmhlaWdodCA9IDEwMTsgLy8gaGVpZ2h0IG9mIGNvbG9yIHBhbGV0dGUgKGluIHB4KQ0KCQl0aGlzLnNob3dPbkNsaWNrID0gdHJ1ZTsgLy8gd2hldGhlciB0byBkaXNwbGF5IHRoZSBjb2xvciBwaWNrZXIgd2hlbiB1c2VyIGNsaWNrcyBvbiBpdHMgdGFyZ2V0IGVsZW1lbnQNCgkJdGhpcy5tb2RlID0gJ0hTVic7IC8vIEhTViB8IEhWUyB8IEhTIHwgSFYgLSBsYXlvdXQgb2YgdGhlIGNvbG9yIHBpY2tlciBjb250cm9scw0KCQl0aGlzLnBvc2l0aW9uID0gJ2JvdHRvbSc7IC8vIGxlZnQgfCByaWdodCB8IHRvcCB8IGJvdHRvbSAtIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQgZWxlbWVudA0KCQl0aGlzLnNtYXJ0UG9zaXRpb24gPSB0cnVlOyAvLyBhdXRvbWF0aWNhbGx5IGNoYW5nZSBwaWNrZXIgcG9zaXRpb24gd2hlbiB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGZvciBpdA0KCQl0aGlzLnNsaWRlclNpemUgPSAxNjsgLy8gcHgNCgkJdGhpcy5jcm9zc1NpemUgPSA4OyAvLyBweA0KCQl0aGlzLmNsb3NhYmxlID0gZmFsc2U7IC8vIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgQ2xvc2UgYnV0dG9uDQoJCXRoaXMuY2xvc2VUZXh0ID0gJ0Nsb3NlJzsNCgkJdGhpcy5idXR0b25Db2xvciA9ICcjMDAwMDAwJzsgLy8gQ1NTIGNvbG9yDQoJCXRoaXMuYnV0dG9uSGVpZ2h0ID0gMTg7IC8vIHB4DQoJCXRoaXMucGFkZGluZyA9IDEyOyAvLyBweA0KCQl0aGlzLmJhY2tncm91bmRDb2xvciA9ICcjRkZGRkZGJzsgLy8gQ1NTIGNvbG9yDQoJCXRoaXMuYm9yZGVyV2lkdGggPSAxOyAvLyBweA0KCQl0aGlzLmJvcmRlckNvbG9yID0gJyNCQkJCQkInOyAvLyBDU1MgY29sb3INCgkJdGhpcy5ib3JkZXJSYWRpdXMgPSA4OyAvLyBweA0KCQl0aGlzLmluc2V0V2lkdGggPSAxOyAvLyBweA0KCQl0aGlzLmluc2V0Q29sb3IgPSAnI0JCQkJCQic7IC8vIENTUyBjb2xvcg0KCQl0aGlzLnNoYWRvdyA9IHRydWU7IC8vIHdoZXRoZXIgdG8gZGlzcGxheSBzaGFkb3cNCgkJdGhpcy5zaGFkb3dCbHVyID0gMTU7IC8vIHB4DQoJCXRoaXMuc2hhZG93Q29sb3IgPSAncmdiYSgwLDAsMCwwLjIpJzsgLy8gQ1NTIGNvbG9yDQoJCXRoaXMucG9pbnRlckNvbG9yID0gJyM0QzRDNEMnOyAvLyBweA0KCQl0aGlzLnBvaW50ZXJCb3JkZXJDb2xvciA9ICcjRkZGRkZGJzsgLy8gcHgNCiAgICAgICAgdGhpcy5wb2ludGVyQm9yZGVyV2lkdGggPSAxOyAvLyBweA0KICAgICAgICB0aGlzLnBvaW50ZXJUaGlja25lc3MgPSAyOyAvLyBweA0KCQl0aGlzLnpJbmRleCA9IDEwMDA7DQoJCXRoaXMuY29udGFpbmVyID0gbnVsbDsgLy8gd2hlcmUgdG8gYXBwZW5kIHRoZSBjb2xvciBwaWNrZXIgKEJPRFkgZWxlbWVudCBieSBkZWZhdWx0KQ0KDQoNCgkJZm9yICh2YXIgb3B0IGluIG9wdGlvbnMpIHsN
CgkJCWlmIChvcHRpb25zLmhhc093blByb3BlcnR5KG9wdCkpIHsNCgkJCQl0aGlzW29wdF0gPSBvcHRpb25zW29wdF07DQoJCQl9DQoJCX0NCg0KDQoJCXRoaXMuaGlkZSA9IGZ1bmN0aW9uICgpIHsNCgkJCWlmIChpc1BpY2tlck93bmVyKCkpIHsNCgkJCQlkZXRhY2hQaWNrZXIoKTsNCgkJCX0NCgkJfTsNCg0KDQoJCXRoaXMuc2hvdyA9IGZ1bmN0aW9uICgpIHsNCgkJCWRyYXdQaWNrZXIoKTsNCgkJfTsNCg0KDQoJCXRoaXMucmVkcmF3ID0gZnVuY3Rpb24gKCkgew0KCQkJaWYgKGlzUGlja2VyT3duZXIoKSkgew0KCQkJCWRyYXdQaWNrZXIoKTsNCgkJCX0NCgkJfTsNCg0KDQoJCXRoaXMuaW1wb3J0Q29sb3IgPSBmdW5jdGlvbiAoKSB7DQoJCQlpZiAoIXRoaXMudmFsdWVFbGVtZW50KSB7DQoJCQkJdGhpcy5leHBvcnRDb2xvcigpOw0KCQkJfSBlbHNlIHsNCgkJCQlpZiAoanNjLmlzRWxlbWVudFR5cGUodGhpcy52YWx1ZUVsZW1lbnQsICdpbnB1dCcpKSB7DQoJCQkJCWlmICghdGhpcy5yZWZpbmUpIHsNCgkJCQkJCWlmICghdGhpcy5mcm9tU3RyaW5nKHRoaXMudmFsdWVFbGVtZW50LnZhbHVlLCBqc2MubGVhdmVWYWx1ZSkpIHsNCgkJCQkJCQlpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHsNCgkJCQkJCQkJdGhpcy5zdHlsZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gdGhpcy5zdHlsZUVsZW1lbnQuX2pzY09yaWdTdHlsZS5iYWNrZ3JvdW5kSW1hZ2U7DQoJCQkJCQkJCXRoaXMuc3R5bGVFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuc3R5bGVFbGVtZW50Ll9qc2NPcmlnU3R5bGUuYmFja2dyb3VuZENvbG9yOw0KCQkJCQkJCQl0aGlzLnN0eWxlRWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuc3R5bGVFbGVtZW50Ll9qc2NPcmlnU3R5bGUuY29sb3I7DQoJCQkJCQkJfQ0KCQkJCQkJCXRoaXMuZXhwb3J0Q29sb3IoanNjLmxlYXZlVmFsdWUgfCBqc2MubGVhdmVTdHlsZSk7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSBpZiAoIXRoaXMucmVxdWlyZWQgJiYgL15ccyokLy50ZXN0KHRoaXMudmFsdWVFbGVtZW50LnZhbHVlKSkgew0KCQkJCQkJdGhpcy52YWx1ZUVsZW1lbnQudmFsdWUgPSAnJzsNCgkJCQkJCWlmICh0aGlzLnN0eWxlRWxlbWVudCkgew0KCQkJCQkJCXRoaXMuc3R5bGVFbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IHRoaXMuc3R5bGVFbGVtZW50Ll9qc2NPcmlnU3R5bGUuYmFja2dyb3VuZEltYWdlOw0KCQkJCQkJCXRoaXMuc3R5bGVFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuc3R5bGVFbGVtZW50Ll9qc2NPcmlnU3R5bGUuYmFja2dyb3VuZENvbG9yOw0KCQkJCQkJCXRoaXMuc3R5bGVFbGVtZW50LnN0eWxlLmNvbG9yID0gdGhpcy5zdHlsZUVsZW1lbnQuX2pzY09yaWdTdHlsZS5jb2xvcjsNCgkJCQkJCX0NCgkJCQkJCXRoaXMuZXhwb3J0Q29sb3IoanNjLmxlYXZlVmFsdWUgfCBqc2MubGVhdmVTdHlsZSk7DQoNCgkJCQkJfSBlbHNlIGlmICh0aGlzLmZyb21TdHJp
bmcodGhpcy52YWx1ZUVsZW1lbnQudmFsdWUpKSB7DQoJCQkJCQkvLyBtYW5hZ2VkIHRvIGltcG9ydCBjb2xvciBzdWNjZXNzZnVsbHkgZnJvbSB0aGUgdmFsdWUgLT4gT0ssIGRvbid0IGRvIGFueXRoaW5nDQoJCQkJCX0gZWxzZSB7DQoJCQkJCQl0aGlzLmV4cG9ydENvbG9yKCk7DQoJCQkJCX0NCgkJCQl9IGVsc2Ugew0KCQkJCQkvLyBub3QgYW4gaW5wdXQgZWxlbWVudCAtPiBkb2Vzbid0IGhhdmUgYW55IHZhbHVlDQoJCQkJCXRoaXMuZXhwb3J0Q29sb3IoKTsNCgkJCQl9DQoJCQl9DQoJCX07DQoNCg0KCQl0aGlzLmV4cG9ydENvbG9yID0gZnVuY3Rpb24gKGZsYWdzKSB7DQoJCQlpZiAoIShmbGFncyAmIGpzYy5sZWF2ZVZhbHVlKSAmJiB0aGlzLnZhbHVlRWxlbWVudCkgew0KCQkJCXZhciB2YWx1ZSA9IHRoaXMudG9TdHJpbmcoKTsNCgkJCQlpZiAodGhpcy51cHBlcmNhc2UpIHsgdmFsdWUgPSB2YWx1ZS50b1VwcGVyQ2FzZSgpOyB9DQoJCQkJaWYgKHRoaXMuaGFzaCkgeyB2YWx1ZSA9ICcjJyArIHZhbHVlOyB9DQoNCgkJCQlpZiAoanNjLmlzRWxlbWVudFR5cGUodGhpcy52YWx1ZUVsZW1lbnQsICdpbnB1dCcpKSB7DQoJCQkJCXRoaXMudmFsdWVFbGVtZW50LnZhbHVlID0gdmFsdWU7DQoJCQkJfSBlbHNlIHsNCgkJCQkJdGhpcy52YWx1ZUVsZW1lbnQuaW5uZXJIVE1MID0gdmFsdWU7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCEoZmxhZ3MgJiBqc2MubGVhdmVTdHlsZSkpIHsNCgkJCQlpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHsNCgkJCQkJdGhpcy5zdHlsZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJ25vbmUnOw0KCQkJCQl0aGlzLnN0eWxlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIycgKyB0aGlzLnRvU3RyaW5nKCk7DQoJCQkJCXRoaXMuc3R5bGVFbGVtZW50LnN0eWxlLmNvbG9yID0gdGhpcy5pc0xpZ2h0KCkgPyAnIzAwMCcgOiAnI0ZGRic7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCEoZmxhZ3MgJiBqc2MubGVhdmVQYWQpICYmIGlzUGlja2VyT3duZXIoKSkgew0KCQkJCXJlZHJhd1BhZCgpOw0KCQkJfQ0KCQkJaWYgKCEoZmxhZ3MgJiBqc2MubGVhdmVTbGQpICYmIGlzUGlja2VyT3duZXIoKSkgew0KCQkJCXJlZHJhd1NsZCgpOw0KCQkJfQ0KCQl9Ow0KDQoNCgkJLy8gaDogMC0zNjANCgkJLy8gczogMC0xMDANCgkJLy8gdjogMC0xMDANCgkJLy8NCgkJdGhpcy5mcm9tSFNWID0gZnVuY3Rpb24gKGgsIHMsIHYsIGZsYWdzKSB7IC8vIG51bGwgPSBkb24ndCBjaGFuZ2UNCgkJCWlmIChoICE9PSBudWxsKSB7DQoJCQkJaWYgKGlzTmFOKGgpKSB7IHJldHVybiBmYWxzZTsgfQ0KCQkJCWggPSBNYXRoLm1heCgwLCBNYXRoLm1pbigzNjAsIGgpKTsNCgkJCX0NCgkJCWlmIChzICE9PSBudWxsKSB7DQoJCQkJaWYgKGlzTmFOKHMpKSB7IHJldHVybiBmYWxzZTsgfQ0KCQkJCXMgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHRoaXMubWF4UywgcyksIHRoaXMubWluUyk7DQoJCQl9DQoJCQlpZiAodiAh
PT0gbnVsbCkgew0KCQkJCWlmIChpc05hTih2KSkgeyByZXR1cm4gZmFsc2U7IH0NCgkJCQl2ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCB0aGlzLm1heFYsIHYpLCB0aGlzLm1pblYpOw0KCQkJfQ0KDQoJCQl0aGlzLnJnYiA9IEhTVl9SR0IoDQoJCQkJaD09PW51bGwgPyB0aGlzLmhzdlswXSA6ICh0aGlzLmhzdlswXT1oKSwNCgkJCQlzPT09bnVsbCA/IHRoaXMuaHN2WzFdIDogKHRoaXMuaHN2WzFdPXMpLA0KCQkJCXY9PT1udWxsID8gdGhpcy5oc3ZbMl0gOiAodGhpcy5oc3ZbMl09dikNCgkJCSk7DQoNCgkJCXRoaXMuZXhwb3J0Q29sb3IoZmxhZ3MpOw0KCQl9Ow0KDQoNCgkJLy8gcjogMC0yNTUNCgkJLy8gZzogMC0yNTUNCgkJLy8gYjogMC0yNTUNCgkJLy8NCgkJdGhpcy5mcm9tUkdCID0gZnVuY3Rpb24gKHIsIGcsIGIsIGZsYWdzKSB7IC8vIG51bGwgPSBkb24ndCBjaGFuZ2UNCgkJCWlmIChyICE9PSBudWxsKSB7DQoJCQkJaWYgKGlzTmFOKHIpKSB7IHJldHVybiBmYWxzZTsgfQ0KCQkJCXIgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIHIpKTsNCgkJCX0NCgkJCWlmIChnICE9PSBudWxsKSB7DQoJCQkJaWYgKGlzTmFOKGcpKSB7IHJldHVybiBmYWxzZTsgfQ0KCQkJCWcgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIGcpKTsNCgkJCX0NCgkJCWlmIChiICE9PSBudWxsKSB7DQoJCQkJaWYgKGlzTmFOKGIpKSB7IHJldHVybiBmYWxzZTsgfQ0KCQkJCWIgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIGIpKTsNCgkJCX0NCg0KCQkJdmFyIGhzdiA9IFJHQl9IU1YoDQoJCQkJcj09PW51bGwgPyB0aGlzLnJnYlswXSA6IHIsDQoJCQkJZz09PW51bGwgPyB0aGlzLnJnYlsxXSA6IGcsDQoJCQkJYj09PW51bGwgPyB0aGlzLnJnYlsyXSA6IGINCgkJCSk7DQoJCQlpZiAoaHN2WzBdICE9PSBudWxsKSB7DQoJCQkJdGhpcy5oc3ZbMF0gPSBNYXRoLm1heCgwLCBNYXRoLm1pbigzNjAsIGhzdlswXSkpOw0KCQkJfQ0KCQkJaWYgKGhzdlsyXSAhPT0gMCkgew0KCQkJCXRoaXMuaHN2WzFdID0gaHN2WzFdPT09bnVsbCA/IG51bGwgOiBNYXRoLm1heCgwLCB0aGlzLm1pblMsIE1hdGgubWluKDEwMCwgdGhpcy5tYXhTLCBoc3ZbMV0pKTsNCgkJCX0NCgkJCXRoaXMuaHN2WzJdID0gaHN2WzJdPT09bnVsbCA/IG51bGwgOiBNYXRoLm1heCgwLCB0aGlzLm1pblYsIE1hdGgubWluKDEwMCwgdGhpcy5tYXhWLCBoc3ZbMl0pKTsNCg0KCQkJLy8gdXBkYXRlIFJHQiBhY2NvcmRpbmcgdG8gZmluYWwgSFNWLCBhcyBzb21lIHZhbHVlcyBtaWdodCBiZSB0cmltbWVkDQoJCQl2YXIgcmdiID0gSFNWX1JHQih0aGlzLmhzdlswXSwgdGhpcy5oc3ZbMV0sIHRoaXMuaHN2WzJdKTsNCgkJCXRoaXMucmdiWzBdID0gcmdiWzBdOw0KCQkJdGhpcy5yZ2JbMV0gPSByZ2JbMV07DQoJCQl0aGlzLnJnYlsyXSA9IHJnYlsyXTsNCg0KCQkJdGhpcy5leHBvcnRDb2xvcihmbGFncyk7DQoJCX07DQoNCg0KCQl0aGlzLmZyb21TdHJpbmcgPSBmdW5jdGlvbiAo
c3RyLCBmbGFncykgew0KCQkJdmFyIG07DQoJCQlpZiAobSA9IHN0ci5tYXRjaCgvXlxXKihbMC05QS1GXXszfShbMC05QS1GXXszfSk/KVxXKiQvaSkpIHsNCgkJCQkvLyBIRVggbm90YXRpb24NCgkJCQkvLw0KDQoJCQkJaWYgKG1bMV0ubGVuZ3RoID09PSA2KSB7DQoJCQkJCS8vIDYtY2hhciBub3RhdGlvbg0KCQkJCQl0aGlzLmZyb21SR0IoDQoJCQkJCQlwYXJzZUludChtWzFdLnN1YnN0cigwLDIpLDE2KSwNCgkJCQkJCXBhcnNlSW50KG1bMV0uc3Vic3RyKDIsMiksMTYpLA0KCQkJCQkJcGFyc2VJbnQobVsxXS5zdWJzdHIoNCwyKSwxNiksDQoJCQkJCQlmbGFncw0KCQkJCQkpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCS8vIDMtY2hhciBub3RhdGlvbg0KCQkJCQl0aGlzLmZyb21SR0IoDQoJCQkJCQlwYXJzZUludChtWzFdLmNoYXJBdCgwKSArIG1bMV0uY2hhckF0KDApLDE2KSwNCgkJCQkJCXBhcnNlSW50KG1bMV0uY2hhckF0KDEpICsgbVsxXS5jaGFyQXQoMSksMTYpLA0KCQkJCQkJcGFyc2VJbnQobVsxXS5jaGFyQXQoMikgKyBtWzFdLmNoYXJBdCgyKSwxNiksDQoJCQkJCQlmbGFncw0KCQkJCQkpOw0KCQkJCX0NCgkJCQlyZXR1cm4gdHJ1ZTsNCg0KCQkJfSBlbHNlIGlmIChtID0gc3RyLm1hdGNoKC9eXFcqcmdiYT9cKChbXildKilcKVxXKiQvaSkpIHsNCgkJCQl2YXIgcGFyYW1zID0gbVsxXS5zcGxpdCgnLCcpOw0KCQkJCXZhciByZSA9IC9eXHMqKFxkKikoXC5cZCspP1xzKiQvOw0KCQkJCXZhciBtUiwgbUcsIG1COw0KCQkJCWlmICgNCgkJCQkJcGFyYW1zLmxlbmd0aCA+PSAzICYmDQoJCQkJCShtUiA9IHBhcmFtc1swXS5tYXRjaChyZSkpICYmDQoJCQkJCShtRyA9IHBhcmFtc1sxXS5tYXRjaChyZSkpICYmDQoJCQkJCShtQiA9IHBhcmFtc1syXS5tYXRjaChyZSkpDQoJCQkJKSB7DQoJCQkJCXZhciByID0gcGFyc2VGbG9hdCgobVJbMV0gfHwgJzAnKSArIChtUlsyXSB8fCAnJykpOw0KCQkJCQl2YXIgZyA9IHBhcnNlRmxvYXQoKG1HWzFdIHx8ICcwJykgKyAobUdbMl0gfHwgJycpKTsNCgkJCQkJdmFyIGIgPSBwYXJzZUZsb2F0KChtQlsxXSB8fCAnMCcpICsgKG1CWzJdIHx8ICcnKSk7DQoJCQkJCXRoaXMuZnJvbVJHQihyLCBnLCBiLCBmbGFncyk7DQoJCQkJCXJldHVybiB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfTsNCg0KDQoJCXRoaXMudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7DQoJCQlyZXR1cm4gKA0KCQkJCSgweDEwMCB8IE1hdGgucm91bmQodGhpcy5yZ2JbMF0pKS50b1N0cmluZygxNikuc3Vic3RyKDEpICsNCgkJCQkoMHgxMDAgfCBNYXRoLnJvdW5kKHRoaXMucmdiWzFdKSkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSArDQoJCQkJKDB4MTAwIHwgTWF0aC5yb3VuZCh0aGlzLnJnYlsyXSkpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSkNCgkJCSk7DQoJCX07DQoNCg0KCQl0aGlzLnRvSEVYU3RyaW5nID0gZnVuY3Rpb24gKCkgew0KCQkJcmV0dXJuICcjJyArIHRoaXMudG9TdHJpbmcoKS50
b1VwcGVyQ2FzZSgpOw0KCQl9Ow0KDQoNCgkJdGhpcy50b1JHQlN0cmluZyA9IGZ1bmN0aW9uICgpIHsNCgkJCXJldHVybiAoJ3JnYignICsNCgkJCQlNYXRoLnJvdW5kKHRoaXMucmdiWzBdKSArICcsJyArDQoJCQkJTWF0aC5yb3VuZCh0aGlzLnJnYlsxXSkgKyAnLCcgKw0KCQkJCU1hdGgucm91bmQodGhpcy5yZ2JbMl0pICsgJyknDQoJCQkpOw0KCQl9Ow0KDQoNCgkJdGhpcy5pc0xpZ2h0ID0gZnVuY3Rpb24gKCkgew0KCQkJcmV0dXJuICgNCgkJCQkwLjIxMyAqIHRoaXMucmdiWzBdICsNCgkJCQkwLjcxNSAqIHRoaXMucmdiWzFdICsNCgkJCQkwLjA3MiAqIHRoaXMucmdiWzJdID4NCgkJCQkyNTUgLyAyDQoJCQkpOw0KCQl9Ow0KDQoNCgkJdGhpcy5fcHJvY2Vzc1BhcmVudEVsZW1lbnRzSW5ET00gPSBmdW5jdGlvbiAoKSB7DQoJCQlpZiAodGhpcy5fbGlua2VkRWxlbWVudHNQcm9jZXNzZWQpIHsgcmV0dXJuOyB9DQoJCQl0aGlzLl9saW5rZWRFbGVtZW50c1Byb2Nlc3NlZCA9IHRydWU7DQoNCgkJCXZhciBlbG0gPSB0aGlzLnRhcmdldEVsZW1lbnQ7DQoJCQlkbyB7DQoJCQkJLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50IG9yIG9uZSBvZiBpdHMgcGFyZW50IG5vZGVzIGhhcyBmaXhlZCBwb3NpdGlvbiwNCgkJCQkvLyB0aGVuIHVzZSBmaXhlZCBwb3NpdGlvbmluZyBpbnN0ZWFkDQoJCQkJLy8NCgkJCQkvLyBOb3RlOiBJbiBGaXJlZm94LCBnZXRDb21wdXRlZFN0eWxlIHJldHVybnMgbnVsbCBpbiBhIGhpZGRlbiBpZnJhbWUsDQoJCQkJLy8gdGhhdCdzIHdoeSB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSByZXR1cm5lZCBzdHlsZSBvYmplY3QgaXMgbm9uLWVtcHR5DQoJCQkJdmFyIGN1cnJTdHlsZSA9IGpzYy5nZXRTdHlsZShlbG0pOw0KCQkJCWlmIChjdXJyU3R5bGUgJiYgY3VyclN0eWxlLnBvc2l0aW9uLnRvTG93ZXJDYXNlKCkgPT09ICdmaXhlZCcpIHsNCgkJCQkJdGhpcy5maXhlZCA9IHRydWU7DQoJCQkJfQ0KDQoJCQkJaWYgKGVsbSAhPT0gdGhpcy50YXJnZXRFbGVtZW50KSB7DQoJCQkJCS8vIEVuc3VyZSB0byBhdHRhY2ggb25QYXJlbnRTY3JvbGwgb25seSBvbmNlIHRvIGVhY2ggcGFyZW50IGVsZW1lbnQNCgkJCQkJLy8gKG11bHRpcGxlIHRhcmdldEVsZW1lbnRzIGNhbiBzaGFyZSB0aGUgc2FtZSBwYXJlbnQgbm9kZXMpDQoJCQkJCS8vDQoJCQkJCS8vIE5vdGU6IEl0J3Mgbm90IGp1c3Qgb2Zmc2V0UGFyZW50cyB0aGF0IGNhbiBiZSBzY3JvbGxhYmxlLA0KCQkJCQkvLyB0aGF0J3Mgd2h5IHdlIGxvb3AgdGhyb3VnaCBhbGwgcGFyZW50IG5vZGVzDQoJCQkJCWlmICghZWxtLl9qc2NFdmVudHNBdHRhY2hlZCkgew0KCQkJCQkJanNjLmF0dGFjaEV2ZW50KGVsbSwgJ3Njcm9sbCcsIGpzYy5vblBhcmVudFNjcm9sbCk7DQoJCQkJCQllbG0uX2pzY0V2ZW50c0F0dGFjaGVkID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0gd2hpbGUgKChlbG0gPSBlbG0ucGFyZW50Tm9kZSkgJiYgIWpzYy5pc0VsZW1lbnRUeXBlKGVsbSwg
J2JvZHknKSk7DQoJCX07DQoNCg0KCQkvLyByOiAwLTI1NQ0KCQkvLyBnOiAwLTI1NQ0KCQkvLyBiOiAwLTI1NQ0KCQkvLw0KCQkvLyByZXR1cm5zOiBbIDAtMzYwLCAwLTEwMCwgMC0xMDAgXQ0KCQkvLw0KCQlmdW5jdGlvbiBSR0JfSFNWIChyLCBnLCBiKSB7DQoJCQlyIC89IDI1NTsNCgkJCWcgLz0gMjU1Ow0KCQkJYiAvPSAyNTU7DQoJCQl2YXIgbiA9IE1hdGgubWluKE1hdGgubWluKHIsZyksYik7DQoJCQl2YXIgdiA9IE1hdGgubWF4KE1hdGgubWF4KHIsZyksYik7DQoJCQl2YXIgbSA9IHYgLSBuOw0KCQkJaWYgKG0gPT09IDApIHsgcmV0dXJuIFsgbnVsbCwgMCwgMTAwICogdiBdOyB9DQoJCQl2YXIgaCA9IHI9PT1uID8gMysoYi1nKS9tIDogKGc9PT1uID8gNSsoci1iKS9tIDogMSsoZy1yKS9tKTsNCgkJCXJldHVybiBbDQoJCQkJNjAgKiAoaD09PTY/MDpoKSwNCgkJCQkxMDAgKiAobS92KSwNCgkJCQkxMDAgKiB2DQoJCQldOw0KCQl9DQoNCg0KCQkvLyBoOiAwLTM2MA0KCQkvLyBzOiAwLTEwMA0KCQkvLyB2OiAwLTEwMA0KCQkvLw0KCQkvLyByZXR1cm5zOiBbIDAtMjU1LCAwLTI1NSwgMC0yNTUgXQ0KCQkvLw0KCQlmdW5jdGlvbiBIU1ZfUkdCIChoLCBzLCB2KSB7DQoJCQl2YXIgdSA9IDI1NSAqICh2IC8gMTAwKTsNCg0KCQkJaWYgKGggPT09IG51bGwpIHsNCgkJCQlyZXR1cm4gWyB1LCB1LCB1IF07DQoJCQl9DQoNCgkJCWggLz0gNjA7DQoJCQlzIC89IDEwMDsNCg0KCQkJdmFyIGkgPSBNYXRoLmZsb29yKGgpOw0KCQkJdmFyIGYgPSBpJTIgPyBoLWkgOiAxLShoLWkpOw0KCQkJdmFyIG0gPSB1ICogKDEgLSBzKTsNCgkJCXZhciBuID0gdSAqICgxIC0gcyAqIGYpOw0KCQkJc3dpdGNoIChpKSB7DQoJCQkJY2FzZSA2Og0KCQkJCWNhc2UgMDogcmV0dXJuIFt1LG4sbV07DQoJCQkJY2FzZSAxOiByZXR1cm4gW24sdSxtXTsNCgkJCQljYXNlIDI6IHJldHVybiBbbSx1LG5dOw0KCQkJCWNhc2UgMzogcmV0dXJuIFttLG4sdV07DQoJCQkJY2FzZSA0OiByZXR1cm4gW24sbSx1XTsNCgkJCQljYXNlIDU6IHJldHVybiBbdSxtLG5dOw0KCQkJfQ0KCQl9DQoNCg0KCQlmdW5jdGlvbiBkZXRhY2hQaWNrZXIgKCkgew0KCQkJanNjLnVuc2V0Q2xhc3MoVEhJUy50YXJnZXRFbGVtZW50LCBUSElTLmFjdGl2ZUNsYXNzKTsNCgkJCWpzYy5waWNrZXIud3JhcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGpzYy5waWNrZXIud3JhcCk7DQoJCQlkZWxldGUganNjLnBpY2tlci5vd25lcjsNCgkJfQ0KDQoNCgkJZnVuY3Rpb24gZHJhd1BpY2tlciAoKSB7DQoNCgkJCS8vIEF0IHRoaXMgcG9pbnQsIHdoZW4gZHJhd2luZyB0aGUgcGlja2VyLCB3ZSBrbm93IHdoYXQgdGhlIHBhcmVudCBlbGVtZW50cyBhcmUNCgkJCS8vIGFuZCB3ZSBjYW4gZG8gYWxsIHJlbGF0ZWQgRE9NIG9wZXJhdGlvbnMsIHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXZlbnRzIG9uIHRoZW0NCgkJCS8vIG9yIGNoZWNraW5nIHRoZWlyIHBvc2l0aW9uaW5nDQoJCQlUSElTLl9wcm9jZXNz
UGFyZW50RWxlbWVudHNJbkRPTSgpOw0KDQoJCQlpZiAoIWpzYy5waWNrZXIpIHsNCgkJCQlqc2MucGlja2VyID0gew0KCQkJCQlvd25lcjogbnVsbCwNCgkJCQkJd3JhcCA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLA0KCQkJCQlib3ggOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwNCgkJCQkJYm94UyA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBzaGFkb3cgYXJlYQ0KCQkJCQlib3hCIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIC8vIGJvcmRlcg0KCQkJCQlwYWQgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwNCgkJCQkJcGFkQiA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBib3JkZXINCgkJCQkJcGFkTSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBtb3VzZS90b3VjaCBhcmVhDQoJCQkJCXBhZFBhbCA6IGpzYy5jcmVhdGVQYWxldHRlKCksDQoJCQkJCWNyb3NzIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksDQoJCQkJCWNyb3NzQlkgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgLy8gYm9yZGVyIFkNCgkJCQkJY3Jvc3NCWCA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBib3JkZXIgWA0KCQkJCQljcm9zc0xZIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIC8vIGxpbmUgWQ0KCQkJCQljcm9zc0xYIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIC8vIGxpbmUgWA0KCQkJCQlzbGQgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwNCgkJCQkJc2xkQiA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBib3JkZXINCgkJCQkJc2xkTSA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBtb3VzZS90b3VjaCBhcmVhDQoJCQkJCXNsZEdyYWQgOiBqc2MuY3JlYXRlU2xpZGVyR3JhZGllbnQoKSwNCgkJCQkJc2xkUHRyUyA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAvLyBzbGlkZXIgcG9pbnRlciBzcGFjZXINCgkJCQkJc2xkUHRySUIgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgLy8gc2xpZGVyIHBvaW50ZXIgaW5uZXIgYm9yZGVyDQoJCQkJCXNsZFB0ck1CIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIC8vIHNsaWRlciBwb2ludGVyIG1pZGRsZSBib3JkZXINCgkJCQkJc2xkUHRyT0IgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgLy8gc2xpZGVyIHBvaW50ZXIgb3V0ZXIgYm9yZGVyDQoJCQkJCWJ0biA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLA0KCQkJCQlidG5UIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpIC8vIHRleHQNCgkJCQl9Ow0KDQoJCQkJanNjLnBpY2tlci5wYWQuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5wYWRQYWwuZWxtKTsNCgkJCQlqc2MucGlja2VyLnBhZEIuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5wYWQpOw0KCQkJCWpzYy5waWNr
ZXIuY3Jvc3MuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5jcm9zc0JZKTsNCgkJCQlqc2MucGlja2VyLmNyb3NzLmFwcGVuZENoaWxkKGpzYy5waWNrZXIuY3Jvc3NCWCk7DQoJCQkJanNjLnBpY2tlci5jcm9zcy5hcHBlbmRDaGlsZChqc2MucGlja2VyLmNyb3NzTFkpOw0KCQkJCWpzYy5waWNrZXIuY3Jvc3MuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5jcm9zc0xYKTsNCgkJCQlqc2MucGlja2VyLnBhZEIuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5jcm9zcyk7DQoJCQkJanNjLnBpY2tlci5ib3guYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5wYWRCKTsNCgkJCQlqc2MucGlja2VyLmJveC5hcHBlbmRDaGlsZChqc2MucGlja2VyLnBhZE0pOw0KDQoJCQkJanNjLnBpY2tlci5zbGQuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5zbGRHcmFkLmVsbSk7DQoJCQkJanNjLnBpY2tlci5zbGRCLmFwcGVuZENoaWxkKGpzYy5waWNrZXIuc2xkKTsNCgkJCQlqc2MucGlja2VyLnNsZEIuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5zbGRQdHJPQik7DQoJCQkJanNjLnBpY2tlci5zbGRQdHJPQi5hcHBlbmRDaGlsZChqc2MucGlja2VyLnNsZFB0ck1CKTsNCgkJCQlqc2MucGlja2VyLnNsZFB0ck1CLmFwcGVuZENoaWxkKGpzYy5waWNrZXIuc2xkUHRySUIpOw0KCQkJCWpzYy5waWNrZXIuc2xkUHRySUIuYXBwZW5kQ2hpbGQoanNjLnBpY2tlci5zbGRQdHJTKTsNCgkJCQlqc2MucGlja2VyLmJveC5hcHBlbmRDaGlsZChqc2MucGlja2VyLnNsZEIpOw0KCQkJCWpzYy5waWNrZXIuYm94LmFwcGVuZENoaWxkKGpzYy5waWNrZXIuc2xkTSk7DQoNCgkJCQlqc2MucGlja2VyLmJ0bi5hcHBlbmRDaGlsZChqc2MucGlja2VyLmJ0blQpOw0KCQkJCWpzYy5waWNrZXIuYm94LmFwcGVuZENoaWxkKGpzYy5waWNrZXIuYnRuKTsNCg0KCQkJCWpzYy5waWNrZXIuYm94Qi5hcHBlbmRDaGlsZChqc2MucGlja2VyLmJveCk7DQoJCQkJanNjLnBpY2tlci53cmFwLmFwcGVuZENoaWxkKGpzYy5waWNrZXIuYm94Uyk7DQoJCQkJanNjLnBpY2tlci53cmFwLmFwcGVuZENoaWxkKGpzYy5waWNrZXIuYm94Qik7DQoJCQl9DQoNCgkJCXZhciBwID0ganNjLnBpY2tlcjsNCg0KCQkJdmFyIGRpc3BsYXlTbGlkZXIgPSAhIWpzYy5nZXRTbGlkZXJDb21wb25lbnQoVEhJUyk7DQoJCQl2YXIgZGltcyA9IGpzYy5nZXRQaWNrZXJEaW1zKFRISVMpOw0KCQkJdmFyIGNyb3NzT3V0ZXJTaXplID0gKDIgKiBUSElTLnBvaW50ZXJCb3JkZXJXaWR0aCArIFRISVMucG9pbnRlclRoaWNrbmVzcyArIDIgKiBUSElTLmNyb3NzU2l6ZSk7DQoJCQl2YXIgcGFkVG9TbGlkZXJQYWRkaW5nID0ganNjLmdldFBhZFRvU2xpZGVyUGFkZGluZyhUSElTKTsNCgkJCXZhciBib3JkZXJSYWRpdXMgPSBNYXRoLm1pbigNCgkJCQlUSElTLmJvcmRlclJhZGl1cywNCgkJCQlNYXRoLnJvdW5kKFRISVMucGFkZGluZyAqIE1hdGguUEkpKTsgLy8gcHgNCgkJCXZhciBwYWRDdXJzb3IgPSAnY3Jvc3NoYWlyJzsNCg0KCQkJLy8gd3JhcA0K
CQkJcC53cmFwLnN0eWxlLmNsZWFyID0gJ2JvdGgnOw0KCQkJcC53cmFwLnN0eWxlLndpZHRoID0gKGRpbXNbMF0gKyAyICogVEhJUy5ib3JkZXJXaWR0aCkgKyAncHgnOw0KCQkJcC53cmFwLnN0eWxlLmhlaWdodCA9IChkaW1zWzFdICsgMiAqIFRISVMuYm9yZGVyV2lkdGgpICsgJ3B4JzsNCgkJCXAud3JhcC5zdHlsZS56SW5kZXggPSBUSElTLnpJbmRleDsNCg0KCQkJLy8gcGlja2VyDQoJCQlwLmJveC5zdHlsZS53aWR0aCA9IGRpbXNbMF0gKyAncHgnOw0KCQkJcC5ib3guc3R5bGUuaGVpZ2h0ID0gZGltc1sxXSArICdweCc7DQoNCgkJCXAuYm94Uy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJCQlwLmJveFMuc3R5bGUubGVmdCA9ICcwJzsNCgkJCXAuYm94Uy5zdHlsZS50b3AgPSAnMCc7DQoJCQlwLmJveFMuc3R5bGUud2lkdGggPSAnMTAwJSc7DQoJCQlwLmJveFMuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnOw0KCQkJanNjLnNldEJvcmRlclJhZGl1cyhwLmJveFMsIGJvcmRlclJhZGl1cyArICdweCcpOw0KDQoJCQkvLyBwaWNrZXIgYm9yZGVyDQoJCQlwLmJveEIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOw0KCQkJcC5ib3hCLnN0eWxlLmJvcmRlciA9IFRISVMuYm9yZGVyV2lkdGggKyAncHggc29saWQnOw0KCQkJcC5ib3hCLnN0eWxlLmJvcmRlckNvbG9yID0gVEhJUy5ib3JkZXJDb2xvcjsNCgkJCXAuYm94Qi5zdHlsZS5iYWNrZ3JvdW5kID0gVEhJUy5iYWNrZ3JvdW5kQ29sb3I7DQoJCQlqc2Muc2V0Qm9yZGVyUmFkaXVzKHAuYm94QiwgYm9yZGVyUmFkaXVzICsgJ3B4Jyk7DQoNCgkJCS8vIElFIGhhY2s6DQoJCQkvLyBJZiB0aGUgZWxlbWVudCBpcyB0cmFuc3BhcmVudCwgSUUgd2lsbCB0cmlnZ2VyIHRoZSBldmVudCBvbiB0aGUgZWxlbWVudHMgdW5kZXIgaXQsDQoJCQkvLyBlLmcuIG9uIENhbnZhcyBvciBvbiBlbGVtZW50cyB3aXRoIGJvcmRlcg0KCQkJcC5wYWRNLnN0eWxlLmJhY2tncm91bmQgPQ0KCQkJcC5zbGRNLnN0eWxlLmJhY2tncm91bmQgPQ0KCQkJCScjRkZGJzsNCgkJCWpzYy5zZXRTdHlsZShwLnBhZE0sICdvcGFjaXR5JywgJzAnKTsNCgkJCWpzYy5zZXRTdHlsZShwLnNsZE0sICdvcGFjaXR5JywgJzAnKTsNCg0KCQkJLy8gcGFkDQoJCQlwLnBhZC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7DQoJCQlwLnBhZC5zdHlsZS53aWR0aCA9IFRISVMud2lkdGggKyAncHgnOw0KCQkJcC5wYWQuc3R5bGUuaGVpZ2h0ID0gVEhJUy5oZWlnaHQgKyAncHgnOw0KDQoJCQkvLyBwYWQgcGFsZXR0ZXMgKEhTViBhbmQgSFZTKQ0KCQkJcC5wYWRQYWwuZHJhdyhUSElTLndpZHRoLCBUSElTLmhlaWdodCwganNjLmdldFBhZFlDb21wb25lbnQoVEhJUykpOw0KDQoJCQkvLyBwYWQgYm9yZGVyDQoJCQlwLnBhZEIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KCQkJcC5wYWRCLnN0eWxlLmxlZnQgPSBUSElTLnBhZGRpbmcgKyAncHgnOw0KCQkJcC5wYWRCLnN0eWxlLnRvcCA9IFRISVMucGFkZGluZyAr
ICdweCc7DQoJCQlwLnBhZEIuc3R5bGUuYm9yZGVyID0gVEhJUy5pbnNldFdpZHRoICsgJ3B4IHNvbGlkJzsNCgkJCXAucGFkQi5zdHlsZS5ib3JkZXJDb2xvciA9IFRISVMuaW5zZXRDb2xvcjsNCg0KCQkJLy8gcGFkIG1vdXNlIGFyZWENCgkJCXAucGFkTS5fanNjSW5zdGFuY2UgPSBUSElTOw0KCQkJcC5wYWRNLl9qc2NDb250cm9sTmFtZSA9ICdwYWQnOw0KCQkJcC5wYWRNLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsNCgkJCXAucGFkTS5zdHlsZS5sZWZ0ID0gJzAnOw0KCQkJcC5wYWRNLnN0eWxlLnRvcCA9ICcwJzsNCgkJCXAucGFkTS5zdHlsZS53aWR0aCA9IChUSElTLnBhZGRpbmcgKyAyICogVEhJUy5pbnNldFdpZHRoICsgVEhJUy53aWR0aCArIHBhZFRvU2xpZGVyUGFkZGluZyAvIDIpICsgJ3B4JzsNCgkJCXAucGFkTS5zdHlsZS5oZWlnaHQgPSBkaW1zWzFdICsgJ3B4JzsNCgkJCXAucGFkTS5zdHlsZS5jdXJzb3IgPSBwYWRDdXJzb3I7DQoNCgkJCS8vIHBhZCBjcm9zcw0KCQkJcC5jcm9zcy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7DQoJCQlwLmNyb3NzLnN0eWxlLmxlZnQgPQ0KCQkJcC5jcm9zcy5zdHlsZS50b3AgPQ0KCQkJCScwJzsNCgkJCXAuY3Jvc3Muc3R5bGUud2lkdGggPQ0KCQkJcC5jcm9zcy5zdHlsZS5oZWlnaHQgPQ0KCQkJCWNyb3NzT3V0ZXJTaXplICsgJ3B4JzsNCg0KCQkJLy8gcGFkIGNyb3NzIGJvcmRlciBZIGFuZCBYDQoJCQlwLmNyb3NzQlkuc3R5bGUucG9zaXRpb24gPQ0KCQkJcC5jcm9zc0JYLnN0eWxlLnBvc2l0aW9uID0NCgkJCQknYWJzb2x1dGUnOw0KCQkJcC5jcm9zc0JZLnN0eWxlLmJhY2tncm91bmQgPQ0KCQkJcC5jcm9zc0JYLnN0eWxlLmJhY2tncm91bmQgPQ0KCQkJCVRISVMucG9pbnRlckJvcmRlckNvbG9yOw0KCQkJcC5jcm9zc0JZLnN0eWxlLndpZHRoID0NCgkJCXAuY3Jvc3NCWC5zdHlsZS5oZWlnaHQgPQ0KCQkJCSgyICogVEhJUy5wb2ludGVyQm9yZGVyV2lkdGggKyBUSElTLnBvaW50ZXJUaGlja25lc3MpICsgJ3B4JzsNCgkJCXAuY3Jvc3NCWS5zdHlsZS5oZWlnaHQgPQ0KCQkJcC5jcm9zc0JYLnN0eWxlLndpZHRoID0NCgkJCQljcm9zc091dGVyU2l6ZSArICdweCc7DQoJCQlwLmNyb3NzQlkuc3R5bGUubGVmdCA9DQoJCQlwLmNyb3NzQlguc3R5bGUudG9wID0NCgkJCQkoTWF0aC5mbG9vcihjcm9zc091dGVyU2l6ZSAvIDIpIC0gTWF0aC5mbG9vcihUSElTLnBvaW50ZXJUaGlja25lc3MgLyAyKSAtIFRISVMucG9pbnRlckJvcmRlcldpZHRoKSArICdweCc7DQoJCQlwLmNyb3NzQlkuc3R5bGUudG9wID0NCgkJCXAuY3Jvc3NCWC5zdHlsZS5sZWZ0ID0NCgkJCQknMCc7DQoNCgkJCS8vIHBhZCBjcm9zcyBsaW5lIFkgYW5kIFgNCgkJCXAuY3Jvc3NMWS5zdHlsZS5wb3NpdGlvbiA9DQoJCQlwLmNyb3NzTFguc3R5bGUucG9zaXRpb24gPQ0KCQkJCSdhYnNvbHV0ZSc7DQoJCQlwLmNyb3NzTFkuc3R5bGUuYmFja2dyb3VuZCA9DQoJCQlwLmNyb3NzTFguc3R5bGUuYmFj
a2dyb3VuZCA9DQoJCQkJVEhJUy5wb2ludGVyQ29sb3I7DQoJCQlwLmNyb3NzTFkuc3R5bGUuaGVpZ2h0ID0NCgkJCXAuY3Jvc3NMWC5zdHlsZS53aWR0aCA9DQoJCQkJKGNyb3NzT3V0ZXJTaXplIC0gMiAqIFRISVMucG9pbnRlckJvcmRlcldpZHRoKSArICdweCc7DQoJCQlwLmNyb3NzTFkuc3R5bGUud2lkdGggPQ0KCQkJcC5jcm9zc0xYLnN0eWxlLmhlaWdodCA9DQoJCQkJVEhJUy5wb2ludGVyVGhpY2tuZXNzICsgJ3B4JzsNCgkJCXAuY3Jvc3NMWS5zdHlsZS5sZWZ0ID0NCgkJCXAuY3Jvc3NMWC5zdHlsZS50b3AgPQ0KCQkJCShNYXRoLmZsb29yKGNyb3NzT3V0ZXJTaXplIC8gMikgLSBNYXRoLmZsb29yKFRISVMucG9pbnRlclRoaWNrbmVzcyAvIDIpKSArICdweCc7DQoJCQlwLmNyb3NzTFkuc3R5bGUudG9wID0NCgkJCXAuY3Jvc3NMWC5zdHlsZS5sZWZ0ID0NCgkJCQlUSElTLnBvaW50ZXJCb3JkZXJXaWR0aCArICdweCc7DQoNCgkJCS8vIHNsaWRlcg0KCQkJcC5zbGQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsNCgkJCXAuc2xkLnN0eWxlLndpZHRoID0gVEhJUy5zbGlkZXJTaXplICsgJ3B4JzsNCgkJCXAuc2xkLnN0eWxlLmhlaWdodCA9IFRISVMuaGVpZ2h0ICsgJ3B4JzsNCg0KCQkJLy8gc2xpZGVyIGdyYWRpZW50DQoJCQlwLnNsZEdyYWQuZHJhdyhUSElTLnNsaWRlclNpemUsIFRISVMuaGVpZ2h0LCAnIzAwMCcsICcjMDAwJyk7DQoNCgkJCS8vIHNsaWRlciBib3JkZXINCgkJCXAuc2xkQi5zdHlsZS5kaXNwbGF5ID0gZGlzcGxheVNsaWRlciA/ICdibG9jaycgOiAnbm9uZSc7DQoJCQlwLnNsZEIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KCQkJcC5zbGRCLnN0eWxlLnJpZ2h0ID0gVEhJUy5wYWRkaW5nICsgJ3B4JzsNCgkJCXAuc2xkQi5zdHlsZS50b3AgPSBUSElTLnBhZGRpbmcgKyAncHgnOw0KCQkJcC5zbGRCLnN0eWxlLmJvcmRlciA9IFRISVMuaW5zZXRXaWR0aCArICdweCBzb2xpZCc7DQoJCQlwLnNsZEIuc3R5bGUuYm9yZGVyQ29sb3IgPSBUSElTLmluc2V0Q29sb3I7DQoNCgkJCS8vIHNsaWRlciBtb3VzZSBhcmVhDQoJCQlwLnNsZE0uX2pzY0luc3RhbmNlID0gVEhJUzsNCgkJCXAuc2xkTS5fanNjQ29udHJvbE5hbWUgPSAnc2xkJzsNCgkJCXAuc2xkTS5zdHlsZS5kaXNwbGF5ID0gZGlzcGxheVNsaWRlciA/ICdibG9jaycgOiAnbm9uZSc7DQoJCQlwLnNsZE0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnOw0KCQkJcC5zbGRNLnN0eWxlLnJpZ2h0ID0gJzAnOw0KCQkJcC5zbGRNLnN0eWxlLnRvcCA9ICcwJzsNCgkJCXAuc2xkTS5zdHlsZS53aWR0aCA9IChUSElTLnNsaWRlclNpemUgKyBwYWRUb1NsaWRlclBhZGRpbmcgLyAyICsgVEhJUy5wYWRkaW5nICsgMiAqIFRISVMuaW5zZXRXaWR0aCkgKyAncHgnOw0KCQkJcC5zbGRNLnN0eWxlLmhlaWdodCA9IGRpbXNbMV0gKyAncHgnOw0KCQkJcC5zbGRNLnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JzsNCg0KCQkJLy8gc2xpZGVyIHBvaW50ZXIgaW5u
ZXIgYW5kIG91dGVyIGJvcmRlcg0KCQkJcC5zbGRQdHJJQi5zdHlsZS5ib3JkZXIgPQ0KCQkJcC5zbGRQdHJPQi5zdHlsZS5ib3JkZXIgPQ0KCQkJCVRISVMucG9pbnRlckJvcmRlcldpZHRoICsgJ3B4IHNvbGlkICcgKyBUSElTLnBvaW50ZXJCb3JkZXJDb2xvcjsNCg0KCQkJLy8gc2xpZGVyIHBvaW50ZXIgb3V0ZXIgYm9yZGVyDQoJCQlwLnNsZFB0ck9CLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsNCgkJCXAuc2xkUHRyT0Iuc3R5bGUubGVmdCA9IC0oMiAqIFRISVMucG9pbnRlckJvcmRlcldpZHRoICsgVEhJUy5wb2ludGVyVGhpY2tuZXNzKSArICdweCc7DQoJCQlwLnNsZFB0ck9CLnN0eWxlLnRvcCA9ICcwJzsNCg0KCQkJLy8gc2xpZGVyIHBvaW50ZXIgbWlkZGxlIGJvcmRlcg0KCQkJcC5zbGRQdHJNQi5zdHlsZS5ib3JkZXIgPSBUSElTLnBvaW50ZXJUaGlja25lc3MgKyAncHggc29saWQgJyArIFRISVMucG9pbnRlckNvbG9yOw0KDQoJCQkvLyBzbGlkZXIgcG9pbnRlciBzcGFjZXINCgkJCXAuc2xkUHRyUy5zdHlsZS53aWR0aCA9IFRISVMuc2xpZGVyU2l6ZSArICdweCc7DQoJCQlwLnNsZFB0clMuc3R5bGUuaGVpZ2h0ID0gc2xpZGVyUHRyU3BhY2UgKyAncHgnOw0KDQoJCQkvLyB0aGUgQ2xvc2UgYnV0dG9uDQoJCQlmdW5jdGlvbiBzZXRCdG5Cb3JkZXIgKCkgew0KCQkJCXZhciBpbnNldENvbG9ycyA9IFRISVMuaW5zZXRDb2xvci5zcGxpdCgvXHMrLyk7DQoJCQkJdmFyIG91dHNldENvbG9yID0gaW5zZXRDb2xvcnMubGVuZ3RoIDwgMiA/IGluc2V0Q29sb3JzWzBdIDogaW5zZXRDb2xvcnNbMV0gKyAnICcgKyBpbnNldENvbG9yc1swXSArICcgJyArIGluc2V0Q29sb3JzWzBdICsgJyAnICsgaW5zZXRDb2xvcnNbMV07DQoJCQkJcC5idG4uc3R5bGUuYm9yZGVyQ29sb3IgPSBvdXRzZXRDb2xvcjsNCgkJCX0NCgkJCXAuYnRuLnN0eWxlLmRpc3BsYXkgPSBUSElTLmNsb3NhYmxlID8gJ2Jsb2NrJyA6ICdub25lJzsNCgkJCXAuYnRuLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJzsNCgkJCXAuYnRuLnN0eWxlLmxlZnQgPSBUSElTLnBhZGRpbmcgKyAncHgnOw0KCQkJcC5idG4uc3R5bGUuYm90dG9tID0gVEhJUy5wYWRkaW5nICsgJ3B4JzsNCgkJCXAuYnRuLnN0eWxlLnBhZGRpbmcgPSAnMCAxNXB4JzsNCgkJCXAuYnRuLnN0eWxlLmhlaWdodCA9IFRISVMuYnV0dG9uSGVpZ2h0ICsgJ3B4JzsNCgkJCXAuYnRuLnN0eWxlLmJvcmRlciA9IFRISVMuaW5zZXRXaWR0aCArICdweCBzb2xpZCc7DQoJCQlzZXRCdG5Cb3JkZXIoKTsNCgkJCXAuYnRuLnN0eWxlLmNvbG9yID0gVEhJUy5idXR0b25Db2xvcjsNCgkJCXAuYnRuLnN0eWxlLmZvbnQgPSAnMTJweCBzYW5zLXNlcmlmJzsNCgkJCXAuYnRuLnN0eWxlLnRleHRBbGlnbiA9ICdjZW50ZXInOw0KCQkJdHJ5IHsNCgkJCQlwLmJ0bi5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7DQoJCQl9IGNhdGNoKGVPbGRJRSkgew0KCQkJCXAuYnRuLnN0eWxlLmN1cnNvciA9ICdoYW5kJzsN
CgkJCX0NCgkJCXAuYnRuLm9ubW91c2Vkb3duID0gZnVuY3Rpb24gKCkgew0KCQkJCVRISVMuaGlkZSgpOw0KCQkJfTsNCgkJCXAuYnRuVC5zdHlsZS5saW5lSGVpZ2h0ID0gVEhJUy5idXR0b25IZWlnaHQgKyAncHgnOw0KCQkJcC5idG5ULmlubmVySFRNTCA9ICcnOw0KCQkJcC5idG5ULmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFRISVMuY2xvc2VUZXh0KSk7DQoNCgkJCS8vIHBsYWNlIHBvaW50ZXJzDQoJCQlyZWRyYXdQYWQoKTsNCgkJCXJlZHJhd1NsZCgpOw0KDQoJCQkvLyBJZiB3ZSBhcmUgY2hhbmdpbmcgdGhlIG93bmVyIHdpdGhvdXQgZmlyc3QgY2xvc2luZyB0aGUgcGlja2VyLA0KCQkJLy8gbWFrZSBzdXJlIHRvIGZpcnN0IGRlYWwgd2l0aCB0aGUgb2xkIG93bmVyDQoJCQlpZiAoanNjLnBpY2tlci5vd25lciAmJiBqc2MucGlja2VyLm93bmVyICE9PSBUSElTKSB7DQoJCQkJanNjLnVuc2V0Q2xhc3MoanNjLnBpY2tlci5vd25lci50YXJnZXRFbGVtZW50LCBUSElTLmFjdGl2ZUNsYXNzKTsNCgkJCX0NCg0KCQkJLy8gU2V0IHRoZSBuZXcgcGlja2VyIG93bmVyDQoJCQlqc2MucGlja2VyLm93bmVyID0gVEhJUzsNCg0KCQkJLy8gVGhlIHJlZHJhd1Bvc2l0aW9uKCkgbWV0aG9kIG5lZWRzIHBpY2tlci5vd25lciB0byBiZSBzZXQsIHRoYXQncyB3aHkgd2UgY2FsbCBpdCBoZXJlLA0KCQkJLy8gYWZ0ZXIgc2V0dGluZyB0aGUgb3duZXINCgkJCWlmIChqc2MuaXNFbGVtZW50VHlwZShjb250YWluZXIsICdib2R5JykpIHsNCgkJCQlqc2MucmVkcmF3UG9zaXRpb24oKTsNCgkJCX0gZWxzZSB7DQoJCQkJanNjLl9kcmF3UG9zaXRpb24oVEhJUywgMCwgMCwgJ3JlbGF0aXZlJywgZmFsc2UpOw0KCQkJfQ0KDQoJCQlpZiAocC53cmFwLnBhcmVudE5vZGUgIT0gY29udGFpbmVyKSB7DQoJCQkJY29udGFpbmVyLmFwcGVuZENoaWxkKHAud3JhcCk7DQoJCQl9DQoNCgkJCWpzYy5zZXRDbGFzcyhUSElTLnRhcmdldEVsZW1lbnQsIFRISVMuYWN0aXZlQ2xhc3MpOw0KCQl9DQoNCg0KCQlmdW5jdGlvbiByZWRyYXdQYWQgKCkgew0KCQkJLy8gcmVkcmF3IHRoZSBwYWQgcG9pbnRlcg0KCQkJc3dpdGNoIChqc2MuZ2V0UGFkWUNvbXBvbmVudChUSElTKSkgew0KCQkJY2FzZSAncyc6IHZhciB5Q29tcG9uZW50ID0gMTsgYnJlYWs7DQoJCQljYXNlICd2JzogdmFyIHlDb21wb25lbnQgPSAyOyBicmVhazsNCgkJCX0NCgkJCXZhciB4ID0gTWF0aC5yb3VuZCgoVEhJUy5oc3ZbMF0gLyAzNjApICogKFRISVMud2lkdGggLSAxKSk7DQoJCQl2YXIgeSA9IE1hdGgucm91bmQoKDEgLSBUSElTLmhzdlt5Q29tcG9uZW50XSAvIDEwMCkgKiAoVEhJUy5oZWlnaHQgLSAxKSk7DQoJCQl2YXIgY3Jvc3NPdXRlclNpemUgPSAoMiAqIFRISVMucG9pbnRlckJvcmRlcldpZHRoICsgVEhJUy5wb2ludGVyVGhpY2tuZXNzICsgMiAqIFRISVMuY3Jvc3NTaXplKTsNCgkJCXZhciBvZnMgPSAtTWF0aC5mbG9vcihjcm9zc091dGVyU2l6ZSAvIDIpOw0K
CQkJanNjLnBpY2tlci5jcm9zcy5zdHlsZS5sZWZ0ID0gKHggKyBvZnMpICsgJ3B4JzsNCgkJCWpzYy5waWNrZXIuY3Jvc3Muc3R5bGUudG9wID0gKHkgKyBvZnMpICsgJ3B4JzsNCg0KCQkJLy8gcmVkcmF3IHRoZSBzbGlkZXINCgkJCXN3aXRjaCAoanNjLmdldFNsaWRlckNvbXBvbmVudChUSElTKSkgew0KCQkJY2FzZSAncyc6DQoJCQkJdmFyIHJnYjEgPSBIU1ZfUkdCKFRISVMuaHN2WzBdLCAxMDAsIFRISVMuaHN2WzJdKTsNCgkJCQl2YXIgcmdiMiA9IEhTVl9SR0IoVEhJUy5oc3ZbMF0sIDAsIFRISVMuaHN2WzJdKTsNCgkJCQl2YXIgY29sb3IxID0gJ3JnYignICsNCgkJCQkJTWF0aC5yb3VuZChyZ2IxWzBdKSArICcsJyArDQoJCQkJCU1hdGgucm91bmQocmdiMVsxXSkgKyAnLCcgKw0KCQkJCQlNYXRoLnJvdW5kKHJnYjFbMl0pICsgJyknOw0KCQkJCXZhciBjb2xvcjIgPSAncmdiKCcgKw0KCQkJCQlNYXRoLnJvdW5kKHJnYjJbMF0pICsgJywnICsNCgkJCQkJTWF0aC5yb3VuZChyZ2IyWzFdKSArICcsJyArDQoJCQkJCU1hdGgucm91bmQocmdiMlsyXSkgKyAnKSc7DQoJCQkJanNjLnBpY2tlci5zbGRHcmFkLmRyYXcoVEhJUy5zbGlkZXJTaXplLCBUSElTLmhlaWdodCwgY29sb3IxLCBjb2xvcjIpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAndic6DQoJCQkJdmFyIHJnYiA9IEhTVl9SR0IoVEhJUy5oc3ZbMF0sIFRISVMuaHN2WzFdLCAxMDApOw0KCQkJCXZhciBjb2xvcjEgPSAncmdiKCcgKw0KCQkJCQlNYXRoLnJvdW5kKHJnYlswXSkgKyAnLCcgKw0KCQkJCQlNYXRoLnJvdW5kKHJnYlsxXSkgKyAnLCcgKw0KCQkJCQlNYXRoLnJvdW5kKHJnYlsyXSkgKyAnKSc7DQoJCQkJdmFyIGNvbG9yMiA9ICcjMDAwJzsNCgkJCQlqc2MucGlja2VyLnNsZEdyYWQuZHJhdyhUSElTLnNsaWRlclNpemUsIFRISVMuaGVpZ2h0LCBjb2xvcjEsIGNvbG9yMik7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCg0KDQoJCWZ1bmN0aW9uIHJlZHJhd1NsZCAoKSB7DQoJCQl2YXIgc2xkQ29tcG9uZW50ID0ganNjLmdldFNsaWRlckNvbXBvbmVudChUSElTKTsNCgkJCWlmIChzbGRDb21wb25lbnQpIHsNCgkJCQkvLyByZWRyYXcgdGhlIHNsaWRlciBwb2ludGVyDQoJCQkJc3dpdGNoIChzbGRDb21wb25lbnQpIHsNCgkJCQljYXNlICdzJzogdmFyIHlDb21wb25lbnQgPSAxOyBicmVhazsNCgkJCQljYXNlICd2JzogdmFyIHlDb21wb25lbnQgPSAyOyBicmVhazsNCgkJCQl9DQoJCQkJdmFyIHkgPSBNYXRoLnJvdW5kKCgxIC0gVEhJUy5oc3ZbeUNvbXBvbmVudF0gLyAxMDApICogKFRISVMuaGVpZ2h0IC0gMSkpOw0KCQkJCWpzYy5waWNrZXIuc2xkUHRyT0Iuc3R5bGUudG9wID0gKHkgLSAoMiAqIFRISVMucG9pbnRlckJvcmRlcldpZHRoICsgVEhJUy5wb2ludGVyVGhpY2tuZXNzKSAtIE1hdGguZmxvb3Ioc2xpZGVyUHRyU3BhY2UgLyAyKSkgKyAncHgnOw0KCQkJfQ0KCQl9DQoNCg0KCQlmdW5jdGlvbiBpc1BpY2tlck93bmVyICgpIHsNCgkJCXJldHVybiBqc2Mu
cGlja2VyICYmIGpzYy5waWNrZXIub3duZXIgPT09IFRISVM7DQoJCX0NCg0KDQoJCWZ1bmN0aW9uIGJsdXJWYWx1ZSAoKSB7DQoJCQlUSElTLmltcG9ydENvbG9yKCk7DQoJCX0NCg0KDQoJCS8vIEZpbmQgdGhlIHRhcmdldCBlbGVtZW50DQoJCWlmICh0eXBlb2YgdGFyZ2V0RWxlbWVudCA9PT0gJ3N0cmluZycpIHsNCgkJCXZhciBpZCA9IHRhcmdldEVsZW1lbnQ7DQoJCQl2YXIgZWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KCQkJaWYgKGVsbSkgew0KCQkJCXRoaXMudGFyZ2V0RWxlbWVudCA9IGVsbTsNCgkJCX0gZWxzZSB7DQoJCQkJanNjLndhcm4oJ0NvdWxkIG5vdCBmaW5kIHRhcmdldCBlbGVtZW50IHdpdGggSUQgXCcnICsgaWQgKyAnXCcnKTsNCgkJCX0NCgkJfSBlbHNlIGlmICh0YXJnZXRFbGVtZW50KSB7DQoJCQl0aGlzLnRhcmdldEVsZW1lbnQgPSB0YXJnZXRFbGVtZW50Ow0KCQl9IGVsc2Ugew0KCQkJanNjLndhcm4oJ0ludmFsaWQgdGFyZ2V0IGVsZW1lbnQ6IFwnJyArIHRhcmdldEVsZW1lbnQgKyAnXCcnKTsNCgkJfQ0KDQoJCWlmICh0aGlzLnRhcmdldEVsZW1lbnQuX2pzY0xpbmtlZEluc3RhbmNlKSB7DQoJCQlqc2Mud2FybignQ2Fubm90IGxpbmsganNjb2xvciB0d2ljZSB0byB0aGUgc2FtZSBlbGVtZW50LiBTa2lwcGluZy4nKTsNCgkJCXJldHVybjsNCgkJfQ0KCQl0aGlzLnRhcmdldEVsZW1lbnQuX2pzY0xpbmtlZEluc3RhbmNlID0gdGhpczsNCg0KCQkvLyBGaW5kIHRoZSB2YWx1ZSBlbGVtZW50DQoJCXRoaXMudmFsdWVFbGVtZW50ID0ganNjLmZldGNoRWxlbWVudCh0aGlzLnZhbHVlRWxlbWVudCk7DQoJCS8vIEZpbmQgdGhlIHN0eWxlIGVsZW1lbnQNCgkJdGhpcy5zdHlsZUVsZW1lbnQgPSBqc2MuZmV0Y2hFbGVtZW50KHRoaXMuc3R5bGVFbGVtZW50KTsNCg0KCQl2YXIgVEhJUyA9IHRoaXM7DQoJCXZhciBjb250YWluZXIgPQ0KCQkJdGhpcy5jb250YWluZXIgPw0KCQkJanNjLmZldGNoRWxlbWVudCh0aGlzLmNvbnRhaW5lcikgOg0KCQkJZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2JvZHknKVswXTsNCgkJdmFyIHNsaWRlclB0clNwYWNlID0gMzsgLy8gcHgNCg0KCQkvLyBGb3IgQlVUVE9OIGVsZW1lbnRzIGl0J3MgaW1wb3J0YW50IHRvIHN0b3AgdGhlbSBmcm9tIHNlbmRpbmcgdGhlIGZvcm0gd2hlbiBjbGlja2VkDQoJCS8vIChlLmcuIGluIFNhZmFyaSkNCgkJaWYgKGpzYy5pc0VsZW1lbnRUeXBlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ2J1dHRvbicpKSB7DQoJCQlpZiAodGhpcy50YXJnZXRFbGVtZW50Lm9uY2xpY2spIHsNCgkJCQl2YXIgb3JpZ0NhbGxiYWNrID0gdGhpcy50YXJnZXRFbGVtZW50Lm9uY2xpY2s7DQoJCQkJdGhpcy50YXJnZXRFbGVtZW50Lm9uY2xpY2sgPSBmdW5jdGlvbiAoZXZ0KSB7DQoJCQkJCW9yaWdDYWxsYmFjay5jYWxsKHRoaXMsIGV2dCk7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9Ow0KCQkJfSBlbHNlIHsNCgkJCQl0aGlzLnRhcmdldEVs
ZW1lbnQub25jbGljayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9Ow0KCQkJfQ0KCQl9DQoNCgkJLyoNCgkJdmFyIGVsbSA9IHRoaXMudGFyZ2V0RWxlbWVudDsNCgkJZG8gew0KCQkJLy8gSWYgdGhlIHRhcmdldCBlbGVtZW50IG9yIG9uZSBvZiBpdHMgb2Zmc2V0UGFyZW50cyBoYXMgZml4ZWQgcG9zaXRpb24sDQoJCQkvLyB0aGVuIHVzZSBmaXhlZCBwb3NpdGlvbmluZyBpbnN0ZWFkDQoJCQkvLw0KCQkJLy8gTm90ZTogSW4gRmlyZWZveCwgZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIG51bGwgaW4gYSBoaWRkZW4gaWZyYW1lLA0KCQkJLy8gdGhhdCdzIHdoeSB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSByZXR1cm5lZCBzdHlsZSBvYmplY3QgaXMgbm9uLWVtcHR5DQoJCQl2YXIgY3VyclN0eWxlID0ganNjLmdldFN0eWxlKGVsbSk7DQoJCQlpZiAoY3VyclN0eWxlICYmIGN1cnJTdHlsZS5wb3NpdGlvbi50b0xvd2VyQ2FzZSgpID09PSAnZml4ZWQnKSB7DQoJCQkJdGhpcy5maXhlZCA9IHRydWU7DQoJCQl9DQoNCgkJCWlmIChlbG0gIT09IHRoaXMudGFyZ2V0RWxlbWVudCkgew0KCQkJCS8vIGF0dGFjaCBvblBhcmVudFNjcm9sbCBzbyB0aGF0IHdlIGNhbiByZWNvbXB1dGUgdGhlIHBpY2tlciBwb3NpdGlvbg0KCQkJCS8vIHdoZW4gb25lIG9mIHRoZSBvZmZzZXRQYXJlbnRzIGlzIHNjcm9sbGVkDQoJCQkJaWYgKCFlbG0uX2pzY0V2ZW50c0F0dGFjaGVkKSB7DQoJCQkJCWpzYy5hdHRhY2hFdmVudChlbG0sICdzY3JvbGwnLCBqc2Mub25QYXJlbnRTY3JvbGwpOw0KCQkJCQllbG0uX2pzY0V2ZW50c0F0dGFjaGVkID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoJCX0gd2hpbGUgKChlbG0gPSBlbG0ub2Zmc2V0UGFyZW50KSAmJiAhanNjLmlzRWxlbWVudFR5cGUoZWxtLCAnYm9keScpKTsNCgkJKi8NCg0KCQkvLyB2YWx1ZUVsZW1lbnQNCgkJaWYgKHRoaXMudmFsdWVFbGVtZW50KSB7DQoJCQlpZiAoanNjLmlzRWxlbWVudFR5cGUodGhpcy52YWx1ZUVsZW1lbnQsICdpbnB1dCcpKSB7DQoJCQkJdmFyIHVwZGF0ZUZpZWxkID0gZnVuY3Rpb24gKCkgew0KCQkJCQlUSElTLmZyb21TdHJpbmcoVEhJUy52YWx1ZUVsZW1lbnQudmFsdWUsIGpzYy5sZWF2ZVZhbHVlKTsNCgkJCQkJanNjLmRpc3BhdGNoRmluZUNoYW5nZShUSElTKTsNCgkJCQl9Ow0KCQkJCWpzYy5hdHRhY2hFdmVudCh0aGlzLnZhbHVlRWxlbWVudCwgJ2tleXVwJywgdXBkYXRlRmllbGQpOw0KCQkJCWpzYy5hdHRhY2hFdmVudCh0aGlzLnZhbHVlRWxlbWVudCwgJ2lucHV0JywgdXBkYXRlRmllbGQpOw0KCQkJCWpzYy5hdHRhY2hFdmVudCh0aGlzLnZhbHVlRWxlbWVudCwgJ2JsdXInLCBibHVyVmFsdWUpOw0KCQkJCXRoaXMudmFsdWVFbGVtZW50LnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ29mZicpOw0KCQkJfQ0KCQl9DQoNCgkJLy8gc3R5bGVFbGVtZW50DQoJCWlmICh0aGlzLnN0eWxlRWxlbWVudCkgew0KCQkJdGhpcy5zdHlsZUVsZW1lbnQuX2pzY09yaWdT
dHlsZSA9IHsNCgkJCQliYWNrZ3JvdW5kSW1hZ2UgOiB0aGlzLnN0eWxlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UsDQoJCQkJYmFja2dyb3VuZENvbG9yIDogdGhpcy5zdHlsZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yLA0KCQkJCWNvbG9yIDogdGhpcy5zdHlsZUVsZW1lbnQuc3R5bGUuY29sb3INCgkJCX07DQoJCX0NCg0KCQlpZiAodGhpcy52YWx1ZSkgew0KCQkJLy8gVHJ5IHRvIHNldCB0aGUgY29sb3IgZnJvbSB0aGUgLnZhbHVlIG9wdGlvbiBhbmQgaWYgdW5zdWNjZXNzZnVsLA0KCQkJLy8gZXhwb3J0IHRoZSBjdXJyZW50IGNvbG9yDQoJCQl0aGlzLmZyb21TdHJpbmcodGhpcy52YWx1ZSkgfHwgdGhpcy5leHBvcnRDb2xvcigpOw0KCQl9IGVsc2Ugew0KCQkJdGhpcy5pbXBvcnRDb2xvcigpOw0KCQl9DQoJfQ0KDQp9Ow0KDQoNCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8vIFB1YmxpYyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzDQovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCg0KLy8gQnkgZGVmYXVsdCwgc2VhcmNoIGZvciBhbGwgZWxlbWVudHMgd2l0aCBjbGFzcz0ianNjb2xvciIgYW5kIGluc3RhbGwgYSBjb2xvciBwaWNrZXIgb24gdGhlbS4NCi8vDQovLyBZb3UgY2FuIGNoYW5nZSB3aGF0IGNsYXNzIG5hbWUgd2lsbCBiZSBsb29rZWQgZm9yIGJ5IHNldHRpbmcgdGhlIHByb3BlcnR5IGpzY29sb3IubG9va3VwQ2xhc3MNCi8vIGFueXdoZXJlIGluIHlvdXIgSFRNTCBkb2N1bWVudC4gVG8gY29tcGxldGVseSBkaXNhYmxlIHRoZSBhdXRvbWF0aWMgbG9va3VwLCBzZXQgaXQgdG8gbnVsbC4NCi8vDQpqc2MuanNjb2xvci5sb29rdXBDbGFzcyA9ICdqc2NvbG9yJzsNCg0KDQpqc2MuanNjb2xvci5pbnN0YWxsQnlDbGFzc05hbWUgPSBmdW5jdGlvbiAoY2xhc3NOYW1lKSB7DQoJdmFyIGlucHV0RWxtcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpOw0KCXZhciBidXR0b25FbG1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpOw0KDQoJanNjLnRyeUluc3RhbGxPbkVsZW1lbnRzKGlucHV0RWxtcywgY2xhc3NOYW1lKTsNCglqc2MudHJ5SW5zdGFsbE9uRWxlbWVudHMoYnV0dG9uRWxtcywgY2xhc3NOYW1lKTsNCn07DQoNCg0KanNjLnJlZ2lzdGVyKCk7DQoNCg0KcmV0dXJuIGpzYy5qc2NvbG9yOw0KDQoNCn0pKCk7IH0NCg==
endtext
strtofile(strconv(m.myvar,14),addbs(sys(2023))+"jscolor.js")
endfunc

function yshutdown
erase addbs(sys(2023))+"jscolor.js"
erase addbs(sys(2023))+"ycolorpicker.html")
quit  && in executable these files are erased just after start and the exe runs on memory only.
endfunc



Click on code to select [then copy] -click outside to deselect


*3*this builds a project, add files and compile into an ycolorPicker.exe
*ycolorpicker.prg above must be present here.

set defa to addbs(justpath(sys(16,1)))
set safe off
text to m.myvar noshow
screen=off
resource=off
safe=off
endtext
strtofile(m.myvar,"config.fpw")

BUILD PROJECT yproj FROM   ycolorPicker.prg,config.fpw recompile
BUILD EXE ycolorpicker FROM yproj recompile
dele file yproj*.*

run/n  ycolorPicker.exe


click on any cell of 30 to fire a colorpicker.
click on any cell of 30 to fire a colorpicker.

click on any cell of 30 to fire a colorpicker.

Click on code to select [then copy] -click outside to deselect


*4* created on thursday 05 of april 2018
*this code embed a big picture within text/endtext  desserving a top level form

_screen.windowstate=1
PUBLIC oform
oform=NEWOBJECT("form1")
oform.Show
read events
RETURN

*
DEFINE CLASS form1 AS form
	Height = 555
	Width = 946
	showWindow=2
	AutoCenter = .T.
	Caption = "Text/Endtext embedding big images in code"
	windowstate=2
	Name = "Form1"

	ADD OBJECT image1 AS image WITH ;
		Anchor = 15, ;
		Height = 61, ;
		Left = 0, ;
		Top = 0, ;
		Width = 229, ;
		Name = "Image1"

	PROCEDURE image1.Init
		with this
		.left=0
		.top=0
		.width=.parent.width
		.height=.parent.height
		.stretch=2
		endwith

		local m.myvar
		text to m.myvar noshow
		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
		endtext
		thisform.image1.pictureval=strconv(m.myvar,14)
	ENDPROC
	
	procedure destroy
	clea events
	endproc

ENDDEFINE
*
*-- EndDefine: form1


my blog editor is as max capacity with the big string !

my blog editor is as max capacity with the big string !


                     

Yousfi Benameur


Extending vfp command TEXT/ENDTEXT to big strings

Important:All Codes above are tested on VFP9SP2 & windows 10 pro 64 bits version 1709(fall creator) & IE11 emulation. Navigator: firefox - screen:32 pouces.

To be informed of the latest articles, subscribe:
Comment on this post