### SYNC-TRANSFER 2/5 -- mit sync-entpacken.bat entpacken ### Base64 - NICHT von Hand bearbeiten. ### FILE: index.html | 133481 PCFET0NUWVBFIGh0bWw+CjwhLS0gU3RhbmQ6IDIwMjYtMDUtMTQgLS0+CjxodG1sIGxhbmc9ImRl Ij4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3 cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAg ICA8dGl0bGU+VkkzIERHTC1QbGFudW5nPC90aXRsZT4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlw ZT0iaW1hZ2UveC1pY29uIiBocmVmPSJmYXZpY29uLmljbyI+CiAgICA8bGluayByZWw9InN0eWxl c2hlZXQiIGhyZWY9InN0eWxlLmNzcyI+CiAgICA8IS0tIFNoZWV0SlMgKHhsc3guZnVsbC5taW4u anMpIHdpcmQgbnVyIGltIEFkbWluLVRhYiAiSW1wb3J0IiBnZWJyYXVjaHQuCiAgICAgICAgIExv a2FsIGVpbmdlYnVuZGVuLCBrZWluIENETi4gTGl6ZW56OiBBcGFjaGUtMi4wIChTaGVldEpTIENF KS4gLS0+CiAgICA8c2NyaXB0IHNyYz0ieGxzeC5mdWxsLm1pbi5qcyIgZGVmZXI+PC9zY3JpcHQ+ CjwvaGVhZD4KPGJvZHk+CgogICAgPCEtLSA9PT09PT09PT09IFBlcnNvbi1Ib3Zlci1Qb3BvdmVy IChnbG9iYWwsIG51ciBlaW4gQ29udGFpbmVyKSA9PT09PT09PT09IC0tPgogICAgPGRpdiBpZD0i dmkzLXBlcnNvbi1wb3BvdmVyIiBjbGFzcz0idmkzLXBlcnNvbi1wb3BvdmVyIHZlcnN0ZWNrdCIg cm9sZT0idG9vbHRpcCIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2PgogICAgPCEtLSBLb21tZW50 YXItUG9wb3ZlcjogemVpZ3QgZGVuIEluaGFsdCBlaW5lciBaZWxsLU5vdGl6IGJlaW0gSG92ZXIu CiAgICAgICAgIFNhdWJlcmVyIEVyc2F0eiBmdWVyIGRlbiBlaW56ZWlsaWdlbiBuYXRpdmUgdGl0 bGUtVG9vbHRpcCwgZGVyCiAgICAgICAgIFNjaGljaHQgdW5kIEtvbW1lbnRhciB6dXNhbW1lbmts YXRzY2h0ZS4gR2VzY2hsb3NzZW5lciBIZWFkZXIsCiAgICAgICAgIE1laHJ6ZWlsZXItQm9keSwg Rm9vdGVyIG1pdCBWZXJmYXNzZXIgKyBEYXR1bS4gLS0+CiAgICA8ZGl2IGlkPSJ2aTMta29tbWVu dGFyLXBvcG92ZXIiIGNsYXNzPSJ2aTMta29tbWVudGFyLXBvcG92ZXIgdmVyc3RlY2t0IiByb2xl PSJ0b29sdGlwIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9kaXY+CgogICAgPCEtLSA9PT09PT09PT09 IEhpbndlaXMtQmFubmVyIChudXIgU1UgKyBHZXNhbXR2ZXJhbnR3b3J0bGljaCkgPT09PT09PT09 PSAtLT4KICAgIDxkaXYgaWQ9ImhpbndlaXMtYmFubmVyIiBjbGFzcz0iaGlud2Vpcy1iYW5uZXIg dmVyc3RlY2t0IiByb2xlPSJzdGF0dXMiIGFyaWEtbGl2ZT0icG9saXRlIj48L2Rpdj4KCiAgICA8 IS0tID09PT09PT09PT0gSGVhZGVyIG1pdCBOYXZpZ2F0aW9uID09PT09PT09PT0gLS0+CiAgICA8 aGVhZGVyIGlkPSJrb3BmbGVpc3RlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItbGlua3Mi PgogICAgICAgICAgICA8aDE+PGltZyBzcmM9Imljb25zL1ZJM19QbGFudW5nX0xvZ28ucG5nIiBh bHQ9IiIgY2xhc3M9ImhlYWRlci1sb2dvIj48c3BhbiBkYXRhLWJlej0iYXBwLnRpdGVsIj5WSTMg REdMLVBsYW51bmc8L3NwYW4+IDxzcGFuIGlkPSJhbnplaWdlLWphaHIiIGNsYXNzPSJoZWFkZXIt amFociI+PC9zcGFuPjwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPG5hdiBjbGFzcz0iaGVh ZGVyLW5hdiI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idG4gYWt0aXYiIGRhdGEt YW5zaWNodD0icGxhbnVuZyIgZGF0YS1iZXo9Im5hdi5wbGFudW5nIj5QbGFudW5nPC9idXR0b24+ CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idG4iIGRhdGEtYW5zaWNodD0id29jaGVu cGxhbiIgZGF0YS1iZXo9Im5hdi53b2NoZW5wbGFuIj5Xb2NoZW5wbGFuPC9idXR0b24+CiAgICAg ICAgICAgIDxidXR0b24gY2xhc3M9Im5hdi1idG4iIGRhdGEtYW5zaWNodD0icGVyc3BsYW4iIGRh dGEtYmV6PSJuYXYucGVyc3BsYW4iPlBlcnMuIFBsYW48L2J1dHRvbj4KICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0ibmF2LWJ0biIgZGF0YS1hbnNpY2h0PSJiZXNldHp1bmciIGlkPSJuYXYtYmVz ZXR6dW5nIiB0aXRsZT0iUHLDvGZ1bmcg4oCUIDQgV29jaGVuLVZvcnNjaGF1IiBkYXRhLWJlej0i bmF2LmJlc2V0enVuZyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+UHLDvGZ1bmc8L2J1dHRvbj4KICAg ICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibmF2LWJ0biIgZGF0YS1hbnNpY2h0PSJhZG1pbiIgICAg aWQ9Im5hdi1hZG1pbiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+QWRtaW5pc3RyYXRpb248L2J1dHRv bj4KICAgICAgICA8L25hdj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItcmVjaHRzIj4KICAg ICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWJ1Z3JlcG9ydCIgY2xhc3M9Imljb24tYnRuIGJ1Z3Jl cG9ydC1idG4iIHRpdGxlPSJCdWcgb2RlciBQcm9ibGVtIG1lbGRlbiI+QnVnUmVwb3J0PC9idXR0 b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1pbmZvIiBjbGFzcz0iaWNvbi1idG4iIHRp dGxlPSJJbmZvcm1hdGlvbmVuICZhbXA7IEhpbGZlIj5JbmZvPC9idXR0b24+CiAgICAgICAgICAg IDxzcGFuIGlkPSJiZW51dHplci13cmFwIiBjbGFzcz0iYmVudXR6ZXItd3JhcCI+CiAgICAgICAg ICAgICAgICA8c3BhbiBpZD0ibWVpbi1hdmF0YXItYnRuIiBjbGFzcz0ibWVpbi1hdmF0YXItYnRu IHZlcnN0ZWNrdCIgcm9sZT0iYnV0dG9uIiB0YWJpbmRleD0iMCIgdGl0bGU9Ik1laW4gUHJvZmls YmlsZCBiZWFyYmVpdGVuIiBhcmlhLWxhYmVsPSJNZWluIFByb2ZpbGJpbGQgYmVhcmJlaXRlbiI+ PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImJlbnV0emVyLWFuemVpZ2UiIGNsYXNz PSJiZW51dHplci1iYWRnZSI+PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9Imhpbndl aXMtYmFkZ2UiIGNsYXNzPSJoaW53ZWlzLWJhZGdlIHZlcnN0ZWNrdCIgcm9sZT0iYnV0dG9uIiB0 YWJpbmRleD0iMCIgYXJpYS1sYWJlbD0iT2ZmZW5lIEhpbndlaXNlIGFuemVpZ2VuIj48L3NwYW4+ CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXRoZW1lIiBj bGFzcz0iaWNvbi1idG4iIHRpdGxlPSJUYWcvTmFjaHQgdW1zY2hhbHRlbiI+TmFjaHQ8L2J1dHRv bj4KICAgICAgICA8L2Rpdj4KICAgIDwvaGVhZGVyPgoKICAgIDwhLS0gPT09PT09PT09PSBBTlNJ Q0hUOiBQTEFOVU5HID09PT09PT09PT0gLS0+CiAgICA8ZGl2IGlkPSJhbnNpY2h0LXBsYW51bmci IGNsYXNzPSJhbnNpY2h0Ij4KICAgICAgICA8IS0tIFBsYW51bmdzZ3JpZCDigJQgRXhjZWwtdHJl dWVzIExheW91dCAtLT4KICAgICAgICA8ZGl2IGlkPSJwbGFudW5nLWNvbnRhaW5lciI+CiAgICAg ICAgICAgIDwhLS0gRml4aWVydGUgbGlua2UgU3BhbHRlIC0tPgogICAgICAgICAgICA8ZGl2IGlk PSJuYW1lbi1zcGFsdGUiPgogICAgICAgICAgICAgICAgPCEtLSBLb3BmYmVyZWljaCBsaW5rczog SGV1dGUtQmFubmVyIHVlYmVybGFnZXJ0IGRpZSBkcmVpIERhdHVtc3plaWxlbiAtLT4KICAgICAg ICAgICAgICAgIDxkaXYgaWQ9ImtvcGYtbGlua3MiPgogICAgICAgICAgICAgICAgICAgIDwhLS0g UGxhdHpoYWx0ZXItWmVpbGVuIGZ1ZXIgSG9laGVuLVN5bmMgbWl0IEtvcGYgcmVjaHRzLgogICAg ICAgICAgICAgICAgICAgICAgICAgSmVkZSBaZWlsZSBsaW5rcyBlbnRzcHJpY2h0IEVYQUtUIGVp bmVyIFplaWxlIHJlY2h0cwogICAgICAgICAgICAgICAgICAgICAgICAgKGdsZWljaGUgSG9laGUh KSwgc29uc3QgdmVyc2NoaWVidCBzaWNoIGRpZSBOYW1lbnNzcGFsdGUKICAgICAgICAgICAgICAg ICAgICAgICAgIGdlZ2VudWViZXIgZGVtIERhdGVuLUdyaWQuIC0tPgogICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImtvcGYtemVpbGUga3otZGF0dW0iPjwvZGl2PiAgICAgICAgIDwhLS0g PSAjZGF0dW0temVpbGUtdGFnICgyMHB4KSAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJrb3BmLXplaWxlIGt6LXdvY2hlbnRhZyI+PC9kaXY+ICAgICA8IS0tID0gI2RhdHVtLXpl aWxlLXdvY2hlbnRhZyAoMjBweCkgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i a29wZi16ZWlsZSBrei1hbmxhc3MiPjwvZGl2PiAgICAgICAgPCEtLSA9ICNkYXR1bS16ZWlsZS1h bmxhc3MgKDM4cHgsIE1haSAyMDI2IG1pdCBFdmVudHMga29tYmluaWVydCkgLS0+CiAgICAgICAg ICAgICAgICAgICAgPCEtLSBPdmVybGF5OiBIZXV0ZS1MZWlzdGUgKEJ1dHRvbiArIERhdHVtICsg V29jaGVudGFnKSBkZWNrdAogICAgICAgICAgICAgICAgICAgICAgICAgZGllIG9iZXJlbiBQbGF0 emhhbHRlci1aZWlsZW4gYWIgKGt6LWRhdHVtK3dvY2hlbnRhZythbmxhc3MpLiAtLT4KICAgICAg ICAgICAgICAgICAgICA8ZGl2IGlkPSJrbC1oZXV0ZS1iYW5uZXIiPgogICAgICAgICAgICAgICAg ICAgICAgICA8YnV0dG9uIGlkPSJidG4taGV1dGUiIGNsYXNzPSJrbC1oZXV0ZS1idXR0b24iIHRp dGxlPSJIZXV0ZSDigJQgc3ByaW5ndCBpbiBkZXIgUGxhbnRhZmVsIHNvZm9ydCB6dW0gaGV1dGln ZW4gRGF0dW0gdW5kIHNjcm9sbHQgZGllIEFuc2ljaHQgZG9ydGhpbi4gUHJha3Rpc2NoLCB1bSBu YWNoIGRlbSBCbMOkdHRlcm4gaW4gYW5kZXJlIFdvY2hlbiBvZGVyIE1vbmF0ZSBzY2huZWxsIHp1 ciBha3R1ZWxsZW4gV29jaGUgenVyw7xja3p1a2VocmVuLiI+SGV1dGU8L2J1dHRvbj4KICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXNjaGljaHR0ZWFtIiBjbGFzcz0ia2wt aGV1dGUtYnV0dG9uIiB0aXRsZT0iVGVhbSDigJQgTWVpbiBTY2hpY2h0LVRlYW0gZsO8ciBkaWUg bsOkY2hzdGVuIDE0IFRhZ2U6IHplaWd0IGFsbGUgUGVyc29uZW4gYXVzIGRlaW5lciBTY2hpY2h0 LVJvdGF0aW9uIChiYXNpZXJlbmQgYXVmIGRlaW5lciBoZXV0aWdlbiBTY2hpY2h0IEZyw7xoL1Nw w6R0L05hY2h0KS4gUHJha3Rpc2NoIGbDvHIgU2NoaWNodHRhdXNjaC1BbmZyYWdlbiB1bmQgdW0g enUgc2VoZW4sIHdlciB3YW5uIG1pdCBkaXIgYXJiZWl0ZXQuIE51ciBzaWNodGJhciwgd2VubiBk ZWluZSBOVy1LZW5udW5nIGVpbmVyIFBsYW4tUGVyc29uIHp1Z2VvcmRuZXQgaXN0LiIgYXJpYS1s YWJlbD0iTWVpbiBTY2hpY2h0LVRlYW0g4oCUIDE0LVRhZ2Utw5xiZXJzaWNodCI+VGVhbTwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJrbC1oZXV0ZS1pbmZvIj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImtsLWhldXRlLWRhdHVtLXR4 dCIgaWQ9ImtsLWhldXRlLWRhdHVtIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImtsLWhldXRlLXd0YWctdHh0IiBpZD0ia2wtaGV1dGUtd3RhZyI+PC9kaXY+ CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDwhLS0gWmVpbGUgNTogU3TDpHJrZSAtLT4KICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJrb3BmLXplaWxlIGt6LXN0YWVya2UiPgogICAgICAgICAg ICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ia2wtbGFiZWwiPlN0w6Rya2U8L3NwYW4+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrbC13ZXJ0Ij5ER0wgaW4gVkkgMzwvc3Bh bj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFpl aWxlbiA1LTExOiBTY2hpY2h0Zm9sZ2UgcHJvIFN0YW5kb3J0IC0tPgogICAgICAgICAgICAgICAg ICAgIDxkaXYgaWQ9InNjaGljaHRmb2xnZS1saW5rcyI+CiAgICAgICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImtvcGYtemVpbGUga3otc2NoaWNodGZvbGdlIGt6LXNmLWVyc3RlIj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrbC1sYWJlbCI+U2NoaWNodDwv c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJrbC13ZXJ0IiBk YXRhLXN0YW5kb3J0PSIwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICA8IS0tIFBlcnNvbmVubGlzdGUgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJu YW1lbi1saXN0ZSIgcm9sZT0icm93aGVhZGVyIiBhcmlhLWxhYmVsPSJQZXJzb25lbmxpc3RlIGRl ciBQbGFudGFmZWwiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0g U2Nyb2xsYmFyZXIgcmVjaHRlciBCZXJlaWNoLiByb2xlPWdyaWQgbWFjaHQgZGllIFN0cnVrdHVy IGZ1ZXIKICAgICAgICAgICAgICAgICBTY3JlZW5yZWFkZXIgZXhwbGl6aXQgKFNwcmludCA2YSAy MDI2LTA1LTI5KS4gVGFiLU5hdmlnYXRpb24KICAgICAgICAgICAgICAgICBkZXIgZWluemVsbmVu IFplbGxlbiBrb21tdCBpbiBTcHJpbnQgNmIgKEdyaWQtUmVmYWN0b3IpLiAtLT4KICAgICAgICAg ICAgPGRpdiBpZD0iZ3JpZC1zY3JvbGwtY29udGFpbmVyIiByb2xlPSJncmlkIiBhcmlhLWxhYmVs PSJEaWVuc3RwbGFuLVRhZmVsIj4KICAgICAgICAgICAgICAgIDwhLS0gS29wZmJlcmVpY2ggcmVj aHRzIC0tPgogICAgICAgICAgICAgICAgPGRpdiBpZD0ia29wZi1yZWNodHMiIHJvbGU9InJvd2dy b3VwIj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFplaWxlIDE6IERhdHVtIC0tPgogICAgICAg ICAgICAgICAgICAgIDxkaXYgaWQ9ImRhdHVtLXplaWxlLXRhZyIgY2xhc3M9ImtvcGYtZGF0ZW4t emVpbGUiIHJvbGU9InJvdyIgYXJpYS1sYWJlbD0iVGFnZXNkYXR1bSI+PC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgPCEtLSBaZWlsZSAyOiBXb2NoZW50YWcgLS0+CiAgICAgICAgICAgICAgICAg ICAgPGRpdiBpZD0iZGF0dW0temVpbGUtd29jaGVudGFnIiBjbGFzcz0ia29wZi1kYXRlbi16ZWls ZSIgcm9sZT0icm93IiBhcmlhLWxhYmVsPSJXb2NoZW50YWciPjwvZGl2PgogICAgICAgICAgICAg ICAgICAgIDwhLS0gWmVpbGUgMzogSWNvbnMgJiBBbmzDpHNzZSAoRmVpZXJ0YWcvU29uZGVydGVy bWluL0dlYnVydHN0YWcgaW4gZWluZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGtvbXBha3Rl biBaZWlsZSwgZGF6dSBkaWUgRmVyaWVuLVJhbmdlLUJhciBhbHMgT3ZlcmxheSkgLS0+CiAgICAg ICAgICAgICAgICAgICAgPGRpdiBpZD0iZGF0dW0temVpbGUtYW5sYXNzIiBjbGFzcz0ia29wZi1k YXRlbi16ZWlsZSIgcm9sZT0icm93IiBhcmlhLWxhYmVsPSJBbmzDpHNzZSI+PC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgPCEtLSBaZWlsZSA1OiBTdMOkcmtlIEZ8U3xOIC0tPgogICAgICAgICAg ICAgICAgICAgIDxkaXYgaWQ9InN0YWVya2UtemVpbGUiIGNsYXNzPSJrb3BmLWRhdGVuLXplaWxl IiByb2xlPSJyb3ciIGFyaWEtbGFiZWw9IlNjaGljaHRzdMOkcmtlIj48L2Rpdj4KICAgICAgICAg ICAgICAgICAgICA8IS0tIFplaWxlbiA1KzogU2NoaWNodGZvbGdlIHBybyBTdGFuZG9ydCAtLT4K ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzY2hpY2h0Zm9sZ2UtcmVjaHRzIiByb2xlPSJy b3dncm91cCIgYXJpYS1sYWJlbD0iU2NoaWNodGZvbGdlIHBybyBTdGFuZG9ydCI+PC9kaXY+CiAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwhLS0gRGF0ZW4tR3JpZCAtLT4K ICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImdyaWQtZGF0ZW4iIHJvbGU9InJvd2dyb3VwIiBhcmlh LWxhYmVsPSJTY2hpY2h0ZW4gZGVyIFBlcnNvbmVuIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gWmVsbGVuLUVkaXRvciAtLT4KICAgICAgICA8 ZGl2IGlkPSJ6ZWxsLWVkaXRvciIgY2xhc3M9InZlcnN0ZWNrdCI+CiAgICAgICAgICAgIDxzZWxl Y3QgaWQ9ImVkaXRvci1hdXN3YWhsIiBzaXplPSIxMCI+PC9zZWxlY3Q+CiAgICAgICAgICAgIDxk aXYgY2xhc3M9ImVkaXRvci1rb21tZW50YXIiPgogICAgICAgICAgICAgICAgPCEtLSBWZXJsYXVm c2xpc3RlOiBnZXJlbmRlcnQgdm9uIGVkaXRvcktvbW1lbnRhclZlcmxhdWZSZW5kZXJuKCkuCiAg ICAgICAgICAgICAgICAgICAgIFBybyBFaW50cmFnOiBUZXh0LCBNZXRhLVplaWxlIChWZXJmYXNz ZXIgKyBaZWl0KSwgb3B0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgTG9lc2NoLUljb24gZnVl ciBTdXBlclVzZXIvR2VzYW10dmVyYW50d29ydGxpY2hlLiAtLT4KICAgICAgICAgICAgICAgIDxk aXYgaWQ9ImVkaXRvci1rb21tZW50YXItdmVybGF1ZiIgY2xhc3M9ImVkaXRvci1rb21tZW50YXIt dmVybGF1ZiI+PC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImVk aXRvci1rb21tZW50YXItaW5wdXQiIGNsYXNzPSJmb3JtLWlucHV0IiBwbGFjZWhvbGRlcj0iTmV1 ZXIgS29tbWVudGFyLi4uIiBzdHlsZT0id2lkdGg6MTAwJTtmb250LXNpemU6MTFweDtwYWRkaW5n OjRweCA2cHgiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWRpdG9yLWtvbW1lbnRhci1i dG5zIj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4ta29tbWVudGFyLWhpbnp1 IiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIGJ0bi1rbGVpbiI+SGluenVmw7xnZW48L2J1dHRvbj4K ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4K ICAgIDwvZGl2PgoKICAgIDwhLS0gPT09PT09PT09PSBBTlNJQ0hUOiBXT0NIRU5QTEFOID09PT09 PT09PT0gLS0+CiAgICA8ZGl2IGlkPSJhbnNpY2h0LXdvY2hlbnBsYW4iIGNsYXNzPSJhbnNpY2h0 IHZlcnN0ZWNrdCI+CiAgICAgICAgPGRpdiBjbGFzcz0id3AtbGF5b3V0Ij4KICAgICAgICAgICAg PCEtLSBUb29sYmFyIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cC10b29sYmFyIj4KICAg ICAgICAgICAgICAgIDxidXR0b24gaWQ9IndwLXZvcndvY2hlIiBjbGFzcz0idG9vbGJhci1idG4i PiZsYXJyOyBWb3J3b2NoZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0id3At YWt0dWVsbGUtd29jaGUiIGNsYXNzPSJ0b29sYmFyLWJ0biI+QWt0dWVsbGUgV29jaGU8L2J1dHRv bj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IndwLW5hZWNoc3RlLXdvY2hlIiBjbGFzcz0i dG9vbGJhci1idG4iPk7DpGNoc3RlIFdvY2hlICZyYXJyOzwvYnV0dG9uPgogICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0idG9vbGJhci10cmVubmVyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxz cGFuIGlkPSJ3cC16ZWl0cmF1bSIgY2xhc3M9IndwLXplaXRyYXVtLWFuemVpZ2UiPjwvc3Bhbj4K ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IndwLWRydWNrZW4iIGNsYXNzPSJ0b29sYmFyLWJ0 biIgc3R5bGU9Im1hcmdpbi1sZWZ0OmF1dG8iIHRpdGxlPSJXb2NoZW5wbGFuIGRydWNrZW4gKGVp bmUgU2VpdGUpIj5EcnVja2VuPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAg ICA8IS0tIFdvY2hlbnBsYW4tUmVuZGVyLVppZWw6IHdvY2hlbnBsYW4uanMgZXJzZXR6dCBkZW4g SW5oYWx0IHZvbgogICAgICAgICAgICAgICAgIC53cC1zY3JvbGwgYmVpIGplZGVtIFJlbmRlciBk dXJjaCAud3Atc2VpdGUgKFRhZ2Jsb2NrLUxheW91dCkuCiAgICAgICAgICAgICAgICAgRnJ1ZWhl ciBzdGFuZCBoaWVyIGVpbmUgc3RhdGlzY2hlIDx0YWJsZT4sIGRpZSBzb2ZvcnQKICAgICAgICAg ICAgICAgICB1ZWJlcnNjaHJpZWJlbiB3dXJkZSDigJQgZW50ZmVybnQgKEF1ZGl0IDIwMjYtMDYt MTUpLiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0id3Atc2Nyb2xsIj48L2Rpdj4KICAgICAg ICAgICAgPCEtLSBMZWdlbmRlIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3cC1sZWdlbmRl Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3cC1sZWctaXRlbSI+PHNwYW4gY2xhc3M9 IndwLWxlZy1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWZhcmJlLWZydWVoKSI+PC9zcGFu PiBGcsO8aGRpZW5zdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3cC1sZWct aXRlbSI+PHNwYW4gY2xhc3M9IndwLWxlZy1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWZh cmJlLXNwYWV0KSI+PC9zcGFuPiBTcMOkdGRpZW5zdDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxz cGFuIGNsYXNzPSJ3cC1sZWctaXRlbSI+PHNwYW4gY2xhc3M9IndwLWxlZy1kb3QiIHN0eWxlPSJi YWNrZ3JvdW5kOnZhcigtLWZhcmJlLW5hY2h0KSI+PC9zcGFuPiBOYWNodGRpZW5zdDwvc3Bhbj4K ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tID09 PT09PT09PT0gQU5TSUNIVDogUEVSU8OWTkxJQ0hFUiBQTEFOID09PT09PT09PT0gLS0+CiAgICA8 ZGl2IGlkPSJhbnNpY2h0LXBlcnNwbGFuIiBjbGFzcz0iYW5zaWNodCB2ZXJzdGVja3QiPgogICAg ICAgIDxkaXYgY2xhc3M9InBwLWxheW91dCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBwLXRv b2xiYXIiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0icHAtcGVyc29uLWF1c3dhaGwiIHN0 eWxlPSJmb250LXdlaWdodDo2MDA7bWFyZ2luLXJpZ2h0OjZweCI+UGVyc29uOjwvbGFiZWw+CiAg ICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJwcC1wZXJzb24tYXVzd2FobCIgY2xhc3M9ImZvcm0t aW5wdXQiIHN0eWxlPSJ3aWR0aDoyNTBweCI+PC9zZWxlY3Q+CiAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJ0b29sYmFyLXRyZW5uZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGJ1dHRvbiBp ZD0icHAtZHJ1Y2tlbiIgY2xhc3M9InRvb2xiYXItYnRuIj5EcnVja2VuPC9idXR0b24+CiAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcC1zY3JvbGwiIGlkPSJwcC1z Y3JvbGwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHAtdGl0ZWwiIGlkPSJwcC10aXRl bCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcC1tb25hdGUiIGlkPSJwcC1t b25hdGUiPjwvZGl2PgogICAgICAgICAgICAgICAgPCEtLSBadXNhbW1lbmZhc3N1bmcgLS0+CiAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcC1zdW1tYXJ5IiBpZD0icHAtc3VtbWFyeSI+PC9k aXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPCEt LSA9PT09PT09PT09IEFOU0lDSFQ6IEJFU0VUWlVOR1NLT05UUk9MTEUgPT09PT09PT09PSAtLT4K ICAgIDxkaXYgaWQ9ImFuc2ljaHQtYmVzZXR6dW5nIiBjbGFzcz0iYW5zaWNodCB2ZXJzdGVja3Qi PgogICAgICAgIDxkaXYgY2xhc3M9ImJrLWxheW91dCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9 ImJrLWtvcGYiPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aDIg c3R5bGU9Im1hcmdpbjowIiBkYXRhLWJlej0ibmF2LmJlc2V0enVuZyI+UHLDvGZ1bmc8L2gyPgog ICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigt LXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NHB4IiBpZD0iYmstdW50ZXJ0aXRlbCI+NC1Xb2NoZW4t Vm9yc2NoYXUgYWIgaGV1dGUg4oCUIEFtcGVsOiDiiaQxIEZrID0gcm90LCA9MiBGayA9IGdlbGIs IOKJpTMgRmsgPSBncsO8biBwcm8gU2NoaWNodDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiay1rb3BmLXN0YXRzIj4KICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJiay1rcGkiIGlkPSJiay1rcGktZ2VzYW10Ij48ZGl2IGNsYXNz PSJiay1rcGktemFobCI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iYmsta3BpLWxhYmVsIj5UYWdlIGlt IEZlbnN0ZXI8L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiay1r cGkgYmsta3BpLXdhcm4iIGlkPSJiay1rcGktZGVmaXppdCI+PGRpdiBjbGFzcz0iYmsta3BpLXph aGwiPuKAkzwvZGl2PjxkaXYgY2xhc3M9ImJrLWtwaS1sYWJlbCI+cm90ICjiiaQxKTwvZGl2Pjwv ZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJrLWtwaSBiay1rcGktb2siIGlk PSJiay1rcGktb2siPjxkaXYgY2xhc3M9ImJrLWtwaS16YWhsIj7igJM8L2Rpdj48ZGl2IGNsYXNz PSJiay1rcGktbGFiZWwiPmdyw7xuICjiiaUzKTwvZGl2PjwvZGl2PgogICAgICAgICAgICAgICAg PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJiay1iZWdydWVz c3VuZyI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJrLWluaGFsdCIgaWQ9ImJrLWlu aGFsdCI+CiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjQwcHg7dGV4dC1hbGln bjpjZW50ZXI7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPldpcmQgZ2VsYWRlbiDigKY8L2Rpdj4K ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tID09 PT09PT09PT0gQU5TSUNIVDogQURNSU5JU1RSQVRJT04gPT09PT09PT09PSAtLT4KICAgIDxkaXYg aWQ9ImFuc2ljaHQtYWRtaW4iIGNsYXNzPSJhbnNpY2h0IHZlcnN0ZWNrdCI+CiAgICAgICAgPGRp diBjbGFzcz0iYWRtaW4tbGF5b3V0Ij4KICAgICAgICAgICAgPCEtLSBBZG1pbi1TaWRlYmFyOiBD bHVzdGVyIG1pdCBVZWJlcnNjaHJpZnRlbiAodHlwb2dyYWZpc2NoIGdydXBwaWVydCwgb2huZSBJ Y29ucykuCiAgICAgICAgICAgICAgICAgR3J1cHBlbiBmb2xnZW4gbWVudGFsZW4gS2F0ZWdvcmll bjogIldlciBhcmJlaXRldCBoaWVyPyIgKFBlcnNvbmVuKQogICAgICAgICAgICAgICAgIC0+ICJX aWUgaXN0IGVzIG9yZ2FuaXNpZXJ0PyIgKE9yZ2FuaXNhdGlvbikgLT4gSW5oYWx0ZSAoU2NoaWNo dGVuLAogICAgICAgICAgICAgICAgIEthbGVuZGVyKSAtPiBLb21tdW5pa2F0aW9uIC0+IFNpY2hl cmhlaXQgKFJlY2h0ZSkgLT4gRGFyc3RlbGx1bmcgLT4gU3lzdGVtLgogICAgICAgICAgICAgICAg IGRhdGEtYWRtaW4tdGFiLVdlcnRlIHVuZCBUYWItSURzIGJsZWliZW4gdW52ZXJhZW5kZXJ0IOKA lCBudXIgR3J1cHBpZXJ1bmcKICAgICAgICAgICAgICAgICB1bmQgUmVpaGVuZm9sZ2Ugd3VyZGVu IGltIFBoYXNlLTMtUmVkZXNpZ24gbmV1IHNvcnRpZXJ0LiAtLT4KICAgICAgICAgICAgPGFzaWRl IGNsYXNzPSJhZG1pbi1zaWRlYmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LW5hdi1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iYWRtaW4tbmF2LXRp dGVsIj5QZXJzb25lbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRt aW4tbmF2LWJ0biBha3RpdiIgZGF0YS1hZG1pbi10YWI9InBlcnNvbmFsIj5QZXJzb25hbHZlcndh bHR1bmc8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhZG1pbi1u YXYtYnRuIiBkYXRhLWFkbWluLXRhYj0ibGlzdGVuIiBpZD0ibmF2LWxpc3RlbiI+RGllbnN0Z3Jh ZGUgJmFtcDsgRnVua3Rpb25lbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tbmF2LWdydXBwZSI+CiAgICAgICAgICAgICAg ICAgICAgPGgzIGNsYXNzPSJhZG1pbi1uYXYtdGl0ZWwiPk9yZ2FuaXNhdGlvbjwvaDM+CiAgICAg ICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10 YWI9ImdydXBwZW4iPkRpZW5zdGdydXBwZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIGNsYXNzPSJhZG1pbi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0ic3RhbmRvcnRlIj5T dGFuZG9ydGUgJmFtcDsgU2NoaWNodGZvbGdlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAg PGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9Im1pa3JvdGVhbXMi Pk1pa3JvdGVhbXM8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImFkbWluLW5hdi1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAgIDxo MyBjbGFzcz0iYWRtaW4tbmF2LXRpdGVsIj5TY2hpY2h0LUthdGFsb2c8L2gzPgogICAgICAgICAg ICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJz Y2hpY2h0Y29kZXMiPlNjaGljaHRjb2RlcyAmYW1wOyBGYXJiZW48L2J1dHRvbj4KICAgICAgICAg ICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLW5hdi1ncnVw cGUiPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0iYWRtaW4tbmF2LXRpdGVsIj5LYWxl bmRlcjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0 biIgZGF0YS1hZG1pbi10YWI9ImZlaWVydGFnZSI+RmVpZXJ0YWdlICZhbXA7IEZlcmllbjwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRh dGEtYWRtaW4tdGFiPSJzb25kZXJ0ZXJtaW5lIj5Tb25kZXJ0ZXJtaW5lPC9idXR0b24+CiAgICAg ICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1uYXYt Z3J1cHBlIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImFkbWluLW5hdi10aXRlbCI+ S29tbXVuaWthdGlvbjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRt aW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9ImVtYWlsdm9ybGFnZW4iIGlkPSJuYXYtZW1haWx2 b3JsYWdlbiI+RS1NYWlsLVZvcmxhZ2VuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9Im1pdHRlaWx1bmdlbiIg aWQ9Im5hdi1taXR0ZWlsdW5nZW4iPk1pdHRlaWx1bmdlbjwvYnV0dG9uPgogICAgICAgICAgICAg ICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJiZXpl aWNobnVuZ2VuIiBpZD0ibmF2LWJlemVpY2hudW5nZW4iPkJlc2NocmlmdHVuZ2VuICZhbXA7IEhp bGZldGV4dGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImFkbWluLW5hdi1ncnVwcGUiPgogICAgICAgICAgICAgICAgICAgIDxoMyBj bGFzcz0iYWRtaW4tbmF2LXRpdGVsIj5SZWNodGUgJmFtcDsgUm9sbGVuPC9oMz4KICAgICAgICAg ICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhZG1pbi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0i c3VwZXJ1c2VyIiBpZD0ibmF2LXN1cGVydXNlciI+UmVjaHRlICZhbXA7IFNpY2h0YmFya2VpdDwv YnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4i IGRhdGEtYWRtaW4tdGFiPSJzdGFuZGFyZHJlY2h0ZSIgaWQ9Im5hdi1zdGFuZGFyZHJlY2h0ZSI+ U3RhbmRhcmRyZWNodGUgKFVzZXIpPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1uYXYtZ3J1cHBlIj4KICAgICAgICAgICAg ICAgICAgICA8aDMgY2xhc3M9ImFkbWluLW5hdi10aXRlbCI+RGFyc3RlbGx1bmc8L2gzPgogICAg ICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4t dGFiPSJlcnNjaGVpbnVuZ3NiaWxkIiBpZD0ibmF2LWVyc2NoZWludW5nc2JpbGQiPkVyc2NoZWlu dW5nc2JpbGQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJhZG1p bi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0ic3RhdGlzdGlrLWxheW91dCIgaWQ9Im5hdi1zdGF0 aXN0aWstbGF5b3V0Ij5TdGF0aXN0aWstTGF5b3V0PC9idXR0b24+CiAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9InN0YXRpc3Rp ay1idWlsZGVyIiBpZD0ibmF2LXN0YXRpc3Rpay1idWlsZGVyIj5TdGF0aXN0aWstQnVpbGRlcjwv YnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFz cz0iYWRtaW4tbmF2LWdydXBwZSI+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJhZG1p bi1uYXYtdGl0ZWwiPlN5c3RlbTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFz cz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9ImVpbnN0ZWxsdW5nZW4iPktvbmZpZ3Vy YXRpb24gJmFtcDsgRnVua3Rpb25lbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxidXR0 b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJiYWNrdXBzIj5CYWNrdXBz PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0 biIgZGF0YS1hZG1pbi10YWI9ImhpbndlaXNlLXByb3Rva29sbCIgaWQ9Im5hdi1oaW53ZWlzZS1w cm90b2tvbGwiPkhpbndlaXNlLVByb3Rva29sbDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAg IDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJpbXBvcnQiIGlk PSJuYXYtaW1wb3J0Ij5FeGNlbC1JbXBvcnQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIGNsYXNzPSJhZG1pbi1uYXYtYnRuIiBkYXRhLWFkbWluLXRhYj0iZXhwb3J0IiBpZD0i bmF2LWV4cG9ydCI+RXhjZWwtRXhwb3J0PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0iYWRtaW4tbmF2LWJ0biIgZGF0YS1hZG1pbi10YWI9InRlc3RkYXRlbiI+VGVz dGRhdGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8 ZGl2IGNsYXNzPSJhZG1pbi1uYXYtZ3J1cHBlIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xh c3M9ImFkbWluLW5hdi10aXRlbCI+QWt0dWFsaXNpZXJ1bmc8L2gzPgogICAgICAgICAgICAgICAg ICAgIDxidXR0b24gY2xhc3M9ImFkbWluLW5hdi1idG4iIGRhdGEtYWRtaW4tdGFiPSJ1cGRhdGUi IGlkPSJuYXYtdXBkYXRlIj5VcGRhdGVzICZhbXA7IFNlbGJzdHRlc3Q8L2J1dHRvbj4KICAgICAg ICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2FzaWRlPgoKICAgICAgICAgICAgPCEtLSBB ZG1pbi1JbmhhbHQgLS0+CiAgICAgICAgICAgIDxtYWluIGNsYXNzPSJhZG1pbi1pbmhhbHQiPgoK ICAgICAgICAgICAgICAgIDwhLS0gUmVhZC1vbmx5LUJhbm5lcjogZXJzY2hlaW50LCB3ZW5uIGRl ciBlaW5nZWxvZ2d0ZSBCZW51dHplcgogICAgICAgICAgICAgICAgICAgICBkZW4gQWRtaW4tQmVy ZWljaCBudXIgbGVzZW5kIHNlaGVuIGRhcmYgKGFsbGUgUm9sbGVuCiAgICAgICAgICAgICAgICAg ICAgIGF1c3NlciBTdXBlclVzZXIpLiBXaXJkIHZvbiBhZG1pbkJhbm5lckFrdHVhbGlzaWVyZW4o KQogICAgICAgICAgICAgICAgICAgICBpbiBhZG1pbi5qcyBlaW4tL2F1c2dlYmxlbmRldCB1bmQg bWl0IFJvbGxlIGJlZnVlbGx0LiAtLT4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImFkbWluLXJl YWRvbmx5LWJhbm5lciIgY2xhc3M9ImFkbWluLWJhbm5lciBhZG1pbi1iYW5uZXItaW5mbyB2ZXJz dGVja3QiIHJvbGU9InN0YXR1cyIgYXJpYS1saXZlPSJwb2xpdGUiPgogICAgICAgICAgICAgICAg ICAgIDxzcGFuIGNsYXNzPSJhZG1pbi1iYW5uZXItaWNvbiIgYXJpYS1oaWRkZW49InRydWUiPiYj OTQzMjs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tYmFubmVy LXRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1iYW5uZXIt dGl0ZWwiPk51ci1MZXNlLU1vZHVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImFkbWluLWJhbm5lci1ib2R5IiBpZD0iYWRtaW4tcmVhZG9ubHktYmFubmVyLXRleHQi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHUgc2llaHN0IGRpZXNlbiBCZXJlaWNoIG51 ciBsZXNlbmQuICZBdW1sO25kZXJ1bmdlbiBzaW5kIGRlbSBTdXBlclVzZXIgdm9yYmVoYWx0ZW4u CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBEcmFmdC1SZXN0 b3JlLUJhbm5lcjogZXJzY2hlaW50LCB3ZW5uIGJlaW0gVGFiLVdlY2hzZWwgZWluCiAgICAgICAg ICAgICAgICAgICAgIHVuZ2VzaWNoZXJ0ZXIgQXV0by1TYXZlLURyYWZ0IGltIGxvY2FsU3RvcmFn ZSBnZWZ1bmRlbiB3dXJkZQogICAgICAgICAgICAgICAgICAgICAoQnJvd3Nlci1DcmFzaCwgRjUt UmVsb2FkLCB2ZXJzZWhlbnRsaWNoZXMgU2NobGllc3NlbikuCiAgICAgICAgICAgICAgICAgICAg IGFkbWluRHJhZnRCYW5uZXJBbmJpZXRlbigpIGluIGFkbWluLmpzIGJlc3R1ZWNrdCBUZXh0ICsg QnV0dG9ucy4gLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJhZG1pbi1kcmFmdC1iYW5uZXIi IGNsYXNzPSJhZG1pbi1iYW5uZXIgYWRtaW4tYmFubmVyLXdhcm4gdmVyc3RlY2t0IiByb2xlPSJz dGF0dXMiIGFyaWEtbGl2ZT0icG9saXRlIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFz cz0iYWRtaW4tYmFubmVyLWljb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj4mIzkyMDE7PC9zcGFuPgog ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWJhbm5lci10ZXh0Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tYmFubmVyLXRpdGVsIj5Vbmdlc2lj aGVydGUgJkF1bWw7bmRlcnVuZ2VuIHdpZWRlcmhlcnN0ZWxsZW4/PC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWJhbm5lci1ib2R5IiBpZD0iYWRtaW4tZHJh ZnQtYmFubmVyLXRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHUgaGFzdCBpbiBk aWVzZW0gVGFiICZBdW1sO25kZXJ1bmdlbiwgZGllIG5vY2ggbmljaHQgZ2VzcGVpY2hlcnQgc2lu ZC4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAg IDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6OHB4O2Rpc3BsYXk6ZmxleDtnYXA6OHB4Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0iYWRtaW4tZHJh ZnQtcmVzdG9yZSIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciBidG4ta2xlaW4iPldpZWRlcmhlcnN0 ZWxsZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0i YnV0dG9uIiBpZD0iYWRtaW4tZHJhZnQtdmVyd2VyZmVuIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRu LWtsZWluIj5WZXJ3ZXJmZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAg ICAgICAgICAgICA8IS0tIFRhYjogUGVyc29uYWwgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJhZG1pbi10YWIiIGlkPSJhZG1pbi10YWItcGVyc29uYWwiPgogICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+ UGVyc29uYWx2ZXJ3YWx0dW5nPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHls ZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LXdyYXA6d3Jh cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6Zmxl eDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtmb250LXNpemU6MTNweDtjdXJzb3I6cG9pbnRl ciIgdGl0bGU9IlVtZ2VzZXR6dGUgaW4gZGllc2VyIFRhYmVsbGUgYW56ZWlnZW4iPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFkbWlu LXBlcnNvbmFsLWZpbHRlciI+IFVtZ2VzZXR6dGUgZWluYmxlbmRlbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBz dHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O2ZvbnQtc2l6ZTox M3B4O2N1cnNvcjpwb2ludGVyIiB0aXRsZT0iVW1nZXNldHp0ZSBhdWNoIGluIGRlciBQbGFudW5n cy1BbnNpY2h0IGVpbmJsZW5kZW4gKG5pY2h0IGVkaXRpZXJiYXIsIG51ciB6dXIgUmVjaGVyY2hl KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94 IiBpZD0iY2hrLXVtZ2VzZXR6dGUtZWluYmxlbmRlbiI+IEluIFBsYW51bmdzLUFuc2ljaHQgZWlu YmxlbmRlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxsYWJlbCBpZD0icGFwaWVya29yYi1maWx0ZXItemVpbGUiIGNsYXNz PSJ2ZXJzdGVja3QiIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2 cHg7Zm9udC1zaXplOjEzcHg7Y3Vyc29yOnBvaW50ZXIiIHRpdGxlPSJTb2Z0LWdlbMO2c2NodGUg UGVyc29uZW4gaW0gUGFwaWVya29yYiBhbnplaWdlbiAobnVyIGJlaSBha3RpdmVtIEZlYXR1cmUp Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3gi IGlkPSJhZG1pbi1wYXBpZXJrb3JiLWZpbHRlciI+IFBhcGllcmtvcmIgZWluYmxlbmRlbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxidXR0b24gaWQ9ImJ0bi1tYW51ZWxsZS1zb3J0aWVydW5nIiBjbGFzcz0iYnRuIGJ0bi1z ZWsiIHRpdGxlPSJGw7xocnVuZ3NrcsOkZnRlIChB4oCTQyB1bmQgV0QpIHBlciBEcmFnICZhbXA7 IERyb3AgaW4gbmV1ZSBSZWloZW5mb2xnZSBicmluZ2VuIj5NYW51ZWxsZSBTb3J0aWVydW5nPC9i dXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tcGVyc29u LW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlIFBlcnNvbjwvYnV0dG9uPgogICAgICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg ICAgICAgICAgICAgICA8IS0tIE5ldWltcG9ydC1CbG9jazogZXJzY2hlaW50LCB3ZW5uIFBlcnNv bmVuIG1pdCBpbXBvcnROZXVBbS1NYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHZvcmhh bmRlbiBzaW5kIChFeGNlbC1JbXBvcnQgIm5ldSBhbmxlZ2VuIikuIFVzZXIga2FubiBkaWUgUGVy c29uZW4KICAgICAgICAgICAgICAgICAgICAgICAgIGhpZXIgZGlyZWt0IG5hY2hwZmxlZ2VuIHVu ZCBlaW56ZWxuIGF1ZiAiRXJsZWRpZ3QiIHNldHplbi4KICAgICAgICAgICAgICAgICAgICAgICAg IEJsb2NrIHZlcnNjaHdpbmRldCBhdXRvbWF0aXNjaCwgc29iYWxkIGFsbGUgTWFya2VyIHdlZyBz aW5kLiAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwZXJzb25hbC1uZXVpbXBvcnQt YmxvY2siIGNsYXNzPSJ2ZXJzdGVja3QiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkZXRh aWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5PSJwZXJzb25hbCIgb3Blbj4KICAg ICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hl diI+4pa4PC9zcGFuPkhpbndlaXNlIHp1ciBQZXJzb25hbHZlcndhbHR1bmc8c3BhbiBjbGFzcz0i YWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlp3ZWNrOjwvc3Ryb25nPiBaZW50 cmFsZSBWZXJ3YWx0dW5nIGFsbGVyIE1pdGFyYmVpdGVyLCBkaWUgaW4gZGVyIERpZW5zdHBsYW51 bmcgZXJzY2hlaW5lbi4gSmVkZSBQZXJzb24gYmVrb21tdCBTdGFtbWRhdGVuIChOYW1lLCBEaWVu c3RncmFkLCBUZWxlZm9uLCBOVy1LZW5udW5nLCBEaWVuc3RncnVwcGUsIFN0YW5kb3J0KSBzb3dp ZSBlaW5lbiBha3RpdmVuIG9kZXIgdW1nZXNldHp0ZW4gU3RhdHVzLjwvcD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+UmFuZ2ZvbGdlOjwvc3Ryb25nPiBEaWUgUmFuZy1T cGFsdGUgemVpZ3QgZGVuIHJvaGVuIFBvc2l0aW9ucy1XZXJ0ICh6LkIuIDxjb2RlPjExMTwvY29k ZT4g4oCUIMO8YmVybm9tbWVuIGF1cyBkZW0gRXhjZWwtSW1wb3J0KS4gWnVtIFVtc29ydGllcmVu IG51dHplIGRlbiBCdXR0b24gPGVtPk1hbnVlbGxlIFNvcnRpZXJ1bmc8L2VtPiBvYmVuIOKAlCBk b3J0IGvDtm5uZW4gRsO8aHJ1bmdza3LDpGZ0ZSAoQeKAk0MgdW5kIFdEKSBwZXIgRHJhZyAmYW1w OyBEcm9wIG5ldSBhbmdlb3JkbmV0IHdlcmRlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cD48c3Ryb25nPkRpZW5zdGdyYWQ6PC9zdHJvbmc+IE9wdGlvbmFsIOKAlCB6LiBCLiBQ SEssIFBPSywgUEsuIFdpcmQgaW4gZGVyIE5hbWVuc3NwYWx0ZSBhbHMgUHLDpGZpeCB2b3IgZGVt IE5hY2huYW1lbiBhbmdlemVpZ3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5EaWVuc3RncnVwcGUgKEEvQi9DL1dEL1dMKTo8L3N0cm9uZz4gQmVzdGltbXQgZGll IFJvdGF0aW9uIGFuIGRlbiBTdGFuZG9ydGVuLiBBL0IvQyByb3RpZXJlbiBpbiBBQkMtL0JDQS0v Q0FCLVNjaGljaHRmb2xnZSBkdXJjaCBGcsO8aC9TcMOkdC9OYWNodC4gV0QgKFdhY2hkaWVuc3Qp IHVuZCBXTCAoV2FjaGxlaXR1bmcpIHNpbmQgZmVzdGUgU29uZGVyZ3J1cHBlbiBvaG5lIFJvdGF0 aW9uLiBLw7xyemVsIHVuZCBCZXplaWNobnVuZ2VuIGxhc3NlbiBzaWNoIGltIFRhYiA8Yj5EaWVu c3RncnVwcGVuPC9iPiBhbnBhc3NlbiDigJQgVW1iZW5lbm51bmcga2Fza2FkaWVydCBhdXRvbWF0 aXNjaCBhdWYgYWxsZSBQZXJzb25lbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPk5XLUtlbm51bmc6PC9zdHJvbmc+IERpZSBOZXR6d2Vyay1LZW5udW5nICh6LkIu IDxjb2RlPkRPTUFJTlxtYXgubXVzdGVybWFubjwvY29kZT4pIHdpcmQgYXV0b21hdGlzY2ggZGVt IGFuZ2VtZWxkZXRlbiBXaW5kb3dzLUJlbnV0emVyIHp1Z2VvcmRuZXQuIE9obmUgS2VubnVuZyBl cmtlbm50IGRhcyBTeXN0ZW0gZGllIFBlcnNvbiBuaWNodCDigJQgRnVua3Rpb25lbiB3aWUg4oCe RnJlbWQtw4RuZGVydW5nIFdhcm51bmciIG9kZXIgcGVyc8O2bmxpY2hlciBQbGFuIGZ1bmt0aW9u aWVyZW4gZGFubiBuaWNodC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ry b25nPkUtTWFpbDo8L3N0cm9uZz4gT3B0aW9uYWwuIFdpcmQgdmVyd2VuZGV0LCB3ZW5uIGRpZSBC ZW5hY2hyaWNodGlndW5nc2Z1bmt0aW9uIGFrdGl2aWVydCBpc3QgKFRhYiA8Yj5FaW5zdGVsbHVu Z2VuPC9iPikuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5VbWdl c2V0enQ6PC9zdHJvbmc+IFBlcnNvbmVuIG1pdCBTdGF0dXMg4oCeVW1nZXNldHp0IiB3ZXJkZW4g YXVzIGRlciBsYXVmZW5kZW4gUGxhbnVuZyBlbnRmZXJudCwgaWhyZSBIaXN0b3JpZSBibGVpYnQg YWJlciBlcmhhbHRlbiAoenVyIFJlY2hlcmNoZSkuIEVpbnRyw6RnZSBrw7ZubmVuIHdlaXRlcmhp biBhbmdlemVpZ3Qgd2VyZGVuLCBzaW5kIGFiZXIgbmljaHQgbWVociBlZGl0aWVyYmFyLiBEaWUg Q2hlY2tib3ggb2JlbiByZWNodHMgYmxlbmRldCBzaWUgYmVpIEJlZGFyZiBlaW4uPC9wPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Mw7ZzY2hlbiB2cy4gVW1zZXR6ZW46 PC9zdHJvbmc+IE51ciBhdXNuYWhtc3dlaXNlIGzDtnNjaGVuIOKAlCB2ZXJsb3JlbmUgSGlzdG9y aWUuIEltIFJlZ2VsZmFsbCDigJ5VbXNldHplbiIgKGRlYWt0aXZpZXJlbikgYmV2b3J6dWdlbi48 L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwv ZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgaWQ9InBlcnNvbmFsLXRhYmVsbGUi IGNsYXNzPSJhZG1pbi10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+ Vm9ybmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3 aWR0aDoxMjBweCIgdGl0bGU9IlN0YW1tLUZ1bmt0aW9uIChER0wvREdMaW4vV0RGL1dERmluLzMu IE1hbm4vMy4gRnJhdS9XYWNobGVpdHVuZy9HcnVwcGVuZsO8aHJ1bmcpLiBCZXN0aW1tdCBkaWUg VmVyYW50d29ydHVuZ3MtUmVpaGVuZm9sZ2UgaW4gZGVyIFNjaGljaHQuIj5GdW5rdGlvbjwvdGg+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo4NXB4IiB0 aXRsZT0iRGllbnN0Z3JhZCAoZsO8ciBTdXBlclVzZXIgcGVyIEtsaWNrIGVkaXRpZXJiYXIpIj5E aWVuc3RncmFkPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9 IndpZHRoOjY1cHgiIHRpdGxlPSJEaWVuc3RyYW5nIOKAlCByb2hlIFBvc2l0aW9uIChhdXMgRXhj ZWwtSW1wb3J0KS4gVW1zb3J0aWVyZW4gdmlhIOKAnk1hbnVlbGxlIFNvcnRpZXJ1bmciIG9iZW4u Ij5EaWVuc3RyYW5nPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5 bGU9IndpZHRoOjUwcHgiIHRpdGxlPSJPcmdhbmlzYXRpb25zZWluaGVpdCAoU3RhbmRvcnQtS3Vl cnplbCBhdXMgZGVtIFRhYiDigJ5TdGFuZG9ydGUiIOKAlCB6LkIuIEtBLCBIQSwgQk8pLiI+T0U8 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NjBw eCIgdGl0bGU9IlRlbGVmb24tRHVyY2h3YWhsIChpbnRlcm4pLiI+VGVsLjwvdGg+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMTVweCIgdGl0bGU9Ik5X LUtlbm51bmcg4oCUIGkuZC5SLiA4IFplaWNoZW4sIGxhbmdlIERPTUFJTi1QcmFlZml4ZSB3ZXJk ZW4gZ2dmLiBhYmdlc2Nobml0dGVuIj5OVy1LZW5udW5nPC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjQ4cHgiIHRpdGxlPSJIZXV0aWdlIFNjaGlj aHRyb3RhdGlvbiAoRnJ1ZWhkaWVuc3QgLyBTcGFldGRpZW5zdCAvIE5hY2h0ZGllbnN0KS4gV2ly ZCBhdXMgZGVyIFN0YW5kb3J0LVNjaGljaHRmb2xnZSB1bmQgZGVyIERpZW5zdGdydXBwZSBkZXIg UGVyc29uIGFiZ2VsZWl0ZXQuIEhvdmVyIHplaWd0IGRlbiBuYWVjaHN0ZW4gV2VjaHNlbHRhZy4i PlJvdGE8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lk dGg6OTBweCI+RS1NYWlsPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGgg c3R5bGU9IndpZHRoOjk1cHgiPkdlYnVydHN0YWc8L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweCIgdGl0bGU9IlF1YWxpZmlrYXRpb24gYWxz IERpZW5zdGdydXBwZW4tTGVpdGVyIChER0wpIGJ6dy4g4oCeMy4gTWFubi9GcmF1IiBkZXIgVmVy a2VocnNpbnNwZWt0aW9uIDMuIE1hcmtpZXJ0IGRpZSBQZXJzb24gYWxzIHVlYmVyYmVzZXR6dW5n cy1mYWVoaWcgZnVlciBsZWVyZSBTY2hpY2h0ZW4gaW4gaWhyZXIgRGllbnN0Z3J1cHBlLiI+Vkkz IERHTDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0 aDo5MHB4IiB0aXRsZT0iQW5zcHJlY2hwYXJ0bmVyIGltIEluZm8tRmVuc3RlciDigJQgbnVyIGbD vHIgTGVpdHVuZ3MtRnVua3Rpb25lbiBha3RpdmllcmJhciAoRnVua3Rpb25lbiBtaXQg4oCeSW4g UGxhbnVuZyBzaWNodGJhciA9IG5laW4iKSI+QW5zcHJlY2gtwq1wYXJ0bmVyPC90aD4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjY0cHgiIHRpdGxlPSJE aWVzZSBQZXJzb24gZWluemVsbiBhdXMgZGVyIFBsYW51bmdzYW5zaWNodCAvIFdvY2hlbnBsYW4g LyBQZXJzLiBQbGFuIGF1c2JsZW5kZW4gKGdyw7xuID0gc2ljaHRiYXIsIHJvdCA9IGF1c2dlYmxl bmRldCkuIFN1cGVyVXNlci1vbmx5LiI+SW4gUGxhbnVuZzwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo4MHB4Ij5TdGF0dXM8L3RoPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MjEwcHgiPkFrdGlvbmVu PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAg ICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0icGVyc29u YWwtdGJvZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAg ICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBGZWllcnRhZ2UgLS0+CiAg ICAgICAgICAgICAgICA8IS0tIFRhYjogRGllbnN0Z3J1cHBlbiAtLT4KICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItZ3J1cHBlbiI+ CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAg ICAgICAgICAgICAgIDxoMj5EaWVuc3RncnVwcGVuPC9oMj4KICAgICAgICAgICAgICAgICAgICA8 L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0 YS1pbmZvLWtleT0iZ3J1cHBlbiIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1h cnk+PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IERp ZW5zdGdydXBwZW48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1 a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ry b25nPldhcyBzaW5kIERpZW5zdGdydXBwZW4/PC9zdHJvbmc+IERpZW5zdGdydXBwZW4gYsO8bmRl bG4gTWl0YXJiZWl0ZXIgbWl0IGRlbXNlbGJlbiBSb3RhdGlvbnNyaHl0aG11cy4gQmVpIGRlciBW STMgc2luZCBkYXMgZGllIGtsYXNzaXNjaGVuIDxiPkEgLyBCIC8gQzwvYj4gKFdlY2hzZWxkaWVu c3QtUm90YXRpb24pLCBwbHVzIFNvbmRlcmdydXBwZW4gd2llIDxiPks8L2I+IChXYWNoZGllbnN0 KSB1bmQgPGI+TDwvYj4gKFdhY2hsZWl0dW5nKS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cD48c3Ryb25nPkvDvHJ6ZWwgdnMuIEJlemVpY2hudW5nOjwvc3Ryb25nPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGxpPkRhcyA8Yj5Lw7xyemVsPC9iPiAoei5CLiA8Y29kZT5BPC9jb2RlPiwgPGNv ZGU+V0Q8L2NvZGU+KSBpc3QgZGllIHRlY2huaXNjaGUgS2VubnVuZyBpbiBkZW4gRGF0ZW4gdW5k IHdpcmQgaW4gZGVyIFBlcnNvbmVuLVplaWxlIGFuZ2V6ZWlndC4gV2VubiBkdSBlcyDDpG5kZXJz dCwgd2VyZGVuIGF1dG9tYXRpc2NoIGFsbGUgUGVyc29uZW4gZGVyIEdydXBwZSBhdWYgZGFzIG5l dWUgS8O8cnplbCBtaWdyaWVydCAoa2Fza2FkaWVydGVzIFVwZGF0ZSBpbiA8Y29kZT5wbGFudW5n Lmpzb248L2NvZGU+KS48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 bGk+RGllIDxiPkJlemVpY2hudW5nPC9iPiAoei5CLiDigJ5XYWNoZGllbnN0Iiwg4oCeV2FjaGxl aXR1bmciKSBlcnNjaGVpbnQgYWxzIFRyZW5uZXIgaW4gZGVyIE5hbWVuc2xpc3RlIGRlciBQbGFu dW5nLiBEaWVzZSBrYW5uc3QgZHUgZnJlaSBhbnBhc3Nlbiwgb2huZSBEYXRlbiB6dSB2ZXJsaWVy ZW4uPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0 cm9uZz5GYXJiZW46PC9zdHJvbmc+IEhpbnRlcmdydW5kIHVuZCBTY2hyaWZ0ZmFyYmUgcHJvIEdy dXBwZSBkaXJla3QgZWRpdGllcmJhci4gRWluZSBMaXZlLVZvcnNjaGF1IHplaWd0IGRhcyByZXN1 bHRpZXJlbmRlIEJhZGdlLiBEaWUgRmFyYmVuIHdlcmRlbiDDvGJlcmFsbCBpbSBTeXN0ZW0gdmVy d2VuZGV0IChQZXJzb25lbi1CYWRnZXMsIEdydXBwZW4tVHJlbm5lciBpbiBkZXIgUGVyc29uYWx2 ZXJ3YWx0dW5nLCBHcnVwcGVuLUxhYmVsIGluIGRlciBQbGFudW5ncy1aZWlsZSkuPC9wPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5OZXVlIEdydXBwZSBhbmxlZ2VuOjwv c3Ryb25nPiBCdXR0b24gPGVtPuKAnk5ldWUgRGllbnN0Z3J1cHBlIjwvZW0+IMO2ZmZuZXQgZWlu ZSBFaW5nYWJlemVpbGUuIFBmbGljaHRmZWxkZXIgc2luZCBLw7xyemVsIHVuZCBCZXplaWNobnVu ZzsgRmFyYmVuIGvDtm5uZW4genVuw6RjaHN0IMO8YmVybm9tbWVuIHdlcmRlbiB1bmQgc3DDpHRl ciBhbmdlcGFzc3Qgd2VyZGVuLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxz dHJvbmc+R3J1cHBlIGzDtnNjaGVuOjwvc3Ryb25nPiBOdXIgbcO2Z2xpY2gsIHdlbm4ga2VpbmUg YWt0aXZlIFBlcnNvbiBtZWhyIGluIGRlciBHcnVwcGUgaXN0LiBTaW5kIG5vY2ggUGVyc29uZW4g enVnZXdpZXNlbiwgemVpZ3QgZGVyIERpYWxvZyBkaWUgQW56YWhsIHVuZCBicmljaHQgYWIg4oCU IGRhbm4gZXJzdCBkaWUgUGVyc29uZW4gYXVmIGVpbmUgYW5kZXJlIEdydXBwZSB1bXNldHplbiBv ZGVyIHVtZ3J1cHBpZXJlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ry b25nPlNwZWljaGVybjo8L3N0cm9uZz4gTmFjaCDDhG5kZXJ1bmdlbiBhdWYg4oCeRGllbnN0Z3J1 cHBlbiBzcGVpY2hlcm4iIGtsaWNrZW4uIEJlaSBnZcOkbmRlcnRlbiBLw7xyemVsbiB3ZXJkZW4g YWxsZSB2ZXJrbsO8cGZ0ZW4gUGVyc29uZW4gYXV0b21hdGlzY2ggYXVmIGRhcyBuZXVlIEvDvHJ6 ZWwgdW1nZXNjaHJpZWJlbiAoa2VpbiBEYXRlbnZlcmx1c3QpLjwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAg ICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9ImdydXBwZW4tdGFiZWxs ZSIgc3R5bGU9Im1heC13aWR0aDoxMDQwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGhl YWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo5MHB4Ij5Lw7xyemVsPC90aD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8dGg+QmV6ZWljaG51bmc8L3RoPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweCI+SGludGVyZ3J1bmQ8L3Ro PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweCI+ U2NocmlmdDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3 aWR0aDo4MHB4Ij5Wb3JzY2hhdTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHRoIHN0eWxlPSJ3aWR0aDo3MHB4Ij5QZXJzb25lbjwvdGg+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMjBweDt0ZXh0LWFsaWduOmNlbnRlciIgdGl0 bGU9Ildlbm4gZGVha3RpdmllcnQsIHdlcmRlbiBQZXJzb25lbiBkaWVzZXIgR3J1cHBlIE5JQ0hU IGluIGRlciBQbGFudW5nc2Fuc2ljaHQsIGltIFdvY2hlbnBsYW4gdW5kIGltIFBlcnMuIFBsYW4g YW5nZXplaWd0IOKAlCBibGVpYmVuIGFiZXIgaW4gZGVyIFBlcnNvbmFsdmVyd2FsdHVuZyBwZmxl Z2Jhci4iPkluIFBsYW51bmcgc2ljaHRiYXI8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTMwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJX ZW5uIGFrdGl2aWVydCwgZMO8cmZlbiBQZXJzb25lbiBkaWVzZXIgR3J1cHBlIGltIFBlcnNvbmFs LVRhYiBhbHMgQW5zcHJlY2hwYXJ0bmVyIG1hcmtpZXJ0IHdlcmRlbiAoZ2lsdCB6dXPDpHR6bGlj aCB6dXIgRnVua3Rpb25zLUJlZGluZ3VuZykuIE1hcmtpZXJ0ZSBQZXJzb25lbiBlcnNjaGVpbmVu IG1pdCBNYWlsLUJ1dHRvbiBpbSBJbmZvLUZlbnN0ZXIuIj5BbnNwcmVjaHBhcnRuZXIgbcO2Z2xp Y2g8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6 NzBweDt0ZXh0LWFsaWduOmNlbnRlciIgdGl0bGU9IlJlaWhlbmZvbGdlIGluIGRlciBQbGFudW5n c2Fuc2ljaHQgw6RuZGVybiI+UmVpaGVuZm9sZ2U8L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NjBweCI+PC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAg ICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0iZ3J1cHBlbi10Ym9keSI+PC90Ym9keT4KICAgICAg ICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1h cmdpbi10b3A6MTZweDtkaXNwbGF5OmZsZXg7Z2FwOjEwcHgiPgogICAgICAgICAgICAgICAgICAg ICAgICA8YnV0dG9uIGlkPSJidG4tZ3J1cHBlbi1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+ TmV1ZSBEaWVuc3RncnVwcGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRv biBpZD0iYnRuLWdydXBwZW4tc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIj5EaWVu c3RncnVwcGVuIHNwZWljaGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEZlaWVydGFn ZSAmIEZlcmllbiAoTWVyZ2UgUGhhc2UgMSDigJQgYmVpZGUgS2FsZW5kZXItQmxvY2tlciBhbiBl aW5lbSBPcnQpIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0 ZWNrdCIgaWQ9ImFkbWluLXRhYi1mZWllcnRhZ2UiPgogICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+S2FsZW5kZXIg 4oCUIEZlaWVydGFnZSAmYW1wOyBGZXJpZW48L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2 PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIFN1Yi1UYWItTGVpc3RlOiB0cmVubnQgZGllIHp3 ZWkgbG9naXNjaCBkaXNqdW5rdGVuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVtZW4gdmlz dWVsbC4gRGVmYXVsdDogRmVpZXJ0YWdlIGFrdGl2LiAtLT4KICAgICAgICAgICAgICAgICAgICA8 bmF2IGNsYXNzPSJhZG1pbi1zdWJuYXYiIGFyaWEtbGFiZWw9IkthbGVuZGVyLVN1Yi1OYXZpZ2F0 aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNz PSJhZG1pbi1zdWJuYXYtYnRuIGFrdGl2IiBkYXRhLXN1YnRhYj0iZmVpZXJ0YWdlIj5GZWllcnRh Z2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24i IGNsYXNzPSJhZG1pbi1zdWJuYXYtYnRuIiBkYXRhLXN1YnRhYj0iZmVyaWVuIj5TY2h1bGZlcmll bjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAgICAgICAgICAg ICA8c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiIgaWQ9ImFkbWluLXNla3Rpb24tZmVpZXJ0 YWdlIiBkYXRhLXN1YnRhYi1zZWt0aW9uPSJmZWllcnRhZ2UiPgogICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1zZWt0aW9uLWtvcGYiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGgzPkZlaWVydGFnZTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIGlkPSJidG4tZmVpZXJ0YWctbmV1IiBjbGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWVy IEZlaWVydGFnPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAg ICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtl eT0iZmVpZXJ0YWdlIiBvcGVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+ PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IEZlaWVy dGFnZW48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBl bjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxz dHJvbmc+V2FzIHBhc3NpZXJ0IG1pdCBGZWllcnRhZ2VuPzwvc3Ryb25nPiBBbiBha3RpdmVuIEZl aWVydGFnZW4gd2lyZCBkaWUgZW50c3ByZWNoZW5kZSBEYXR1bXMtU3BhbHRlIGltIFBsYW51bmdz cmFzdGVyIGZhcmJsaWNoIGhlcnZvcmdlaG9iZW4gdW5kIGluIGRlciBBbmxhc3MtWmVpbGUgbWl0 IGRlciBCZXplaWNobnVuZyBkZXMgRmVpZXJ0YWdzIHZlcnNlaGVuLiBEaWUgU3RhdGlzdGlrLUF1 c3dlcnR1bmcg4oCeRmVpZXJ0YWdzLURpZW5zdGUiIGJlcsO8Y2tzaWNodGlndCBudXIgVGFnZSBh dXMgZGllc2VyIExpc3RlLCBkZXJlbiA8ZW0+QWt0aXY8L2VtPi1Iw6RrY2hlbiBnZXNldHp0IGlz dC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5LYXRlZ29y aWVuOjwvc3Ryb25nPiBOZWJlbiBkZW4gZ2VzZXR6bGljaGVuIEZlaWVydGFnZW4gKFN0YW5kYXJk LCBOUlcpIHNpbmQgasO8ZGlzY2hlLCBtdXNsaW1pc2NoZSB1bmQgdMO8cmtpc2NoZSBGZWllcnRh Z2UgYWxzIERhdGVuYmFzaXMgYmVyZWl0cyBoaW50ZXJsZWd0IOKAlCBmw7xyIDIwMjYgYmlzIDIw MzUuIERpZXNlIHNpbmQgcGVyIERlZmF1bHQgZGVha3RpdmllcnQ7IHBlciA8ZW0+QWt0aXY8L2Vt Pi1Iw6RrY2hlbiBsYXNzZW4gc2llIHNpY2ggZWluemVsbiBlaW5ibGVuZGVuLiBKZWRlIEthdGVn b3JpZSBiZWtvbW10IGluIGRlciBBbmxhc3MtWmVpbGUgZWluZSBlaWdlbmUgRmFyYmUgKGdlc2V0 emxpY2ggPSBibGF1LCBqw7xkaXNjaCA9IGxpbGEsIG11c2xpbWlzY2ggPSBncsO8biwgdMO8cmtp c2NoID0gcm90KS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9u Zz5GaWx0ZXI6PC9zdHJvbmc+IMOcYmVyIGRlciBUYWJlbGxlIG5hY2ggS2F0ZWdvcmllLCBKYWhy IG9kZXIg4oCebnVyIGFrdGl2ZSIgZmlsdGVybiDigJQgZGllIHZvbGxlIExpc3RlIHVtZmFzc3Qg cnVuZCAzMTIgRWludHLDpGdlLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPldpY2h0aWcgKEhlcnZvcmhlYnVuZyk6PC9zdHJvbmc+IERpZSBDaGVja2JveCBp biBkZXIgU3BhbHRlIOKAnldpY2h0aWciIG1hcmtpZXJ0IGJlc29uZGVycyBoZXJ2b3J6dWhlYmVu ZGUgRmVpZXJ0YWdlICh6LkIuIEhlaWxpZ2FiZW5kLCBTaWx2ZXN0ZXIsIFdlaWhuYWNodGVuKS4g U29sY2hlIFRhZ2UgYmVrb21tZW4gaW0gUGxhbnVuZ3MtSGVhZGVyIGVpbmUgdmVyc3TDpHJrdGUg RWluZsOkcmJ1bmcgKHJvdCBtaXQgZ29sZGVuZW0gUmFobWVuKSB1bmQgw7xiZXJsYWdlcm4gZGll IEthdGVnb3JpZS1GYXJiZS4gRGllIFRhYmVsbGVuemVpbGUgaW0gQWRtaW4gZXJow6RsdCBlaW5l IHLDtnRsaWNoZSBUw7ZudW5nLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPldlY2hzZWx3aXJrdW5nIG1pdCBTb25kZXJ0ZXJtaW5lOjwvc3Ryb25nPiBMaWVn dCB6dXPDpHR6bGljaCBlaW4gU29uZGVydGVybWluIGFuIGVpbmVtIEZlaWVydGFnLCBibGVpYnQg ZGVyIEZlaWVydGFncy1IaW53ZWlzIHNpY2h0YmFyLCBkaWUgWmVsbGUgaXN0IGFiZXIga2xpY2ti YXIgdW5kIHplaWd0IEhpbndlaXMtVGV4dCBrb21iaW5pZXJ0IGFuLjwvcD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZlaWVydGFnZS1maWx0ZXIiIGNsYXNz PSJmZWllcnRhZ2UtZmlsdGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5L YXRlZ29yaWU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iZmVp ZXJ0YWdlLWZpbHRlci1rYXRlZ29yaWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8b3B0aW9uIHZhbHVlPSJhbGxlIj5BbGxlPC9vcHRpb24+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Imdlc2V0emxpY2giPkdlc2V0emxpY2gg KE5SVyk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlv biB2YWx1ZT0ianVlZGlzY2giPkrDvGRpc2NoPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im11c2xpbWlzY2giPk11c2xpbWlzY2g8L29w dGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0i dHVlcmtpc2NoIj5Uw7xya2lzY2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+SmFocjoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8c2VsZWN0IGlkPSJmZWllcnRhZ2UtZmlsdGVyLWphaHIiPjwvc2VsZWN0Pgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxsYWJlbCBzdHlsZT0ibWFyZ2luLWxlZnQ6YXV0bztkaXNwbGF5OmlubGluZS1mbGV4 O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJmZWllcnRhZ2UtZmlsdGVyLW51ci1ha3Rp diI+IG51ciBha3RpdmUgemVpZ2VuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVs PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAg PHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIiBpZD0iZmVpZXJ0YWdlLXRhYmVsbGUiPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPjx0cj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjEzMHB4Ij5EYXR1bTwvdGg+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJtYXgtd2lkdGg6MjYwcHgiPkJlemVpY2hu dW5nPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRo OjYwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJQcm8gRWludHJhZyB3w6RobGJhcjsgbGVl ciA9IEthdGVnb3JpZS1EZWZhdWx0Ij5JY29uPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE3MHB4Ij5LYXRlZ29yaWU8L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6ODBweDt0ZXh0LWFsaWduOmNl bnRlciI+QWt0aXY8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHls ZT0id2lkdGg6MTQwcHg7dGV4dC1hbGlnbjpjZW50ZXIiPldpY2h0aWc8L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTYwcHgiPkFrdGlvbmVuPC90 aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+PC90aGVhZD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0iZmVpZXJ0YWdlLXRib2R5Ij48L3Rib2R5PgogICAg ICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0 dG9uIGlkPSJidG4tZmVpZXJ0YWdlLXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIg c3R5bGU9Im1hcmdpbi10b3A6MTJweCI+RmVpZXJ0YWdlIHNwZWljaGVybjwvYnV0dG9uPgogICAg ICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24g Y2xhc3M9ImFkbWluLXNla3Rpb24gdmVyc3RlY2t0IiBpZD0iYWRtaW4tc2VrdGlvbi1mZXJpZW4i IGRhdGEtc3VidGFiLXNla3Rpb249ImZlcmllbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLXNla3Rpb24ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8aDM+U2NodWxmZXJpZW48L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRv biBpZD0iYnRuLWZlcmllbi1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+TmV1ZXIgRmVyaWVu emVpdHJhdW08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5 PSJmZXJpZW4iIG9wZW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT48c3Bh biBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+SGlud2Vpc2UgenUgRmVyaWVuPHNw YW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+ PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4t aW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldh cnVtIEZlcmllbiBlcmZhc3Nlbj88L3N0cm9uZz4gTlJXLVNjaHVsZmVyaWVuIHdlcmRlbiBpbSBX b2NoZW5wbGFuIG1pdCBkZW0gU3ltYm9sIPCfj5bvuI8gdW5kIGRlciBCZXplaWNobnVuZyBtYXJr aWVydDsgaW4gZGVyIFBsYW51bmdzYW5zaWNodCBsZWd0IHNpY2ggZWluZSBkdXJjaGdlaGVuZGUg Z3LDvG5lIEJhciDDvGJlciBkZW4gWmVpdHJhdW0uIERhcyBoaWxmdCBiZWkgZGVyIFVybGF1YnN2 ZXJnYWJlIHVuZCBCZXNldHp1bmdzcGxhbnVuZywgYmVzb25kZXJzIGJlaSBQZXJzb25hbCBtaXQg c2NodWxwZmxpY2h0aWdlbiBLaW5kZXJuLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cD48c3Ryb25nPlplaXRyYXVtLUVpbnRyw6RnZTo8L3N0cm9uZz4gRmVyaWVuIHdlcmRl biBtaXQgPGI+Vm9uPC9iPi0gdW5kIDxiPkJpczwvYj4tRGF0dW0gZXJmYXNzdCAoaW5rbHVzaXZl IGJlaWRlciBUYWdlKS4gQmVpc3BpZWw6IE9zdGVyZmVyaWVuIDMwLjAzLuKAkzExLjA0LiBEaWUg PGI+QmV6ZWljaG51bmc8L2I+IHdpcmQgaW0gVG9vbHRpcCB1bmQgaW4gZGVyIFdvY2hlbnBsYW4t TWFya2llcnVuZyBhbmdlemVpZ3QuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwPjxzdHJvbmc+UGZsZWdlOjwvc3Ryb25nPiBFaW5tYWwgcHJvIEphaHIgYWt0dWFsaXNpZXJl bi4gRGllIG9mZml6aWVsbGVuIE5SVy1GZXJpZW50ZXJtaW5lIHNpbmQgYmVpbSBTY2h1bG1pbmlz dGVyaXVtIE5SVyB6dSBmaW5kZW4uIMOcYmVybGFwcGVuZGUgRWludHLDpGdlIHdlcmRlbiB2b20g U3lzdGVtIGFremVwdGllcnQ7IFByaW9yaXTDpHQ6IEZlaWVydGFnID4gRmVyaWVuID4gV29jaGVu ZW5kZSA+IE5vcm1hbC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8 dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUiIGlkPSJmZXJpZW4tdGFiZWxsZSI+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+PHRyPjx0aD5Wb248L3RoPjx0aD5CaXM8L3RoPjx0 aD5CZXplaWNobnVuZzwvdGg+PHRoIHN0eWxlPSJ3aWR0aDo4MHB4Ij5Ba3Rpb25lbjwvdGg+PC90 cj48L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJmZXJpZW4t dGJvZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1mZXJpZW4tc3BlaWNoZXJuIiBjbGFzcz0i YnRuIGJ0bi1wcmltYWVyIiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4Ij5GZXJpZW4gc3BlaWNoZXJu PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAg PC9kaXY+CgoKICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBTb25kZXJ0ZXJtaW5lIC0tPgogICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXRh Yi1zb25kZXJ0ZXJtaW5lIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1r b3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlNvbmRlcnRlcm1pbmUgJmFtcDsgSGlu d2Vpc2U8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc29uZGVy dGVybWluLW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlciBIaW53ZWlzPC9idXR0b24+ CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkZXRhaWxz IGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5PSJzb25kZXJ0ZXJtaW5lIiBvcGVuPgog ICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1j aGV2Ij7ilrg8L3NwYW4+SGlud2Vpc2UgenUgU29uZGVydGVybWluZW48c3BhbiBjbGFzcz0iYWRt aW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhcyBpc3QgZGFzPzwvc3Ryb25nPiBT b25kZXJ0ZXJtaW5lIHNpbmQgSGlud2Vpc2Ugb2RlciBXYXJudW5nZW4sIGRpZSBhbiBlaW5lbSBi ZXN0aW1tdGVuIFRhZyAob2RlciBaZWl0cmF1bSkgZsO8ciBhbGxlIE51dHplciBzaWNodGJhciB3 ZXJkZW4g4oCUIHouQi4gVmVyYW5zdGFsdHVuZ2VuLCBlcmjDtmh0ZXIgUGVyc29uYWxiZWRhcmYs IHdpY2h0aWdlIEZyaXN0ZW4sIFNwZXJydGVybWluZSwgRmVpZXJuIG9kZXIgRXJpbm5lcnVuZ2Vu LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+V2llIHNlaGVuIGRp ZSBOdXR6ZXIgZGFzPzwvc3Ryb25nPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1 bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+SW0gUGxhbnVuZ3MtSGVh ZGVyPC9iPiBlcnNjaGVpbnQgaW4gZGVyIEhpbndlaXMtWmVpbGUgKHVudGVyIGRlbSBXb2NoZW50 YWcpIGRhcyBnZXfDpGhsdGUgSWNvbiBvZGVyIGRlciBGYWxsYmFjayAoPGNvZGU+4oS5PC9jb2Rl PiBmw7xyIEhpbndlaXMsIDxjb2RlPiEhITwvY29kZT4gZsO8ciBXYXJudW5nKS4gSG92ZXIgemVp Z3QgZGVuIFRpdGVsIGFscyBUb29sdGlwLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGxpPjxiPktsaWNrIGF1ZiBkaWUgWmVsbGU8L2I+IMO2ZmZuZXQgZWluIEFuc2ljaHRz LU1vZGFsIG1pdCBJY29uLCBUaXRlbCwgZm9ybWF0aWVydGVtIFRleHQgdW5kIERhdHVtLiBTdXBl clVzZXIga8O2bm5lbiBkaXJla3QgYmVhcmJlaXRlbiBvZGVyIG5ldWUgSGlud2Vpc2UgZsO8ciBq ZWRlcyBEYXR1bSBhbmxlZ2VuLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PGxpPjxiPkJlaW0gUGxhbmVuL1VtcGxhbmVuIGVpbmVyIFNjaGljaHQ8L2I+IGFuIGVpbmVtIFRh ZyBtaXQgSGlud2VpcyBlcnNjaGVpbnQg4oCUIGplIG5hY2ggV2Fybm1vZHVzIOKAlCBlaW4gV2Fy bi1Nb2RhbCwgZGFzIHZvciBkZXIgRWluZ2FiZSBiZXN0w6R0aWd0IHdlcmRlbiBtdXNzLjwvbGk+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHA+PHN0cm9uZz5GZWxkZXIgaW0gRGV0YWlsOjwvc3Ryb25nPjwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 bGk+PGI+RGF0dW0gKFZvbik8L2I+IOKAlCBQZmxpY2h0ZmVsZC4gU3RhcnQgZGVzIEfDvGx0aWdr ZWl0c2JlcmVpY2hzLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxi PkRhdHVtIChCaXMpPC9iPiDigJQgb3B0aW9uYWwuIExlZXIgbGFzc2VuID0gZ2lsdCBudXIgZsO8 ciBkZW4gU3RhcnQtVGFnLiBHZXNldHp0ID0gWmVpdHJhdW0gKFZvbiBiaXMgQmlzIGlua2x1c2l2 ZSkuIEplZGVyIFRhZyBpbSBaZWl0cmF1bSB6ZWlndCBkZW4gSGlud2Vpcy48L2xpPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5UaXRlbDwvYj4g4oCUIGt1cnplIEJlemVp Y2hudW5nIChtYXguIDEwMCBaZWljaGVuKSwgZXJzY2hlaW50IGltIFRvb2x0aXAgdW5kIGFscyDD nGJlcnNjaHJpZnQgaW0gTW9kYWwuIElzdCBrZWluIFRpdGVsIGdlc2V0enQsIHdpcmQgZGVyIEFu ZmFuZyBkZXMgVGV4dHMgdmVyd2VuZGV0LjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGxpPjxiPlRleHQ8L2I+IOKAlCBhdXNmw7xocmxpY2hlciBJbmhhbHQgbWl0IG1pbmlt YWxlbSBSaWNoLVRleHQtRWRpdG9yLiBVbnRlcnN0w7x0enQgPGI+ZmV0dDwvYj4sIDxpPmt1cnNp djwvaT4sIDx1PnVudGVyc3RyaWNoZW48L3U+LCBBdWZ6w6RobHVuZ2VuICjigKIgLyAxLikgdW5k IEVudGZlcm5lbiBkZXIgRm9ybWF0aWVydW5nLiBFaW5mw7xnZW4gYXVzIGFuZGVyZW4gUXVlbGxl biAoV29yZCwgTWFpbCkgZnVua3Rpb25pZXJ0IOKAlCBGb3JtYXRpZXJ1bmcgd2lyZCBhdWYgZGFz IFp1bMOkc3NpZ2UgYmVyZWluaWd0LjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGxpPjxiPkljb248L2I+IOKAlCBFbW9qaSBhdXMgZGVtIFBpY2tlciAoNSBHcnVwcGVuKSBv ZGVyIOKAnmtlaW5zIi4gRXJzZXR6dCBpbSBIZWFkZXItQmFkZ2UgZGFzIGdlbmVyaXNjaGUgU3lt Ym9sLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlR5cDwvYj4g 4oCUIDxpPkhpbndlaXM8L2k+IChuZXV0cmFsLCBibGF1KSBvZGVyIDxpPldhcm51bmc8L2k+IChy b3Qtb3JhbmdlLCBmw7xyIHdpY2h0aWdlIFRoZW1lbikuPC9saT4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8bGk+PGI+V2Fybm1vZHVzPC9iPiDigJQgc3RldWVydCwgd2FubiBkYXMg V2Fybi1Nb2RhbCBiZWltIFBsYW5lbiBlcnNjaGVpbnQ6CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxsaT48Yj5JbW1lcjwvYj4g4oCUIGJlaSBqZWRlciBQbGFudW5nIGltIFplaXRyYXVtIGVyc2No ZWludCBkYXMgTW9kYWwgZXJuZXV0LjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8bGk+PGI+RWlubWFsaWcgcHJvIFVzZXI8L2I+IOKAlCBlcnNjaGVpbnQgbnVy IGJlaW0gZXJzdGVuIEtsaWNrIHBybyBOdXR6ZXIgdW5kIFRlcm1pbiAoU3BlaWNoZXJ1bmcgbG9r YWwgaW0gQnJvd3NlciwgcHJvIFRlcm1pbi1JRCkuPC9saT4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxsaT48Yj5BdXM8L2I+IOKAlCBudXIgYWxzIEhlYWRlci1JY29u IHNpY2h0YmFyLCBrZWluIE1vZGFsIGJlaW0gUGxhbmVuLjwvbGk+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cD48c3Ryb25nPlRpcHA6PC9zdHJvbmc+IEbDvHIgd2llZGVya2VocmVuZGUg R3Jvw592ZXJhbnN0YWx0dW5nZW4gZWluZmFjaCBtaXQgWmVpdHJhdW0gYW5sZWdlbiAoei5CLiBL YXJuZXZhbHN3b2NoZSBNb250YWfigJNGcmVpdGFnKS4gRGVyIEhpbndlaXMgZXJzY2hlaW50IGRh bm4gYXVmIGFsbGVuIFRhZ2VuOyBkYXMgV2Fybi1Nb2RhbCBlcnNjaGVpbnQgaW0gTW9kdXMg4oCe RWlubWFsaWciIG51ciBlaW5tYWwgcHJvIE51dHplciB1bmQgVGVybWluLCBuaWNodCBmw7xyIGpl ZGVuIFRhZyBuZXUuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICA8L2RldGFpbHM+CgogICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0i YWRtaW4tdGFiZWxsZSIgaWQ9InNvbmRlcnRlcm1pbmUtdGFiZWxsZSI+CiAgICAgICAgICAgICAg ICAgICAgICAgIDx0aGVhZD48dHI+PHRoIHN0eWxlPSJ3aWR0aDo1MnB4Ij5JY29uPC90aD48dGgg c3R5bGU9IndpZHRoOjE4MHB4Ij5EYXR1bSAvIFplaXRyYXVtPC90aD48dGg+VGl0ZWw8L3RoPjx0 aCBzdHlsZT0id2lkdGg6MTEwcHgiPlR5cDwvdGg+PHRoIHN0eWxlPSJ3aWR0aDoxNjBweCI+V2Fy bm1vZHVzPC90aD48dGggc3R5bGU9IndpZHRoOjE3MHB4Ij5Ba3Rpb25lbjwvdGg+PC90cj48L3Ro ZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9InNvbmRlcnRlcm1pbmUtdGJv ZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAg IDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBTY2hpY2h0Y29kZXMgJiBGYXJiY29k aWVydW5nIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNr dCIgaWQ9ImFkbWluLXRhYi1zY2hpY2h0Y29kZXMiPgogICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U2NoaWNodGNv ZGVzICZhbXA7IEZhcmJjb2RpZXJ1bmc8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0 dG9uIGlkPSJidG4tc2NoaWNodGNvZGUtbmV1IiBjbGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWVy IFNjaGljaHRjb2RlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InNj aGljaHRjb2RlcyIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4g Y2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IFNjaGljaHRjb2Rl cyAmYW1wOyBGYXJiY29kaWVydW5nPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1Zmts YXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAg ICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHA+PHN0cm9uZz5XYXMgaXN0IGVpbiBTY2hpY2h0Y29kZT88L3N0cm9uZz4gRWluIFNjaGlj aHRjb2RlIGlzdCBlaW4gS8O8cnplbCwgZGFzIGVpbmVuIGJlc3RpbW10ZW4gRGllbnN0LCBlaW5l IEFid2VzZW5oZWl0IG9kZXIgZWluZW4gYmVzb25kZXJlbiBTdGF0dXMgZWluZXMgTWl0YXJiZWl0 ZXJzIGFuIGVpbmVtIFRhZyBiZXNjaHJlaWJ0LiBKZWRlciBDb2RlIGhhdCBlaW5lIDxiPkZhcmJj b2RpZXJ1bmc8L2I+IChIaW50ZXJncnVuZCArIFNjaHJpZnRmYXJiZSksIGRpZSBpbSBQbGFudW5n c3Jhc3RlciBkaXJla3QgYWJsZXNiYXIgaXN0LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwPjxzdHJvbmc+U3BhbHRlbiBpbiBkZXIgw5xiZXJzaWNodDo8L3N0cm9uZz48L3A+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGxpPjxiPkZhcmJmZWxkPC9iPiDigJQgVm9yc2NoYXUgZGVyIGhpbnRlcmxlZ3RlbiBI aW50ZXJncnVuZGZhcmJlLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxp PjxiPkNvZGU8L2I+IOKAlCBkZXIgdGVjaG5pc2NoZSBTY2hsw7xzc2VsIGluIGRlciBEYXRlbmhh bHR1bmcgKHouQi4gPGNvZGU+Ri1ER0w8L2NvZGU+LCA8Y29kZT5rcjwvY29kZT4sIDxjb2RlPlVy bDwvY29kZT4pLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkvD vHJ6ZWw8L2I+IOKAlCBkaWUgS3VyemZvcm0sIGRpZSBpbSBQbGFudW5nc3Jhc3RlciBpbiBkZXIg WmVsbGUgYW5nZXplaWd0IHdpcmQgKHouQi4gPGNvZGU+RjwvY29kZT4sIDxjb2RlPmtyPC9jb2Rl PikuIEthbm4gbWl0IGRlbSBDb2RlIGlkZW50aXNjaCBzZWluLjwvbGk+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGxpPjxiPkJlemVpY2hudW5nPC9iPiDigJQgZGVyIExhbmduYW1l IHp1ciBFcmzDpHV0ZXJ1bmcgKHouQi4g4oCeRnLDvGhkaWVuc3QgREdMIikuPC9saT4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cD48c3Ryb25nPkdydXBwaWVydW5nOjwvc3Ryb25nPiBNaXQgZGVtIEF1c3dhaGxtZW7DvCBvYmVu IGthbm5zdCBkdSB6d2lzY2hlbiB2ZXJzY2hpZWRlbmVuIERhcnN0ZWxsdW5nZW4gd2VjaHNlbG46 PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxsaT48Yj5OYWNoIFNjaGljaHR0eXA8L2I+IChTdGFuZGFyZCkg4oCUIMO8 YmVyc2ljaHRsaWNoIGdydXBwaWVydCBuYWNoIEZyw7xoLS9TcMOkdC0vTmFjaHRkaWVuc3QsIEZy ZWksIFVybGF1YiwgS3JhbmtoZWl0L0F1c2ZhbGwsIEZvcnRiaWxkdW5nLCBEaWVuc3RlL0VpbnPD pHR6ZSwgU29uZGVyZm9ybWVuLiBEaWUgWnVvcmRudW5nIGVyZm9sZ3QgYXV0b21hdGlzY2ggYW5o YW5kIGRlcyBDb2RlLU11c3RlcnMuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8bGk+PGI+QWxwaGFiZXRpc2NoIChDb2RlKTwvYj4g4oCUIGFsbGUgQ29kZXMgaW4gZWluZXIg TGlzdGUgbmFjaCBLw7xyemVsIHNvcnRpZXJ0LjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGxpPjxiPkFscGhhYmV0aXNjaCAoQmV6ZWljaG51bmcpPC9iPiDigJQgYWxsZSBD b2RlcyBuYWNoIExhbmduYW1lIHNvcnRpZXJ0IChoaWxmcmVpY2ggd2VubiBtYW4gbnVyIGRlbiBO YW1lbiBlcmlubmVydCwgbmljaHQgZGFzIEvDvHJ6ZWwpLjwvbGk+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGxpPjxiPktlaW5lIEdydXBwaWVydW5nPC9iPiDigJQgdW5zb3J0aWVy dGUgT3JpZ2luYWxyZWloZW5mb2xnZSB3aWUgaW4gZGVyIERhdGVpLjwvbGk+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0 cm9uZz5QZmxlZ2UgaW0gVUk6PC9zdHJvbmc+IE1pdCA8Yj7igJ5OZXVlciBTY2hpY2h0Y29kZSI8 L2I+IGxlZ3N0IGR1IGVpbmVuIG5ldWVuIENvZGUgYW4uIEF1ZiBqZWRlIEthcnRlIGtsaWNrc3Qg ZHUgZGFzIDxiPkJlYXJiZWl0ZW4tU3ltYm9sICjinI4pPC9iPiwgdW0gS8O8cnplbCwgQmV6ZWlj aG51bmcsIEhpbnRlcmdydW5kLSB1bmQgU2NocmlmdGZhcmJlIHp1IMOkbmRlcm4uIEVpbmUgTGl2 ZS1Wb3JzY2hhdSB6ZWlndCBkaXJla3QgZGFzIEVyZ2VibmlzLiBHZWzDtnNjaHQgd2lyZCDDvGJl ciBkZW4gTMO2c2NoZW4tQnV0dG9uIGltIEVkaXQtRGlhbG9nIOKAlCBiZXN0ZWhlbmRlIEVpbnRy w6RnZSBpbiBkZXIgUGxhbnVuZyBtaXQgZGllc2VtIENvZGUgYmxlaWJlbiBlcmhhbHRlbiwgd2Vy ZGVuIGFiZXIgb2huZSBGYXJiZSBkYXJnZXN0ZWxsdC48L3A+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cD48c3Ryb25nPkNvZGUgLyB0ZWNobmlzY2hlciBTY2hsw7xzc2VsOjwvc3Ryb25n PiBEZXIgQ29kZSBpc3QgZGVyIElkZW50aWZpZXIgaW4gZGVyIERhdGVuaGFsdHVuZyB1bmQgbWl0 IGFsbGVuIFBsYW51bmdzLUVpbnRyw6RnZW4gdmVya27DvHBmdC4gQmVpbSBOZXVhbmxlZ2VuIGZy ZWkgd8OkaGxiYXIsIGJlaW0gc3DDpHRlcmVuIEJlYXJiZWl0ZW4gc2NocmVpYmdlc2Now7x0enQg 4oCUIGVpbmUgw4RuZGVydW5nIHfDvHJkZSBhbGxlIGJlc3RlaGVuZGVuIEVpbnRyw6RnZSBpbmtv bnNpc3RlbnQgbWFjaGVuLiBXZW5uIGRlciBDb2RlIHVtYmVuYW5udCB3ZXJkZW4gbXVzczogbmV1 IGFubGVnZW4sIGFsdGUgRWludHLDpGdlIG1hbnVlbGwgw6RuZGVybiwgYWx0ZW4gQ29kZSBsw7Zz Y2hlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlRpcHA6PC9z dHJvbmc+IEZhcmJmYW1pbGllbiBrb25zaXN0ZW50IGVpbnNldHplbjogcm90ID0gRnLDvGhkaWVu c3QsIGJsYXUgPSBTcMOkdGRpZW5zdCwgZ3LDvG4gPSBOYWNodGRpZW5zdCwgZ3JhdSA9IEZyZWkv SE8sIHJvc8OpID0gS3JhbmtoZWl0LCBsaWxhID0gTGVocmdhbmcuIFNvIGVya2VubnQgZGFzIEF1 Z2Ugb2huZSBMZXNlbiBkaWUgU2NoaWNodC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8 ZGl2IGlkPSJzY2hpY2h0Y29kZS12b3JzY2hhdSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rp dj4KCiAgICAgICAgICAgICAgICA8IS0tIFRhYjogTWlrcm90ZWFtcyDigJQgUGVyc29uZW4tR3J1 cHBlbiBwcm8gU3RhbmRvcnQrRGllbnN0Z3J1cHBlIC0tPgogICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWluLXRhYi1taWtyb3RlYW1zIj4KICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAg ICAgICAgICAgPGgyPk1pa3JvdGVhbXM8L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8t a2V5PSJtaWtyb3RlYW1zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4g Y2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPldvenUgTWlrcm90ZWFtcz88c3BhbiBj bGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1 bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9k eSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhcyBzaW5kIE1pa3Jv dGVhbXM/PC9zdHJvbmc+IEVpbmUgTWlrcm90ZWFtLURlZmluaXRpb24gZmFzc3QgZGllIFBlcnNv bmVuIHp1c2FtbWVuLCBkaWUgYW4gZWluZW0gU3RhbmRvcnQgZ2VtZWluc2FtIGVpbmUgRGllbnN0 Z3J1cHBlIGJpbGRlbiAoei5CLiDigJ5LYW1lbi1BIiA9IGRpZSBER0wtVmVyYW50d29ydGxpY2hl biBkZXIgR3J1cHBlIEEgYW0gU3RhbmRvcnQgS2FtZW4pLiBEaWUgU3RhdGlzdGlrIChIZWF0bWFw ICsgVGFnZXMtQW50ZWlsZSBwcm8gVGVhbSkgd2VydGV0IGRhbWl0IGF1cywgd2llIG9mdCBkaWUg ZWluemVsbmVuIFRlYW1zIGdlbWVpbnNhbSBpbSBEaWVuc3Qgc2luZC48L3A+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlBmbGVnZTo8L3N0cm9uZz4gUHJvIEVpbnRyYWcg TmFtZSwgU3RhbmRvcnQtS8O8cnplbCAoMiBCdWNoc3RhYmVuIGF1cyBkZXIgU3RhbmRvcnRlLUxp c3RlLCB6LkIuIEtBL0hBL0JPKSwgRGllbnN0Z3J1cHBlbi1Lw7xyemVsIChBL0IvQy9XRCkgdW5k IGRpZSB6dWdld2llc2VuZW4gUGVyc29uZW4uIFJlaWhlbmZvbGdlIGluIGRlciBUYWJlbGxlIHdp cmt0IHNpY2ggYXVmIGRpZSBTdGF0aXN0aWstRGFyc3RlbGx1bmcgYXVzLjwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+RGVmYXVsdC1SZWloZW5mb2xnZSBuYWNoIFN0 YW5kb3J0Ojwvc3Ryb25nPiBIYXVwdHdhY2hlbiBvYmVuIChLQSwgSEEpLCBkYW5uIGRpZSBhbmRl cmVuLiBEaWUgSUQgaXN0IHRlY2huaXNjaCB1bmQgc29sbHRlIHNwcmVjaGVuZCBibGVpYmVuICh6 LkIuIDxjb2RlPnRfS0FfQTwvY29kZT4pLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9k aXY+CiAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgoKICAgICAgICAgICAgICAgICAgICA8 c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiIgaWQ9ImFkbWluLXNla3Rpb24tbWlrcm90ZWFt cyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXNla3Rpb24ta29w ZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+TWlrcm90ZWFtLUxpc3RlPC9oMz4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1taWtyb3RlYW0tbmV1 IiBjbGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWVzIE1pa3JvdGVhbTwvYnV0dG9uPgogICAgICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNs YXNzPSJhZG1pbi10YWJlbGxlIiBpZD0ibWlrcm90ZWFtcy10YWJlbGxlIj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6 NTBweCI+UG9zPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0 eWxlPSJ3aWR0aDoxMzBweCI+SUQ8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aCBzdHlsZT0id2lkdGg6OTBweCIgdGl0bGU9IlN0YW5kb3J0LUvDvHJ6ZWwgYXVzIGRlciBTdGFu ZG9ydGUtTGlzdGUgKEtBL0hBL0JPLy4uLikiPlN0YW5kb3J0PC90aD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo5MHB4IiB0aXRsZT0iRGllbnN0 Z3J1cHBlbi1Lw7xyemVsIChBL0IvQy9XRC8uLi4pIj5HcnVwcGU8L3RoPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjkwcHgiIHRpdGxlPSJBbnph aGwgenVnZXdpZXNlbmUgUGVyc29uZW4iPlBlcnNvbmVuPC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoyMDBweCI+QWt0aW9uZW48L3RoPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJt aWtyb3RlYW1zLXRib2R5Ij48L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxl PgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tbWlrcm90ZWFtcy1zcGVp Y2hlcm4iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPk1p a3JvdGVhbXMgc3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9u PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IFN0YW5k b3J0ZSAmIFNjaGljaHRmb2xnZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItc3RhbmRvcnRlIj4KICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgy PlN0YW5kb3J0ZSAmYW1wOyBTY2hpY2h0Zm9sZ2U8L2gyPgogICAgICAgICAgICAgICAgICAgICAg ICA8YnV0dG9uIGlkPSJidG4tc3RhbmRvcnQtbmV1IiBjbGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5l dWVyIFN0YW5kb3J0PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InN0 YW5kb3J0ZSIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xh c3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IFN0YW5kb3J0ZW4gJmFt cDsgU2NoaWNodGZvbGdlPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4g LyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5TdGFuZG9ydGU8L3N0cm9uZz4gc2luZCBkaWUgQXJiZWl0c29ydGUgZGVyIFZJMyAo QXJuc2JlcmcsIEJvY2h1bSwgRG9ydG11bmQg4oCmKS4gSmVkZXIgU3RhbmRvcnQgaGF0IGVpbmUg ZWlnZW5lIFNjaGljaHRyb3RhdGlvbiBmw7xyIGRpZSBEaWVuc3RncnVwcGVuIEEvQi9DLCBkaWUg aW0gSGVhZGVyIGRlciBQbGFudW5nIGFscyDigJ5TY2hpY2h0Zm9sZ2UiLVplaWxlIGFuZ2V6ZWln dCB3aXJkIChzb2Zlcm4gZGllIEFuemVpZ2UgaW0gVGFiIDxiPkZ1bmt0aW9uZW48L2I+IGFrdGl2 aWVydCBpc3QpLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Um90 YXRpb25zLU11c3Rlcjo8L3N0cm9uZz48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkFCQzwvYj4gPSBBLUZy w7xoIC8gQi1TcMOkdCAvIEMtTmFjaHQ8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxsaT48Yj5CQ0E8L2I+ID0gQi1GcsO8aCAvIEMtU3DDpHQgLyBBLU5hY2h0PC9saT4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+Q0FCPC9iPiA9IEMtRnLDvGggLyBB LVNww6R0IC8gQi1OYWNodDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxp PjxiPlBvb2w8L2I+ID0gaW5kaXZpZHVlbGxlIEVpbnRlaWx1bmcsIGtlaW5lIGZlc3RlIFJvdGF0 aW9uIChmw7xyIGZsZXhpYmxlIEVpbnNhdHpwb29scyk8L2xpPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Umh5 dGhtdXMgcGZsZWdlbjo8L3N0cm9uZz4gRGVyIGtvbmtyZXRlIFp5a2x1cyAoei5CLiB3w7ZjaGVu dGxpY2ggd2VjaHNlbG5kIG9kZXIgMy1UYWdlLVJoeXRobXVzKSB3aXJkIMO8YmVyIGRlbiBSaHl0 aG11cy1HZW5lcmF0b3IgcHJvIFN0YW5kb3J0IGVpbmdlc3RlbGx0LiBEZXIgR2VuZXJhdG9yIHNj aHJlaWJ0IGbDvHIgamVkZXMgRGF0dW0gZWluZSBTY2hpY2h0Zm9sZ2UgaW4gZGllIEpTT04g4oCU IGRpZSBBbnplaWdlIGltIEhlYWRlciB6aWVodCBkYW5uIGbDvHIgamVkZW4gVGFnIGRlbiBoaW50 ZXJsZWd0ZW4gV2VydC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25n PlNwYWx0ZW46PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5OYW1lPC9iPiDigJQgdm9sbGVy IFN0YW5kb3J0LU5hbWUgKHouQi4g4oCeQXJuc2JlcmciKS48L2xpPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxsaT48Yj5Lw7xyemVsPC9iPiDigJQgS3VyemZvcm0gZsO8ciBkaWUg T0UtWnVvcmRudW5nIGluIGRlciBQZXJzb25hbC1MaXN0ZSAoei5CLiDigJ5BUiIpLjwvbGk+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlBvb2w8L2I+IOKAlCBDaGVja2Jv eDsgc2NoYWx0ZXQgZGllIGZlc3RlIFJvdGF0aW9uIGF1cy48L2xpPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxsaT48Yj5TY2hpY2h0Zm9sZ2UgKDE0IFRhZ2UpPC9iPiDigJQgVm9y c2NoYXUgZGVyIG7DpGNoc3RlbiAxNCBUYWdlLCBmYXJibGljaCBjb2RpZXJ0LjwvbGk+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkFrdGlvbmVuPC9iPiDigJQgUmh5dGht dXMtR2VuZXJhdG9yIMO2ZmZuZW4gb2RlciBTdGFuZG9ydCBsw7ZzY2hlbi48L2xpPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw PjxzdHJvbmc+SGlud2Vpczo8L3N0cm9uZz4gRGllIFJlaWhlbmZvbGdlIGRlciBTdGFuZG9ydGUg aW4gZGVyIFRhYmVsbGUgYmVzdGltbXQgYXVjaCBkaWUgUmVpaGVuZm9sZ2UgZGVyIFplaWxlbiBp bSBIZWFkZXIgKG9iZW4gPSBlcnN0ZSBaZWlsZSkuPC9wPgogICAgICAgICAgICAgICAgICAgICAg ICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAg ICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIiBpZD0ic3RhbmRvcnRlLXRhYmVsbGUiPgog ICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NjBweCI+S8O8cnpl bDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo3 MHB4Ij5Qb29sPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U2NoaWNo dGZvbGdlIChlcnN0ZSAxNCBUYWdlIGFiIGhldXRlKTwvdGg+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxNjBweCI+QWt0aW9uZW48L3RoPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVh ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJzdGFuZG9ydGUtdGJvZHkiPjwv dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIGlkPSJidG4tc3RhbmRvcnRlLXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJpbWFl ciIgc3R5bGU9Im1hcmdpbi10b3A6MTZweCI+U3RhbmRvcnRlIHNwZWljaGVybjwvYnV0dG9uPgog ICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEVyc2NoZWlu dW5nc2JpbGQg4oCUIE1hcmtpZXJ1bmdzLUVkaXRvciBtaXQgTGl2ZS1Wb3JzY2hhdSAtLT4KICAg ICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10 YWItZXJzY2hlaW51bmdzYmlsZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRt aW4ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5FcnNjaGVpbnVuZ3NiaWxkPC9o Mj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjo2cHggMCAwIDA7Zm9u dC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPlZpc3VlbGxlIE1hcmtpZXJ1bmdl biBpbSBQbGFudGFmZWwtS29wZiB1bmQgYmVpbSBMaXZlLVN5bmMgaW5kaXZpZHVlbGwgYW5wYXNz ZW4uIMOEbmRlcnVuZ2VuIHNpbmQgc29mb3J0IHNpY2h0YmFyOyBzaWUgd2VyZGVuIGVyc3QgYmVp bSBLbGljayBhdWYg4oCeU3BlaWNoZXJuIiBwZXJzaXN0aWVydC48L3A+CiAgICAgICAgICAgICAg ICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZXJzY2hlaW51bmdzYmls ZC1pbmhhbHQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAg PCEtLSBUYWI6IFN0YXRpc3Rpay1MYXlvdXQgKFNVLW9ubHkpIOKAlCBSZWloZW5mb2xnZS9CcmVp dGUvU2ljaHRiYXJrZWl0CiAgICAgICAgICAgICAgICAgICAgIGFsbGVyIFN0YXRpc3Rpay1LYWNo ZWxuIGltIHZpc3VlbGxlbiA2LVNwYWx0ZW4tUmFzdGVyLiAtLT4KICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItc3RhdGlzdGlrLWxh eW91dCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxoMj5TdGF0aXN0aWstTGF5b3V0PC9oMj4KICAgICAgICAgICAg ICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjo2cHggMCAwIDA7Zm9udC1zaXplOjEycHg7Y29s b3I6dmFyKC0tdGV4dC1tdXRlZCkiPkJyZWl0ZSAoMToxIHZvbGwgwrcgMToyIGhhbGIgwrcgMToz IGRyaXR0ZWwpIHVuZCBSZWloZW5mb2xnZSBkZXIgU3RhdGlzdGlrLUthY2hlbG4gZsO8ciA8c3Ry b25nPmFsbGU8L3N0cm9uZz4gZmVzdGxlZ2VuLiBLbGljayBhdWYgZWluZSBLYWNoZWwgd2VjaHNl bHQgZGllIEJyZWl0ZSwgWmllaGVuIMOkbmRlcnQgZGllIFJlaWhlbmZvbGdlLCBkYXMgQXVnZSBz Y2hhbHRldCBzaWUgc2ljaHRiYXIvdW5zaWNodGJhci4gU2Nod2VyZSBQYW5lbHMgKEhlYXRtYXBz LCBEZXRhaWxhbmFseXNlKSBibGVpYmVuIGF1ZiB2b2xsZXIgQnJlaXRlLjwvcD4KICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzdGF0aXN0aWst bGF5b3V0LWluaGFsdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAg ICAgICA8IS0tIFRhYjogU3RhdGlzdGlrLUJ1aWxkZXIg4oCUIG1laHJkaW1lbnNpb25hbGVyIE5v Q29kZS1adXNhbW1lbmJhdQogICAgICAgICAgICAgICAgICAgICBlaWdlbmVyIEF1c3dlcnR1bmdl biAoRmlsdGVyIC0+IERpbWVuc2lvbmVuIC0+IEtlbm56YWhsIC0+CiAgICAgICAgICAgICAgICAg ICAgIERpYWdyYW1tdHlwKSBtaXQgTGl2ZS1GbHVzc2RpYWdyYW1tLCBUZXN0ZW4tVm9yc2NoYXUg dW5kCiAgICAgICAgICAgICAgICAgICAgIFNwZWljaGVybiBhbHMgS2FjaGVsLiAtLT4KICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWIt c3RhdGlzdGlrLWJ1aWxkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U3RhdGlzdGlrLUJ1aWxkZXI8L2gy PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOjZweCAwIDAgMDtmb250 LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+RWlnZW5lIEF1c3dlcnR1bmdlbiB6 dXNhbW1lbmtsaWNrZW46IERhdGVuIGZpbHRlcm4sIERpbWVuc2lvbmVuIHfDpGhsZW4sIEtlbm56 YWhsICsgRGlhZ3JhbW10eXAgYmVzdGltbWVuLiBEYXMgRmx1c3NkaWFncmFtbSB6ZWlndCBkaWUg TG9naWsgbGl2ZSwg4oCeVGVzdGVuIiBiYXV0IGRpZSBTdGF0aXN0aWsgc29mb3J0LiDigJ5BbHMg S2FjaGVsIHNwZWljaGVybiIgbWFjaHQgc2llIGbDvHIgYWxsZSBpbSBTdGF0aXN0aWstVGFiIHNp Y2h0YmFyIChBbm9yZG51bmcgaW0gU3RhdGlzdGlrLUxheW91dCkuPC9wPgogICAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InN0YXRpc3Rpay1idWls ZGVyLWluaGFsdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAg ICA8IS0tIFRhYjogS29uZmlndXJhdGlvbiArIEZ1bmt0aW9uZW4gKHBlciBTdWItTmF2IHVtc2No YWx0YmFyKSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVj a3QiIGlkPSJhZG1pbi10YWItZWluc3RlbGx1bmdlbiI+CiAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5Lb25maWd1 cmF0aW9uICZhbXA7IEZ1bmt0aW9uZW48L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoK ICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJhZG1pbi1zdWJuYXYiIGFyaWEtbGFiZWw9 IlN5c3RlbS1Lb25maWd1cmF0aW9uLVN1Yi1OYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAg ICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhZG1pbi1zdWJuYXYtYnRuIGFrdGl2 IiBkYXRhLXN1YnRhYj0iZWluc3RlbGx1bmdlbiI+R2xvYmFsZSBFaW5zdGVsbHVuZ2VuPC9idXR0 b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i YWRtaW4tc3VibmF2LWJ0biIgZGF0YS1zdWJ0YWI9ImZlYXR1cmVzIj5GdW5rdGlvbmVuIGVpbi0v YXVzYmxlbmRlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvbmF2PgoKICAgICAgICAg ICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiIgaWQ9ImFkbWluLXNla3Rp b24tZWluc3RlbGx1bmdlbiIgZGF0YS1zdWJ0YWItc2VrdGlvbj0iZWluc3RlbGx1bmdlbiI+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXNla3Rpb24ta29wZiI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+R2xvYmFsZSBFaW5zdGVsbHVuZ2VuPC9oMz4K ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxk ZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5PSJlaW5zdGVsbHVuZ2VuIiBv cGVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFk bWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IGRlbiBnbG9iYWxlbiBFaW5zdGVs bHVuZ2VuPHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBw ZW48L3NwYW4+PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFz cz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48 c3Ryb25nPlBsYW51bmdzamFocjo8L3N0cm9uZz4gRGFzIEphaHIsIGbDvHIgZGFzIGRpZSBQbGFu dW5nIGFrdHVlbGwgZ2VwZmxlZ3Qgd2lyZC4gQmVlaW5mbHVzc3QgZGllIEdlYnVydHN0YWctQW56 ZWlnZSAocmVjaG5ldCBBbHRlciBiYXNpZXJlbmQgYXVmIGRpZXNlbSBKYWhyKSB1bmQgZGllIFZv cnNjaGzDpGdlIGJlaW0gQW5sZWdlbiB2b24gRmVpZXJ0YWdlbi9GZXJpZW4uIFp1bSBKYWhyZXN3 ZWNoc2VsIGhpZXIgYWt0dWFsaXNpZXJlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHA+PHN0cm9uZz5JbmZvdGV4dDo8L3N0cm9uZz4gS3VyemVyIEhpbndlaXN0ZXh0ICh6 LkIuIOKAnlJlaWhlbmZvbGdlIGF1ZiBXdW5zY2ggZGVyIEbDvHN0IGFuZ2VwYXNzdC4gL1dpdCIp LCBkZXIgaW0gSW5mb3JtYXRpb25zZmVuc3RlciBvYmVuIHByb21pbmVudCBlcnNjaGVpbnQuIEd1 dCBnZWVpZ25ldCBmw7xyIGt1cnplIOKAnkJyZWFraW5nIE5ld3MiIGFuIGRpZSBOdXR6ZXIuPC9w PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+U3VwcG9ydGluZm86 PC9zdHJvbmc+IEFuc3ByZWNocGFydG5lciBiZWkgZmFjaGxpY2hlbiBvZGVyIHRlY2huaXNjaGVu IEZyYWdlbi4gRXJzY2hlaW50IGltIEluZm9ybWF0aW9uc2ZlbnN0ZXIgZGFydW50ZXIuIEhpZXIg VGVsZWZvbm51bW1lcm4sIE1haWxhZHJlc3NlbiB1bmQgZGllIGZhY2hsaWNoZSBWZXJhbnR3b3J0 dW5nIGFuZ2ViZW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJv bmc+U2NobGllw59pbmZvOjwvc3Ryb25nPiBIaW53ZWlzIHp1bSBBdXRvLVNodXRkb3duLVZlcmhh bHRlbiwgZGVyIGltIEluZm9ybWF0aW9uc2ZlbnN0ZXIgYW5nZXplaWd0IHdpcmQuIFBsYXR6aGFs dGVyIDxjb2RlPnttaW51dGVufTwvY29kZT4gd2lyZCBhdXRvbWF0aXNjaCBlcnNldHp0LjwvcD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlNwZWljaGVybjo8L3N0 cm9uZz4gw4RuZGVydW5nZW4gd2VyZGVuIG51ciBkdXJjaCBkZW4gU3BlaWNoZXJuLUJ1dHRvbiDD vGJlcm5vbW1lbi4gRWluIFJlbG9hZCBkZXIgU2VpdGUgaXN0IGRhbmFjaCBuaWNodCBuw7Z0aWcu PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZWlu c3RlbGx1bmdlbi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9y PSJlaW5zLWphaHIiPlBsYW51bmdzamFocjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2FsaWduLWl0ZW1zOmNl bnRlcjtmbGV4LXdyYXA6d3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxpbnB1dCB0eXBlPSJudW1iZXIiIGlkPSJlaW5zLWphaHIiIGNsYXNzPSJmb3JtLWlucHV0IiBt aW49IjIwMjAiIG1heD0iMjA5OSIgc3R5bGU9IndpZHRoOjEyMHB4Ij4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWphaHJlc3dlY2hzZWwiIGNsYXNz PSJidG4gYnRuLXNlayIgdHlwZT0iYnV0dG9uIiB0aXRsZT0iV2VjaHNlbHQgZGFzIFBsYW51bmdz amFociBhdWYgZGFzIGxpbmtzIGVpbmdlc3RlbGx0ZSBKYWhyIOKAlCB2b3Igb2RlciB6dXLDvGNr LiBCZXN0w6R0aWd1bmcgKyBSZWxvYWQsIGtlaW4gRGF0ZW52ZXJsdXN0LiI+QXVmIGVpbmdlc3Rl bGx0ZXMgSmFociB3ZWNoc2VsbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0i ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjZweCI+R2V3 w7xuc2NodGVzIEphaHIgbGlua3MgZWluc3RlbGxlbiB1bmQgYXVmIOKAnkF1ZiBlaW5nZXN0ZWxs dGVzIEphaHIgd2VjaHNlbG4iIGtsaWNrZW4g4oCUIGRpZSBBbnNpY2h0IHNwcmluZ3QgYXVmIGRh cyBnZXfDpGhsdGUgSmFociAoPGI+dm9yIG9kZXIgenVyw7xjazwvYj4pIHVuZCB3aXJkIG5ldSBn ZWxhZGVuLiBEYXMgYmxvw59lIMOEbmRlcm4gZGVzIEZlbGRlcyBzcGVpY2hlcnQgbm9jaCBuaWNo dHM7IGVyc3QgZGVyIEJ1dHRvbiB3ZWNoc2VsdC4gRGllIFBsYW51bmdzYW5zaWNodCB6ZWlndCB6 dXPDpHR6bGljaCBkZW4gSmFudWFyIGRlcyBGb2xnZWphaHJlcyBhbHMgVm9ycGxhbnVuZ3NiZXJl aWNoOyBiZXJlaXRzIGRvcnQgZ2VwbGFudGUgRGllbnN0ZSBibGVpYmVuIHVudGVyIGlocmVtIERh dHVtIGVyaGFsdGVuLiBLZWluIERhdGVudmVybHVzdC48L3NtYWxsPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJmb3JtLWdydXBwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZv cj0iZWlucy1wYXBpZXJrb3JiLXRhZ2UiPlBhcGllcmtvcmItQXVmYmV3YWhydW5nIChUYWdlKTwv bGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJl ciIgaWQ9ImVpbnMtcGFwaWVya29yYi10YWdlIiBjbGFzcz0iZm9ybS1pbnB1dCIgbWluPSIwIiBt YXg9IjM2NSIgc3R5bGU9IndpZHRoOjEyMHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8c21hbGwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7 bWFyZ2luLXRvcDo0cHgiPldpZSB2aWVsZSBUYWdlIHNvZnQtZ2Vsw7ZzY2h0ZSBQZXJzb25lbiBp bSBQYXBpZXJrb3JiIHZlcmJsZWliZW4sIGJldm9yIHNpZSBiZWltIG7DpGNoc3RlbiBMw7ZzY2gt Vm9yZ2FuZyBlbmRnw7xsdGlnIGVudGZlcm50IHdlcmRlbi4gPGNvZGU+MDwvY29kZT4gPSBzb2Zv cnQgYmVpbSBuw6RjaHN0ZW4gTMO2c2NoLVZvcmdhbmcgYXVmcsOkdW1lbi48L3NtYWxsPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGxhYmVsIGZvcj0iZWlucy1lbWFpbC1kb21haW4iPkUtTWFpbCBBdXRvLVN1ZmZpeCBEb21h aW48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0 ZXh0IiBpZD0iZWlucy1lbWFpbC1kb21haW4iIGNsYXNzPSJmb3JtLWlucHV0IiBwbGFjZWhvbGRl cj0iQHBvbGl6ZWkubnJ3LmRlIiBzdHlsZT0id2lkdGg6MjQwcHgiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxzbWFsbCBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS10 ZXh0LW11dGVkKTttYXJnaW4tdG9wOjRweCI+RGllc2UgRG9tYWluIHdpcmQgYXV0b21hdGlzY2gg YW5nZWjDpG5ndCwgd2VubiBiZWltIEJlYXJiZWl0ZW4gZWluZXIgUGVyc29uZW4tRS1NYWlsIG51 ciBkZXIgbG9rYWxlIFRlaWwgZWluZ2VnZWJlbiB3aXJkICh6LiBCLiA8ZW0+TXVlbGxlcjwvZW0+ IOKGkiA8ZW0+TXVlbGxlckBwb2xpemVpLm5ydy5kZTwvZW0+KS4gV2lya3QgbnVyLCB3ZW5uIGRh cyBGZWF0dXJlIDxlbT7igJ5FLU1haWw6IEF1dG8tU3VmZml4IjwvZW0+IGFrdGl2IGlzdC48L3Nt YWxsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGxhYmVsIGZvcj0iZWlucy1hdmF0YXItZ3JvZXNzZSI+UHJvZmlsYmlsZC1a aWVsZ3LDtsOfZSAoUGl4ZWwsIHF1YWRyYXRpc2NoKTwvbGFiZWw+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImVpbnMtYXZhdGFyLWdyb2Vz c2UiIGNsYXNzPSJmb3JtLWlucHV0IiBtaW49IjEwMCIgbWF4PSI2MDAiIHN0ZXA9IjIwIiBzdHls ZT0id2lkdGg6MTIwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBz dHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4tdG9wOjRw eCI+QmVpbSBVcGxvYWQgd2lyZCBkYXMgaG9jaGdlbGFkZW5lIEJpbGQgYXVmIGRpZXNlIEthbnRl bmzDpG5nZSBoZXJ1bnRlcmdlcmVjaG5ldCB1bmQgYWxzIEpQRUcgZ2VzcGVpY2hlcnQuIEdyw7bD n2VyID0gc2Now6RyZmVyLCBhYmVyIG1laHIgU3BlaWNoZXIgcHJvIEJpbGQuIFN0YW5kYXJkOiA8 Y29kZT4yMDA8L2NvZGU+ICh+MTDigJMyNSZuYnNwO0tCIHBybyBEYXRlaSkuIFdlcnRlIHp3aXNj aGVuIDEwMCB1bmQgNjAwIGVybGF1YnQuPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVpbnMt ZWRpdG9yLXRyaWdnZXIiPlNjaGljaHQtRWRpdG9yIMO2ZmZuZW4gbWl0PC9sYWJlbD4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJlaW5zLWVkaXRvci10cmlnZ2Vy IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjI0MHB4Ij4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icmVjaHRzIj5SZWNodHNrbGljayAo U3RhbmRhcmQpPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxv cHRpb24gdmFsdWU9ImxpbmtzIj5MaW5rc2tsaWNrPC9vcHRpb24+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Im1pdHRlIj5NYXVzcmFkLUtsaWNrIChN aXR0ZSk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlv biB2YWx1ZT0iZG9wcGVsIj5Eb3BwZWxrbGljazwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvc2VsZWN0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz bWFsbCBzdHlsZT0iZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTttYXJnaW4t dG9wOjRweCI+TGVndCBmZXN0LCB3ZWxjaGUgTWF1cy1Ba3Rpb24gaW4gZGVyIFBsYW50YWZlbCBk YXMgRHJvcGRvd24genVyIFNjaGljaHRhdXN3YWhsIMO2ZmZuZXQuIEVpbiBlaW5mYWNoZXIgPHN0 cm9uZz5MaW5rc2tsaWNrIG1hcmtpZXJ0PC9zdHJvbmc+IGRpZSBaZWxsZSBpbW1lciBudXIgKGF1 w59lciDigJ5MaW5rc2tsaWNrIiBpc3QgaGllciBnZXfDpGhsdCkuIFdpcmt0IGbDvHIgYWxsZSBO dXR6ZXI7IGdyZWlmdCBuYWNoIGRlbSBuw6RjaHN0ZW4gTmV1bGFkZW4gZGVyIFNlaXRlLjwvc21h bGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIiBzdHlsZT0icGFkZGluZzoxMnB4IDE0 cHg7YmFja2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRl ci1saWdodCk7Ym9yZGVyLXJhZGl1czo2cHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxzdHJvbmc+SW5mby0vU3VwcG9ydHRleHRlIHVuZCBCZWRpZW51bmdzLUhpbndlaXNlPC9z dHJvbmc+IHdlcmRlbiBpbSBUYWIgPGVtPuKAnkJlc2NocmlmdHVuZ2VuICZhbXA7IFRleHRlIjwv ZW0+IGdlcGZsZWd0IChtaXQgRm9ybWF0aWVydW5ncy1FZGl0b3IpLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlk PSJidG4tZWluc3RlbGx1bmdlbi1zcGVpY2hlcm4iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIHN0 eWxlPSJtYXJnaW4tdG9wOjEycHgiPkVpbnN0ZWxsdW5nZW4gc3BlaWNoZXJuPC9idXR0b24+CiAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlv bj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNla3Rpb24gdmVy c3RlY2t0IiBpZD0iYWRtaW4tc2VrdGlvbi1mZWF0dXJlcyIgZGF0YS1zdWJ0YWItc2VrdGlvbj0i ZmVhdHVyZXMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1zZWt0 aW9uLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkZ1bmt0aW9uZW4gZWlu LS9hdXNibGVuZGVuPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5 PSJmZWF0dXJlcyIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5Pjxz cGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dSBkZW4gRnVu a3Rpb25lbjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8gWnVrbGFw cGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+ PHN0cm9uZz5ad2Vjazo8L3N0cm9uZz4gSGllciBrw7ZubmVuIGVpbnplbG5lLCBrb21wbGV4ZXJl IEZ1bmt0aW9uZW4gZGVyIEFud2VuZHVuZyBlaW4tIG9kZXIgYXVzZ2VzY2hhbHRldCB3ZXJkZW4u IERhcyBoaWxmdCwgZGllIFVJIGplIG5hY2ggQW53ZW5kdW5nc2JlZGFyZiB6dSBlbnRzY2hsYWNr ZW4g4oCUIHdhcyBuaWNodCBnZWJyYXVjaHQgd2lyZCwgd2lyZCBhdXNnZWJsZW5kZXQuPC9wPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+VmVyZsO8Z2JhcmUgU2No YWx0ZXI6PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlNjaGljaHRmb2xnZW4t QW56ZWlnZTwvYj4g4oCUIHplaWd0IGltIEhlYWRlciBwcm8gU3RhbmRvcnQgZGllIEFCQy9CQ0Ev Q0FCLVJvdGF0aW9uLiBXZXIgZGllIFJvdGF0aW9uIG5pY2h0IGFrdGl2IHBmbGVndCwga2FubiBk YXMgYXVzYmxlbmRlbi48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 bGk+PGI+U3TDpHJrZS1BbnplaWdlPC9iPiDigJQgRnxTfE4tQmVzZXR6dW5nc3phaGwgcHJvIFRh ZyBpbSBIZWFkZXIuIEtlcm4tRmVhdHVyZSBmw7xyIGRpZSBCZXNldHp1bmdzcGxhbnVuZy48L2xp PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+UnVoZXplaXQtUHLD vGZ1bmc8L2I+IOKAlCB3YXJudCBiZWkgJmx0OyAxMWggUnVoZXplaXQgendpc2NoZW4gendlaSBT Y2hpY2h0ZW4gZGVyc2VsYmVuIFBlcnNvbi4gQXVzIEFyYlpHLVNpY2h0IHdpY2h0aWcuPC9saT4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkZyZW1kLcOEbmRlcnVu ZyBXYXJudW5nPC9iPiDigJQgQmVzdMOkdGlndW5nLCB3ZW5uIG1hbiBkaWUgU2NoaWNodCBlaW5l ciBhbmRlcmVuIFBlcnNvbiDDpG5kZXJ0LiBTY2jDvHR6dCB2b3IgdmVyc2VoZW50bGljaGVuIMOE bmRlcnVuZ2VuLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48 Yj5GYWlybmVzcy1BbnplaWdlPC9iPiDigJQgemVpZ3QgcHJvIFBlcnNvbiBkYXMgVmVyaMOkbHRu aXMgdm9uIFdvY2hlbmVuZC0vRmVpZXJ0YWdzZGllbnN0ZW4gaW4gZGVyIFN0YXRpc3Rpay1BdXN3 ZXJ0dW5nLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5N dXN0ZXItQW5hbHlzZTwvYj4g4oCUIGVya2VubnQgQXVmZsOkbGxpZ2tlaXRlbiAoei5CLiB3aWVk ZXJob2x0ZSBGcsO8aC1uYWNoLU5hY2h0LUZvbGdlbiwgdW5nbGVpY2hlIFZlcnRlaWx1bmcpLjwv bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5BYndlc2VuaGVp dHMtS2FjaGVsbjwvYj4g4oCUIHplaWd0IHBybyBQZXJzb24gZWluZSBrb21wYWt0ZSBBYndlc2Vu aGVpdHMtw5xiZXJzaWNodCAoS3JhbmsvVXJsYXViL0xHL0FaQSkuPC9saT4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPkRldGFpbC1UYWJlbGxlPC9iPiDigJQgYXVz a2xhcHBiYXJlIFN0YXRpc3Rpay1UYWJlbGxlIG1pdCBhbGxlbiBFaW56ZWx3ZXJ0ZW4uPC9saT4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPjxzdHJvbmc+U29mb3J0LVdpcmt1bmc6PC9zdHJvbmc+IMOEbmRlcnVu Z2VuIHdlcmRlbiBzb2ZvcnQgZ2VzcGVpY2hlcnQgdW5kIGdyZWlmZW4gZGlyZWt0IChvaG5lIFNl aXRlbi1SZWxvYWQpIOKAlCBkZXIgZW50c3ByZWNoZW5kZSBCZXJlaWNoIGVyc2NoZWludC92ZXJz Y2h3aW5kZXQgdW1nZWhlbmQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBpZD0iZmVhdHVyZXMtaW5oYWx0Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8 L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCgoKICAgICAgICAgICAgICAgIDwhLS0g VGFiOiBCYWNrdXBzIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZl cnN0ZWNrdCIgaWQ9ImFkbWluLXRhYi1iYWNrdXBzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkJhY2t1cHMg JmFtcDsgV2llZGVyaGVyc3RlbGx1bmc8L2gyPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0 dG9uIGlkPSJidG4tYmFja3VwLW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIj5OZXVlcyBCYWNr dXAgamV0enQgZXJzdGVsbGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1r ZXk9ImJhY2t1cHMiIG9wZW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFu IGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dSBCYWNrdXBzPHNw YW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+ PC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZv LWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XYXMgaXN0IGlu IGVpbmVtIEJhY2t1cD88L3N0cm9uZz4gRWluZSAxOjEtS29waWUgZGVyIERhdGVpIDxjb2RlPnBs YW51bmcuanNvbjwvY29kZT4g4oCUIGFsc28gYWxsZSBTY2hpY2h0LUVpbnRyw6RnZSB1bmQgS29t bWVudGFyZSB6dW0gWmVpdHB1bmt0IGRlcyBCYWNrdXBzLiBQZXJzb25lbmxpc3RlLCBGZWllcnRh Z2UsIEZlcmllbiB1bmQgYW5kZXJlIEFkbWluLUtvbmZpZ3VyYXRpb24gc2luZCA8ZW0+bmljaHQ8 L2VtPiBUZWlsIGRlcyBCYWNrdXBzIChkaWUgbGllZ2VuIGluIDxjb2RlPmFkbWluLmpzb248L2Nv ZGU+KS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhbm4gd2Vy ZGVuIEJhY2t1cHMgZXJzdGVsbHQ/PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5NYW51ZWxs PC9iPiDigJQgS2xpY2sgYXVmIOKAnk5ldWVzIEJhY2t1cCBqZXR6dCBlcnN0ZWxsZW4iIG9kZXIg YXVmIGRhcyBCYWNrdXAtU3ltYm9sIGluIGRlciBIYXVwdC1Ub29sYmFyLjwvbGk+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlZvciBEdW1teWRhdGVuPC9iPiDigJQgYXV0 b21hdGlzY2ggdm9yIGRlbSBFaW5zcGllbGVuIHZvbiBUZXN0ZGF0ZW4uPC9saT4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGI+Vm9yIFJlc2V0PC9iPiDigJQgYXV0b21hdGlz Y2ggdm9yIGRlbSDigJ5QbGFudW5nIHp1csO8Y2tzZXR6ZW4iLjwvbGk+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGxpPjxiPlZvciBXaWVkZXJoZXJzdGVsbHVuZzwvYj4g4oCUIGF1 dG9tYXRpc2NoIGJldm9yIGVpbiBCYWNrdXAgZWluZ2VzcGllbHQgd2lyZCAoU2ljaGVyaGVpdHNr b3BpZSBkZXIgYWt0dWVsbGVuIFBsYW51bmcpLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5TcGVpY2hl cm9ydDo8L3N0cm9uZz4gPGNvZGU+VkkzL2RhdGEvcGxhbnVuZ19iYWNrdXBfKi5qc29uPC9jb2Rl PiAoYmVpbSBXaW5kb3dzLURlcGxveW1lbnQ6IDxjb2RlPiVOV19IT01FJVxWSTNfREdMX1NlcnZl clxkYXRhXDwvY29kZT4pLiBEaWUgQmFja3VwcyBsaWVnZW4gbnVyIGxva2FsIGltIERhdGVub3Jk bmVyIHVuZCB3ZXJkZW4gbmljaHQgaW4gZ2VtZWluc2FtZW4gQWJsYWdlbiBtaXRnZWbDvGhydC48 L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkFrdGlvbmVuIHBybyBC YWNrdXA6PC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5XaWVkZXJoZXJzdGVsbGVuPC9iPiDi gJQgZXJzZXR6dCBkaWUgYWt0dWVsbGUgUGxhbnVuZyBkdXJjaCBkYXMgQmFja3VwLiBWb3JoZXIg d2lyZCBlaW5lIFNpY2hlcmhlaXRza29waWUgZGVyIGpldHppZ2VuIFBsYW51bmcgZXJzdGVsbHQg KDxjb2RlPnBsYW51bmdfYmFja3VwX3Zvcl93aWVkZXJoZXJzdGVsbHVuZ1/igKY8L2NvZGU+KSwg ZmFsbHMgZHUgdmVyc2VoZW50bGljaCBkYXMgZmFsc2NoZSBCYWNrdXAgZWluZ2VzcGllbHQgaGFz dC48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5IZXJ1bnRlcmxh ZGVuPC9iPiDigJQgbMOkZHQgZGllIEpTT04tRGF0ZWkgYWxzIERvd25sb2FkLiBOw7x0emxpY2gg ZsO8ciBBcmNoaXZpZXJ1bmcgb2RlciBXZWl0ZXJnYWJlLjwvbGk+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGxpPjxiPkzDtnNjaGVuPC9iPiDigJQgZW50ZmVybnQgZGllIEJhY2t1 cC1EYXRlaSBwZXJtYW5lbnQuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldpY2h0aWcgdm9yIGRlbSBX aWVkZXJoZXJzdGVsbGVuOjwvc3Ryb25nPiBBbSBiZXN0ZW4gdm9yaGVyIGFsbGUgQmVhcmJlaXRl ciBpbmZvcm1pZXJlbi4gRWluZSBXaWVkZXJoZXJzdGVsbHVuZyDDvGJlcnNjaHJlaWJ0IGRpZSBh a3RpdmUgUGxhbnVuZyBzb2ZvcnQg4oCUIMOEbmRlcnVuZ2VuLCBkaWUgbmFjaCBkZW0gWmVpdHB1 bmt0IGRlcyBCYWNrdXBzIGdlbWFjaHQgd3VyZGVuLCBzaW5kIGRhbm4gaW4gZGVyIFNpY2hlcmhl aXRza29waWUgYWJydWZiYXIsIGFiZXIgbmljaHQgbWVociBpbiBkZXIgYWt0aXZlbiBQbGFudW5n LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAg PC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImJhY2t1cC1saXN0ZS1lcmdl Ym5pcyIgY2xhc3M9Imdlbi1pbmZvIHZlcnN0ZWNrdCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MTJw eCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxl IiBpZD0iYmFja3VwLXRhYmVsbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+PHRy PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxODBweCI+RXJz dGVsbHQgYW08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0 aDoxMzBweCI+VHlwPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0i d2lkdGg6MjAwcHgiPkluaGFsdDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+ RGF0ZWluYW1lPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lk dGg6OTBweDt0ZXh0LWFsaWduOnJpZ2h0Ij5HcsO2w59lPC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MzAwcHgiPkFrdGlvbmVuPC90aD4KICAgICAgICAg ICAgICAgICAgICAgICAgPC90cj48L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dGJv ZHkgaWQ9ImJhY2t1cC10Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxl PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEhpbndl aXNlLVByb3Rva29sbCAobnVyIFN1cGVyVXNlcikgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLWhpbndlaXNlLXByb3Rva29s bCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxoMj5IaW53ZWlzZS1Qcm90b2tvbGw8L2gyPgogICAgICAgICAgICAg ICAgICAgICAgICA8cCBjbGFzcz0iYWRtaW4ta29wZi1zdWIiPkFsbGUgYWt0aXZlbiBJbi1BcHAt SGlud2Vpc2UgbWl0IEVtcGbDpG5nZXItTGlzdGUgdW5kIExlc2UtU3RhdHVzLiBOdXIgc2ljaHRi YXIgZsO8ciBTdXBlclVzZXIuIMOEbHRlcmUgSGlud2Vpc2UgKCZndDsgMzAgVGFnZSBVTkQgdm9u IGFsbGVuIEVtcGbDpG5nZXJuIGdlbGVzZW4pIHdlcmRlbiBhdXRvbWF0aXNjaCBhdXNnZXLDpHVt dC48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzcz0iaGlud2Vpc2UtcHJvdG9rb2xsLXRvb2xiYXIiPgogICAgICAgICAgICAgICAgICAg ICAgICA8bGFiZWw+VHlwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0i aHAtZmlsdGVyLXR5cCIgY2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoyMDBweCI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj7igJQgYWxsZSDi gJQ8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVl PSJpZGVudGl0YWV0X2dlYWVuZGVydCI+SWRlbnRpdMOkdCBnZcOkbmRlcnQ8L29wdGlvbj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJyb2xsZV9nZWFlbmRl cnQiPlJvbGxlIGdlw6RuZGVydDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxvcHRpb24gdmFsdWU9ImJhY2t1cF93aWVkZXJoZXJnZXN0ZWxsdCI+QmFja3VwIHdpZWRl cmhlcmdlc3RlbGx0PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9w dGlvbiB2YWx1ZT0icGxhbnVuZ19yZXNldCI+UGxhbnVuZyB6dXLDvGNrZ2VzZXR6dDwvb3B0aW9u PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImtyYW5rbWVs ZHVuZyI+S3JhbmttZWxkdW5nPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAg ICAgICAgICAgPGxhYmVsPkFiOiAgICA8aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9ImhwLWZpbHRlci12 b24iIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTQwcHgiPjwvbGFiZWw+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxsYWJlbD5CaXM6ICAgPGlucHV0IHR5cGU9ImRhdGUiIGlkPSJo cC1maWx0ZXItYmlzIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjE0MHB4Ij48L2xh YmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9 ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgaWQ9ImhwLWFrdHVhbGlzaWVyZW4iPkFrdHVhbGlzaWVy ZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAg ICA8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUgaGlud2Vpc2UtcHJvdG9rb2xsLXRhYmVsbGUi PgogICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+PHRyPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMjBweCI+V2FubjwvdGg+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjE1MHB4Ij5UeXA8L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMjBweCI+QXVzZ2Vsw7ZzdCB2b248 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPktvbnRleHQ8L3RoPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDozMDBweCI+RW1wZsOkbmdlciAm YW1wOyBMZXNlc3RhdHVzPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj48L3RoZWFk PgogICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9ImhpbndlaXNlLXByb3Rva29sbC10 Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAg ICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEltcG9ydCAoRXhjZWwpIC0tPgog ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNrdCIgaWQ9ImFkbWlu LXRhYi1pbXBvcnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYi PgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+RXhjZWwtSW1wb3J0PC9oMj4KICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRt aW4taW5mbyIgZGF0YS1pbmZvLWtleT0iaW1wb3J0IiBvcGVuPgogICAgICAgICAgICAgICAgICAg ICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+SGlu d2Vpc2UgenVtIEV4Y2VsLUltcG9ydDxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZr bGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwPjxzdHJvbmc+V2FzIHdpcmQgaW1wb3J0aWVydD88L3N0cm9uZz4gU2NoaWNodGVpbnRy w6RnZSB1bmQgS29tbWVudGFyZSBhdXMgZWluZXIgRXhjZWwtRGF0ZWkgaW0gRm9ybWF0IGRlciBi aXNoZXJpZ2VuIDxjb2RlPjIwMjYtVkkzLURHTC1QbGFudW5nLnhsc208L2NvZGU+LiBEaWUgRGF0 ZWkgd2lyZCBpbSBCcm93c2VyIGdlbGVzZW4g4oCUIGVzIHdlcmRlbiBrZWluZSBEYXRlbiBhbiBl aW5lbiBleHRlcm5lbiBTZXJ2ZXIgZ2VzZW5kZXQuPC9wPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHA+PHN0cm9uZz5FcndhcnRldGVzIFNoZWV0LUxheW91dDo8L3N0cm9uZz48L3A+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGxpPlNoZWV0IG1pdCBOYW1lbiA8Yj7igJ5QbGFudW5nIjwvYj48L2xpPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5EYXR1bXMtU3BhbHRlbiBhYiBTcGFsdGUgPGI+ SjwvYj4gKEV4Y2VsLVNlcmlhbC1EYXRlcyBpbiBaZWlsZSAxKTwvbGk+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGxpPlBlcnNvbmVuLVplaWxlbiBhYiBaZWlsZSA8Yj4yMTwvYj4s IDxiPk5hY2huYW1lIGluIFNwYWx0ZSBDPC9iPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGxpPlplbGx3ZXJ0ZSA9IFNjaGljaHRjb2RlcyAoPGNvZGU+Ri1ER0w8L2NvZGU+ LCA8Y29kZT5Vcmw8L2NvZGU+LCDigKYpPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8bGk+WmVsbC1Lb21tZW50YXJlIChFeGNlbC1Lb21tZW50YXJlKSB3ZXJkZW4gYWxzIEtv bW1lbnRhciDDvGJlcm5vbW1lbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Vs PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5BYmdsZWljaDo8L3N0cm9u Zz48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGxpPjxiPlBlcnNvbmVuPC9iPiB3ZXJkZW4gw7xiZXIgZGVuIDxiPk5h Y2huYW1lbjwvYj4gZ2VtYXRjaHQuIFVuYmVrYW5udGUgUGVyc29uZW4gb2RlciBOYW1lbiBtaXQg bWVocmVyZW4gVHJlZmZlcm4gbcO8c3NlbiBtYW51ZWxsIHp1Z2VvcmRuZXQgb2RlciBpZ25vcmll cnQgd2VyZGVuLjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxiPlNj aGljaHRjb2RlczwvYj4gd2VyZGVuIGdlZ2VuIGRpZSBha3RpdmVuIENvZGVzIGFiZ2VnbGljaGVu LiBCZWthbm50ZSA8Y29kZT5pbXBvcnRBbGlhc2U8L2NvZGU+ICh6LkIuIDxjb2RlPkZXREY8L2Nv ZGU+IOKGkiA8Y29kZT5GLVdERjwvY29kZT4pIHdlcmRlbiBhdXRvbWF0aXNjaCBlcnNldHp0LiBV bmJla2FubnRlIENvZGVzIHplaWd0IGRlciBEaWFsb2cgbWl0IGVpbmVtIERyb3Bkb3duIHp1bSBN YXBwaW5nIG9kZXIg4oCeaWdub3JpZXJlbiIuPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPk1vZHVzOjwv c3Ryb25nPiBEZXIgSW1wb3J0IGVyc2V0enQgPGI+YWxsZTwvYj4gRWludHLDpGdlIHVuZCBLb21t ZW50YXJlIGltIGdld8OkaGx0ZW4gWmVpdHJhdW0ga29tcGxldHQuIFZvciBkZW0gU2NocmVpYmVu IHdpcmQgYXV0b21hdGlzY2ggZWluIEJhY2t1cCBkZXIgPGNvZGU+cGxhbnVuZy5qc29uPC9jb2Rl PiBlcnN0ZWxsdC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkFi bGF1Zjo8L3N0cm9uZz4gPGVtPkRhdGVpIGF1c3fDpGhsZW4g4oaSIEFuYWx5c2UgbMOkdWZ0IOKG kiBNYXBwaW5nLURpYWxvZyDihpIgSW1wb3J0IHN0YXJ0ZW4uPC9lbT48L3A+CiAgICAgICAgICAg ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbXAtdXBsb2FkLWJveCI+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxsYWJlbCBmb3I9ImltcC1kYXRlaSIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIg c3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iaW1wLWRhdGVpIiBhY2NlcHQ9Ii54bHN4LC54bHNtLC54 bHMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhj ZWwtRGF0ZWkgd8OkaGxlbgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAg ICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaW1wLWRhdGVpLW5hbWUiIHN0eWxlPSJtYXJnaW4t bGVmdDoxMnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj7igJQgbm9j aCBrZWluZSBEYXRlaSBnZXfDpGhsdCDigJQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAg IDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iaGlsZmUtaWNvbiIgYXJpYS1sYWJlbD0iSGls ZmUgRXhjZWwtRm9ybWF0IGFuemVpZ2VuIiB0aXRsZT0iRXJ3YXJ0ZXQgZGllIFZJMy1ER0wtRXhj ZWwtVm9ybGFnZSIgZGF0YS1oaWxmZT0iRXJ3YXJ0ZXQgZGllIFZJMy1ER0wtRXhjZWwtVm9ybGFn ZTogUGVyc29uZW4gYWIgWmVpbGUgMjEgKE5hY2huYW1lIGluIFNwYWx0ZSBDKSwgRGF0dW1zYW5n YWJlbiBpbiBaZWlsZSAxIChhYiBTcGFsdGUgSikuIFNwcmVjaGJsYXNlbi1Lb21tZW50YXJlIHdl cmRlbiBhbHMgVGFnLUtvbW1lbnRhcmUgdWViZXJub21tZW4uIEZvcm1hdCAueGxzeC8ueGxzbS8u eGxzLiI+PzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAg ICAgICAgIDxkaXYgaWQ9ImltcC1zdGF0dXMiIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHgiPjwvZGl2 PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEV4cG9y dCAoRXhjZWwvQ1NWKSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2 ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItZXhwb3J0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkV4Y2VsLUV4 cG9ydDwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAg PGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9ImV4cG9ydCIgb3Blbj4K ICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWluLWluZm8t Y2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1bSBFeHBvcnQ8c3BhbiBjbGFzcz0iYWRtaW4taW5m by1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhcyB3aXJkIGV4cG9ydGllcnQ/PC9zdHJvbmc+ IFBybyBQZXJzb24gdW5kIFRhZyBtaXQgRWludHJhZyBlaW5lIFplaWxlIG1pdCA8Yj5OYW1lLCBE aWVuc3RncnVwcGUsIERhdHVtLCBNb25hdCwgVGFnLCBXb2NoZW50YWcsIEtXLCBTY2hpY2h0PC9i PiAoQ29kZSkgdW5kIDxiPlNjaGljaHQtS2xhcnRleHQ8L2I+LiBFcyB3ZXJkZW4gbnVyIFRhZ2Ug bWl0IGhpbnRlcmxlZ3RlciBTY2hpY2h0IGF1c2dlZ2ViZW4uPC9wPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHA+PHN0cm9uZz5JbmZvYm94IHVudGVyaGFsYjo8L3N0cm9uZz4gT3B0aW9u YWwgZm9sZ3QgdW50ZXIgZGVyIFRhYmVsbGUgZWluIHp3ZWl0ZXIgQmxvY2sg4oCeSGlud2Vpc2Ug enUgVGFnZW4gbWl0IEJlc29uZGVyaGVpdGVuIiDigJQgZGllIGltIFBsYW4tSGVhZGVyIGVya2Fu bnRlbiA8Yj5GZWllcnRhZ2UsIEZlcmllbiB1bmQgU29uZGVydGVybWluZTwvYj4gZGVzIGV4cG9y dGllcnRlbiBaZWl0cmF1bXMgKERhdHVtLCBUeXAsIEJlemVpY2hudW5nLCBCZXNjaHJlaWJ1bmcp LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+VW1mYW5nOjwvc3Ry b25nPiBHYW56ZXMgUGxhbnVuZ3NqYWhyLCBlaW56ZWxuZS9tZWhyZXJlIEthbGVuZGVyd29jaGVu ICh2b27igJNiaXMpIG9kZXIgZWluIGZyZWllciBEYXR1bXNiZXJlaWNoLiA8c3Ryb25nPlBlcnNv bmVua3JlaXM6PC9zdHJvbmc+IGFsbGUsIGJlc3RpbW10ZSBEaWVuc3RncnVwcGVuIG9kZXIgZWlu emVsbmUgUGVyc29uZW4gKD0gaW5kaXZpZHVlbGxlciBFeHBvcnQpLjwvcD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Rm9ybWF0Ojwvc3Ryb25nPiBGb3JtYXRpZXJ0ZXMg PGI+WExTWDwvYj4gKHBhc3NlbmRlIFNwYWx0ZW5icmVpdGVuLCBUaXRlbHplaWxlLCBBdXRvLUZp bHRlciDDvGJlciBkZXIgVGFiZWxsZSkgb2RlciA8Yj5DU1Y8L2I+IChVVEYtOCBtaXQgQk9NLCBT ZW1pa29sb24tZ2V0cmVubnQg4oCUIGRpcmVrdCBpbiBFeGNlbC1ERSBsZXNiYXIpLiBBbGxlcyBs w6R1ZnQgaW0gQnJvd3NlcjsgZXMgd2VyZGVuIGtlaW5lIERhdGVuIGFuIGVpbmVuIGV4dGVybmVu IFNlcnZlciBnZXNlbmRldC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg ICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJl eHBvcnQtaW5oYWx0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAg ICAgIDwhLS0gVGFiOiBUZXN0ZGF0ZW4gLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJh ZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLXRlc3RkYXRlbiI+CiAgICAgICAgICAg ICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAg IDxoMj5UZXN0ZGF0ZW4gLyBEdW1teWRhdGVuPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1p bmZvLWtleT0idGVzdGRhdGVuIiBvcGVuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFy eT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+SGlud2Vpc2UgenUgVGVz dGRhdGVuIC8gUmVzZXQ8c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAv IFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48 c3Ryb25nPldvZsO8cj88L3N0cm9uZz4gRGllc2UgRnVua3Rpb25lbiBzaW5kIGF1c3NjaGxpZcOf bGljaCBmw7xyIFRlc3QtLCBEZW1vLSB1bmQgRWluYXJiZWl0dW5nc3p3ZWNrZSBnZWRhY2h0LiBC ZWlkZSBlcnN0ZWxsZW4gPGI+YXV0b21hdGlzY2ggZWluIEJhY2t1cDwvYj4gZGVyIGFrdHVlbGxl biBQbGFudW5nLCBiZXZvciBzaWUgYXVzZ2Vmw7xocnQgd2VyZGVuIOKAlCBkaWUgQmFja3VwcyBs aWVnZW4gaW4gPGNvZGU+VkkzL2RhdGEvcGxhbnVuZ19iYWNrdXBfdm9yXyouanNvbjwvY29kZT4u PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5EdW1teWRhdGVuIGVp bnNwaWVsZW46PC9zdHJvbmc+IEbDvGxsdCBkZW4gWmVpdHJhdW0gKGFrdHVlbGwgSmFudWFyIGJp cyBBcHJpbCAyMDI2KSBtaXQgcmVhbGlzdGlzY2hlbiBTY2hpY2h0cGzDpG5lbiwgVXJsYXViLCBL cmFua2hlaXQsIExlaHJnw6RuZ2VuLCBFaW5zYXR6dHJhaW5pbmcgdW5kIEFaLUF1c2dsZWljaC4g RGllIEdydXBwZW4gQS9CL0Mgcm90aWVyZW4gd8O2Y2hlbnRsaWNoIGR1cmNoIEZyw7xoLS9TcMOk dC0vTmFjaHRkaWVuc3QuIFBlcnNvbmVubGlzdGUsIEdydXBwZW5iZXplaWNobnVuZ2VuIHVuZCBF aW5zdGVsbHVuZ2VuIGJsZWliZW4gdW52ZXLDpG5kZXJ0LjwvcD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwPjxzdHJvbmc+UGxhbnVuZyB6dXLDvGNrc2V0emVuOjwvc3Ryb25nPiBMw7Zz Y2h0IDxiPmFsbGU8L2I+IFNjaGljaHQtRWludHLDpGdlIHVuZCBLb21tZW50YXJlLiBEaWUgUGVy c29uZW5saXN0ZSwgR3J1cHBlbiwgRmVpZXJ0YWdlIHVuZCBhbGxlIGFuZGVyZW4gRWluc3RlbGx1 bmdlbiBibGVpYmVuIGVyaGFsdGVuLiBCYWNrdXAgd2lyZCB2b3JoZXIgZXJzdGVsbHQuPC9wPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XaWVkZXJoZXJzdGVsbHVuZzo8 L3N0cm9uZz4gQXVzIEJhY2t1cC1EYXRlaWVuIGthbm4gYWt0dWVsbCBudXIgcGVyIERhdGVpbWFu aXB1bGF0aW9uICg8Y29kZT5wbGFudW5nX2JhY2t1cF8uLi48L2NvZGU+IHVtYmVuZW5uZW4genUg PGNvZGU+cGxhbnVuZy5qc29uPC9jb2RlPikgd2llZGVyaGVyZ2VzdGVsbHQgd2VyZGVuLiBCYWNr dXBzIHdlcmRlbiBudXIgaW0gRGF0ZW5vcmRuZXIgbG9rYWwgZ2VoYWx0ZW4uPC9wPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Wb3JzaWNodCBpbSBQcm9kdWt0aXZiZXRy aWViOjwvc3Ryb25nPiBJbSBsYXVmZW5kZW4gUGxhbnVuZ3NiZXRyaWViIGRpZXNlIEJ1dHRvbnMg bnVyIG1pdCBBYnNwcmFjaGUgbnV0emVuISBBdWNoIHdlbm4gQmFja3VwcyBlcnN0ZWxsdCB3ZXJk ZW4g4oCUIGJlaSBha3RpdmVuIEJlYXJiZWl0ZXJuIGVudHN0ZWhlbiBLb25mbGlrdGUuPC9wPgog ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2RldGFp bHM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4OyBnYXA6MTZw eDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweCI+CiAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgc3R5bGU9ImZsZXg6MTsgbWluLXdpZHRoOjI4MHB4OyBib3JkZXI6MXB4IHNvbGlk IHZhcigtLXJhaG1lbik7IGJvcmRlci1yYWRpdXM6OHB4OyBwYWRkaW5nOjIwcHgiPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJtYXJnaW46MCAwIDhweCAwIj5EdW1teWRh dGVuIGVpbnNwaWVsZW48L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9 ImNvbG9yOnZhcigtLXRleHQtZ2VkaW1tdCk7IG1hcmdpbjowIDAgMTZweCAwIj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGw7xsbHQgSmFudWFyIGJpcyBBcHJpbCAyMDI2IG1pdCBy ZWFsaXN0aXNjaGVuIFNjaGljaHRwbMOkbmVuLCBVcmxhdWIsIEtyYW5raGVpdCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMZWhyZ8OkbmdlbiwgRWluc2F0enRyYWluaW5nIHVuZCBB Wi1BdXNnbGVpY2guIEdydXBwZW4gQS9CL0Mgcm90aWVyZW4gd8O2Y2hlbnRsaWNoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZHVyY2ggRnLDvGgtL1Nww6R0LS9OYWNodGRpZW5zdC4g RGllIGJlc3RlaGVuZGVuIFBlcnNvbmVuIHVuZCBCZXplaWNobnVuZ2VuIGJsZWliZW4gZXJoYWx0 ZW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8YnV0dG9uIGlkPSJidG4tZHVtbXlkYXRlbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFl ciI+RHVtbXlkYXRlbiBlaW5zcGllbGVuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg IDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7IG1pbi13 aWR0aDoyODBweDsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1yYWhtZW4pOyBib3JkZXItcmFkaXVz OjhweDsgcGFkZGluZzoyMHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHls ZT0ibWFyZ2luOjAgMCA4cHggMCI+UGxhbnVuZyB6dXLDvGNrc2V0emVuPC9oMz4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWdlZGltbXQpOyBt YXJnaW46MCAwIDE2cHggMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTMO2c2No dCA8c3Ryb25nPmFsbGU8L3N0cm9uZz4gRWludHLDpGdlIHVuZCBLb21tZW50YXJlLiBEaWUgUGVy c29uZW5saXN0ZSwgR3J1cHBlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZWll cnRhZ2UgdW5kIGFsbGUgYW5kZXJlbiBFaW5zdGVsbHVuZ2VuIGJsZWliZW4gZXJoYWx0ZW4uCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8YnV0dG9uIGlkPSJidG4tcmVzZXQiIGNsYXNzPSJidG4gYnRuLWdlZmFociI+UGxhbnVuZyB6 dXLDvGNrc2V0emVuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbGV4OjE7IG1pbi13aWR0aDoyODBweDsg Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1yYWhtZW4pOyBib3JkZXItcmFkaXVzOjhweDsgcGFkZGlu ZzoyMHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0ibWFyZ2luOjAg MCA4cHggMCI+UHJvdG9rb2xsIGzDtnNjaGVuPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LWdlZGltbXQpOyBtYXJnaW46MCAwIDE2cHgg MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVlcnQgZGFzIDxzdHJvbmc+TG9n YnVjaDwvc3Ryb25nPiB1bmQgZGllIDxzdHJvbmc+QVBJLUxvZy1EYXRlaTwvc3Ryb25nPi4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5udm9sbCB2b3IgZGVtIExpdmUtR2FuZyBv ZGVyIG5hY2ggVGVzdHMsIHVtIERpYWdub3NlLVNwdXJlbiB6dSBlbnRmZXJuZW4uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRWluIGVpbnplbG5lciBMb2didWNoLUVpbnRyYWcgPGNv ZGU+cHJvdG9rb2xsLmdlbG9lc2NodDwvY29kZT4gYmxlaWJ0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXJoYWx0ZW4sIGRhbWl0IGRhcyBFcmVpZ25pcyBzZWxic3QgbmFjaHZvbGx6 aWVoYmFyIGJsZWlidC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1wcm90b2tvbGwtbG9lc2NoZW4iIGNs YXNzPSJidG4gYnRuLWdlZmFociI+UHJvdG9rb2xsIGzDtnNjaGVuPC9idXR0b24+CiAgICAgICAg ICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAg ICAgICAgICAgICAgIDxkaXYgaWQ9InRlc3RkYXRlbi1lcmdlYm5pcyIgY2xhc3M9InZlcnN0ZWNr dCIgc3R5bGU9Im1hcmdpbi10b3A6MTZweCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4K CiAgICAgICAgICAgICAgICA8IS0tIFRhYjogQmVzY2hyaWZ0dW5nZW4gJiBUZXh0ZSAoTWVyZ2Ug 4oCUIEJlemVpY2hudW5nZW4gKyBJbmZvcm1hdGlvbiAmIEhpbGZlKSAtLT4KICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItYmV6ZWlj aG51bmdlbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxoMj5CZXNjaHJpZnR1bmdlbiAmYW1wOyBUZXh0ZTwvaDI+ CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxzZWN0aW9u IGNsYXNzPSJhZG1pbi1zZWt0aW9uIiBpZD0iYWRtaW4tc2VrdGlvbi1iZXplaWNobnVuZ2VuIj4K ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tc2VrdGlvbi1rb3BmIj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5VSS1CZXplaWNobnVuZ2VuPC9oMz4KICAg ICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRh aWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5PSJiZXplaWNobnVuZ2VuIiBvcGVu PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWlu LWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1IEJlemVpY2hudW5nZW48c3BhbiBjbGFz cz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1h cnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJv ZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+V2FzIGlzdCBk YXM/PC9zdHJvbmc+IEFsbGUgaGFydCBpbSBDb2RlIGhpbnRlcmxlZ3RlbiBVSS1MYWJlbHMgKFRp dGVsIGRlciBBcHAsIE5hbWVuIGRlciBSZWl0ZXIgaW0gSGVhZGVyLCDigKYpIGxhc3NlbiBzaWNo IGhpZXIgaW5kaXZpZHVlbGwgYmVuZW5uZW4uIE7DvHR6bGljaCwgd2VubiBpbnRlcm4gYW5kZXJl IEJlZ3JpZmZlIMO8YmxpY2ggc2luZCBvZGVyIGVpbiBUYWIgdW1iZW5hbm50IHdlcmRlbiBzb2xs LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkZ1bmt0aW9u Ojwvc3Ryb25nPiBMZWVyZSBGZWxkZXIgZmFsbGVuIHp1csO8Y2sgYXVmIGRlbiBEZWZhdWx0LVdl cnQuIDxlbT5TcGVpY2hlcm48L2VtPiBsZWd0IGRpZSBXZXJ0ZSBpbiA8Y29kZT5hZG1pbi5qc29u LmJlemVpY2hudW5nZW48L2NvZGU+IGFiIOKAlCBzaWNodGJhciB3aXJkIGRpZSDDhG5kZXJ1bmcg bmFjaCBlaW5lbSBTZWl0ZW4tUmVsb2FkIChGNSkgZsO8ciBhbGxlIE51dHplci48L3A+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5adXLDvGNrc2V0emVuPC9zdHJv bmc+IGzDtnNjaHQgYWxsZSBpbmRpdmlkdWVsbGVuIFdlcnRlIHVuZCBzdGVsbHQgZGllIERlZmF1 bHRzIHdpZWRlciBoZXIuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICAgICAg PHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIiBpZD0iYmV6ZWljaG51bmdlbi10YWJlbGxlIj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBz dHlsZT0id2lkdGg6MTgwcHgiPlNjaGzDvHNzZWw8L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjIyMHB4Ij5EZWZhdWx0PC90aD4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkVpZ2VuZSBCZXplaWNobnVuZzwvdGg+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHkgaWQ9 ImJlemVpY2hudW5nZW4tdGJvZHkiPjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv dGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtn YXA6OHB4O21hcmdpbi10b3A6MTJweCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0 dG9uIGlkPSJidG4tYmV6ZWljaG51bmdlbi1yZXNldCIgY2xhc3M9ImJ0biBidG4tc2VrIiB0aXRs ZT0iQWxsZSBXZXJ0ZSBhdWYgZGVuIERlZmF1bHQgenVyw7xja3NldHplbiI+WnVyw7xja3NldHpl bjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWJl emVpY2hudW5nZW4tc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIj5CZXplaWNobnVu Z2VuIHNwZWljaGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgICAgICAgICAgIDxociBjbGFz cz0iYWRtaW4tc2VrdGlvbi10cmVubmVyIj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24g Y2xhc3M9ImFkbWluLXNla3Rpb24iIGlkPSJhZG1pbi1zZWt0aW9uLWluZm9oaWxmZSI+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLXNla3Rpb24ta29wZiI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8aDM+SW5mb3JtYXRpb24gJmFtcDsgSGlsZmU8L2gzPgog ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRl dGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9ImluZm9oaWxmZSIgb3Blbj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1p bmZvLWNoZXYiPuKWuDwvc3Bhbj5IaW53ZWlzZSB6dSBJbmZvcm1hdGlvbiAmYW1wOyBIaWxmZTxz cGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFu Pjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LWluZm8tYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5X YXMgd2lyZCBoaWVyIGdlcGZsZWd0Pzwvc3Ryb25nPiBBbGxlIFRleHRlLCBkaWUgaW0gSW5mby1G ZW5zdGVyIGVyc2NoZWluZW4gKEtsaWNrIGF1ZiDigJ5JbmZvIiBvYmVuIHJlY2h0cyBpbiBkZXIg S29wZmxlaXN0ZSkuIERpZSBFZGl0b3JlbiB1bnRlcnN0w7x0emVuIGVpbmZhY2hlIEZvcm1hdGll cnVuZyDDvGJlciBkaWUgVG9vbGJhcjogPGI+RmV0dDwvYj4sIDxlbT5LdXJzaXY8L2VtPiwgPHU+ VW50ZXJzdHJpY2hlbjwvdT4sIEF1ZnrDpGhsdW5nZW4sIEVpbnLDvGNrZW4vQXVzcsO8Y2tlbi48 L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5SZWloZW5mb2xn ZSBpbSBJbmZvLUZlbnN0ZXI6PC9zdHJvbmc+IEluZm90ZXh0IOKGkiBTdXBwb3J0LUluZm8g4oaS IFN1cGVyVXNlci1MaXN0ZSDihpIgQWxsZ2VtZWluZSBIaWxmZSDihpIgQmVkaWVudW5ncy1IaW53 ZWlzZSDihpIgU2NoaWNodGNvZGUtTGVnZW5kZSAoYXV0b21hdGlzY2ggZ2VuZXJpZXJ0KS48L3A+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5CZWRpZW51bmdzLUhp bndlaXNlOjwvc3Ryb25nPiBKZWRlciBMaXN0ZW5laW50cmFnIHdpcmQgYWxzIGVpZ2VuZXIgQnVs bGV0IGdlcmVuZGVydC4gRm9ybWF0IDxjb2RlPlRpdGVsOiBCZXNjaHJlaWJ1bmc8L2NvZGU+IChl aW4gRG9wcGVscHVua3Qgendpc2NoZW4gVGl0ZWwgdW5kIEVya2zDpHJ1bmcpIGzDpHNzdCBkZW4g VGl0ZWwgYXV0b21hdGlzY2ggZmV0dCB3ZXJkZW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwPjxzdHJvbmc+U2NobGllw58tSW5mbzo8L3N0cm9uZz4gV2lyZCBpbSBJbmZv LUZlbnN0ZXIgPGI+bmljaHQ8L2I+IGFuZ2V6ZWlndCwgc29uZGVybiBiZWltIGF1dG9tYXRpc2No ZW4gU2VydmVyLVN0b3AgbmFjaCBJbmFrdGl2aXTDpHQuIFBsYXR6aGFsdGVyIDxjb2RlPnttaW51 dGVufTwvY29kZT4gd2lyZCBkdXJjaCBkaWUga29uZmlndXJpZXJ0ZSBTY2hsaWXDn3plaXQgZXJz ZXR6dC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICAgICAgPC9kZXRhaWxzPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJk aXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxOHB4O21heC13aWR0aDo5MDBw eCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8bGFiZWwgc3R5bGU9ImRpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1i b3R0b206NnB4Ij5JbmZvdGV4dCAoZXJzY2hlaW50IGltIEluZm8tRmVuc3Rlcik8L2xhYmVsPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icnRlLXRvb2xiYXIiIGRhdGEt cnRlLWZvcj0iaWgtaW5mb3RleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxl PSJGZXR0IChDdHJsK0IpIj48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4i IGRhdGEtY21kPSJpdGFsaWMiIHRpdGxlPSJLdXJzaXYgKEN0cmwrSSkiPjxlbT5JPC9lbT48L2J1 dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRv biIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJ1bmRlcmxpbmUiIHRpdGxlPSJVbnRlcnN0cmlj aGVuIChDdHJsK1UpIj48dT5VPC91PjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNt ZD0iaW5zZXJ0VW5vcmRlcmVkTGlzdCIgdGl0bGU9IkF1ZnrDpGhsdW5nIj7igKI8L2J1dHRvbj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xh c3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbnNlcnRPcmRlcmVkTGlzdCIgdGl0bGU9Ik51bW1lcmll cnQiPjEuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xh c3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJvdXRkZW50IiB0aXRs ZT0iQXVzcsO8Y2tlbiI+4oekPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5kZW50 IiB0aXRsZT0iRWlucsO8Y2tlbiI+4oelPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEt Y21kPSJyZW1vdmVGb3JtYXQiIHRpdGxlPSJGb3JtYXRpZXJ1bmcgZW50ZmVybmVuIj7inJU8L2J1 dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdiBpZD0iaWgtaW5mb3RleHQiIGNsYXNzPSJydGUtZWRpdG9yIiBjb250 ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiIHN0eWxlPSJtaW4taGVpZ2h0Ojgw cHgiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAg ICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0i ZGlzcGxheTpibG9jaztmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo2cHgiPlN1cHBvcnQt SW5mbyAoQW5zcHJlY2hwYXJ0bmVyIGJlaSBGcmFnZW4pPC9sYWJlbD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJ0ZS10b29sYmFyIiBkYXRhLXJ0ZS1mb3I9ImloLXN1 cHBvcnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxlPSJGZXR0IChDdHJsK0Ip Ij48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpdGFs aWMiIHRpdGxlPSJLdXJzaXYgKEN0cmwrSSkiPjxlbT5JPC9lbT48L2J1dHRvbj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1i dG4iIGRhdGEtY21kPSJ1bmRlcmxpbmUiIHRpdGxlPSJVbnRlcnN0cmljaGVuIChDdHJsK1UpIj48 dT5VPC91PjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNs YXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0VW5vcmRl cmVkTGlzdCIgdGl0bGU9IkF1ZnrDpGhsdW5nIj7igKI8L2J1dHRvbj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRh dGEtY21kPSJpbnNlcnRPcmRlcmVkTGlzdCIgdGl0bGU9Ik51bW1lcmllcnQiPjEuPC9idXR0b24+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwv c3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRv biIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJvdXRkZW50IiB0aXRsZT0iQXVzcsO8Y2tlbiI+ 4oekPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBl PSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5kZW50IiB0aXRsZT0iRWlucsO8 Y2tlbiI+4oelPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4g Y2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJyZW1vdmVGb3Jt YXQiIHRpdGxlPSJGb3JtYXRpZXJ1bmcgZW50ZmVybmVuIj7inJU8L2J1dHRvbj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp diBpZD0iaWgtc3VwcG9ydCIgY2xhc3M9InJ0ZS1lZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT0idHJ1 ZSIgc3BlbGxjaGVjaz0idHJ1ZSIgc3R5bGU9Im1pbi1oZWlnaHQ6MTAwcHgiPjwvZGl2PgogICAg ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0iZGlzcGxheTpibG9jaztm b250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo2cHgiPkFsbGdlbWVpbmUgSGlsZmUgKGZyZWll ciBUZXh0KTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJy dGUtdG9vbGJhciIgZGF0YS1ydGUtZm9yPSJpaC1oaWxmZSI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNt ZD0iYm9sZCIgdGl0bGU9IkZldHQgKEN0cmwrQikiPjxzdHJvbmc+Qjwvc3Ryb25nPjwvYnV0dG9u PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBj bGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Iml0YWxpYyIgdGl0bGU9Ikt1cnNpdiAoQ3RybCtJKSI+ PGVtPkk8L2VtPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0 b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9InVuZGVybGluZSIgdGl0 bGU9IlVudGVyc3RyaWNoZW4gKEN0cmwrVSkiPjx1PlU8L3U+PC9idXR0b24+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0 ZS1idG4iIGRhdGEtY21kPSJpbnNlcnRVbm9yZGVyZWRMaXN0IiB0aXRsZT0iQXVmesOkaGx1bmci PuKAojwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Imluc2VydE9yZGVyZWRMaXN0IiB0 aXRsZT0iTnVtbWVyaWVydCI+MS48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8c3BhbiBjbGFzcz0icnRlLXNlcCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9 Im91dGRlbnQiIHRpdGxlPSJBdXNyw7xja2VuIj7ih6Q8L2J1dHRvbj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRh dGEtY21kPSJpbmRlbnQiIHRpdGxlPSJFaW5yw7xja2VuIj7ih6U8L2J1dHRvbj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icnRlLXNlcCI+PC9zcGFuPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i cnRlLWJ0biIgZGF0YS1jbWQ9InJlbW92ZUZvcm1hdCIgdGl0bGU9IkZvcm1hdGllcnVuZyBlbnRm ZXJuZW4iPuKclTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpaC1oaWxmZSIgY2xhc3M9InJ0ZS1l ZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3BlbGxjaGVjaz0idHJ1ZSIgc3R5bGU9Im1p bi1oZWlnaHQ6MTIwcHgiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxs IHN0eWxlPSJkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi10b3A6 NHB4Ij5QbGF0eiBmw7xyIGdlbmVyZWxsZSBIaWxmZXRleHRlLCBGQVFzLCBWZXJ3ZWlzZS4gRXJz Y2hlaW50IGltIEluZm8tRmVuc3RlciDDvGJlciBkZW4gQmVkaWVudW5ncy1IaW53ZWlzZW4uPC9z bWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImRpc3Bs YXk6YmxvY2s7Zm9udC13ZWlnaHQ6NjAwO21hcmdpbi1ib3R0b206NnB4Ij5CZWRpZW51bmdzLUhp bndlaXNlIChqZWRlciBCdWxsZXQgPSBlaW5lIFplaWxlIC8gZWluIExpc3RlbnB1bmt0KTwvbGFi ZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJydGUtdG9vbGJhciIg ZGF0YS1ydGUtZm9yPSJpaC1iZWRpZW51bmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQi IHRpdGxlPSJGZXR0IChDdHJsK0IpIj48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0 ZS1idG4iIGRhdGEtY21kPSJpdGFsaWMiIHRpdGxlPSJLdXJzaXYgKEN0cmwrSSkiPjxlbT5JPC9l bT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9 ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJ1bmRlcmxpbmUiIHRpdGxlPSJVbnRl cnN0cmljaGVuIChDdHJsK1UpIj48dT5VPC91PjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBk YXRhLWNtZD0iaW5zZXJ0VW5vcmRlcmVkTGlzdCIgdGl0bGU9IkF1ZnrDpGhsdW5nIj7igKI8L2J1 dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRv biIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbnNlcnRPcmRlcmVkTGlzdCIgdGl0bGU9Ik51 bW1lcmllcnQiPjEuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw YW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJvdXRkZW50 IiB0aXRsZT0iQXVzcsO8Y2tlbiI+4oekPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0i aW5kZW50IiB0aXRsZT0iRWlucsO8Y2tlbiI+4oelPC9idXR0b24+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4i IGRhdGEtY21kPSJyZW1vdmVGb3JtYXQiIHRpdGxlPSJGb3JtYXRpZXJ1bmcgZW50ZmVybmVuIj7i nJU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaWgtYmVkaWVudW5nIiBjbGFzcz0icnRlLWVkaXRv ciIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBzcGVsbGNoZWNrPSJ0cnVlIiBzdHlsZT0ibWluLWhl aWdodDoxNjBweCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgc3R5 bGU9ImRpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7bWFyZ2luLXRvcDo0cHgi Plp1csO8Y2tzZXR6ZW4gYXVmIERlZmF1bHQ6IEVkaXRvciBsZWVyZW4gdW5kIHNwZWljaGVybiDi gJQgZGVyIEluZm8tQmxvY2sgemVpZ3QgZGFubiBkaWUgZWluZ2ViYXV0ZW4gRGVmYXVsdC1IaW53 ZWlzZS48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHls ZT0iZGlzcGxheTpibG9jaztmb250LXdlaWdodDo2MDA7bWFyZ2luLWJvdHRvbTo2cHgiPlNjaGxp ZcOfLUluZm8gKEhpbndlaXMgYmVpbSBBdXRvLVNodXRkb3duKTwvbGFiZWw+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9ImloLXNjaGxpZXNzaW5mbyIgY2xhc3M9ImZv cm0taW5wdXQiIHJvd3M9IjMiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iei5CLiAn RGllc2UgQW53ZW5kdW5nIHNjaGxpZcOfdCBuYWNoIHttaW51dGVufSBNaW51dGVuIEluYWt0aXZp dMOkdCBhdXRvbWF0aXNjaC4nIj48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHNtYWxsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21h cmdpbi10b3A6NHB4Ij5QbGF0emhhbHRlciA8Y29kZT57bWludXRlbn08L2NvZGU+IHdpcmQgZHVy Y2ggZGllIFNjaGxpZcOfemVpdCBlcnNldHp0LiBLZWluIFJpY2gtVGV4dCDigJQgd2lyZCBhbHMg cmVpbmVyIFRleHQgdmVyd2VuZGV0Ljwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW4t Ym90dG9tOjZweCI+SW1wcmVzc3VtIChlcnNjaGVpbnQgw7xiZXIgZGVuIEJ1dHRvbiDigJ5JbXBy ZXNzdW0iIGltIEluZm8tRmVuc3Rlcik8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0icnRlLXRvb2xiYXIiIGRhdGEtcnRlLWZvcj0iaWgtaW1wcmVzc3VtIj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xh c3M9InJ0ZS1idG4iIGRhdGEtY21kPSJib2xkIiB0aXRsZT0iRmV0dCAoQ3RybCtCKSI+PHN0cm9u Zz5CPC9zdHJvbmc+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1 dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaXRhbGljIiB0aXRs ZT0iS3Vyc2l2IChDdHJsK0kpIj48ZW0+STwvZW0+PC9idXR0b24+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRh LWNtZD0idW5kZXJsaW5lIiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48 L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icnRl LXNlcCI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Imluc2VydFVub3JkZXJlZExpc3Qi IHRpdGxlPSJBdWZ6w6RobHVuZyI+4oCiPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0i aW5zZXJ0T3JkZXJlZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNz PSJydGUtYnRuIiBkYXRhLWNtZD0ib3V0ZGVudCIgdGl0bGU9IkF1c3LDvGNrZW4iPuKHpDwvYnV0 dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9u IiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLDvGNrZW4iPuKH pTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJy dGUtc2VwIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0 eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0icmVtb3ZlRm9ybWF0IiB0aXRs ZT0iRm9ybWF0aWVydW5nIGVudGZlcm5lbiI+4pyVPC9idXR0b24+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imlo LWltcHJlc3N1bSIgY2xhc3M9InJ0ZS1lZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3Bl bGxjaGVjaz0idHJ1ZSIgc3R5bGU9Im1pbi1oZWlnaHQ6MTgwcHgiPjwvZGl2PgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHNtYWxsIHN0eWxlPSJkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigt LXRleHQtbXV0ZWQpO21hcmdpbi10b3A6NHB4Ij5Jbml0aWFsIG1pdCBlaW5lbSBzaW5udm9sbGVu IERlZmF1bHQgYmVmw7xsbHQgKFBvbGl6ZWlwcsOkc2lkaXVtIERvcnRtdW5kIC8gVkkgMyAvIHRl Y2huaXNjaGUgS29uemVwdGlvbiAvIExpemVuemhpbndlaXNlIC8gSGFmdHVuZ3NhdXNzY2hsdXNz KS4gQml0dGUgQW5zY2hyaWZ0IGVyZ8OkbnplbiB1bmQgZ2dmLiBhbiBkaWUgdGF0c8OkY2hsaWNo ZSBEaWVuc3RzdGVsbGUgYW5wYXNzZW4uIDxzdHJvbmc+TmljaHQgZ2Vsw7ZzY2h0PC9zdHJvbmc+ IHdpcmQgZGVyIE5vdGZhbGwtSGlud2VpcyBhdWYgUEhLIFJvZXNnZW4g4oCUIGRlciBpc3QgaW0g SW1wcmVzc3Vtcy1Nb2RhbCBmZXN0IHVudGVuIHZlcmFua2VydCB1bmQga2FubiBoaWVyIG5pY2h0 IGVudGZlcm50IHdlcmRlbi48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlk PSJidG4taW5mb2hpbGZlLXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgc3R5bGU9 Im1hcmdpbi10b3A6MTJweCI+SW5mb3JtYXRpb24gJmFtcDsgSGlsZmUgc3BlaWNoZXJuPC9idXR0 b24+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICAgICAgICAgPC9kaXY+ CgogICAgICAgICAgICAgICAgPCEtLSBUYWI6IEJlemVpY2hudW5nZW4gJiBMaXN0ZW4g4oCUIGVk aXRpZXJiYXJlIFN0YW1tZGF0ZW4tTGlzdGVuCiAgICAgICAgICAgICAgICAgICAgIChEaWVuc3Rn cmFkZSwgRnVua3Rpb25lbikgc3RhdHQgaGFydGNvZGllcnRlIENvZGUtS29uc3RhbnRlbi4gLS0+ CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3RlY2t0IiBpZD0iYWRt aW4tdGFiLWxpc3RlbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29w ZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5CZXplaWNobnVuZ2VuICZhbXA7IExpc3Rl bjwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRl dGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9Imxpc3RlbiI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKW uDwvc3Bhbj5XYXMgd2lyZCBoaWVyIGdlcGZsZWd0PzxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJh ZGdlIj5BdWZrbGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4taW5mby1ib2R5Ij4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPjxzdHJvbmc+RGllbnN0Z3JhZGU8L3N0cm9uZz4g4oCUIGRpZSBEaWVu c3RncmFkLUF1c3dhaGwgaW4gZGVyIFBlcnNvbmFsdmVyd2FsdHVuZyAoei5CLiBQT0ssIFBISywg RVBISykuIFJlaWhlbmZvbGdlIGJlc3RpbW10IGRpZSBTb3J0aWVydW5nIGltIERyb3Bkb3duOiA8 ZW0+b2JlbiA9IGjDtmhlciBnZXN0ZWxsdDwvZW0+LiBWZXJ3ZW5kZSBkZW4gU3Rlcm4gPGNvZGU+ KjwvY29kZT4gZsO8ciBad2lzY2hlbnN0dWZlbiB3aWUgPGNvZGU+UEhLKjwvY29kZT4gKEExMiB6 d2lzY2hlbiBQSEsgQTExIHVuZCBFUEhLIEExMykuPC9wPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHA+PHN0cm9uZz5GdW5rdGlvbmVuPC9zdHJvbmc+IOKAlCBTdGFtbS1GdW5rdGlvbiBl aW5lciBQZXJzb24gKERHTCwgV0RGLCBXYWNobGVpdHVuZywgLi4uKS4gRGVyIDxzdHJvbmc+UmFu Zzwvc3Ryb25nPiBiZXN0aW1tdCBkaWUgVmVyYW50d29ydHVuZ3MtUmVpaGVuZm9sZ2UgaW4gZGVy IFNjaGljaHQgKDAgPSBow7ZjaHN0ZSBWZXJhbnR3b3J0dW5nKS4gUGVyc29uZW4gbWl0IGdsZWlj aGVtIFJhbmcgd2VyZGVuIMO8YmVyIGlocmUgcm9oZSBQb3NpdGlvbnMtWmFobCBzb3J0aWVydC48 L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlZvcnNpY2h0IGJlaW0g TMO2c2NoZW46PC9zdHJvbmc+IFBlcnNvbmVuLCBkaWUgZWluZW4gZW50ZmVybnRlbiBEaWVuc3Rn cmFkIG9kZXIgZWluZSBlbnRmZXJudGUgRnVua3Rpb24gdHJhZ2VuLCBiZWhhbHRlbiBkZW4gYWx0 ZW4gV2VydCwga8O2bm5lbiBpaG4gYWJlciBuaWNodCBtZWhyIG5ldSBhdXN3w6RobGVuLCBiaXMg ZXIgd2llZGVyIGluIGRlciBMaXN0ZSBzdGVodC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAg IDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KCiAgICAgICAgICAgICAgICAg ICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNla3Rpb24iIGlkPSJhZG1pbi1zZWt0aW9uLWxpc3Rl bi1kaWVuc3RncmFkZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LXNla3Rpb24ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+RGllbnN0Z3Jh ZGU8L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWRpZW5z dGdyYWQtbmV1IiBjbGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWVyIERpZW5zdGdyYWQ8L2J1dHRv bj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAg IDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIgaWQ9ImRpZW5zdGdyYWRlLXRhYmVsbGUiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0 eWxlPSJ3aWR0aDo2MHB4Ij5SYW5nPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHRoPkJlemVpY2hudW5nPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoxMzBweCI+QWt0aW9uZW48L3RoPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Ro ZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJkaWVuc3RncmFkZS10 Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAg ICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFkbWluLWhpbndlaXMiPjxlbT5SZWloZW5mb2xnZSBw ZXIg4oaRIOKGkyDDpG5kZXJuLiBIb2VjaHN0ZXIgRGllbnN0Z3JhZCB6dWVyc3QuPC9lbT48L3A+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1kaWVuc3RncmFkZS1zcGVp Y2hlcm4iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIHN0eWxlPSJtYXJnaW4tdG9wOjEycHgiPkRp ZW5zdGdyYWRlIHNwZWljaGVybjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlv bj4KCiAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNla3Rpb24iIGlk PSJhZG1pbi1zZWt0aW9uLWxpc3Rlbi1mdW5rdGlvbmVuIj4KICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0iYWRtaW4tc2VrdGlvbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxoMz5GdW5rdGlvbmVuPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi dXR0b24gaWQ9ImJ0bi1mdW5rdGlvbi1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+TmV1ZSBG dW5rdGlvbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIiBpZD0iZnVua3Rpb25l bi10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NjBweCI+UG9zPC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoPkJlemVpY2hudW5nPC90aD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo4MHB4IiB0aXRsZT0iMCA9IGhvZWNo c3RlIFZlcmFudHdvcnR1bmcsIDk5ID0gdW5yZWxldmFudC4gUGVyc29uZW4gbWl0IGdsZWljaGVt IFJhbmcgd2VyZGVuIGR1cmNoIGRpZSByb2hlIFBvc2l0aW9ucy1aYWhsIHNvcnRpZXJ0LiI+UmFu ZzwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lk dGg6MTQwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJXZW5uIGRlYWt0aXZpZXJ0LCB3ZXJk ZW4gUGVyc29uZW4gbWl0IGRpZXNlciBGdW5rdGlvbiBOSUNIVCBpbiBkZXIgUGxhbnVuZ3NhbnNp Y2h0LCBpbSBXb2NoZW5wbGFuIHVuZCBpbSBQZXJzLiBQbGFuIGFuZ2V6ZWlndCDigJQgYmxlaWJl biBhYmVyIGluIGRlciBQZXJzb25hbHZlcndhbHR1bmcgcGZsZWdiYXIuIj5JbiBQbGFudW5nIHNp Y2h0YmFyPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxl PSJ3aWR0aDoxMzBweCI+QWt0aW9uZW48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJmdW5rdGlvbmVuLXRib2R5Ij48L3Rib2R5Pgog ICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8 cCBjbGFzcz0iYWRtaW4taGlud2VpcyI+PGVtPlJlaWhlbmZvbGdlIHBlciDihpEg4oaTIMOkbmRl cm4uPC9lbT48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1mdW5r dGlvbmVuLXNwZWljaGVybiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgc3R5bGU9Im1hcmdpbi10 b3A6MTJweCI+RnVua3Rpb25lbiBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAg ICA8L3NlY3Rpb24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCgogICAgICAgICAgICAgICAgPCEt LSBUYWI6IEUtTWFpbC1Wb3JsYWdlbiDigJQgS2FydGVuLUxheW91dCAoRmluZGluZyBDLjcgLyBT cGVjIEYuMSkgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi10YWIgdmVyc3Rl Y2t0IiBpZD0iYWRtaW4tdGFiLWVtYWlsdm9ybGFnZW4iPgogICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDI+RS1NYWls LVZvcmxhZ2VuPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAg ICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtleT0iZW1haWx2b3Js YWdlbiIgb3Blbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9 ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPldvenUgZGllc2UgVm9ybGFnZW4/PHNwYW4gY2xh c3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1t YXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHki PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+SGllciB3ZXJkZW4gQmV0cmVmZiB1bmQg VGV4dCBhbGxlciBFLU1haWwtVm9ybGFnZW4gZ2VwZmxlZ3QuIFZhcmlhYmxlbiB3aWUgPGNvZGU+ e2RhdHVtfTwvY29kZT4gb2RlciA8Y29kZT57cGVyc29uX25hbWV9PC9jb2RlPiB3ZXJkZW4gYmVp bSDDlmZmbmVuIGRlciBNYWlsIGF1dG9tYXRpc2NoIGR1cmNoIGtvbmtyZXRlIFdlcnRlIGVyc2V0 enQuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5WZXJzYW5kIGF1 c3NjaGxpZcOfbGljaCDDvGJlciBkYXMgU3RhbmRhcmQtTWFpbHByb2dyYW1tIChPdXRsb29rKTwv c3Ryb25nPiDigJQgYmVpbSBhdXNsw7ZzZW5kZW4gRXJlaWduaXMgKHouQi4gRWludHJhZyBlaW5l ciBLcmFua21lbGR1bmcpIMO2ZmZuZXQgc2ljaCBlaW5lIHZvcmF1c2dlZsO8bGx0ZSBNYWlsIG1p dCBFbXBmw6RuZ2VybiwgQmV0cmVmZiB1bmQgVGV4dC4gRHUgcHLDvGZzdCBkaWUgTWFpbCB1bmQg dmVyc2NoaWNrc3Qgc2llIG1hbnVlbGwgcGVyIEtsaWNrIGF1ZiDigJ5TZW5kZW4iLiBLZWluIGF1 dG9tYXRpc2NoZXIgVmVyc2FuZC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48 c3Ryb25nPkF1dG8tVHJpZ2dlciBha3RpdmllcmVuPC9zdHJvbmc+IOKAlCBpbSBFZGl0b3ItTW9k YWwgZWluZXIgVm9ybGFnZSBwcm8gVHJpZ2dlciBlaW5zdGVsbGJhciAoQWt0aXZpZXJlbiArIEVt cGbDpG5nZXIgd8OkaGxlbikuIFNvbGFuZ2UgZWluIFRyaWdnZXIgZGVha3RpdmllcnQgaXN0LCDD tmZmbmV0IHNpY2ggYmVpbSBFcmVpZ25pcyBrZWluIFBvcHVwLjwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPjxzdHJvbmc+RGVmaXppdC1CcmllZmluZzwvc3Ryb25nPiDigJQgd2ly ZCBtYW51ZWxsIHBlciBCdXR0b24gaW0gVGFiIDxlbT5QcsO8ZnVuZzwvZW0+IGF1c2dlbMO2c3Qg KGtlaW4gU2NoZWR1bGVyKS4gRGVyIEJ1dHRvbiDDtmZmbmV0IE91dGxvb2sgbWl0IGVpbmVyIMOc YmVyc2ljaHQgYWxsZXIgVW50ZXJiZXNldHp1bmdlbiBkZXIgbsOkY2hzdGVuIDQgV29jaGVuLjwv cD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9k ZXRhaWxzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImVtYWlsdm9ybGFnZW4taW5oYWx0 Ij48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdXBwb3J0LU1haWwtVm9ybGFnZTog bnVyIGZ1ZXIgUGhpbGlwcCBSb2VzZ2VuIHNpY2h0YmFyLgogICAgICAgICAgICAgICAgICAgICAg ICAgV2lyZCBwZXIgSlMgaW4gYXBwLmpzIC8gYWRtaW4uanMgZWluZ2VibGVuZGV0LAogICAgICAg ICAgICAgICAgICAgICAgICAgd2VubiBaLmJlbnV0emVyIG1pdCBOVzA1MzYwOSBtYXRjaGVkLiAt LT4KICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiB2ZXJz dGVja3QiIGlkPSJhZG1pbi1zZWt0aW9uLXN1cHBvcnRtYWlsIj4KICAgICAgICAgICAgICAgICAg ICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tc2VrdGlvbi1rb3BmIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxoMz5TdXBwb3J0LU1haWwtVm9ybGFnZSAoSW1wcmVzc3Vtcy1Nb2RhbCk8L2gz PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1kaXJ0eS1o aW53ZWlzIiBzdHlsZT0iZm9udC1zdHlsZTppdGFsaWMiPk51ciBmw7xyIFBISyBSb2VzZ2VuIHNp Y2h0YmFyPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAg ICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InN1 cHBvcnRtYWlsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNs YXNzPSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5XYXMgaXN0IGRhcz88c3BhbiBjbGFzcz0i YWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHki PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkhpZXIga2FubnN0IGR1IGRlbiBC b2R5IGRlciBTdXBwb3J0LU1haWwgYW5wYXNzZW4sIGRpZSBiZWltIEtsaWNrIGF1ZiA8ZW0+4oCe U3VwcG9ydC1BbmZyYWdlIHBlciBFLU1haWwiPC9lbT4gaW0gSW1wcmVzc3Vtcy1Nb2RhbCB2b3Jh dXNnZWbDvGxsdCB3aXJkLiBQbGFpbi1UZXh0LCBrZWluIEhUTUwg4oCUIE91dGxvb2sgw7xiZXJu aW1tdCdzIDE6MS48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9u Zz5QbGF0emhhbHRlcjwvc3Ryb25nPiAod2VyZGVuIGJlaW0gU2VuZGVuIGF1dG9tYXRpc2NoIGVy c2V0enQpOjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Y29kZT57bndfa2VubnVuZ308L2NvZGU+ IOKAlCBXaW5kb3dzLVVzZXIgZGVzIEFic2VuZGVycyAoei4mbmJzcDtCLiA8Y29kZT5QT0xJWkVJ XE5XMDU1ODAxPC9jb2RlPik8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8bGk+PGNvZGU+e2FrdHVlbGxlX2Fuc2ljaHR9PC9jb2RlPiDigJQgVGFiLCBkZW4gZGVyIFVz ZXIgenVsZXR6dCBvZmZlbiBoYXR0ZTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxsaT48Y29kZT57ZGF0dW19PC9jb2RlPiDigJQgaGV1dGUsIDxjb2RlPmRkLm1tLmpq amo8L2NvZGU+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxj b2RlPnt1aHJ6ZWl0fTwvY29kZT4g4oCUIGpldHp0LCA8Y29kZT5oaDptbTwvY29kZT48L2xpPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGNvZGU+e2F1ZmxvZXN1bmd9 PC9jb2RlPiDigJQgVmlld3BvcnQsIHouJm5ic3A7Qi4gPGNvZGU+MTkyMHgxMDgwPC9jb2RlPjwv bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Y29kZT57YXBwX2ph aHJ9PC9jb2RlPiDigJQgV2VydCBhdXMgYWRtaW4uanNvbjwvbGk+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxsaT48Y29kZT57YnJvd3Nlcn08L2NvZGU+IOKAlCBCcm93c2Vy LVVzZXItQWdlbnQgKG1heCAxMjAgWmVpY2hlbik8L2xpPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9u Zz5FbXBmw6RuZ2VyIHVuZCBCZXRyZWZmPC9zdHJvbmc+IHNpbmQgaGFydGNvZGllcnQgKDxjb2Rl PnBoaWxpcHAucm9lc2dlbkBwb2xpemVpLm5ydy5kZTwvY29kZT4gLyA8Y29kZT5WSTMgREdMIFBs YW51bmcgLSBEb3J0bXVuZDwvY29kZT4pIOKAlCBuaWNodCDDvGJlciBkaWVzZW4gRWRpdG9yIMOk bmRlcmJhci48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFy ZWEgaWQ9InN1cHBvcnRtYWlsLXRleHQiIGNsYXNzPSJmb3JtLWlucHV0IiByb3dzPSIyMiIgc3R5 bGU9IndpZHRoOjEwMCU7Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1l bmxvLENvbnNvbGFzLG1vbm9zcGFjZTtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjUiIHBs YWNlaG9sZGVyPSIobGVlciA9IGVpbmdlYmF1dGVyIERlZmF1bHQgd2lyZCB2ZXJ3ZW5kZXQpIj48 L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tdG9w OjEwcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDtmbGV4LXdyYXA6 d3JhcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc3VwcG9y dG1haWwtc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIj5Wb3JsYWdlIHNwZWljaGVy bjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLXN1 cHBvcnRtYWlsLWRlZmF1bHQiIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iPkF1ZiBEZWZh dWx0IHp1csO8Y2tzZXR6ZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi dXR0b24gaWQ9ImJ0bi1zdXBwb3J0bWFpbC12b3JzY2hhdSIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0 bi1rbGVpbiIgdGl0bGU9Ik91dGxvb2sgbWl0IGFrdHVlbGxlciBWb3JsYWdlICsgTGl2ZS1XZXJ0 ZW4gw7ZmZm5lbiI+T3V0bG9vay1Wb3JzY2hhdSDDtmZmbmVuPC9idXR0b24+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8c3BhbiBpZD0ic3VwcG9ydG1haWwtZGlydHktaGlud2VpcyIgY2xh c3M9InJlY2h0ZS1kaXJ0eS1oaW53ZWlzIiBzdHlsZT0iZGlzcGxheTpub25lIj7il48gVW5nZXNw ZWljaGVydGUgw4RuZGVydW5nZW48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoK ICAgICAgICAgICAgICAgIDwhLS0gVGFiOiBNaXR0ZWlsdW5nZW4gKFNwcmludCBELTNjLCAyMDI2 LTA1LTI5KSDigJQgU1Utb25seS4KICAgICAgICAgICAgICAgICAgICAgVm9tIFN1cGVyVXNlciBn ZXBmbGVndGUgTW9kYWxlLUhpbndlaXNlIGFuIFBlcnNvbmVuLwogICAgICAgICAgICAgICAgICAg ICBHcnVwcGVuL1JvbGxlbiBtaXQgVHJpZ2dlciArIEFuaGFlbmdlbi4gS29tcGxldHRlIFVJCiAg ICAgICAgICAgICAgICAgICAgIHdpcmQgenVyIExhdWZ6ZWl0IGF1cyBqcy9hZG1pbl9taXR0ZWls dW5nZW4uanMgZ2VyZW5kZXJ0LiAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWlu LXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItbWl0dGVpbHVuZ2VuIj4KICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1rb3BmIj4KICAgICAgICAgICAgICAgICAgICAgICAg PGgyPk1pdHRlaWx1bmdlbjwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAg ICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9Im1p dHRlaWx1bmdlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5PjxzcGFuIGNsYXNz PSJhZG1pbi1pbmZvLWNoZXYiPuKWuDwvc3Bhbj5XYXMgc2luZCBNaXR0ZWlsdW5nZW4/PHNwYW4g Y2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9z dW1tYXJ5PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJv ZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5Xb3p1Pzwvc3Ryb25n PiBTdXBlclVzZXIga8O2bm5lbiBoaWVyIEhpbndlaXNlIGbDvHIgYXVzZ2V3w6RobHRlIFBlcnNv bmVuLCBHcnVwcGVuIG9kZXIgUm9sbGVuIGFubGVnZW4uIERpZXNlIGVyc2NoZWluZW4gYmVpbSBu w6RjaHN0ZW4gQXBwLVN0YXJ0IGFscyBNb2RhbC1TdGFjayAob2JlbiBkdXJjaGdlaGVuZCwgb2Rl ciBlaW5tYWwgcHJvIFRhZyDigJQgamUgbmFjaCBUcmlnZ2VyKS48L3A+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cD48c3Ryb25nPkVtcGbDpG5nZXI8L3N0cm9uZz4gc2luZCBrb21iaW5p ZXJiYXI6IGVpbnplbG5lIFBlcnNvbmVuLCBnYW56ZSBEaWVuc3RncnVwcGVuLCBSb2xsZW4gKERH TC9XREYv4oCmLCBTVSwgR2VzYW10dmVyYW50d29ydGxpY2gpIG9kZXIg4oCeQWxsZSIgKGplZGVy IGVpbmdlbG9nZ3RlIFVzZXIpLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxz dHJvbmc+VHJpZ2dlcjo8L3N0cm9uZz4gPGVtPmVpbm1hbDwvZW0+ID0gVXNlciBzaWVodCBkaWUg TWl0dGVpbHVuZyBnZW5hdSBlaW4gTWFsIHVuZCBuaWUgd2llZGVyLiA8ZW0+amVkZXMgTWFsPC9l bT4gPSBiZWkgamVkZW0gTG9naW4gKG1heC4gMcOXIHBybyBLYWxlbmRlcnRhZykuIDxlbT5iaXMg RGF0dW08L2VtPiA9IHTDpGdsaWNoIGJpcyB6dW0gU3RpY2h0YWcsIGRhbmFjaCBuaWUgd2llZGVy LjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+QW5ow6RuZ2U6PC9z dHJvbmc+IGVpbiBUaHVtYm5haWwtQmlsZCAobWF4LiAyIE1CLCBKUEcvUE5HL1dlYlApIHVuZC9v ZGVyIGVpbiBQREYgKG1heC4gMTAgTUIpIGvDtm5uZW4gYmVpZ2Vmw7xndCB3ZXJkZW4uIEtsaWNr IGF1ZiBkZW4gQW5oYW5nIMO2ZmZuZXQgaWhuIGltIFZvbGxiaWxkLVN1Yi1Nb2RhbC48L3A+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPldhcydzIG5ldSBtYWNodDo8L3N0 cm9uZz4gZWluZSBnbG9iYWxlIE1pdHRlaWx1bmcgbWl0IEVtcGbDpG5nZXIg4oCeQWxsZSIgdW5k IFRyaWdnZXIg4oCeZWlubWFsIiBpc3QgZWZmZWt0aXYgZWluIOKAnldoYXQncyBOZXciLUVpbnRy YWcuPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAg ICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiIg c3R5bGU9Im1hcmdpbi10b3A6OHB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1taXR0ZWlsdW5nLW5ldSIgY2xhc3M9ImJ0 biBidG4tZXJmb2xnIj4rIE5ldWUgTWl0dGVpbHVuZzwvYnV0dG9uPgogICAgICAgICAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Im1pdHRlaWx1bmdlbi1pbmhh bHQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBU YWI6IFJlY2h0ZSAmIFNpY2h0YmFya2VpdCAoTWVyZ2Ug4oCUIFN1cGVyVXNlciArIEZhY2hhdWZz aWNodCArIFNpY2h0YmFya2VpdCkgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZG1p bi10YWIgdmVyc3RlY2t0IiBpZD0iYWRtaW4tdGFiLXN1cGVydXNlciI+CiAgICAgICAgICAgICAg ICAgICAgPGRpdiBjbGFzcz0iYWRtaW4ta29wZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxo Mj5SZWNodGUgJmFtcDsgU2ljaHRiYXJrZWl0PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAg PHAgY2xhc3M9InJlY2h0ZS10YWItc3ViIj5Sb2xsZW4tU2xvdHMgbWl0IGtvbmZpZ3VyaWVyYmFy ZXIgU2VoZW4tL0JlYXJiZWl0ZW4tU2ljaHRiYXJrZWl0LiBTdXBlclVzZXIgc3RpY2h0IGFsbGUg YW5kZXJlbiDigJQgc2llIHNlaGVuIHVuZCBrw7ZubmVuIGltbWVyIGFsbGVzLiBXZXIgaW4ga2Vp bmVyIGRpZXNlciBMaXN0ZW4gc3RlaHQsIHNpZWh0IHdlZGVyIFN0YXRpc3RpayBub2NoIExvZ2J1 Y2ggbm9jaCBBZG1pbmlzdHJhdGlvbi48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+Cgog ICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhZG1pbi1zZWt0aW9uIHJlY2h0ZS1j YXJkIHJlY2h0ZS1jYXJkLXN1IiBpZD0iYWRtaW4tc2VrdGlvbi1zdXBlcnVzZXIiPgogICAgICAg ICAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0icmVjaHRlLXJvbGxlIj4KICAgICAgICAg ICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9InJlY2h0ZS1yb2xsZS1zdW1tYXJ5Ij4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZWNodGUtY2FyZC1pY29uIiBh cmlhLWhpZGRlbj0idHJ1ZSI+8J+boTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxzcGFuIGNsYXNzPSJyZWNodGUtcm9sbGUtdGl0ZWwiPjxzdHJvbmc+U3VwZXJVc2VyPC9zdHJv bmc+PHNwYW4gY2xhc3M9InJlY2h0ZS1jYXJkLXN1YiI+Vm9sbHp1Z3JpZmYgYXVmIGFsbGUgRnVu a3Rpb25lbi4gVmVyd2FsdGV0IGFuZGVyZSBSb2xsZW4uPC9zcGFuPjwvc3Bhbj4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJyZWNodGUtcm9sbGUtY2hldiIgYXJpYS1o aWRkZW49InRydWUiPuKWuDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5 PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUtcm9sbGUtYm9keSI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUtcm9sbGUtYWt0 aW9uIj48YnV0dG9uIGlkPSJidG4tc3VwZXJ1c2VyLW5ldSIgY2xhc3M9ImJ0biBidG4tZXJmb2xn Ij5OZXVlciBTdXBlclVzZXI8L2J1dHRvbj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAg PGRldGFpbHMgY2xhc3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InN1cGVydXNlciI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5m by1jaGV2Ij7ilrg8L3NwYW4+SGlud2Vpc2UgenUgU3VwZXJVc2VybjxzcGFuIGNsYXNzPSJhZG1p bi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8gWnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5XYXMgaXN0IGVpbiBTdXBl clVzZXI/PC9zdHJvbmc+IFN1cGVyVXNlciBoYWJlbiB1bmVpbmdlc2NocsOkbmt0ZW4gWnVncmlm ZiBhdWYgYWxsZSBBZG1pbmlzdHJhdGlvbnNmdW5rdGlvbmVuLCBlaW5zY2hsaWXDn2xpY2ggZGVy IFZlcndhbHR1bmcgYW5kZXJlciBTdXBlclVzZXIsIGRlbSBTZXR6ZW4gdm9uIFNvbmRlcnRlcm1p bmUtSGlud2Vpc2VuIGRpcmVrdCBpbiBkZXIgUGxhbnVuZyB1bmQgZGVyIFBmbGVnZSBkZXIgZ2xv YmFsZW4gRWluc3RlbGx1bmdlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHA+PHN0cm9uZz5TaWNoZXJoZWl0c2hpbndlaXM6PC9zdHJvbmc+IE51ciBiZXN0ZWhlbmRlIFN1 cGVyVXNlciBrw7ZubmVuIGRpZXNlIExpc3RlIGJlYXJiZWl0ZW4uIERhbWl0IHdpcmQgdmVyaGlu ZGVydCwgZGFzcyBBZG1pbi1SZWNodGUgdmVybG9yZW4gZ2VoZW4gb2RlciB1bmJlcmVjaHRpZ3Qg ZXJ3ZWl0ZXJ0IHdlcmRlbi4gPGI+TWluZGVzdGVucyBlaW4gU3VwZXJVc2VyIG11c3MgaW1tZXIg ZWluZ2V0cmFnZW4gc2VpbjwvYj4g4oCUIHNvbnN0IGlzdCBuaWVtYW5kIG1laHIgaW4gZGVyIExh Z2UsIGFkbWluaXN0cmF0aXZlIMOEbmRlcnVuZ2VuIHZvcnp1bmVobWVuLjwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkZlbGRlcjo8L3N0cm9uZz4gTmFtZSAo S2xhcnRleHQgenVyIElkZW50aWZpa2F0aW9uKSwgTlctS2VubnVuZyAoV2luZG93cy1CZW51dHpl cm5hbWUsIHdpcmQgYXV0b21hdGlzY2ggYmVpbSBMb2dpbiBhYmdlZ2xpY2hlbiksIE9FIChPcmdh bmlzYXRpb25zZWluaGVpdCksIFRlbGVmb24vRHVyY2h3YWhsLjwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPkFuemVpZ2UgaW0gSW5mby1GZW5zdGVyOjwvc3Ry b25nPiBBbGxlIFN1cGVyVXNlciB3ZXJkZW4gaW0gSW5mb3JtYXRpb25zZmVuc3RlciAoQnV0dG9u IOKAnuKEuSIgb2JlbiByZWNodHMpIGFscyBBbnNwcmVjaHBhcnRuZXIgYXVmZ2Vmw7xocnQuPC9w PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAg ICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1i b3ggcmVjaHRlLW5vdGZhbGwtYm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJv bmc+Tm90ZmFsbC1Sw7xja2ZhbGxlYmVuZTo8L3N0cm9uZz4gRGllIE5XLUtlbm51bmcgPGNvZGU+ TlcwNTM2MDk8L2NvZGU+IChQSEsgUm9lc2dlbikgaXN0IGltIFNlcnZlciBoYXJ0IGFscyBTdXBl clVzZXIgaGludGVybGVndCB1bmQgZ2lsdCBhdWNoIGRhbm4sIHdlbm4gZGllIFN1cGVyVXNlci1M aXN0ZSBsZWVyIG9kZXIgdW5sZXNiYXIgaXN0LgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIiBp ZD0ic3VwZXJ1c2VyLXRhYmVsbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFk PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dGg+TlctS2VubnVuZzwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0aD5PcmdhbmlzYXRpb25zZWluaGVpdDwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6MTUwcHgiPlRlbGVmb24gLyBEdXJj aHdhaGw8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9 IndpZHRoOjgwcHgiPkFrdGlvbmVuPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0ic3VwZXJ1c2VyLXRib2R5Ij48L3Rib2R5PgogICAg ICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJyZWNodGUtY2FyZC1mdXNzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxi dXR0b24gaWQ9ImJ0bi1zdXBlcnVzZXItc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVy Ij5TdXBlclVzZXIgc3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzdXBlcnVzZXIta2Vpbi1yZWNo dCIgY2xhc3M9InZlcnN0ZWNrdCByZWNodGUta2Vpbi1yZWNodCI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWJveCIgc3R5bGU9ImJvcmRlci1sZWZ0LWNvbG9y OnZhcigtLWZhcmJlLWZlaGxlcikiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz dHJvbmc+S2VpbiBadWdyaWZmOjwvc3Ryb25nPiBOdXIgYmVzdGVoZW5kZSBTdXBlclVzZXIga8O2 bm5lbiBkaWVzZSBMaXN0ZSBiZWFyYmVpdGVuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAg ICAgICA8L2Rpdj48L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPgoKICAg ICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiByZWNodGUtY2Fy ZCByZWNodGUtY2FyZC1mYSIgaWQ9ImFkbWluLXNla3Rpb24tZmFjaGF1ZnNpY2h0Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9InJlY2h0ZS1yb2xsZSI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJyZWNodGUtcm9sbGUtc3VtbWFyeSI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmVjaHRlLWNhcmQtaWNvbiIg YXJpYS1oaWRkZW49InRydWUiPvCfkYE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8c3BhbiBjbGFzcz0icmVjaHRlLXJvbGxlLXRpdGVsIj48c3Ryb25nPkZhY2hhdWZzaWNodDwv c3Ryb25nPjxzcGFuIGNsYXNzPSJyZWNodGUtY2FyZC1zdWIiPktsYXNzaXNjaGUgQXVmc2ljaHRz LVJvbGxlIG1pdCBncmFudWxhcmVuIFNlaGVuLSB1bmQgUGxhbnVuZ3MtUmVjaHRlbi4gT3B0aW9u YWwg4oCeR2VzYW10dmVyYW50d29ydGxpY2giIGbDvHIgU2NoaWNodGJlc2V0enVuZy48L3NwYW4+ PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1y b2xsZS1jaGV2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+4pa4PC9zcGFuPgogICAgICAgICAgICAgICAg ICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJl Y2h0ZS1yb2xsZS1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 InJlY2h0ZS1yb2xsZS1ha3Rpb24iPjxidXR0b24gaWQ9ImJ0bi1mYWNoYXVmc2ljaHQtbmV1IiBj bGFzcz0iYnRuIGJ0bi1lcmZvbGciPk5ldWVyIEZhY2hhdWZzaWNodC1FaW50cmFnPC9idXR0b24+ PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZv IiBkYXRhLWluZm8ta2V5PSJmYWNoYXVmc2ljaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHN1bW1hcnk+PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndl aXNlIHp1ciBGYWNoYXVmc2ljaHQ8c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xh cHBlbiAvIFp1a2xhcHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwPjxzdHJvbmc+Um9sbGVuLUhpZXJhcmNoaWU6PC9zdHJvbmc+IDxjb2RlPlN1 cGVyVXNlciDihpIgRmFjaGF1ZnNpY2h0IC8gRGlyZWt0aW9uc2xlaXR1bmcgLyBGw7xocnVuZ3Nz dGVsbGUg4oaSIFVzZXI8L2NvZGU+LiBTdXBlclVzZXIgc3RpY2h0IGFsbGVzLiBXZXIgaW4ga2Vp bmVyIFJvbGxlbi1MaXN0ZSBzdGVodCwgc2llaHQgd2VkZXIgU3RhdGlzdGlrIG5vY2ggTG9nYnVj aCBub2NoIEFkbWluaXN0cmF0aW9uLjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cD48c3Ryb25nPlNlaGVuLUJlcmVpY2hlPC9zdHJvbmc+IChIYWtlbiA9IFRhYiBpc3QgZsO8 ciBkaWVzZSBQZXJzb24gc2ljaHRiYXIpOjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5BZG1p bmlzdHJhdGlvbjwvYj4g4oCUIGtvbXBsZXR0ZXIgQWRtaW4tVGFiLiA8Yj5BdXNnZW5vbW1lbjo8 L2I+IFN1cGVyVXNlci0gdW5kIFJvbGxlbi1MaXN0ZW4gKGJsZWliZW4gU3VwZXJVc2VyLW9ubHkp LjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48Yj5TdGF0aXN0 aWs8L2I+LCA8Yj5Mb2didWNoPC9iPiwgPGI+QmFja3VwczwvYj4g4oCUIGpld2VpbHMgZGVyIGdh bnplIFRhYi48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+PHN0cm9uZz5QbGFudW5nOjwvc3Ryb25nPiBQ cm8gRmFjaGF1ZnNpY2h0IGZlc3RsZWdiYXIsIHdlbGNoZSBQZXJzb25lbi9HcnVwcGVuL1N0YW5k b3J0ZSBlZGl0aWVydCB3ZXJkZW4gZMO8cmZlbiDigJQgZGllIGVpZ2VuZSBaZWlsZSBpc3QgaW1t ZXIgaW1wbGl6aXQgZXJsYXVidC48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHA+PHN0cm9uZz5HZXNhbXR2ZXJhbnR3b3J0dW5nOjwvc3Ryb25nPiBCZWtvbW10IGRlbiBIZWFk ZXItVGFiIDxlbT5QcsO8ZnVuZzwvZW0+IG1pdCA0LVdvY2hlbi3DnGJlcnNpY2h0IGlua2wuIHZv cmdlZmVydGlndGVyIEUtTWFpbCBhbiBiZXRyb2ZmZW5lIFBlcnNvbmVuLjwvcD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFp bHM+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRtaW4tdGFiZWxsZSIg aWQ9ImZhY2hhdWZzaWNodC10YWJlbGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHRoPk5XLUtlbm51bmc8L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjYwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRp dGxlPSJBZG1pbi1UYWIgc2VoZW4iPkFkbWluPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRs ZT0iQmVyZWljaC1BLVRhYiBzZWhlbiIgZGF0YS1iZXo9ImZhLnNwYWx0ZUEiPkF1c3dlcnR1bmc8 L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRo OjcwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJCZXJlaWNoLUItVGFiIHNlaGVuIiBkYXRh LWJlej0iZmEuc3BhbHRlQiI+UHJvdG9rb2xsPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDo3MHB4O3RleHQtYWxpZ246Y2VudGVyIiB0aXRs ZT0iQmFja3VwLVRhYiBzZWhlbiI+QmFja3VwczwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6OTBweDt0ZXh0LWFsaWduOmNlbnRlciIgdGl0 bGU9Ikdlc2FtdHZlcmFudHdvcnRsaWNoIGbDvHIgZGllIEJlc2V0enVuZyBhbGxlciBEaWVuc3Rl Ij5HZXNhbXR2ZXJhbnR3LjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDx0aCBzdHlsZT0id2lkdGg6MjIwcHgiIHRpdGxlPSJHcmFudWxhcmUgU2ljaHRiYXJrZWl0IHBy byBTdWItVGFiIGRlcyBBZG1pbi1CZXJlaWNocyArIHBybyBCZXJlaWNoLUEiPlN1Yi1TaWNodDwv dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6 MjAwcHgiPlBsYW51bmc8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dGggc3R5bGU9IndpZHRoOjgwcHgiPkFrdGlvbmVuPC90aD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBpZD0iZmFjaGF1ZnNpY2h0LXRib2R5Ij48 L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJyZWNodGUtY2FyZC1mdXNzIj4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1mYWNoYXVmc2ljaHQtc3BlaWNoZXJuIiBjbGFzcz0i YnRuIGJ0bi1wcmltYWVyIj5GYWNoYXVmc2ljaHQgc3BlaWNoZXJuPC9idXR0b24+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iZmFjaGF1ZnNpY2h0LWRpcnR5LWhpbndlaXMi IGNsYXNzPSJyZWNodGUtZGlydHktaGlud2VpcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+4pePIFVu Z2VzcGVpY2hlcnRlIMOEbmRlcnVuZ2VuPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJ1dHRvbiBpZD0iYnRuLXRlc3QtcmVndWxhZXIiIGNsYXNzPSJidG4gYnRuLXNlayBidG4t a2xlaW4iIHN0eWxlPSJtYXJnaW4tbGVmdDphdXRvIiB0aXRsZT0iT2JlcmZsw6RjaGUgYXVzIFNp Y2h0IGVpbmVzIFVzZXJzIG9obmUgUm9sbGUgdGVzdGVuIChrZWluIFNVLCBrZWluZSBGYWNoYXVm c2ljaHQvRGlyZWt0aW9uc2xlaXR1bmcvRsO8aHJ1bmdzc3RlbGxlKSI+QWxzIFVzZXIgb2huZSBS b2xsZSB0ZXN0ZW48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZhY2hhdWZzaWNodC1rZWluLXJlY2h0IiBjbGFz cz0idmVyc3RlY2t0IHJlY2h0ZS1rZWluLXJlY2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYgY2xhc3M9ImluZm8tYm94IiBzdHlsZT0iYm9yZGVyLWxlZnQtY29sb3I6dmFyKC0t ZmFyYmUtZmVobGVyKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5L ZWluIFp1Z3JpZmY6PC9zdHJvbmc+IE51ciBTdXBlclVzZXIga8O2bm5lbiBGYWNoYXVmc2ljaHQt RWludHLDpGdlIGJlYXJiZWl0ZW4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4K ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PjwvZGV0YWlscz4KICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAg ICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhZG1pbi1zZWt0aW9uIHJlY2h0ZS1jYXJkIHJlY2h0 ZS1jYXJkLWRsIiBpZD0iYWRtaW4tc2VrdGlvbi1kaXJla3Rpb25zbGVpdHVuZyI+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJyZWNodGUtcm9sbGUiPgogICAgICAgICAg ICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0icmVjaHRlLXJvbGxlLXN1bW1hcnkiPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1jYXJkLWljb24iIGFy aWEtaGlkZGVuPSJ0cnVlIj7imIU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 c3BhbiBjbGFzcz0icmVjaHRlLXJvbGxlLXRpdGVsIj48c3Ryb25nPkRpcmVrdGlvbnNsZWl0dW5n PC9zdHJvbmc+PHNwYW4gY2xhc3M9InJlY2h0ZS1jYXJkLXN1YiI+TWl0Z2xpZWRlciBkZXIgRGly ZWt0aW9uc2xlaXR1bmcgKHouIEIuIEwvRGlyViwgTFBEaW4pIOKAlCBnbGVpY2hlIEdyYW51bGFy aXTDpHQgd2llIEZhY2hhdWZzaWNodC48L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1yb2xsZS1jaGV2IiBhcmlhLWhpZGRlbj0idHJ1 ZSI+4pa4PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAg ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlY2h0ZS1yb2xsZS1ib2R5Ij4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlY2h0ZS1yb2xsZS1ha3Rpb24iPjxidXR0 b24gaWQ9ImJ0bi1kaXJla3Rpb25zbGVpdHVuZy1uZXUiIGNsYXNzPSJidG4gYnRuLWVyZm9sZyI+ TmV1ZXIgRGlyZWt0aW9uc2xlaXR1bmctRWludHJhZzwvYnV0dG9uPjwvZGl2PgogICAgICAgICAg ICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iYWRtaW4taW5mbyIgZGF0YS1pbmZvLWtleT0i ZGlyZWt0aW9uc2xlaXR1bmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+ PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1ciBEaXJl a3Rpb25zbGVpdHVuZzxzcGFuIGNsYXNzPSJhZG1pbi1pbmZvLWJhZGdlIj5BdWZrbGFwcGVuIC8g WnVrbGFwcGVuPC9zcGFuPjwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3M9ImFkbWluLWluZm8tYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHA+UGVyc29uZW4gd2VyZGVuIMO8YmVyIGRhcyBEcm9wZG93biA8ZW0+UGVyc29uPC9lbT4g ZGlyZWt0IGF1cyBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nIGdld8OkaGx0IOKAlCBOYW1lIHVuZCBO Vy1LZW5udW5nIHdlcmRlbiBhdXRvbWF0aXNjaCDDvGJlcm5vbW1lbi4gU3ViLVNpY2h0LSB1bmQg UGxhbnVuZ3MtUmVjaHRlIGZ1bmt0aW9uaWVyZW4gd2llIGJlaSBkZXIgRmFjaGF1ZnNpY2h0Ljwv cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAg ICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iYWRt aW4tdGFiZWxsZSByb2xsZW4tdGFiZWxsZSIgaWQ9ImRpcmVrdGlvbnNsZWl0dW5nLXRhYmVsbGUi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRo PlBlcnNvbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHls ZT0id2lkdGg6NjBweDt0ZXh0LWFsaWduOmNlbnRlciIgdGl0bGU9IkFkbWluLVRhYiBzZWhlbiI+ QWRtaW48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9 IndpZHRoOjcwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJTdGF0aXN0aWstVGFiIHNlaGVu Ij5TdGF0aXN0aWs8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGgg c3R5bGU9IndpZHRoOjcwcHg7dGV4dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJMb2didWNoLVRhYiBz ZWhlbiI+TG9nYnVjaDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aCBzdHlsZT0id2lkdGg6NzBweDt0ZXh0LWFsaWduOmNlbnRlciIgdGl0bGU9IkJhY2t1cC1UYWIg c2VoZW4iPkJhY2t1cHM8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dGggc3R5bGU9IndpZHRoOjIyMHB4IiB0aXRsZT0iR3JhbnVsYXJlIFNpY2h0YmFya2VpdCBwcm8g U3ViLVRhYiI+U3ViLVNpY2h0PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHRoIHN0eWxlPSJ3aWR0aDoyMDBweCI+UGxhbnVuZzwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6ODBweCI+QWt0aW9uZW48L3RoPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJk aXJla3Rpb25zbGVpdHVuZy10Ym9keSI+PC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAg PC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVjaHRlLWNhcmQt ZnVzcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZGlyZWt0 aW9uc2xlaXR1bmctc3BlaWNoZXJuIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIj5EaXJla3Rpb25z bGVpdHVuZyBzcGVpY2hlcm48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxz cGFuIGlkPSJkaXJla3Rpb25zbGVpdHVuZy1kaXJ0eS1oaW53ZWlzIiBjbGFzcz0icmVjaHRlLWRp cnR5LWhpbndlaXMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPuKXjyBVbmdlc3BlaWNoZXJ0ZSDDhG5k ZXJ1bmdlbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgICAgIDxkaXYgaWQ9ImRpcmVrdGlvbnNsZWl0dW5nLWtlaW4tcmVjaHQiIGNsYXNz PSJ2ZXJzdGVja3QgcmVjaHRlLWtlaW4tcmVjaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0iaW5mby1ib3giIHN0eWxlPSJib3JkZXItbGVmdC1jb2xvcjp2YXIoLS1m YXJiZS1mZWhsZXIpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPktl aW4gWnVncmlmZjo8L3N0cm9uZz4gTnVyIFN1cGVyVXNlciBrw7ZubmVuIERpcmVrdGlvbnNsZWl0 dW5ncy1FaW50csOkZ2UgYmVhcmJlaXRlbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAg ICAgPC9kaXY+PC9kZXRhaWxzPgogICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAg ICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFkbWluLXNla3Rpb24gcmVjaHRlLWNhcmQg cmVjaHRlLWNhcmQtZnMiIGlkPSJhZG1pbi1zZWt0aW9uLWZ1ZWhydW5nc3N0ZWxsZSI+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJyZWNodGUtcm9sbGUiPgogICAgICAg ICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0icmVjaHRlLXJvbGxlLXN1bW1hcnkiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1jYXJkLWljb24i IGFyaWEtaGlkZGVuPSJ0cnVlIj7il4Y8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8c3BhbiBjbGFzcz0icmVjaHRlLXJvbGxlLXRpdGVsIj48c3Ryb25nPkbDvGhydW5nc3N0ZWxs ZTwvc3Ryb25nPjxzcGFuIGNsYXNzPSJyZWNodGUtY2FyZC1zdWIiPk1pdGFyYmVpdGVuZGUgZGVy IEbDvGhydW5nc3N0ZWxsZSAoei4gQi4gTC9WSTMgdW5kIFN0YWIpIOKAlCBnbGVpY2hlIEdyYW51 bGFyaXTDpHQgd2llIEZhY2hhdWZzaWNodC48L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlY2h0ZS1yb2xsZS1jaGV2IiBhcmlhLWhpZGRlbj0i dHJ1ZSI+4pa4PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAg ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlY2h0ZS1yb2xsZS1ib2R5Ij4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlY2h0ZS1yb2xsZS1ha3Rpb24iPjxi dXR0b24gaWQ9ImJ0bi1mdWVocnVuZ3NzdGVsbGUtbmV1IiBjbGFzcz0iYnRuIGJ0bi1lcmZvbGci Pk5ldWVyIEbDvGhydW5nc3N0ZWxsZS1FaW50cmFnPC9idXR0b24+PC9kaXY+CiAgICAgICAgICAg ICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJhZG1pbi1pbmZvIiBkYXRhLWluZm8ta2V5PSJm dWVocnVuZ3NzdGVsbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+PHNw YW4gY2xhc3M9ImFkbWluLWluZm8tY2hldiI+4pa4PC9zcGFuPkhpbndlaXNlIHp1ciBGw7xocnVu Z3NzdGVsbGU8c3BhbiBjbGFzcz0iYWRtaW4taW5mby1iYWRnZSI+QXVma2xhcHBlbiAvIFp1a2xh cHBlbjwvc3Bhbj48L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJhZG1pbi1pbmZvLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw PlBlcnNvbmVuIHdlcmRlbiDDvGJlciBkYXMgRHJvcGRvd24gPGVtPlBlcnNvbjwvZW0+IGRpcmVr dCBhdXMgZGVyIFBlcnNvbmFsdmVyd2FsdHVuZyBnZXfDpGhsdC4gU2NoZW1hIHVuZCBHcmFudWxh cml0w6R0IGFuYWxvZyB6dXIgRGlyZWt0aW9uc2xlaXR1bmcuPC9wPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAg ICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbi10YWJlbGxlIHJvbGxlbi10 YWJlbGxlIiBpZD0iZnVlaHJ1bmdzc3RlbGxlLXRhYmVsbGUiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlcnNvbjwvdGg+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NjBweDt0ZXh0LWFs aWduOmNlbnRlciIgdGl0bGU9IkFkbWluLVRhYiBzZWhlbiI+QWRtaW48L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjcwcHg7dGV4dC1hbGln bjpjZW50ZXIiIHRpdGxlPSJTdGF0aXN0aWstVGFiIHNlaGVuIj5TdGF0aXN0aWs8L3RoPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjcwcHg7dGV4 dC1hbGlnbjpjZW50ZXIiIHRpdGxlPSJMb2didWNoLVRhYiBzZWhlbiI+TG9nYnVjaDwvdGg+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6NzBweDt0 ZXh0LWFsaWduOmNlbnRlciIgdGl0bGU9IkJhY2t1cC1UYWIgc2VoZW4iPkJhY2t1cHM8L3RoPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOjIyMHB4 IiB0aXRsZT0iR3JhbnVsYXJlIFNpY2h0YmFya2VpdCBwcm8gU3ViLVRhYiI+U3ViLVNpY2h0PC90 aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJ3aWR0aDoy MDBweCI+UGxhbnVuZzwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0 aCBzdHlsZT0id2lkdGg6ODBweCI+QWt0aW9uZW48L3RoPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5IGlkPSJmdWVocnVuZ3NzdGVsbGUtdGJvZHki PjwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3M9InJlY2h0ZS1jYXJkLWZ1c3MiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWZ1ZWhydW5nc3N0ZWxsZS1zcGVpY2hlcm4iIGNs YXNzPSJidG4gYnRuLXByaW1hZXIiPkbDvGhydW5nc3N0ZWxsZSBzcGVpY2hlcm48L2J1dHRvbj4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJmdWVocnVuZ3NzdGVsbGUtZGly dHktaGlud2VpcyIgY2xhc3M9InJlY2h0ZS1kaXJ0eS1oaW53ZWlzIiBzdHlsZT0iZGlzcGxheTpu b25lIj7il48gVW5nZXNwZWljaGVydGUgw4RuZGVydW5nZW48L3NwYW4+CiAgICAgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJmdWVocnVu Z3NzdGVsbGUta2Vpbi1yZWNodCIgY2xhc3M9InZlcnN0ZWNrdCByZWNodGUta2Vpbi1yZWNodCI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWJveCIgc3R5bGU9 ImJvcmRlci1sZWZ0LWNvbG9yOnZhcigtLWZhcmJlLWZlaGxlcikiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxzdHJvbmc+S2VpbiBadWdyaWZmOjwvc3Ryb25nPiBOdXIgU3VwZXJV c2VyIGvDtm5uZW4gRsO8aHJ1bmdzc3RlbGxlbi1FaW50csOkZ2UgYmVhcmJlaXRlbi4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9kZXRhaWxzPgogICAgICAgICAgICAg ICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAg ICA8IS0tIFRhYjogU3RhbmRhcmRyZWNodGUgcmVndWxhZXJlciBVc2VyIChTVS1vbmx5KSDigJQg Z3J1bmRzYWV0emxpY2hlCiAgICAgICAgICAgICAgICAgICAgIFBsYW51bmdzcmVjaHRlIGZ1ZXIg YWxsZSBvaG5lIFJvbGxlIChnZWdlbnNlaXRpZ2UgUGxhbnVuZyBqZQogICAgICAgICAgICAgICAg ICAgICBEaWVuc3RncnVwcGUvU3RhbmRvcnQpICsgTGlzdGUgZGVyIFVzZXIgbWl0IFp1c2F0enJl Y2h0ZW4uIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWRtaW4tdGFiIHZlcnN0ZWNr dCIgaWQ9ImFkbWluLXRhYi11cGRhdGUiPgogICAgICAgICAgICAgICAgICAgIDxzdHlsZT4KICAg ICAgICAgICAgICAgICAgICAgICAgI2FkbWluLXRhYi11cGRhdGUgLnVwZGF0ZS1ib3ggeyBwYWRk aW5nOjE0cHggMTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGZvbnQtc2l6ZToxNXB4OyBtYXJnaW46 OHB4IDAgMTRweDsgYm9yZGVyOjFweCBzb2xpZCAjZGRkOyBiYWNrZ3JvdW5kOiNmN2Y3Zjc7IH0K ICAgICAgICAgICAgICAgICAgICAgICAgI2FkbWluLXRhYi11cGRhdGUgLnVwZGF0ZS1ib3gtb2sg eyBiYWNrZ3JvdW5kOiNlOGY1ZTk7IGJvcmRlci1jb2xvcjojYTVkNmE3OyBjb2xvcjojMWI1ZTIw OyB9CiAgICAgICAgICAgICAgICAgICAgICAgICNhZG1pbi10YWItdXBkYXRlIC51cGRhdGUtYm94 LXdhcm4geyBiYWNrZ3JvdW5kOiNmZmY4ZTE7IGJvcmRlci1jb2xvcjojZmZlMDgyOyBjb2xvcjoj N2M1ODAwOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICNhZG1pbi10YWItdXBkYXRlIC51cGRh dGUtYm94LWVyciB7IGJhY2tncm91bmQ6I2ZkZWNlYTsgYm9yZGVyLWNvbG9yOiNmNWM2Y2I7IGNv bG9yOiNhMzE1MTU7IH0KICAgICAgICAgICAgICAgICAgICAgICAgI2FkbWluLXRhYi11cGRhdGUg LnVwZGF0ZS1jaGFuZ2Vsb2cgeyBiYWNrZ3JvdW5kOiNmYWZhZmE7IGJvcmRlcjoxcHggc29saWQg I2VlZTsgYm9yZGVyLXJhZGl1czo4cHg7IHBhZGRpbmc6NnB4IDE2cHg7IG1hcmdpbi1ib3R0b206 MTRweDsgbWF4LWhlaWdodDoyODBweDsgb3ZlcmZsb3c6YXV0bzsgfQogICAgICAgICAgICAgICAg ICAgICAgICAjYWRtaW4tdGFiLXVwZGF0ZSAudXBkYXRlLWZpbGVsaXN0IHsgY29sdW1uczoyOyBm b250LWZhbWlseTptb25vc3BhY2U7IGZvbnQtc2l6ZToxM3B4OyB9CiAgICAgICAgICAgICAgICAg ICAgICAgICNhZG1pbi10YWItdXBkYXRlICNidG4tdXBkYXRlLXN0YXJ0IHsgYmFja2dyb3VuZDoj MWE3M2U4OyBjb2xvcjojZmZmOyBib3JkZXI6MDsgcGFkZGluZzoxMHB4IDE4cHg7IGJvcmRlci1y YWRpdXM6NnB4OyBmb250LXNpemU6MTVweDsgY3Vyc29yOnBvaW50ZXI7IH0KICAgICAgICAgICAg ICAgICAgICAgICAgI2FkbWluLXRhYi11cGRhdGUgI2J0bi11cGRhdGUtc3RhcnQ6aG92ZXIgeyBi YWNrZ3JvdW5kOiMxNjY2ZDA7IH0KICAgICAgICAgICAgICAgICAgICAgICAgI2FkbWluLXRhYi11 cGRhdGUgLnVwZGF0ZS1ha3Rpb24taGlud2VpcyB7IG1hcmdpbi1sZWZ0OjEycHg7IGNvbG9yOiM2 NjY7IGZvbnQtc2l6ZToxM3B4OyB9CiAgICAgICAgICAgICAgICAgICAgICAgICNhZG1pbi10YWIt dXBkYXRlIC51cGRhdGUtcHJvZ3Jlc3MtcmFpbCB7IGJhY2tncm91bmQ6I2UwZTBlMDsgYm9yZGVy LXJhZGl1czo2cHg7IGhlaWdodDoyMHB4OyBvdmVyZmxvdzpoaWRkZW47IG1hcmdpbjoxMnB4IDAg NnB4OyB9CiAgICAgICAgICAgICAgICAgICAgICAgICNhZG1pbi10YWItdXBkYXRlIC51cGRhdGUt cHJvZ3Jlc3MtYmFyIHsgYmFja2dyb3VuZDojMWE3M2U4OyBoZWlnaHQ6MTAwJTsgd2lkdGg6MDsg dHJhbnNpdGlvbjp3aWR0aCAuNHMgZWFzZTsgfQogICAgICAgICAgICAgICAgICAgICAgICAjYWRt aW4tdGFiLXVwZGF0ZSAudXBkYXRlLXByb2dyZXNzLWRvbmUgeyBiYWNrZ3JvdW5kOiMyZTdkMzI7 IH0KICAgICAgICAgICAgICAgICAgICAgICAgI2FkbWluLXRhYi11cGRhdGUgLnVwZGF0ZS1wcm9n cmVzcy1mYWlsIHsgYmFja2dyb3VuZDojYzYyODI4OyB9CiAgICAgICAgICAgICAgICAgICAgICAg ICNhZG1pbi10YWItdXBkYXRlIC51cGRhdGUtcHJvZ3Jlc3MtdGV4dCB7IGZvbnQtc2l6ZToxNHB4 OyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtd2VpZ2h0OjYwMDsgfQogICAgICAgICAgICAgICAg ICAgICAgICAjYWRtaW4tdGFiLXVwZGF0ZSAudXBkYXRlLWxvZyB7IGJhY2tncm91bmQ6IzFlMWUx ZTsgY29sb3I6I2Q0ZDRkNDsgZm9udC1zaXplOjEycHg7IHBhZGRpbmc6MTBweDsgYm9yZGVyLXJh ZGl1czo2cHg7IG1heC1oZWlnaHQ6MjIwcHg7IG92ZXJmbG93OmF1dG87IHdoaXRlLXNwYWNlOnBy ZS13cmFwOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICNhZG1pbi10YWItdXBkYXRlIC51cGRh dGUtc2VsZnRlc3QgeyBtYXJnaW46MTJweCAwOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICNh ZG1pbi10YWItdXBkYXRlIC5zdC1yb3cgeyBwYWRkaW5nOjRweCA4cHg7IGJvcmRlci1yYWRpdXM6 NHB4OyBtYXJnaW46M3B4IDA7IGZvbnQtc2l6ZToxNHB4OyB9CiAgICAgICAgICAgICAgICAgICAg ICAgICNhZG1pbi10YWItdXBkYXRlIC5zdC1vayB7IGJhY2tncm91bmQ6I2U4ZjVlOTsgY29sb3I6 IzFiNWUyMDsgfQogICAgICAgICAgICAgICAgICAgICAgICAjYWRtaW4tdGFiLXVwZGF0ZSAuc3Qt ZmFpbCB7IGJhY2tncm91bmQ6I2ZkZWNlYTsgY29sb3I6I2EzMTUxNTsgfQogICAgICAgICAgICAg ICAgICAgICAgICAjYWRtaW4tdGFiLXVwZGF0ZSAuc3QtZGV0YWlsIHsgY29sb3I6Izc3NzsgZm9u dC1zaXplOjEycHg7IH0KICAgICAgICAgICAgICAgICAgICA8L3N0eWxlPgogICAgICAgICAgICAg ICAgICAgIDxoMj5VcGRhdGVzICZhbXA7IFNlbGJzdHRlc3Q8L2gyPgogICAgICAgICAgICAgICAg ICAgIDxwIHN0eWxlPSJjb2xvcjojNTU1OyBtYXgtd2lkdGg6NzgwcHg7Ij5QcsO8ZnQgZGFzIHpl bnRyYWxlIFJlcG9zaXRvcnkgYXVmIGVpbmUgbmV1ZSBWZXJzaW9uLiBWb3IgZGVtIEVpbnNwaWVs ZW4gd2lyZCBhdXRvbWF0aXNjaCBlaW5lIHZvbGxzdMOkbmRpZ2UgU2ljaGVydW5nIGVyc3RlbGx0 OyBkYW5hY2ggbMOkdWZ0IGVpbiBTZWxic3R0ZXN0IGFsbGVyIEtlcm5mdW5rdGlvbmVuLCBiZXZv ciBkYXMgU3lzdGVtIHdpZWRlciBmcmVpZ2VnZWJlbiB3aXJkLiBTY2hsw6RndCBlaW4gVGVzdCBm ZWhsLCB3aXJkIGF1dG9tYXRpc2NoIGF1ZiBkZW4gdm9yaGVyaWdlbiBTdGFuZCB6dXLDvGNrZ2Vy b2xsdC48L3A+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idXBkYXRlLXN0YXR1cy1ib3gi IGNsYXNzPSJ1cGRhdGUtYm94Ij5TdGF0dXMgd2lyZCBnZWxhZGVuIOKApjwvZGl2PgogICAgICAg ICAgICAgICAgICAgIDxkaXYgaWQ9InVwZGF0ZS1jaGFuZ2Vsb2ciIGNsYXNzPSJ1cGRhdGUtY2hh bmdlbG9nIHZlcnN0ZWNrdCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idXBk YXRlLWFrdGlvbiIgY2xhc3M9InZlcnN0ZWNrdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxi dXR0b24gaWQ9ImJ0bi11cGRhdGUtc3RhcnQiIHR5cGU9ImJ1dHRvbiI+VXBkYXRlIGpldHp0IGlu c3RhbGxpZXJlbjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0i dXBkYXRlLWFrdGlvbi1oaW53ZWlzIj5JbmtsLiBhdXRvbWF0aXNjaGVyIFZvbGxzaWNoZXJ1bmcg JmFtcDsgU2VsYnN0dGVzdC48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgPGRpdiBpZD0idXBkYXRlLWZvcnRzY2hyaXR0IiBjbGFzcz0idmVyc3Rl Y2t0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idXBkYXRlLXByb2dyZXNz LXJhaWwiPjxkaXYgaWQ9InVwZGF0ZS1wcm9ncmVzcy1iYXIiIGNsYXNzPSJ1cGRhdGUtcHJvZ3Jl c3MtYmFyIj48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0idXBk YXRlLXByb2dyZXNzLXRleHQiIGNsYXNzPSJ1cGRhdGUtcHJvZ3Jlc3MtdGV4dCI+PC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InVwZGF0ZS1zZWxmdGVzdCIgY2xhc3M9InVw ZGF0ZS1zZWxmdGVzdCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmUgaWQ9InVw ZGF0ZS1sb2ciIGNsYXNzPSJ1cGRhdGUtbG9nIj48L3ByZT4KICAgICAgICAgICAgICAgICAgICA8 L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 ImFkbWluLXRhYiB2ZXJzdGVja3QiIGlkPSJhZG1pbi10YWItc3RhbmRhcmRyZWNodGUiPgogICAg ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkbWluLWtvcGYiPgogICAgICAgICAgICAgICAg ICAgICAgICA8aDI+U3RhbmRhcmRyZWNodGUgcmVndWzDpHJlciBVc2VyPC9oMj4KICAgICAgICAg ICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjo2cHggMCAwIDA7Zm9udC1zaXplOjEycHg7 Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPkdydW5kcmVnZWxuLCBkaWUgZsO8ciA8c3Ryb25nPmFs bGU8L3N0cm9uZz4gTWl0YXJiZWl0ZW5kZW4gb2huZSBlaWdlbmUgUm9sbGUgZ2VsdGVuIOKAlCB6 LkIuIOKAnmFsbGUgZWluZXIgRGllbnN0Z3J1cHBlIHBsYW5lbiBzaWNoIGdlZ2Vuc2VpdGlnIiBv ZGVyIOKAnmFsbGUgZWluZXMgU3RhbmRvcnRzIHBsYW5lbiBzaWNoIGdlZ2Vuc2VpdGlnIi4gRGFy dW50ZXI6IMOcYmVyc2ljaHQgYWxsZXIgVXNlciwgZGllIGluIGRlciBQZXJzb25hbHZlcndhbHR1 bmcgPHN0cm9uZz56dXPDpHR6bGljaGU8L3N0cm9uZz4gaW5kaXZpZHVlbGxlIFJlY2h0ZSBiZWtv bW1lbiBoYWJlbi48L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAg ICAgICAgPGRpdiBpZD0ic3RhbmRhcmRyZWNodGUtaW5oYWx0Ij48L2Rpdj4KICAgICAgICAgICAg ICAgIDwvZGl2PgoKCiAgICAgICAgICAgIDwvbWFpbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2 PgoKICAgIDwhLS0gPT09PT09PT09PSBNb2RhbGVyIERpYWxvZyAod2llZGVydmVyd2VuZGJhcikg PT09PT09PT09PSAtLT4KICAgIDwhLS0gYTExeSAoU3ByaW50IDZhIDIwMjYtMDUtMjkpOiByb2xl PWRpYWxvZyArIGFyaWEtbW9kYWwgKyBsYWJlbGxlZGJ5CiAgICAgICAgIG1hY2h0IGRlbiBNb2Rh bC1Lb250ZXh0IGZ1ZXIgU2NyZWVucmVhZGVyIGV4cGxpeml0LiBhcmlhLWhpZGRlbiB3aXJkCiAg ICAgICAgIHZvbSBtb2RhbFplaWdlbigpLUNvZGUgYmVpbSBPcGVuL0Nsb3NlIGdlc2V0enQuIC0t PgogICAgPGRpdiBpZD0ibW9kYWwtb3ZlcmxheSIgY2xhc3M9Im1vZGFsIHZlcnN0ZWNrdCIgcm9s ZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIiBhcmlhLWxhYmVsbGVkYnk9Im1vZGFsLXRpdGVs IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaW5oYWx0IiBp ZD0ibW9kYWwtYm94Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwta29wZiI+CiAgICAg ICAgICAgICAgICA8aDIgaWQ9Im1vZGFsLXRpdGVsIj48L2gyPgogICAgICAgICAgICAgICAgPGJ1 dHRvbiBjbGFzcz0ibW9kYWwtc2NobGllc3NlbiIgaWQ9Im1vZGFsLXNjaGxpZXNzZW4tYnRuIiBh cmlhLWxhYmVsPSJTY2hsaWXDn2VuIj4mdGltZXM7PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2 PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1rb2VycGVyIiBpZD0ibW9kYWwta29lcnBl ciI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZ1c3MiIGlkPSJtb2RhbC1m dXNzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gQ29uZmlybS1P dmVybGF5IChTcHJpbnQgNSDigJQgTW9kYWwtU3RhY2sgMjAyNi0wNS0yOSk6CiAgICAgICAgIEVp Z2VuZXIgQ29udGFpbmVyIG1pdCBob2VoZXJlbSB6LWluZGV4LCBkYW1pdCBiZXN0YWV0aWdlbigp LURpYWxvZ2UKICAgICAgICAgSU5ORVJIQUxCIGVpbmVzIGdlb2VmZm5ldGVuIEhhdXB0bW9kYWxz IGVyc2NoZWluZW4ga29lbm5lbiwgb2huZQogICAgICAgICBkZXNzZW4gSW5oYWx0IHp1IHVlYmVy c2NocmVpYmVuLiBWb3JoZXIgaGFiZW4gQ29uZmlybS1BdWZydWZlCiAgICAgICAgICh6LkIuICJX aXJrbGljaCBsb2VzY2hlbj8iIGJlaW0gUGVyc29uLUJlYXJiZWl0ZW4pIGRhcyB1bWdlYmVuZGUK ICAgICAgICAgTW9kYWwgemVyc3RvZXJ0OyBuYWNoICJBYmJyZWNoZW4iIHdhciBkaWUgQmVhcmJl aXR1bmcgd2VnLiAtLT4KICAgIDxkaXYgaWQ9ImNvbmZpcm0tb3ZlcmxheSIgY2xhc3M9Im1vZGFs IHZlcnN0ZWNrdCIgcm9sZT0iZGlhbG9nIiBhcmlhLW1vZGFsPSJ0cnVlIiBhcmlhLWxhYmVsbGVk Ynk9ImNvbmZpcm0tdGl0ZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBzdHlsZT0iei1pbmRleDpjYWxj KHZhcigtLXotbW9kYWwpICsgMTApIj4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1pbmhhbHQi IGlkPSJjb25maXJtLWJveCIgc3R5bGU9Im1heC13aWR0aDo0ODBweCI+CiAgICAgICAgICAgIDxk aXYgY2xhc3M9Im1vZGFsLWtvcGYiPgogICAgICAgICAgICAgICAgPGgyIGlkPSJjb25maXJtLXRp dGVsIj5CZXN0w6R0aWd1bmc8L2gyPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibW9k YWwtc2NobGllc3NlbiIgaWQ9ImNvbmZpcm0tc2NobGllc3Nlbi1idG4iIGFyaWEtbGFiZWw9IlNj aGxpZcOfZW4iPiZ0aW1lczs8L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg IDxkaXYgY2xhc3M9Im1vZGFsLWtvZXJwZXIiIGlkPSJjb25maXJtLWtvZXJwZXIiPjwvZGl2Pgog ICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1mdXNzIiBpZD0iY29uZmlybS1mdXNzIj48L2Rp dj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gVG9hc3QtQ29udGFpbmVyIC0t PgogICAgPGRpdiBpZD0idG9hc3QtY29udGFpbmVyIiByb2xlPSJzdGF0dXMiIGFyaWEtbGl2ZT0i cG9saXRlIiBhcmlhLWF0b21pYz0iZmFsc2UiPjwvZGl2PgoKICAgIDxzY3JpcHQgdHlwZT0ibW9k dWxlIiBzcmM9ImFwcC5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo= ### FILE: info.html | 12765 PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImRlIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9InV0 Zi04Ij4KPHRpdGxlPlZJMyBER0wtUGxhbnVuZyDigJQgS3VyemluZm9ybWF0aW9uPC90aXRsZT4K PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFs LXNjYWxlPTEiPgo8c3R5bGU+CiAgOnJvb3QgewogICAgLS1iZzogI0VFRjFGMjsKICAgIC0tY2Fy ZDogI0ZGRkZGRjsKICAgIC0tY2FyZC1hbHQ6ICNGN0Y5Rjk7CiAgICAtLXRleHQ6ICMxRTJBMzA7 CiAgICAtLW11dGVkOiAjNjE3MjdCOwogICAgLS1saW5lOiAjRERFM0U1OwogICAgLS1hY2NlbnQ6 ICMxRjRFNUY7CiAgICAtLWFjY2VudC0yOiAjMkU3Mjg2OwogICAgLS1vazogIzJFN0QzMjsKICAg IC0td2FybjogI0M3NzgwMDsKICAgIC0tZXJyOiAjQjcxQzFDOwogICAgLS1yYWRpdXM6IDEwcHg7 CiAgfQogICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgaHRtbCB7IC13ZWJraXQtdGV4 dC1zaXplLWFkanVzdDogMTAwJTsgfQogIGJvZHkgewogICAgZm9udC1mYW1pbHk6ICJTZWdvZSBV SSIsIFJvYm90bywgLWFwcGxlLXN5c3RlbSwgVGFob21hLCBzYW5zLXNlcmlmOwogICAgYmFja2dy b3VuZDogdmFyKC0tYmcpOwogICAgY29sb3I6IHZhcigtLXRleHQpOwogICAgbWFyZ2luOiAwOwog ICAgcGFkZGluZzogMjhweCAxNnB4IDcycHg7CiAgICBsaW5lLWhlaWdodDogMS41NTsKICAgIGZv bnQtc2l6ZTogMTVweDsKICB9CiAgLmNvbnRhaW5lciB7IG1heC13aWR0aDogOTIwcHg7IG1hcmdp bjogMCBhdXRvOyB9CgogIC8qIC0tLS0gS29wZiAtLS0tICovCiAgaGVhZGVyIHsKICAgIGJhY2tn cm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWFjY2VudCkgMCUsICMxNjM2M2Yg MTAwJSk7CiAgICBjb2xvcjogI2ZmZjsKICAgIHBhZGRpbmc6IDMwcHggMzJweCAyNnB4OwogICAg Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKSB2YXIoLS1yYWRpdXMpIDAgMDsKICB9CiAgLmtp Y2tlciB7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6 IDEuNXB4OwogICAgZm9udC1zaXplOiAxMXB4OwogICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgIGNv bG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNzIpOwogICAgbWFyZ2luOiAwIDAgOHB4OwogIH0KICBo ZWFkZXIgaDEgeyBtYXJnaW46IDAgMCA2cHg7IGZvbnQtc2l6ZTogMjdweDsgZm9udC13ZWlnaHQ6 IDcwMDsgbGV0dGVyLXNwYWNpbmc6IDAuMnB4OyB9CiAgaGVhZGVyIC5zdWIgeyBtYXJnaW46IDA7 IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuODgpOyBmb250LXNpemU6IDE0LjVweDsgbWF4LXdp ZHRoOiA2NDBweDsgfQogIC5jaGlwcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsg Z2FwOiA4cHg7IG1hcmdpbi10b3A6IDE4cHg7IH0KICAuY2hpcCB7CiAgICBiYWNrZ3JvdW5kOiBy Z2JhKDI1NSwyNTUsMjU1LDAuMTMpOwogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1 LDI1NSwwLjIyKTsKICAgIGNvbG9yOiAjZmZmOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgcGFk ZGluZzogNHB4IDExcHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICB3aGl0ZS1zcGFjZTog bm93cmFwOwogIH0KCiAgbWFpbiB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJkKTsKICAgIGJv cmRlci1yYWRpdXM6IDAgMCB2YXIoLS1yYWRpdXMpIHZhcigtLXJhZGl1cyk7CiAgICBwYWRkaW5n OiA4cHggMzJweCAzMHB4OwogICAgYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsMCwwLDAu MDcpOwogIH0KCiAgaDIgewogICAgY29sb3I6IHZhcigtLWFjY2VudCk7CiAgICBmb250LXNpemU6 IDE3cHg7CiAgICBtYXJnaW46IDM0cHggMCAxNHB4OwogICAgcGFkZGluZy1ib3R0b206IDdweDsK ICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgIGRpc3BsYXk6IGZs ZXg7IGFsaWduLWl0ZW1zOiBiYXNlbGluZTsgZ2FwOiAxMHB4OwogIH0KICBoMiAubnVtIHsKICAg IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICNmZmY7CiAgICBiYWNr Z3JvdW5kOiB2YXIoLS1hY2NlbnQtMik7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7IHBhZGRpbmc6 IDJweCA3cHg7IGxpbmUtaGVpZ2h0OiAxLjQ7CiAgfQogIHAgeyBtYXJnaW46IDEwcHggMDsgfQog IC5sZWFkIHsgZm9udC1zaXplOiAxNS41cHg7IGNvbG9yOiB2YXIoLS10ZXh0KTsgfQogIC5tdXRl ZCB7IGNvbG9yOiB2YXIoLS1tdXRlZCk7IH0KCiAgLyogLS0tLSBLYXJ0ZW4tUmFzdGVyIC0tLS0g Ki8KICAuZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z OiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7CiAgICBnYXA6IDE0cHg7CiAg ICBtYXJnaW46IDE2cHggMDsKICB9CiAgLmNhcmQgewogICAgYm9yZGVyOiAxcHggc29saWQgdmFy KC0tbGluZSk7CiAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICBwYWRkaW5nOiAxNXB4IDE3cHg7 CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXJkLWFsdCk7CiAgfQogIC5jYXJkIGgzIHsgbWFyZ2lu OiAwIDAgOXB4OyBmb250LXNpemU6IDE0LjVweDsgY29sb3I6IHZhcigtLWFjY2VudCk7IGRpc3Bs YXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9CiAgLmNhcmQgdWwgeyBt YXJnaW46IDA7IHBhZGRpbmctbGVmdDogMThweDsgfQogIC5jYXJkIGxpIHsgbWFyZ2luOiA1cHgg MDsgZm9udC1zaXplOiAxMy41cHg7IH0KICAuY2FyZC5yb2xsZSBwIHsgZm9udC1zaXplOiAxMy41 cHg7IG1hcmdpbjogMDsgY29sb3I6ICMzNjQ3NGY7IH0KCiAgLmJhZGdlIHsKICAgIGRpc3BsYXk6 IGlubGluZS1ibG9jazsgcGFkZGluZzogMnB4IDlweDsgYm9yZGVyLXJhZGl1czogNHB4OwogICAg Zm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogI2ZmZjsgbGluZS1oZWln aHQ6IDEuNTsKICB9CiAgLmItc3UgICB7IGJhY2tncm91bmQ6IHZhcigtLWFjY2VudCk7IH0KICAu Yi1mYSAgIHsgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LTIpOyB9CiAgLmItdXNlciB7IGJhY2tn cm91bmQ6IHZhcigtLW11dGVkKTsgfQoKICAuaW5mby1ib3ggewogICAgYmFja2dyb3VuZDogI0VB RjJGNTsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tYWNjZW50LTIpOwogICAgcGFk ZGluZzogMTFweCAxNXB4OyBtYXJnaW46IDE2cHggMDsgYm9yZGVyLXJhZGl1czogMCA2cHggNnB4 IDA7CiAgICBmb250LXNpemU6IDEzLjVweDsKICB9CgogIHVsLmZsYXQgeyBtYXJnaW46IDhweCAw OyBwYWRkaW5nOiAwOyBsaXN0LXN0eWxlOiBub25lOyB9CiAgdWwuZmxhdCBsaSB7IHBhZGRpbmc6 IDdweCAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGluZSk7IGZvbnQtc2l6ZTog MTMuNXB4OyB9CiAgdWwuZmxhdCBsaTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsg fQoKICBjb2RlIHsKICAgIGJhY2tncm91bmQ6ICNFN0VDRUU7IGNvbG9yOiAjMjQ0MDQ5OyBwYWRk aW5nOiAxcHggNnB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OyBmb250LXNpemU6IDEyLjVweDsK ICAgIGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsICJDYXNjYWRpYSBDb2RlIiwgQ29uc29sYXMs IG1vbm9zcGFjZTsKICB9CgogIHRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lk dGg6IDEwMCU7IGZvbnQtc2l6ZTogMTMuNXB4OyBtYXJnaW46IDEwcHggMDsgfQogIHRoLCB0ZCB7 IHBhZGRpbmc6IDhweCAxMXB4OyB0ZXh0LWFsaWduOiBsZWZ0OyBib3JkZXItYm90dG9tOiAxcHgg c29saWQgdmFyKC0tbGluZSk7IH0KICB0aCB7IGJhY2tncm91bmQ6IHZhcigtLWNhcmQtYWx0KTsg Y29sb3I6IHZhcigtLWFjY2VudCk7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICB0ZCBjb2RlIHsgYmFj a2dyb3VuZDogI0U3RUNFRTsgfQoKICBmb290ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyOyBj b2xvcjogdmFyKC0tbXV0ZWQpOyBmb250LXNpemU6IDEycHg7CiAgICBtYXJnaW4tdG9wOiAzMHB4 OyBwYWRkaW5nLXRvcDogMTRweDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwog IH0KICBAbWVkaWEgKG1heC13aWR0aDogNTYwcHgpIHsKICAgIG1haW4sIGhlYWRlciB7IHBhZGRp bmctbGVmdDogMjBweDsgcGFkZGluZy1yaWdodDogMjBweDsgfQogICAgaGVhZGVyIGgxIHsgZm9u dC1zaXplOiAyM3B4OyB9CiAgfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgogIDxkaXYgY2xhc3M9 ImNvbnRhaW5lciI+CiAgICA8aGVhZGVyPgogICAgICA8cCBjbGFzcz0ia2lja2VyIj5BbndlbmR1 bmdzLUluZm9ybWF0aW9uPC9wPgogICAgICA8aDE+VkkzIERHTC1QbGFudW5nPC9oMT4KICAgICAg PHAgY2xhc3M9InN1YiI+V2ViLWJhc2llcnRlIERpZW5zdHBsYW51bmcgZGVyIFZlcmtlaHJzaW5z cGVrdGlvbiAzIOKAlCBBYmzDtnN1bmcgZGVyIGZyw7xoZXJlbiBFeGNlbC1NYWtyby1Mw7ZzdW5n LCBhdXNnZWxlZ3QgZsO8ciBtZWhyZXJlIGdsZWljaHplaXRpZ2UgQmVhcmJlaXRlciBvaG5lIERh dGVpLUtvbmZsaWt0ZS48L3A+CiAgICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4KICAgICAgICA8c3Bh biBjbGFzcz0iY2hpcCI+TMOkdWZ0IG9mZmxpbmUgYXVmIGxvY2FsaG9zdDwvc3Bhbj4KICAgICAg ICA8c3BhbiBjbGFzcz0iY2hpcCI+S2VpbmUgQ2xvdWQsIGtlaW4gSW50ZXJuZXQ8L3NwYW4+CiAg ICAgICAgPHNwYW4gY2xhc3M9ImNoaXAiPn40NiBQZXJzb25lbiDCtyA2IERpZW5zdGdydXBwZW48 L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNoaXAiPkpTT04tRGF0ZW5oYWx0dW5nPC9zcGFu PgogICAgICA8L2Rpdj4KICAgIDwvaGVhZGVyPgogICAgPG1haW4+CgogICAgICA8aDI+PHNwYW4g Y2xhc3M9Im51bSI+MTwvc3Bhbj4gw5xiZXJibGljazwvaDI+CiAgICAgIDxwIGNsYXNzPSJsZWFk Ij4KICAgICAgICBEaWUgVkkzIERHTC1QbGFudW5nIHZlcndhbHRldCBkaWUgU2NoaWNodHBsYW51 bmcgdm9uIHJ1bmQgNDYgUGVyc29uZW4KICAgICAgICBpbiA2IERpZW5zdGdydXBwZW4gw7xiZXIg bWVocmVyZSBTdGFuZG9ydGUuIFNpZSBsw6R1ZnQgbG9rYWw6IERlciBCcm93c2VyCiAgICAgICAg dmVyYmluZGV0IHNpY2ggYXVzc2NobGllw59saWNoIG1pdCA8Y29kZT5sb2NhbGhvc3Q8L2NvZGU+ LCBkaWUgRGF0ZW4KICAgICAgICBsaWVnZW4gYWxzIEpTT04tRGF0ZWllbiBhdWYgZGVtIGRpZW5z dGxpY2hlbiBOZXR6bGF1ZndlcmsuIE1laHJlcmUKICAgICAgICBCZWFyYmVpdGVyIGFyYmVpdGVu IGdsZWljaHplaXRpZyDigJQgw4RuZGVydW5nZW4gd2VyZGVuIGxpdmUgYWJnZWdsaWNoZW4sCiAg ICAgICAgS29uZmxpa3RlIGVya2FubnQgdW5kIGdlbWVsZGV0LgogICAgICA8L3A+CgogICAgICA8 aDI+PHNwYW4gY2xhc3M9Im51bSI+Mjwvc3Bhbj4gUm9sbGVuICZhbXA7IFJlY2h0ZTwvaDI+CiAg ICAgIDxkaXYgY2xhc3M9ImdyaWQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgcm9sbGUiPgog ICAgICAgICAgPGgzPjxzcGFuIGNsYXNzPSJiYWRnZSBiLXN1Ij5TdXBlclVzZXI8L3NwYW4+PC9o Mz4KICAgICAgICAgIDxwPlZvbGxlciBadWdyaWZmLiBQZmxlZ3QgU3RhbW1kYXRlbiwgRGllbnN0 Z3J1cHBlbiwgU3RhbmRvcnRlLAogICAgICAgICAgU2NoaWNodGNvZGVzLCBLYWxlbmRlciB1bmQg 4oCUIGV4a2x1c2l2IOKAlCBkaWUgU3VwZXJVc2VyLSB1bmQKICAgICAgICAgIEZhY2hhdWZzaWNo dC1MaXN0ZW4uIE1pbmRlc3RlbnMgZWluIFN1cGVyVXNlciBpc3QgaW1tZXIgYWt0aXYuPC9wPgog ICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgcm9sbGUiPgogICAgICAgICAg PGgzPjxzcGFuIGNsYXNzPSJiYWRnZSBiLWZhIj5GYWNoYXVmc2ljaHQ8L3NwYW4+PC9oMz4KICAg ICAgICAgIDxwPkdyYW51bGFyIGZyZWlzY2hhbHRiYXI6IEFkbWluaXN0cmF0aW9uLCBTdGF0aXN0 aWssIExvZ2J1Y2gsCiAgICAgICAgICBCYWNrdXBzIOKAlCBzb3dpZSB3ZWxjaGUgUGVyc29uZW4s IERpZW5zdGdydXBwZW4gb2RlciBTdGFuZG9ydGUgZWRpdGllcnQKICAgICAgICAgIHdlcmRlbiBk w7xyZmVuLiBPcHRpb25hbCDigJ5nZXNhbXR2ZXJhbnR3b3J0bGljaCIgKGVyaMOkbHQgSGlud2Vp c2UpLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIHJvbGxlIj4K ICAgICAgICAgIDxoMz48c3BhbiBjbGFzcz0iYmFkZ2UgYi11c2VyIj5SZWd1bMOkcmVyIFVzZXI8 L3NwYW4+PC9oMz4KICAgICAgICAgIDxwPlNpZWh0IFBsYW51bmcsIFdvY2hlbnBsYW4gdW5kIHBl cnPDtm5saWNoZW4gUGxhbi4gQmVhcmJlaXRldCBkaWUKICAgICAgICAgIGVpZ2VuZSBaZWlsZSB1 bmQgZGFzIGVpZ2VuZSBNaWtyb3RlYW0uIEFkbWluL1N0YXRpc3Rpay9Mb2didWNoIGJsZWliZW4K ICAgICAgICAgIGF1c2dlYmxlbmRldCDigJQgYmVpIEJlZGFyZiBnZXppZWx0IGVyd2VpdGVyYmFy LjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImluZm8t Ym94Ij4KICAgICAgICA8Yj5QcmluemlwOjwvYj4gU3VwZXJVc2VyJm5ic3A7Jmd0OyZuYnNwO0Zh Y2hhdWZzaWNodCZuYnNwOyZndDsmbmJzcDtyZWd1bMOkcmVyJm5ic3A7VXNlci4KICAgICAgICBK ZWRlciBaZWxsLUtsaWNrIHdpcmQgc2VydmVyc2VpdGlnIGdlZ2VuIGRpZSBlaWdlbmVuIFJlY2h0 ZSBnZXByw7xmdDsKICAgICAgICBuaWNodCBlZGl0aWVyYmFyZSBaZWxsZW4gZXJzY2hlaW5lbiBn ZWTDpG1wZnQgdW5kIHNpbmQgZ2VzcGVycnQuCiAgICAgIDwvZGl2PgoKICAgICAgPGgyPjxzcGFu IGNsYXNzPSJudW0iPjM8L3NwYW4+IEZ1bmt0aW9uZW48L2gyPgogICAgICA8ZGl2IGNsYXNzPSJn cmlkIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICAgICA8aDM+UGxhbnVuZyAm YW1wOyBBbnNpY2h0ZW48L2gzPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+SmFocmVz cGxhbnVuZyBtaXQgcnVuZCAzMCBmYXJiY29kaWVydGVuIFNjaGljaHRjb2RlcyAoRnLDvGgtL1Nw w6R0LS9OYWNodC1ER0wsIFdERiwgRkJQLCBBYndlc2VuaGVpdGVuLCBTb25kZXJkaWVuc3RlKTwv bGk+CiAgICAgICAgICAgIDxsaT5UYWdlcy1TdMOkcmtlIGplIFNjaGljaHQsIFVudGVyYmVzZXR6 dW5nIGZhcmJsaWNoIG1hcmtpZXJ0PC9saT4KICAgICAgICAgICAgPGxpPkF1dG9tYXRpc2NoZXIg 4oCedmVyYW50d29ydGxpY2hlciBER0wiIG5hY2ggUmFuZzwvbGk+CiAgICAgICAgICAgIDxsaT5T Y2hpY2h0cm90YXRpb24gcHJvIFN0YW5kb3J0IChBQkMvQkNBL0NBQik8L2xpPgogICAgICAgICAg ICA8bGk+V29jaGVucGxhbiBpbiBBdXNoYW5nLU9wdGlrICZhbXA7IHBlcnPDtm5saWNoZXIgMTIt TW9uYXRzLVBsYW48L2xpPgogICAgICAgICAgICA8bGk+4oCeTWVpbiBTY2hpY2h0LVRlYW0iIOKA lCAxNC1UYWdlLcOcYmVyc2ljaHQgZGVyIGVpZ2VuZW4gU2NoaWNodC1Lb2hvcnRlIHBlciBLbm9w ZmRydWNrPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYg Y2xhc3M9ImNhcmQiPgogICAgICAgICAgPGgzPlN0ZXVlcnVuZyAmYW1wOyBSZWNodGU8L2gzPgog ICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+TWlrcm90ZWFtcyBmw7xyIGdlbWVpbnNhbWUg UGxhbnVuZyBkZWZpbmllcnRlciBQZXJzb25lbmdydXBwZW48L2xpPgogICAgICAgICAgICA8bGk+ VGVzdGFuc2ljaHQ6IFN1cGVyVXNlciBwcsO8ZnQgZGllIE9iZXJmbMOkY2hlIGF1cyBTaWNodCBq ZWRlciBQZXJzb24gb2RlciBGYWNoYXVmc2ljaHQgKHJlaW4gbG9rYWwpPC9saT4KICAgICAgICAg ICAgPGxpPlNpY2h0YmFya2VpdCBzdGV1ZXJuOiBlaW56ZWxuZSBQZXJzb25lbiwgRGllbnN0Z3J1 cHBlbiBvZGVyIEZ1bmt0aW9uZW4gYXVzIGRlciBQbGFudW5nIGF1c2JsZW5kZW48L2xpPgogICAg ICAgICAgICA8bGk+RXJzY2hlaW51bmdzYmlsZC1FZGl0b3I6IE1hcmtpZXJ1bmdlbiBmw7xyIFNv bmRlcnRhZ2UsIHdpY2h0aWdlIEZlaWVydGFnZSwgRmVyaWVuIHVuZCBIZXV0ZS1TcGFsdGUgZnJl aSBrb25maWd1cmllcmJhcjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgoKICAg ICAgICA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgICAgIDxoMz5Lb21tdW5pa2F0aW9uICZhbXA7 IEhpbndlaXNlPC9oMz4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPkluLUFwcC1IaW53 ZWlzc3lzdGVtIGbDvHIgU3VwZXJVc2VyICZhbXA7IEdlc2FtdHZlcmFudHdvcnRsaWNoZSAoS3Jh bmttZWxkdW5nLCBSb2xsZW4tL1ZlcmFudHdvcnR1bmdzwq13ZWNoc2VsLCBCYWNrdXAtUmVzdG9y ZSwgUGxhbnVuZ3MtUmVzZXQpIHN0YXR0IEUtTWFpbC1GbHV0PC9saT4KICAgICAgICAgICAgPGxp PkdlemllbHRlIG1haWx0by1Wb3JsYWdlbiBmw7xyIFZlcmFudHdvcnR1bmdzwq3DvGJlcmdhbmcg JmFtcDsgQmVzZXR6dW5nc2FuZnJhZ2VuPC9saT4KICAgICAgICAgICAgPGxpPkFuc3ByZWNocGFy dG5lciBpbSBJbmZvLUZlbnN0ZXIgZGVyIEFwcCBoaW50ZXJsZWdiYXI8L2xpPgogICAgICAgICAg ICA8bGk+QmVpIGVpbmVtIFZlcmFudHdvcnR1bmdzd2VjaHNlbCBlaW5lIGVpbnppZ2UgU2FtbWVs LUUtTWFpbCBhbiBhbGxlIEJldHJvZmZlbmVuIChBdWZyw7xja2VyICZhbXA7IFZlcmRyw6RuZ3Rl KSBtaXQgbnVyIGVpbmVtIEtsaWNrPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+ CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICAgICAgPGgzPkF1c3dlcnR1bmcgJmFt cDsgQmVzZXR6dW5nPC9oMz4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPlN0YXRpc3Rp ay1EYXNoYm9hcmQgbWl0IEtQSXMsIEZhaXJuZXNzLVZlcnRlaWx1bmcgKFdvY2hlbmVuZGUvRmVp ZXJ0YWcpLCBBYndlc2VuaGVpdGVuICZhbXA7IEF1ZnLDvGNrZXI8L2xpPgogICAgICAgICAgICA8 bGk+QmVzZXR6dW5nc2tvbnRyb2xsZSBtaXQgRGVmaXppdC1Wb3JzY2hhdSDDvGJlciBtZWhyZXJl IFdvY2hlbjwvbGk+CiAgICAgICAgICAgIDxsaT7igJ5LYW5kaWRhdGVuIGFuc2NocmVpYmVuIiBi ZWkgdW50ZXJiZXNldHp0ZW4gU2NoaWNodGVuPC9saT4KICAgICAgICAgICAgPGxpPkxvZ2J1Y2gg YWxsZXIgw4RuZGVydW5nZW4gbWl0IFplaXRzdGVtcGVsICZhbXA7IEJlbnV0emVyPC9saT4KICAg ICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQiPgog ICAgICAgICAgPGgzPkRhdGVuICZhbXA7IEJldHJpZWI8L2gzPgogICAgICAgICAgPHVsPgogICAg ICAgICAgICA8bGk+RXhjZWwtSW1wb3J0IGF1cyBkZXIgYWx0ZW4gVm9ybGFnZSAoaW5rbC4gQXV0 by1Lb3JyZWt0dXJlbik8L2xpPgogICAgICAgICAgICA8bGk+QXV0b21hdGlzY2hlIEJhY2t1cHMg dm9yIFJlc2V0LCBEZW1vLURhdGVuICZhbXA7IFdpZWRlcmhlcnN0ZWxsdW5nOyBtYW51ZWxsZSBC YWNrdXBzIGplZGVyemVpdDwvbGk+CiAgICAgICAgICAgIDxsaT5MaXZlLVN5bmMgbWVocmVyZXIg QmVhcmJlaXRlcjsgZ2xlaWNoemVpdGlnZSBaZWxsLUJlYXJiZWl0dW5nIHdpcmQgZXJrYW5udDwv bGk+CiAgICAgICAgICAgIDxsaT5UYWctL05hY2h0LU1vZHVzLCBBdmF0YXJlICZhbXA7IFBlcnNv bmVuLVNjaG5lbGxpbmZvPC9saT4KICAgICAgICAgICAgPGxpPkRpYWdub3NlLVNlaXRlIDxjb2Rl PnN5bmMtY2hlY2suaHRtbDwvY29kZT4gbWl0IFN0YXJ0LURpYWdub3NlIChNb2R1bC1MYWRldGVz dCk8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KCiAgICAgIDwvZGl2PgoKICAg ICAgPGgyPjxzcGFuIGNsYXNzPSJudW0iPjQ8L3NwYW4+IFNpY2hlcmhlaXQgJmFtcDsgRGF0ZW5z Y2h1dHo8L2gyPgogICAgICA8cD4KICAgICAgICBHZXNwZWljaGVydCB3aXJkIG51ciwgd2FzIGRp ZSBEaWVuc3RwbGFudW5nIGVyZm9yZGVydDogTmFtZSwgVm9ybmFtZSwKICAgICAgICBEaWVuc3Rn cmFkIChvcHRpb25hbCksIERpZW5zdGdydXBwZSwgU3RhbmRvcnQsIERpZW5zdC1UZWxlZm9uLAog ICAgICAgIE5XLUtlbm51bmcgc293aWUgb3B0aW9uYWwgRS1NYWlsIHVuZCBHZWJ1cnRzZGF0dW0u IERpZSBEYXRlbiB2ZXJsYXNzZW4KICAgICAgICBkYXMgZGllbnN0bGljaGUgTmV0emxhdWZ3ZXJr IG5pY2h0IOKAlCBrZWluZSDDnGJlcnRyYWd1bmcgaW5zIEludGVybmV0IG9kZXIKICAgICAgICBh biBEcml0dGUuCiAgICAgIDwvcD4KICAgICAgPHVsIGNsYXNzPSJmbGF0Ij4KICAgICAgICA8bGk+ PGI+WnVncmlmZnNzY2h1dHo6PC9iPiBqZWRlciBaZWxsLUtsaWNrIHdpcmQgc2VydmVyc2VpdGln IGdlZ2VuIGRpZSBlaWdlbmVuIFJlY2h0ZSBnZXByw7xmdCDigJQgUmVjaHRlIGxhc3NlbiBzaWNo IG5pY2h0IGNsaWVudHNlaXRpZyBlcndlaXRlcm4uPC9saT4KICAgICAgICA8bGk+PGI+TmFjaHZv bGx6aWVoYmFya2VpdDo8L2I+IGRhcyBMb2didWNoIGRva3VtZW50aWVydCDDhG5kZXJ1bmdlbiBt aXQgWmVpdHN0ZW1wZWwgdW5kIE5XLUtlbm51bmc7IGVpbnNlaGJhciBudXIgZsO8ciBTdXBlclVz ZXIgdW5kIGZyZWlnZXNjaGFsdGV0ZSBGYWNoYXVmc2ljaHQuPC9saT4KICAgICAgICA8bGk+PGI+ S2VpbmUgTmV0emZyZWlnYWJlOjwvYj4gZGVyIFNlcnZlciBiaW5kZXQgYXVzc2NobGllw59saWNo IGF1ZiA8Y29kZT5sb2NhbGhvc3Q8L2NvZGU+OyBTZWN1cml0eS1IZWFkZXIgKDxjb2RlPlgtQ29u dGVudC1UeXBlLU9wdGlvbnM8L2NvZGU+LCA8Y29kZT5YLUZyYW1lLU9wdGlvbnM8L2NvZGU+LCA8 Y29kZT5SZWZlcnJlci1Qb2xpY3k8L2NvZGU+KSBhdWYgYWxsZW4gQW50d29ydGVuLjwvbGk+CiAg ICAgIDwvdWw+CgogICAgICA8aDI+PHNwYW4gY2xhc3M9Im51bSI+NTwvc3Bhbj4gVGVjaG5pazwv aDI+CiAgICAgIDx1bCBjbGFzcz0iZmxhdCI+CiAgICAgICAgPGxpPjxiPkZyb250ZW5kOjwvYj4g VmFuaWxsYSBIVE1ML0NTUy9KUyBhbHMgRVMtTW9kdWxlIOKAlCBrZWluIEJ1aWxkLVN0ZXAsIGtl aW5lIGV4dGVybmVuIEFiaMOkbmdpZ2tlaXRlbi48L2xpPgogICAgICAgIDxsaT48Yj5CYWNrZW5k OjwvYj4gbG9rYWxlciBQb3dlclNoZWxsLVNlcnZlciAoPGNvZGU+c2VydmVyLnBzMTwvY29kZT4p IGF1ZiBkZW0gZWlnZW5lbiBSZWNobmVyLCBnZWJ1bmRlbiBhbiA8Y29kZT5sb2NhbGhvc3Q8L2Nv ZGU+LjwvbGk+CiAgICAgICAgPGxpPjxiPkRhdGVuOjwvYj4gSlNPTi1EYXRlaWVuIGbDvHIgS29u ZmlndXJhdGlvbiwgUGxhbnVuZywgTG9nYnVjaCB1bmQgSGlud2Vpc2Ug4oCUIGtlaW5lIERhdGVu YmFuaywga2VpbmUgQ2xvdWQuPC9saT4KICAgICAgICA8bGk+PGI+QXV0by1TaHV0ZG93bjo8L2I+ IGRlciBTZXJ2ZXIgYmVlbmRldCBzaWNoIGJlaW0gU2NobGllw59lbiBkZXMgQnJvd3Nlci1UYWJz IChwZXIgPGNvZGU+c2VuZEJlYWNvbjwvY29kZT4pIGJ6dy4gc3DDpHRlc3RlbnMgMzAmbmJzcDtz IG5hY2ggZGVtIGxldHp0ZW4gSGVhcnRiZWF0LjwvbGk+CiAgICAgICAgPGxpPjxiPkhlYXJ0YmVh dDo8L2I+IGzDpHVmdCBpbiBlaW5lbSBXZWItV29ya2VyIOKAlCBXZWNoc2VsIGluIGVpbmVuIEhp bnRlcmdydW5kLVRhYiBiZWVuZGV0IGRlbiBTZXJ2ZXIgbmljaHQsIGVyc3QgZGFzIHRhdHPDpGNo bGljaGUgU2NobGllw59lbi48L2xpPgogICAgICA8L3VsPgoKICAgICAgPGgyPjxzcGFuIGNsYXNz PSJudW0iPjY8L3NwYW4+IFN0YXJ0LVZhcmlhbnRlbjwvaDI+CiAgICAgIDx0YWJsZT4KICAgICAg ICA8dHI+PHRoIHN0eWxlPSJ3aWR0aDozNCUiPlZhcmlhbnRlPC90aD48dGg+WndlY2s8L3RoPjwv dHI+CiAgICAgICAgPHRyPjx0ZD48Y29kZT5zdGFydC52YnM8L2NvZGU+PC90ZD48dGQ+U3RhbmRh cmQgcGVyIERvcHBlbGtsaWNrIOKAlCBzdGFydGV0IHVuc2ljaHRiYXIsIEJyb3dzZXIgw7ZmZm5l dCBhdXRvbWF0aXNjaDwvdGQ+PC90cj4KICAgICAgICA8dHI+PHRkPjxjb2RlPmRnbC5iYXQ8L2Nv ZGU+PC90ZD48dGQ+TGF1bmNoZXIgbWl0IHNpY2h0YmFyZW0gRmVuc3RlciB3w6RocmVuZCBkZXMg U3RhcnRzPC90ZD48L3RyPgogICAgICAgIDx0cj48dGQ+PGNvZGU+ZGdsLmJhdCAvZGVidWc8L2Nv ZGU+PC90ZD48dGQ+UG93ZXJTaGVsbC1GZW5zdGVyIG1pdCBMaXZlLUxvZyB6dXIgRmVobGVyc3Vj aGU8L3RkPjwvdHI+CiAgICAgIDwvdGFibGU+CgogICAgICA8aDI+PHNwYW4gY2xhc3M9Im51bSI+ Nzwvc3Bhbj4gQW5zcHJlY2hwYXJ0bmVyPC9oMj4KICAgICAgPHA+CiAgICAgICAgRnJhZ2VuIHp1 IEFud2VuZHVuZywgU2NoaWNodGNvZGVzLCBSZWNodGV2ZXJnYWJlIG9kZXIgUGxhbnVuZ3PCrWVu dHNjaGVpZHVuZ2VuCiAgICAgICAgcmljaHRlbiBTaWUgYW4gZGllIFN1cGVyVXNlciDigJQgZXJy ZWljaGJhciBpbiBkZXIgQW53ZW5kdW5nIG9iZW4gcmVjaHRzIMO8YmVyCiAgICAgICAgZGFzIElu Zm8tU3ltYm9sIDxjb2RlPuKEuTwvY29kZT4uCiAgICAgIDwvcD4KCiAgICAgIDxmb290ZXI+CiAg ICAgICAgVkkzIERHTC1QbGFudW5nIMK3IFZlcmtlaHJzaW5zcGVrdGlvbiAzIMK3IERpZXNlIFNl aXRlIGlzdCByZWluIGluZm9ybWF0aXYgdW5kIHNwZWljaGVydCBzZWxic3Qga2VpbmUgRGF0ZW4u CiAgICAgIDwvZm9vdGVyPgogICAgPC9tYWluPgogIDwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K ### FILE: js/admin.js | 77365 Ly8gPT09IGFkbWluL2FkbWluLmpzID09PQovLyBLb25zb2xpZGllcnRlcyBBZG1pbi1Nb2R1bDog RGlzcGF0Y2hlciwgU2ljaHRiYXJrZWl0LCBCYWNrdXBzLCBHcnVwcGVuLAovLyBCZXplaWNobnVu Z2VuLCBCZWRpZW51bmdzLUhpbGZlLCBFaW5zdGVsbHVuZ2VuLCBTdGFuZG9ydGUrU2NoaWNodGZv bGdlLAovLyBQZXJzb25hbC1WZXJ3YWx0dW5nIChpbmtsLiBJbmxpbmUtRWRpdHMpLCBGZWllcnRh Z2UsIEZlcmllbiwgU29uZGVydGVybWluZSwKLy8gU2NoaWNodGNvZGVzLCBGZWF0dXJlcywgU3Vw ZXJVc2VyLUxpc3RlLCBGYWNoYXVmc2ljaHQtVmVyd2FsdHVuZwovLyAoaW5rbC4gU3ViLVNpY2h0 YmFya2VpdCkuIEJld3Vzc3RlIEtvbnNvbGlkaWVydW5nIGdlZ2VuIEZMRDogVkkzIGVudGZhbGxl bgovLyBNZWRpZW4vUm90YXRpb24vSW5mby1SVEUsIFBlcnNvbmVuLUxpc3RlIGRldXRsaWNoIGts ZWluZXIgYWxzIEZMRC4KLy8KLy8gSG9va3MtS29uc3VtZW50ZW4gaW4gYW5kZXJlbiBNb2R1bGVu IChQaGFzZSA0LTcpIGJla29tbWVuIGlocmUgVmVyd2Vpc2UKLy8gdWViZXIgZGllIGpld2VpbGln ZW4gKi1Ib29rcy1PYmpla3RlIGdlc2V0enQ7IHNpZWhlIGFwcC5qcyBpbml0LgoKaW1wb3J0IHsg WiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7CiAgICBlc2NhcGVIVE1MLCBlc2Nh cGVBdHRyLAogICAgZGF0dW1TdHIsIGRhdHVtRm9ybWF0REUsIGRhdHVtS3VyekRFLCB3b2NoZW50 YWdLdXJ6LCBpc3RXb2NoZW5lbmRlLAogICAgZnVua3Rpb25zUmFuZywgZ2V0RnVua3Rpb25lbiwg Z2V0RGllbnN0Z3JhZGUsCiAgICBGVU5LVElPTkVOX0RFRkFVTFQsIERJRU5TVEdSQURFX0RFRkFV TFQsCiAgICBfcGVyc29uQW56ZWlnZSwgYWJzZW5kZXJOYW1lRXJtaXR0ZWxuCn0gZnJvbSAnLi9j b3JlX3V0aWwuanMnOwppbXBvcnQgeyBhcGksIGFwaVBvc3QsIGFwaVB1dCB9IGZyb20gJy4vY29y ZV9hcGkuanMnOwppbXBvcnQgewogICAgdG9hc3QsIGJlc3RhZXRpZ2VuLAogICAgbW9kYWxaZWln ZW4sIG1vZGFsU2NobGllc3NlbiwgbW9kYWxEaXJ0eVRyYWNraW5nQWt0aXZpZXJlbiwKICAgIGVu dHd1cmZGdWVyLCBlbnR3dXJmU3BlaWNoZXJuLCBlbnR3dXJmTG9lc2NoZW4sCiAgICBkaXJ0eVJl Z2lzdHJpZXJlLCBkaXJ0eVNldHplbiwgZGlydHlJc3QsIGRpcnR5S2VubnQsIGRpcnR5QWt0aXZl LAogICAgZGlydHlFaW50cmFnLAogICAgdGFiRHJhZnRGdWVyLCB0YWJEcmFmdFNwZWljaGVybiwg dGFiRHJhZnRMb2VzY2hlbiwgdGFiRHJhZnRBdXRvQ2xlYW51cAp9IGZyb20gJy4vdWlfZGlhbG9n LmpzJzsKaW1wb3J0IHsKICAgIHNhbml0aXplUmljaEh0bWwsIEVNT0pJX1NFVCwKICAgIGVtb2pp UGlja2VyWmVpZ2VuLCBlbW9qaVBpY2tlclNjaGxpZXNzZW4sCiAgICBydGVJbml0LCBydGVCdXR0 b25TdGF0ZXMKfSBmcm9tICcuL3VpX3J0ZS5qcyc7CmltcG9ydCB7CiAgICBkYXJmQWRtaW5TdWJ0 YWIsIGRhdHVtSW5WZXJiaW5kbGljaGtlaXQKfSBmcm9tICcuL2NvcmVfcGVybWlzc2lvbnMuanMn OwppbXBvcnQgewogICAgQURNSU5fTElTVF9GRUxERVIsIGFkbWluTGlzdGVuTm9ybWFsaXNpZXJl biwKICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4KfSBmcm9tICcuL2NvcmVfZGF0ZW5MYWRlbi5qcyc7 CmltcG9ydCB7CiAgICB0YWdlRXJ6ZXVnZW4sIHRhZ0luZm9zQmVyZWNobmVuLAogICAgZ3JpZFJl bmRlcm4sIGtvcGZSZW5kZXJuLCBhbnNpY2h0V2VjaHNlbG4sCiAgICBuYW1lblJlbmRlcm4sIGRh dGVuR3JpZFJlbmRlcm4sCiAgICBLQVRFR09SSUVfSUNPTl9ERUZBVUxUCn0gZnJvbSAnLi9ncmlk X3JlbmRlci5qcyc7CmltcG9ydCB7IGZ1ZWhydW5nc1phZWhsZW4gfSBmcm9tICcuL2dyaWRfZWRp dG9yLmpzJzsKaW1wb3J0IHsKICAgIGJlc2V0enVuZ3NUYWJGYXJiZUFrdHVhbGlzaWVyZW4sIGJl c2V0enVuZ3Nrb250cm9sbGVSZW5kZXJuCn0gZnJvbSAnLi9iZXNldHp1bmcuanMnOwppbXBvcnQg ewogICAgRU1BSUxfVk9STEFHRU5fREVGQVVMVCwgRU1BSUxfVk9STEFHRU5fTUVUQSwKICAgIGVt YWlsVm9ybGFnZW5Ib2xlbiwgZW1haWxWb3JsYWdlblJlbmRlcm4sIGVtYWlsVm9ybGFnZUJlYXJi ZWl0ZW5Nb2RhbAp9IGZyb20gJy4vZW1haWxfdm9ybGFnZW4uanMnOwppbXBvcnQgeyBtaXR0ZWls dW5nZW5UYWJSZW5kZXJuLCBtaXR0ZWlsdW5nTmV1T2VmZm5lbiB9IGZyb20gJy4vYWRtaW5fbWl0 dGVpbHVuZ2VuLmpzJzsKLy8gTG9rYWxlIEF1ZnJ1ZmVyIHZvbiBzdXBlclVzZXJSZW5kZXJuICsg ZmFjaGF1ZnNpY2h0UmVuZGVybiBicmF1Y2hlbgovLyBuYWNoIFBoYXNlIDktQiBDMSBleHBsaXpp dGUgSW1wb3J0cyDigJQgZGFzIFBhc3MtVGhyb3VnaC1SZS1FeHBvcnQgYW0KLy8gRGF0ZWktRW5k ZSBzdGVsbHQgZGllIFN5bWJvbGUgbnVyIGZ1ZXIgZXh0ZXJuZSBLb25zdW1lbnRlbiBiZXJlaXQs Ci8vIG5pY2h0IGltIE1vZHVsLVNjb3BlIHZvbiBhZG1pbi5qcyBzZWxic3QuCmltcG9ydCB7IHN1 cGVyVXNlclJlbmRlcm4sIGZhY2hhdWZzaWNodFJlbmRlcm4sIHJvbGxlblRhYmVsbGVSZW5kZXJu IH0gZnJvbSAnLi9hZG1pbl9yb2xsZW4uanMnOwovLyBBbmFsb2cgUGhhc2UgOS1CIEMyOiBzY2hp Y2h0Y29kZVZvcnNjaGF1UmVuZGVybiB3aXJkIGF1cwovLyBhZG1pblJlbmRlcm4oKSBoZXJhdXMg YXVmZ2VydWZlbiwgZGFoZXIgZXhwbGl6aXQgbG9rYWwgaW1wb3J0aWVyZW4uCmltcG9ydCB7IHNj aGljaHRjb2RlVm9yc2NoYXVSZW5kZXJuIH0gZnJvbSAnLi9hZG1pbl9jb2Rlcy5qcyc7Ci8vIFBo YXNlIDktQiBDMzogZmVpZXJ0YWdlVGFiZWxsZVJlbmRlcm4sIGZlcmllblRhYmVsbGVSZW5kZXJu LAovLyBzb25kZXJ0ZXJtaW5lUmVuZGVybiB3ZXJkZW4gdm9uIGFkbWluUmVuZGVybigpIGF1Zmdl cnVmZW4uCmltcG9ydCB7CiAgICBmZWllcnRhZ2VUYWJlbGxlUmVuZGVybiwgZmVyaWVuVGFiZWxs ZVJlbmRlcm4sIHNvbmRlcnRlcm1pbmVSZW5kZXJuLAogICAgZmVyaWVuQXVzVGFiZWxsZUxlc2Vu Cn0gZnJvbSAnLi9hZG1pbl9rYWxlbmRlci5qcyc7Ci8vIFBoYXNlIDktQiBDNDogcGVyc29uYWxU YWJlbGxlUmVuZGVybiB3aXJkIHZvbiBhZG1pblJlbmRlcm4oKSBhdWZnZXJ1ZmVuLgppbXBvcnQg eyBwZXJzb25hbFRhYmVsbGVSZW5kZXJuIH0gZnJvbSAnLi9hZG1pbl9wZXJzb25hbC5qcyc7Cmlt cG9ydCB7IHN0YXRpc3Rpa0xheW91dFJlbmRlcm4gfSBmcm9tICcuL2FkbWluX3N0YXRpc3Rpay5q cyc7CmltcG9ydCB7IHN0YXRpc3Rpa0J1aWxkZXJSZW5kZXJuIH0gZnJvbSAnLi9hZG1pbl9zdGF0 aXN0aWtfYnVpbGRlci5qcyc7CmltcG9ydCB7CiAgICBlcnNjaGVpbnVuZ3NiaWxkUmVuZGVybiwg ZXJzY2hlaW51bmdzYmlsZFNwZWljaGVybiwgZXJzY2hlaW51bmdzYmlsZFp1cnVlY2tzZXR6ZW4s CiAgICB2b3JzY2hhdUFrdHVhbGlzaWVyZW4sIHN5bmNGbGFzaFZvcnNjaGF1LCBtYXJraWVydW5n ZW5BbndlbmRlbgp9IGZyb20gJy4vYWRtaW5fZXJzY2hlaW51bmdzYmlsZC5qcyc7CgovLyA9PT09 PSBIb29rcyA9PT09PQoKZXhwb3J0IHZhciBhZG1pbkhvb2tzID0gewogICAgYmVkaWVudW5nWmVp bGVuUmVuZGVybjogbnVsbCAgIC8vIGJsZWlidCBpbiBhcHAuanMgKEluZm8tRmVuc3RlcikKfTsK Ci8vIEJFRElFTlVOR19ERUZBVUxUIOKAlCBEZWZhdWx0LUJlZGllbnVuZ3MtSGlud2Vpc2UsIGdy ZWlmZW4gd2VubgovLyBhZG1pbi5iZWRpZW51bmdzdGV4dGUgbGVlciBpc3QuIEZvcm1hdCAiVGl0 ZWw6IFRleHQiIHBybyBaZWlsZS4KdmFyIEJFRElFTlVOR19ERUZBVUxUID0KICAgICdQbGFudW5n OiBFaW5mYWNoLUtsaWNrIGFrdGl2aWVydCBkaWUgWmVsbGUgKGtsZWluZXMgZHVua2Vscm90ZXMg UXVhZHJhdCB1bnRlbiByZWNodHMpLiBEb3BwZWxrbGljayDDtmZmbmV0IGRlbiBTY2hpY2h0Y29k ZS1FZGl0b3IuIEtvbW1lbnRhciDDvGJlciBkYXMgRWluZ2FiZWZlbGQgaW0gRWRpdG9yLlxuJyAr CiAgICAnRHJhZy1GaWxsIChFeGNlbC1Gw7xsbGvDpHN0Y2hlbik6IEF1ZiBkYXMgZHVua2Vscm90 ZSBRdWFkcmF0IGtsaWNrZW4sIGdlZHLDvGNrdCBoYWx0ZW4gdW5kIHNlaXRsaWNoIMO8YmVyIGRp ZSBaZWxsZW4gZGVyc2VsYmVuIFBlcnNvbiB6aWVoZW4g4oCUIGRlciBXZXJ0IHdpcmQgYXVmIGFs bGUgw7xiZXJzdHJpY2hlbmVuIFRhZ2Ugw7xiZXJ0cmFnZW4uXG4nICsKICAgICdXb2NoZW5wbGFu OiBER0wgdW5kIFdERi9GQlAgZ2V0cmVubnQgZGFyZ2VzdGVsbHQsIG1pdCBEaWVuc3RudW1tZXJu LiAqIG1hcmtpZXJ0IEJlc2V0enVuZyBhdXMgZGVtIEZ1bmt0aW9uc2Jlc2V0enVuZ3NwbGFuLlxu JyArCiAgICAnUGVycy4gUGxhbjogSmFocmVzw7xiZXJzaWNodCBmw7xyIGVpbmUgZWluemVsbmUg UGVyc29uIG1pdCBNb25hdHNrYWxlbmRlcm4uXG4nICsKICAgICdIZXV0ZS1CdXR0b246IFNjcm9s bHQgenVtIGhldXRpZ2VuIERhdHVtLlxuJyArCiAgICAnQmFja3VwOiBFcnN0ZWxsdCBlaW5lIFNp Y2hlcnVuZ3Nrb3BpZSBkZXIgYWt0dWVsbGVuIFBsYW51bmcuXG4nICsKICAgICdWZXJhbnR3b3J0 bGljaDogRGllIHJhbmdow7ZjaHN0ZSBQZXJzb24gcHJvIFNjaGljaHQgd2lyZCBnb2xkZmFyYmVu IG1hcmtpZXJ0LlxuJyArCiAgICAnS29tbWVudGFyZTogWmVsbGVuIG1pdCBLb21tZW50YXIgaGFi ZW4gZWluIGdvbGRlbmVzIERyZWllY2sgb2JlbiByZWNodHMuXG4nICsKICAgICdCYWRnZXMgaW0g SGVhZGVyOiDwn46CIEdlYnVydHN0YWcsIOKaoCBXYXJudW5nLCDihLkgSGlud2VpcyDigJQgZGly ZWt0IGFtIGpld2VpbGlnZW4gVGFnLic7CgovLyA9PT09PSBBZG1pbjogRW1wdHktU3RhdGUtSGVs cGVyID09PT09Ci8vCi8vIFJlbmRlcnQgZWluZSAuYWRtaW4tZW1wdHktS2FydGUgYWxzIDx0cj4g aW5uZXJoYWxiIGVpbmVyIGxlZXJlbiBUYWJlbGxlLgovLyBQYXR0ZXJuIGZ1ZXIgYWxsZSBBZG1p bi1MaXN0ZW4sIGRpZSBub2NoIGtlaW5lIEVpbnRyYWVnZSBoYWJlbiDigJQgc3RhdHQKLy8gZWlu ZXIga2FsdGVuIGxlZXJlbiBUYWJlbGxlIGJla29tbWVuIE51dHplciBlaW5lIGt1cnplIE9uYm9h cmRpbmctS2FydGUKLy8gbWl0IEljb24sIFRpdGVsLCBFcmtsYWVydW5nIHVuZCBvcHRpb25hbCBl aW5lbSBBa3Rpb25zLUhpbndlaXMuCi8vICJoaW53ZWlzIiB2ZXJ3ZWlzdCBtZWlzdCBhdWYgZWlu ZW4gZXhpc3RpZXJlbmRlbiAiTmV1Ii1CdXR0b24gaW0gVGFiLUtvcGYKLy8g4oCUIGtlaW4gQnV0 dG9uIGltIEVtcHR5LVN0YXRlLCBkYW1pdCBlcyBrZWluZSBEb3BwZWx1bmcgZ2lidC4KZXhwb3J0 IGZ1bmN0aW9uIGFkbWluRW1wdHlaZWlsZShjb2xzcGFuLCBpY29uLCB0aXRlbCwgdGV4dCkgewog ICAgcmV0dXJuICc8dHIgY2xhc3M9ImFkbWluLWVtcHR5LXplaWxlIj48dGQgY29sc3Bhbj0iJyAr IGNvbHNwYW4gKwogICAgICAgICciIHN0eWxlPSJiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRl cjowO3BhZGRpbmc6OHB4IDAiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS1pY29uIiBhcmlhLWhpZGRl bj0idHJ1ZSI+JyArIGljb24gKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJh ZG1pbi1lbXB0eS10aXRlbCI+JyArIGVzY2FwZUhUTUwodGl0ZWwpICsgJzwvZGl2PicgKwogICAg ICAgICAgICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+JyArIGVzY2FwZUhUTUwodGV4 dCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgJzwvdGQ+PC90cj4nOwp9Cgov LyA9PT09PSBBZG1pbjogUmVhZC1vbmx5LUJhbm5lciA9PT09PQovLwovLyBCbGVuZGV0IGltIEFk bWluLUJlcmVpY2ggb2JlbiBlaW5lbiBIaW53ZWlzIGVpbiwgd2VubiBkZXIgZWluZ2Vsb2dndGUK Ly8gVXNlciBrZWluZSBCZWFyYmVpdHVuZ3MtUmVjaHRlIGhhdCAoYWxsZSBSb2xsZW4gYXVzc2Vy IFN1cGVyVXNlcikuCi8vIEF1ZnJ1ZjogYW0gRW5kZSB2b24gYWRtaW5SZW5kZXJuKCkgdW5kIG5h Y2ggamVkZW0gVGFiLVN3aXRjaCAoYXBwLmpzKS4KZXhwb3J0IGZ1bmN0aW9uIGFkbWluQmFubmVy QWt0dWFsaXNpZXJlbigpIHsKICAgIHZhciBiYW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnYWRtaW4tcmVhZG9ubHktYmFubmVyJyk7CiAgICBpZiAoIWJhbm5lcikgcmV0dXJuOwogICAg aWYgKCFaLnJlY2h0ZSB8fCBaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHsKICAgICAgICBiYW5uZXIu Y2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgLy8g Um9sbGUgaW4gbGVzYmFyZW4gVGV4dCB1bXNldHplbiDigJQga2VpbiBHbG9zc2FyLUxlaHJnYW5n LCBudXIgS29udGV4dAogICAgLy8gZGFtaXQgZGVyIFVzZXIgdmVyc3RlaHQsICp3YXJ1bSogZXIg bmljaHQgZWRpdGllcmVuIGRhcmYuCiAgICB2YXIgcm9sbGVUZXh0ID0gJ0ZhY2hhdWZzaWNodCc7 CiAgICBpZiAoWi5yZWNodGUucm9sbGUgPT09ICdkaXJla3Rpb25zbGVpdHVuZycpIHJvbGxlVGV4 dCA9ICdEaXJla3Rpb25zbGVpdHVuZyc7CiAgICBlbHNlIGlmIChaLnJlY2h0ZS5yb2xsZSA9PT0g J2Z1ZWhydW5nc3N0ZWxsZScpIHJvbGxlVGV4dCA9ICdGdWVocnVuZ3NzdGVsbGUnOwogICAgZWxz ZSBpZiAoIVoucmVjaHRlLmlzdEZhY2hhdWZzaWNodCkgcm9sbGVUZXh0ID0gJ01pdGFyYmVpdGVy JzsKICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXJlYWRvbmx5 LWJhbm5lci10ZXh0Jyk7CiAgICBpZiAodGV4dCkgewogICAgICAgIHRleHQuaW5uZXJIVE1MID0g J0R1IHNpZWhzdCBkaWVzZW4gQmVyZWljaCBudXIgbGVzZW5kIChSb2xsZTogPHN0cm9uZz4nICsK ICAgICAgICAgICAgZXNjYXBlSFRNTChyb2xsZVRleHQpICsKICAgICAgICAgICAgJzwvc3Ryb25n PikuIEJlYXJiZWl0dW5nIGltIEFkbWluLUJlcmVpY2ggaXN0IGF1ZiBTdXBlclVzZXIgYmVzY2hy JmF1bWw7bmt0Lic7CiAgICB9CiAgICBiYW5uZXIuY2xhc3NMaXN0LnJlbW92ZSgndmVyc3RlY2t0 Jyk7Cn0KCi8vID09PT09IEFkbWluOiBQZXJzb25hbHZlcndhbHR1bmcgPT09PT0KCmZ1bmN0aW9u IGFkbWluUmVuZGVybigpIHsKICAgIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc2lj aHQtYWRtaW4nKSkgcmV0dXJuOwogICAgYWRtaW5CYW5uZXJBa3R1YWxpc2llcmVuKCk7CiAgICBw ZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICBncnVwcGVuVGFiZWxsZVJlbmRlcm4oKTsKICAg IGZlaWVydGFnZVRhYmVsbGVSZW5kZXJuKCk7CiAgICBmZXJpZW5UYWJlbGxlUmVuZGVybigpOwog ICAgc29uZGVydGVybWluZVJlbmRlcm4oKTsKICAgIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5kZXJu KCk7CiAgICBzdGFuZG9ydGVSZW5kZXJuKCk7CiAgICBmZWF0dXJlc1JlbmRlcm4oKTsKICAgIHN1 cGVyVXNlclJlbmRlcm4oKTsKICAgIGZhY2hhdWZzaWNodFJlbmRlcm4oKTsKICAgIHJvbGxlblRh YmVsbGVSZW5kZXJuKCdkaXJla3Rpb25zbGVpdHVuZycpOwogICAgcm9sbGVuVGFiZWxsZVJlbmRl cm4oJ2Z1ZWhydW5nc3N0ZWxsZScpOwogICAgZWluc3RlbGx1bmdlblJlbmRlcm4oKTsKICAgIGVy c2NoZWludW5nc2JpbGRSZW5kZXJuKCk7CiAgICBzdGF0aXN0aWtMYXlvdXRSZW5kZXJuKCk7CiAg ICBiZXplaWNobnVuZ2VuUmVuZGVybigpOwogICAgbGlzdGVuUmVuZGVybigpOwogICAgbWlrcm90 ZWFtc1JlbmRlcm4oKTsKICAgIGluZm9IaWxmZVJlbmRlcm4oKTsKICAgIGVtYWlsVm9ybGFnZW5S ZW5kZXJuKCk7CiAgICBzdXBwb3J0TWFpbFNla3Rpb25SZW5kZXJuKCk7CiAgICBtaXR0ZWlsdW5n ZW5UYWJSZW5kZXJuKCk7CiAgICBiYWNrdXBUYWJlbGxlTGFkZW4oKTsKICAgIGFkbWluSW5mb0lu aXQoKTsKfQoKLy8gR2xvYmFsZSBTaWNodGJhcmtlaXRzLVNla3Rpb24gZnVlciAicmVndWxhZXJl IEFkbWlucyIgd3VyZGUgMjAyNi0wNS0yMwovLyBlbnRmZXJudC4gS29uemVwdCBleGlzdGllcnQg bmljaHQgbWVociDigJQgU3RhdGlzdGlrL0xvZ2J1Y2gvCi8vIEFkbWluaXN0cmF0aW9uIHNpbmQg bnVyIGZ1ZXIgU1UgKyBSb2xsZW4tTGlzdGVuIHNpY2h0YmFyIChGYWNoLQovLyBhdWZzaWNodCAv IERpcmVrdGlvbnNsZWl0dW5nIC8gRnVlaHJ1bmdzc3RlbGxlKSwgdW5kIGdyYW51bGFyIHBybwov LyBQZXJzb24vUm9sbGUgdWViZXIgZGllIGpld2VpbGlnZSBTdWItU2ljaHQtTWFwLiBFeHBvcnQt U3R1YiBibGVpYnQKLy8gaGllciBudXIsIGZhbGxzIGV4dGVybmUgTW9kdWxlIG5vY2ggZGVuIE5h bWVuIGltcG9ydGllcmVuIChuby1vcCkuCmZ1bmN0aW9uIHNpY2h0YmFya2VpdFJlbmRlcm4oKSB7 IC8qIGVudGZlcm50ICovIH0KZnVuY3Rpb24gc2ljaHRiYXJrZWl0V2VydCgpICAgIHsgcmV0dXJu IGZhbHNlOyB9CgovLyA9PT09PSBBZG1pbjogQmFja3VwcyA9PT09PQpmdW5jdGlvbiBiYWNrdXBU YWJlbGxlTGFkZW4oKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn YmFja3VwLXRib2R5Jyk7CiAgICBpZiAoIXRib2R5KSByZXR1cm47CiAgICBhcGkoJy9hcGkvcGxh bnVuZy9iYWNrdXBzJykudGhlbihmdW5jdGlvbihsaXN0ZSkgewogICAgICAgIGJhY2t1cFRhYmVs bGVSZW5kZXJuKGxpc3RlIHx8IFtdKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAg ICB0Ym9keS5pbm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFuPSI1IiBzdHlsZT0idGV4dC1hbGln bjpjZW50ZXI7cGFkZGluZzoxNnB4O2NvbG9yOnZhcigtLWZhcmJlLWZlaGxlcikiPkZlaGxlciBi ZWltIExhZGVuOiAnICsgZXNjYXBlSFRNTChlLm1lc3NhZ2UpICsgJzwvdGQ+PC90cj4nOwogICAg fSk7Cn0KCmZ1bmN0aW9uIGJhY2t1cEdyb2Vzc2VGb3JtYXQoYnl0ZXMpIHsKICAgIGlmIChieXRl cyA8IDEwMjQpIHJldHVybiBieXRlcyArICcgQic7CiAgICBpZiAoYnl0ZXMgPCAxMDQ4NTc2KSBy ZXR1cm4gKGJ5dGVzIC8gMTAyNCkudG9GaXhlZCgxKSArICcgS0InOwogICAgcmV0dXJuIChieXRl cyAvIDEwNDg1NzYpLnRvRml4ZWQoMSkgKyAnIE1CJzsKfQoKZnVuY3Rpb24gYmFja3VwWmVpdHB1 bmt0Rm9ybWF0KGlzbykgewogICAgaWYgKCFpc28pIHJldHVybiAn4oCUJzsKICAgIHZhciBkID0g bmV3IERhdGUoaXNvKTsKICAgIGlmIChpc05hTihkLmdldFRpbWUoKSkpIHJldHVybiBpc287CiAg ICB2YXIgcGFkID0gZnVuY3Rpb24obikgeyByZXR1cm4gKG4gPCAxMCA/ICcwJyA6ICcnKSArIG47 IH07CiAgICByZXR1cm4gcGFkKGQuZ2V0RGF0ZSgpKSArICcuJyArIHBhZChkLmdldE1vbnRoKCkg KyAxKSArICcuJyArIGQuZ2V0RnVsbFllYXIoKSArCiAgICAgICAgICAgJyAnICsgcGFkKGQuZ2V0 SG91cnMoKSkgKyAnOicgKyBwYWQoZC5nZXRNaW51dGVzKCkpICsgJzonICsgcGFkKGQuZ2V0U2Vj b25kcygpKTsKfQoKZnVuY3Rpb24gYmFja3VwVGFiZWxsZVJlbmRlcm4obGlzdGUpIHsKICAgIHZh ciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrdXAtdGJvZHknKTsKICAgIGlm ICghdGJvZHkpIHJldHVybjsKICAgIGlmICghbGlzdGUubGVuZ3RoKSB7CiAgICAgICAgdGJvZHku aW5uZXJIVE1MID0gYWRtaW5FbXB0eVplaWxlKDYsICdcdXsxRjRFNn0nLAogICAgICAgICAgICAn Tm9jaCBrZWluZSBCYWNrdXBzIHZvcmhhbmRlbicsCiAgICAgICAgICAgICdCYWNrdXBzIHNpY2hl cm4gZGVuIHZvbGxzdGFlbmRpZ2VuIFBsYW51bmdzLSB1bmQgQWRtaW4tU3RhbmQuIEF1dG9tYXRp c2NoIHdlcmRlbiBCYWNrdXBzIHZvciByaXNrYW50ZW4gQWt0aW9uZW4gKFJlc2V0LCBEdW1teWRh dGVuLCBXaWVkZXJoZXJzdGVsbHVuZykgYW5nZWxlZ3QuIE1hbnVlbGwgbWl0IOKAnk5ldWVzIEJh Y2t1cCBqZXR6dCBlcnN0ZWxsZW4iLicpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBo dG1sID0gJyc7CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICB2YXIgdHlw QmFkZ2UgPSAnYmstdHlwLW1hbnVlbGwnOwogICAgICAgIGlmIChiLnR5cCA9PT0gJ3ZvciBEdW1t eWRhdGVuJykgdHlwQmFkZ2UgPSAnYmstdHlwLWF1dG8nOwogICAgICAgIGVsc2UgaWYgKGIudHlw ID09PSAndm9yIFJlc2V0JykgdHlwQmFkZ2UgPSAnYmstdHlwLWF1dG8nOwogICAgICAgIGVsc2Ug aWYgKGIudHlwID09PSAndm9yIFdpZWRlcmhlcnN0ZWxsdW5nJykgdHlwQmFkZ2UgPSAnYmstdHlw LXNpY2hlcnVuZyc7CiAgICAgICAgLy8gaW5oYWx0OiBLb21wbGV0dCAoQnVuZGxlKSB2cyBOdXIg UGxhbnVuZyAoTGVnYWN5KSDigJQgRmluZGluZyBDLjUKICAgICAgICB2YXIgaW5oYWx0ID0gYi5p bmhhbHQgfHwgKGIuaXN0QnVuZGxlID8gJ0tvbXBsZXR0IChQbGFudW5nICsgQWRtaW4pJyA6ICdO dXIgUGxhbnVuZycpOwogICAgICAgIHZhciBpbmhhbHRDbHMgPSBiLmlzdEJ1bmRsZSA/ICdiay1p bmhhbHRzdHlwLWtvbXBsZXR0JyA6ICdiay1pbmhhbHRzdHlwLXBsYW51bmcnOwogICAgICAgIHZh ciByZXN0b3JlVGl0bGUgPSBiLmlzdEJ1bmRsZQogICAgICAgICAgICA/ICdBa3R1ZWxsZSBQbGFu dW5nIFVORCBBZG1pbi1Lb25maWd1cmF0aW9uIGR1cmNoIGRpZXNlcyBCdW5kbGUtQmFja3VwIGVy c2V0emVuJwogICAgICAgICAgICA6ICdBa3R1ZWxsZSBQbGFudW5nIGR1cmNoIGRpZXNlcyBCYWNr dXAgZXJzZXR6ZW4gKEFkbWluLUtvbmZpZ3VyYXRpb24gYmxlaWJ0IHVudmVyYWVuZGVydCknOwog ICAgICAgIC8vIEFrdGlvbnMtQnV0dG9ucyAoQ2hlcnJ5LVBpY2sgNGRiNjQ5Myk6IGluIGVpbmVy IFplaWxlLCBuaWNodAogICAgICAgIC8vIHVtYnJlY2hlbmQuIERhdGVpbmFtZS9Hcm9lc3NlIG1p dCBlbGxpcHNpcywgZmFsbHMgZW5nLiBLZWluZQogICAgICAgIC8vIEZ1bmt0aW9uc2FlbmRlcnVu ZyDigJQgbnVyIGtvbXBha3RlcmUgRGFyc3RlbGx1bmcuCiAgICAgICAgaHRtbCArPSAnPHRyPicg KwogICAgICAgICAgICAnPHRkPjxjb2RlIHN0eWxlPSJmb250LXNpemU6MTFweCI+JyArIGVzY2Fw ZUhUTUwoYmFja3VwWmVpdHB1bmt0Rm9ybWF0KGIuZXJzdGVsbHRBbSkpICsgJzwvY29kZT48L3Rk PicgKwogICAgICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSJiay10eXAgJyArIHR5cEJhZGdlICsg JyI+JyArIGVzY2FwZUhUTUwoYi50eXApICsgJzwvc3Bhbj48L3RkPicgKwogICAgICAgICAgICAn PHRkPjxzcGFuIGNsYXNzPSJiay1pbmhhbHRzdHlwICcgKyBpbmhhbHRDbHMgKyAnIj4nICsgZXNj YXBlSFRNTChpbmhhbHQpICsgJzwvc3Bhbj48L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxl PSJmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjExcHg7b3ZlcmZsb3c6aGlkZGVuO3Rl eHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO21heC13aWR0aDoyODBweCIg dGl0bGU9IicgKyBlc2NhcGVBdHRyKGIuZGF0ZWluYW1lKSArICciPicgKyBlc2NhcGVIVE1MKGIu ZGF0ZWluYW1lKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWdu OnJpZ2h0O2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtmb250LXNpemU6MTFweDt3aGl0ZS1zcGFjZTpu b3dyYXAiPicgKyBlc2NhcGVIVE1MKGJhY2t1cEdyb2Vzc2VGb3JtYXQoYi5ncm9lc3NlKSkgKyAn PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZw eDtmbGV4LXdyYXA6bm93cmFwO3doaXRlLXNwYWNlOm5vd3JhcCI+JyArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIGJ0bi1rbGVpbiIgZGF0YS1ha3Rpb249 ImJhY2t1cC13aWVkZXJoZXJzdGVsbGVuIiBkYXRhLWRhdGVpPSInICsgZXNjYXBlQXR0cihiLmRh dGVpbmFtZSkgKyAnIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIocmVzdG9yZVRpdGxlKSArICciIHN0 eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPuKGuiBXaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyAr CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBk YXRhLWFrdGlvbj0iYmFja3VwLWRvd25sb2FkIiBkYXRhLWRhdGVpPSInICsgZXNjYXBlQXR0cihi LmRhdGVpbmFtZSkgKyAnIiB0aXRsZT0iSlNPTi1EYXRlaSBoZXJ1bnRlcmxhZGVuIiBzdHlsZT0i d2hpdGUtc3BhY2U6bm93cmFwIj7ipJMgRG93bmxvYWQ8L2J1dHRvbj4nICsKICAgICAgICAgICAg ICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xlaW4gYnRuLWxvZXNjaGVu IiBkYXRhLWFrdGlvbj0iYmFja3VwLWxvZXNjaGVuIiBkYXRhLWRhdGVpPSInICsgZXNjYXBlQXR0 cihiLmRhdGVpbmFtZSkgKyAnIiB0aXRsZT0iQmFja3VwIGVuZGfDvGx0aWcgbMO2c2NoZW4iIHN0 eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAg ICc8L2Rpdj48L3RkPicgKwogICAgICAgICc8L3RyPic7CiAgICB9KTsKICAgIHRib2R5LmlubmVy SFRNTCA9IGh0bWw7Cn0KCi8vID09PT09IEFkbWluOiBEaWVuc3RncnVwcGVuID09PT09CgovLyBa YWVobHQgd2llIHZpZWxlIGFrdGl2ZSBQZXJzb25lbiBlaW5lciBHcnVwcGUgenVnZW9yZG5ldCBz aW5kLgovLyBXaXJkIGZ1ZXIgZGllIExvZXNjaC1TcGVycmUgdW5kIGRpZSBTcGFsdGUgIlBlcnNv bmVuIiBnZW51dHp0LgpmdW5jdGlvbiBncnVwcGVuUGVyc29uZW5aYWVobGVuKCkgewogICAgdmFy IG1hcCA9IHt9OwogICAgKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlv bihwKSB7CiAgICAgICAgaWYgKCFwLmFrdGl2IHx8ICFwLmdydXBwZSkgcmV0dXJuOwogICAgICAg IG1hcFtwLmdydXBwZV0gPSAobWFwW3AuZ3J1cHBlXSB8fCAwKSArIDE7CiAgICB9KTsKICAgIHJl dHVybiBtYXA7Cn0KCmZ1bmN0aW9uIGdydXBwZW5UYWJlbGxlUmVuZGVybigpIHsKICAgIHZhciB0 Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncnVwcGVuLXRib2R5Jyk7CiAgICBpZiAo IXRib2R5KSByZXR1cm47CiAgICB2YXIgemFlaGwgPSBncnVwcGVuUGVyc29uZW5aYWVobGVuKCk7 CiAgICBpZiAoIShaLmFkbWluLmdydXBwZW4gfHwgW10pLmxlbmd0aCkgewogICAgICAgIHRib2R5 LmlubmVySFRNTCA9IGFkbWluRW1wdHlaZWlsZSg3LCAnXHV7MUY0NjV9JywKICAgICAgICAgICAg J05vY2gga2VpbmUgRGllbnN0Z3J1cHBlbiBhbmdlbGVndCcsCiAgICAgICAgICAgICdEaWVuc3Rn cnVwcGVuIHNpbmQgZGllIG9yZ2FuaXNhdG9yaXNjaGUgS2xhbW1lciBmdWVyIFBlcnNvbmVuICh6 LkIuIEEvQi9DLCBXTCwgVkQpLiBLbGlja2Ugb2JlbiBhdWYg4oCeTmV1ZSBEaWVuc3RncnVwcGUi LCB1bSB6dSBiZWdpbm5lbi4nKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgaHRtbCA9 ICcnOwogICAgdmFyIGxldHp0ZXJJZHggPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5sZW5ndGgg LSAxOwogICAgKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihnciwgaWR4 KSB7CiAgICAgICAgdmFyIGFuemFobCA9IHphZWhsW2dyLm5hbWVdIHx8IDA7CiAgICAgICAgdmFy IGhnID0gZ3IuaGludGVyZ3J1bmQgfHwgJyM4ODgnOwogICAgICAgIHZhciBzZiA9IGdyLnNjaHJp ZnQgfHwgJyNmZmZmZmYnOwogICAgICAgIC8vIEJhY2t3YXJkcy1Db21wYXQ6IGZlaGxlbmRlcyBp blBsYW51bmctRmVsZCA9IHNpY2h0YmFyIChBbHRkYXRlbgogICAgICAgIC8vIGhhYmVuIGRhcyBG ZWxkIG5pY2h0OyBudXIgZXhwbGl6aXQgZmFsc2UgYmxlbmRldCBhdXMpLgogICAgICAgIHZhciBp blBsYW51bmcgPSBnci5pblBsYW51bmcgIT09IGZhbHNlOwogICAgICAgIC8vIEJhY2t3YXJkcy1D b21wYXQgZnVlciBkYXJmQW5zcHJlY2hwYXJ0bmVyOiBmZWhsZW5kZXMgRmVsZCA9IGVybGF1YnQu CiAgICAgICAgLy8gU3VwZXJVc2VyIGthbm4gcHJvIEdydXBwZSBzcGVycmVuIOKAlCBkYW5uIGZh bGxlbiBQZXJzb25lbiBkZXIgR3J1cHBlCiAgICAgICAgLy8gYXVzIGRlbSBBbnNwcmVjaHBhcnRu ZXItUG9vbCwgYmVzdGVoZW5kZSBNYXJraWVydW5nZW4gc2luZCB1bndpcmtzYW0uCiAgICAgICAg dmFyIGRhcmZBcCA9IGdyLmRhcmZBbnNwcmVjaHBhcnRuZXIgIT09IGZhbHNlOwogICAgICAgIGh0 bWwgKz0gJzx0ciBkYXRhLWlkeD0iJyArIGlkeCArICciJyArIChpblBsYW51bmcgPyAnJyA6ICcg Y2xhc3M9ImdydXBwZS16ZWlsZS12ZXJzdGVja3QiJykgKyAnPicgKwogICAgICAgICAgICAnPHRk PjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZ3J1cHBlLWt1ZXJ6ZWwtaW5wdXQiIGRhdGEtaWR4 PSInICsgaWR4ICsgJyIgZGF0YS1hbHQ9IicgKyBlc2NhcGVBdHRyKGdyLm5hbWUpICsgJyIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKGdyLm5hbWUpICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7Zm9udC1m YW1pbHk6bW9ub3NwYWNlO2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmNlbnRlciIgbWF4bGVu Z3RoPSI0IiB0aXRsZT0iS8O8cnplbCDDpG5kZXJuIOKAlCBhbGxlIFBlcnNvbmVuIGRpZXNlciBH cnVwcGUgd2VyZGVuIGF1dG9tYXRpc2NoIG1pZ3JpZXJ0Ij48L3RkPicgKwogICAgICAgICAgICAn PHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZ3J1cHBlLWJlei1pbnB1dCIgZGF0YS1pZHg9 IicgKyBpZHggKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoZ3IuYmV6ZWljaG51bmcgfHwgJycp ICsgJyIgc3R5bGU9IndpZHRoOjEwMCUiIHBsYWNlaG9sZGVyPSJ6LkIuIFdhY2hsZWl0dW5nIj48 L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJjb2xvciIgY2xhc3M9ImdydXBw ZS1oZy1pbnB1dCIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIo aGcpICsgJyIgc3R5bGU9IndpZHRoOjUwcHg7aGVpZ2h0OjI4cHg7cGFkZGluZzoycHg7Y3Vyc29y OnBvaW50ZXIiPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGlucHV0IHR5cGU9ImNvbG9yIiBj bGFzcz0iZ3J1cHBlLXNmLWlucHV0IiBkYXRhLWlkeD0iJyArIGlkeCArICciIHZhbHVlPSInICsg ZXNjYXBlQXR0cihzZikgKyAnIiBzdHlsZT0id2lkdGg6NTBweDtoZWlnaHQ6MjhweDtwYWRkaW5n OjJweDtjdXJzb3I6cG9pbnRlciI+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4 dC1hbGlnbjpjZW50ZXIiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJncnVwcGVu LWJhZGdlIGdydXBwZS12b3JzY2hhdSIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiBzdHlsZT0iYmFj a2dyb3VuZDonICsgZXNjYXBlQXR0cihoZykgKyAnO2NvbG9yOicgKyBlc2NhcGVBdHRyKHNmKSAr ICciPicgKyBlc2NhcGVIVE1MKGdyLm5hbWUpICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgJzwv dGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6 ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIiB0aXRsZT0iQW56YWhsIGFrdGl2ZSBQZXJz b25lbiBpbiBkaWVzZXIgR3J1cHBlIj4nICsgYW56YWhsICsgJzwvdGQ+JyArCiAgICAgICAgICAg ICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4nICsKICAgICAgICAgICAgICAgICc8bGFi ZWwgY2xhc3M9ImdydXBwZS1pbnBsYW51bmctbGFiZWwiIHRpdGxlPSJXZW5uIGF1c2dlc2NoYWx0 ZXQsIHdlcmRlbiBQZXJzb25lbiBkaWVzZXIgR3J1cHBlIG5pY2h0IGluIGRlciBQbGFudW5nc2Fu c2ljaHQgLyBpbSBXb2NoZW5wbGFuIC8gaW0gUGVycy4gUGxhbiBhbmdlemVpZ3Qg4oCUIGJsZWli ZW4gYWJlciBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nIHBmbGVnYmFyLiI+JyArCiAgICAgICAg ICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImdydXBwZS1pbnBsYW51 bmctaW5wdXQiIGRhdGEtaWR4PSInICsgaWR4ICsgJyInICsgKGluUGxhbnVuZyA/ICcgY2hlY2tl ZCcgOiAnJykgKyAnPicgKwogICAgICAgICAgICAgICAgJzwvbGFiZWw+JyArCiAgICAgICAgICAg ICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyAr CiAgICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJncnVwcGUtaW5wbGFudW5nLWxhYmVsIiB0 aXRsZT0iV2VubiBha3RpdmllcnQsIGTDvHJmZW4gUGVyc29uZW4gZGllc2VyIEdydXBwZSBpbSBQ ZXJzb25hbC1UYWIgYWxzIEFuc3ByZWNocGFydG5lciBtYXJraWVydCB3ZXJkZW4gKHp1c8OkdHps aWNoIHp1ciBGdW5rdGlvbnMtQmVkaW5ndW5nKS4gTWFya2llcnRlIFBlcnNvbmVuIGVyc2NoZWlu ZW4gbWl0IE1haWwtQnV0dG9uIGltIEluZm8tRmVuc3Rlci4iPicgKwogICAgICAgICAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJncnVwcGUtZGFyZmFwLWlucHV0IiBk YXRhLWlkeD0iJyArIGlkeCArICciJyArIChkYXJmQXAgPyAnIGNoZWNrZWQnIDogJycpICsgJz4n ICsKICAgICAgICAgICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPC90ZD4nICsKICAg ICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFw Ij4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xl aW4iIGRhdGEtYWt0aW9uPSJncnVwcGUtcmF1ZiIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB0aXRs ZT0iTmFjaCBvYmVuIHZlcnNjaGllYmVuIicgKyAoaWR4ID09PSAwID8gJyBkaXNhYmxlZCcgOiAn JykgKyAnPiYjOTY1MDs8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICcgJyArCiAgICAgICAg ICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlv bj0iZ3J1cHBlLXJ1bnRlciIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB0aXRsZT0iTmFjaCB1bnRl biB2ZXJzY2hpZWJlbiInICsgKGlkeCA9PT0gbGV0enRlcklkeCA/ICcgZGlzYWJsZWQnIDogJycp ICsgJz4mIzk2NjA7PC9idXR0b24+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAg ICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyArCiAgICAgICAgICAgICAgICAnPGJ1 dHRvbiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1h a3Rpb249ImdydXBwZS1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiB0aXRsZT0iR3J1 cHBlIGzDtnNjaGVuIChudXIgd2VubiBrZWluZSBQZXJzb25lbiBtZWhyIHp1Z2VvcmRuZXQpIicg KyAoYW56YWhsID4gMCA/ICcgZGlzYWJsZWQnIDogJycpICsgJz5Mw7ZzY2hlbjwvYnV0dG9uPicg KwogICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9k eS5pbm5lckhUTUwgPSBodG1sOwoKICAgIC8vIExpdmUtVm9yc2NoYXU6IEZhcmJlbi9Lw7xyemVs LcOEbmRlcnVuZ2VuIHNvZm9ydCBpbSBCYWRnZSBzcGllZ2VsbgogICAgZnVuY3Rpb24gdm9yc2No YXVVcGRhdGUoaWR4KSB7CiAgICAgICAgdmFyIHJvdyA9IHRib2R5LnF1ZXJ5U2VsZWN0b3IoJ3Ry W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJyk7CiAgICAgICAgaWYgKCFyb3cpIHJldHVybjsKICAg ICAgICB2YXIgayA9IHJvdy5xdWVyeVNlbGVjdG9yKCcuZ3J1cHBlLWt1ZXJ6ZWwtaW5wdXQnKS52 YWx1ZSB8fCAnJzsKICAgICAgICB2YXIgaCA9IHJvdy5xdWVyeVNlbGVjdG9yKCcuZ3J1cHBlLWhn LWlucHV0JykudmFsdWU7CiAgICAgICAgdmFyIHMgPSByb3cucXVlcnlTZWxlY3RvcignLmdydXBw ZS1zZi1pbnB1dCcpLnZhbHVlOwogICAgICAgIHZhciB2ID0gcm93LnF1ZXJ5U2VsZWN0b3IoJy5n cnVwcGUtdm9yc2NoYXUnKTsKICAgICAgICBpZiAodikgeyB2LnN0eWxlLmJhY2tncm91bmQgPSBo OyB2LnN0eWxlLmNvbG9yID0gczsgdi50ZXh0Q29udGVudCA9IGs7IH0KICAgIH0KICAgIHRib2R5 LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ncnVwcGUta3VlcnplbC1pbnB1dCwgLmdydXBwZS1oZy1pbnB1 dCwgLmdydXBwZS1zZi1pbnB1dCcpLmZvckVhY2goZnVuY3Rpb24oaW5wKSB7CiAgICAgICAgaW5w LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZvcnNj aGF1VXBkYXRlKGlucC5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4JykpOwogICAgICAgIH0pOwogICAg fSk7Cn0KCi8vID09PT09IEFkbWluOiBHbG9iYWxlIEVpbnN0ZWxsdW5nZW4gPT09PT0KCi8vID09 PT09IEFkbWluOiBJbmZvcm1hdGlvbiAmIEhpbGZlID09PT09CgovLyBEZWZhdWx0LUltcHJlc3N1 bSAoSFRNTCkuIFdpcmQgaW0gUlRFLUVkaXRvciBhbmdlemVpZ3QsIHdlbm4KLy8gYWRtaW4uanNv bi5pbXByZXNzdW0gbGVlciBpc3Qg4oCUIGRlciBVc2VyIGthbm4gZnJlaSB1ZWJlcnNjaHJlaWJl bgovLyB1bmQgbWl0ICJTcGVpY2hlcm4iIHBlcnNpc3RpZXJlbi4gVGV4dGUgc2luZCBiZXd1c3N0 IG5ldXRyYWwKLy8gZm9ybXVsaWVydCB1bmQgYXVmIGRpZSBWSTMtREdMLVJlYWxpdGFldCB6dWdl c2Nobml0dGVuLgovLyA9PT09PSBTdXBwb3J0LU1haWwtVm9ybGFnZSAoU2VrdGlvbiBpbSBFLU1h aWwtVm9ybGFnZW4tVGFiKSA9PT09PQovLwovLyBOdXIgZnVlciBQaGlsaXBwIFJvZXNnZW4gc2lj aHRiYXIgKE5XLUtlbm51bmcgZW50aGFlbHQgTlcwNTM2MDkpLgovLyBFZGl0aWVydCB3aXJkIGRh cyByYXcgUGxhaW4tVGV4dC1UZW1wbGF0ZSBpbmtsLiBQbGF0emhhbHRlcm47IGFwcC5qcwovLyBz dXBwb3J0TWFpbEJvZHlCYXVlbigpIG1hY2h0IGRpZSBTdWJzdGl0dXRpb24gYmVpbSBCYXVlbiBk ZXIgbWFpbHRvLVVSTC4KCmZ1bmN0aW9uIGlzdFBoaWxpcHBSb2VzZ2VuKCkgewogICAgdmFyIGIg PSAoWi5iZW51dHplciB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgIHJldHVybiBiLmluZGV4T2Yo J253MDUzNjA5JykgPj0gMDsKfQoKZXhwb3J0IGZ1bmN0aW9uIHN1cHBvcnRNYWlsU2VrdGlvblJl bmRlcm4oKSB7CiAgICB2YXIgc2VrID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXNl a3Rpb24tc3VwcG9ydG1haWwnKTsKICAgIGlmICghc2VrKSByZXR1cm47CiAgICBpZiAoIWlzdFBo aWxpcHBSb2VzZ2VuKCkpIHsKICAgICAgICBzZWsuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7 CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgc2VrLmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNr dCcpOwogICAgdmFyIHRhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N1cHBvcnRtYWlsLXRl eHQnKTsKICAgIGlmICh0YSkgdGEudmFsdWUgPSAoWi5hZG1pbiAmJiBaLmFkbWluLnN1cHBvcnRN YWlsVGV4dCkgfHwgJyc7CiAgICB2YXIgaGlud2VpcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzdXBwb3J0bWFpbC1kaXJ0eS1oaW53ZWlzJyk7CiAgICBpZiAoaGlud2VpcykgaGlud2Vpcy5z dHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgovLyBEZWZhdWx0LVZvcmxhZ2UgZnVlciBkaWUgU3Vw cG9ydC1NYWlsIGltIEltcHJlc3N1bXMtTW9kYWwuIFBsYXR6aGFsdGVyCi8vIGluIHtnZXNjaHdl aWZ0ZW4ga2xhbW1lcm59IHdlcmRlbiB2b20gQ2xpZW50IGJlaW0gbWFpbHRvOi1CYXUgZHVyY2gK Ly8gTGl2ZS1XZXJ0ZSBlcnNldHp0IOKAlCBzaWVoZSBhcHAuanMgc3VwcG9ydE1haWxCb2R5QmF1 ZW4uIEVkaXRpZXJiYXIgbnVyCi8vIGZ1ZXIgUGhpbGlwcCBSb2VzZ2VuIChOVzA1MzYwOSkgaW0g QWRtaW4tVGFiIEUtTWFpbC1Wb3JsYWdlbi4KLy8KLy8gVmVyZnVlZ2JhcmUgUGxhdHpoYWx0ZXI6 Ci8vICAge253X2tlbm51bmd9ICAgICAgICDigJQgWi5iZW51dHplciAoei5CLiBQT0xJWkVJXE5X MDU1ODAxKQovLyAgIHtha3R1ZWxsZV9hbnNpY2h0fSAg4oCUIGFrdGl2ZXIgVGFiIChwbGFudW5n L3dvY2hlbnBsYW4vcGVyc3BsYW4vLi4uKQovLyAgIHtkYXR1bX0gICAgICAgICAgICAg4oCUIGhl dXRlLCBGb3JtYXQgZGQubW0uampqagovLyAgIHt1aHJ6ZWl0fSAgICAgICAgICAg4oCUIGpldHp0 LCBGb3JtYXQgaGg6bW0KLy8gICB7YXVmbG9lc3VuZ30gICAgICAgIOKAlCBWaWV3cG9ydCwgei5C LiAxOTIweDEwODAKLy8gICB7YXBwX2phaHJ9ICAgICAgICAgIOKAlCBaLmFkbWluLmphaHIKLy8g ICB7YnJvd3Nlcn0gICAgICAgICAgIOKAlCBuYXZpZ2F0b3IudXNlckFnZW50IChtYXggMTIwIFpl aWNoZW4pCmV4cG9ydCB2YXIgU1VQUE9SVF9NQUlMX0RFRkFVTFQgPQogICAgJ0hhbGxvIFBoaWxp cHAsXG5cbicgKwogICAgJ1toaWVyIGJpdHRlIGt1cnogZGFzIEFubGllZ2VuIGluIDHigJMyIFPD pHR6ZW4gYmVzY2hyZWliZW5dXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4nICsK ICAgICcxKSBXQVMgSVNUIFBBU1NJRVJUIC8gV0FTIFfDnE5TQ0hTVCBEVSBESVI/XG4nICsKICAg ICfilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIBcbicgKwogICAgJ1tEZXRhaWxsaWVydGUgQmVzY2hyZWlidW5n OiBCdWctQmVyaWNodCBPREVSIFZlcmJlc3NlcnVuZ3MtXG4nICsKICAgICcgdm9yc2NobGFnLiBC aXR0ZSBrb25rcmV0IOKAlCAiZ2VodCBuaWNodCIgaXN0IHp1IHdlbmlnLl1cblxuXG4nICsKICAg ICfilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZBcbicgKwogICAgJzIpIFdPIElNIFBST0dSQU1NXG4nICsKICAg ICfilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIBcbicgKwogICAgJ1RhYiAvIEFuc2ljaHQ6IFtQbGFudW5nIHwg V29jaGVucGxhbiB8IFBlcnMuIFBsYW4gfCBQcsO8ZnVuZyB8XG4nICsKICAgICcgICAgICAgICAg ICAgICAgU3RhdGlzdGlrIHwgTG9nYnVjaCB8IEFkbWluaXN0cmF0aW9uXVxuJyArCiAgICAnR2Vu YXVlcmUgU3RlbGxlOiBbei4gQi4gQWRtaW5pc3RyYXRpb24g4oaSIFBlcnNvbmFsdmVyd2FsdHVu ZyDihpJcbicgKwogICAgJyAgICAgICAgICAgICAgICAgIFBlcnNvbiBiZWFyYmVpdGVuIOKGkiBH ZWJ1cnRzdGFnLU1vZGFsXVxuXG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAg ICAnMykgV0lFIEtBTk4gSUNIIERBUyBSRVBST0RVWklFUkVOP1xuJyArCiAgICAn4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSAXG4nICsKICAgICdTY2hyaXR0IDE6IFsuLi5dXG4nICsKICAgICdTY2hyaXR0IDI6 IFsuLi5dXG4nICsKICAgICdTY2hyaXR0IDM6IFsuLi5dXG4nICsKICAgICfihpIgV2FzIHBhc3Np ZXJ0IHRhdHPDpGNobGljaDogWy4uLl1cbicgKwogICAgJ+KGkiBXYXMgaMOkdHRlIHN0YXR0ZGVz c2VuIHBhc3NpZXJlbiBzb2xsZW46IFsuLi5dXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQXG4nICsKICAgICc0KSBXRVIgLyBXQVMgSVNUIEJFVFJPRkZFTlxuJyArCiAgICAn4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSAXG4nICsKICAgICdCZXRyb2ZmZW5lIFBlcnNvbiAvIERhdGVuc2F0eiAoZmFs bHMgcmVsZXZhbnQpOiBbLi4uXVxuJyArCiAgICAnVHJpdHQgZXMgbnVyIGJlaSBtaXIgYXVmIOKA lCBvZGVyIGF1Y2ggYmVpIEtvbGxlZzppbm5lbj8gWy4uLl1cbicgKwogICAgJ1JlcHJvZHV6aWVy YmFyIG5hY2ggQnJvd3Nlci1SZWZyZXNoIC8gTmV1c3RhcnQ/IFsuLi5dXG5cblxuJyArCiAgICAn 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4nICsKICAgICc1KSBXSUUgRFJJTkdFTkQgSVNUIERBUz9cbicg KwogICAgJ+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnWyBdIEJsb2NraWVydCBtZWluZSBB cmJlaXQga29tcGxldHRcbicgKwogICAgJ1sgXSBTdMO2cnQsIGljaCBoYWJlIGFiZXIgZWluZW4g V29ya2Fyb3VuZFxuJyArCiAgICAnWyBdIFZlcmJlc3NlcnVuZ3N2b3JzY2hsYWcg4oCUIGtlaW4g YWt1dGVyIEJlZGFyZlxuXG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAn NikgU0NSRUVOU0hPVFMgLyBBTkjDhE5HRSDigJQgQklUVEUgQkVJTEVHRU4hXG4nICsKICAgICfi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIBcbicgKwogICAgJ01pbmRlc3RlbnMgMSBTY3JlZW5zaG90IGRlciBy ZWxldmFudGVuIFN0ZWxsZS4gU28gZ2VodHM6XG4nICsKICAgICcgIOKAoiBTdHJnICsgRHJ1Y2sg ICAgIOKGkiBnYW56ZXIgQmlsZHNjaGlybSBpbiBkaWUgWndpc2NoZW5hYmxhZ2VcbicgKwogICAg JyAg4oCiIEFsdCArIERydWNrICAgICAg4oaSIG51ciBkYXMgYWt0aXZlIEZlbnN0ZXJcbicgKwog ICAgJyAg4oCiIFBhaW50IMO2ZmZuZW4gICAgIOKGkiBTdHJnICsgViBlaW5mw7xnZW4g4oaSIFNw ZWljaGVybiBhbHMgUE5HXG4nICsKICAgICcgIOKAoiBEYXRlaShlbikgYW4gZGllc2UgTWFpbCBh bmjDpG5nZW5cbicgKwogICAgJ0JpdHRlIGRlbiBHQU5aRU4gQnJvd3Nlci1UYWIgZWluZmFuZ2Vu IChuaWNodCBudXIgZGFzIE1vZGFsKSxcbicgKwogICAgJ2RhbWl0IGRlciBLb250ZXh0IChUYWIs IERhdHVtLCBhbmRlcmUgSGlud2Vpc2UpIHNpY2h0YmFyIGlzdC5cblxuXG4nICsKICAgICdWaWVs ZSBHcsO8w59lXG4nICsKICAgICdbVm9yLSB1bmQgTmFjaG5hbWUsIERpZW5zdGdyYWRdXG4nICsK ICAgICdbRGllbnN0c3RlbGxlIC8gSGF1c2R1cmNod2FobF1cblxuXG4nICsKICAgICfilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZBcbicgKwogICAgJ1RFQ0hOSVNDSEUgSU5GTyDigJQgYml0dGUgdW52ZXLDpG5k ZXJ0IGxhc3NlbiAodm9tIFN5c3RlbSBlcmfDpG56dClcbicgKwogICAgJ+KUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgFxuJyArCiAgICAnTlctS2VubnVuZzogICAgICAge253X2tlbm51bmd9XG4nICsKICAgICdB a3R1ZWxsZSBBbnNpY2h0OiB7YWt0dWVsbGVfYW5zaWNodH1cbicgKwogICAgJ0RhdHVtIC8gVWhy emVpdDogIHtkYXR1bX0ge3VocnplaXR9XG4nICsKICAgICdBdWZsw7ZzdW5nOiAgICAgICAge2F1 ZmxvZXN1bmd9XG4nICsKICAgICdBcHAtSmFocjogICAgICAgICB7YXBwX2phaHJ9XG4nICsKICAg ICdCcm93c2VyOiAgICAgICAgICB7YnJvd3Nlcn1cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kFxuJzsKCi8vIFZvcnN0cnVrdHVyaWVydGUgVm9ybGFnZSBmdWVyIGRlbiBIZWFkZXItQnV0dG9u IOKAnkJ1Z1JlcG9ydCIg4oCUIHdpZSBkaWUKLy8gU3VwcG9ydC1Wb3JsYWdlLCBhYmVyIHp1Z2Vz cGl0enQgYXVmIGVya2FubnRlIEJVR1MgLyBGZWhsZnVua3Rpb25lbiAoa2VpbmUKLy8gVmVyYmVz c2VydW5nc3ZvcnNjaGxhZWdlKS4gR2xlaWNoZSBQbGF0emhhbHRlciB3aWUgU1VQUE9SVF9NQUlM X0RFRkFVTFQ7Ci8vIGFwcC5qcyBidWdSZXBvcnRNYWlsQm9keUJhdWVuKCkgZXJzZXR6dCBzaWUg YmVpbSBtYWlsdG86LUJhdS4KZXhwb3J0IHZhciBCVUdSRVBPUlRfTUFJTF9ERUZBVUxUID0KICAg ICdIYWxsbyBQaGlsaXBwLFxuXG4nICsKICAgICdpY2ggbWVsZGUgZWluZW4gQnVnIC8gZWluIFBy b2JsZW0gaW4gZGVyIFZJMyBER0wtUGxhbnVuZy5cblxuXG4nICsKICAgICfilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZBcbicgKwogICAgJzEpIFdBUyBHRUhUIE5JQ0hUPyAoa3VyeiBpbiAx4oCTMiBTw6R0emVu KVxuJyArCiAgICAn4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4nICsKICAgICdbV2FzIGZ1bmt0aW9uaWVy dCBuaWNodCB3aWUgZXJ3YXJ0ZXQ/IEJpdHRlIGtvbmtyZXQg4oCUXG4nICsKICAgICcgImdlaHQg bmljaHQiIGlzdCB6dSB3ZW5pZy5dXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4n ICsKICAgICcyKSBXTyBJTSBQUk9HUkFNTSBUUklUVCBERVIgRkVITEVSIEFVRj9cbicgKwogICAg J+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnVGFiIC8gQW5zaWNodDogW1BsYW51bmcgfCBX b2NoZW5wbGFuIHwgUGVycy4gUGxhbiB8IFByw7xmdW5nIHxcbicgKwogICAgJyAgICAgICAgICAg ICAgICBTdGF0aXN0aWsgfCBMb2didWNoIHwgQWRtaW5pc3RyYXRpb25dXG4nICsKICAgICdHZW5h dWVyZSBTdGVsbGU6IFt6LiBCLiBBZG1pbmlzdHJhdGlvbiDihpIgUGVyc29uYWx2ZXJ3YWx0dW5n IOKGklxuJyArCiAgICAnICAgICAgICAgICAgICAgICAgUGVyc29uIGJlYXJiZWl0ZW4g4oaSIEdl YnVydHN0YWctTW9kYWxdXG5cblxuJyArCiAgICAn4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ 4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQXG4nICsKICAg ICczKSBTQ0hSSVRURSBaVU0gUkVQUk9EVVpJRVJFTlxuJyArCiAgICAn4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSAXG4nICsKICAgICdTY2hyaXR0IDE6IFsuLi5dXG4nICsKICAgICdTY2hyaXR0IDI6IFsuLi5d XG4nICsKICAgICdTY2hyaXR0IDM6IFsuLi5dXG4nICsKICAgICfihpIgV2FzIHBhc3NpZXJ0IHRh dHPDpGNobGljaCAoZGVyIEZlaGxlcik6IFsuLi5dXG4nICsKICAgICfihpIgV2FzIGjDpHR0ZSBz dGF0dGRlc3NlbiBwYXNzaWVyZW4gc29sbGVuOiBbLi4uXVxuJyArCiAgICAn4oaSIEthbSBlaW5l IEZlaGxlcm1lbGR1bmc/IFdlbm4gamEsIFdvcnRsYXV0OiBbLi4uXVxuXG5cbicgKwogICAgJ+KV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAnNCkgV0VSIC8gV0FTIElTVCBCRVRST0ZGRU5cbicg KwogICAgJ+KUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnQmV0cm9mZmVuZSBQZXJzb24gLyBE YXRlbnNhdHogKGZhbGxzIHJlbGV2YW50KTogWy4uLl1cbicgKwogICAgJ1RyaXR0IGVzIG51ciBi ZWkgbWlyIGF1ZiDigJQgb2RlciBhdWNoIGJlaSBLb2xsZWc6aW5uZW4/IFsuLi5dXG4nICsKICAg ICdSZXByb2R1emllcmJhciBuYWNoIEJyb3dzZXItUmVmcmVzaCAvIE5ldXN0YXJ0PyBbLi4uXVxu XG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAnNSkgV0lFIFNUQVJLIEJM T0NLSUVSVCBERVIgQlVHP1xuJyArCiAgICAn4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4nICsKICAgICdb IF0gQmxvY2tpZXJ0IG1laW5lIEFyYmVpdCBrb21wbGV0dFxuJyArCiAgICAnWyBdIFN0w7ZydCwg aWNoIGhhYmUgYWJlciBlaW5lbiBXb3JrYXJvdW5kXG4nICsKICAgICdbIF0gS2xlaW5lciBTY2jD tm5oZWl0c2ZlaGxlclxuXG5cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJyArCiAgICAn NikgU0NSRUVOU0hPVFMg4oCUIEJJVFRFIFVOQkVESU5HVCBCRUlMRUdFTiFcbicgKwogICAgJ+KU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgFxuJyArCiAgICAnTWluZGVzdGVucyAxIFNjcmVlbnNob3QgZGVyIEZl aGxlcnN0ZWxsZS4gU28gZ2VodHM6XG4nICsKICAgICcgIOKAoiBTdHJnICsgRHJ1Y2sgICAgIOKG kiBnYW56ZXIgQmlsZHNjaGlybSBpbiBkaWUgWndpc2NoZW5hYmxhZ2VcbicgKwogICAgJyAg4oCi IEFsdCArIERydWNrICAgICAg4oaSIG51ciBkYXMgYWt0aXZlIEZlbnN0ZXJcbicgKwogICAgJyAg 4oCiIFBhaW50IMO2ZmZuZW4gICAgIOKGkiBTdHJnICsgViBlaW5mw7xnZW4g4oaSIFNwZWljaGVy biBhbHMgUE5HXG4nICsKICAgICcgIOKAoiBEYXRlaShlbikgYW4gZGllc2UgTWFpbCBhbmjDpG5n ZW5cbicgKwogICAgJ0JpdHRlIGRlbiBHQU5aRU4gQnJvd3Nlci1UYWIgZWluZmFuZ2VuIChuaWNo dCBudXIgZGFzIE1vZGFsKSxcbicgKwogICAgJ2RhbWl0IGRlciBLb250ZXh0IChUYWIsIERhdHVt LCBhbmRlcmUgSGlud2Vpc2UpIHNpY2h0YmFyIGlzdC5cblxuXG4nICsKICAgICdWaWVsZSBHcsO8 w59lXG4nICsKICAgICdbVm9yLSB1bmQgTmFjaG5hbWUsIERpZW5zdGdyYWRdXG4nICsKICAgICdb RGllbnN0c3RlbGxlIC8gSGF1c2R1cmNod2FobF1cblxuXG4nICsKICAgICfilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi lZDilZBcbicgKwogICAgJ1RFQ0hOSVNDSEUgSU5GTyDigJQgYml0dGUgdW52ZXLDpG5kZXJ0IGxh c3NlbiAodm9tIFN5c3RlbSBlcmfDpG56dClcbicgKwogICAgJ+KUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxu JyArCiAgICAnTlctS2VubnVuZzogICAgICAge253X2tlbm51bmd9XG4nICsKICAgICdBa3R1ZWxs ZSBBbnNpY2h0OiB7YWt0dWVsbGVfYW5zaWNodH1cbicgKwogICAgJ0RhdHVtIC8gVWhyemVpdDog IHtkYXR1bX0ge3VocnplaXR9XG4nICsKICAgICdBdWZsw7ZzdW5nOiAgICAgICAge2F1ZmxvZXN1 bmd9XG4nICsKICAgICdBcHAtSmFocjogICAgICAgICB7YXBwX2phaHJ9XG4nICsKICAgICdCcm93 c2VyOiAgICAgICAgICB7YnJvd3Nlcn1cbicgKwogICAgJ+KVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkFxuJzsK CmV4cG9ydCB2YXIgSU1QUkVTU1VNX0RFRkFVTFQgPQogICAgJzxoND5IZXJhdXNnZWJlciAvIFZl cmFudHdvcnRsaWNoIGbDvHIgZGVuIEluaGFsdDwvaDQ+JyArCiAgICAnPHA+UG9saXplaXByw6Rz aWRpdW0gRG9ydG11bmQ8YnI+JyArCiAgICAnVmVya2VocnNpbnNwZWt0aW9uIDMgKFZJIDMpPGJy PicgKwogICAgJzxlbT5bQW5zY2hyaWZ0IGJpdHRlIGVyZ8Okbnplbl08L2VtPjwvcD4nICsKICAg ICc8aDQ+VGVjaG5pc2NoZSBLb256ZXB0aW9uICZhbXA7IEVudHdpY2tsdW5nPC9oND4nICsKICAg ICc8cD5QaGlsaXBwIFJvZXNnZW4sIFBISzxicj4nICsKICAgICdFLU1haWw6IHBoaWxpcHAucm9l c2dlbkBwb2xpemVpLm5ydy5kZTwvcD4nICsKICAgICc8aDQ+QmV0cmllYiAmYW1wOyBEYXRlbmhh bHR1bmc8L2g0PicgKwogICAgJzxwPkRpZXNlIEFud2VuZHVuZyBsw6R1ZnQgYXVzc2NobGllw59s aWNoIGltIGludGVybmVuIFBvbGl6ZWktTmV0endlcmsuICcgKwogICAgJ0RpZSBEYXRlbiB3ZXJk ZW4gbG9rYWwgaW4gSlNPTi1EYXRlaWVuIGdlaGFsdGVuIHVuZCDDvGJlciBkYXMgUG9saXplaS1O ZXR6bGF1ZndlcmsgJyArCiAgICAnc3luY2hyb25pc2llcnQuIEtlaW5lIENsb3VkLURpZW5zdGUs IGtlaW5lIGV4dGVybmVuIFRyYWNrZXIsIGtlaW5lIFRlbGVtZXRyaWUuPC9wPicgKwogICAgJzxo ND5MaXplbnpoaW53ZWlzZSBleHRlcm5lciBLb21wb25lbnRlbjwvaDQ+JyArCiAgICAnPHVsPicg KwogICAgJzxsaT5TaGVldEpTIENvbW11bml0eSBFZGl0aW9uIOKAlCBBcGFjaGUtMi4wLUxpemVu eiwgbG9rYWwgZWluZ2VidW5kZW4gKHhsc3guZnVsbC5taW4uanMpPC9saT4nICsKICAgICc8L3Vs PicgKwogICAgJzxoND5IYWZ0dW5nc2F1c3NjaGx1c3M8L2g0PicgKwogICAgJzxwPkRpZSBpbiBk aWVzZXIgQW53ZW5kdW5nIGRhcmdlc3RlbGx0ZW4gRGllbnN0cGzDpG5lIHVuZCBQZXJzb25hbGRh dGVuICcgKwogICAgJ2RpZW5lbiBkZXIgaW50ZXJuZW4gQXJiZWl0c29yZ2FuaXNhdGlvbi4gRsO8 ciBWb2xsc3TDpG5kaWdrZWl0IHVuZCBBa3R1YWxpdMOkdCAnICsKICAgICd3aXJkIGtlaW5lIEdl d8OkaHIgw7xiZXJub21tZW4uIFZlcmJpbmRsaWNoIGlzdCBhbGxlaW4gZGVyIG9mZml6aWVsbGUg RGllbnN0cGxhbi48L3A+JzsKCi8vIEhlbHBlcjogd2FuZGVsdCBlaW5lbiBXZXJ0IGF1cyBhZG1p bi5qc29uIChTdHJpbmcgLSBlbnR3ZWRlciBwbGFpbiBvZGVyCi8vIEhUTUwpIGluIEhUTUwgdW0s IGRhcyBkaXJla3QgaW4gZGFzIEluZm8tRmVuc3RlciBvZGVyIGVpbmVuIFJURS1FZGl0b3IKLy8g ZWluZ2VzZXR6dCB3ZXJkZW4ga2Fubi4gUGxhaW4gU3RyaW5ncyB3ZXJkZW4gZXNjYXBlZCB1bmQg XG4gLT4gPGJyPjsKLy8gYmVyZWl0cy1IVE1MIHdpcmQgZHVyY2ggc2FuaXRpemVSaWNoSHRtbCBn ZWZpbHRlcnQuCmZ1bmN0aW9uIGh0bWxBdXNGZWxkKHMpIHsKICAgIHMgPSBzIHx8ICcnOwogICAg aWYgKCFzKSByZXR1cm4gJyc7CiAgICBpZiAoLzxcLz8oYnxzdHJvbmd8aXxlbXx1fHVsfG9sfGxp fHB8YnJ8ZGl2fHNwYW58YXxoM3xoNClcYi9pLnRlc3QocykpIHsKICAgICAgICByZXR1cm4gc2Fu aXRpemVSaWNoSHRtbChzKTsKICAgIH0KICAgIHJldHVybiBlc2NhcGVIVE1MKHMpLnJlcGxhY2Uo L1xyP1xuL2csICc8YnI+Jyk7Cn0KCmZ1bmN0aW9uIGluZm9IaWxmZVJlbmRlcm4oKSB7CiAgICB2 YXIgaW5mbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpaC1pbmZvdGV4dCcpOwogICAgaWYg KCFpbmZvKSByZXR1cm47CiAgICBpbmZvLmlubmVySFRNTCA9IGh0bWxBdXNGZWxkKFouYWRtaW4u aW5mb3RleHQpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLXN1cHBvcnQnKS5pbm5l ckhUTUwgICAgID0gaHRtbEF1c0ZlbGQoWi5hZG1pbi5zdXBwb3J0aW5mbyk7CiAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnaWgtaGlsZmUnKS5pbm5lckhUTUwgICAgICAgID0gaHRtbEF1c0Zl bGQoWi5hZG1pbi5oaWxmZXRleHQpOwogICAgLy8gQmVkaWVudW5nc3RleHRlOiB3ZW5uIGxlZXIg LT4gRGVmYXVsdCB6ZWlnZW4gKGFscyBVTCBnZXJlbmRlcnQsIGRhbWl0CiAgICAvLyBkZXIgVXNl ciBzb2ZvcnQgc2llaHQgd2llIGVzIGF1c3NlaGVuIHNvbGwpCiAgICB2YXIgYmVkID0gWi5hZG1p bi5iZWRpZW51bmdzdGV4dGU7CiAgICBpZiAoIWJlZCB8fCAhU3RyaW5nKGJlZCkudHJpbSgpKSB7 CiAgICAgICAgLy8gRGVmYXVsdCBhbHMgPHVsPjxsaT4uLi48L2xpPjwvdWw+IGVpbmZ1ZWdlbiwg ZGFtaXQgZGVyIFJURSBnbGVpY2gKICAgICAgICAvLyBBdWZ6YWVobHVuZ3MtRm9ybWF0IHplaWd0 LgogICAgICAgIHZhciB1bCA9ICc8dWw+JyArIChhZG1pbkhvb2tzLmJlZGllbnVuZ1plaWxlblJl bmRlcm4gPyBhZG1pbkhvb2tzLmJlZGllbnVuZ1plaWxlblJlbmRlcm4oQkVESUVOVU5HX0RFRkFV TFQpIDogJycpICsgJzwvdWw+JzsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWgt YmVkaWVudW5nJykuaW5uZXJIVE1MID0gdWw7CiAgICB9IGVsc2UgewogICAgICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdpaC1iZWRpZW51bmcnKS5pbm5lckhUTUwgPSBodG1sQXVzRmVsZChi ZWQpOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLXNjaGxpZXNzaW5mbycp LnZhbHVlID0gWi5hZG1pbi5zY2hsaWVzc2luZm8gfHwgJyc7CiAgICAvLyBJbXByZXNzdW06IGxl ZXIgLT4gRGVmYXVsdC1IVE1MIHplaWdlbiAoVXNlciBrYW5uIGZyZWkgdWViZXJzY2hyZWliZW4p CiAgICB2YXIgaW1wRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWgtaW1wcmVzc3VtJyk7 CiAgICBpZiAoaW1wRWwpIHsKICAgICAgICB2YXIgaW1wV2VydCA9IFouYWRtaW4uaW1wcmVzc3Vt OwogICAgICAgIGltcEVsLmlubmVySFRNTCA9IChpbXBXZXJ0ICYmIFN0cmluZyhpbXBXZXJ0KS50 cmltKCkpCiAgICAgICAgICAgID8gaHRtbEF1c0ZlbGQoaW1wV2VydCkKICAgICAgICAgICAgOiBz YW5pdGl6ZVJpY2hIdG1sKElNUFJFU1NVTV9ERUZBVUxUKTsKICAgIH0KCiAgICAvLyBSVEUtVG9v bGJhcnMgdmVyZHJhaHRlbiDigJQgZWlubWFsIHBybyBFZGl0b3IgcmVpY2h0LiBXaXIgbWFya2ll cmVuCiAgICAvLyBtaXQgZGF0YS1ydGUtaW5pdCwgZGFtaXQgcnRlSW5pdCgpIG5pY2h0IGRvcHBl bHQgaGFlbmd0LgogICAgWydpaC1pbmZvdGV4dCcsJ2loLXN1cHBvcnQnLCdpaC1oaWxmZScsJ2lo LWJlZGllbnVuZycsJ2loLWltcHJlc3N1bSddLmZvckVhY2goZnVuY3Rpb24oaWQpIHsKICAgICAg ICB2YXIgZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYgKGVkICYm ICFlZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcnRlLWluaXQnKSkgewogICAgICAgICAgICBydGVJbml0 KGVkKTsKICAgICAgICAgICAgZWQuc2V0QXR0cmlidXRlKCdkYXRhLXJ0ZS1pbml0JywgJzEnKTsK ICAgICAgICB9CiAgICB9KTsKfQoKZnVuY3Rpb24gaW5mb0hpbGZlQXVzRmVsZGVybkxlc2VuKCkg ewogICAgdmFyIGltcEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLWltcHJlc3N1bScp OwogICAgcmV0dXJuIHsKICAgICAgICBpbmZvdGV4dDogICAgICAgIHNhbml0aXplUmljaEh0bWwo ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2loLWluZm90ZXh0JykuaW5uZXJIVE1MKSwKICAgICAg ICBzdXBwb3J0aW5mbzogICAgIHNhbml0aXplUmljaEh0bWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2loLXN1cHBvcnQnKS5pbm5lckhUTUwpLAogICAgICAgIGhpbGZldGV4dDogICAgICAgc2Fu aXRpemVSaWNoSHRtbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaWgtaGlsZmUnKS5pbm5lckhU TUwpLAogICAgICAgIGJlZGllbnVuZ3N0ZXh0ZTogc2FuaXRpemVSaWNoSHRtbChkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaWgtYmVkaWVudW5nJykuaW5uZXJIVE1MKSwKICAgICAgICBzY2hsaWVz c2luZm86ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpaC1zY2hsaWVzc2luZm8nKS52YWx1 ZSwKICAgICAgICBpbXByZXNzdW06ICAgICAgIGltcEVsID8gc2FuaXRpemVSaWNoSHRtbChpbXBF bC5pbm5lckhUTUwpIDogJycKICAgIH07Cn0KCi8vID09PT09IEFkbWluOiBCZXplaWNobnVuZ2Vu IChlZGl0aWVyYmFyZSBVSS1MYWJlbHMpID09PT09CgovLyBEZWZhdWx0LVdlcnRlIGZ1ZXIgYWxs ZSBlZGl0aWVyYmFyZW4gTGFiZWxzLiBkYXRhLWJlei1BdHRyaWJ1dGUgaW0gSFRNTAovLyB2ZXJ3 ZWlzZW4gbWl0IGlocmVtIFdlcnQgYXVmIGRpZXNlIEtleXM7IGJlemVpY2hudW5nZW5BbndlbmRl bigpIHNldHp0Ci8vIGJlaW0gTG9naW4gZGVuIFRleHQuIExlZXJlIE92ZXJyaWRlcyBpbiBhZG1p bi5qc29uLmJlemVpY2hudW5nZW4gZmFsbGVuCi8vIGF1ZiBkZW4gRGVmYXVsdCB6dXJ1ZWNrLgp2 YXIgQkVaRUlDSE5VTkdFTl9ERUZBVUxUID0gewogICAgJ2FwcC50aXRlbCc6ICAgICAgICdWSTMg REdMLVBsYW51bmcnLAogICAgJ25hdi5wbGFudW5nJzogICAgICdQbGFudW5nJywKICAgICduYXYu d29jaGVucGxhbic6ICAnV29jaGVucGxhbicsCiAgICAnbmF2LnBlcnNwbGFuJzogICAgJ1BlcnMu IFBsYW4nLAogICAgJ25hdi5iZXNldHp1bmcnOiAgICdQcsO8ZnVuZycsCiAgICAnbmF2LmFkbWlu JzogICAgICAgJ0FkbWluaXN0cmF0aW9uJywKICAgICduYXYuc3RhdGlzdGlrJzogICAnU3RhdGlz dGlrJywKICAgICduYXYubG9nYnVjaCc6ICAgICAnTG9nYnVjaCcKfTsKCmZ1bmN0aW9uIGJleihr ZXkpIHsKICAgIHZhciBiID0gKFouYWRtaW4gJiYgWi5hZG1pbi5iZXplaWNobnVuZ2VuKSB8fCB7 fTsKICAgIGlmIChrZXkgaW4gYiAmJiBiW2tleV0pIHJldHVybiBiW2tleV07CiAgICByZXR1cm4g QkVaRUlDSE5VTkdFTl9ERUZBVUxUW2tleV0gfHwga2V5Owp9CgovLyBTZXR6dCBhbGxlIGRhdGEt YmV6LUVsZW1lbnRlIGltIERPTSBhdWYgZGVuIHBhc3NlbmRlbiBUZXh0LiBFaW5tYWwgbmFjaAov LyBMb2dpbiBhdWZydWZlbiB1bmQgYmVpIGplZGVyIEFlbmRlcnVuZyB2b24gYWRtaW4uYmV6ZWlj aG51bmdlbi4KZnVuY3Rpb24gYmV6ZWljaG51bmdlbkFud2VuZGVuKCkgewogICAgZG9jdW1lbnQu cXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYmV6XScpLmZvckVhY2goZnVuY3Rpb24oZWwpIHsKICAg ICAgICB2YXIgayA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1iZXonKTsKICAgICAgICBpZiAoaykg ZWwudGV4dENvbnRlbnQgPSBiZXooayk7CiAgICB9KTsKICAgIC8vIEF1Y2ggZGVyIEhUTUwtPHRp dGxlPiBzcGllZ2VsdCBkZW4gQXBwLVRpdGVsCiAgICB0cnkgeyBkb2N1bWVudC50aXRsZSA9IGJl eignYXBwLnRpdGVsJyk7IH0gY2F0Y2ggKF8pIHt9Cn0KCmZ1bmN0aW9uIGJlemVpY2hudW5nZW5S ZW5kZXJuKCkgewogICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JlemVp Y2hudW5nZW4tdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciBvdmVycmlk ZXMgPSAoWi5hZG1pbiAmJiBaLmFkbWluLmJlemVpY2hudW5nZW4pIHx8IHt9OwogICAgdmFyIGh0 bWwgPSAnJzsKICAgIE9iamVjdC5rZXlzKEJFWkVJQ0hOVU5HRU5fREVGQVVMVCkuZm9yRWFjaChm dW5jdGlvbihrZXkpIHsKICAgICAgICB2YXIgZGVmID0gQkVaRUlDSE5VTkdFTl9ERUZBVUxUW2tl eV07CiAgICAgICAgdmFyIGN1ciA9IG92ZXJyaWRlc1trZXldIHx8ICcnOwogICAgICAgIGh0bWwg Kz0gJzx0cj4nICsKICAgICAgICAgICAgJzx0ZD48Y29kZSBzdHlsZT0iZm9udC1zaXplOjExcHgi PicgKyBlc2NhcGVIVE1MKGtleSkgKyAnPC9jb2RlPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQg c3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4Ij4nICsgZXNjYXBl SFRNTChkZWYpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGlucHV0IHR5cGU9InRleHQi IGNsYXNzPSJiZXotaW5wdXQiIGRhdGEta2V5PSInICsgZXNjYXBlQXR0cihrZXkpICsgJyIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKGN1cikgKyAnIiBwbGFjZWhvbGRlcj0iJyArIGVzY2FwZUF0dHIo ZGVmKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlIj48L3RkPicgKwogICAgICAgICAgICAnPC90cj4n OwogICAgfSk7CiAgICB0Ym9keS5pbm5lckhUTUwgPSBodG1sOwp9CgpmdW5jdGlvbiBiZXplaWNo bnVuZ2VuQXVzVGFiZWxsZUxlc2VuKCkgewogICAgdmFyIG1hcCA9IHt9OwogICAgZG9jdW1lbnQu cXVlcnlTZWxlY3RvckFsbCgnLmJlei1pbnB1dCcpLmZvckVhY2goZnVuY3Rpb24oaW5wKSB7CiAg ICAgICAgdmFyIGsgPSBpbnAuZ2V0QXR0cmlidXRlKCdkYXRhLWtleScpOwogICAgICAgIHZhciB2 ID0gaW5wLnZhbHVlLnRyaW0oKTsKICAgICAgICBpZiAoayAmJiB2KSBtYXBba10gPSB2OwogICAg fSk7CiAgICByZXR1cm4gbWFwOwp9CgovLyA9PT09PSBBZG1pbjogRS1NYWlsLVZvcmxhZ2VuIChm dWVyIEJlc2V0enVuZ3Nrb250cm9sbGUpID09PT09Ci8vIEVNQUlMX1ZPUkxBR0VOX0RFRkFVTFQs IEVNQUlMX1ZBUklBQkxFTl9CRVNDSFJFSUJVTkcsIEVNUEZBRU5HRVJfT1BUSU9ORU4sCi8vIEVN QUlMX1ZPUkxBR0VOX01FVEEsIGVtYWlsVm9ybGFnZW5Ib2xlbiwgZW1haWxWb3JsYWdlblJlbmRl cm4sCi8vIGVtYWlsVm9ybGFnZUJlYXJiZWl0ZW5Nb2RhbCwgaHRtbFp1UGxhaW5UZXh0LCBlbWFp bFZvcmxhZ2VCZWZ1ZWxsZW4sCi8vIGVtYWlsRW1wZmFlbmdlclJlc29sdmUsIG1haWxUcmlnZ2Vy RmV1ZXJuLCByb2xsZURpZmZUcmlnZ2VybgovLyAgIC0+IGpzL2VtYWlsL2VtYWlsLXZvcmxhZ2Vu LmpzCgpmdW5jdGlvbiBlaW5zdGVsbHVuZ2VuUmVuZGVybigpIHsKICAgIHZhciBlbCA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdlaW5zLWphaHInKTsKICAgIGlmICghZWwpIHJldHVybjsKICAg IGVsLnZhbHVlID0gWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAg IHZhciBwYXBpZXJrb3JiRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWlucy1wYXBpZXJr b3JiLXRhZ2UnKTsKICAgIGlmIChwYXBpZXJrb3JiRWwpIHBhcGllcmtvcmJFbC52YWx1ZSA9IFou YWRtaW4ucGFwaWVya29yYlRhZ2VBdWZiZXdhaHJ1bmcgIT0gbnVsbCA/IFouYWRtaW4ucGFwaWVy a29yYlRhZ2VBdWZiZXdhaHJ1bmcgOiAzMDsKICAgIHZhciBlbWFpbERvbWFpbkVsID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2VpbnMtZW1haWwtZG9tYWluJyk7CiAgICBpZiAoZW1haWxEb21h aW5FbCkgZW1haWxEb21haW5FbC52YWx1ZSA9IFouYWRtaW4uZW1haWxBdXRvRG9tYWluIHx8ICdA cG9saXplaS5ucncuZGUnOwogICAgdmFyIGF2YXRhckdyb2Vzc2VFbCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdlaW5zLWF2YXRhci1ncm9lc3NlJyk7CiAgICBpZiAoYXZhdGFyR3JvZXNzZUVs KSBhdmF0YXJHcm9lc3NlRWwudmFsdWUgPSBaLmFkbWluLmF2YXRhckdyb2Vzc2UgfHwgMjAwOwog ICAgdmFyIGVkaXRvclRyaWdnZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlaW5zLWVk aXRvci10cmlnZ2VyJyk7CiAgICBpZiAoZWRpdG9yVHJpZ2dlckVsKSB7CiAgICAgICAgdmFyIHQg PSBaLmFkbWluLmVkaXRvclRyaWdnZXI7CiAgICAgICAgZWRpdG9yVHJpZ2dlckVsLnZhbHVlID0g KFsncmVjaHRzJywgJ2xpbmtzJywgJ21pdHRlJywgJ2RvcHBlbCddLmluZGV4T2YodCkgPj0gMCkg PyB0IDogJ3JlY2h0cyc7CiAgICB9Cn0KCi8vID09PT09IEFkbWluOiBTdGFuZG9ydGUgJiBTY2hp Y2h0Zm9sZ2UgPT09PT0KCmZ1bmN0aW9uIHN0YW5kb3J0ZVJlbmRlcm4oKSB7CiAgICB2YXIgdGJv ZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhbmRvcnRlLXRib2R5Jyk7CiAgICBpZiAo IXRib2R5KSByZXR1cm47CiAgICBpZiAoIShaLmFkbWluLnN0YW5kb3J0ZSB8fCBbXSkubGVuZ3Ro KSB7CiAgICAgICAgdGJvZHkuaW5uZXJIVE1MID0gYWRtaW5FbXB0eVplaWxlKDUsICdcdXsxRjNF Mn0nLAogICAgICAgICAgICAnTm9jaCBrZWluZSBTdGFuZG9ydGUgYW5nZWxlZ3QnLAogICAgICAg ICAgICAnU3RhbmRvcnRlIHNpbmQgZGllIEFyYmVpdHNvcnRlIGRlciBWSTMgKHouQi4gQXJuc2Jl cmcsIEJvY2h1bSkuIEplZGVyIFN0YW5kb3J0IGJyYXVjaHQgZWluZSBTY2hpY2h0Zm9sZ2UgZnVl ciBBL0IvQyDigJQgbGVnIGRlbiBlcnN0ZW4gb2JlbiBtaXQg4oCeTmV1ZXIgU3RhbmRvcnQiIGFu LicpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBoZXV0ZSA9IG5ldyBEYXRlKFouaGV1 dGVTdHIgKyAnVDAwOjAwOjAwJyk7CiAgICB2YXIgaHRtbCA9ICcnOwogICAgKFouYWRtaW4uc3Rh bmRvcnRlIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHNvLCBpZHgpIHsKICAgICAgICB2YXIgdm9y c2NoYXUgPSAnJzsKICAgICAgICBpZiAoc28uaXN0UG9vbCkgewogICAgICAgICAgICB2b3JzY2hh dSA9ICc8c3BhbiBjbGFzcz0ic2Ytdm9yc2NoYXUgc2Ytdm9yc2NoYXUtcG9vbCI+UG9vbCAoZmxl eGliZWwpPC9zcGFuPic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9 IDA7IGkgPCAxNDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGhldXRl LmdldFRpbWUoKSArIGkgKiA4NjQwMDAwMCk7CiAgICAgICAgICAgICAgICB2YXIga2V5ID0gZGF0 dW1TdHIoZCk7CiAgICAgICAgICAgICAgICB2YXIgd2VydCA9IChzby5zY2hpY2h0Zm9sZ2UgfHwg e30pW2tleV0gfHwgJ+KAkyc7CiAgICAgICAgICAgICAgICB2YXIgY2xzID0gd2VydCA9PT0gJ0FC QycgPyAnc2YtYWJjJyA6IHdlcnQgPT09ICdCQ0EnID8gJ3NmLWJjYScgOiB3ZXJ0ID09PSAnQ0FC JyA/ICdzZi1jYWInIDogJyc7CiAgICAgICAgICAgICAgICB2b3JzY2hhdSArPSAnPHNwYW4gY2xh c3M9InNmLXZvcnNjaGF1ICcgKyBjbHMgKyAnIiB0aXRsZT0iJyArIGtleSArICciPicgKyBlc2Nh cGVIVE1MKHdlcnQpICsgJzwvc3Bhbj4nOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg IGh0bWwgKz0gJzx0cj4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKHNvLm5hbWUgfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpZHgg KyAnIiBkYXRhLWZlbGQ9Im5hbWUiIGNsYXNzPSJzdGFuZG9ydC1pbnB1dCI+PC90ZD4nICsKICAg ICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHNv Lmt1ZXJ6ZWwgfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpZHggKyAnIiBkYXRhLWZlbGQ9Imt1 ZXJ6ZWwiIGNsYXNzPSJzdGFuZG9ydC1pbnB1dCIgbWF4bGVuZ3RoPSI0IiBzdHlsZT0id2lkdGg6 NTBweCI+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIi PjxpbnB1dCB0eXBlPSJjaGVja2JveCIgJyArIChzby5pc3RQb29sID8gJ2NoZWNrZWQnIDogJycp ICsgJyBkYXRhLWlkeD0iJyArIGlkeCArICciIGRhdGEtZmVsZD0iaXN0UG9vbCIgY2xhc3M9InN0 YW5kb3J0LWlucHV0Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyB2b3JzY2hhdSArICc8 L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKwogICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9 ImRpc3BsYXk6ZmxleDtnYXA6NnB4O2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dy YXAiPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBi dG4ta2xlaW4gYnRuLWljb24gYnRuLXJoeXRobXVzIiBkYXRhLWFrdGlvbj0ic3RhbmRvcnQtcmh5 dGhtdXMiIGRhdGEtaWR4PSInICsgaWR4ICsgJyIgdGl0bGU9IlJoeXRobXVzIGVyemV1Z2VuIj5S aHl0aG11czwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLWdlZmFociBidG4ta2xlaW4gYnRuLWxvZXNjaGVuIiBkYXRhLWFrdGlvbj0ic3RhbmRv cnQtbG9lc2NoZW4iIGRhdGEtaWR4PSInICsgaWR4ICsgJyIgdGl0bGU9IlN0YW5kb3J0IGzDtnNj aGVuIj5Mw7ZzY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAg ICAgICAgICAnPC90ZD4nICsKICAgICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5l ckhUTUwgPSBodG1sOwp9CgpmdW5jdGlvbiBzdGFuZG9ydGVBdXNUYWJlbGxlTGVzZW4oKSB7CiAg ICB2YXIgYWx0ZSA9IFouYWRtaW4uc3RhbmRvcnRlIHx8IFtdOwogICAgdmFyIGZlbGRlciA9IGRv Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zdGFuZG9ydC1pbnB1dCcpOwogICAgdmFyIG5ldSA9 IGFsdGUubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHMpOyB9KTsK ICAgIGZlbGRlci5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICB2YXIgaWR4ID0gcGFyc2VJ bnQoZi5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4JykpOwogICAgICAgIHZhciBmZWxkID0gZi5nZXRB dHRyaWJ1dGUoJ2RhdGEtZmVsZCcpOwogICAgICAgIGlmICghbmV1W2lkeF0pIHJldHVybjsKICAg ICAgICBpZiAoZmVsZCA9PT0gJ2lzdFBvb2wnKSBuZXVbaWR4XS5pc3RQb29sID0gZi5jaGVja2Vk OwogICAgICAgIGVsc2UgbmV1W2lkeF1bZmVsZF0gPSBmLnZhbHVlOwogICAgfSk7CiAgICBuZXUu Zm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgaWYgKHMuaXN0UG9vbCkgZGVsZXRlIHMuc2No aWNodGZvbGdlOwogICAgfSk7CiAgICByZXR1cm4gbmV1LmZpbHRlcihmdW5jdGlvbihzKSB7IHJl dHVybiBzLm5hbWU7IH0pOwp9CgpmdW5jdGlvbiByaHl0aG11c0dlbmVyYXRvckRpYWxvZyhpZHgp IHsKICAgIHZhciBzbyA9IChaLmFkbWluLnN0YW5kb3J0ZSB8fCBbXSlbaWR4XTsKICAgIGlmICgh c28pIHJldHVybjsKICAgIHZhciBqYWhyID0gWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0 RnVsbFllYXIoKTsKICAgIHZhciBrb2VycGVyID0gJzxwIHN0eWxlPSJtYXJnaW4tdG9wOjAiPkVy emV1Z2UgZWluZW4gd2llZGVya2VocmVuZGVuIFJoeXRobXVzIGbDvHIgPHN0cm9uZz4nICsgZXNj YXBlSFRNTChzby5uYW1lKSArICc8L3N0cm9uZz4uIERlciBSaHl0aG11cyB3aXJkIGFiIFN0YXJ0 ZGF0dW0gamV3ZWlscyBmw7xyIGRpZSBhbmdlZ2ViZW5lIEJsb2NrbMOkbmdlIGFuZ2V3ZW5kZXQg dW5kIHp5a2xpc2NoIHdpZWRlcmhvbHQgYmlzIEphaHJlc2VuZGUuPC9wPicgKwogICAgICAgICc8 ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2Fw OjAgMTZweCI+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+U3Rh cnRkYXR1bSAod28gWnlrbHVzIGJlZ2lubnQpPC9sYWJlbD48aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9 InJoLXN0YXJ0IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVlPSIn ICsgamFociArICctMDEtMDEiPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdy dXBwZSI+PGxhYmVsPkJsb2NrbMOkbmdlIGluIFRhZ2VuPC9sYWJlbD48aW5wdXQgdHlwZT0ibnVt YmVyIiBpZD0icmgtYmxvY2siIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSIg dmFsdWU9IjciIG1pbj0iMSIgbWF4PSIzMSI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIiBzdHlsZT0iZ3JpZC1jb2x1bW46c3BhbiAyIj48bGFiZWw+UmVpaGVuZm9s Z2UgKGtvbW1hZ2V0cmVubnQsIHouQi4gQUJDLEJDQSxDQUIpPC9sYWJlbD48aW5wdXQgdHlwZT0i dGV4dCIgaWQ9InJoLWZvbGdlIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUi IHZhbHVlPSJBQkMsQkNBLENBQiI+PC9kaXY+JyArCiAgICAgICAgJzwvZGl2Pic7CgogICAgbW9k YWxaZWlnZW4oJ1NjaGljaHRmb2xnZS1SaHl0aG11cyBmw7xyICcgKyBzby5uYW1lLCBrb2VycGVy LAogICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJyaC1hbndlbmRl biI+QW53ZW5kZW48L2J1dHRvbj4nLAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2 YXIgc3RhcnQgPSBuZXcgRGF0ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmgtc3RhcnQnKS52 YWx1ZSArICdUMDA6MDA6MDAnKTsKICAgICAgICAgICAgdmFyIGJsb2NrID0gcGFyc2VJbnQoZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JoLWJsb2NrJykudmFsdWUsIDEwKSB8fCA3OwogICAgICAg ICAgICB2YXIgZm9sZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmgtZm9sZ2UnKS52YWx1 ZS5zcGxpdCgnLCcpLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gcy50cmltKCkudG9VcHBlckNhc2Uo KTt9KS5maWx0ZXIoQm9vbGVhbik7CiAgICAgICAgICAgIGlmICghZm9sZ2UubGVuZ3RoIHx8IGlz TmFOKHN0YXJ0LmdldFRpbWUoKSkpIHsgdG9hc3QoJ1VuZ8O8bHRpZ2UgRWluZ2FiZScsICd3YXJu dW5nJyk7IHJldHVybjsgfQoKICAgICAgICAgICAgdmFyIHNjaGljaHRmb2xnZSA9IHt9OwogICAg ICAgICAgICB2YXIgamFoclN0YXJ0ID0gbmV3IERhdGUoamFociArICctMDEtMDFUMDA6MDA6MDAn KTsKICAgICAgICAgICAgdmFyIGphaHJFbmRlID0gbmV3IERhdGUoamFociArICctMTItMzFUMDA6 MDA6MDAnKTsKICAgICAgICAgICAgdmFyIHRhZyA9IG5ldyBEYXRlKGphaHJTdGFydCk7CiAgICAg ICAgICAgIHdoaWxlICh0YWcgPD0gamFockVuZGUpIHsKICAgICAgICAgICAgICAgIHZhciBkaWZm VGFnZSA9IE1hdGguZmxvb3IoKHRhZyAtIHN0YXJ0KSAvIDg2NDAwMDAwKTsKICAgICAgICAgICAg ICAgIGlmIChkaWZmVGFnZSA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHp5a2x1c0lk eCA9IE1hdGguZmxvb3IoZGlmZlRhZ2UgLyBibG9jaykgJSBmb2xnZS5sZW5ndGg7CiAgICAgICAg ICAgICAgICAgICAgc2NoaWNodGZvbGdlW2RhdHVtU3RyKHRhZyldID0gZm9sZ2VbenlrbHVzSWR4 XTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRhZy5zZXREYXRlKHRhZy5nZXRE YXRlKCkgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzby5zY2hpY2h0Zm9sZ2UgPSBz Y2hpY2h0Zm9sZ2U7CiAgICAgICAgICAgIHNvLmlzdFBvb2wgPSBmYWxzZTsKICAgICAgICAgICAg bW9kYWxTY2hsaWVzc2VuKCk7CiAgICAgICAgICAgIHN0YW5kb3J0ZVJlbmRlcm4oKTsKICAgICAg ICAgICAgdG9hc3QoJ1JoeXRobXVzIGbDvHIgJyArIHNvLm5hbWUgKyAnIGVyemV1Z3Qg4oCUIOKA nlNwZWljaGVybiIgbmljaHQgdmVyZ2Vzc2VuJywgJ2VyZm9sZycpOwogICAgICAgIH0KICAgICk7 Cn0KCi8vID09PT09IEFkbWluOiBQZXJzb25hbC1UYWJlbGxlLCBOZXVpbXBvcnQsIEJ1bGssIElu bGluZS1FZGl0cywgRS1NYWlsID09PT09Ci8vIFBoYXNlIDktQiBDNDoga29tcGxldHRlciBQZXJz b25hbC1CbG9jayAofjEzMjcgWi4pIG5hY2gKLy8gVkkzL2pzL2FkbWluX3BlcnNvbmFsLmpzIGF1 c2dlbGFnZXJ0LiBLb25zdW1lbnRlbiAoYXBwLmpzKQovLyBpbXBvcnRpZXJlbiBhYiBQaGFzZSA5 LUIgQzUgZGlyZWt0IGF1cyBhZG1pbl9wZXJzb25hbC5qcy4KCi8vID09PT09IEFkbWluOiBGZWll cnRhZ2UgKyBGZXJpZW4gKyBTb25kZXJ0ZXJtaW5lID09PT09Ci8vIFBoYXNlIDktQiBDMzogbmFj aCBWSTMvanMvYWRtaW5fa2FsZW5kZXIuanMgYXVzZ2VsYWdlcnQKLy8gKGZlaWVydGFnZSosIGZl cmllbiosIHNvbmRlcnRlcm1pbmUqLCBzb25kZXIqLUhlbGZlcikuCi8vIHdvY2hlbnBsYW4uanMg KyBhcHAuanMgaW1wb3J0aWVyZW4gYWIgUGhhc2UgOS1CIEM1IGRpcmVrdCBhdXMKLy8gYWRtaW5f a2FsZW5kZXIuanMuCgovLyBydGVJbml0LCBydGVCdXR0b25TdGF0ZXMgLT4ganMvdWkvcnRlLmpz CgovLyA9PT09PSBBZG1pbjogU2NoaWNodGNvZGUtVm9yc2NoYXUgKyBFZGl0ICsgVG9nZ2xlID09 PT09Ci8vIFBoYXNlIDktQiBDMjogbmFjaCBWSTMvanMvYWRtaW5fY29kZXMuanMgYXVzZ2VsYWdl cnQKLy8gKGlzdENvZGVBa3RpdiwgY29kZVZlcndlbmR1bmdaYWVobGVuLCBzY2hpY2h0Y29kZUth dGVnb3JpZSwKLy8gc2NoaWNodGNvZGVWb3JzY2hhdVJlbmRlcm4sIHNjaGljaHRjb2RlRHJhZ1Zl cmRyYWh0ZW4sCi8vIHNjaGljaHRjb2RlVG9nZ2xlQWt0aXYsIHNjaGljaHRjb2RlTGlzdGVTcGVp Y2hlcm4sCi8vIHNjaGljaHRjb2RlRWRpdE1vZGFsWmVpZ2VuKS4gaW1wb3J0X2V4Y2VsLmpzICsg YXBwLmpzCi8vIGltcG9ydGllcmVuIGFiIFBoYXNlIDktQiBDNSBkaXJla3QgYXVzIGFkbWluX2Nv ZGVzLmpzLgoKLy8gQ29sbGFwc2libGUgSW5mby1CbG9ja3M6IFp1c3RhbmQgaW4gbG9jYWxTdG9y YWdlCmZ1bmN0aW9uIGFkbWluSW5mb0luaXQoKSB7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y QWxsKCdkZXRhaWxzLmFkbWluLWluZm9bZGF0YS1pbmZvLWtleV0nKS5mb3JFYWNoKGZ1bmN0aW9u KGRldCkgewogICAgICAgIHZhciBrZXkgPSAnYWRtaW4taW5mby0nICsgZGV0LmdldEF0dHJpYnV0 ZSgnZGF0YS1pbmZvLWtleScpOwogICAgICAgIHZhciBzYXZlZCA9IGxvY2FsU3RvcmFnZS5nZXRJ dGVtKGtleSk7CiAgICAgICAgaWYgKHNhdmVkID09PSAnenUnKSBkZXQucmVtb3ZlQXR0cmlidXRl KCdvcGVuJyk7CiAgICAgICAgZWxzZSBpZiAoc2F2ZWQgPT09ICdhdWYnKSBkZXQuc2V0QXR0cmli dXRlKCdvcGVuJywgJycpOwogICAgICAgIGRldC5hZGRFdmVudExpc3RlbmVyKCd0b2dnbGUnLCBm dW5jdGlvbigpIHsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBkZXQub3Bl biA/ICdhdWYnIDogJ3p1Jyk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKLy8gPT09PT0gQWRtaW46 IEZlYXR1cmUtVG9nZ2xlcyA9PT09PQoKLy8gZmVhdHVyZUxhYmVscyB3aXJkIGF1Y2ggYXVzIGFw cC5qcyBnZWxlc2VuIChUb2FzdC1NZWxkdW5nIGJlaW0gVG9nZ2xlLQovLyBLbGljayksIGRlc2hh bGIgZXhwbGl6aXQgZXhwb3J0aWVydC4gTmljaHQgaW4gZGVyIFBhc3MtVGhyb3VnaC0KLy8gUmUt RXhwb3J0LUxpc3RlLCB3ZWlsIGRpZSBEZWZpbml0aW9uIGhpZXIgaW4gYWRtaW4uanMgc2l0enQu CmV4cG9ydCB2YXIgZmVhdHVyZUxhYmVscyA9IHsKICAgIHNjaGljaHRmb2xnZW46IHsgbGFiZWw6 ICdTY2hpY2h0Zm9sZ2VuLUFuemVpZ2UnLCBiZXNjaHJlaWJ1bmc6ICdaZWlndCBkaWUgU2NoaWNo dHJvdGF0aW9uIHBybyBTdGFuZG9ydCBpbSBIZWFkZXIgYW4nIH0sCiAgICBzdGFlcmtlQW56ZWln ZTogeyBsYWJlbDogJ1N0w6Rya2UtQW56ZWlnZScsIGJlc2NocmVpYnVuZzogJ0Z8U3xOIEJlc2V0 enVuZ3N6w6RobGVyIHBybyBUYWcgaW0gUGxhbnVuZ3MtSGVhZGVyJyB9LAogICAgcnVoZXplaXRQ cnVlZnVuZzogeyBsYWJlbDogJ1J1aGV6ZWl0LVByw7xmdW5nJywgYmVzY2hyZWlidW5nOiAnV2Fy bnVuZyBiZWkgPCAxMWggUnVoZXplaXQgendpc2NoZW4gU2NoaWNodGVuJyB9LAogICAgZnJlbWRB ZW5kZXJ1bmdXYXJudW5nOiB7IGxhYmVsOiAnRnJlbWQtw4RuZGVydW5nIFdhcm51bmcnLCBiZXNj aHJlaWJ1bmc6ICdCZXN0w6R0aWd1bmcgYmVpbSDDhG5kZXJuIGRlciBTY2hpY2h0IGFuZGVyZXIg UGVyc29uZW4nIH0sCiAgICB1bnRlcmJlc2V0enVuZ1dhcm51bmc6IHsgbGFiZWw6ICdVbnRlcmJl c2V0enVuZ3MtV2FybnVuZyAoV2FjaGxlaXR1bmcpJywgYmVzY2hyZWlidW5nOiAnQmVpbSBMb2dp biBmw7xyIEdydXBwZSBMIChXYWNobGVpdHVuZykgdW5kIFN1cGVyVXNlcjogVG9hc3QgbWl0IEFu emFobCBUYWdlIG1pdCBGw7xocnVuZ3MtVW50ZXJiZXNldHp1bmcgaW4gZGVuIG7DpGNoc3RlbiA0 IFdvY2hlbiArIFNwcnVuZyB6dW0gZXJzdGVuIFRhZycgfSwKICAgIGZhaXJuZXNzQW56ZWlnZTog eyBsYWJlbDogJ0ZhaXJuZXNzLUFuemVpZ2UnLCBiZXNjaHJlaWJ1bmc6ICdXRS0vRmVpZXJ0YWdz LUZhaXJuZXNzIGluIGRlciBTdGF0aXN0aWsnIH0sCiAgICAvLyBtdXN0ZXJBbmFseXNlICsgYWJ3 ZXNlbmhlaXRLYWNoZWxuIGFtIDIwMjYtMDUtMTkgZW50ZmVybnQg4oCUIGRpZSB6dWdlaG9lcmln ZW4KICAgIC8vIFBhbmVscyBnaWJ0IGVzIGltIGFrdHVlbGxlbiBTdGF0aXN0aWstTGF5b3V0IG5p Y2h0IG1laHIgKE11c3RlciBpc3QgaW4gZGllCiAgICAvLyBQcm9zYS1EZXRhaWxhbmFseXNlIGF1 ZmdlZ2FuZ2VuLCBBYndlc2VuaGVpdCBpc3QgZWluIEthdGVnb3JpZS1GaWx0ZXIgaW4KICAgIC8v IGRlbiBTY2hpY2h0dmVydGVpbHVuZ3MtQmFsa2VuKS4gZmVhdHVyZUlzdEFrdGl2KCkgd3VyZGUg ZGFmdWVyIG9obmVoaW4KICAgIC8vIG5pZSBhdWZnZXJ1ZmVuLCBkZXIgVG9nZ2xlIHdhciBEZWFk LUxldHRlci1VSS4KICAgIGRldGFpbFRhYmVsbGU6IHsgbGFiZWw6ICdEZXRhaWwtVGFiZWxsZScs IGJlc2NocmVpYnVuZzogJ0F1c2tsYXBwYmFyZSDDnGJlcnNpY2h0c3RhYmVsbGUgcHJvIFBlcnNv bicgfSwKICAgIHBlcnNvbmFsSW5saW5lRWRpdDogeyBsYWJlbDogJ1BlcnNvbmFsOiBJbmxpbmUt RWRpdCcsIGJlc2NocmVpYnVuZzogJ0RvcHBlbGtsaWNrIGF1ZiBUYWJlbGxlbi1aZWxsZW4gZXJs YXVidCBkaXJla3RlcyBCZWFyYmVpdGVuIChOYW1lLCBWb3JuYW1lLCBEaWVuc3RudW1tZXIsIE9F LCBUZWxlZm9uKScgfSwKICAgIGVtYWlsQXV0b1N1ZmZpeDogeyBsYWJlbDogJ0UtTWFpbDogQXV0 by1TdWZmaXgnLCBiZXNjaHJlaWJ1bmc6ICdXZW5uIGJlaW0gU3BlaWNoZXJuIGVpbmVyIEUtTWFp bCBrZWluICJAIiBlbnRoYWx0ZW4gaXN0LCB3aXJkIGRpZSBEb21haW4gYXVzIGRlbiBFaW5zdGVs bHVuZ2VuIGF1dG9tYXRpc2NoIGFuZ2Vow6RuZ3QnIH0sCiAgICBrb2xsZWdlbkhlcnZvcmhlYmVu OiB7IGxhYmVsOiAnUGVyc29uLUVkaXQ6IERpcmVrdGUgS29sbGVnZW4gaGVydm9yaGViZW4nLCBi ZXNjaHJlaWJ1bmc6ICdJbSBFZGl0aWVyLUJlcmVjaHRpZ3VuZ3MtQmxvY2sgd2VyZGVuIFBlcnNv bmVuIG1pdCBnbGVpY2hlciBPRStEaWVuc3RncnVwcGUgYWxzICJEaXJla3RlIEtvbGxlZ2VuIiBh Ymdlc2V0enQnIH0sCiAgICBwYXBpZXJrb3JiVUk6IHsgbGFiZWw6ICdQZXJzb25hbHZlcndhbHR1 bmc6IFBhcGllcmtvcmItVUknLCBiZXNjaHJlaWJ1bmc6ICdGaWx0ZXIgIlBhcGllcmtvcmIgZWlu YmxlbmRlbiIgKyBMZWJlbnN6eWtsdXMtQnV0dG9ucyBpbSBQZXJzb24tTW9kYWwuIFNjaGVtYS1I b29rcyAoZ2Vsb2VzY2h0QW0pIGJsZWliZW4gdW5hYmjDpG5naWcgdm9tIFRvZ2dsZSBha3Rpdicg fSwKICAgIHBlclBlcnNvblNpY2h0YmFya2VpdDogeyBsYWJlbDogJ1Byby1QZXJzb24tU2ljaHRi YXJrZWl0JywgYmVzY2hyZWlidW5nOiAnSW0gUGVyc29uLU1vZGFsIChTVS1vbmx5KSBsYXNzZW4g c2ljaCBMb2didWNoLSB1bmQgU3RhdGlzdGlrLVNpY2h0YmFya2VpdCBwcm8gUGVyc29uIMO8YmVy c2NocmVpYmVuIChTdGFuZGFyZC9TaWNodGJhci9WZXJzdGVja3QpJyB9LAogICAgc3RhdGlzdGlr QW5vbnltOiB7IGxhYmVsOiAnU3RhdGlzdGlrOiBBbm9ueW1pc2llcnVuZycsIGJlc2NocmVpYnVu ZzogJ1BlcnNvbmVuIHdlcmRlbiBpbiBkZXIgU3RhdGlzdGlrIGFscyAiUGVyc29uIDEsIFBlcnNv biAyIOKApiIgc3RhdHQgbWl0IEtsYXJuYW1lbiBhbmdlemVpZ3QnIH0sCiAgICBzb25kZXJ0ZXJt aW5lV2ljaHRpZzogeyBsYWJlbDogJ1NvbmRlcnRlcm1pbmU6IFdpY2h0aWctRmxhZycsIGJlc2No cmVpYnVuZzogJ05ldWUgU3BhbHRlICJNYXJraWVydW5nIiBpbSBTb25kZXJ0ZXJtaW5lLVRhYjsg bWFya2llcnRlIFRhZ2UgYmVrb21tZW4gZWluZW4gYm9yZGVhdXhyb3RlbiBSYWhtZW4gaW0gR3Jp ZCcgfSwKICAgIGZlaWVydGFnZVdpY2h0aWdCZXRvbmVuOiB7IGxhYmVsOiAnRmVpZXJ0YWdlOiDi gJ5XaWNodGlnIi1IZXJ2b3JoZWJ1bmcnLCBiZXNjaHJlaWJ1bmc6ICdQcm8gRmVpZXJ0YWcgaW0g QWRtaW4tS2FsZW5kZXIgYWxzIOKAnldpY2h0aWciIG1hcmtpZXJ0ZSBUYWdlIGJla29tbWVuIGVp bmUgZ29sZGVuZSBCb2RlbmxpbmllIGltIEtvcGZiZXJlaWNoLiBBVVMgPSBXaWNodGlnLU1hcmtp ZXJ1bmcgd2lyZCBpZ25vcmllcnQsIGFsbGUgRmVpZXJ0YWdlIGVyc2NoZWluZW4gZWluaGVpdGxp Y2gnIH0sCn07CgpmdW5jdGlvbiBmZWF0dXJlc1JlbmRlcm4oKSB7CiAgICB2YXIgZmVhdHVyZXMg PSBaLmFkbWluLmZlYXR1cmVzIHx8IHt9OwogICAgdmFyIGh0bWwgPSAnPGRpdiBzdHlsZT0iZGlz cGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O21heC13aWR0aDo2MDBweCI+ JzsKCiAgICBPYmplY3Qua2V5cyhmZWF0dXJlTGFiZWxzKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkg ewogICAgICAgIHZhciBmbCA9IGZlYXR1cmVMYWJlbHNba2V5XTsKICAgICAgICB2YXIgYWt0aXYg PSBmZWF0dXJlSXN0QWt0aXYoa2V5KTsKICAgICAgICBodG1sICs9ICc8bGFiZWwgY2xhc3M9ImZl YXR1cmUtdG9nZ2xlLXplaWxlIiBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRl cjtnYXA6MTJweDtwYWRkaW5nOjEwcHggMTRweDsnICsKICAgICAgICAgICAgJ2JhY2tncm91bmQ6 dmFyKC0tYmctY2FyZCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpO2JvcmRl ci1yYWRpdXM6OHB4O2N1cnNvcjpwb2ludGVyIj4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJjaGVja2JveCIgY2xhc3M9ImZlYXR1cmUtY2hlY2tib3giIGRhdGEtZmVhdHVyZT0iJyArIGtl eSArICciJyArIChha3RpdiA/ICcgY2hlY2tlZCcgOiAnJykgKwogICAgICAgICAgICAnIHN0eWxl PSJ3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2FjY2VudC1jb2xvcjp2YXIoLS1mYXJiZS1lcmZvbGcp O2N1cnNvcjpwb2ludGVyIj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZsZXg6MSI+PGRp diBzdHlsZT0iZm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQt aGVhZGluZykiPicgKwogICAgICAgICAgICBlc2NhcGVIVE1MKGZsLmxhYmVsKSArICc8L2Rpdj4n ICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRl eHQtbXV0ZWQpIj4nICsgZXNjYXBlSFRNTChmbC5iZXNjaHJlaWJ1bmcpICsgJzwvZGl2PjwvZGl2 PicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImZlYXR1cmUtc3RhdHVzIiBzdHlsZT0iZm9u dC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6M3B4IDhweDtib3JkZXItcmFkaXVz OjRweDsnICsKICAgICAgICAgICAgKGFrdGl2ID8gJ2JhY2tncm91bmQ6cmdiYSgzOSwxMzcsMTA5 LDAuMTIpO2NvbG9yOnZhcigtLWZhcmJlLWVyZm9sZykiPkFOJyA6ICdiYWNrZ3JvdW5kOnJnYmEo MTc2LDU4LDQ2LDAuMSk7Y29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKSI+QVVTJykgKwogICAgICAg ICAgICAnPC9zcGFuPjwvbGFiZWw+JzsKICAgIH0pOwoKICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmVhdHVyZXMtaW5oYWx0JykuaW5uZXJIVE1MID0g aHRtbDsKfQoKdmFyIGZlYXR1cmVEZWZhdWx0cyA9IHsKICAgIGZhaXJuZXNzQW56ZWlnZTogZmFs c2UsCiAgICAvLyBJbmxpbmUtRWRpdCArIFBhcGllcmtvcmItVUkgYWIgMjAyNi0wNS0xOSBzdGFu ZGFyZG1hZXNzaWcgQU4sIGRhbWl0CiAgICAvLyBTdXBlclVzZXIgZGlyZWt0IGF1cyBkZXIgUGVy c29uYWx2ZXJ3YWx0dW5nIGhlcmF1cyBsb2VzY2hlbiB1bmQKICAgIC8vIEZlbGRlciBvaG5lIE1v ZGFsLVVtd2VnIGFlbmRlcm4ga29lbm5lbiDigJQgdm9yaGVyIG11c3N0ZSBkZXIgVG9nZ2xlCiAg ICAvLyBleHBsaXppdCB1bWdlbGVndCB3ZXJkZW4sIHdhcyBpbSBMaXZlLVRlc3QgaXJyaXRpZXJ0 ZS4KICAgIHBlcnNvbmFsSW5saW5lRWRpdDogdHJ1ZSwKICAgIGVtYWlsQXV0b1N1ZmZpeDogZmFs c2UsCiAgICBrb2xsZWdlbkhlcnZvcmhlYmVuOiBmYWxzZSwKICAgIHBhcGllcmtvcmJVSTogdHJ1 ZSwKICAgIHBlclBlcnNvblNpY2h0YmFya2VpdDogZmFsc2UsCiAgICBzdGF0aXN0aWtBbm9ueW06 IGZhbHNlLAogICAgc29uZGVydGVybWluZVdpY2h0aWc6IGZhbHNlLAogICAgZmVpZXJ0YWdlV2lj aHRpZ0JldG9uZW46IHRydWUKfTsKZnVuY3Rpb24gZmVhdHVyZUlzdEFrdGl2KGtleSkgewogICAg dmFyIGYgPSBaLmFkbWluLmZlYXR1cmVzIHx8IHt9OwogICAgaWYgKGtleSBpbiBmKSByZXR1cm4g ISFmW2tleV07CiAgICByZXR1cm4gZmVhdHVyZURlZmF1bHRzW2tleV0gIT09IHVuZGVmaW5lZCA/ IGZlYXR1cmVEZWZhdWx0c1trZXldIDogdHJ1ZTsKfQoKLy8gPT09PT0gQWRtaW46IFN1cGVyVXNl ci1WZXJ3YWx0dW5nICsgRmFjaGF1ZnNpY2h0ID09PT09Ci8vIFBoYXNlIDktQiBDMTogbmFjaCBW STMvanMvYWRtaW5fcm9sbGVuLmpzIGF1c2dlbGFnZXJ0IChGdW5rdGlvbmVuCi8vIHN1cGVyVXNl clJlbmRlcm4vLUF1c1RhYmVsbGVMZXNlbiwgZmFjaGF1ZnNpY2h0UmVuZGVybiB1bmQgYWxsZQov LyBTdWItU2ljaHQtL1BsYW4tL0RldGFpbC1Nb2RhbC1IZWxmZXIgcGx1cyBkaWUgRkFDSEFVRlNJ Q0hUXyotCi8vIEtvbnN0YW50ZW4pLiBhcHAuanMgaW1wb3J0aWVydCBhYiBQaGFzZSA5LUIgQzUg ZGlyZWt0IGF1cwovLyBhZG1pbl9yb2xsZW4uanMuIHN0YXRpc3Rpay5qcyBudXR6dCBudXIgZmVh dHVyZUlzdEFrdGl2LAovLyBkYXMgaW0gQm9vdHN0cmFwLUJlcmVpY2ggdm9uIGFkbWluLmpzIHZl cmJsZWlidC4KCi8vID09PT09IFplbnRyYWxlciBEaXJ0eS1UcmFja2VyID09PT09Ci8vIERJUlRZ LVJlZ2lzdHJ5ICsgZGlydHlSZWdpc3RyaWVyZS9kaXJ0eVNldHplbi9kaXJ0eUlzdC9kaXJ0eUtl bm50LwovLyBkaXJ0eUFrdGl2ZS9kaXJ0eVBydWVmZW4vZGlydHlTcGVpY2hlcm4gLT4ganMvdWkv ZGlhbG9nLmpzCi8vCi8vIFRhYi1zcGV6aWZpc2NoZSBSZWdpc3RyYXRpb25lbiArIERPTS1FdmVu dC1MaXN0ZW5lciBibGVpYmVuIGhpZXIKLy8gKHdhbmRlcnQgaW4gUGhhc2UgOCBuYWNoIGFkbWlu L2FkbWluLmpzIHp1c2FtbWVuIG1pdCBkZW4gQWRtaW4tVGFicykuCgovLyBBYndhZXJ0c2tvbXBh dGlibGUgRmFjaGF1ZnNpY2h0LUFkYXB0ZXIgKGZhY2hhdWZzaWNodERpcnR5U2V0emVuLwovLyBm YWNoYXVmc2ljaHRJc3REaXJ0eSkgbGViZW4gc2VpdCBQaGFzZSA5LUIgQzEgaW4gYWRtaW5fcm9s bGVuLmpzLgoKLy8gWmVudHJhbGUgUmVnaXN0cmllcnVuZyBhbGxlciBkaXJ0eS1mYWVoaWdlbiBB ZG1pbi1TZWt0aW9uZW4gKyBnbG9iYWxlcgovLyBJbnB1dC9DaGFuZ2UtTGlzdGVuZXIuIFdpcmQg ZWlubWFsaWcgYXVzIGV2ZW50TGlzdGVuZXJFaW5yaWNodGVuCi8vIGF1ZmdlcnVmZW4uIE1hcHBp bmcgdm9uIERPTS1FbGVtZW50IHp1IERpcnR5LUtleToKLy8gICAxLiBTZWN0aW9uLmlkICJhZG1p bi1zZWt0aW9uLTxrZXk+IiAgIChmZWllcnRhZ2UsIGZlcmllbiwgc3VwZXJ1c2VyLCBmYWNoYXVm c2ljaHQsIOKApikKLy8gICAyLiBUYWJlbGxlLmlkICI8a2V5Pi10YWJlbGxlIiAgICAgICAgKEZh bGxiYWNrIGZ1ZXIgVGFicyBvaG5lIFNla3Rpb25lbikKLy8gICAzLiBUYWIuaWQgImFkbWluLXRh Yi08a2V5PiIgICAgICAgICAgKGdlbmVyZWxsZXIgRmFsbGJhY2spCi8vIFByYWdtYXRpc2NoZXIg TGlzdGVuLURpZmYgZnVlciBjaGFuZ2VTdW1tYXJ5LiBWZXJnbGVpY2h0IGFsdGUgKFNlcnZlci0p TGlzdGUKLy8gbWl0IG5ldWVyIChET00tKUxpc3RlIGF1ZiBJZGVudGl0YWV0IHZpYSBpZEZlbGQg KyBGZWxkd2VydC1BZW5kZXJ1bmdlbi4KLy8gTGllZmVydCBtYXggbWF4WmVpbGVuIEJlc2NocmVp YnVuZ2VuICsgZ2dmLiAiKCtOIHdlaXRlcmUpIi4KZnVuY3Rpb24gYWRtaW5MaXN0ZURpZmYoYWx0 TGlzdGUsIG5ldUxpc3RlLCBpZEZlbGQsIGxhYmVsRm4sIG1heFplaWxlbikgewogICAgYWx0TGlz dGUgPSBhbHRMaXN0ZSB8fCBbXTsgbmV1TGlzdGUgPSBuZXVMaXN0ZSB8fCBbXTsgbWF4WmVpbGVu ID0gbWF4WmVpbGVuIHx8IDY7CiAgICB2YXIgYWx0TWFwID0ge307CiAgICBhbHRMaXN0ZS5mb3JF YWNoKGZ1bmN0aW9uKGl0LCBpKSB7IGFsdE1hcFtTdHJpbmcoaXRbaWRGZWxkXSAhPSBudWxsID8g aXRbaWRGZWxkXSA6ICdAJyArIGkpXSA9IGl0OyB9KTsKICAgIHZhciBuZXVNYXAgPSB7fTsKICAg IG5ldUxpc3RlLmZvckVhY2goZnVuY3Rpb24oaXQsIGkpIHsgbmV1TWFwW1N0cmluZyhpdFtpZEZl bGRdICE9IG51bGwgPyBpdFtpZEZlbGRdIDogJ0AnICsgaSldID0gaXQ7IH0pOwogICAgdmFyIHpl aWxlbiA9IFtdOwogICAgT2JqZWN0LmtleXMobmV1TWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsK ICAgICAgICB2YXIgbiA9IG5ldU1hcFtrXTsgdmFyIGEgPSBhbHRNYXBba107CiAgICAgICAgaWYg KCFhKSB7IHplaWxlbi5wdXNoKCdOZXU6ICcgKyBsYWJlbEZuKG4pKTsgcmV0dXJuOyB9CiAgICAg ICAgdmFyIGRpZmZGZWxkZXIgPSBbXTsKICAgICAgICBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1 bmN0aW9uKGYpIHsKICAgICAgICAgICAgaWYgKGYgPT09IGlkRmVsZCkgcmV0dXJuOwogICAgICAg ICAgICB2YXIgYXYgPSBhW2ZdOyB2YXIgbnYgPSBuW2ZdOwogICAgICAgICAgICAvLyBUaWVmZXIg VmVyZ2xlaWNoIG51ciBmdWVyIHByaW1pdGl2ZSBXZXJ0ZSAvIEpTT04tdmVyZ2xlaWNoIGZ1ZXIg T2JqZWN0cwogICAgICAgICAgICB2YXIgdW50ZXJzY2hpZWQgPSAodHlwZW9mIGF2ID09PSAnb2Jq ZWN0JyB8fCB0eXBlb2YgbnYgPT09ICdvYmplY3QnKQogICAgICAgICAgICAgICAgPyBKU09OLnN0 cmluZ2lmeShhdikgIT09IEpTT04uc3RyaW5naWZ5KG52KQogICAgICAgICAgICAgICAgOiAoYXYg fHwgJycpICE9PSAobnYgfHwgJycpOwogICAgICAgICAgICBpZiAodW50ZXJzY2hpZWQpIGRpZmZG ZWxkZXIucHVzaChmKTsKICAgICAgICB9KTsKICAgICAgICBpZiAoZGlmZkZlbGRlci5sZW5ndGgp IHplaWxlbi5wdXNoKGxhYmVsRm4obikgKyAnIOKAlCAnICsgZGlmZkZlbGRlci5qb2luKCcsICcp ICsgJyBnZWFlbmRlcnQnKTsKICAgIH0pOwogICAgT2JqZWN0LmtleXMoYWx0TWFwKS5mb3JFYWNo KGZ1bmN0aW9uKGspIHsKICAgICAgICBpZiAoIW5ldU1hcFtrXSkgemVpbGVuLnB1c2goJ0dlbG9l c2NodDogJyArIGxhYmVsRm4oYWx0TWFwW2tdKSk7CiAgICB9KTsKICAgIGlmICh6ZWlsZW4ubGVu Z3RoID4gbWF4WmVpbGVuKSB7CiAgICAgICAgdmFyIHJlc3QgPSB6ZWlsZW4ubGVuZ3RoIC0gbWF4 WmVpbGVuOwogICAgICAgIHplaWxlbiA9IHplaWxlbi5zbGljZSgwLCBtYXhaZWlsZW4pOwogICAg ICAgIHplaWxlbi5wdXNoKCfigKYgdW5kICcgKyByZXN0ICsgJyB3ZWl0ZXJlIEFlbmRlcnVuZycg KyAocmVzdCA9PT0gMSA/ICcnIDogJ2VuJykpOwogICAgfQogICAgcmV0dXJuIHplaWxlbjsKfQoK ZnVuY3Rpb24gZGlydHlUcmFja2VyRWlucmljaHRlbigpIHsKICAgIC8vIGNoYW5nZVN1bW1hcnkt RnVua3Rpb25lbiBsZXNlbiBha3R1ZWxsZW4gRE9NLVN0YW5kIHZpYSBkaWUgamV3ZWlsaWdlbgog ICAgLy8gKkF1c1RhYmVsbGVMZXNlbi1SZWFkZXIgdW5kIHZlcmdsZWljaGVuIG1pdCBaLmFkbWlu LlggKFNlcnZlci1TdGFuZCkuCiAgICAvLyBXZW5uIGVpbiBSZWFkZXIgbm9jaCBuaWNodCBnZXJl bmRlcnQgaXN0IChUYWIgbm9jaCBuaWUgZ2VvZWZmbmV0KSwKICAgIC8vIHdpcmQgdHJ5L2NhdGNo IGltIGRpcnR5UHJ1ZWZlbi1EaWFsb2cgZ2VmYW5nZW4gdW5kIGRlciBUYWIgbnVyIG1pdAogICAg Ly8gTGFiZWwgZ2V6ZWlndC4KICAgIGRpcnR5UmVnaXN0cmllcmUoJ2ZhY2hhdWZzaWNodCcsICAg ICB7IGxhYmVsOiAnRmFjaGF1ZnNpY2h0JywgICAgICAgYnRuSWQ6ICdidG4tZmFjaGF1ZnNpY2h0 LXNwZWljaGVybicsIGhpbnRJZDogJ2ZhY2hhdWZzaWNodC1kaXJ0eS1oaW53ZWlzJyB9KTsKICAg IGRpcnR5UmVnaXN0cmllcmUoJ2RpcmVrdGlvbnNsZWl0dW5nJyx7IGxhYmVsOiAnRGlyZWt0aW9u c2xlaXR1bmcnLCAgYnRuSWQ6ICdidG4tZGlyZWt0aW9uc2xlaXR1bmctc3BlaWNoZXJuJywgaGlu dElkOiAnZGlyZWt0aW9uc2xlaXR1bmctZGlydHktaGlud2VpcycgfSk7CiAgICBkaXJ0eVJlZ2lz dHJpZXJlKCdmdWVocnVuZ3NzdGVsbGUnLCAgeyBsYWJlbDogJ0bDvGhydW5nc3N0ZWxsZScsICAg ICBidG5JZDogJ2J0bi1mdWVocnVuZ3NzdGVsbGUtc3BlaWNoZXJuJywgIGhpbnRJZDogJ2Z1ZWhy dW5nc3N0ZWxsZS1kaXJ0eS1oaW53ZWlzJyB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ3N1cGVy dXNlcicsICAgICAgeyBsYWJlbDogJ1N1cGVyVXNlci1MaXN0ZScsICAgIGJ0bklkOiAnYnRuLXN1 cGVydXNlci1zcGVpY2hlcm4nIH0pOwogICAgLy8gSGVscGVyLCBkZXIgZGVuIGFrdHVlbGxlbiBE aWVuc3RncnVwcGVuLURPTS1TdGFuZCBhbHMgQXJyYXkgdm9uCiAgICAvLyBQbGFpbi1PYmplY3Rz IGxpZXN0LiBXaWVkZXJ2ZXJ3ZW5kZXQgZnVlciBjaGFuZ2VTdW1tYXJ5LCBzbmFwc2hvdEZuLgog ICAgZnVuY3Rpb24gZ3J1cHBlbkF1c0RPTUxlc2VuKCkgewogICAgICAgIHZhciBuZXUgPSBbXTsK ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3J1cHBlLWt1ZXJ6ZWwtaW5wdXQn KS5mb3JFYWNoKGZ1bmN0aW9uKGlucCkgewogICAgICAgICAgICB2YXIgaWR4ID0gcGFyc2VJbnQo aW5wLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKSk7CiAgICAgICAgICAgIHZhciBpbnBsQ2IgID0g ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmdydXBwZS1pbnBsYW51bmctaW5wdXRbZGF0YS1pZHg9 IicgKyBpZHggKyAnIl0nKTsKICAgICAgICAgICAgdmFyIGRhcmZBcENiID0gZG9jdW1lbnQucXVl cnlTZWxlY3RvcignLmdydXBwZS1kYXJmYXAtaW5wdXRbZGF0YS1pZHg9IicgKyBpZHggKyAnIl0n KTsKICAgICAgICAgICAgbmV1LnB1c2goewogICAgICAgICAgICAgICAgbmFtZTogaW5wLnZhbHVl LAogICAgICAgICAgICAgICAgX2FsdEt1ZXJ6ZWw6IGlucC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYWx0 JykgfHwgJycsCiAgICAgICAgICAgICAgICBiZXplaWNobnVuZzogKGRvY3VtZW50LnF1ZXJ5U2Vs ZWN0b3IoJy5ncnVwcGUtYmV6LWlucHV0W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJykgfHwge30p LnZhbHVlIHx8ICcnLAogICAgICAgICAgICAgICAgaGludGVyZ3J1bmQ6IChkb2N1bWVudC5xdWVy eVNlbGVjdG9yKCcuZ3J1cHBlLWhnLWlucHV0W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJykgfHwg e30pLnZhbHVlIHx8ICcnLAogICAgICAgICAgICAgICAgc2NocmlmdDogICAgIChkb2N1bWVudC5x dWVyeVNlbGVjdG9yKCcuZ3J1cHBlLXNmLWlucHV0W2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJykg fHwge30pLnZhbHVlIHx8ICcnLAogICAgICAgICAgICAgICAgLy8gRGVmYXVsdDogc2ljaHRiYXIu IE51ciBleHBsaXppdCBhdWYgZmFsc2Ugd2VubiBDaGVja2JveCBhYmdld2FlaGx0LgogICAgICAg ICAgICAgICAgaW5QbGFudW5nOiAgIGlucGxDYiA/ICEhaW5wbENiLmNoZWNrZWQgOiB0cnVlLAog ICAgICAgICAgICAgICAgLy8gRGVmYXVsdDogZXJsYXVidC4gUGVuZGFudCB6dXIgaW5QbGFudW5n LUxvZ2lrLgogICAgICAgICAgICAgICAgZGFyZkFuc3ByZWNocGFydG5lcjogZGFyZkFwQ2IgPyAh IWRhcmZBcENiLmNoZWNrZWQgOiB0cnVlCiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAg ICAgIHJldHVybiBuZXU7CiAgICB9CiAgICBkaXJ0eVJlZ2lzdHJpZXJlKCdncnVwcGVuJywgICAg ICAgIHsKICAgICAgICBsYWJlbDogJ0RpZW5zdGdydXBwZW4nLAogICAgICAgIGJ0bklkOiAnYnRu LWdydXBwZW4tc3BlaWNoZXJuJywKICAgICAgICBjaGFuZ2VTdW1tYXJ5OiBmdW5jdGlvbigpIHsK ICAgICAgICAgICAgdmFyIG5ldSA9IGdydXBwZW5BdXNET01MZXNlbigpLm1hcChmdW5jdGlvbihn KSB7IHJldHVybiB7IF9pZDogZy5fYWx0S3VlcnplbCB8fCAoJ0BuZXUnICsgZy5uYW1lKSwgbmFt ZTogZy5uYW1lLCBiZXplaWNobnVuZzogZy5iZXplaWNobnVuZywgaGludGVyZ3J1bmQ6IGcuaGlu dGVyZ3J1bmQsIHNjaHJpZnQ6IGcuc2NocmlmdCwgaW5QbGFudW5nOiBnLmluUGxhbnVuZyAhPT0g ZmFsc2UsIGRhcmZBbnNwcmVjaHBhcnRuZXI6IGcuZGFyZkFuc3ByZWNocGFydG5lciAhPT0gZmFs c2UgfTsgfSk7CiAgICAgICAgICAgIHZhciBhbHQgPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5t YXAoZnVuY3Rpb24oZykgeyByZXR1cm4geyBfaWQ6IGcubmFtZSwgbmFtZTogZy5uYW1lLCBiZXpl aWNobnVuZzogZy5iZXplaWNobnVuZyB8fCAnJywgaGludGVyZ3J1bmQ6IGcuaGludGVyZ3J1bmQg fHwgJycsIHNjaHJpZnQ6IGcuc2NocmlmdCB8fCAnJywgaW5QbGFudW5nOiBnLmluUGxhbnVuZyAh PT0gZmFsc2UsIGRhcmZBbnNwcmVjaHBhcnRuZXI6IGcuZGFyZkFuc3ByZWNocGFydG5lciAhPT0g ZmFsc2UgfTsgfSk7CiAgICAgICAgICAgIHJldHVybiBhZG1pbkxpc3RlRGlmZihhbHQsIG5ldSwg J19pZCcsIGZ1bmN0aW9uKGcpIHsgcmV0dXJuICdHcnVwcGUgJyArIChnLm5hbWUgfHwgJyhsZWVy KScpOyB9KTsKICAgICAgICB9LAogICAgICAgIC8vIEF1dG8tU2F2ZTogc25hcHNob3RGbiBsaWVm ZXJ0IGRlbiBET00tU3RhbmQgenVtIFBlcnNpc3RpZXJlbiBhbHMKICAgICAgICAvLyBEcmFmdDsg cmVzdG9yZUZuIHNjaHJlaWJ0IGVpbmVuIERyYWZ0IHdpZWRlciBpbiBkZW4gU3RhdGUgKyBSZW5k ZXIuCiAgICAgICAgZHJhZnRLZXk6ICdncnVwcGVuJywKICAgICAgICBzbmFwc2hvdEZuOiBmdW5j dGlvbigpIHsgcmV0dXJuIGdydXBwZW5BdXNET01MZXNlbigpOyB9LAogICAgICAgIHJlc3RvcmVG bjogZnVuY3Rpb24oZGF0ZW4pIHsKICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGVu KSkgcmV0dXJuOwogICAgICAgICAgICBaLmFkbWluLmdydXBwZW4gPSBkYXRlbi5tYXAoZnVuY3Rp b24oZykgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZy5uYW1lLCBiZXplaWNobnVu ZzogZy5iZXplaWNobnVuZywgaGludGVyZ3J1bmQ6IGcuaGludGVyZ3J1bmQsIHNjaHJpZnQ6IGcu c2NocmlmdCwgaW5QbGFudW5nOiBnLmluUGxhbnVuZyAhPT0gZmFsc2UsIGRhcmZBbnNwcmVjaHBh cnRuZXI6IGcuZGFyZkFuc3ByZWNocGFydG5lciAhPT0gZmFsc2UgfTsKICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgIGdydXBwZW5UYWJlbGxlUmVuZGVybigpOwogICAgICAgIH0KICAgIH0pOwog ICAgZGlydHlSZWdpc3RyaWVyZSgnZmVpZXJ0YWdlJywgICAgICB7IGxhYmVsOiAnRmVpZXJ0YWdl JywgICAgICAgICAgYnRuSWQ6ICdidG4tZmVpZXJ0YWdlLXNwZWljaGVybicgfSk7CiAgICBkaXJ0 eVJlZ2lzdHJpZXJlKCdmZXJpZW4nLCAgICAgICAgIHsKICAgICAgICBsYWJlbDogJ0Zlcmllbics CiAgICAgICAgYnRuSWQ6ICdidG4tZmVyaWVuLXNwZWljaGVybicsCiAgICAgICAgY2hhbmdlU3Vt bWFyeTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBuZXUgPSBmZXJpZW5BdXNUYWJlbGxl TGVzZW4oKS5tYXAoZnVuY3Rpb24oZiwgaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsgX2lk OiBmLm5hbWUgfHwgZi52b24gfHwgKCdAJyArIGkpLCB2b246IGYudm9uIHx8ICcnLCBiaXM6IGYu YmlzIHx8ICcnLCBuYW1lOiBmLm5hbWUgfHwgJycgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgIHZhciBhbHQgPSAoWi5hZG1pbi5mZXJpZW4gfHwgW10pLm1hcChmdW5jdGlvbihmLCBpKSB7 IHJldHVybiB7IF9pZDogZi5uYW1lIHx8IGYudm9uIHx8ICgnQCcgKyBpKSwgdm9uOiBmLnZvbiB8 fCAnJywgYmlzOiBmLmJpcyB8fCAnJywgbmFtZTogZi5uYW1lIHx8ICcnIH07IH0pOwogICAgICAg ICAgICByZXR1cm4gYWRtaW5MaXN0ZURpZmYoYWx0LCBuZXUsICdfaWQnLCBmdW5jdGlvbihmKSB7 IHJldHVybiBmLm5hbWUgfHwgJyh1bmJlbmFubnQpJzsgfSk7CiAgICAgICAgfSwKICAgICAgICBk cmFmdEtleTogJ2ZlcmllbicsCiAgICAgICAgc25hcHNob3RGbjogZnVuY3Rpb24oKSB7IHJldHVy biBmZXJpZW5BdXNUYWJlbGxlTGVzZW4oKTsgfSwKICAgICAgICByZXN0b3JlRm46IGZ1bmN0aW9u KGRhdGVuKSB7CiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRlbikpIHJldHVybjsK ICAgICAgICAgICAgWi5hZG1pbi5mZXJpZW4gPSBkYXRlbjsKICAgICAgICAgICAgZmVyaWVuVGFi ZWxsZVJlbmRlcm4oKTsKICAgICAgICB9CiAgICB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ3N0 YW5kb3J0ZScsICAgICAgewogICAgICAgIGxhYmVsOiAnU3RhbmRvcnRlICYgU2NoaWNodGZvbGdl JywKICAgICAgICBidG5JZDogJ2J0bi1zdGFuZG9ydGUtc3BlaWNoZXJuJywKICAgICAgICBjaGFu Z2VTdW1tYXJ5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gc3RhbmRvcnRlQXVzVGFiZWxs ZUxlc2VuIGxpZWZlcnQga29tcGxldHRlIFN0YW5kb3J0LU9iamVrdGU7CiAgICAgICAgICAgIC8v IHdpciByZWR1emllcmVuIGF1ZiBkaWUgZnVlciBkZW4gVXNlciBzaWNodGJhcmVuIEZlbGRlci4K ICAgICAgICAgICAgdmFyIG5ldSA9ICh0eXBlb2Ygc3RhbmRvcnRlQXVzVGFiZWxsZUxlc2VuID09 PSAnZnVuY3Rpb24nID8gc3RhbmRvcnRlQXVzVGFiZWxsZUxlc2VuKCkgOiBbXSkKICAgICAgICAg ICAgICAgIC5tYXAoZnVuY3Rpb24ocykgeyByZXR1cm4geyBfaWQ6IHMua3VlcnplbCB8fCBzLm5h bWUsIG5hbWU6IHMubmFtZSB8fCAnJywga3VlcnplbDogcy5rdWVyemVsIHx8ICcnLCBpc3RQb29s OiAhIXMuaXN0UG9vbCB9OyB9KTsKICAgICAgICAgICAgdmFyIGFsdCA9IChaLmFkbWluLnN0YW5k b3J0ZSB8fCBbXSkubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHsgX2lkOiBzLmt1ZXJ6ZWwgfHwg cy5uYW1lLCBuYW1lOiBzLm5hbWUgfHwgJycsIGt1ZXJ6ZWw6IHMua3VlcnplbCB8fCAnJywgaXN0 UG9vbDogISFzLmlzdFBvb2wgfTsgfSk7CiAgICAgICAgICAgIHJldHVybiBhZG1pbkxpc3RlRGlm ZihhbHQsIG5ldSwgJ19pZCcsIGZ1bmN0aW9uKHMpIHsgcmV0dXJuICdTdGFuZG9ydCAnICsgKHMu bmFtZSB8fCBzLmt1ZXJ6ZWwgfHwgJyhsZWVyKScpOyB9KTsKICAgICAgICB9LAogICAgICAgIGRy YWZ0S2V5OiAnc3RhbmRvcnRlJywKICAgICAgICBzbmFwc2hvdEZuOiBmdW5jdGlvbigpIHsgcmV0 dXJuIHR5cGVvZiBzdGFuZG9ydGVBdXNUYWJlbGxlTGVzZW4gPT09ICdmdW5jdGlvbicgPyBzdGFu ZG9ydGVBdXNUYWJlbGxlTGVzZW4oKSA6IG51bGw7IH0sCiAgICAgICAgcmVzdG9yZUZuOiBmdW5j dGlvbihkYXRlbikgewogICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0ZW4pKSByZXR1 cm47CiAgICAgICAgICAgIFouYWRtaW4uc3RhbmRvcnRlID0gZGF0ZW47CiAgICAgICAgICAgIHN0 YW5kb3J0ZVJlbmRlcm4oKTsKICAgICAgICB9CiAgICB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUo J2VpbnN0ZWxsdW5nZW4nLCAgeyBsYWJlbDogJ0tvbmZpZ3VyYXRpb24nLCAgICAgIGJ0bklkOiAn YnRuLWVpbnN0ZWxsdW5nZW4tc3BlaWNoZXJuJyB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ2Jl emVpY2hudW5nZW4nLCAgeyBsYWJlbDogJ0Jlc2NocmlmdHVuZ2VuJywgICAgIGJ0bklkOiAnYnRu LWJlemVpY2hudW5nZW4tc3BlaWNoZXJuJyB9KTsKICAgIGRpcnR5UmVnaXN0cmllcmUoJ2luZm9o aWxmZScsICAgICAgeyBsYWJlbDogJ0luZm9ybWF0aW9uICYgSGlsZmUnLCBidG5JZDogJ2J0bi1p bmZvaGlsZmUtc3BlaWNoZXJuJyB9KTsKCiAgICAvLyBEZWJvdW5jZS1UaW1lciBwcm8gVGFiIGZ1 ZXIgQXV0by1TYXZlIGluIGxvY2FsU3RvcmFnZSAoUGhhc2UgOSkuCiAgICAvLyBXaXJkIGJlaW0g ZXJzdGVuIGlucHV0L2NoYW5nZS1FdmVudCBpbiBlaW5lbSBUYWIgZ2VzdGFydGV0OyBuYWNoCiAg ICAvLyAycyBvaG5lIHdlaXRlcmVuIElucHV0IHNjaHJlaWJ0IGVzIGRlbiBTbmFwc2hvdCBpbiB2 aTMudGFiRHJhZnRzLgogICAgdmFyIGRyYWZ0VGltZXIgPSB7fTsKICAgIHZhciBEUkFGVF9ERUJP VU5DRV9NUyA9IDIwMDA7CiAgICBmdW5jdGlvbiBkcmFmdFNjaGVkdWxlU2F2ZSh0YWJLZXkpIHsK ICAgICAgICB2YXIgaW5mbyA9IGRpcnR5RWludHJhZyh0YWJLZXkpOwogICAgICAgIGlmICghaW5m byB8fCAhaW5mby5kcmFmdEtleSB8fCB0eXBlb2YgaW5mby5zbmFwc2hvdEZuICE9PSAnZnVuY3Rp b24nKSByZXR1cm47CiAgICAgICAgaWYgKGRyYWZ0VGltZXJbdGFiS2V5XSkgY2xlYXJUaW1lb3V0 KGRyYWZ0VGltZXJbdGFiS2V5XSk7CiAgICAgICAgZHJhZnRUaW1lclt0YWJLZXldID0gc2V0VGlt ZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgZHJhZnRUaW1lclt0YWJLZXldID0gbnVsbDsK ICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBkYXRlbiA9IGluZm8uc25hcHNo b3RGbigpOwogICAgICAgICAgICAgICAgaWYgKGRhdGVuID09IG51bGwpIHJldHVybjsKICAgICAg ICAgICAgICAgIHRhYkRyYWZ0U3BlaWNoZXJuKGluZm8uZHJhZnRLZXksIGRhdGVuLCAwKTsKICAg ICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgLy8gU25hcHNob3Qga2FubiBm ZWhsc2NobGFnZW4gd2VubiBET00gdW5lcndhcnRldCBhdXNzaWVodCDigJQKICAgICAgICAgICAg ICAgIC8vIGRhbm4gZWJlbiBrZWluIERyYWZ0LiBTZXJ2ZXItU2F2ZSBibGVpYnQgZGVyIHp1dmVy bGFlc3NpZ2UgV2VnLgogICAgICAgICAgICB9CiAgICAgICAgfSwgRFJBRlRfREVCT1VOQ0VfTVMp OwogICAgfQoKICAgIGZ1bmN0aW9uIG1hcmtpZXJlQXVzRXZlbnQoZSkgewogICAgICAgIGlmICgh ZS50YXJnZXQpIHJldHVybjsKICAgICAgICAvLyBJbm5lcmhhbGIgZGVzIEltcGVyc29uYXRpb24t QmFubmVycyBvZGVyIGVpbmVzIE1vZGFsLUluaGFsdHM6CiAgICAgICAgLy8gbmljaHQgaW5zIFRh Yi1EaXJ0eS1UcmFja2luZyBlaW5taXNjaGVuLgogICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0 KCcjaW1wZXJzb25hdGUtYmFubmVyJykpIHJldHVybjsKICAgICAgICBpZiAoZS50YXJnZXQuY2xv c2VzdCgnI21vZGFsLW92ZXJsYXknKSkgcmV0dXJuOwogICAgICAgIHZhciBzZWt0aW9uID0gZS50 YXJnZXQuY2xvc2VzdCgnLmFkbWluLXNla3Rpb24nKTsKICAgICAgICBpZiAoc2VrdGlvbiAmJiBz ZWt0aW9uLmlkKSB7CiAgICAgICAgICAgIHZhciBrMSA9IHNla3Rpb24uaWQucmVwbGFjZSgnYWRt aW4tc2VrdGlvbi0nLCAnJyk7CiAgICAgICAgICAgIGlmIChkaXJ0eUtlbm50KGsxKSkgeyBkaXJ0 eVNldHplbihrMSwgdHJ1ZSk7IGRyYWZ0U2NoZWR1bGVTYXZlKGsxKTsgcmV0dXJuOyB9CiAgICAg ICAgfQogICAgICAgIHZhciB0YWJlbGxlID0gZS50YXJnZXQuY2xvc2VzdCgnLmFkbWluLXRhYmVs bGUnKTsKICAgICAgICBpZiAodGFiZWxsZSAmJiB0YWJlbGxlLmlkKSB7CiAgICAgICAgICAgIHZh ciBrMiA9IHRhYmVsbGUuaWQucmVwbGFjZSgnLXRhYmVsbGUnLCAnJyk7CiAgICAgICAgICAgIGlm IChkaXJ0eUtlbm50KGsyKSkgeyBkaXJ0eVNldHplbihrMiwgdHJ1ZSk7IGRyYWZ0U2NoZWR1bGVT YXZlKGsyKTsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIHZhciB0YWIgPSBlLnRhcmdldC5j bG9zZXN0KCcuYWRtaW4tdGFiJyk7CiAgICAgICAgaWYgKHRhYiAmJiB0YWIuaWQpIHsKICAgICAg ICAgICAgdmFyIGszID0gdGFiLmlkLnJlcGxhY2UoJ2FkbWluLXRhYi0nLCAnJyk7CiAgICAgICAg ICAgIGlmIChkaXJ0eUtlbm50KGszKSkgeyBkaXJ0eVNldHplbihrMywgdHJ1ZSk7IGRyYWZ0U2No ZWR1bGVTYXZlKGszKTsgfQogICAgICAgIH0KICAgIH0KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlz dGVuZXIoJ2lucHV0JywgbWFya2llcmVBdXNFdmVudCk7CiAgICBkb2N1bWVudC5hZGRFdmVudExp c3RlbmVyKCdjaGFuZ2UnLCBtYXJraWVyZUF1c0V2ZW50KTsKCiAgICAvLyBDbGVhbnVwIHZlcmFs dGV0ZXIgRHJhZnRzIGJlaW0gSW5pdCAoc2VsYmVyIDE0LVRhZ2UtVFRMIHdpZSBNb2RhbC1FbnR3 dWVyZmUpLgogICAgdGFiRHJhZnRBdXRvQ2xlYW51cCgpOwoKICAgIC8vIEJyb3dzZXItV2FybnVu ZyBiZWltIFNjaGxpZXNzZW4vUmVsb2FkIGRlciBTZWl0ZSwgd2VubiBpcmdlbmRlaW4KICAgIC8v IEFkbWluLVRhYiBub2NoIGRpcnR5IGlzdC4gRGVyIFRleHQgaXN0IG1pdHRsZXJ3ZWlsZSBicm93 c2Vyc2VpdGlnCiAgICAvLyBzdGFuZGFyZGlzaWVydCAoa2VpbiBDdXN0b20tVGV4dCBtZWhyKSDi gJQgcmVpY2h0IGFscyBIaW53ZWlzLgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9y ZXVubG9hZCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBpZiAoZGlydHlBa3RpdmUoKS5sZW5ndGgg PiAwKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5yZXR1 cm5WYWx1ZSA9ICcnOwogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfSk7Cn0K Ci8vID09PT09IFBoYXNlIDkg4oCUIERyYWZ0LVJlc3RvcmUtQmFubmVyID09PT09Ci8vCi8vIFdp cmQgYmVpbSBPZWZmbmVuIGRlcyBBZG1pbi1CZXJlaWNocyB1bmQgYmVpbSBUYWItV2VjaHNlbCBh dWZnZXJ1ZmVuLgovLyBQcnVlZnQsIG9iIGZ1ZXIgZGVuIGFrdHVlbGwgYWt0aXZlbiBUYWIgZWlu IERyYWZ0IGltIGxvY2FsU3RvcmFnZSBsaWVndCwKLy8gdW5kIGJpZXRldCB2aWEgQmFubmVyIFdp ZWRlcmhlcnN0ZWxsZW4gLyBWZXJ3ZXJmZW4gYW4uIEJhbm5lci1FbGVtZW50Ci8vIGxlYnQgc3Rh dGlzY2ggaW0gaW5kZXguaHRtbCAoI2FkbWluLWRyYWZ0LWJhbm5lcikuIFJlc3RvcmUgcnVmdCBk aWUKLy8gdm9tIFRhYiByZWdpc3RyaWVydGUgcmVzdG9yZUZuIGF1ZiwgZGFuYWNoIERyYWZ0IGxv ZXNjaGVuIChlciBpc3QgamV0enQKLy8gaW0gRE9NIGFrdGl2LCBkaXJ0eS1UcmFja2luZyBuaW1t dCBpaG4gYWIgZGEgbGl2ZSBtaXQpLgpleHBvcnQgZnVuY3Rpb24gYWRtaW5EcmFmdEJhbm5lckFu YmlldGVuKHRhYktleSkgewogICAgdmFyIGJhbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdhZG1pbi1kcmFmdC1iYW5uZXInKTsKICAgIGlmICghYmFubmVyKSByZXR1cm47CiAgICBiYW5u ZXIuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICBpZiAoIXRhYktleSkgcmV0dXJuOwog ICAgdmFyIGluZm8gPSBkaXJ0eUVpbnRyYWcodGFiS2V5KTsKICAgIGlmICghaW5mbyB8fCAhaW5m by5kcmFmdEtleSB8fCB0eXBlb2YgaW5mby5yZXN0b3JlRm4gIT09ICdmdW5jdGlvbicpIHJldHVy bjsKICAgIHZhciBkcmFmdCA9IHRhYkRyYWZ0RnVlcihpbmZvLmRyYWZ0S2V5KTsKICAgIGlmICgh ZHJhZnQpIHJldHVybjsKICAgIHZhciBhbHRlciA9ICcnOwogICAgdHJ5IHsKICAgICAgICB2YXIg ZCA9IG5ldyBEYXRlKGRyYWZ0LnRzKTsKICAgICAgICB2YXIgcGFkID0gZnVuY3Rpb24obikgeyBy ZXR1cm4gKG4gPCAxMCA/ICcwJyA6ICcnKSArIG47IH07CiAgICAgICAgYWx0ZXIgPSBwYWQoZC5n ZXREYXRlKCkpICsgJy4nICsgcGFkKGQuZ2V0TW9udGgoKSArIDEpICsgJy4gJyArIHBhZChkLmdl dEhvdXJzKCkpICsgJzonICsgcGFkKGQuZ2V0TWludXRlcygpKTsKICAgIH0gY2F0Y2ggKGUpIHsg YWx0ZXIgPSAnKFplaXRwdW5rdCB1bmJla2FubnQpJzsgfQogICAgdmFyIHRleHQgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnYWRtaW4tZHJhZnQtYmFubmVyLXRleHQnKTsKICAgIGlmICh0ZXh0 KSB7CiAgICAgICAgdGV4dC5pbm5lckhUTUwgPSAnSW0gVGFiIDxzdHJvbmc+JyArIGVzY2FwZUhU TUwoaW5mby5sYWJlbCkgKwogICAgICAgICAgICAnPC9zdHJvbmc+IGxpZWd0IGVpbiBuaWNodCBh bnMgU3lzdGVtIGdlc2VuZGV0ZXIgU3RhbmQgdm9tIDxzdHJvbmc+JyArCiAgICAgICAgICAgIGVz Y2FwZUhUTUwoYWx0ZXIpICsgJzwvc3Ryb25nPi4gV2llZGVyaGVyc3RlbGxlbiBvZGVyIHZlcndl cmZlbj8nOwogICAgfQogICAgdmFyIGJ0blIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRt aW4tZHJhZnQtcmVzdG9yZScpOwogICAgdmFyIGJ0blYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnYWRtaW4tZHJhZnQtdmVyd2VyZmVuJyk7CiAgICBpZiAoYnRuUikgewogICAgICAgIC8vIE5l dWVyIENsaWNrLUhhbmRsZXIgb2huZSBMaXN0ZW5lci1Ba2t1bXVsYXRpb246IEVsZW1lbnQgY2xv bmVuLgogICAgICAgIHZhciBjbG9uZWRSID0gYnRuUi5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAg YnRuUi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChjbG9uZWRSLCBidG5SKTsKICAgICAgICBjbG9u ZWRSLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRy eSB7IGluZm8ucmVzdG9yZUZuKGRyYWZ0LmRhdGVuKTsgfSBjYXRjaCAoZSkgeyB0b2FzdCgnRHJh ZnQga29ubnRlIG5pY2h0IHdpZWRlcmhlcmdlc3RlbGx0IHdlcmRlbjogJyArIGUubWVzc2FnZSwg J2ZlaGxlcicpOyByZXR1cm47IH0KICAgICAgICAgICAgZGlydHlTZXR6ZW4odGFiS2V5LCB0cnVl KTsKICAgICAgICAgICAgYmFubmVyLmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAg ICAgICB0b2FzdCgnU3RhbmQgd2llZGVyaGVyZ2VzdGVsbHQg4oCUIGJpdHRlIHNwZWljaGVybics ICdpbmZvJyk7CiAgICAgICAgfSk7CiAgICB9CiAgICBpZiAoYnRuVikgewogICAgICAgIHZhciBj bG9uZWRWID0gYnRuVi5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAgYnRuVi5wYXJlbnROb2RlLnJl cGxhY2VDaGlsZChjbG9uZWRWLCBidG5WKTsKICAgICAgICBjbG9uZWRWLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHRhYkRyYWZ0TG9lc2NoZW4oaW5m by5kcmFmdEtleSk7CiAgICAgICAgICAgIGJhbm5lci5jbGFzc0xpc3QuYWRkKCd2ZXJzdGVja3Qn KTsKICAgICAgICB9KTsKICAgIH0KICAgIGJhbm5lci5jbGFzc0xpc3QucmVtb3ZlKCd2ZXJzdGVj a3QnKTsKfQoKLy8gPT09PT0gQWRtaW46IEJlemVpY2hudW5nZW4gJiBMaXN0ZW4gKERpZW5zdGdy YWRlICsgRnVua3Rpb25lbikgPT09PT0KLy8gU3RhbW0tTGlzdGVuLCBkaWUgZnJ1ZWhlcmUgQ29k ZS1Lb25zdGFudGVuIGVyc2V0emVuLiBMaWVnZW4gaW4KLy8gWi5hZG1pbi5kaWVuc3RncmFkZSAo QXJyYXkgb2YgU3RyaW5nKSB1bmQgWi5hZG1pbi5mdW5rdGlvbmVuCi8vIChBcnJheSBvZiB7IGNv ZGUsIHJhbmcgfSkuIEVkaXRvciBpbiBBZG1pbiAtPiBCZXplaWNobnVuZ2VuICYgTGlzdGVuLgoK ZnVuY3Rpb24gbGlzdGVuUmVuZGVybigpIHsKICAgIGxpc3RlbkRpZW5zdGdyYWRlUmVuZGVybigp OwogICAgbGlzdGVuRnVua3Rpb25lblJlbmRlcm4oKTsKfQoKLy8gPT09PT0gQWRtaW46IE1pa3Jv dGVhbS1FZGl0b3IgPT09PT0KLy8gWi5hZG1pbi5taWtyb3RlYW1zID0gW3sgaWQsIG5hbWUsIHN0 YW5kb3J0LCBncnVwcGUsIHBlcnNvbklkczogW10gfV0KCmZ1bmN0aW9uIG1pa3JvdGVhbXNSZW5k ZXJuKCkgewogICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pa3JvdGVh bXMtdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciBsaXN0ZSA9IChaLmFk bWluLm1pa3JvdGVhbXMgfHwgW10pOwogICAgaWYgKCFsaXN0ZS5sZW5ndGgpIHsKICAgICAgICB0 Ym9keS5pbm5lckhUTUwgPSBhZG1pbkVtcHR5WmVpbGUoNywgJ1x1ezFGOTFEfScsCiAgICAgICAg ICAgICdOb2NoIGtlaW5lIE1pa3JvdGVhbXMgYW5nZWxlZ3QnLAogICAgICAgICAgICAnTWlrcm90 ZWFtcyBncnVwcGllcmVuIFBlcnNvbmVuLCBkaWUgcmVnZWxtYWVzc2lnIHp1c2FtbWVuIHBsYW5l biDigJQgei5CLiBlaW5lIFN0cmVpZmUgb2RlciBlaW4gMmVyLVRlYW0uIE1pdGdsaWVkZXIgZWlu ZXMgTWlrcm90ZWFtcyBkdWVyZmVuIGRpZSBTY2hpY2h0ZW4gZGVyIGFuZGVyZW4gVGVhbS1QZXJz b25lbiBtaXQtcGxhbmVuLiBMZWcgZGFzIGVyc3RlIG9iZW4gbWl0IOKAnk5ldWVzIE1pa3JvdGVh bSIgYW4uJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHN0YW5kb3J0ZSA9IChaLmFk bWluLnN0YW5kb3J0ZSB8fCBbXSkubWFwKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMua3VlcnplbCB8 fCBzLm5hbWU7IH0pLmZpbHRlcihCb29sZWFuKTsKICAgIHZhciBncnVwcGVuICAgPSAoWi5hZG1p bi5ncnVwcGVuICAgfHwgW10pLm1hcChmdW5jdGlvbihnKSB7IHJldHVybiBnLm5hbWU7IH0pLmZp bHRlcihCb29sZWFuKTsKICAgIGZ1bmN0aW9uIGRyb3Bkb3duKGtsYXNzZSwgbmFtZSwgb3B0aW9u ZW4sIGN1cnJlbnQpIHsKICAgICAgICB2YXIgb3B0cyA9IG9wdGlvbmVuLm1hcChmdW5jdGlvbihv KSB7CiAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIobykg KyAnIicgKyAobyA9PT0gY3VycmVudCA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgZXNjYXBl SFRNTChvKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHJldHVy biAnPHNlbGVjdCBjbGFzcz0iJyArIGtsYXNzZSArICciIGRhdGEtbmFtZT0iJyArIGVzY2FwZUF0 dHIobmFtZSkgKyAnIiBzdHlsZT0id2lkdGg6MTAwJSI+JyArCiAgICAgICAgICAgICc8b3B0aW9u IHZhbHVlPSIiJyArIChjdXJyZW50ID8gJycgOiAnIHNlbGVjdGVkJykgKyAnPuKAlDwvb3B0aW9u PicgKyBvcHRzICsKICAgICAgICAnPC9zZWxlY3Q+JzsKICAgIH0KICAgIHZhciBodG1sID0gJyc7 CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKHQsIGkpIHsKICAgICAgICB2YXIgcGVyc29uZW5B bnphaGwgPSAodC5wZXJzb25JZHMgfHwgW10pLmxlbmd0aDsKICAgICAgICBodG1sICs9ICc8dHIg ZGF0YS1pZHg9IicgKyBpICsgJyI+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtd2VpZ2h0OjcwMCI+JyArIChp ICsgMSkgKyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgY2xh c3M9Im10LWlucHV0IiBkYXRhLWZlbGQ9ImlkIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIodC5pZCB8 fCAnJykgKyAnIiBwbGFjZWhvbGRlcj0idF9LQV9BIiBzdHlsZT0id2lkdGg6MTAwJTtmb250LWZh bWlseTptb25vc3BhY2U7Zm9udC1zaXplOjExcHgiPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+ PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJtdC1pbnB1dCIgZGF0YS1mZWxkPSJuYW1lIiB2YWx1 ZT0iJyArIGVzY2FwZUF0dHIodC5uYW1lIHx8ICcnKSArICciIHBsYWNlaG9sZGVyPSJ6LkIuIEth bWVuLUEiIHN0eWxlPSJ3aWR0aDoxMDAlIj48L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyBk cm9wZG93bignbXQtaW5wdXQnLCAnc3RhbmRvcnQnLCBzdGFuZG9ydGUsIHQuc3RhbmRvcnQgfHwg JycpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArIGRyb3Bkb3duKCdtdC1pbnB1dCcs ICdncnVwcGUnLCAgIGdydXBwZW4sICAgdC5ncnVwcGUgICB8fCAnJykgKyAnPC90ZD4nICsKICAg ICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxzcGFuIGNsYXNzPSJtdC1w ZXJzb25lbi16YWhsIiBkYXRhLWlkeD0iJyArIGkgKyAnIj4nICsgcGVyc29uZW5BbnphaGwgKyAn PC9zcGFuPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3Jh cCI+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWts ZWluIiBkYXRhLWFrdGlvbj0ibXQtcGVyc29uZW4iIGRhdGEtaWR4PSInICsgaSArICciIHRpdGxl PSJQZXJzb25lbiB6dXdlaXNlbiI+UGVyc29uZW7igKY8L2J1dHRvbj4gJyArCiAgICAgICAgICAg ICAgICAoaSA+IDAgICAgICAgICAgICAgID8gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0 bi1rbGVpbiIgZGF0YS1ha3Rpb249Im10LXVwIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0i SG9laGVyIj7ihpE8L2J1dHRvbj4nIDogJycpICsKICAgICAgICAgICAgICAgIChpIDwgbGlzdGUu bGVuZ3RoLTEgPyAnIDxidXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgZGF0YS1h a3Rpb249Im10LWRvd24iIGRhdGEtaWR4PSInICsgaSArICciIHRpdGxlPSJUaWVmZXIiPuKGkzwv YnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJyA8YnV0dG9uIGNsYXNzPSJidG4gYnRu LWdlZmFociBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJtdC1sb2VzY2hlbiIgZGF0YS1pZHg9Iicg KyBpICsgJyIgdGl0bGU9IkxvZXNjaGVuIj7DlzwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC90 ZD4nICsKICAgICAgICAgICAgJzwvdHI+JzsKICAgIH0pOwogICAgLy8gRW1wdHktU3RhdGUgd2ly ZCBhbSBGdW5rdGlvbnMtQW5mYW5nIGJlaGFuZGVsdCAoZnJ1ZWhlciBSZXR1cm4pOwogICAgLy8g ZGllc2VyIHRvdGUgRmFsbGJhY2sgaXN0IG1pdCBQaGFzZSA1IG9ic29sZXQgZ2V3b3JkZW4uCiAg ICB0Ym9keS5pbm5lckhUTUwgPSBodG1sOwp9CgovLyBMaWVzdCBkaWUgRWluZ2FiZWZlbGRlciBh dXMgZGVyIE1pa3JvdGVhbXMtVGFiZWxsZS4gUGVyc29uZW4tTGlzdGVuCi8vIHBmbGVndCBkaWUg RnVua3Rpb24gbWlrcm90ZWFtUGVyc29uZW5EaWFsb2cgc2VwYXJhdCBpbiBaLmFkbWluLm1pa3Jv dGVhbXMsCi8vIGhpZXIgZGVzaGFsYiBudXIgU3RhbW0tRmVsZGVyLgpmdW5jdGlvbiBtaWtyb3Rl YW1zQXVzVGFiZWxsZUxlc2VuKCkgewogICAgdmFyIGxpc3RlID0gKFouYWRtaW4ubWlrcm90ZWFt cyB8fCBbXSkuc2xpY2UoKTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNtaWtyb3Rl YW1zLXRib2R5IHRyW2RhdGEtaWR4XScpLmZvckVhY2goZnVuY3Rpb24odHIpIHsKICAgICAgICB2 YXIgaWR4ID0gcGFyc2VJbnQodHIuZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpLCAxMCk7CiAgICAg ICAgaWYgKGlzTmFOKGlkeCkgfHwgIWxpc3RlW2lkeF0pIHJldHVybjsKICAgICAgICB0ci5xdWVy eVNlbGVjdG9yQWxsKCcubXQtaW5wdXQnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAg ICAgIHZhciBmZWxkID0gZWwuZ2V0QXR0cmlidXRlKCdkYXRhLWZlbGQnKSB8fCBlbC5nZXRBdHRy aWJ1dGUoJ2RhdGEtbmFtZScpOwogICAgICAgICAgICBpZiAoIWZlbGQpIHJldHVybjsKICAgICAg ICAgICAgbGlzdGVbaWR4XVtmZWxkXSA9IGVsLnZhbHVlOwogICAgICAgIH0pOwogICAgfSk7CiAg ICByZXR1cm4gbGlzdGU7Cn0KCi8vIFBlcnNvbmVuLUF1c3dhaGwtTW9kYWwgZnVlciBlaW4gTWlr cm90ZWFtLgpmdW5jdGlvbiBtaWtyb3RlYW1QZXJzb25lbkRpYWxvZyhpZHgpIHsKICAgIFouYWRt aW4ubWlrcm90ZWFtcyA9IG1pa3JvdGVhbXNBdXNUYWJlbGxlTGVzZW4oKTsKICAgIHZhciB0ID0g Wi5hZG1pbi5taWtyb3RlYW1zW2lkeF07CiAgICBpZiAoIXQpIHJldHVybjsKICAgIHZhciBwZXJz b25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbHRlcihmdW5jdGlvbihwKSB7IHJl dHVybiBwLmFrdGl2OyB9KQogICAgICAgIC5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyBy ZXR1cm4gKChhLm5hbWUgfHwgJycpICsgKGEudm9ybmFtZSB8fCAnJykpLmxvY2FsZUNvbXBhcmUo KGIubmFtZSB8fCAnJykgKyAoYi52b3JuYW1lIHx8ICcnKSwgJ2RlJyk7IH0pOwogICAgdmFyIGFr dGl2ZSA9IG5ldyBTZXQoKHQucGVyc29uSWRzIHx8IFtdKS5tYXAoZnVuY3Rpb24oeCkgeyByZXR1 cm4gTnVtYmVyKHgpOyB9KSk7CgogICAgdmFyIGh0bWwgPSAnPHAgY2xhc3M9ImV2bS1iZXNjaHJl aWJ1bmciPlBlcnNvbmVuLCBkaWUgenVtIE1pa3JvdGVhbSDigJ48Yj4nICsgZXNjYXBlSFRNTCh0 Lm5hbWUgfHwgdC5pZCB8fCAnKG9obmUgTmFtZSknKSArICc8L2I+IiBnZWhvZXJlbi4gQXVzd2Fo bCBnaWx0IGZ1ZXIgU3RhdGlzdGlrIChNaWtyb3RlYW0tSGVhdG1hcCArIFRhZ2VzLUFudGVpbGUp LjwvcD4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7bWFyZ2lu LWJvdHRvbTo4cHgiPicgKwogICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNz PSJidG4gYnRuLWtsZWluIiBpZD0ibXQtcGVycy1hbGxlIj5BbGxlIG1hcmtpZXJlbjwvYnV0dG9u PicgKwogICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWts ZWluIiBpZD0ibXQtcGVycy1rZWluZSI+QXVzd2FobCBsZWVyZW48L2J1dHRvbj4nICsKICAgICAg ICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6MzgwcHg7b3ZlcmZs b3c6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1 czo0cHg7cGFkZGluZzo4cHgiPic7CiAgICBwZXJzb25lbi5mb3JFYWNoKGZ1bmN0aW9uKHApIHsK ICAgICAgICB2YXIgbGFiZWwgPSAoKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSAr IChwLm5hbWUgfHwgJycpKS50cmltKCkgKyAnIMK3ICcgKyAocC5ncnVwcGUgfHwgJz8nKSArICcg wrcgJyArIChwLm9lIHx8ICc/Jyk7CiAgICAgICAgaHRtbCArPSAnPGxhYmVsIHN0eWxlPSJkaXNw bGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7Y3Vyc29yOnBvaW50ZXI7cGFkZGlu ZzoycHggNHB4Ij4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9 Im10LXBlcnMtY2hrIiBkYXRhLWlkPSInICsgcC5pZCArICciJyArIChha3RpdmUuaGFzKE51bWJl cihwLmlkKSkgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nICsKICAgICAgICAgICAgJzxzcGFuPicg KyBlc2NhcGVIVE1MKGxhYmVsKSArICc8L3NwYW4+JyArCiAgICAgICAgJzwvbGFiZWw+JzsKICAg IH0pOwogICAgaHRtbCArPSAnPC9kaXY+JzsKCiAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNz PSJidG4iIGlkPSJtdC1wZXJzLWFiYnIiIHR5cGU9ImJ1dHRvbiI+QWJicmVjaGVuPC9idXR0b24+ JyArCiAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJk bGctc3BlaWNoZXJuIiB0eXBlPSJidXR0b24iPsOcYmVybmVobWVuPC9idXR0b24+JzsKICAgIG1v ZGFsWmVpZ2VuKCdQZXJzb25lbiDigJQgJyArICh0Lm5hbWUgfHwgdC5pZCksIGh0bWwsIGZ1c3Ms IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpZHMgPSBbXTsKICAgICAgICBkb2N1bWVudC5xdWVy eVNlbGVjdG9yQWxsKCcubXQtcGVycy1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAg ICAgICAgaWYgKGMuY2hlY2tlZCkgaWRzLnB1c2gocGFyc2VJbnQoYy5nZXRBdHRyaWJ1dGUoJ2Rh dGEtaWQnKSwgMTApKTsKICAgICAgICB9KTsKICAgICAgICB0LnBlcnNvbklkcyA9IGlkczsKICAg ICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgbWlrcm90ZWFtc1JlbmRlcm4oKTsK ICAgICAgICB0b2FzdChpZHMubGVuZ3RoICsgJyBQZXJzb25lbiB6dWdld2llc2VuIOKAlCDigJ5T cGVpY2hlcm4iIGRydWVja2VuLCB1bSBkYXVlcmhhZnQgenUgc2ljaGVybicsICdpbmZvJyk7CiAg ICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtdC1wZXJzLWFiYnInKS5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgeyBtb2RhbFNjaGxpZXNzZW4oKTsgfSk7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXQtcGVycy1hbGxlJykuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs KCcubXQtcGVycy1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gdHJ1ZTsg fSk7CiAgICAgICAgWi5tb2RhbERpcnR5ID0gdHJ1ZTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ210LXBlcnMta2VpbmUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1 bmN0aW9uKCkgewogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tdC1wZXJzLWNo aycpLmZvckVhY2goZnVuY3Rpb24oYykgeyBjLmNoZWNrZWQgPSBmYWxzZTsgfSk7CiAgICAgICAg Wi5tb2RhbERpcnR5ID0gdHJ1ZTsKICAgIH0pOwp9CgpmdW5jdGlvbiBsaXN0ZW5EaWVuc3RncmFk ZVJlbmRlcm4oKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGll bnN0Z3JhZGUtdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciBsaXN0ZSA9 IChaLmFkbWluLmRpZW5zdGdyYWRlICYmIFouYWRtaW4uZGllbnN0Z3JhZGUubGVuZ3RoKQogICAg ICAgID8gWi5hZG1pbi5kaWVuc3RncmFkZSA6IERJRU5TVEdSQURFX0RFRkFVTFQuc2xpY2UoKTsK ICAgIHZhciBodG1sID0gJyc7CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKGQsIGkpIHsKICAg ICAgICBodG1sICs9ICc8dHI+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246 Y2VudGVyO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtd2VpZ2h0OjcwMCI+JyArIChpICsg MSkgKyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9 ImRncmFkLWlucHV0IiBkYXRhLWlkeD0iJyArIGkgKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIo ZCkgKyAnIiBwbGFjZWhvbGRlcj0iei5CLiBQSEsqIiBzdHlsZT0id2lkdGg6MTAwJSI+PC90ZD4n ICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj4nICsKICAgICAg ICAgICAgICAgIChpID4gMCAgICAgICAgICAgICAgPyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1z ZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0iZGdyYWQtdXAiIGRhdGEtaWR4PSInICsgaSArICci IHRpdGxlPSJFaW5lIFBvc2l0aW9uIGhvZWhlciI+4oaRPC9idXR0b24+JyA6ICcnKSArCiAgICAg ICAgICAgICAgICAoaSA8IGxpc3RlLmxlbmd0aC0xID8gJyA8YnV0dG9uIGNsYXNzPSJidG4gYnRu LXNlayBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJkZ3JhZC1kb3duIiBkYXRhLWlkeD0iJyArIGkg KyAnIiB0aXRsZT0iRWluZSBQb3NpdGlvbiB0aWVmZXIiPuKGkzwvYnV0dG9uPicgOiAnJykgKwog ICAgICAgICAgICAgICAgJyA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xlaW4i IGRhdGEtYWt0aW9uPSJkZ3JhZC1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpICsgJyIgdGl0bGU9 IkxvZXNjaGVuIj7DlzwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAg ICAgJzwvdHI+JzsKICAgIH0pOwogICAgdGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKfQoKZnVuY3Rp b24gbGlzdGVuRnVua3Rpb25lblJlbmRlcm4oKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZnVua3Rpb25lbi10Ym9keScpOwogICAgaWYgKCF0Ym9keSkgcmV0dXJu OwogICAgdmFyIGxpc3RlID0gKFouYWRtaW4uZnVua3Rpb25lbiAmJiBaLmFkbWluLmZ1bmt0aW9u ZW4ubGVuZ3RoKQogICAgICAgID8gWi5hZG1pbi5mdW5rdGlvbmVuIDogRlVOS1RJT05FTl9ERUZB VUxULnNsaWNlKCk7CiAgICB2YXIgaHRtbCA9ICcnOwogICAgbGlzdGUuZm9yRWFjaChmdW5jdGlv bihmLCBpKSB7CiAgICAgICAgdmFyIGNvZGUgPSBmLmNvZGUgfHwgJyc7CiAgICAgICAgdmFyIHJh bmcgPSAoZi5yYW5nICE9IG51bGwpID8gZi5yYW5nIDogOTk7CiAgICAgICAgdmFyIGluUGwgPSBm LmluUGxhbnVuZyAhPT0gZmFsc2U7ICAvLyBEZWZhdWx0OiBzaWNodGJhcgogICAgICAgIGh0bWwg Kz0gJzx0cj4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Y29s b3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC13ZWlnaHQ6NzAwIj4nICsgKGkgKyAxKSArICc8L3Rk PicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZnVuay1pbnB1 dC1jb2RlIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoY29kZSkg KyAnIiBwbGFjZWhvbGRlcj0iei5CLiBER0wiIHN0eWxlPSJ3aWR0aDoxMDAlIj48L3RkPicgKwog ICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJmdW5rLWlucHV0LXJh bmciIGRhdGEtaWR4PSInICsgaSArICciIHZhbHVlPSInICsgcmFuZyArICciIG1pbj0iLTkiIG1h eD0iOTkiIHN0eWxlPSJ3aWR0aDo2MHB4O3RleHQtYWxpZ246cmlnaHQiPjwvdGQ+JyArCiAgICAg ICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj48aW5wdXQgdHlwZT0iY2hlY2ti b3giIGNsYXNzPSJmdW5rLWlucHV0LWlucGxhbnVuZyIgZGF0YS1pZHg9IicgKyBpICsgJyInICsg KGluUGwgPyAnIGNoZWNrZWQnIDogJycpICsgJyB0aXRsZT0iV2VubiBkZWFrdGl2aWVydDogUGVy c29uZW4gbWl0IGRpZXNlciBGdW5rdGlvbiBlcnNjaGVpbmVuIE5JQ0hUIGluIFBsYW51bmcvV29j aGVucGxhbi9QZXJzLiBQbGFuIj48L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ3aGl0 ZS1zcGFjZTpub3dyYXAiPicgKwogICAgICAgICAgICAgICAgKGkgPiAwICAgICAgICAgICAgICA/ ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJmdW5r LXVwIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iRWluZSBQb3NpdGlvbiBob2VoZXIiPuKG kTwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgKGkgPCBsaXN0ZS5sZW5ndGgtMSA/ ICcgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0iZnVu ay1kb3duIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iRWluZSBQb3NpdGlvbiB0aWVmZXIi PuKGkzwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJyA8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLWdlZmFociBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJmdW5rLWxvZXNjaGVuIiBkYXRh LWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iTG9lc2NoZW4iPsOXPC9idXR0b24+JyArCiAgICAgICAg ICAgICc8L3RkPicgKwogICAgICAgICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5l ckhUTUwgPSBodG1sOwp9CgovLyBMaWVzdCBkaWUgYWt0dWVsbGVuIFdlcnRlIGF1cyBkZXIgRGll bnN0Z3JhZGUtVGFiZWxsZSAodm9yIGRlbSBTcGVpY2hlcm4pLgpmdW5jdGlvbiBkaWVuc3RncmFk ZUF1c1RhYmVsbGVMZXNlbigpIHsKICAgIHZhciBsaXN0ZSA9IFtdOwogICAgZG9jdW1lbnQucXVl cnlTZWxlY3RvckFsbCgnLmRncmFkLWlucHV0JykuZm9yRWFjaChmdW5jdGlvbihpbnApIHsKICAg ICAgICB2YXIgdiA9IChpbnAudmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICBpZiAodikgbGlz dGUucHVzaCh2KTsKICAgIH0pOwogICAgcmV0dXJuIGxpc3RlOwp9CgovLyBMaWVzdCBkaWUgYWt0 dWVsbGVuIFdlcnRlIGF1cyBkZXIgRnVua3Rpb25lbi1UYWJlbGxlICh2b3IgZGVtIFNwZWljaGVy bikuCmZ1bmN0aW9uIGZ1bmt0aW9uZW5BdXNUYWJlbGxlTGVzZW4oKSB7CiAgICB2YXIgbWFwID0g e307CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZnVuay1pbnB1dC1jb2RlJykuZm9y RWFjaChmdW5jdGlvbihpbnApIHsKICAgICAgICB2YXIgaWR4ID0gaW5wLmdldEF0dHJpYnV0ZSgn ZGF0YS1pZHgnKTsKICAgICAgICB2YXIgdiA9IChpbnAudmFsdWUgfHwgJycpLnRyaW0oKTsKICAg ICAgICBpZiAoIW1hcFtpZHhdKSBtYXBbaWR4XSA9IHt9OwogICAgICAgIG1hcFtpZHhdLmNvZGUg PSB2OwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZnVuay1pbnB1dC1y YW5nJykuZm9yRWFjaChmdW5jdGlvbihpbnApIHsKICAgICAgICB2YXIgaWR4ID0gaW5wLmdldEF0 dHJpYnV0ZSgnZGF0YS1pZHgnKTsKICAgICAgICB2YXIgciA9IHBhcnNlSW50KGlucC52YWx1ZSwg MTApOwogICAgICAgIGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAgICAgICAgbWFwW2lk eF0ucmFuZyA9IGlzTmFOKHIpID8gOTkgOiByOwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNl bGVjdG9yQWxsKCcuZnVuay1pbnB1dC1pbnBsYW51bmcnKS5mb3JFYWNoKGZ1bmN0aW9uKGlucCkg ewogICAgICAgIHZhciBpZHggPSBpbnAuZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpOwogICAgICAg IGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAgICAgICAgbWFwW2lkeF0uaW5QbGFudW5n ID0gISFpbnAuY2hlY2tlZDsKICAgIH0pOwogICAgdmFyIGxpc3RlID0gW107CiAgICBPYmplY3Qu a2V5cyhtYXApLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGFyc2VJbnQoYSkgLSBwYXJz ZUludChiKTsgfSkuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgaWYgKCFtYXBba10uY29k ZSkgcmV0dXJuOwogICAgICAgIHZhciBlID0geyBjb2RlOiBtYXBba10uY29kZSwgcmFuZzogbWFw W2tdLnJhbmcgfTsKICAgICAgICAvLyBpblBsYW51bmcgbnVyIHNwZWljaGVybiB3ZW5uIGV4cGxp eml0IGZhbHNlIOKAlCBEZWZhdWx0IGlzdCB0cnVlLAogICAgICAgIC8vIG11c3MgZGFoZXIgbmlj aHQgaW4gYWRtaW4uanNvbiBzdGVoZW4gKGtsZWluZXJlciBEYXRlbnNhdHopLgogICAgICAgIGlm IChtYXBba10uaW5QbGFudW5nID09PSBmYWxzZSkgZS5pblBsYW51bmcgPSBmYWxzZTsKICAgICAg ICBsaXN0ZS5wdXNoKGUpOwogICAgfSk7CiAgICByZXR1cm4gbGlzdGU7Cn0KCi8vID09PT09IEV4 cG9ydHMgPT09PT0KLy8KLy8gS29uc3RhbnRlbgpleHBvcnQgeyBCRURJRU5VTkdfREVGQVVMVCB9 OwovLyBJTVBSRVNTVU1fREVGQVVMVCB3aXJkIHZpYSAiZXhwb3J0IHZhciIgb2JlbiBzY2hvbiBl eHBvcnRpZXJ0LAovLyBhYmVyIHp1ciBLb25zaXN0ZW56IGF1Y2ggaGllciBhdWZnZWZ1ZWhydCDi gJQgZGVyIG5hbWVkIGV4cG9ydAovLyBtYXRjaGVkLCB3YXMgYXBwLmpzIGltcG9ydGllcnQuCgov LyBGdW5rdGlvbmVuIOKAlCBhbGxlIFRvcC1MZXZlbC1GdW5rdGlvbmVuIGF1cyBkZW0gQWRtaW4t QmxvY2suCmV4cG9ydCB7CiAgICBhZG1pblJlbmRlcm4sCiAgICBzaWNodGJhcmtlaXRXZXJ0LCBz aWNodGJhcmtlaXRSZW5kZXJuLAogICAgYmFja3VwVGFiZWxsZUxhZGVuLCBiYWNrdXBHcm9lc3Nl Rm9ybWF0LCBiYWNrdXBaZWl0cHVua3RGb3JtYXQsIGJhY2t1cFRhYmVsbGVSZW5kZXJuLAogICAg Z3J1cHBlblBlcnNvbmVuWmFlaGxlbiwgZ3J1cHBlblRhYmVsbGVSZW5kZXJuLAogICAgaHRtbEF1 c0ZlbGQsCiAgICBpbmZvSGlsZmVSZW5kZXJuLCBpbmZvSGlsZmVBdXNGZWxkZXJuTGVzZW4sCiAg ICBiZXosIGJlemVpY2hudW5nZW5BbndlbmRlbiwgYmV6ZWljaG51bmdlblJlbmRlcm4sIGJlemVp Y2hudW5nZW5BdXNUYWJlbGxlTGVzZW4sCiAgICBsaXN0ZW5SZW5kZXJuLCBsaXN0ZW5EaWVuc3Rn cmFkZVJlbmRlcm4sIGxpc3RlbkZ1bmt0aW9uZW5SZW5kZXJuLAogICAgZGllbnN0Z3JhZGVBdXNU YWJlbGxlTGVzZW4sIGZ1bmt0aW9uZW5BdXNUYWJlbGxlTGVzZW4sCiAgICBtaWtyb3RlYW1zUmVu ZGVybiwgbWlrcm90ZWFtc0F1c1RhYmVsbGVMZXNlbiwgbWlrcm90ZWFtUGVyc29uZW5EaWFsb2cs CiAgICBlaW5zdGVsbHVuZ2VuUmVuZGVybiwKICAgIHN0YW5kb3J0ZVJlbmRlcm4sIHN0YW5kb3J0 ZUF1c1RhYmVsbGVMZXNlbiwgcmh5dGhtdXNHZW5lcmF0b3JEaWFsb2csCiAgICBhZG1pbkluZm9J bml0LAogICAgZmVhdHVyZXNSZW5kZXJuLCBmZWF0dXJlSXN0QWt0aXYsCiAgICBkaXJ0eVRyYWNr ZXJFaW5yaWNodGVuCn07Cg== ### FILE: js/admin_codes.js | 26055 Ly8gPT09IGFkbWluX2NvZGVzLmpzID09PQovLyBQaGFzZSA5LUIgQzI6IGF1cyBhZG1pbi5qcyBl eHRyYWhpZXJ0LiBWZXJ3YWx0ZXQgZGllIFNjaGljaHRjb2RlLQovLyBWb3JzY2hhdSB1bmQgZGFz IEVkaXQtL1RvZ2dsZS0vRHJhZy1Nb2RhbDoKLy8gICAtIGlzdENvZGVBa3RpdiAvIGNvZGVWZXJ3 ZW5kdW5nWmFlaGxlbiAvIHNjaGljaHRjb2RlS2F0ZWdvcmllCi8vICAgICAoa2xlaW5lIEhlbHBl cikKLy8gICAtIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5kZXJuIChIYXVwdGFuc2ljaHQgaW0gQWRt aW4tVGFiLAovLyAgICAgZHJlaSBTb3J0aWVyLU1vZGkgKyBmbGFjaC9kcmFnKQovLyAgIC0gc2No aWNodGNvZGVEcmFnVmVyZHJhaHRlbiAoRHJhZyZEcm9wIG51ciBpbSBmbGFjaC1Nb2R1cykKLy8g ICAtIHNjaGljaHRjb2RlVG9nZ2xlQWt0aXYgLyBzY2hpY2h0Y29kZUxpc3RlU3BlaWNoZXJuIChE ZWFrdGl2aWVyZW4KLy8gICAgIG1pdCBPcHRpb25lbjogc3RpbGxsZWdlbiAvIGVyc2V0emVuIC8g bGVlcmVuKQovLyAgIC0gc2NoaWNodGNvZGVFZGl0TW9kYWxaZWlnZW4gKE5ldSArIEJlYXJiZWl0 ZW4gKyBMb2VzY2hlbikKLy8KLy8gRXh0ZXJuZXIgS29uc3VtZW50OiBpbXBvcnRfZXhjZWwuanMg aW1wb3J0aWVydCB3ZWl0ZXJoaW4gaXN0Q29kZUFrdGl2Ci8vIGF1cyAnLi9hZG1pbi5qcycgKFBh c3MtVGhyb3VnaC1SZS1FeHBvcnQpOyBhYiBQaGFzZSA5LUIgQzUgZGFubiBkaXJla3QKLy8gYXVz ICcuL2FkbWluX2NvZGVzLmpzJy4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMn OwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMn OwppbXBvcnQgeyBhcGlQdXQgfSBmcm9tICcuL2NvcmVfYXBpLmpzJzsKaW1wb3J0IHsKdG9hc3Qs IGJlc3RhZXRpZ2VuLAptb2RhbFplaWdlbiwgbW9kYWxTY2hsaWVzc2VuLApwZmxpY2h0ZmVsZEZl aGxlcgp9IGZyb20gJy4vdWlfZGlhbG9nLmpzJzsKaW1wb3J0IHsgZGF0ZW5HcmlkUmVuZGVybiB9 IGZyb20gJy4vZ3JpZF9yZW5kZXIuanMnOwoKLy8gPT09PT0gQWRtaW46IFNjaGljaHRjb2RlLVZv cnNjaGF1ID09PT09CgovLyBFaW4gU2NoaWNodGNvZGUgZ2lsdCBhbHMgYWt0aXYsIHNvbGFuZ2Ug ZXIgbmljaHQgZXhwbGl6aXQgYXVmIGZhbHNlIHN0ZWh0Ci8vIChBYndhZXJ0c2tvbXBhdGliaWxp dGFldDogYWx0ZSBEYXRlbiBvaG5lIGFrdGl2LUZsYWcgc2luZCBha3RpdikuCmV4cG9ydCBmdW5j dGlvbiBpc3RDb2RlQWt0aXYoc2MpIHsgcmV0dXJuICFzYyB8fCBzYy5ha3RpdiAhPT0gZmFsc2U7 IH0KCi8vIFphZWhsdCBwcm8gQ29kZSwgd2llIG9mdCBlciBpbiBwbGFudW5nLmVpbnRyYWVnZSB2 b3Jrb21tdC4KLy8gR2lidCBlaW4gTWFwIHsgY29kZTogYW56YWhsIH0genVydWVjay4KZXhwb3J0 IGZ1bmN0aW9uIGNvZGVWZXJ3ZW5kdW5nWmFlaGxlbigpIHsKICAgIHZhciBtYXAgPSB7fTsKICAg IHZhciBlID0gWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2U7CiAgICBpZiAoIWUpIHJl dHVybiBtYXA7CiAgICBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAg ICB2YXIgdGFnID0gZVtkXSB8fCB7fTsKICAgICAgICBPYmplY3Qua2V5cyh0YWcpLmZvckVhY2go ZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAgIHZhciBjID0gdGFnW3BpZF07CiAgICAgICAgICAg IGlmIChjKSBtYXBbY10gPSAobWFwW2NdIHx8IDApICsgMTsKICAgICAgICB9KTsKICAgIH0pOwog ICAgcmV0dXJuIG1hcDsKfQoKZXhwb3J0IGZ1bmN0aW9uIHNjaGljaHRjb2RlS2F0ZWdvcmllKGNv ZGUpIHsKICAgIHZhciBjID0gY29kZSB8fCAnJzsKICAgIGlmICgvXkYtL2kudGVzdChjKSkgcmV0 dXJuIHsga2V5OiAnMS1mcnVlaCcsICBsYWJlbDogJ0Zyw7xoZGllbnN0JyB9OwogICAgaWYgKC9e Uy0vaS50ZXN0KGMpKSByZXR1cm4geyBrZXk6ICcyLXNwYWV0JywgIGxhYmVsOiAnU3DDpHRkaWVu c3QnIH07CiAgICBpZiAoL15OLS9pLnRlc3QoYykpIHJldHVybiB7IGtleTogJzMtbmFjaHQnLCAg bGFiZWw6ICdOYWNodGRpZW5zdCcgfTsKICAgIGlmIChbJ3dmcicsJ2RmciddLmluZGV4T2YoYykg Pj0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g eyBrZXk6ICc0LWZyZWknLCAgICAgbGFiZWw6ICdGcmVpJyB9OwogICAgaWYgKFsnVXJsJywnU1Un XS5pbmRleE9mKGMpID49IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiB7IGtleTogJzUtdXJsYXViJywgICBsYWJlbDogJ1VybGF1YicgfTsKICAg IGlmIChbJ2tyJywnS3VyJywnRFUnLCdYWFgnXS5pbmRleE9mKGMpID49IDApICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBrZXk6ICc2LWF1c2ZhbGwnLCAgbGFiZWw6 ICdLcmFua2hlaXQgLyBBdXNmYWxsJyB9OwogICAgaWYgKFsnTEcnLCdTZW0nLCdFVE0nLCdBdUYn LCdhbncnLCdhbncuJ10uaW5kZXhPZihjKSA+PSAwKSAgICAgICAgICAgICAgICAgICAgIHJldHVy biB7IGtleTogJzctZm9ydGJpbGQnLCBsYWJlbDogJ0ZvcnRiaWxkdW5nJyB9OwogICAgaWYgKFsn QV8nLCdCXycsJ0NfJywnWicsJ1NEJywnQkFPJywnU0UnLCdFTVNBJywnOGEnLCdHVCcsJ2FiZycs J0FaQScsJ2FidycsJ3NBQldCJ10uaW5kZXhPZihjKSA+PSAwKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4geyBrZXk6ICc4LWVpbnNhdHonLCAgbGFiZWw6ICdEaWVuc3RlIC8gRWlu c8OkdHplJyB9OwogICAgaWYgKFsnSE8nLCdUekYnLCdCVicsJ01EJ10uaW5kZXhPZihjKSA+PSAw KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGtleTogJzktc29u ZGVyZm9ybScsIGxhYmVsOiAnU29uZGVyZm9ybWVuJyB9OwogICAgcmV0dXJuIHsga2V5OiAnOTkt c29uc3RpZ2VzJywgbGFiZWw6ICdTb25zdGlnZXMnIH07Cn0KCmV4cG9ydCBmdW5jdGlvbiBzY2hp Y2h0Y29kZVZvcnNjaGF1UmVuZGVybigpIHsKICAgIHZhciBsaXN0ZSA9IChaLmFkbWluLnNjaGlj aHRjb2RlcyB8fCBbXSkuc2xpY2UoKTsKICAgIHZhciBjb250ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3NjaGljaHRjb2RlLXZvcnNjaGF1Jyk7CiAgICBpZiAoIWNvbnQpIHJldHVybjsKCiAg ICB2YXIgdmVyd2VuZHVuZyA9IGNvZGVWZXJ3ZW5kdW5nWmFlaGxlbigpOwogICAgdmFyIGFrdGl2 QW56YWhsID0gbGlzdGUuZmlsdGVyKGlzdENvZGVBa3RpdikubGVuZ3RoOwogICAgdmFyIGluYWt0 aXZBbnphaGwgPSBsaXN0ZS5sZW5ndGggLSBha3RpdkFuemFobDsKCiAgICB2YXIgbW9kdXMgPSBs b2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2MtZ3J1cHBlLW1vZHVzJykgfHwgJ2thdGVnb3JpZSc7CiAg ICB2YXIgdG9vbGJhciA9ICc8ZGl2IGNsYXNzPSJzYy12b3JzY2hhdS10b29sYmFyIj4nICsKICAg ICAgICAnPGxhYmVsIGZvcj0ic2MtbW9kdXMiPkdydXBwaWVydW5nOjwvbGFiZWw+JyArCiAgICAg ICAgJzxzZWxlY3QgaWQ9InNjLW1vZHVzIj4nICsKICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9 ImthdGVnb3JpZSInICsgKG1vZHVzID09PSAna2F0ZWdvcmllJyA/ICcgc2VsZWN0ZWQnIDogJycp ICsgJz5OYWNoIFNjaGljaHR0eXA8L29wdGlvbj4nICsKICAgICAgICAgICAgJzxvcHRpb24gdmFs dWU9ImFscGhhIicgICAgICsgKG1vZHVzID09PSAnYWxwaGEnICAgICA/ICcgc2VsZWN0ZWQnIDog JycpICsgJz5BbHBoYWJldGlzY2ggKENvZGUpPC9vcHRpb24+JyArCiAgICAgICAgICAgICc8b3B0 aW9uIHZhbHVlPSJiZXoiJyAgICAgICArIChtb2R1cyA9PT0gJ2JleicgICAgICAgPyAnIHNlbGVj dGVkJyA6ICcnKSArICc+QWxwaGFiZXRpc2NoIChCZXplaWNobnVuZyk8L29wdGlvbj4nICsKICAg ICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImZsYWNoIicgICAgICsgKG1vZHVzID09PSAnZmxhY2gn ICAgICA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5LZWluZSBHcnVwcGllcnVuZzwvb3B0aW9uPicg KwogICAgICAgICc8L3NlbGVjdD4nICsKICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21hcmdpbi1sZWZ0OmF1dG8iPicgKwogICAgICAg ICAgICBha3RpdkFuemFobCArICcgYWt0aXYgwrcgJyArIGluYWt0aXZBbnphaGwgKyAnIGluYWt0 aXYgwrcgJyArIGxpc3RlLmxlbmd0aCArICcgZ2VzYW10JyArCiAgICAgICAgICAgIChtb2R1cyA9 PT0gJ2ZsYWNoJyA/ICcgwrcgPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLWZhcmJlLXByaW1hZXIp Ij5EcmFnLVNvcnRpZXJ1bmcgYWt0aXY8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgJzwvc3Bhbj4n ICsKICAgICc8L2Rpdj4nOwoKICAgIGZ1bmN0aW9uIHRpbGUoc2MpIHsKICAgICAgICB2YXIgYWt0 aXYgPSBpc3RDb2RlQWt0aXYoc2MpOwogICAgICAgIHZhciBhbnphaGwgPSB2ZXJ3ZW5kdW5nW3Nj LmNvZGVdIHx8IDA7CiAgICAgICAgdmFyIGRyYWcgPSBtb2R1cyA9PT0gJ2ZsYWNoJyA/ICcgZHJh Z2dhYmxlPSJ0cnVlIicgOiAnJzsKICAgICAgICB2YXIgZHJhZ0NscyA9IG1vZHVzID09PSAnZmxh Y2gnID8gJyBzYy1kcmFnJyA6ICcnOwogICAgICAgIHZhciBpbmFrdGl2Q2xzID0gYWt0aXYgPyAn JyA6ICcgc2MtaW5ha3Rpdic7CiAgICAgICAgdmFyIGFuemFobENscyA9IGFuemFobCA+IDAgPyAn c2MtYW56YWhsLWJhZGdlJyA6ICdzYy1hbnphaGwtYmFkZ2Ugc2MtYW56YWhsLW51bGwnOwogICAg ICAgIHZhciB0b2dnbGVUaXRsZSA9IGFrdGl2ID8gJ0RlYWt0aXZpZXJlbiAobmljaHQgbWVociBm w7xyIE5ldS1FaW5nYWJlIHp1bGFzc2VuKScgOiAnV2llZGVyIGFrdGl2aWVyZW4nOwogICAgICAg IHZhciB0b2dnbGVTeW1ib2wgPSBha3RpdiA/ICfil48nIDogJ+KXiyc7CiAgICAgICAgdmFyIHRv Z2dsZUNscyA9IGFrdGl2ID8gJ3NjLXRvZ2dsZSBzYy10b2dnbGUtYWt0aXYnIDogJ3NjLXRvZ2ds ZSBzYy10b2dnbGUtaW5ha3Rpdic7CiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJzY2hpY2h0 Y29kZS1rYXJ0ZScgKyBkcmFnQ2xzICsgaW5ha3RpdkNscyArICciIGRhdGEtY29kZT0iJyArIGVz Y2FwZUF0dHIoc2MuY29kZSkgKyAnIicgKyBkcmFnICsKICAgICAgICAgICAgJyBzdHlsZT0iYmFj a2dyb3VuZDp2YXIoLS1iZy1jYXJkKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdo dCk7cG9zaXRpb246cmVsYXRpdmUiPicgKwogICAgICAgICAgICAobW9kdXMgPT09ICdmbGFjaCcK ICAgICAgICAgICAgICAgID8gJzxkaXYgY2xhc3M9InNjLWRyYWctaGFuZGxlIiB0aXRsZT0iWmll aGVuIHp1bSBVbXNvcnRpZXJlbiI+JiM5Nzc2OzwvZGl2PicKICAgICAgICAgICAgICAgIDogJycp ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNjaGljaHRjb2RlLWZhcmJmZWxkIiBzdHlsZT0i YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihzYy5oaW50ZXJncnVuZCB8fCAnIzg4OCcpICsgJztj b2xvcjonICsgZXNjYXBlQXR0cihzYy5zY2hyaWZ0IHx8ICcjZmZmJykgKyAnIj4nICsgZXNjYXBl SFRNTChzYy5jb2RlKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImZsZXg6 MTttaW4td2lkdGg6MCI+PHN0cm9uZz4nICsgZXNjYXBlSFRNTChzYy5jb2RlKSArICc8L3N0cm9u Zz4nICsKICAgICAgICAgICAgICAgICcgPHNwYW4gY2xhc3M9IicgKyBhbnphaGxDbHMgKyAnIiB0 aXRsZT0iJyArIGFuemFobCArICcgbWFsIGluIGRlciBQbGFudW5nIHZlcndlbmRldCI+JyArIGFu emFobCArICfDlzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8YnI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtc2Vjb25kYXJ5KSI+JyArIGVzY2FwZUhUTUwo c2MuYmV6ZWljaG51bmcgfHwgJycpICsgJzwvc3Bhbj48L2Rpdj4nICsKICAgICAgICAgICAgJzxi dXR0b24gY2xhc3M9IicgKyB0b2dnbGVDbHMgKyAnIiBkYXRhLWFrdGlvbj0ic2NoaWNodGNvZGUt dG9nZ2xlIiBkYXRhLWNvZGU9IicgKyBlc2NhcGVBdHRyKHNjLmNvZGUpICsgJyIgdGl0bGU9Iicg KyBlc2NhcGVBdHRyKHRvZ2dsZVRpdGxlKSArICciPicgKyB0b2dnbGVTeW1ib2wgKyAnPC9idXR0 b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4g YnRuLWljb24gYnRuLWJlYXJiZWl0ZW4gc2MtZWRpdC1idG4iIGRhdGEtYWt0aW9uPSJzY2hpY2h0 Y29kZS1iZWFyYmVpdGVuIiBkYXRhLWNvZGU9IicgKyBlc2NhcGVBdHRyKHNjLmNvZGUpICsgJyIg dGl0bGU9IkJlYXJiZWl0ZW4iPjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAg IH0KCiAgICAvLyBTb3J0aWVyLUhlbGZlcjogYWt0aXZlIHZvciBpbmFrdGl2ZW47IGlubmVyaGFs YiBnbGVpY2hlciBBa3Rpdml0YWV0CiAgICAvLyBuYWNoIGRlbSBnZXd1ZW5zY2h0ZW4gS3JpdGVy aXVtIChBcnJheS1JbmRleCBiZWkgJ2ZsYWNoJywKICAgIC8vIENvZGUvQmV6ZWljaG51bmcgYmVp IGRlbiBBbHBoYS1Nb2RpKS4gV2lyZCBudXIgbm9jaCBpbSAnZmxhY2gnLU1vZHVzCiAgICAvLyBi ZW51dHp0IOKAlCBkaWUgYW5kZXJlbiBNb2RpIHJlbmRlcm4gQWt0aXZlICsgSW5ha3RpdmUgaW4g c2VwYXJhdGUKICAgIC8vIFNla3Rpb25lbiwgZGFtaXQgIkV4dHJhLUF1c3dhaGwgdW50ZW4iIG9w dGlzY2gga2xhciB3aXJkLgogICAgZnVuY3Rpb24gc29ydEFrdGl2WnVlcnN0KGFyciwgc2VrdW5k YWVyKSB7CiAgICAgICAgdmFyIGlkeCA9IHt9OwogICAgICAgIGxpc3RlLmZvckVhY2goZnVuY3Rp b24oc2MsIGkpIHsgaWR4W3NjLmNvZGVdID0gaTsgfSk7CiAgICAgICAgcmV0dXJuIGFyci5zbGlj ZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgYWEgPSBpc3RDb2RlQWt0 aXYoYSkgPyAwIDogMTsKICAgICAgICAgICAgdmFyIGFiID0gaXN0Q29kZUFrdGl2KGIpID8gMCA6 IDE7CiAgICAgICAgICAgIGlmIChhYSAhPT0gYWIpIHJldHVybiBhYSAtIGFiOwogICAgICAgICAg ICBpZiAoc2VrdW5kYWVyKSByZXR1cm4gc2VrdW5kYWVyKGEsIGIpOwogICAgICAgICAgICByZXR1 cm4gaWR4W2EuY29kZV0gLSBpZHhbYi5jb2RlXTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBF aWdlbmUgU2VrdGlvbiBmdWVyIGluYWt0aXZlIENvZGVzIOKAlCB3aXJkIGluIGFsbGVuIE1vZGkg KGF1c3NlcgogICAgLy8gJ2ZsYWNoJykgYW5zIEVuZGUgYW5nZWhhZW5ndCwgb3B0aXNjaCBhYmdl c2V0enQuCiAgICBmdW5jdGlvbiBpbmFrdGl2QmxvY2soYXJyLCBzZWt1bmRhZXIpIHsKICAgICAg ICBpZiAoIWFyci5sZW5ndGgpIHJldHVybiAnJzsKICAgICAgICB2YXIgc29ydGllcnQgPSBzZWt1 bmRhZXIgPyBhcnIuc2xpY2UoKS5zb3J0KHNla3VuZGFlcikgOiBhcnIuc2xpY2UoKTsKICAgICAg ICByZXR1cm4gJzxkaXYgY2xhc3M9InNjLWdydXBwZSBzYy1ncnVwcGUtaW5ha3RpdiI+JyArCiAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJzYy1ncnVwcGUtdGl0ZWwgc2MtZ3J1cHBlLXRpdGVsLWlu YWt0aXYiPicgKwogICAgICAgICAgICAgICAgJ0luYWt0aXZlIENvZGVzIDxzcGFuIHN0eWxlPSJm b250LXdlaWdodDo1MDAiPignICsgYXJyLmxlbmd0aCArICcpPC9zcGFuPicgKwogICAgICAgICAg ICAgICAgJzxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVk KTtmb250LXdlaWdodDo0MDA7bWFyZ2luLWxlZnQ6OHB4Ij7igJQgZXJzY2hlaW5lbiBuaWNodCBp bSBQbGFudW5ncy1Ecm9wZG93biwgYmVzdGVoZW5kZSBFaW50csOkZ2UgYmxlaWJlbiBzaWNodGJh cjwvc3Bhbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFz cz0ic2MtZ3J1cHBlLWxpc3RlIj4nICsgc29ydGllcnQubWFwKHRpbGUpLmpvaW4oJycpICsgJzwv ZGl2PjwvZGl2Pic7CiAgICB9CgogICAgdmFyIGFrdGl2ZSA9IGxpc3RlLmZpbHRlcihpc3RDb2Rl QWt0aXYpOwogICAgdmFyIGluYWt0aXZlID0gbGlzdGUuZmlsdGVyKGZ1bmN0aW9uKHNjKSB7IHJl dHVybiAhaXN0Q29kZUFrdGl2KHNjKTsgfSk7CgogICAgdmFyIGJvZHkgPSAnJzsKICAgIGlmICht b2R1cyA9PT0gJ2FscGhhJykgewogICAgICAgIHZhciBzb3J0QWxwaGEgPSBmdW5jdGlvbihhLGIp eyByZXR1cm4gKGEuY29kZXx8JycpLmxvY2FsZUNvbXBhcmUoYi5jb2RlfHwnJywnZGUnKTsgfTsK ICAgICAgICBib2R5ID0gJzxkaXYgY2xhc3M9InNjLWdydXBwZS1saXN0ZSI+JyArCiAgICAgICAg ICAgIGFrdGl2ZS5zbGljZSgpLnNvcnQoc29ydEFscGhhKS5tYXAodGlsZSkuam9pbignJykgKyAn PC9kaXY+JzsKICAgICAgICBib2R5ICs9IGluYWt0aXZCbG9jayhpbmFrdGl2ZSwgc29ydEFscGhh KTsKICAgIH0gZWxzZSBpZiAobW9kdXMgPT09ICdiZXonKSB7CiAgICAgICAgdmFyIHNvcnRCZXog PSBmdW5jdGlvbihhLGIpeyByZXR1cm4gKGEuYmV6ZWljaG51bmd8fCcnKS5sb2NhbGVDb21wYXJl KGIuYmV6ZWljaG51bmd8fCcnLCdkZScpOyB9OwogICAgICAgIGJvZHkgPSAnPGRpdiBjbGFzcz0i c2MtZ3J1cHBlLWxpc3RlIj4nICsKICAgICAgICAgICAgYWt0aXZlLnNsaWNlKCkuc29ydChzb3J0 QmV6KS5tYXAodGlsZSkuam9pbignJykgKyAnPC9kaXY+JzsKICAgICAgICBib2R5ICs9IGluYWt0 aXZCbG9jayhpbmFrdGl2ZSwgc29ydEJleik7CiAgICB9IGVsc2UgaWYgKG1vZHVzID09PSAnZmxh Y2gnKSB7CiAgICAgICAgLy8gRHJhZy1Nb2R1czogQWt0aXZlICsgSW5ha3RpdmUgenVzYW1tZW4s IGRhbWl0IFVzZXIgcGVyIERyYWcgamVkZQogICAgICAgIC8vIFJlaWhlbmZvbGdlIGJhdWVuIGth bm4uCiAgICAgICAgYm9keSA9ICc8ZGl2IGNsYXNzPSJzYy1ncnVwcGUtbGlzdGUiIGlkPSJzYy1k cmFnLWNvbnRhaW5lciI+JyArCiAgICAgICAgICAgIHNvcnRBa3Rpdlp1ZXJzdChsaXN0ZSkubWFw KHRpbGUpLmpvaW4oJycpICsgJzwvZGl2Pic7CiAgICB9IGVsc2UgewogICAgICAgIHZhciBncnVw cGVuID0ge307CiAgICAgICAgYWt0aXZlLmZvckVhY2goZnVuY3Rpb24oc2MpIHsKICAgICAgICAg ICAgdmFyIGsgPSBzY2hpY2h0Y29kZUthdGVnb3JpZShzYy5jb2RlKTsKICAgICAgICAgICAgaWYg KCFncnVwcGVuW2sua2V5XSkgZ3J1cHBlbltrLmtleV0gPSB7IGxhYmVsOiBrLmxhYmVsLCBpdGVt czogW10gfTsKICAgICAgICAgICAgZ3J1cHBlbltrLmtleV0uaXRlbXMucHVzaChzYyk7CiAgICAg ICAgfSk7CiAgICAgICAgdmFyIHNvcnRDb2RlID0gZnVuY3Rpb24oYSxiKXsgcmV0dXJuIChhLmNv ZGV8fCcnKS5sb2NhbGVDb21wYXJlKGIuY29kZXx8JycsJ2RlJyk7IH07CiAgICAgICAgT2JqZWN0 LmtleXMoZ3J1cHBlbikuc29ydCgpLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgICAgICB2 YXIgZyA9IGdydXBwZW5ba107CiAgICAgICAgICAgIHZhciBzb3J0aWVydCA9IGcuaXRlbXMuc2xp Y2UoKS5zb3J0KHNvcnRDb2RlKTsKICAgICAgICAgICAgYm9keSArPSAnPGRpdiBjbGFzcz0ic2Mt Z3J1cHBlIj48ZGl2IGNsYXNzPSJzYy1ncnVwcGUtdGl0ZWwiPicgKyBlc2NhcGVIVE1MKGcubGFi ZWwpICsgJyA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NTAwIj4oJyArIGcuaXRlbXMubGVuZ3Ro ICsgJyk8L3NwYW4+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNj LWdydXBwZS1saXN0ZSI+JyArIHNvcnRpZXJ0Lm1hcCh0aWxlKS5qb2luKCcnKSArICc8L2Rpdj48 L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGJvZHkgKz0gaW5ha3RpdkJsb2NrKGluYWt0aXZl LCBzb3J0Q29kZSk7CiAgICB9CgogICAgY29udC5pbm5lckhUTUwgPSB0b29sYmFyICsgYm9keTsK ICAgIHZhciBzZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtbW9kdXMnKTsKICAgIGlm IChzZWwpIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAg ICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2MtZ3J1cHBlLW1vZHVzJywgdGhpcy52YWx1ZSk7CiAg ICAgICAgc2NoaWNodGNvZGVWb3JzY2hhdVJlbmRlcm4oKTsKICAgIH0pOwogICAgaWYgKG1vZHVz ID09PSAnZmxhY2gnKSBzY2hpY2h0Y29kZURyYWdWZXJkcmFodGVuKCk7Cn0KCi8vIERyYWcmRHJv cCBudXIgaW0gJ2ZsYWNoJy1Nb2R1czogcGVyc2lzdGllcnQgZGllIG5ldWUgUmVpaGVuZm9sZ2Ug aW0KLy8gc2NoaWNodGNvZGVzW10tQXJyYXkuIERpZSBhbmRlcmVuIE1vZGkgc29ydGllcmVuIG5h Y2ggZWlnZW5lbiBLcml0ZXJpZW4KLy8gdW5kIHd1ZXJkZW4gRHJhZy1SZWloZW5mb2xnZSBuaWNo dCBzaWNodGJhciB3aWVkZXJnZWJlbi4KZXhwb3J0IGZ1bmN0aW9uIHNjaGljaHRjb2RlRHJhZ1Zl cmRyYWh0ZW4oKSB7CiAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J3NjLWRyYWctY29udGFpbmVyJyk7CiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuOwogICAgdmFy IGRyYWdDb2RlID0gbnVsbDsKICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3Rh cnQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIGNhcmQgPSBlLnRhcmdldC5jbG9zZXN0KCcu c2NoaWNodGNvZGUta2FydGUnKTsKICAgICAgICBpZiAoIWNhcmQpIHJldHVybjsKICAgICAgICBk cmFnQ29kZSA9IGNhcmQuZ2V0QXR0cmlidXRlKCdkYXRhLWNvZGUnKTsKICAgICAgICBjYXJkLmNs YXNzTGlzdC5hZGQoJ3NjLWRyYWdnaW5nJyk7CiAgICAgICAgZS5kYXRhVHJhbnNmZXIuZWZmZWN0 QWxsb3dlZCA9ICdtb3ZlJzsKICAgICAgICB0cnkgeyBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0 ZXh0L3BsYWluJywgZHJhZ0NvZGUpOyB9IGNhdGNoIChfKSB7fQogICAgfSk7CiAgICBjb250YWlu ZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIg Y2FyZCA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5zY2hpY2h0Y29kZS1rYXJ0ZScpOwogICAgICAgIGlm IChjYXJkKSBjYXJkLmNsYXNzTGlzdC5yZW1vdmUoJ3NjLWRyYWdnaW5nJyk7CiAgICAgICAgY29u dGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zYy1kcm9wLWluZGljYXRvcicpLmZvckVhY2goZnVu Y3Rpb24oYykgeyBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NjLWRyb3AtaW5kaWNhdG9yJyk7IH0pOwog ICAgfSk7CiAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBmdW5jdGlv bihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciBjYXJkID0gZS50 YXJnZXQuY2xvc2VzdCgnLnNjaGljaHRjb2RlLWthcnRlJyk7CiAgICAgICAgY29udGFpbmVyLnF1 ZXJ5U2VsZWN0b3JBbGwoJy5zYy1kcm9wLWluZGljYXRvcicpLmZvckVhY2goZnVuY3Rpb24oYykg eyBjLmNsYXNzTGlzdC5yZW1vdmUoJ3NjLWRyb3AtaW5kaWNhdG9yJyk7IH0pOwogICAgICAgIGlm IChjYXJkICYmIGNhcmQuZ2V0QXR0cmlidXRlKCdkYXRhLWNvZGUnKSAhPT0gZHJhZ0NvZGUpIHsK ICAgICAgICAgICAgY2FyZC5jbGFzc0xpc3QuYWRkKCdzYy1kcm9wLWluZGljYXRvcicpOwogICAg ICAgIH0KICAgIH0pOwogICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBmdW5j dGlvbihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciB6aWVsID0g ZS50YXJnZXQuY2xvc2VzdCgnLnNjaGljaHRjb2RlLWthcnRlJyk7CiAgICAgICAgaWYgKCF6aWVs IHx8ICFkcmFnQ29kZSB8fCB6aWVsLmdldEF0dHJpYnV0ZSgnZGF0YS1jb2RlJykgPT09IGRyYWdD b2RlKSByZXR1cm47CiAgICAgICAgdmFyIGxpc3RlID0gKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8 IFtdKS5zbGljZSgpOwogICAgICAgIHZhciB2b25JZHggPSBsaXN0ZS5maW5kSW5kZXgoZnVuY3Rp b24oYykgeyByZXR1cm4gYy5jb2RlID09PSBkcmFnQ29kZTsgfSk7CiAgICAgICAgdmFyIGJpc0lk eCA9IGxpc3RlLmZpbmRJbmRleChmdW5jdGlvbihjKSB7IHJldHVybiBjLmNvZGUgPT09IHppZWwu Z2V0QXR0cmlidXRlKCdkYXRhLWNvZGUnKTsgfSk7CiAgICAgICAgaWYgKHZvbklkeCA8IDAgfHwg YmlzSWR4IDwgMCkgcmV0dXJuOwogICAgICAgIHZhciBtb3ZlZCA9IGxpc3RlLnNwbGljZSh2b25J ZHgsIDEpWzBdOwogICAgICAgIGxpc3RlLnNwbGljZShiaXNJZHgsIDAsIG1vdmVkKTsKICAgICAg ICBhcGlQdXQoJy9hcGkvYWRtaW4nLCBPYmplY3QuYXNzaWduKHt9LCBaLmFkbWluLCB7IHNjaGlj aHRjb2RlczogbGlzdGUgfSkpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFouYWRtaW4u c2NoaWNodGNvZGVzID0gbGlzdGU7CiAgICAgICAgICAgIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5k ZXJuKCk7CiAgICAgICAgICAgIHRvYXN0KCdSZWloZW5mb2xnZSBnZXNwZWljaGVydCcsICdlcmZv bGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IHRvYXN0KCdGZWhsZXI6ICcgKyBl Lm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7CiAgICAgICAgZHJhZ0NvZGUgPSBudWxsOwogICAgfSk7 Cn0KCi8vIERlYWt0aXZpZXJlbiAvIEFrdGl2aWVyZW4gZWluZXMgU2NoaWNodGNvZGVzLiBCZWlt IERlYWt0aXZpZXJlbiBlaW5lcwovLyBub2NoIHZlcndlbmRldGVuIENvZGVzIHdpcmQgZWluIE1v ZGFsIGdlemVpZ3QgbWl0IE9wdGlvbmVuOgovLyAgKGEpIG51ciBzdGlsbGxlZ2VuIChiZXN0ZWhl bmRlIEVpbnRyYWVnZSBiZWhhbHRlbiBkZW4gQ29kZSkKLy8gIChiKSBhbGxlIGJlc3RlaGVuZGVu IEVpbnRyYWVnZSBkdXJjaCBlaW5lbiBhbmRlcmVuIGFrdGl2ZW4gQ29kZSBlcnNldHplbgovLyAg KGMpIGFsbGUgYmVzdGVoZW5kZW4gRWludHJhZWdlIGxlZXJlbgovLyBCZWltIEFrdGl2aWVyZW4g d2lyZCBkaXJla3QgdW1nZXNjaGFsdGV0IChrZWluZSBSdWVja2ZyYWdlIG5vZXRpZykuCmV4cG9y dCBmdW5jdGlvbiBzY2hpY2h0Y29kZVRvZ2dsZUFrdGl2KGNvZGVLZXkpIHsKICAgIHZhciBsaXN0 ZSA9IChaLmFkbWluLnNjaGljaHRjb2RlcyB8fCBbXSkuc2xpY2UoKTsKICAgIHZhciBpZHggPSBs aXN0ZS5maW5kSW5kZXgoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2RlID09PSBjb2RlS2V5OyB9 KTsKICAgIGlmIChpZHggPCAwKSByZXR1cm47CiAgICB2YXIgc2MgPSBsaXN0ZVtpZHhdOwogICAg dmFyIHdhckFrdGl2ID0gaXN0Q29kZUFrdGl2KHNjKTsKCiAgICBpZiAoIXdhckFrdGl2KSB7CiAg ICAgICAgLy8gQWt0aXZpZXJlbjogZGlyZWt0IHVtc2NoYWx0ZW4KICAgICAgICBsaXN0ZVtpZHhd ID0gT2JqZWN0LmFzc2lnbih7fSwgc2MsIHsgYWt0aXY6IHRydWUgfSk7CiAgICAgICAgc2NoaWNo dGNvZGVMaXN0ZVNwZWljaGVybihsaXN0ZSwgJ0NvZGUgIicgKyBzYy5jb2RlICsgJyIgYWt0aXZp ZXJ0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFZvbiBha3RpdiAtPiBpbmFrdGl2 CiAgICB2YXIgdmVyd2VuZHVuZyA9IGNvZGVWZXJ3ZW5kdW5nWmFlaGxlbigpOwogICAgdmFyIGFu emFobCA9IHZlcndlbmR1bmdbc2MuY29kZV0gfHwgMDsKICAgIGlmIChhbnphaGwgPT09IDApIHsK ICAgICAgICBsaXN0ZVtpZHhdID0gT2JqZWN0LmFzc2lnbih7fSwgc2MsIHsgYWt0aXY6IGZhbHNl IH0pOwogICAgICAgIHNjaGljaHRjb2RlTGlzdGVTcGVpY2hlcm4obGlzdGUsICdDb2RlICInICsg c2MuY29kZSArICciIGRlYWt0aXZpZXJ0Jyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8v IE1vZGFsIG1pdCBPcHRpb25lbgogICAgdmFyIGFrdGl2ZUNvZGVzID0gbGlzdGUuZmlsdGVyKGZ1 bmN0aW9uKGMpIHsgcmV0dXJuIGMuY29kZSAhPT0gc2MuY29kZSAmJiBpc3RDb2RlQWt0aXYoYyk7 IH0pOwogICAgYWt0aXZlQ29kZXMuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5jb2Rl IHx8ICcnKS5sb2NhbGVDb21wYXJlKGIuY29kZSB8fCAnJywgJ2RlJyk7IH0pOwogICAgdmFyIG9w dGlvbnNIdG1sID0gYWt0aXZlQ29kZXMubWFwKGZ1bmN0aW9uKGMpIHsKICAgICAgICByZXR1cm4g JzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGMuY29kZSkgKyAnIj4nICsgZXNjYXBlSFRN TChjLmt1ZXJ6ZWwgfHwgYy5jb2RlKSArICcg4oCUICcgKyBlc2NhcGVIVE1MKGMuYmV6ZWljaG51 bmcgfHwgJycpICsgJzwvb3B0aW9uPic7CiAgICB9KS5qb2luKCcnKTsKCiAgICB2YXIga29lcnBl ciA9ICc8cCBzdHlsZT0ibWFyZ2luOjAgMCAxMnB4IDAiPkRlciBDb2RlIDxiPicgKyBlc2NhcGVI VE1MKHNjLmNvZGUpICsgJzwvYj4gKCcgKyBlc2NhcGVIVE1MKHNjLmJlemVpY2hudW5nIHx8ICcn KSArICcpIGlzdCBpbiA8Yj4nICsgYW56YWhsICsgJzwvYj4gJyArCiAgICAgICAgKGFuemFobCA9 PT0gMSA/ICdFaW50cmFnJyA6ICdFaW50csOkZ2VuJykgKyAnIGRlciBQbGFudW5nIHZlcndlbmRl dC4gV2FzIHNvbGwgZGFtaXQgZ2VzY2hlaGVuPzwvcD4nICsKICAgICAgICAnPGRpdiBzdHlsZT0i ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTBweDttYXJnaW4tdG9wOjZw eCI+JyArCiAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6OHB4O2Fs aWduLWl0ZW1zOmZsZXgtc3RhcnQ7Y3Vyc29yOnBvaW50ZXIiPicgKwogICAgICAgICAgICAgICAg JzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2MtZGVha3QtbW9kdXMiIHZhbHVlPSJudXItc3Rp bGxsZWdlbiIgY2hlY2tlZCBzdHlsZT0ibWFyZ2luLXRvcDozcHgiPicgKwogICAgICAgICAgICAg ICAgJzxzcGFuPjxiPk51ciBzdGlsbGxlZ2VuPC9iPiAmbWRhc2g7IGJlc3RlaGVuZGUgRWludHLD pGdlIGJlaGFsdGVuIGRlbiBDb2RlLCBudXIgenVyIE5ldS1FaW5nYWJlIG5pY2h0IG1laHIgenVs YXNzZW4uPC9zcGFuPicgKwogICAgICAgICAgICAnPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxs YWJlbCBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDo4cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtj dXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InJhZGlvIiBu YW1lPSJzYy1kZWFrdC1tb2R1cyIgdmFsdWU9ImVyc2V0emVuIiBzdHlsZT0ibWFyZ2luLXRvcDoz cHgiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuPjxiPkR1cmNoIGFuZGVyZW4gYWt0aXZlbiBD b2RlIGVyc2V0emVuPC9iPicgKwogICAgICAgICAgICAgICAgJzxicj48c2VsZWN0IGlkPSJzYy1l cnNldHplbi1kdXJjaCIgY2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJtYXJnaW4tdG9wOjRweDtt YXgtd2lkdGg6NDAwcHgiICcgKyAoYWt0aXZlQ29kZXMubGVuZ3RoID8gJycgOiAnZGlzYWJsZWQn KSArICc+JyArCiAgICAgICAgICAgICAgICAoYWt0aXZlQ29kZXMubGVuZ3RoID8gb3B0aW9uc0h0 bWwgOiAnPG9wdGlvbj7igJQga2VpbmUgYWt0aXZlbiBBbHRlcm5hdGl2ZW4gdm9yaGFuZGVuIOKA lDwvb3B0aW9uPicpICsKICAgICAgICAgICAgICAgICc8L3NlbGVjdD48L3NwYW4+JyArCiAgICAg ICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmZs ZXg7Z2FwOjhweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2N1cnNvcjpwb2ludGVyIj4nICsKICAg ICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InNjLWRlYWt0LW1vZHVzIiB2 YWx1ZT0ibGVlcmVuIiBzdHlsZT0ibWFyZ2luLXRvcDozcHgiPicgKwogICAgICAgICAgICAgICAg JzxzcGFuPjxiPkJlc3RlaGVuZGUgRWludHLDpGdlIGxlZXJlbjwvYj4gJm1kYXNoOyBhbGxlICcg KyBhbnphaGwgKyAnIFplbGxlbiBtaXQg4oCeJyArIGVzY2FwZUhUTUwoc2MuY29kZSkgKyAnIiB3 ZXJkZW4gYXVmIDxlbT5sZWVyPC9lbT4gZ2VzZXR6dC48L3NwYW4+JyArCiAgICAgICAgICAgICc8 L2xhYmVsPicgKwogICAgICAgICc8L2Rpdj4nOwogICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFz cz0iYnRuIiBpZD0ic2MtZGVha3QtYWJicmVjaGVuIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAg ICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0ic2MtZGVha3Qt b2siPkRlYWt0aXZpZXJlbjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignQ29kZSDigJ4nICsg c2MuY29kZSArICciIGRlYWt0aXZpZXJlbicsIGtvZXJwZXIsIGZ1c3MsIG51bGwpOwogICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWRlYWt0LWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzYy1kZWFrdC1vaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgdmFyIG1vZHVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT0ic2Mt ZGVha3QtbW9kdXMiXTpjaGVja2VkJyk7CiAgICAgICAgaWYgKCFtb2R1cykgcmV0dXJuOwogICAg ICAgIG1vZHVzID0gbW9kdXMudmFsdWU7CiAgICAgICAgdmFyIGVyc2F0eiA9IG51bGw7CiAgICAg ICAgaWYgKG1vZHVzID09PSAnZXJzZXR6ZW4nKSB7CiAgICAgICAgICAgIGlmICghYWt0aXZlQ29k ZXMubGVuZ3RoKSB7IHRvYXN0KCdLZWluZSBFcnNhdHotQ29kZXMgdm9yaGFuZGVuJywgJ3dhcm51 bmcnKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIGVyc2F0eiA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdzYy1lcnNldHplbi1kdXJjaCcpLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgLy8gU2No cml0dCAxOiBBZG1pbi1MaXN0ZSBtaXQgYWt0aXY6ZmFsc2UgbmV1IHNjaHJlaWJlbi4KICAgICAg ICAvLyBTY2hyaXR0IDI6IHBsYW51bmcuanNvbiB1bXNjaHJlaWJlbiAobnVyIGJlaSBlcnNldHpl bi9sZWVyZW4pLgogICAgICAgIGxpc3RlW2lkeF0gPSBPYmplY3QuYXNzaWduKHt9LCBzYywgeyBh a3RpdjogZmFsc2UgfSk7CiAgICAgICAgdmFyIG5ldWVQbGFudW5nID0gbnVsbDsKICAgICAgICBp ZiAobW9kdXMgPT09ICdlcnNldHplbicgfHwgbW9kdXMgPT09ICdsZWVyZW4nKSB7CiAgICAgICAg ICAgIHZhciBuZXVlcldlcnQgPSBtb2R1cyA9PT0gJ2Vyc2V0emVuJyA/IGVyc2F0eiA6ICcnOwog ICAgICAgICAgICBuZXVlUGxhbnVuZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5wbGFu dW5nKSk7CiAgICAgICAgICAgIHZhciBlaW50ciA9IG5ldWVQbGFudW5nLmVpbnRyYWVnZSB8fCB7 fTsKICAgICAgICAgICAgT2JqZWN0LmtleXMoZWludHIpLmZvckVhY2goZnVuY3Rpb24oZCkgewog ICAgICAgICAgICAgICAgdmFyIHRhZyA9IGVpbnRyW2RdIHx8IHt9OwogICAgICAgICAgICAgICAg T2JqZWN0LmtleXModGFnKS5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAg ICAgIGlmICh0YWdbcGlkXSA9PT0gc2MuY29kZSkgewogICAgICAgICAgICAgICAgICAgICAgICBp ZiAobmV1ZXJXZXJ0KSB0YWdbcGlkXSA9IG5ldWVyV2VydDsKICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZSBkZWxldGUgdGFnW3BpZF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgYXBpUHV0KCcvYXBp L2FkbWluJywgT2JqZWN0LmFzc2lnbih7fSwgWi5hZG1pbiwgeyBzY2hpY2h0Y29kZXM6IGxpc3Rl IH0pKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBaLmFkbWluLnNjaGljaHRjb2RlcyA9 IGxpc3RlOwogICAgICAgICAgICBpZiAobmV1ZVBsYW51bmcpIHsKICAgICAgICAgICAgICAgIHJl dHVybiBhcGlQdXQoJy9hcGkvcGxhbnVuZycsIG5ldWVQbGFudW5nKS50aGVuKGZ1bmN0aW9uKCkg ewogICAgICAgICAgICAgICAgICAgIFoucGxhbnVuZyA9IG5ldWVQbGFudW5nOwogICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAg ICAgICAgICBtb2RhbFNjaGxpZXNzZW4oKTsKICAgICAgICAgICAgc2NoaWNodGNvZGVWb3JzY2hh dVJlbmRlcm4oKTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlbkdyaWRSZW5kZXJuID09PSAn ZnVuY3Rpb24nKSBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgIHZhciBtc2cgPSBtb2R1 cyA9PT0gJ2Vyc2V0emVuJyA/IChhbnphaGwgKyAnIEVpbnRyw6RnZSBhdWYgIicgKyBlcnNhdHog KyAnIiB1bWdlc3RlbGx0IHVuZCBDb2RlIGRlYWt0aXZpZXJ0JykKICAgICAgICAgICAgICAgICAg ICA6IG1vZHVzID09PSAnbGVlcmVuJyAgICA/IChhbnphaGwgKyAnIEVpbnRyw6RnZSBnZWxlZXJ0 IHVuZCBDb2RlIGRlYWt0aXZpZXJ0JykKICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAg ICAgICAgICAgICAgICdDb2RlIGRlYWt0aXZpZXJ0IChiZXN0ZWhlbmRlIEVpbnRyw6RnZSB1bnZl cmFlbmRlcnQpJzsKICAgICAgICAgICAgdG9hc3QobXNnLCAnZXJmb2xnJyk7CiAgICAgICAgfSku Y2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNz YWdlLCAnZmVobGVyJyk7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHNj aGljaHRjb2RlTGlzdGVTcGVpY2hlcm4obGlzdGUsIHRvYXN0VGV4dCkgewogICAgYXBpUHV0KCcv YXBpL2FkbWluJywgT2JqZWN0LmFzc2lnbih7fSwgWi5hZG1pbiwgeyBzY2hpY2h0Y29kZXM6IGxp c3RlIH0pKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIFouYWRtaW4uc2NoaWNodGNvZGVzID0g bGlzdGU7CiAgICAgICAgc2NoaWNodGNvZGVWb3JzY2hhdVJlbmRlcm4oKTsKICAgICAgICB0b2Fz dCh0b2FzdFRleHQgfHwgJ0dlc3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgfSkuY2F0Y2goZnVu Y3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9 CgpleHBvcnQgZnVuY3Rpb24gc2NoaWNodGNvZGVFZGl0TW9kYWxaZWlnZW4oY29kZUtleSkgewog ICAgdmFyIHZvcmggPSBjb2RlS2V5ID8gKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8IFtdKS5maW5k KGZ1bmN0aW9uKGMpIHsgcmV0dXJuIGMuY29kZSA9PT0gY29kZUtleTsgfSkgOiBudWxsOwogICAg dmFyIHNjID0gdm9yaCA/IE9iamVjdC5hc3NpZ24oe30sIHZvcmgpIDogeyBjb2RlOiAnJywga3Vl cnplbDogJycsIGJlemVpY2hudW5nOiAnJywgaGludGVyZ3J1bmQ6ICcjQjcxQzFDJywgc2Nocmlm dDogJyNGRkZGRkYnIH07CiAgICB2YXIgaXN0TmV1ID0gIXZvcmg7CiAgICB2YXIgY29kZUZlbGRS ZWFkT25seSA9ICFpc3ROZXUgPyAnIHJlYWRvbmx5IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWJn LWNhcmQtYWx0KTtjdXJzb3I6bm90LWFsbG93ZWQiJyA6ICcnOwogICAgdmFyIGNvZGVIaW53ZWlz ID0gaXN0TmV1ID8gJzxzbWFsbCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1z aXplOjExcHgiPlRlY2huaXNjaGVyIFNjaGzDvHNzZWwsIG5hY2ggQW5sYWdlIG5pY2h0IG1laHIg w6RuZGVyYmFyLjwvc21hbGw+JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzxzbWFs bCBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1zaXplOjExcHgiPlRlY2huaXNj aGVyIFNjaGzDvHNzZWwg4oCUIG5pY2h0IMOkbmRlcmJhciwgZGEgbWl0IGJlc3RlaGVuZGVuIEVp bnRyw6RnZW4gdmVya27DvHBmdC48L3NtYWxsPic7CiAgICB2YXIga29lcnBlciA9ICc8ZGl2IHN0 eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4Ij4nICsKICAg ICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2ZsZXgtd3JhcDp3cmFwIj4n ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIGZvcm0tcGZsaWNodCIgc3R5 bGU9ImZsZXg6MTttaW4td2lkdGg6MTQwcHgiPjxsYWJlbD5Db2RlIChTY2hsw7xzc2VsKTwvbGFi ZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzYy1jb2RlIiBjbGFzcz0iZm9ybS1pbnB1dCIgdmFs dWU9IicgKyBlc2NhcGVBdHRyKHNjLmNvZGUpICsgJyIgbWF4bGVuZ3RoPSIxMCIgZGF0YS1tYXhs ZW5ndGgtY291bnRlcj0iMSIgcGxhY2Vob2xkZXI9InouQi4gRi1ER0wiJyArIGNvZGVGZWxkUmVh ZE9ubHkgKyAnPicgKyBjb2RlSGlud2VpcyArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImZvcm0tZ3J1cHBlIiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxNDBweCI+PGxhYmVs PkvDvHJ6ZWwgKEFuemVpZ2UpPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InNjLWt1ZXJ6 ZWwiIGNsYXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc2Mua3VlcnplbCB8 fCAnJykgKyAnIiBtYXhsZW5ndGg9IjEwIiBkYXRhLW1heGxlbmd0aC1jb3VudGVyPSIxIiBwbGFj ZWhvbGRlcj0iei5CLiBGIj48c21hbGwgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2Zv bnQtc2l6ZTp2YXIoLS1mcy1zbSkiPkt1cnpmb3JtIGluIGRlciBQbGFudW5nc3plbGxlLiBLYW5u IG1pdCBkZW0gQ29kZSBpZGVudGlzY2ggc2Vpbi48L3NtYWxsPjwvZGl2PicgKwogICAgICAgICc8 L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUgZm9ybS1wZmxpY2h0Ij48 bGFiZWw+QmV6ZWljaG51bmcgKExhbmduYW1lKTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlk PSJzYy1iZXplaWNobnVuZyIgY2xhc3M9ImZvcm0taW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0 cihzYy5iZXplaWNobnVuZyB8fCAnJykgKyAnIiBtYXhsZW5ndGg9IjYwIiBkYXRhLW1heGxlbmd0 aC1jb3VudGVyPSIxIiBwbGFjZWhvbGRlcj0iei5CLiBGcsO8aGRpZW5zdCBER0wiPjwvZGl2Picg KwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjEycHg7ZmxleC13cmFwOndy YXA7YWxpZ24taXRlbXM6ZmxleC1lbmQiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9y bS1ncnVwcGUiIHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4Ij48bGFiZWw+SGludGVyZ3J1 bmRmYXJiZTwvbGFiZWw+PGlucHV0IHR5cGU9ImNvbG9yIiBpZD0ic2MtaGludGVyZ3J1bmQiIGNs YXNzPSJmb3JtLWlucHV0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc2MuaGludGVyZ3J1bmQgfHwg JyNCNzFDMUMnKSArICciIHN0eWxlPSJoZWlnaHQ6MzhweDtwYWRkaW5nOjJweCA0cHg7Y3Vyc29y OnBvaW50ZXIiPjwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUi IHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjEzMHB4Ij48bGFiZWw+U2NocmlmdGZhcmJlPC9sYWJl bD48aW5wdXQgdHlwZT0iY29sb3IiIGlkPSJzYy1zY2hyaWZ0IiBjbGFzcz0iZm9ybS1pbnB1dCIg dmFsdWU9IicgKyBlc2NhcGVBdHRyKHNjLnNjaHJpZnQgfHwgJyNGRkZGRkYnKSArICciIHN0eWxl PSJoZWlnaHQ6MzhweDtwYWRkaW5nOjJweCA0cHg7Y3Vyc29yOnBvaW50ZXIiPjwvZGl2PicgKwog ICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiIHN0eWxlPSJmbGV4OjE7bWluLXdp ZHRoOjE0MHB4Ij48bGFiZWw+Vm9yc2NoYXU8L2xhYmVsPjxkaXYgaWQ9InNjLXZvcnNjaGF1IiBz dHlsZT0icGFkZGluZzo4cHggMTJweDtib3JkZXItcmFkaXVzOjZweDtmb250LXdlaWdodDo3MDA7 dGV4dC1hbGlnbjpjZW50ZXI7YmFja2dyb3VuZDonICsgZXNjYXBlQXR0cihzYy5oaW50ZXJncnVu ZCB8fCAnI0I3MUMxQycpICsgJztjb2xvcjonICsgZXNjYXBlQXR0cihzYy5zY2hyaWZ0IHx8ICcj RkZGRkZGJykgKyAnIj4nICsgZXNjYXBlSFRNTChzYy5jb2RlIHx8ICdWb3JzY2hhdScpICsgJzwv ZGl2PjwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICc8L2Rpdj4nOwogICAgdmFyIGZv b3RlciA9ICh2b3JoID8gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0ic2MtbG9l c2NoZW4iIHN0eWxlPSJtYXJnaW4tcmlnaHQ6YXV0byI+TMO2c2NoZW48L2J1dHRvbj4nIDogJycp ICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0ic2MtYWJicmVjaGVuIj5BYmJyZWNo ZW48L2J1dHRvbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBp ZD0ic2Mtc3BlaWNoZXJuIj5TcGVpY2hlcm48L2J1dHRvbj4nOwogICAgbW9kYWxaZWlnZW4odm9y aCA/ICdTY2hpY2h0Y29kZSBiZWFyYmVpdGVuJyA6ICdOZXVlciBTY2hpY2h0Y29kZScsIGtvZXJw ZXIsIGZvb3RlciwgbnVsbCk7CgogICAgZnVuY3Rpb24gdm9yc2NoYXVVcGRhdGUoKSB7CiAgICAg ICAgdmFyIGhnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWhpbnRlcmdydW5kJykudmFs dWU7CiAgICAgICAgdmFyIHNmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXNjaHJpZnQn KS52YWx1ZTsKICAgICAgICB2YXIga3UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Mta3Vl cnplbCcpLnZhbHVlIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1jb2RlJykudmFsdWUg fHwgJ1ZvcnNjaGF1JzsKICAgICAgICB2YXIgdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz Yy12b3JzY2hhdScpOwogICAgICAgIHYuc3R5bGUuYmFja2dyb3VuZCA9IGhnOyB2LnN0eWxlLmNv bG9yID0gc2Y7IHYudGV4dENvbnRlbnQgPSBrdTsKICAgIH0KICAgIFsnc2MtaGludGVyZ3J1bmQn LCdzYy1zY2hyaWZ0Jywnc2Mta3VlcnplbCcsJ3NjLWNvZGUnXS5mb3JFYWNoKGZ1bmN0aW9uKGlk KSB7CiAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyBpZiAoZWwp IGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0Jywgdm9yc2NoYXVVcGRhdGUpOwogICAgfSk7Cgog ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzYy1zcGVpY2hlcm4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewog ICAgICAgIHZhciBkYXRlbiA9IHsKICAgICAgICAgICAgY29kZTogZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3NjLWNvZGUnKS52YWx1ZS50cmltKCksCiAgICAgICAgICAgIGt1ZXJ6ZWw6IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdzYy1rdWVyemVsJykudmFsdWUudHJpbSgpIHx8IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdzYy1jb2RlJykudmFsdWUudHJpbSgpLAogICAgICAgICAgICBiZXpl aWNobnVuZzogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWJlemVpY2hudW5nJykudmFsdWUu dHJpbSgpLAogICAgICAgICAgICBoaW50ZXJncnVuZDogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J3NjLWhpbnRlcmdydW5kJykudmFsdWUsCiAgICAgICAgICAgIHNjaHJpZnQ6IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdzYy1zY2hyaWZ0JykudmFsdWUKICAgICAgICB9OwogICAgICAgIGlmICgh ZGF0ZW4uY29kZSkgeyBwZmxpY2h0ZmVsZEZlaGxlcignc2MtY29kZScsICdDb2RlIGlzdCBQZmxp Y2h0ZmVsZCcpOyByZXR1cm47IH0KICAgICAgICBpZiAoIWRhdGVuLmJlemVpY2hudW5nKSB7IHBm bGljaHRmZWxkRmVobGVyKCdzYy1iZXplaWNobnVuZycsICdCZXplaWNobnVuZyBpc3QgUGZsaWNo dGZlbGQnKTsgcmV0dXJuOyB9CiAgICAgICAgaWYgKGlzdE5ldSAmJiAoWi5hZG1pbi5zY2hpY2h0 Y29kZXMgfHwgW10pLnNvbWUoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2RlID09PSBkYXRlbi5j b2RlOyB9KSkgewogICAgICAgICAgICB0b2FzdCgnQ29kZSDigJ4nICsgZGF0ZW4uY29kZSArICci IGV4aXN0aWVydCBiZXJlaXRzJywgJ3dhcm51bmcnKTsgcmV0dXJuOwogICAgICAgIH0KICAgICAg ICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLnNsaWNlKCk7CiAgICAg ICAgaWYgKGlzdE5ldSkgbGlzdGUucHVzaChkYXRlbik7CiAgICAgICAgZWxzZSB7CiAgICAgICAg ICAgIHZhciBpZHggPSBsaXN0ZS5maW5kSW5kZXgoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2Rl ID09PSB2b3JoLmNvZGU7IH0pOwogICAgICAgICAgICBpZiAoaWR4ID49IDApIGxpc3RlW2lkeF0g PSBkYXRlbjsKICAgICAgICB9CiAgICAgICAgYXBpUHV0KCcvYXBpL2FkbWluJywgT2JqZWN0LmFz c2lnbih7fSwgWi5hZG1pbiwgeyBzY2hpY2h0Y29kZXM6IGxpc3RlIH0pKS50aGVuKGZ1bmN0aW9u KCkgewogICAgICAgICAgICBaLmFkbWluLnNjaGljaHRjb2RlcyA9IGxpc3RlOwogICAgICAgICAg ICAvLyBjb2RlTWFwIGFrdHVhbGlzaWVyZW4KICAgICAgICAgICAgWi5jb2RlTWFwID0ge307CiAg ICAgICAgICAgIGxpc3RlLmZvckVhY2goZnVuY3Rpb24oYykgeyBaLmNvZGVNYXBbYy5jb2RlXSA9 IHsgaGludGVyZ3J1bmQ6IGMuaGludGVyZ3J1bmQsIHNjaHJpZnQ6IGMuc2NocmlmdCwga3Vlcnpl bDogYy5rdWVyemVsIHx8IGMuY29kZSB9OyB9KTsKICAgICAgICAgICAgc2NoaWNodGNvZGVWb3Jz Y2hhdVJlbmRlcm4oKTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlbkdyaWRSZW5kZXJuID09 PSAnZnVuY3Rpb24nKSBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgIG1vZGFsU2NobGll c3NlbigpOwogICAgICAgICAgICB0b2FzdCgnU2NoaWNodGNvZGUgZ2VzcGVpY2hlcnQnLCAnZXJm b2xnJyk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsg ZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwogICAgfSk7CiAgICBpZiAodm9yaCkgewogICAgICAg IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1sb2VzY2hlbicpLmFkZEV2ZW50TGlzdGVuZXIo J2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGJlc3RhZXRpZ2VuKCdTY2hpY2h0Y29k ZSDigJ4nICsgdm9yaC5jb2RlICsgJyIgd2lya2xpY2ggbMO2c2NoZW4/XG5cbkJlc3RlaGVuZGUg RWludHLDpGdlIG1pdCBkaWVzZW0gQ29kZSBibGVpYmVuIGluIGRlciBQbGFudW5nIGVyaGFsdGVu LCB3ZXJkZW4gYWJlciBvaG5lIEZhcmJlIGRhcmdlc3RlbGx0LicsIGZ1bmN0aW9uKCkgewogICAg ICAgICAgICAgICAgdmFyIGxpc3RlID0gKFouYWRtaW4uc2NoaWNodGNvZGVzIHx8IFtdKS5maWx0 ZXIoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jb2RlICE9PSB2b3JoLmNvZGU7IH0pOwogICAgICAg ICAgICAgICAgYXBpUHV0KCcvYXBpL2FkbWluJywgT2JqZWN0LmFzc2lnbih7fSwgWi5hZG1pbiwg eyBzY2hpY2h0Y29kZXM6IGxpc3RlIH0pKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg ICAgICAgIFouYWRtaW4uc2NoaWNodGNvZGVzID0gbGlzdGU7CiAgICAgICAgICAgICAgICAgICAg Wi5jb2RlTWFwID0ge307CiAgICAgICAgICAgICAgICAgICAgbGlzdGUuZm9yRWFjaChmdW5jdGlv bihjKSB7IFouY29kZU1hcFtjLmNvZGVdID0geyBoaW50ZXJncnVuZDogYy5oaW50ZXJncnVuZCwg c2NocmlmdDogYy5zY2hyaWZ0LCBrdWVyemVsOiBjLmt1ZXJ6ZWwgfHwgYy5jb2RlIH07IH0pOwog ICAgICAgICAgICAgICAgICAgIHNjaGljaHRjb2RlVm9yc2NoYXVSZW5kZXJuKCk7CiAgICAgICAg ICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRlbkdyaWRSZW5kZXJuID09PSAnZnVuY3Rpb24nKSBk YXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKCk7 CiAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ1NjaGljaHRjb2RlIGdlbMO2c2NodCcsICdlcmZv bGcnKTsKICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxl cjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICAgICAgfSwgeyB0aXRlbDog J1NjaGljaHRjb2RlIGzDtnNjaGVuJywgamFEYW5nZXI6IHRydWUgfSk7CiAgICAgICAgfSk7CiAg ICB9Cn0K ### FILE: js/admin_common.js | 1528 Ly8gPT09IGFkbWluX2NvbW1vbi5qcyA9PT0KLy8gV2llZGVydmVyd2VuZGJhcmUgVGFiZWxsZW4t SGVsZmVyIGZ1ZXIgQWRtaW4tU3ViLU1vZHVsZS4KCi8vIExpZXN0IGFsbGUgVGFiZWxsZW4tRmVs ZGVyIG1pdCBLbGFzc2UgYGtsYXNzZWAgKHouQi4gJ2ZlaWVydGFnLWlucHV0JykKLy8gaW4gZWlu ZSBMaXN0ZSB2b24gT2JqZWt0ZW4gZWluLiBKZWRlcyBGZWxkIG11c3MgYGRhdGEtaWR4YCAoWmVp bGVuLUluZGV4KQovLyB1bmQgYGRhdGEtZmVsZGAgKFByb3BlcnR5LU5hbWUpIHRyYWdlbi4KLy8K Ly8gYm9vbEZlbGRlcjogTGlzdGUgdm9uIEZlbGQtTmFtZW4sIGRpZSBhbHMgQ2hlY2tib3ggaW50 ZXJwcmV0aWVydCB3ZXJkZW4KLy8gKGYuY2hlY2tlZCBzdGF0dCBmLnZhbHVlKS4gRGVmYXVsdDog bGVlci4KLy8KLy8gdHJpbTogd2VubiB0cnVlLCB3ZXJkZW4gU3RyaW5nLVdlcnRlIGJlaW0gRWlu bGVzZW4gLnRyaW0oKS1hdWZnZXJ1ZmVuLgovLwovLyBSdWVja2dhYmU6IEFycmF5IHZvbiBPYmpl a3RlbiBpbiBkZXIgUmVpaGVuZm9sZ2UgZGVyIGRhdGEtaWR4LVdlcnRlLgpleHBvcnQgZnVuY3Rp b24gdGFiZWxsZUZlbGRlckxlc2VuKGtsYXNzZSwgb3B0cykgewogICAgb3B0cyA9IG9wdHMgfHwg e307CiAgICB2YXIgYm9vbFNldCA9IHt9OwogICAgKG9wdHMuYm9vbEZlbGRlciB8fCBbXSkuZm9y RWFjaChmdW5jdGlvbihrKSB7IGJvb2xTZXRba10gPSB0cnVlOyB9KTsKICAgIHZhciB0cmltID0g ISFvcHRzLnRyaW07CiAgICB2YXIgZmVsZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgn LicgKyBrbGFzc2UpOwogICAgdmFyIG1hcCA9IHt9OwogICAgZmVsZGVyLmZvckVhY2goZnVuY3Rp b24oZikgewogICAgICAgIHZhciBpZHggPSBmLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKTsKICAg ICAgICB2YXIgZmVsZCA9IGYuZ2V0QXR0cmlidXRlKCdkYXRhLWZlbGQnKTsKICAgICAgICBpZiAo IW1hcFtpZHhdKSBtYXBbaWR4XSA9IHt9OwogICAgICAgIGlmIChib29sU2V0W2ZlbGRdKSB7CiAg ICAgICAgICAgIG1hcFtpZHhdW2ZlbGRdID0gZi5jaGVja2VkOwogICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgIHZhciB2ID0gZi52YWx1ZTsKICAgICAgICAgICAgbWFwW2lkeF1bZmVsZF0gPSB0 cmltID8gdi50cmltKCkgOiB2OwogICAgICAgIH0KICAgIH0pOwogICAgLy8gU3RhYmlsIHNvcnRp ZXJ0IG5hY2ggbnVtZXJpc2NoZW0gZGF0YS1pZHgsIGRhbWl0IGRpZSBSZWloZW5mb2xnZQogICAg Ly8gZGVyIERPTS1aZWlsZW4gZXJoYWx0ZW4gYmxlaWJ0IChPYmplY3Qua2V5cyBpc3QgaW4gTW9k ZXJuLUJyb3dzZXJuCiAgICAvLyBzY2hvbiBzb3J0aWVydCwgYWJlciBleHBsaXppdCBpc3Qgc2lj aGVyZXIpLgogICAgcmV0dXJuIE9iamVjdC5rZXlzKG1hcCkKICAgICAgICAuc29ydChmdW5jdGlv bihhLCBiKSB7IHJldHVybiBwYXJzZUludChhLCAxMCkgLSBwYXJzZUludChiLCAxMCk7IH0pCiAg ICAgICAgLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiBtYXBba107IH0pOwp9Cg== ### FILE: js/admin_erscheinungsbild.js | 31741 Ly8gPT09IGFkbWluX2Vyc2NoZWludW5nc2JpbGQuanMgPT09Ci8vIEtvbmZpZ3VyaWVyYmFyZSB2 aXN1ZWxsZSBNYXJraWVydW5nZW4gZnVlciBLb3BmLVplbGxlbiArIExpdmUtU3luYy1GbGFzaC4K Ly8gRGF0ZW5tb2RlbGwgdW50ZXIgWi5hZG1pbi5tYXJraWVydW5nZW4gbWl0IGZ1ZW5mIFR5cGVu OgovLyAgIHNvbmRlcnRhZ0hpbndlaXMsIHNvbmRlcnRhZ1dhcm51bmcsIGZlaWVydGFnV2ljaHRp ZywgaGV1dGVTcGFsdGUsIHN5bmNGbGFzaAovLyBKZWRlIE1hcmtpZXJ1bmcgaGF0IGRpZXNlbGJl IFBhcmFtZXRlci1TdHJ1a3R1ciAoc2llaGUgTUFSS0lFUlVOR19ERUZBVUxUUykuCi8vIEJlaW0g QW53ZW5kZW4gd2VyZGVuIENTUy1DdXN0b20tUHJvcGVydGllcyBhbSA6cm9vdCBnZXNldHp0IHVu ZCBkaWUgZW50LQovLyBzcHJlY2hlbmRlbiBLbGFzc2VuIGluIHN0eWxlLmNzcyBncmVpZmVuIGRh cmF1ZiB6dSAodmFyKC0tbWgtYmcpIGV0Yy4pLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9z dGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIgfSBmcm9tICcuL2NvcmVf dXRpbC5qcyc7CmltcG9ydCB7IGFwaVB1dCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQg eyB0b2FzdCwgZGlydHlSZWdpc3RyaWVyZSwgZGlydHlTZXR6ZW4sIGRpcnR5S2VubnQgfSBmcm9t ICcuL3VpX2RpYWxvZy5qcyc7CgovLyA9PT09PSBEZWZhdWx0cyA9PT09PQoKdmFyIEZFTERfTkFN RU4gPSB7CiAgICBoaW50ZXJncnVuZDogICAgICAgICAgICdIaW50ZXJncnVuZCcsCiAgICB0ZXh0 OiAgICAgICAgICAgICAgICAgICdUZXh0ZmFyYmUnLAogICAgc2NocmlmdGdld2ljaHQ6ICAgICAg ICAnU2NocmlmdGdld2ljaHQnLAogICAgc2NocmlmdGdyb2Vzc2VGYWt0b3I6ICAnU2NocmlmdGdy w7bDn2UnLAogICAgcmFobWVuT2JlbjogICAgICAgICAgICAnUmFobWVuIG9iZW4nLAogICAgcmFo bWVuVW50ZW46ICAgICAgICAgICAnUmFobWVuIHVudGVuJywKICAgIHJhaG1lbkxpbmtzOiAgICAg ICAgICAgJ1JhaG1lbiBsaW5rcycsCiAgICByYWhtZW5SZWNodHM6ICAgICAgICAgICdSYWhtZW4g cmVjaHRzJywKICAgIHJhaG1lbkZhcmJlOiAgICAgICAgICAgJ1JhaG1lbmZhcmJlJywKICAgIGds b3dGYXJiZTogICAgICAgICAgICAgJ0dsb3ctRmFyYmUnLAogICAgZ2xvd0RlY2trcmFmdDogICAg ICAgICAnR2xvdy1JbnRlbnNpdMOkdCcsCiAgICBnbG93V2VpdGU6ICAgICAgICAgICAgICdHbG93 LVdlaXRlJywKICAgIGdsb3dQdWxzOiAgICAgICAgICAgICAgJ0dsb3cgcHVsc2llcnQnLAogICAg c3BhbHRlSGludGVyZ3J1bmQ6ICAgICAnU3BhbHRlbi1Uw7ZudW5nIChHcmlkKScKfTsKCmV4cG9y dCB2YXIgTUFSS0lFUlVOR0VOX01FVEEgPSBbCiAgICB7IGtleTogJ3NvbmRlcnRhZ0hpbndlaXMn LCAgbGFiZWw6ICdTb25kZXJ0YWcg4oCUIEhpbndlaXMnLCAgIGJlc2NocmVpYnVuZzogJ1RhZyBt aXQgU29uZGVydGVybWluIFR5cCDigJ5IaW53ZWlzIicgfSwKICAgIHsga2V5OiAnc29uZGVydGFn V2FybnVuZycsICBsYWJlbDogJ1NvbmRlcnRhZyDigJQgV2FybnVuZycsICAgYmVzY2hyZWlidW5n OiAnVGFnIG1pdCBTb25kZXJ0ZXJtaW4gVHlwIOKAnldhcm51bmciJyB9LAogICAgeyBrZXk6ICdm ZWllcnRhZ1dpY2h0aWcnLCAgIGxhYmVsOiAnV2ljaHRpZ2VyIEZlaWVydGFnJywgICAgYmVzY2hy ZWlidW5nOiAnRmVpZXJ0YWcgbWl0IOKAnldpY2h0aWciLUZsYWcgaW0gQWRtaW4tS2FsZW5kZXIn IH0sCiAgICB7IGtleTogJ2ZlcmllbicsICAgICAgICAgICAgbGFiZWw6ICdGZXJpZW4nLCAgICAg ICAgICAgICAgICBiZXNjaHJlaWJ1bmc6ICdTY2h1bGZlcmllbi1aZWl0cmF1bSDigJQg4oCeSGlu dGVyZ3J1bmQvU2NocmlmdCIgc3R5bGVuIGRlbiBCYWxrZW4gaW0gS29wZiwg4oCeU3BhbHRlbi1U w7ZudW5nIiBmw6RyYnQgZGllIEZlcmllbnRhZ2UgaW0gR3JpZCcgfSwKICAgIHsga2V5OiAnaGV1 dGVTcGFsdGUnLCAgICAgICBsYWJlbDogJ0hFVVRFIOKAlCBUYWdlc3NwYWx0ZScsICAgYmVzY2hy ZWlidW5nOiAnTWFya2llcnVuZyBkZXIgaGV1dGlnZW4gVGFnZXNzcGFsdGUgKERhdGVuLVplbGxl biwgbmljaHQgZGVyIEhlYWRlciknIH0sCiAgICB7IGtleTogJ3N5bmNGbGFzaCcsICAgICAgICAg bGFiZWw6ICdMaXZlLVN5bmMg4oCUIEF1ZmxldWNodGVuJywgYmVzY2hyZWlidW5nOiAnS3VyemVz IEF1ZmxldWNodGVuLCB3ZW5uIGVpbiBhbmRlcmVyIFVzZXIgZWluZSBaZWxsZSDDpG5kZXJ0JyB9 Cl07CgovLyBEZWZhdWx0cyBvcmllbnRpZXJlbiBzaWNoIGFtIGJpc2hlcmlnZW4gU3R5bGUgKHZv ciBkaWVzZW0gRmVhdHVyZSkuIFdlcgovLyBuaWNodHMgc3BlaWNoZXJ0LCBzaWVodCB3ZWl0ZXJo aW4gZGVuIHZlcnRyYXV0ZW4gTG9vay4KZXhwb3J0IHZhciBNQVJLSUVSVU5HRU5fREVGQVVMVFMg PSB7CiAgICBzb25kZXJ0YWdIaW53ZWlzOiB7CiAgICAgICAgaGludGVyZ3J1bmQ6ICcnLCB0ZXh0 OiAnJywKICAgICAgICBzY2hyaWZ0Z2V3aWNodDogNDAwLCBzY2hyaWZ0Z3JvZXNzZUZha3Rvcjog MS4wLAogICAgICAgIHJhaG1lbk9iZW46IDAsIHJhaG1lblVudGVuOiA0LCByYWhtZW5MaW5rczog MCwgcmFobWVuUmVjaHRzOiAwLAogICAgICAgIHJhaG1lbkZhcmJlOiAnIzRhOTBlMicsCiAgICAg ICAgZ2xvd0ZhcmJlOiAnIzRhOTBlMicsIGdsb3dEZWNra3JhZnQ6IDAuNTUsIGdsb3dXZWl0ZTog MSwgZ2xvd1B1bHM6IGZhbHNlCiAgICB9LAogICAgc29uZGVydGFnV2FybnVuZzogewogICAgICAg IGhpbnRlcmdydW5kOiAnJywgdGV4dDogJycsCiAgICAgICAgc2NocmlmdGdld2ljaHQ6IDQwMCwg c2NocmlmdGdyb2Vzc2VGYWt0b3I6IDEuMCwKICAgICAgICByYWhtZW5PYmVuOiAwLCByYWhtZW5V bnRlbjogNCwgcmFobWVuTGlua3M6IDAsIHJhaG1lblJlY2h0czogMCwKICAgICAgICByYWhtZW5G YXJiZTogJyNlNjdlMjInLAogICAgICAgIGdsb3dGYXJiZTogJyNlNjdlMjInLCBnbG93RGVja2ty YWZ0OiAwLjcsIGdsb3dXZWl0ZTogMSwgZ2xvd1B1bHM6IHRydWUKICAgIH0sCiAgICBmZWllcnRh Z1dpY2h0aWc6IHsKICAgICAgICBoaW50ZXJncnVuZDogJyM0QTZBOEMnLCB0ZXh0OiAnI0ZGRkZG RicsCiAgICAgICAgc2NocmlmdGdld2ljaHQ6IDcwMCwgc2NocmlmdGdyb2Vzc2VGYWt0b3I6IDEu MCwKICAgICAgICByYWhtZW5PYmVuOiAwLCByYWhtZW5VbnRlbjogMywgcmFobWVuTGlua3M6IDAs IHJhaG1lblJlY2h0czogMCwKICAgICAgICByYWhtZW5GYXJiZTogJyNENEEwMTcnLAogICAgICAg IGdsb3dGYXJiZTogJyNENEEwMTcnLCBnbG93RGVja2tyYWZ0OiAwLCBnbG93V2VpdGU6IDAsIGds b3dQdWxzOiBmYWxzZQogICAgfSwKICAgIGZlcmllbjogewogICAgICAgIC8vIGhpbnRlcmdydW5k L3RleHQvLi4uIHN0eWxlbiBkZW4gRmVyaWVuLUJBTEtFTiBpbSBLb3BmIChCYWxrZW4gaGF0dGUK ICAgICAgICAvLyBiaXNoZXIga2VpbmVuIEZpbGwgLT4gRGVmYXVsdCB0cmFuc3BhcmVudCwgZ3J1 ZW5lciBMYWJlbC1UZXh0KS4KICAgICAgICBoaW50ZXJncnVuZDogJycsIHRleHQ6ICcjMjU2MDI5 JywKICAgICAgICBzY2hyaWZ0Z2V3aWNodDogNzAwLCBzY2hyaWZ0Z3JvZXNzZUZha3RvcjogMS4w LAogICAgICAgIHJhaG1lbk9iZW46IDAsIHJhaG1lblVudGVuOiAwLCByYWhtZW5MaW5rczogMCwg cmFobWVuUmVjaHRzOiAwLAogICAgICAgIHJhaG1lbkZhcmJlOiAnIzJFN0QzMicsCiAgICAgICAg Z2xvd0ZhcmJlOiAnIzJFN0QzMicsIGdsb3dEZWNra3JhZnQ6IDAsIGdsb3dXZWl0ZTogMCwgZ2xv d1B1bHM6IGZhbHNlLAogICAgICAgIC8vIGZlcmllbi1zcGV6aWZpc2NoOiBIaW50ZXJncnVuZC1U b2VudW5nIGRlciBGZXJpZW50YWdlIGltIEdyaWQuCiAgICAgICAgc3BhbHRlSGludGVyZ3J1bmQ6 ICcjRTBGMEU0JwogICAgfSwKICAgIGhldXRlU3BhbHRlOiB7CiAgICAgICAgaGludGVyZ3J1bmQ6 ICcjRkZGNEQ0JywgdGV4dDogJycsCiAgICAgICAgc2NocmlmdGdld2ljaHQ6IDQwMCwgc2Nocmlm dGdyb2Vzc2VGYWt0b3I6IDEuMCwKICAgICAgICByYWhtZW5PYmVuOiAwLCByYWhtZW5VbnRlbjog MCwgcmFobWVuTGlua3M6IDIsIHJhaG1lblJlY2h0czogMiwKICAgICAgICByYWhtZW5GYXJiZTog JyNENEEwMTcnLAogICAgICAgIGdsb3dGYXJiZTogJyNENEEwMTcnLCBnbG93RGVja2tyYWZ0OiAw LCBnbG93V2VpdGU6IDAsIGdsb3dQdWxzOiBmYWxzZQogICAgfSwKICAgIHN5bmNGbGFzaDogewog ICAgICAgIGhpbnRlcmdydW5kOiAnI0ZGRTY4MCcsIHRleHQ6ICcnLAogICAgICAgIHNjaHJpZnRn ZXdpY2h0OiA0MDAsIHNjaHJpZnRncm9lc3NlRmFrdG9yOiAxLjAsCiAgICAgICAgcmFobWVuT2Jl bjogMCwgcmFobWVuVW50ZW46IDAsIHJhaG1lbkxpbmtzOiAwLCByYWhtZW5SZWNodHM6IDAsCiAg ICAgICAgcmFobWVuRmFyYmU6ICcjRDRBMDE3JywKICAgICAgICBnbG93RmFyYmU6ICcjRkZENzAw JywgZ2xvd0RlY2trcmFmdDogMC44NSwgZ2xvd1dlaXRlOiAxMiwgZ2xvd1B1bHM6IGZhbHNlLAog ICAgICAgIC8vIHN5bmNGbGFzaCBoYXQgYWxzIGVpbnppZ2UgTWFya2llcnVuZyBlaW5lIERhdWVy IGluIG1zIOKAlCB3aWUgbGFuZ2UKICAgICAgICAvLyBkaWUgQW5pbWF0aW9uIGxhZXVmdCwgYmV2 b3IgZGllIFplbGxlIGluIGRlbiBOb3JtYWx6dXN0YW5kIHp1cnVlY2stCiAgICAgICAgLy8ga2Vo cnQuIFdpcmQgbnVyIGJlaSBzeW5jRmxhc2ggZ2VsZXNlbi4KICAgICAgICBkYXVlck1zOiAxNTAw CiAgICB9Cn07CgovLyA9PT09PSBBdWZsb2VzZW4gPT09PT0KLy8gTWVyZ3QgVXNlci1XZXJ0ZSAo Wi5hZG1pbi5tYXJraWVydW5nZW5ba2V5XSkgbWl0IERlZmF1bHRzIOKAlCBmZWhsZW5kZSBGZWxk ZXIKLy8ga29tbWVuIGF1cyBkZW0gRGVmYXVsdC4KCmV4cG9ydCBmdW5jdGlvbiBtYXJraWVydW5n QXVmbG9lc2VuKGtleSkgewogICAgdmFyIGRlZiA9IE1BUktJRVJVTkdFTl9ERUZBVUxUU1trZXld IHx8IHt9OwogICAgdmFyIHVzZXIgPSAoWi5hZG1pbiAmJiBaLmFkbWluLm1hcmtpZXJ1bmdlbiAm JiBaLmFkbWluLm1hcmtpZXJ1bmdlbltrZXldKSB8fCB7fTsKICAgIHZhciBvdXQgPSB7fTsKICAg IE9iamVjdC5rZXlzKGRlZikuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgb3V0W2tdID0g KGsgaW4gdXNlcikgPyB1c2VyW2tdIDogZGVmW2tdOwogICAgfSk7CiAgICByZXR1cm4gb3V0Owp9 CgovLyA9PT09PSBDU1MtQW53ZW5kdW5nID09PT09Ci8vIFNldHp0IGZ1ZXIgamVkZW4gTWFya2ll cnVuZ3N0eXAgZWluZSBHcnVwcGUgQ1NTLUN1c3RvbS1Qcm9wZXJ0aWVzIGFtCi8vIDpyb290LiBQ cmFlZml4IC0tbWFyay08a2V5Pi08ZmVsZD4uIERpZSBzdHlsZS5jc3MtUmVnZWxuIGxlc2VuIGRp ZXNlLgoKdmFyIENTU19QUkFFRklYID0gewogICAgc29uZGVydGFnSGlud2VpczogJ21oaW4nLAog ICAgc29uZGVydGFnV2FybnVuZzogJ213YXInLAogICAgZmVpZXJ0YWdXaWNodGlnOiAgJ21md2kn LAogICAgaGV1dGVTcGFsdGU6ICAgICAgJ21oZScsCiAgICBzeW5jRmxhc2g6ICAgICAgICAnbXNm Jwp9Owp2YXIgUFVMU19BTklNX05BTUUgPSB7CiAgICBzb25kZXJ0YWdIaW53ZWlzOiAncHVsc0hp bndlaXMnLAogICAgc29uZGVydGFnV2FybnVuZzogJ3B1bHNXYXJudW5nJywKICAgIGZlaWVydGFn V2ljaHRpZzogICdwdWxzRmVpZXJ0YWcnLAogICAgaGV1dGVTcGFsdGU6ICAgICAgJ3B1bHNIZXV0 ZScKICAgIC8vIHN5bmNGbGFzaCBoYXQgZWluZW4gZWlnZW5lbiBlaW5tYWxpZ2VuICd6ZWxsZS1m bGFzaCctS2V5ZnJhbWUsIGtlaW4gUHVscwp9OwoKZnVuY3Rpb24gaGV4WnVSZ2JhKGhleCwgZGVj a2tyYWZ0KSB7CiAgICBpZiAoIWhleCB8fCBoZXguY2hhckF0KDApICE9PSAnIycpIHJldHVybiAn cmdiYSgwLDAsMCwnICsgZGVja2tyYWZ0ICsgJyknOwogICAgdmFyIGMgPSBoZXguc3Vic3RyKDEp OwogICAgaWYgKGMubGVuZ3RoID09PSAzKSBjID0gYy5jaGFyQXQoMCkgKyBjLmNoYXJBdCgwKSAr IGMuY2hhckF0KDEpICsgYy5jaGFyQXQoMSkgKyBjLmNoYXJBdCgyKSArIGMuY2hhckF0KDIpOwog ICAgdmFyIHIgPSBwYXJzZUludChjLnN1YnN0cigwLDIpLCAxNiksIGcgPSBwYXJzZUludChjLnN1 YnN0cigyLDIpLCAxNiksIGIgPSBwYXJzZUludChjLnN1YnN0cig0LDIpLCAxNik7CiAgICByZXR1 cm4gJ3JnYmEoJyArIHIgKyAnLCcgKyBnICsgJywnICsgYiArICcsJyArIGRlY2trcmFmdCArICcp JzsKfQoKZnVuY3Rpb24gYm94U2hhZG93QmF1ZW4obSkgewogICAgdmFyIHBhcnRzID0gW107CiAg ICBpZiAobS5yYWhtZW5PYmVuICAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAwICcgICsgbS5yYWht ZW5PYmVuICAgKyAncHggMCAnICsgbS5yYWhtZW5GYXJiZSk7CiAgICBpZiAobS5yYWhtZW5VbnRl biAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAwIC0nICsgbS5yYWhtZW5VbnRlbiAgKyAncHggMCAn ICsgbS5yYWhtZW5GYXJiZSk7CiAgICBpZiAobS5yYWhtZW5MaW5rcyAgPiAwKSBwYXJ0cy5wdXNo KCdpbnNldCAnICAgKyBtLnJhaG1lbkxpbmtzICAgKyAncHggMCAwICcgKyBtLnJhaG1lbkZhcmJl KTsKICAgIGlmIChtLnJhaG1lblJlY2h0cyA+IDApIHBhcnRzLnB1c2goJ2luc2V0IC0nICArIG0u cmFobWVuUmVjaHRzICArICdweCAwIDAgJyArIG0ucmFobWVuRmFyYmUpOwogICAgaWYgKG0uZ2xv d0RlY2trcmFmdCA+IDAgJiYgbS5nbG93V2VpdGUgPiAwKSB7CiAgICAgICAgcGFydHMucHVzaCgn MCAwICcgKyBtLmdsb3dXZWl0ZSArICdweCAnICsgTWF0aC5tYXgoMCwgbS5nbG93V2VpdGUgLSA0 KSArICdweCAnICsgaGV4WnVSZ2JhKG0uZ2xvd0ZhcmJlLCBtLmdsb3dEZWNra3JhZnQpKTsKICAg IH0gZWxzZSBpZiAobS5nbG93RGVja2tyYWZ0ID4gMCkgewogICAgICAgIC8vIEdsb3cgb2huZSBX ZWl0ZSAtPiAxcHggT3V0bGluZS1FZmZla3QKICAgICAgICBwYXJ0cy5wdXNoKCcwIDAgMCAxcHgg JyArIGhleFp1UmdiYShtLmdsb3dGYXJiZSwgbS5nbG93RGVja2tyYWZ0KSk7CiAgICB9CiAgICBy ZXR1cm4gcGFydHMubGVuZ3RoID8gcGFydHMuam9pbignLCAnKSA6ICdub25lJzsKfQoKLy8gUHVs c2UtVmFyaWFudGU6IHN0YXJrZXJlciBHbG93IGltIDUwJS1LZXlmcmFtZSwgYW5oYW5kIGRlciBn bGVpY2hlbgovLyBGYXJiLVdlcnRlIGFiZXIgaG9laGVyZXIgV2VpdGUgKyBEZWNra3JhZnQuIFdp cmQgYWxzIHp3ZWl0ZSBCb3gtU2hhZG93LQovLyBEZWZpbml0aW9uIGdlbGllZmVydCwgZGllIGRp ZSBBbmltYXRpb24gaW50ZXJwb2xpZXJ0LgpmdW5jdGlvbiBib3hTaGFkb3dQdWxzQmF1ZW4obSkg ewogICAgdmFyIHBhcnRzID0gW107CiAgICBpZiAobS5yYWhtZW5PYmVuICAgPiAwKSBwYXJ0cy5w dXNoKCdpbnNldCAwICcgICsgbS5yYWhtZW5PYmVuICAgKyAncHggMCAnICsgbS5yYWhtZW5GYXJi ZSk7CiAgICBpZiAobS5yYWhtZW5VbnRlbiAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAwIC0nICsg bS5yYWhtZW5VbnRlbiAgKyAncHggMCAnICsgbS5yYWhtZW5GYXJiZSk7CiAgICBpZiAobS5yYWht ZW5MaW5rcyAgPiAwKSBwYXJ0cy5wdXNoKCdpbnNldCAnICAgKyBtLnJhaG1lbkxpbmtzICAgKyAn cHggMCAwICcgKyBtLnJhaG1lbkZhcmJlKTsKICAgIGlmIChtLnJhaG1lblJlY2h0cyA+IDApIHBh cnRzLnB1c2goJ2luc2V0IC0nICArIG0ucmFobWVuUmVjaHRzICArICdweCAwIDAgJyArIG0ucmFo bWVuRmFyYmUpOwogICAgLy8gUHVsc2UtU3BpdHplOiBkb3BwZWx0ZSBXZWl0ZSwgZXR3YXMgd2Vu aWdlciBEZWNra3JhZnQKICAgIHZhciBwdWxzV2VpdGUgPSBNYXRoLm1heCg2LCBtLmdsb3dXZWl0 ZSAqIDIpOwogICAgcGFydHMucHVzaCgnMCAwICcgKyBwdWxzV2VpdGUgKyAncHggJyArIE1hdGgu bWF4KDAsIHB1bHNXZWl0ZSAtIDQpICsgJ3B4ICcgKyBoZXhadVJnYmEobS5nbG93RmFyYmUsIE1h dGgubWluKDEsIG0uZ2xvd0RlY2trcmFmdCArIDAuMSkpKTsKICAgIHJldHVybiBwYXJ0cy5qb2lu KCcsICcpOwp9CgpleHBvcnQgZnVuY3Rpb24gbWFya2llcnVuZ2VuQW53ZW5kZW4oKSB7CiAgICB2 YXIgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgIE9iamVjdC5rZXlzKENTU19Q UkFFRklYKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewogICAgICAgIHZhciBwID0gJy0tJyArIENT U19QUkFFRklYW2tleV07CiAgICAgICAgdmFyIG0gPSBtYXJraWVydW5nQXVmbG9lc2VuKGtleSk7 CiAgICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShwICsgJy1iZycsICAgICAgICAgbS5oaW50 ZXJncnVuZCB8fCAndHJhbnNwYXJlbnQnKTsKICAgICAgICByb290LnN0eWxlLnNldFByb3BlcnR5 KHAgKyAnLXRleHQnLCAgICAgICBtLnRleHQgfHwgJ2luaGVyaXQnKTsKICAgICAgICByb290LnN0 eWxlLnNldFByb3BlcnR5KHAgKyAnLWZ3JywgICAgICAgICBTdHJpbmcobS5zY2hyaWZ0Z2V3aWNo dCB8fCA0MDApKTsKICAgICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KHAgKyAnLWZzJywgICAg ICAgICBTdHJpbmcobS5zY2hyaWZ0Z3JvZXNzZUZha3RvciB8fCAxKSk7CiAgICAgICAgcm9vdC5z dHlsZS5zZXRQcm9wZXJ0eShwICsgJy1zaGFkb3cnLCAgICAgYm94U2hhZG93QmF1ZW4obSkpOwog ICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkocCArICctc2hhZG93LXB1bHMnLCBtLmdsb3dQ dWxzID8gYm94U2hhZG93UHVsc0JhdWVuKG0pIDogYm94U2hhZG93QmF1ZW4obSkpOwogICAgICAg IHZhciBhbmltTmFtZSA9IFBVTFNfQU5JTV9OQU1FW2tleV07CiAgICAgICAgcm9vdC5zdHlsZS5z ZXRQcm9wZXJ0eShwICsgJy1hbmltJywgKG0uZ2xvd1B1bHMgJiYgYW5pbU5hbWUpID8gKGFuaW1O YW1lICsgJyAzcyBlYXNlLWluLW91dCBpbmZpbml0ZScpIDogJ25vbmUnKTsKICAgIH0pOwogICAg Ly8gU3luYy1GbGFzaC1EYXVlciBzZXBhcmF0IOKAlCB3aXJkIHZvbSBBbmltYXRpb25zLVRyaWdn ZXIgaW4gc3luYy5qcwogICAgLy8gZ2VsZXNlbiAoZGF0YS1BdHRyaWJ1dCBhdWYgLnplbGxlLWZs YXNoIHNldHp0IENTUy1BbmltYXRpb24tRGF1ZXIpLgogICAgdmFyIHNmID0gbWFya2llcnVuZ0F1 ZmxvZXNlbignc3luY0ZsYXNoJyk7CiAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLW1zZi1k YXVlcicsIChzZi5kYXVlck1zIHx8IDE1MDApICsgJ21zJyk7CgogICAgLy8gRmVyaWVuIGdlc29u ZGVydDogLS1tZmVyLSogc3RldWVybiBkZW4gQmFsa2VuIChLb3BmKSBVTkQgLS1tZmVyLXNwYWx0 ZS1iZwogICAgLy8gZGllIFNwYWx0ZW4tVG9lbnVuZyBpbSBHcmlkLiBCZXd1c3N0IE5JQ0hUIGlt IENTU19QUkFFRklYLUxvb3A6IGRpZSBWYXJzCiAgICAvLyB3ZXJkZW4gbnVyIGdlc2V0enQsIHdl bm4gZGVyIFVzZXIgRmVyaWVuIHdpcmtsaWNoIGtvbmZpZ3VyaWVydCBoYXQg4oCUIHNvbnN0CiAg ICAvLyBncmVpZmVuIGRpZSB0aGVtZS1zcGV6aWZpc2NoZW4gQ1NTLURlZmF1bHRzIChUYWcvTmFj aHQpIGluIHN0eWxlLmNzcwogICAgLy8gd2VpdGVyIChzb25zdCB3dWVyZGUgZGFzIGhlbGxlIERl ZmF1bHQtR3J1ZW4gYXVjaCBpbSBOYWNodG1vZHVzIGVyc2NoZWluZW4pLgogICAgdmFyIGZlclBy b3BzID0gWyctLW1mZXItYmcnLCctLW1mZXItdGV4dCcsJy0tbWZlci1mdycsJy0tbWZlci1mcycs Jy0tbWZlci1zaGFkb3cnLCctLW1mZXItc2hhZG93LXB1bHMnLCctLW1mZXItYW5pbScsJy0tbWZl ci1zcGFsdGUtYmcnXTsKICAgIHZhciBmZXJLb25maWd1cmllcnQgPSAhIShaLmFkbWluICYmIFou YWRtaW4ubWFya2llcnVuZ2VuICYmIFouYWRtaW4ubWFya2llcnVuZ2VuLmZlcmllbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYmIE9iamVjdC5rZXlzKFouYWRtaW4ubWFya2llcnVuZ2Vu LmZlcmllbikubGVuZ3RoKTsKICAgIGlmIChmZXJLb25maWd1cmllcnQpIHsKICAgICAgICB2YXIg bWYgPSBtYXJraWVydW5nQXVmbG9lc2VuKCdmZXJpZW4nKTsKICAgICAgICByb290LnN0eWxlLnNl dFByb3BlcnR5KCctLW1mZXItYmcnLCAgICAgICAgIG1mLmhpbnRlcmdydW5kIHx8ICd0cmFuc3Bh cmVudCcpOwogICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWZlci10ZXh0JywgICAg ICAgbWYudGV4dCB8fCAnaW5oZXJpdCcpOwogICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHko Jy0tbWZlci1mdycsICAgICAgICAgU3RyaW5nKG1mLnNjaHJpZnRnZXdpY2h0IHx8IDcwMCkpOwog ICAgICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoJy0tbWZlci1mcycsICAgICAgICAgU3RyaW5n KG1mLnNjaHJpZnRncm9lc3NlRmFrdG9yIHx8IDEpKTsKICAgICAgICByb290LnN0eWxlLnNldFBy b3BlcnR5KCctLW1mZXItc2hhZG93JywgICAgIGJveFNoYWRvd0JhdWVuKG1mKSk7CiAgICAgICAg cm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1tZmVyLXNoYWRvdy1wdWxzJywgbWYuZ2xvd1B1bHMg PyBib3hTaGFkb3dQdWxzQmF1ZW4obWYpIDogYm94U2hhZG93QmF1ZW4obWYpKTsKICAgICAgICBy b290LnN0eWxlLnNldFByb3BlcnR5KCctLW1mZXItYW5pbScsICAgICAgIG1mLmdsb3dQdWxzID8g J3B1bHNGZXJpZW4gM3MgZWFzZS1pbi1vdXQgaW5maW5pdGUnIDogJ25vbmUnKTsKICAgICAgICBy b290LnN0eWxlLnNldFByb3BlcnR5KCctLW1mZXItc3BhbHRlLWJnJywgIG1mLnNwYWx0ZUhpbnRl cmdydW5kIHx8ICd0cmFuc3BhcmVudCcpOwogICAgfSBlbHNlIHsKICAgICAgICBmZXJQcm9wcy5m b3JFYWNoKGZ1bmN0aW9uKHApIHsgcm9vdC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwKTsgfSk7CiAg ICB9Cn0KCi8vID09PT09IEFkbWluLVVJOiBFZGl0b3IgKyBMaXZlLVZvcnNjaGF1ID09PT09Ci8v Ci8vIExheW91dCAoendlaSBTcGFsdGVuKToKLy8gICDilIzilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJAKLy8gICDilIIgTGl2ZS1Wb3JzY2hhdSAgICAgICDilIIg VGFiLUJhciAoNSBUeXBlbikgICAgICAgICAgICDilIIKLy8gICDilIIgKHN0aWNreSwgbGlua3Mp ICAgICDilIIgRWRpdG9yIChha3RpdmVyIFR5cCByZWNodHMpICDilIIKLy8gICDilIIgIC0gNSBC ZWlzcGllbHplaWxlbiDilIIgICAtIFNla3Rpb25lbiBIaW50ZXJncnVuZCAmICDilIIKLy8gICDi lIIgIC0gRmxhc2gtVGVzdC1CdG4gICDilIIgICAgIFNjaHJpZnQgLyBSYWhtZW4gLyBHbG93ICDi lIIKLy8gICDilIIgICAgICAgICAgICAgICAgICAgICDilIIgICAtIFJlc2V0LUtub3BmIChwcm8g VHlwKSAgICDilIIKLy8gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilJgKLy8gICBTdGlja3kgRm9vdGVyOiBTcGVpY2hlcm4gKHJlY2h0cykgKyBBbGxlIHp1 cnVlY2tzZXR6ZW4gKGxpbmtzKQovLwovLyBUYWItU3RhdGUgaGFlbHQgZGVyIEVkaXRvciBzZWxi c3QgKE1vZHVsZS1WYXIpLiBXaXJkIGJlaW0gUmUtUmVuZGVyCi8vIHVlYmVybm9tbWVuLCBkYW1p dCBkZXIgS2xpY2sgYXVmICJTcGVpY2hlcm4iIG5pY2h0IHp1bSBlcnN0ZW4gVGFiCi8vIHp1cnVl Y2tzcHJpbmd0LgoKdmFyIGFrdGl2ZXJUYWIgPSAnc29uZGVydGFnSGlud2Vpcyc7Ci8vIFNuYXBz aG90IGRlcyBsZXR6dGVuIGdlc3BlaWNoZXJ0ZW4gU3RhbmRzIHZvbiBaLmFkbWluLm1hcmtpZXJ1 bmdlbiDigJQgd2lyZAovLyBmdWVyICJWZXJ3ZXJmZW4iIGJlaW0gQmVzdGFldGlndW5ncy1Nb2Rh bCBnZWJyYXVjaHQuIEJlaW0gZXJzdGVuIFJlbmRlcgovLyBpbml0aWFsIGdlc2V0enQsIGRhbmFj aCBuYWNoIGplZGVtIFNwZWljaGVybiBha3R1YWxpc2llcnQuCnZhciBzbmFwc2hvdE1hcmtpZXJ1 bmdlbiA9IG51bGw7CgpmdW5jdGlvbiBzbmFwc2hvdEFrdHVhbGlzaWVyZW4oKSB7CiAgICBzbmFw c2hvdE1hcmtpZXJ1bmdlbiA9IEpTT04uc3RyaW5naWZ5KFouYWRtaW4ubWFya2llcnVuZ2VuIHx8 IHt9KTsKfQoKZnVuY3Rpb24gZGlydHlUcmFja2VyU2ljaGVyc3RlbGxlbigpIHsKICAgIGlmIChk aXJ0eUtlbm50KCdlcnNjaGVpbnVuZ3NiaWxkJykpIHJldHVybjsKICAgIGRpcnR5UmVnaXN0cmll cmUoJ2Vyc2NoZWludW5nc2JpbGQnLCB7CiAgICAgICAgbGFiZWw6ICdFcnNjaGVpbnVuZ3NiaWxk JywKICAgICAgICBidG5JZHM6IFsnZXJzY2hlaW51bmctc3BlaWNoZXJuJ10sCiAgICAgICAgc2F2 ZUZuOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVyc2NoZWludW5nc2JpbGRTcGVpY2hlcm4oKTsgfSwK ICAgICAgICBkaXNjYXJkRm46IGZ1bmN0aW9uKCkgeyByZXR1cm4gZXJzY2hlaW51bmdzYmlsZFZl cndlcmZlbigpOyB9CiAgICB9KTsKfQoKLy8gQmVpc3BpZWwtRGF0ZW4gZnVlciBkaWUgVm9yc2No YXUtWmVpbGVuIChEYXR1bS9Xb2NoZW50YWcgcHJvIFR5cCkuCnZhciBWT1JTQ0hBVV9CRUlTUElF TCA9IHsKICAgIHNvbmRlcnRhZ0hpbndlaXM6IHsgdGFnOiAnMjIuMDUuJywgd3Q6ICdNbycsIG5v dGl6OiAnQnNwLiDigJ5IaW53ZWlzIi1UYWcnIH0sCiAgICBzb25kZXJ0YWdXYXJudW5nOiB7IHRh ZzogJzIzLjA1LicsIHd0OiAnRGknLCBub3RpejogJ0JzcC4g4oCeV2FybnVuZyItVGFnJyB9LAog ICAgZmVpZXJ0YWdXaWNodGlnOiAgeyB0YWc6ICcyNS4wNS4nLCB3dDogJ01vJywgbm90aXo6ICdC c3AuIFBmaW5nc3Rtb250YWcnIH0sCiAgICBmZXJpZW46ICAgICAgICAgICB7IHRhZzogJzIwLjA3 LicsIHd0OiAnTW8nLCBub3RpejogJ0JzcC4gU29tbWVyZmVyaWVuJyB9LAogICAgaGV1dGVTcGFs dGU6ICAgICAgeyB0YWc6ICcyMy4wNS4nLCB3dDogJ0ZyJywgbm90aXo6ICdCc3AuIGhldXRpZ2Ug VGFnZXNzcGFsdGUnIH0sCiAgICBzeW5jRmxhc2g6ICAgICAgICB7IHRhZzogJ0YtREdMJywgIHd0 OiAnJywgICBub3RpejogJ0JzcC4gTGl2ZS1TeW5jLUF1ZmxldWNodGVuJyB9Cn07CgovLyA9PT09 PSBGb3JtLUtvbXBvbmVudGVuID09PT09CgpmdW5jdGlvbiBmYXJicGlja2VySHRtbChrZXksIGZl bGQsIHdlcnQsIGxlZXJFcmxhdWJ0KSB7CiAgICB2YXIgbGVlciA9ICghd2VydCB8fCB3ZXJ0ID09 PSAnaW5oZXJpdCcgfHwgd2VydCA9PT0gJ3RyYW5zcGFyZW50Jyk7CiAgICB2YXIgZmFyYmUgPSBs ZWVyID8gJyMwMDAwMDAnIDogd2VydDsKICAgIC8vIEtvbXBha3RlciBGYXJicGlja2VyOiAzMngy OCBTd2F0Y2ggKyDDlyB6dW0gTGVlcmVuIChudXIgd2VubiBsZWVyRXJsYXVidCkuCiAgICAvLyBE aXNhYmxlZC1TdGF0ZSB1ZWJlciBDU1MgdmlzdWVsbCBnZWRhZW1wZnQsIG5pY2h0IHVlYmVyIGRh cyBIVE1MLWF0dHIg4oCUCiAgICAvLyBkYW1pdCBkZXIgS2xpY2stSGFuZGxlciBpbW1lciBmZXVl cnQgdW5kIGRlciBUb2dnbGUgcmVhZ2llcmVuIGthbm4uCiAgICByZXR1cm4gJzxzcGFuIGNsYXNz PSJlcnNjaGVpbnVuZy1mYXJiLXdyYXAnICsgKGxlZXIgPyAnIGxlZXInIDogJycpICsgJyI+JyAr CiAgICAgICAgJzxpbnB1dCB0eXBlPSJjb2xvciIgY2xhc3M9ImVyc2NoZWludW5nLWlucHV0IGVy c2NoZWludW5nLWZhcmIiIGRhdGEta2V5PSInICsga2V5ICsgJyIgZGF0YS1mZWxkPSInICsgZmVs ZCArICciIHZhbHVlPSInICsgZXNjYXBlQXR0cihmYXJiZSkgKyAnIj4nICsKICAgICAgICAobGVl ckVybGF1YnQKICAgICAgICAgICAgPyAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJlcnNj aGVpbnVuZy1mYXJiLXgiIGRhdGEta2V5PSInICsga2V5ICsgJyIgZGF0YS1mZWxkPSInICsgZmVs ZCArICciIHRpdGxlPSJGYXJiZSBlbnRmZXJuZW4gLyBTdGFuZGFyZCB2ZXJ3ZW5kZW4iPicgKyAo bGVlciA/ICcrJyA6ICfDlycpICsgJzwvYnV0dG9uPicKICAgICAgICAgICAgOiAnJykgKwogICAg Jzwvc3Bhbj4nOwp9CgpmdW5jdGlvbiBzbGlkZXJIdG1sKGtleSwgZmVsZCwgd2VydCwgbWluLCBt YXgsIHN0ZXAsIGVpbmhlaXQpIHsKICAgIC8vIFJhbmdlLVNsaWRlciArIHN5bmNocm9uaXNpZXJ0 ZXIgTnVtYmVyLUlucHV0IChiZWlkZSB0cmFnZW4gZGVuc2VsYmVuCiAgICAvLyBkYXRhLWtleS9k YXRhLWZlbGQ7IGVpbiBFdmVudC1IYW5kbGVyIGltIGFwcC5qcyBzcGllZ2VsdCBkZW4gV2VydCku CiAgICB2YXIgdiA9ICh3ZXJ0ID09IG51bGwpID8gbWluIDogd2VydDsKICAgIHZhciBhdHRycyA9 ICdkYXRhLWtleT0iJyArIGtleSArICciIGRhdGEtZmVsZD0iJyArIGZlbGQgKyAnIiBtaW49Iicg KyBtaW4gKyAnIiBtYXg9IicgKyBtYXggKyAnIiBzdGVwPSInICsgc3RlcCArICciIHZhbHVlPSIn ICsgZXNjYXBlQXR0cihTdHJpbmcodikpICsgJyInOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJl cnNjaGVpbnVuZy1zbGlkZXItd3JhcCI+JyArCiAgICAgICAgJzxpbnB1dCB0eXBlPSJyYW5nZSIg IGNsYXNzPSJlcnNjaGVpbnVuZy1pbnB1dCBlcnNjaGVpbnVuZy1pbnB1dC1yYW5nZSIgJyArIGF0 dHJzICsgJz4nICsKICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImVyc2NoZWlu dW5nLWlucHV0IGVyc2NoZWludW5nLWlucHV0LW51bSIgICAnICsgYXR0cnMgKyAnPicgKwogICAg ICAgIChlaW5oZWl0ID8gJzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy1laW5oZWl0Ij4nICsgZXNj YXBlSFRNTChlaW5oZWl0KSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAnPC9kaXY+JzsKfQoKZnVu Y3Rpb24gc2VsZWN0SHRtbChrZXksIGZlbGQsIHdlcnQsIG9wdGlvbmVuKSB7CiAgICB2YXIgb3B0 cyA9IG9wdGlvbmVuLm1hcChmdW5jdGlvbihvKSB7CiAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZh bHVlPSInICsgZXNjYXBlQXR0cihvLnYpICsgJyInICsgKFN0cmluZyhvLnYpID09PSBTdHJpbmco d2VydCkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzY2FwZUhUTUwoby5sKSArICc8L29w dGlvbj4nOwogICAgfSkuam9pbignJyk7CiAgICByZXR1cm4gJzxzZWxlY3QgY2xhc3M9ImVyc2No ZWludW5nLWlucHV0IiBkYXRhLWtleT0iJyArIGtleSArICciIGRhdGEtZmVsZD0iJyArIGZlbGQg KyAnIj4nICsgb3B0cyArICc8L3NlbGVjdD4nOwp9CgpmdW5jdGlvbiB0b2dnbGVIdG1sKGtleSwg ZmVsZCwgd2VydCwgYmVzY2hyaWZ0dW5nKSB7CiAgICByZXR1cm4gJzxsYWJlbCBjbGFzcz0iZXJz Y2hlaW51bmctdG9nZ2xlIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJlcnNjaGVpbnVu Zy1pbnB1dCBlcnNjaGVpbnVuZy1pbnB1dC1jaGVjayIgZGF0YS1rZXk9IicgKyBrZXkgKyAnIiBk YXRhLWZlbGQ9IicgKyBmZWxkICsgJyInICsgKHdlcnQgPyAnIGNoZWNrZWQnIDogJycpICsgJz48 c3BhbiBjbGFzcz0iZXJzY2hlaW51bmctdG9nZ2xlLXJhaWwiPjwvc3Bhbj48c3BhbiBjbGFzcz0i ZXJzY2hlaW51bmctdG9nZ2xlLWxhYmVsIj4nICsgZXNjYXBlSFRNTChiZXNjaHJpZnR1bmcgfHwg KHdlcnQgPyAnQU4nIDogJ0FVUycpKSArICc8L3NwYW4+PC9sYWJlbD4nOwp9CgovLyA9PT09PSBW b3JzY2hhdSAobGlua3MsIHN0aWNreSkgPT09PT0KCmZ1bmN0aW9uIHZvcnNjaGF1SHRtbCgpIHsK ICAgIHZhciBzdGFjayA9ICcnOwogICAgTUFSS0lFUlVOR0VOX01FVEEuZm9yRWFjaChmdW5jdGlv bihtZXRhKSB7CiAgICAgICAgdmFyIGIgPSBWT1JTQ0hBVV9CRUlTUElFTFttZXRhLmtleV0gfHwg eyB0YWc6ICc/Jywgd3Q6ICc/Jywgbm90aXo6ICcnIH07CiAgICAgICAgdmFyIGFrdGl2ID0gKG1l dGEua2V5ID09PSBha3RpdmVyVGFiKSA/ICcgYWt0aXYnIDogJyc7CiAgICAgICAgaWYgKG1ldGEu a2V5ID09PSAnc3luY0ZsYXNoJykgewogICAgICAgICAgICBzdGFjayArPSAnPGRpdiBjbGFzcz0i ZXJzY2hlaW51bmctdm9yc2NoYXUtemVpbGUnICsgYWt0aXYgKyAnIiBkYXRhLXR5cD0iJyArIG1l dGEua2V5ICsgJyI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmct dm9yc2NoYXUtY2VsbHMiPicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJlcnNj aGVpbnVuZy12b3JzY2hhdS16ZWxsZSBlcnNjaGVpbnVuZy12b3JzY2hhdS1mbGFzaCIgZGF0YS12 b3JzY2hhdS1rZXk9IicgKyBtZXRhLmtleSArICciPicgKyBlc2NhcGVIVE1MKGIudGFnKSArICc8 L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS1tZXRhIj4nICsKICAgICAgICAgICAgICAgICAg ICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctdm9yc2NoYXUtdHlwIj4nICsgZXNjYXBlSFRNTCht ZXRhLmxhYmVsKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiB0eXBl PSJidXR0b24iIGNsYXNzPSJlcnNjaGVpbnVuZy1mbGFzaC10ZXN0IGJ0bi1taW5pIj7ilrYgRmxh c2ggdGVzdGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg ICAgICc8L2Rpdj4nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0YWNrICs9ICc8ZGl2 IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS16ZWlsZScgKyBha3RpdiArICciIGRhdGEtdHlw PSInICsgbWV0YS5rZXkgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJlcnNj aGVpbnVuZy12b3JzY2hhdS1jZWxscyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xh c3M9ImVyc2NoZWludW5nLXZvcnNjaGF1LXplbGxlIiBkYXRhLXZvcnNjaGF1LWtleT0iJyArIG1l dGEua2V5ICsgJyI+JyArIGVzY2FwZUhUTUwoYi50YWcpICsgJzwvZGl2PicgKwogICAgICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS16ZWxsZSIgZGF0YS12 b3JzY2hhdS1rZXk9IicgKyBtZXRhLmtleSArICciPicgKyBlc2NhcGVIVE1MKGIud3QpICsgJzwv ZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImVyc2NoZWludW5nLXZvcnNjaGF1LW1ldGEiPicgKwogICAgICAgICAgICAgICAgICAg ICc8ZGl2IGNsYXNzPSJlcnNjaGVpbnVuZy12b3JzY2hhdS10eXAiPicgKyBlc2NhcGVIVE1MKG1l dGEubGFiZWwpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJl cnNjaGVpbnVuZy12b3JzY2hhdS1ub3RpeiI+JyArIGVzY2FwZUhUTUwoYi5ub3RpeikgKyAnPC9k aXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwog ICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuICc8YXNpZGUgY2xhc3M9ImVyc2NoZWludW5nLXZv cnNjaGF1LXBhbmVsIj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctdm9yc2No YXUtdGl0ZWwiPkxpdmUtVm9yc2NoYXU8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZXJz Y2hlaW51bmctdm9yc2NoYXUtc3RhY2siPicgKyBzdGFjayArICc8L2Rpdj4nICsKICAgICAgICAn PGRpdiBjbGFzcz0iZXJzY2hlaW51bmctdm9yc2NoYXUtaGlud2VpcyI+S2xpY2sgYXVmIGVpbmUg WmVpbGUgd2VjaHNlbHQgZGVuIGFrdGl2ZW4gRWRpdG9yLVRhYi48L2Rpdj4nICsKICAgICc8L2Fz aWRlPic7Cn0KCi8vID09PT09IFRhYi1CYXIgKHJlY2h0cyBvYmVuKSA9PT09PQovLyBKZWRlciBU YWIgaXN0IGVpbmUgS2FydGUgbWl0IGVjaHRlciBWb3JzY2hhdSBkZXIgTWFya2llcnVuZyDigJQg RGF0dW0rCi8vIFdvY2hlbnRhZyAoYW5hbG9nIFBsYW50YWZlbC1Lb3BmKSBiencuIFNjaGljaHRj b2RlIGJlaSBTeW5jLUZsYXNoIOKAlAovLyB1bmQga3VyemVtIExhYmVsIGRhcnVudGVyLiBBa3Rp dmUgS2FydGUgbWl0IGRpY2tlbSBBa3plbnQtQm9yZGVyLgoKZnVuY3Rpb24gdGFiQmFySHRtbCgp IHsKICAgIHZhciB0YWJzID0gTUFSS0lFUlVOR0VOX01FVEEubWFwKGZ1bmN0aW9uKG1ldGEpIHsK ICAgICAgICB2YXIgY2xzID0gJ2Vyc2NoZWludW5nLXRhYicgKyAobWV0YS5rZXkgPT09IGFrdGl2 ZXJUYWIgPyAnIGFrdGl2JyA6ICcnKTsKICAgICAgICB2YXIgYiA9IFZPUlNDSEFVX0JFSVNQSUVM W21ldGEua2V5XSB8fCB7IHRhZzogJz8nLCB3dDogJycgfTsKICAgICAgICB2YXIgY2hpcEluaGFs dDsKICAgICAgICBpZiAobWV0YS5rZXkgPT09ICdzeW5jRmxhc2gnKSB7CiAgICAgICAgICAgIGNo aXBJbmhhbHQgPQogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy10YWIt Y2hpcC10ZXh0Ij4nICsgZXNjYXBlSFRNTChiLnRhZykgKyAnPC9zcGFuPic7CiAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgY2hpcEluaGFsdCA9CiAgICAgICAgICAgICAgICAnPHNwYW4gY2xh c3M9ImVyc2NoZWludW5nLXRhYi1jaGlwLXRhZyI+JyArIGVzY2FwZUhUTUwoYi50YWcpICsgJzwv c3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZXJzY2hlaW51bmctdGFiLWNo aXAtd3QiPicgKyBlc2NhcGVIVE1MKGIud3QpICsgJzwvc3Bhbj4nOwogICAgICAgIH0KICAgICAg ICAvLyBMYWJlbCBpbiB6d2VpIFplaWxlbiBhdWZ0ZWlsZW4gYW0gR2VkYW5rZW5zdHJpY2gsIGRh bWl0IEthcnRlbgogICAgICAgIC8vIGtvbnNpc3RlbnQgYnJlaXQgKyBMYWJlbCBnbGVpY2ggaG9j aCB3aXJrZW4uCiAgICAgICAgdmFyIGxhYmVsVGVpbGUgPSBtZXRhLmxhYmVsLnNwbGl0KCcg4oCU ICcpOwogICAgICAgIHZhciBsYWJlbEh0bWwgPSBsYWJlbFRlaWxlLmxlbmd0aCA+IDEKICAgICAg ICAgICAgPyAnPHNwYW4gY2xhc3M9ImVyc2NoZWludW5nLXRhYi1sYWJlbC10b3AiPicgKyBlc2Nh cGVIVE1MKGxhYmVsVGVpbGVbMF0pICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAnPHNwYW4g Y2xhc3M9ImVyc2NoZWludW5nLXRhYi1sYWJlbC1ib3QiPicgKyBlc2NhcGVIVE1MKGxhYmVsVGVp bGVbMV0pICsgJzwvc3Bhbj4nCiAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVu Zy10YWItbGFiZWwtdG9wIj4nICsgZXNjYXBlSFRNTChtZXRhLmxhYmVsKSArICc8L3NwYW4+JzsK ICAgICAgICByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iJyArIGNscyArICci IGRhdGEtZXJzY2hlaW51bmctdGFiPSInICsgbWV0YS5rZXkgKyAnIj4nICsKICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy10YWItY2hpcCIgZGF0YS12b3JzY2hhdS1rZXk9Iicg KyBtZXRhLmtleSArICciPicgKyBjaGlwSW5oYWx0ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJlcnNjaGVpbnVuZy10YWItbGFiZWwiPicgKyBsYWJlbEh0bWwgKyAnPC9z cGFuPicgKwogICAgICAgICc8L2J1dHRvbj4nOwogICAgfSkuam9pbignJyk7CiAgICByZXR1cm4g JzxkaXYgY2xhc3M9ImVyc2NoZWludW5nLXRhYi1iYXIiPicgKyB0YWJzICsgJzwvZGl2Pic7Cn0K Ci8vID09PT09IEVkaXRvciAocmVjaHRzIHVudGVuLCBmdWVyIGFrdGl2ZW4gVHlwKSA9PT09PQoK ZnVuY3Rpb24gZWRpdG9ySHRtbCgpIHsKICAgIHZhciBtZXRhID0gTUFSS0lFUlVOR0VOX01FVEEu ZmluZChmdW5jdGlvbihtKSB7IHJldHVybiBtLmtleSA9PT0gYWt0aXZlclRhYjsgfSk7CiAgICBp ZiAoIW1ldGEpIHJldHVybiAnJzsKICAgIHZhciBtID0gbWFya2llcnVuZ0F1ZmxvZXNlbihtZXRh LmtleSk7CiAgICB2YXIgayA9IG1ldGEua2V5OwogICAgdmFyIHNjaHJpZnRnZXdpY2h0T3B0aW9u ZW4gPSBbCiAgICAgICAgeyB2OiA0MDAsIGw6ICdOb3JtYWwnIH0sCiAgICAgICAgeyB2OiA1MDAs IGw6ICdNZWRpdW0nIH0sCiAgICAgICAgeyB2OiA2MDAsIGw6ICdIYWxiZmV0dCcgfSwKICAgICAg ICB7IHY6IDcwMCwgbDogJ0ZldHQnIH0sCiAgICAgICAgeyB2OiA4MDAsIGw6ICdFeHRyYSBGZXR0 JyB9CiAgICBdOwoKICAgIGZ1bmN0aW9uIHNla3Rpb24odGl0ZWwsIGluaGFsdCkgewogICAgICAg IHJldHVybiAnPHNlY3Rpb24gY2xhc3M9ImVyc2NoZWludW5nLXNla3Rpb24iPicgKwogICAgICAg ICAgICAnPGgzIGNsYXNzPSJlcnNjaGVpbnVuZy1zZWt0aW9uLXRpdGVsIj4nICsgZXNjYXBlSFRN TCh0aXRlbCkgKyAnPC9oMz4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImVyc2NoZWludW5n LXNla3Rpb24tZ3JpZCI+JyArIGluaGFsdCArICc8L2Rpdj4nICsKICAgICAgICAnPC9zZWN0aW9u Pic7CiAgICB9CgogICAgZnVuY3Rpb24gZmVsZChsYWJlbCwgY29udHJvbCkgewogICAgICAgIHJl dHVybiAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctZmVsZCI+JyArCiAgICAgICAgICAgICc8bGFi ZWwgY2xhc3M9ImVyc2NoZWludW5nLWZlbGQtbGFiZWwiPicgKyBlc2NhcGVIVE1MKGxhYmVsKSAr ICc8L2xhYmVsPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctZmVsZC1j b250cm9sIj4nICsgY29udHJvbCArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0K CiAgICB2YXIgaGludGVyZ3J1bmRTY2hyaWZ0ID0KICAgICAgICBmZWxkKEZFTERfTkFNRU4uaGlu dGVyZ3J1bmQsICAgICAgICAgIGZhcmJwaWNrZXJIdG1sKGssICdoaW50ZXJncnVuZCcsIG0uaGlu dGVyZ3J1bmQsIHRydWUpKSArCiAgICAgICAgZmVsZChGRUxEX05BTUVOLnRleHQsICAgICAgICAg ICAgICAgICBmYXJicGlja2VySHRtbChrLCAndGV4dCcsICAgICAgICBtLnRleHQsICAgICAgICB0 cnVlKSkgKwogICAgICAgIGZlbGQoRkVMRF9OQU1FTi5zY2hyaWZ0Z2V3aWNodCwgICAgICAgc2Vs ZWN0SHRtbChrLCAnc2NocmlmdGdld2ljaHQnLCAgbS5zY2hyaWZ0Z2V3aWNodCwgc2NocmlmdGdl d2ljaHRPcHRpb25lbikpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4uc2NocmlmdGdyb2Vzc2VG YWt0b3IsIHNsaWRlckh0bWwoaywgJ3NjaHJpZnRncm9lc3NlRmFrdG9yJywgbS5zY2hyaWZ0Z3Jv ZXNzZUZha3RvciwgMC44LCAxLjQsIDAuMDUsICfDlycpKSArCiAgICAgICAgLy8gRmVyaWVuIGhh dCB6dXNhZXR6bGljaCBlaW5lIFNwYWx0ZW4tVG9lbnVuZyBmdWVyIGRpZSBGZXJpZW50YWdlIGlt CiAgICAgICAgLy8gR3JpZCAoQmFsa2VuIG9iZW4gd2lyZCBkdXJjaCBIaW50ZXJncnVuZC9UZXh0 Ly4uLiBnZXN0eWx0KS4KICAgICAgICAoayA9PT0gJ2ZlcmllbicgPyBmZWxkKEZFTERfTkFNRU4u c3BhbHRlSGludGVyZ3J1bmQsIGZhcmJwaWNrZXJIdG1sKGssICdzcGFsdGVIaW50ZXJncnVuZCcs IG0uc3BhbHRlSGludGVyZ3J1bmQsIHRydWUpKSA6ICcnKTsKCiAgICB2YXIgcmFobWVuID0KICAg ICAgICBmZWxkKEZFTERfTkFNRU4ucmFobWVuT2JlbiwgICBzbGlkZXJIdG1sKGssICdyYWhtZW5P YmVuJywgICBtLnJhaG1lbk9iZW4sICAgMCwgOCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZF TERfTkFNRU4ucmFobWVuVW50ZW4sICBzbGlkZXJIdG1sKGssICdyYWhtZW5VbnRlbicsICBtLnJh aG1lblVudGVuLCAgMCwgOCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4ucmFo bWVuTGlua3MsICBzbGlkZXJIdG1sKGssICdyYWhtZW5MaW5rcycsICBtLnJhaG1lbkxpbmtzLCAg MCwgOCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4ucmFobWVuUmVjaHRzLCBz bGlkZXJIdG1sKGssICdyYWhtZW5SZWNodHMnLCBtLnJhaG1lblJlY2h0cywgMCwgOCwgMSwgJ3B4 JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4ucmFobWVuRmFyYmUsICBmYXJicGlja2VySHRt bChrLCAncmFobWVuRmFyYmUnLCBtLnJhaG1lbkZhcmJlLCBmYWxzZSkpOwoKICAgIHZhciBnbG93 ID0KICAgICAgICBmZWxkKEZFTERfTkFNRU4uZ2xvd0ZhcmJlLCAgICAgZmFyYnBpY2tlckh0bWwo aywgJ2dsb3dGYXJiZScsIG0uZ2xvd0ZhcmJlLCBmYWxzZSkpICsKICAgICAgICBmZWxkKEZFTERf TkFNRU4uZ2xvd0RlY2trcmFmdCwgc2xpZGVySHRtbChrLCAnZ2xvd0RlY2trcmFmdCcsIG0uZ2xv d0RlY2trcmFmdCwgMCwgMSwgMC4wNSwgJycpKSArCiAgICAgICAgZmVsZChGRUxEX05BTUVOLmds b3dXZWl0ZSwgICAgIHNsaWRlckh0bWwoaywgJ2dsb3dXZWl0ZScsIG0uZ2xvd1dlaXRlLCAwLCAy NCwgMSwgJ3B4JykpICsKICAgICAgICBmZWxkKEZFTERfTkFNRU4uZ2xvd1B1bHMsICAgICAgdG9n Z2xlSHRtbChrLCAnZ2xvd1B1bHMnLCBtLmdsb3dQdWxzLCBtLmdsb3dQdWxzID8gJ3B1bHNpZXJ0 JyA6ICduaWNodCBwdWxzaWVyZW5kJykpOwoKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZXJzY2hl aW51bmctZWRpdG9yIj4nICsKICAgICAgICAnPGhlYWRlciBjbGFzcz0iZXJzY2hlaW51bmctZWRp dG9yLWtvcGYiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hlaW51bmctZWRpdG9y LXRpdGVsemVpbGUiPicgKwogICAgICAgICAgICAgICAgJzxoMiBjbGFzcz0iZXJzY2hlaW51bmct ZWRpdG9yLXRpdGVsIj4nICsgZXNjYXBlSFRNTChtZXRhLmxhYmVsKSArICc8L2gyPicgKwogICAg ICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW1pbmkgZXJzY2hl aW51bmctdHlwLXJlc2V0IiBkYXRhLXR5cD0iJyArIGsgKyAnIj7ihrogRGllc2VuIFR5cCB6dXLD vGNrc2V0emVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAg JzxwIGNsYXNzPSJlcnNjaGVpbnVuZy1lZGl0b3Itc3ViIj4nICsgZXNjYXBlSFRNTChtZXRhLmJl c2NocmVpYnVuZykgKyAnPC9wPicgKwogICAgICAgICc8L2hlYWRlcj4nICsKICAgICAgICAnPGRp diBjbGFzcz0iZXJzY2hlaW51bmctZWRpdG9yLWJvZHkiPicgKwogICAgICAgICAgICBzZWt0aW9u KCdIaW50ZXJncnVuZCAmIFNjaHJpZnQnLCBoaW50ZXJncnVuZFNjaHJpZnQpICsKICAgICAgICAg ICAgc2VrdGlvbignUmFobWVuJywgICAgICAgICAgICAgICAgcmFobWVuKSArCiAgICAgICAgICAg IHNla3Rpb24oJ0dsb3cnICsgKGsgPT09ICdzeW5jRmxhc2gnID8gJyAmIEFuaW1hdGlvbicgOiAn JyksIGdsb3cgKyAoayA9PT0gJ3N5bmNGbGFzaCcgPyBmZWxkKCdBbmltYXRpb25zLURhdWVyJywg c2xpZGVySHRtbChrLCAnZGF1ZXJNcycsIG0uZGF1ZXJNcyB8fCAxNTAwLCAyMDAsIDUwMDAsIDEw MCwgJ21zJykpIDogJycpKSArCiAgICAgICAgJzwvZGl2PicgKwogICAgJzwvZGl2Pic7Cn0KCi8v ID09PT09IFJlbmRlci1FaW5zdGllZyA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5n c2JpbGRSZW5kZXJuKCkgewogICAgdmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn ZXJzY2hlaW51bmdzYmlsZC1pbmhhbHQnKTsKICAgIGlmICghaG9zdCkgewogICAgICAgIGNvbnNv bGUud2FybignW1ZJM10gRXJzY2hlaW51bmdzYmlsZDogQ29udGFpbmVyICNlcnNjaGVpbnVuZ3Ni aWxkLWluaGFsdCBuaWNodCBpbSBET00gZ2VmdW5kZW4g4oCUIEVkaXRvciBrYW5uIG5pY2h0IGdl cmVuZGVydCB3ZXJkZW4uIFNlcnZlci1Bc3NldC1DYWNoZSBtb2VnbGljaGVyd2Vpc2UgdmVyYWx0 ZXQgKFNlcnZlciBuZXUgc3RhcnRlbiArIFN0cmcrU2hpZnQrUikuJyk7CiAgICAgICAgcmV0dXJu OwogICAgfQogICAgaWYgKHNuYXBzaG90TWFya2llcnVuZ2VuID09PSBudWxsKSBzbmFwc2hvdEFr dHVhbGlzaWVyZW4oKTsKICAgIGRpcnR5VHJhY2tlclNpY2hlcnN0ZWxsZW4oKTsKICAgIHRyeSB7 CiAgICAgICAgaG9zdC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXJzY2hl aW51bmctbGF5b3V0Ij4nICsKICAgICAgICAgICAgICAgIHZvcnNjaGF1SHRtbCgpICsKICAgICAg ICAgICAgICAgICc8bWFpbiBjbGFzcz0iZXJzY2hlaW51bmctZWRpdG9yLXNwYWx0ZSI+JyArCiAg ICAgICAgICAgICAgICAgICAgdGFiQmFySHRtbCgpICsKICAgICAgICAgICAgICAgICAgICBlZGl0 b3JIdG1sKCkgKwogICAgICAgICAgICAgICAgJzwvbWFpbj4nICsKICAgICAgICAgICAgJzwvZGl2 PicgKwogICAgICAgICAgICAnPGZvb3RlciBjbGFzcz0iZXJzY2hlaW51bmctZm9vdGVyIj4nICsK ICAgICAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vj IiBpZD0iZXJzY2hlaW51bmctenVydWVja3NldHplbiI+QWxsZSBhdWYgU3RhbmRhcmQgenVyw7xj a3NldHplbjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImVyc2NoZWlu dW5nLWZvb3Rlci1pbmZvIj7DhG5kZXJ1bmdlbiB3aXJrZW4gc29mb3J0IGFscyBWb3JzY2hhdS4g RXJzdCDigJ5TcGVpY2hlcm4iIHBlcnNpc3RpZXJ0IHNpZS48L2Rpdj4nICsKICAgICAgICAgICAg ICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaWQ9ImVy c2NoZWludW5nLXNwZWljaGVybiI+U3BlaWNoZXJuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8 L2Zvb3Rlcj4nOwogICAgfSBjYXRjaCAoZSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tWSTNd IEVyc2NoZWludW5nc2JpbGQtUmVuZGVyIGZlaGxnZXNjaGxhZ2VuOicsIGUpOwogICAgICAgIGhv c3QuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MTZweDtjb2xvcjojYjAyMDIwO2Jh Y2tncm91bmQ6I2ZmZjRmNDtib3JkZXI6MXB4IHNvbGlkICNmMGMwYzA7Ym9yZGVyLXJhZGl1czo2 cHgiPicgKwogICAgICAgICAgICAnPHN0cm9uZz5FZGl0b3Iga29ubnRlIG5pY2h0IGdlcmVuZGVy dCB3ZXJkZW4uPC9zdHJvbmc+PGJyPicgKwogICAgICAgICAgICBlc2NhcGVIVE1MKGUgJiYgZS5t ZXNzYWdlID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpKSArCiAgICAgICAgICAgICc8YnI+PGJyPjxz cGFuIHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjojNjY2Ij5EZXRhaWxzIGluIGRlciBEZXZU b29scy1Lb25zb2xlIChGMTIpLjwvc3Bhbj48L2Rpdj4nOwogICAgfQp9CgovLyBXZWNoc2VsdCBk ZW4gYWt0aXZlbiBUYWIgKEVkaXRvci1TcGFsdGUpIHVuZCByZS1yZW5kZXJ0IG9obmUgVm9yc2No YXUgenUKLy8gcmVzZXR0ZW4gKFZvcnNjaGF1IGlzdCBvaG5laGluIHRoZW1lLXVlYmVyZ3JlaWZl bmQgZ2VzcGllZ2VsdCkuCmV4cG9ydCBmdW5jdGlvbiBlcnNjaGVpbnVuZ3NUYWJXZWNoc2Vsbihu ZXVlclRhYikgewogICAgaWYgKCFNQVJLSUVSVU5HRU5fTUVUQS5maW5kKGZ1bmN0aW9uKG0pIHsg cmV0dXJuIG0ua2V5ID09PSBuZXVlclRhYjsgfSkpIHJldHVybjsKICAgIGFrdGl2ZXJUYWIgPSBu ZXVlclRhYjsKICAgIGVyc2NoZWludW5nc2JpbGRSZW5kZXJuKCk7Cn0KCi8vIEVpbnplbG5lbiBU eXAgYXVmIERlZmF1bHQgenVydWVja3NldHplbiAoaW4tbWVtb3J5OyBzcGVpY2hlcnQgZXJzdCBi ZWltCi8vICJTcGVpY2hlcm4iLUtsaWNrKS4KZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5nc1R5 cFp1cnVlY2tzZXR6ZW4odHlwKSB7CiAgICBpZiAoWi5hZG1pbi5tYXJraWVydW5nZW4gJiYgWi5h ZG1pbi5tYXJraWVydW5nZW5bdHlwXSkgewogICAgICAgIGRlbGV0ZSBaLmFkbWluLm1hcmtpZXJ1 bmdlblt0eXBdOwogICAgfQogICAgbWFya2llcnVuZ2VuQW53ZW5kZW4oKTsKICAgIGVyc2NoZWlu dW5nc2JpbGRSZW5kZXJuKCk7CiAgICBpZiAoZGlydHlLZW5udCgnZXJzY2hlaW51bmdzYmlsZCcp KSB7CiAgICAgICAgdmFyIGpldHp0ID0gSlNPTi5zdHJpbmdpZnkoWi5hZG1pbi5tYXJraWVydW5n ZW4gfHwge30pOwogICAgICAgIGRpcnR5U2V0emVuKCdlcnNjaGVpbnVuZ3NiaWxkJywgamV0enQg IT09IHNuYXBzaG90TWFya2llcnVuZ2VuKTsKICAgIH0KfQoKLy8gRmFyYi1YLUJ1dHRvbjogVG9n Z2xlIHp3aXNjaGVuICJGYXJiZSBnZXNldHp0IiB1bmQgIlN0YW5kYXJkIgpleHBvcnQgZnVuY3Rp b24gZXJzY2hlaW51bmdGYXJiZVRvZ2dsZShrZXksIGZlbGQpIHsKICAgIGlmICghWi5hZG1pbi5t YXJraWVydW5nZW4pIFouYWRtaW4ubWFya2llcnVuZ2VuID0ge307CiAgICBpZiAoIVouYWRtaW4u bWFya2llcnVuZ2VuW2tleV0pIFouYWRtaW4ubWFya2llcnVuZ2VuW2tleV0gPSB7fTsKICAgIHZh ciBha3R1ZWxsID0gWi5hZG1pbi5tYXJraWVydW5nZW5ba2V5XVtmZWxkXTsKICAgIGlmIChha3R1 ZWxsID09PSAnJyB8fCBha3R1ZWxsID09PSBudWxsKSB7CiAgICAgICAgLy8gQXVmIERlZmF1bHQg enVydWVja3NldHplbgogICAgICAgIGRlbGV0ZSBaLmFkbWluLm1hcmtpZXJ1bmdlbltrZXldW2Zl bGRdOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBMZWVyIHNldHplbgogICAgICAgIFouYWRtaW4u bWFya2llcnVuZ2VuW2tleV1bZmVsZF0gPSAnJzsKICAgIH0KICAgIG1hcmtpZXJ1bmdlbkFud2Vu ZGVuKCk7CiAgICBlcnNjaGVpbnVuZ3NiaWxkUmVuZGVybigpOwogICAgaWYgKGRpcnR5S2VubnQo J2Vyc2NoZWludW5nc2JpbGQnKSkgewogICAgICAgIHZhciBqZXR6dCA9IEpTT04uc3RyaW5naWZ5 KFouYWRtaW4ubWFya2llcnVuZ2VuIHx8IHt9KTsKICAgICAgICBkaXJ0eVNldHplbignZXJzY2hl aW51bmdzYmlsZCcsIGpldHp0ICE9PSBzbmFwc2hvdE1hcmtpZXJ1bmdlbik7CiAgICB9Cn0KCi8v ID09PT09IFdlcnRlIGVpbnNhbW1lbG4gKyBTcGVpY2hlcm4gPT09PT0KLy8KLy8gV2ljaHRpZzog bnVyIGRpZSBpbSBET00gdm9yaGFuZGVuZW4gSW5wdXRzIHdlcmRlbiBhdXNnZWxlc2VuLiBEYSBk ZXIKLy8gbmV1ZSBFZGl0b3IgamV3ZWlscyBudXIgZWluZW4gVHlwLUJsb2NrIHNpY2h0YmFyIHpl aWd0IChUYWItU3dpdGNoZXIpLAovLyBkdWVyZmVuIG5pY2h0LXNpY2h0YmFyZSBUeXBlbiBOSUNI VCBhdWYge30genVydWVja2dlc2V0enQgd2VyZGVuIOKAlCBkYWhlcgovLyBsaWVmZXJ0IGlucHV0 c0F1c2xlc2VuKCkgZWluIHBhcnRpZWxsZXMgT2JqZWt0IHVuZCBkZXIgQXVmcnVmZXIgbWVyZ3Qu CgpmdW5jdGlvbiBpbnB1dHNBdXNsZXNlbigpIHsKICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2Vyc2NoZWludW5nc2JpbGQtaW5oYWx0Jyk7CiAgICBpZiAoIWhvc3QpIHJl dHVybiBudWxsOwogICAgdmFyIHJlc3VsdCA9IHt9OwogICAgdmFyIGlucHV0cyA9IGhvc3QucXVl cnlTZWxlY3RvckFsbCgnLmVyc2NoZWludW5nLWlucHV0Jyk7CiAgICBpbnB1dHMuZm9yRWFjaChm dW5jdGlvbihpbnApIHsKICAgICAgICB2YXIga2V5ID0gaW5wLmdldEF0dHJpYnV0ZSgnZGF0YS1r ZXknKTsKICAgICAgICB2YXIgZmVsZCA9IGlucC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmVsZCcpOwog ICAgICAgIGlmICgha2V5IHx8ICFmZWxkKSByZXR1cm47CiAgICAgICAgdmFyIHdlcnQ7CiAgICAg ICAgaWYgKGlucC50eXBlID09PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIHdlcnQgPSBpbnAu Y2hlY2tlZDsKICAgICAgICB9IGVsc2UgaWYgKGlucC50eXBlID09PSAnbnVtYmVyJyB8fCBpbnAu dHlwZSA9PT0gJ3JhbmdlJykgewogICAgICAgICAgICB3ZXJ0ID0gcGFyc2VGbG9hdChpbnAudmFs dWUpOwogICAgICAgICAgICBpZiAoaXNOYU4od2VydCkpIHdlcnQgPSAwOwogICAgICAgIH0gZWxz ZSBpZiAoaW5wLnR5cGUgPT09ICdjb2xvcicpIHsKICAgICAgICAgICAgLy8gRmFyYnBpY2tlci1X cmFwIG1pdCBLbGFzc2UgLmxlZXIgPSAiU3RhbmRhcmQgdmVyd2VuZGVuIgogICAgICAgICAgICB2 YXIgd3JhcCA9IGlucC5jbG9zZXN0KCcuZXJzY2hlaW51bmctZmFyYi13cmFwJyk7CiAgICAgICAg ICAgIGlmICh3cmFwICYmIHdyYXAuY2xhc3NMaXN0LmNvbnRhaW5zKCdsZWVyJykpIHdlcnQgPSAn JzsKICAgICAgICAgICAgZWxzZSB3ZXJ0ID0gaW5wLnZhbHVlOwogICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgIHdlcnQgPSBpbnAudmFsdWU7CiAgICAgICAgICAgIGlmIChmZWxkID09PSAnc2No cmlmdGdld2ljaHQnKSB3ZXJ0ID0gcGFyc2VJbnQod2VydCwgMTApIHx8IDQwMDsKICAgICAgICB9 CiAgICAgICAgaWYgKCFyZXN1bHRba2V5XSkgcmVzdWx0W2tleV0gPSB7fTsKICAgICAgICByZXN1 bHRba2V5XVtmZWxkXSA9IHdlcnQ7CiAgICB9KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCi8vIE1l cmdlLUhlbHBlcjogc2NocmVpYnQgbnVyIGRpZSBleHBsaXppdCBnZWxlc2VuZW4gRmVsZGVyIGlu Ci8vIFouYWRtaW4ubWFya2llcnVuZ2VuIOKAlCBhbmRlcmUgVGFiLVdlcnRlIGJsZWliZW4gdW5h bmdldGFzdGV0LgpmdW5jdGlvbiBtZXJnZU5hY2hTdGF0ZSh3ZXJ0ZSkgewogICAgaWYgKCF3ZXJ0 ZSkgcmV0dXJuOwogICAgaWYgKCFaLmFkbWluLm1hcmtpZXJ1bmdlbikgWi5hZG1pbi5tYXJraWVy dW5nZW4gPSB7fTsKICAgIE9iamVjdC5rZXlzKHdlcnRlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsK ICAgICAgICBpZiAoIVouYWRtaW4ubWFya2llcnVuZ2VuW2tdKSBaLmFkbWluLm1hcmtpZXJ1bmdl bltrXSA9IHt9OwogICAgICAgIE9iamVjdC5rZXlzKHdlcnRlW2tdKS5mb3JFYWNoKGZ1bmN0aW9u KGYpIHsKICAgICAgICAgICAgWi5hZG1pbi5tYXJraWVydW5nZW5ba11bZl0gPSB3ZXJ0ZVtrXVtm XTsKICAgICAgICB9KTsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gZXJzY2hlaW51bmdzYmls ZFNwZWljaGVybigpIHsKICAgIC8vIEFrdGl2ZSBUYWItSW5wdXRzIGF1c2xlc2VuICsgaW4gWi5h ZG1pbi5tYXJraWVydW5nZW4gbWVyZ2VuIChXZXJ0ZQogICAgLy8gYW5kZXJlciBUYWJzIHNpbmQg ZG9ydCBkdXJjaCB2b3JhdXNnZWdhbmdlbmUgdm9yc2NoYXVBa3R1YWxpc2llcmVuLQogICAgLy8g Q2FsbHMgYnp3LiBJbml0aWFsLUxvYWQgc2Nob24ga29ycmVrdCkuCiAgICBtZXJnZU5hY2hTdGF0 ZShpbnB1dHNBdXNsZXNlbigpKTsKICAgIHJldHVybiBhcGlQdXQoJy9hcGkvYWRtaW4nLCBaLmFk bWluKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHRvYXN0KCdFcnNjaGVpbnVuZ3NiaWxkIGdl c3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgICAgIG1hcmtpZXJ1bmdlbkFud2VuZGVuKCk7CiAg ICAgICAgc25hcHNob3RBa3R1YWxpc2llcmVuKCk7CiAgICAgICAgZGlydHlTZXR6ZW4oJ2Vyc2No ZWludW5nc2JpbGQnLCBmYWxzZSk7CiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpIHsKICAgICAg ICB0b2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2VuOiAnICsgKGVyciAmJiBlcnIubWVzc2Fn ZSB8fCAndW5iZWthbm50JyksICdmZWhsZXInKTsKICAgICAgICB0aHJvdyBlcnI7CiAgICB9KTsK fQoKZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5nc2JpbGRadXJ1ZWNrc2V0emVuKCkgewogICAg aWYgKFouYWRtaW4ubWFya2llcnVuZ2VuKSBkZWxldGUgWi5hZG1pbi5tYXJraWVydW5nZW47CiAg ICByZXR1cm4gYXBpUHV0KCcvYXBpL2FkbWluJywgWi5hZG1pbikudGhlbihmdW5jdGlvbigpIHsK ICAgICAgICB0b2FzdCgnQXVmIFN0YW5kYXJkIHp1csO8Y2tnZXNldHp0JywgJ2VyZm9sZycpOwog ICAgICAgIG1hcmtpZXJ1bmdlbkFud2VuZGVuKCk7CiAgICAgICAgc25hcHNob3RBa3R1YWxpc2ll cmVuKCk7CiAgICAgICAgZGlydHlTZXR6ZW4oJ2Vyc2NoZWludW5nc2JpbGQnLCBmYWxzZSk7CiAg ICAgICAgZXJzY2hlaW51bmdzYmlsZFJlbmRlcm4oKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVy cikgewogICAgICAgIHRvYXN0KCdadXLDvGNrc2V0emVuIGZlaGxnZXNjaGxhZ2VuOiAnICsgKGVy ciAmJiBlcnIubWVzc2FnZSB8fCAndW5iZWthbm50JyksICdmZWhsZXInKTsKICAgIH0pOwp9Cgov LyBWZXJ3aXJmdCBkaWUgaW4tbWVtb3J5LUFlbmRlcnVuZ2VuIHVuZCBzdGVsbHQgZGVuIGxldHp0 ZW4gZ2VzcGVpY2hlcnRlbgovLyBTdGFuZCAoU25hcHNob3QpIHdpZWRlciBoZXIg4oCUIEF1ZnJ1 ZmVyIGlzdCBkZXIgIlZlcndlcmZlbiItQnV0dG9uIGltCi8vIGRpcnR5UHJ1ZWZlbi1Nb2RhbCBi ZWltIFZlcmxhc3NlbiBkZXMgVGFicy4KZXhwb3J0IGZ1bmN0aW9uIGVyc2NoZWludW5nc2JpbGRW ZXJ3ZXJmZW4oKSB7CiAgICBpZiAoc25hcHNob3RNYXJraWVydW5nZW4pIHsKICAgICAgICB0cnkg eyBaLmFkbWluLm1hcmtpZXJ1bmdlbiA9IEpTT04ucGFyc2Uoc25hcHNob3RNYXJraWVydW5nZW4p OyB9CiAgICAgICAgY2F0Y2goZSkgeyBaLmFkbWluLm1hcmtpZXJ1bmdlbiA9IHt9OyB9CiAgICB9 IGVsc2UgewogICAgICAgIGRlbGV0ZSBaLmFkbWluLm1hcmtpZXJ1bmdlbjsKICAgIH0KICAgIG1h cmtpZXJ1bmdlbkFud2VuZGVuKCk7CiAgICBlcnNjaGVpbnVuZ3NiaWxkUmVuZGVybigpOwogICAg cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpOwp9CgovLyA9PT09PSBMaXZlLVZvcnNjaGF1IGJlaSBq ZWRlciBBZW5kZXJ1bmcgPT09PT0KLy8gV2lyZCB2b20gRXZlbnQtSGFuZGxlciBhdWZnZXJ1ZmVu LCBvaG5lIHp1IHNwZWljaGVybi4KCmV4cG9ydCBmdW5jdGlvbiB2b3JzY2hhdUFrdHVhbGlzaWVy ZW4oKSB7CiAgICAvLyBOdXIgZGllIGFrdHVlbGwgaW0gRE9NIHNpY2h0YmFyZW4gSW5wdXRzICg9 IGFrdGl2ZXIgRWRpdG9yLVRhYikKICAgIC8vIGluIGRlbiBTdGF0ZSBtZXJnZW4uIFdlcnRlIGFu ZGVyZXIgVGFicyBibGVpYmVuIHNvIGVyaGFsdGVuIOKAlAogICAgLy8gd2ljaHRpZywgd2VpbCBk aWUgbmljaHQtc2ljaHRiYXJlbiBFZGl0b3JlbiBiZWltIFRhYi1Td2l0Y2gKICAgIC8vIHJlLXJl bmRlcnQgd2VyZGVuIHVuZCBpaHJlIFdlcnRlIGF1cyBaLmFkbWluLm1hcmtpZXJ1bmdlbiB6aWVo ZW4uCiAgICBtZXJnZU5hY2hTdGF0ZShpbnB1dHNBdXNsZXNlbigpKTsKICAgIG1hcmtpZXJ1bmdl bkFud2VuZGVuKCk7CiAgICAvLyBTb2JhbGQgZGVyIFN0YXRlIHZvbSBTbmFwc2hvdCBhYndlaWNo dCwgZ2lsdCBkZXIgVGFiIGFscyBkaXJ0eS4KICAgIC8vIFdpciB2ZXJnbGVpY2hlbiBKU09OLXNl cmlhbGlzaWVydCDigJQgYXVzcmVpY2hlbmQgZ2VuYXUgZnVlciBkZW4gVXNlLQogICAgLy8gQ2Fz ZSAoa2VpbmUgZ3Jvc3NlbiBPYmpla3RlLCBrZWluIFJlaWhlbmZvbGdlbi1BZXJnZXIpLgogICAg aWYgKGRpcnR5S2VubnQoJ2Vyc2NoZWludW5nc2JpbGQnKSkgewogICAgICAgIHZhciBqZXR6dCA9 IEpTT04uc3RyaW5naWZ5KFouYWRtaW4ubWFya2llcnVuZ2VuIHx8IHt9KTsKICAgICAgICBkaXJ0 eVNldHplbignZXJzY2hlaW51bmdzYmlsZCcsIGpldHp0ICE9PSBzbmFwc2hvdE1hcmtpZXJ1bmdl bik7CiAgICB9Cn0KCi8vID09PT09IFN5bmMtRmxhc2ggZ2V6aWVsdCBhYnNwaWVsZW4gPT09PT0K Ly8gTWFudWVsbCB1ZWJlciBkZW4gIkZsYXNoLVZvcnNjaGF1IGFic3BpZWxlbiItQnV0dG9uLgoK ZXhwb3J0IGZ1bmN0aW9uIHN5bmNGbGFzaFZvcnNjaGF1KCkgewogICAgdmFyIHplbGxlID0gZG9j dW1lbnQucXVlcnlTZWxlY3RvcignLmVyc2NoZWludW5nLXZvcnNjaGF1LWZsYXNoJyk7CiAgICBp ZiAoIXplbGxlKSByZXR1cm47CiAgICB6ZWxsZS5jbGFzc0xpc3QucmVtb3ZlKCd6ZWxsZS1mbGFz aCcpOwogICAgdm9pZCB6ZWxsZS5vZmZzZXRXaWR0aDsKICAgIHplbGxlLmNsYXNzTGlzdC5hZGQo J3plbGxlLWZsYXNoJyk7CiAgICB2YXIgc2YgPSBtYXJraWVydW5nQXVmbG9lc2VuKCdzeW5jRmxh c2gnKTsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHplbGxlLmNsYXNzTGlzdC5yZW1vdmUo J3plbGxlLWZsYXNoJyk7IH0sIChzZi5kYXVlck1zIHx8IDE1MDApICsgNTApOwp9Cg== ### FILE: js/admin_kalender.js | 26489 Ly8gPT09IGFkbWluX2thbGVuZGVyLmpzID09PQovLyBQaGFzZSA5LUIgQzM6IGF1cyBhZG1pbi5q cyBleHRyYWhpZXJ0LiBCdWVuZGVsdCBkaWUgZHJlaSBLYWxlbmRlci0KLy8gbmFoZW4gQWRtaW4t RnVua3Rpb25lbjoKLy8gICAxLiBGZWllcnRhZ2UgKFouYWRtaW4uZmVpZXJ0YWdlKQovLyAgIDIu IEZlcmllbiAoWi5hZG1pbi5mZXJpZW4pCi8vICAgMy4gU29uZGVydGVybWluZSAoWi5hZG1pbi5z b25kZXJ0ZXJtaW5lIOKAlCBmcmVpIGRhdGllcmJhcmUgSGlud2Vpc2UKLy8gICAgICBhdWYgZWlu emVsbmUgVGFnZSBvZGVyIFRhZ2VzYmVyZWljaGUsIFJpY2gtVGV4dCB2aWEgUlRFKQovLwovLyBF eHRlcm5lciBLb25zdW1lbnQ6IHdvY2hlbnBsYW4uanMgaW1wb3J0aWVydCBzb25kZXJUaXRlbEF1 c1RleHQKLy8gYXVzICcuL2FkbWluLmpzJyAoUGFzcy1UaHJvdWdoLVJlLUV4cG9ydCk7IGFiIFBo YXNlIDktQiBDNSBkYW5uCi8vIGRpcmVrdCBhdXMgJy4vYWRtaW5fa2FsZW5kZXIuanMnLgoKaW1w b3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVz Y2FwZUF0dHIsIGRhdHVtRm9ybWF0REUgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7 IGFwaVB1dCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyB0YWJlbGxlRmVsZGVyTGVz ZW4gfSBmcm9tICcuL2FkbWluX2NvbW1vbi5qcyc7CmltcG9ydCB7CnRvYXN0LCBiZXN0YWV0aWdl biwKbW9kYWxaZWlnZW4sIG1vZGFsU2NobGllc3NlbiwKZW50d3VyZkxvZXNjaGVuCn0gZnJvbSAn Li91aV9kaWFsb2cuanMnOwppbXBvcnQgewpzYW5pdGl6ZVJpY2hIdG1sLCBydGVJbml0LCBFTU9K SV9TRVQsCmVtb2ppUGlja2VyWmVpZ2VuLCBlbW9qaVBpY2tlclNjaGxpZXNzZW4KfSBmcm9tICcu L3VpX3J0ZS5qcyc7CmltcG9ydCB7CktBVEVHT1JJRV9JQ09OX0RFRkFVTFQsCmtvcGZSZW5kZXJu LCB0YWdJbmZvc0JlcmVjaG5lbgp9IGZyb20gJy4vZ3JpZF9yZW5kZXIuanMnOwovLyBmZWF0dXJl SXN0QWt0aXYgbGVidCBpbSBCb290c3RyYXAtVGVpbCB2b24gYWRtaW4uanMgKEZlYXR1cmUtVG9n Z2xlcykuCi8vIFdpcmQgaGllciBmdWVyIGRhcyBzb25kZXJ0ZXJtaW5lV2ljaHRpZy1GbGFnIGdl YnJhdWNodCAoU29uZGVydGVybWluLQovLyBNYXJraWVydW5nICd3aWNodGlnJyBVSSBvcHRpb25h bCBlaW4tL2F1c2JsZW5kZW4pLgovLyBhZG1pbkVtcHR5WmVpbGU6IEVtcHR5LVN0YXRlLUthcnRl IGFscyA8dHI+IGZ1ZXIgbGVlcmUgTGlzdGVuLgppbXBvcnQgeyBmZWF0dXJlSXN0QWt0aXYsIGFk bWluRW1wdHlaZWlsZSB9IGZyb20gJy4vYWRtaW4uanMnOwoKLy8gPT09PT0gQWRtaW46IEZlaWVy dGFnZSA9PT09PQoKdmFyIEZFSUVSVEFHX0tBVEVHT1JJRU4gPSBbJ2dlc2V0emxpY2gnLCAnanVl ZGlzY2gnLCAnbXVzbGltaXNjaCcsICd0dWVya2lzY2gnXTsKdmFyIEZFSUVSVEFHX0tBVF9MQUJF TCA9IHsKICAgIGdlc2V0emxpY2g6ICdHZXNldHpsaWNoIChOUlcpJywKICAgIGp1ZWRpc2NoOiAn SsO8ZGlzY2gnLAogICAgbXVzbGltaXNjaDogJ011c2xpbWlzY2gnLAogICAgdHVlcmtpc2NoOiAn VMO8cmtpc2NoJwp9OwoKZnVuY3Rpb24gZmVpZXJ0YWdlSmFocmVPcHRpb25lbigpIHsKICAgIC8v IEVpbnppZ2FydGlnZSBKYWhyZSBhdXMgZGVuIHZvcmhhbmRlbmVuIERhdGVuICsgYWt0dWVsbGVz IEphaHIgKwogICAgLy8gMjAyNi4uMjAzNSAoU3RhbmRhcmQtRGF0ZW5iYXNpcyksIGF1ZnN0ZWln ZW5kLgogICAgdmFyIHNldCA9IHt9OwogICAgKFouYWRtaW4uZmVpZXJ0YWdlIHx8IFtdKS5mb3JF YWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICBpZiAoZi5kYXR1bSAmJiBmLmRhdHVtLmxlbmd0aCA+ PSA0KSBzZXRbZi5kYXR1bS5zdWJzdHIoMCwgNCldID0gdHJ1ZTsKICAgIH0pOwogICAgZm9yICh2 YXIgaiA9IDIwMjY7IGogPD0gMjAzNTsgaisrKSBzZXRbU3RyaW5nKGopXSA9IHRydWU7CiAgICB2 YXIgaGV1dGUgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICBzZXRbU3RyaW5nKGhldXRl KV0gPSB0cnVlOwogICAgdmFyIGphaHJlID0gT2JqZWN0LmtleXMoc2V0KS5zb3J0KCk7CiAgICBy ZXR1cm4gamFocmU7Cn0KCmV4cG9ydCBmdW5jdGlvbiBmZWllcnRhZ2VGaWx0ZXJGdWVsbGVuKCkg ewogICAgdmFyIHNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmZWllcnRhZ2UtZmlsdGVy LWphaHInKTsKICAgIGlmICghc2VsKSByZXR1cm47CiAgICB2YXIgYWt0dWVsbCA9IHNlbC52YWx1 ZSB8fCBTdHJpbmcoWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7CiAg ICB2YXIgaHRtbCA9ICc8b3B0aW9uIHZhbHVlPSJhbGxlIj5BbGxlIEphaHJlPC9vcHRpb24+JzsK ICAgIGZlaWVydGFnZUphaHJlT3B0aW9uZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKGopIHsKICAgICAg ICBodG1sICs9ICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihqKSArICciJyArIChqID09 PSBha3R1ZWxsID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2NhcGVIVE1MKGopICsgJzwv b3B0aW9uPic7CiAgICB9KTsKICAgIHNlbC5pbm5lckhUTUwgPSBodG1sOwp9CgpleHBvcnQgZnVu Y3Rpb24gZmVpZXJ0YWdlVGFiZWxsZVJlbmRlcm4oKSB7CiAgICAvLyBTb3J0aWVydW5nOiBuYWNo IERhdHVtLCBkYW5uIEthdGVnb3JpZS4gZGF0YS1pZHggPSBET00tUmVpaGVuZm9sZ2UsCiAgICAv LyB3aXJkIGJlaW0gU2F2ZSBhbHMgbmV1ZXMgQXJyYXkgenVydWVja2dlc2NocmllYmVuICh2Z2wu CiAgICAvLyBmZWllcnRhZ2VBdXNUYWJlbGxlTGVzZW4pLgogICAgdmFyIGxpc3RlID0gKFouYWRt aW4uZmVpZXJ0YWdlIHx8IFtdKS5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAg IHJldHVybiAoYS5kYXR1bSB8fCAnJykubG9jYWxlQ29tcGFyZShiLmRhdHVtIHx8ICcnKTsKICAg IH0pOwogICAgdmFyIGh0bWwgPSAnJzsKICAgIGxpc3RlLmZvckVhY2goZnVuY3Rpb24oZiwgaSkg ewogICAgICAgIHZhciBrYXQgPSBmLmthdGVnb3JpZSB8fCAnZ2VzZXR6bGljaCc7CiAgICAgICAg dmFyIGFrdGl2ID0gZi5ha3RpdiAhPT0gZmFsc2U7CiAgICAgICAgdmFyIGphaHIgPSAoZi5kYXR1 bSB8fCAnJykuc3Vic3RyKDAsIDQpOwogICAgICAgIHZhciBiZXplaWNobnVuZyA9IGYuYmV6ZWlj aG51bmcgfHwgZi5uYW1lIHx8ICcnOwogICAgICAgIC8vIEljb24tQW56ZWlnZTogYmVpIGxlZXJl bSBGZWxkIHplaWd0IGRlciBCdXR0b24gZGFzIEthdGVnb3JpZS1EZWZhdWx0CiAgICAgICAgLy8g KHZpc3VlbGxlIEtvbnNpc3RlbnopLiBEYXMgaGlkZGVuIGZpZWxkIGJsZWlidCBsZWVyLCBkYW1p dCBkZXIKICAgICAgICAvLyBEZWZhdWx0IOKAnmxlYmVuZGlnIiBtaXQgZGVyIEthdGVnb3JpZSBt aXR3YW5kZXJ0LgogICAgICAgIHZhciBpY29uV2VydCA9IGYuaWNvbiB8fCAnJzsKICAgICAgICB2 YXIgaWNvbkFuemVpZ2UgPSBpY29uV2VydCB8fCBLQVRFR09SSUVfSUNPTl9ERUZBVUxUW2thdF0g fHwgS0FURUdPUklFX0lDT05fREVGQVVMVC5nZXNldHpsaWNoOwogICAgICAgIHZhciByb3dDbHMg PSAnZmVpZXJ0YWctcm93IGZlaWVydGFnLXJvdy1rYXQtJyArIGthdCArICcgZmVpZXJ0YWctcm93 LWphaHItJyArIGphaHI7CiAgICAgICAgaWYgKCFha3Rpdikgcm93Q2xzICs9ICcgZmVpZXJ0YWct cm93LWluYWt0aXYnOwogICAgICAgIGlmIChmLndpY2h0aWcpIHJvd0NscyArPSAnIGZlaWVydGFn LXdpY2h0aWcnOwoKICAgICAgICB2YXIga2F0T3B0aW9ucyA9IEZFSUVSVEFHX0tBVEVHT1JJRU4u bWFwKGZ1bmN0aW9uKGspIHsKICAgICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsg ayArICciJyArIChrID09PSBrYXQgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzY2FwZUhU TUwoRkVJRVJUQUdfS0FUX0xBQkVMW2tdKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pLmpvaW4o JycpOwoKICAgICAgICBodG1sICs9ICc8dHIgY2xhc3M9IicgKyByb3dDbHMgKyAnIj4nICsKICAg ICAgICAgICAgJzx0ZD48aW5wdXQgdHlwZT0iZGF0ZSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKGYu ZGF0dW0gfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJkYXR1bSIg Y2xhc3M9ImZlaWVydGFnLWlucHV0Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0 eXBlPSJ0ZXh0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoYmV6ZWljaG51bmcpICsgJyIgZGF0YS1p ZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJiZXplaWNobnVuZyIgY2xhc3M9ImZlaWVydGFnLWlu cHV0IiBwbGFjZWhvbGRlcj0iQmV6ZWljaG51bmcuLi4iPjwvdGQ+JyArCiAgICAgICAgICAgICc8 dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4nICsKICAgICAgICAgICAgICAgICc8YnV0dG9u IHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImVtb2ppLWJ0biBmZWllcnRhZy1pY29uLWJ0biIgZGF0YS1p ZHg9IicgKyBpICsgJyIgdGl0bGU9Ikljb24gd8OkaGxlbiAobGVlciA9IEthdGVnb3JpZS1EZWZh dWx0KSI+JyArIGVzY2FwZUhUTUwoaWNvbkFuemVpZ2UpICsgJzwvYnV0dG9uPicgKwogICAgICAg ICAgICAgICAgJzxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJmZWllcnRhZy1pbnB1dCIgZGF0 YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJpY29uIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIo aWNvbldlcnQpICsgJyI+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAnPHRk PjxzZWxlY3QgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJrYXRlZ29yaWUiIGNsYXNz PSJmZWllcnRhZy1pbnB1dCI+JyArIGthdE9wdGlvbnMgKyAnPC9zZWxlY3Q+PC90ZD4nICsKICAg ICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxpbnB1dCB0eXBlPSJjaGVj a2JveCInICsgKGFrdGl2ID8gJyBjaGVja2VkJyA6ICcnKSArICcgZGF0YS1pZHg9IicgKyBpICsg JyIgZGF0YS1mZWxkPSJha3RpdiIgY2xhc3M9ImZlaWVydGFnLWlucHV0IiB0aXRsZT0iQW56ZWln ZW4gLyBhdXNibGVuZGVuIj48L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFs aWduOmNlbnRlciI+PGxhYmVsIHN0eWxlPSJjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1m bGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4IiB0aXRsZT0iQWxzIGJlc29uZGVycyB3aWNo dGlnZW4gRmVpZXJ0YWcgbWFya2llcmVuICh2ZXJzdMOkcmt0ZSBIZXJ2b3JoZWJ1bmcgaW0gSGVh ZGVyKSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IicgKyAoZi53aWNodGlnID8gJyBjaGVja2VkJyA6 ICcnKSArICcgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJ3aWNodGlnIiBjbGFzcz0i ZmVpZXJ0YWctaW5wdXQiPiAnICsKICAgICAgICAgICAgKGYud2ljaHRpZyA/ICc8c3BhbiBjbGFz cz0iZmVpZXJ0YWctd2ljaHRpZy1iYWRnZSI+V2ljaHRpZzwvc3Bhbj4nIDogJzxzcGFuIHN0eWxl PSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+4oCUPC9zcGFuPicpICsg JzwvbGFiZWw+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD4nICsKICAgICAgICAgICAgICAgICc8 aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iZmVpZXJ0YWctaW5wdXQiIGRhdGEtaWR4PSInICsg aSArICciIGRhdGEtZmVsZD0ia3VyemJlc2NocmVpYnVuZyIgdmFsdWU9IicgKyBlc2NhcGVBdHRy KGYua3VyemJlc2NocmVpYnVuZyB8fCAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8aW5w dXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0iZmVpZXJ0YWctaW5wdXQiIGRhdGEtaWR4PSInICsgaSAr ICciIGRhdGEtZmVsZD0iaW5mb1VybCIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKGYuaW5mb1VybCB8 fCAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7 Z2FwOjRweDtmbGV4LXdyYXA6d3JhcCI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24g Y2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiBmZWllcnRhZy1pbmZvLWJ0biIgZGF0YS1pZHg9 IicgKyBpICsgJyIgdGl0bGU9IkJlc2NocmVpYnVuZyB1bmQgV2lraXBlZGlhLUxpbmsgYmVhcmJl aXRlbiI+4pyOIEluZm88L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBj bGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1ha3Rpb249 ImZlaWVydGFnLWxvZXNjaGVuIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iTMO2c2NoZW4i PkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAg ICAgICc8L3RkPjwvdHI+JzsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zl aWVydGFnZS10Ym9keScpLmlubmVySFRNTCA9IGh0bWw7CiAgICAvLyBMaXN0ZSBpbiBkZXIgZ2xl aWNoZW4gUmVpaGVuZm9sZ2UgYWJsZWdlbiwgZGFtaXQgZGF0YS1pZHggenVyIEZvbGdlc2ljaHQg cGFzc3QuCiAgICBaLmFkbWluLmZlaWVydGFnZSA9IGxpc3RlOwogICAgZmVpZXJ0YWdlRmlsdGVy RnVlbGxlbigpOwogICAgZmVpZXJ0YWdlRmlsdGVyQW53ZW5kZW4oKTsKfQoKZXhwb3J0IGZ1bmN0 aW9uIGZlaWVydGFnZUZpbHRlckFud2VuZGVuKCkgewogICAgdmFyIHRib2R5ID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2ZlaWVydGFnZS10Ym9keScpOwogICAgaWYgKCF0Ym9keSkgcmV0dXJu OwogICAgLy8gQmVzdGVoZW5kZSBGaWx0ZXItS2xhc3NlbiBlbnRmZXJuZW4KICAgIHRib2R5LmNs YXNzTmFtZSA9IHRib2R5LmNsYXNzTmFtZS5yZXBsYWNlKC9ccypmaWx0ZXItKGthdC1cUyt8amFo ci1cUyt8bnVyLWFrdGl2KS9nLCAnJykudHJpbSgpOwogICAgdmFyIGthdCA9IChkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZmVpZXJ0YWdlLWZpbHRlci1rYXRlZ29yaWUnKSB8fCB7fSkudmFsdWUg fHwgJ2FsbGUnOwogICAgdmFyIGphaHIgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZlaWVy dGFnZS1maWx0ZXItamFocicpIHx8IHt9KS52YWx1ZSB8fCAnYWxsZSc7CiAgICB2YXIgbnVyQWt0 aXYgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZlaWVydGFnZS1maWx0ZXItbnVyLWFrdGl2 JykgfHwge30pLmNoZWNrZWQ7CiAgICB2YXIgYWRkID0gW107CiAgICBpZiAoa2F0ICE9PSAnYWxs ZScpIGFkZC5wdXNoKCdmaWx0ZXIta2F0LScgKyBrYXQpOwogICAgaWYgKGphaHIgIT09ICdhbGxl JykgYWRkLnB1c2goJ2ZpbHRlci1qYWhyLScgKyBqYWhyKTsKICAgIGlmIChudXJBa3RpdikgYWRk LnB1c2goJ2ZpbHRlci1udXItYWt0aXYnKTsKICAgIGlmIChhZGQubGVuZ3RoKSB0Ym9keS5jbGFz c05hbWUgPSAodGJvZHkuY2xhc3NOYW1lICsgJyAnICsgYWRkLmpvaW4oJyAnKSkudHJpbSgpOwp9 CgpleHBvcnQgZnVuY3Rpb24gZmVpZXJ0YWdlQXVzVGFiZWxsZUxlc2VuKCkgewogICAgcmV0dXJu IHRhYmVsbGVGZWxkZXJMZXNlbignZmVpZXJ0YWctaW5wdXQnLCB7IGJvb2xGZWxkZXI6IFsnd2lj aHRpZycsICdha3RpdiddIH0pCiAgICAgICAgLmZpbHRlcihmdW5jdGlvbihmKSB7IHJldHVybiBm LmRhdHVtICYmIGYuYmV6ZWljaG51bmc7IH0pCiAgICAgICAgLm1hcChmdW5jdGlvbihmKSB7CiAg ICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBkYXR1bTogZi5kYXR1bSwKICAgICAg ICAgICAgICAgIGJlemVpY2hudW5nOiBmLmJlemVpY2hudW5nLAogICAgICAgICAgICAgICAga2F0 ZWdvcmllOiBmLmthdGVnb3JpZSB8fCAnZ2VzZXR6bGljaCcsCiAgICAgICAgICAgICAgICBha3Rp djogZi5ha3RpdiAhPT0gZmFsc2UsCiAgICAgICAgICAgICAgICB3aWNodGlnOiAhIWYud2ljaHRp ZywKICAgICAgICAgICAgICAgIGljb246IGYuaWNvbiB8fCAnJywKICAgICAgICAgICAgICAgIGt1 cnpiZXNjaHJlaWJ1bmc6IGYua3VyemJlc2NocmVpYnVuZyB8fCAnJywKICAgICAgICAgICAgICAg IGluZm9Vcmw6IGYuaW5mb1VybCB8fCAnJwogICAgICAgICAgICB9OwogICAgICAgIH0pOwp9Cgov LyBNb2RhbCB6dW0gQmVhcmJlaXRlbiBkZXIgRGV0YWlsLUZlbGRlciAoS3VyemJlc2NocmVpYnVu ZyArIEluZm8tVVJMKS4KLy8gSW5kaXplcyByZWZlcmVuemllcmVuIGRpZSBET00tUmVpaGVuZm9s Z2UgZGVyIFRhYmVsbGUsIGlkZW50aXNjaCB6dSBkZW4KLy8gYW5kZXJlbiBmZWllcnRhZy1pbnB1 dCBkYXRhLWlkeC1XZXJ0ZW4uIFdlcnRlIHdlcmRlbiBpbiBkaWUgaGlkZGVuCi8vIEZpZWxkcyBn ZXNjaHJpZWJlbiwgZGFtaXQgZmVpZXJ0YWdlQXVzVGFiZWxsZUxlc2VuIHNpZSBiZWltIFNwZWlj aGVybgovLyBtaXRuaW1tdC4gRGlydHktVHJhY2tpbmcgbGFldWZ0IHVlYmVyIGRhcyBjaGFuZ2Ut RXZlbnQgYXVmIGRlbiBoaWRkZW4KLy8gSW5wdXRzIChzaWVoZSBkaXJ0eVRyYWNrZXJFaW5yaWNo dGVuKS4KZXhwb3J0IGZ1bmN0aW9uIGZlaWVydGFnZUluZm9Nb2RhbFplaWdlbihpZHgpIHsKICAg IHZhciBoaWRkZW5LdXJ6ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmZlaWVydGFnLWlucHV0 W2RhdGEtZmVsZD0ia3VyemJlc2NocmVpYnVuZyJdW2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJyk7 CiAgICB2YXIgaGlkZGVuVXJsICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mZWllcnRhZy1p bnB1dFtkYXRhLWZlbGQ9ImluZm9VcmwiXVtkYXRhLWlkeD0iJyArIGlkeCArICciXScpOwogICAg dmFyIGJleklucHV0ICAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZmVpZXJ0YWctaW5wdXRb ZGF0YS1mZWxkPSJiZXplaWNobnVuZyJdW2RhdGEtaWR4PSInICsgaWR4ICsgJyJdJyk7CiAgICBp ZiAoIWhpZGRlbkt1cnogfHwgIWhpZGRlblVybCkgcmV0dXJuOwogICAgdmFyIGJleiA9IGJleklu cHV0ID8gYmV6SW5wdXQudmFsdWUgOiAnJzsKICAgIHZhciBrb2VycGVyID0gJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIj48bGFiZWw+QmV6ZWljaG51bmc8L2xhYmVsPicgKwogICAgICAgICc8ZGl2 IHN0eWxlPSJmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7cGFkZGluZzo2cHggMCI+JyAr IGVzY2FwZUhUTUwoYmV6IHx8ICcobGVlciknKSArICc8L2Rpdj48L2Rpdj4nICsKICAgICAgICAn PGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbCBmb3I9ImZ0LWluZm8ta3VyeiI+S3VyemJl c2NocmVpYnVuZzwvbGFiZWw+JyArCiAgICAgICAgJzx0ZXh0YXJlYSBpZD0iZnQtaW5mby1rdXJ6 IiBjbGFzcz0iZm9ybS1pbnB1dCIgcm93cz0iMyIgc3R5bGU9IndpZHRoOjEwMCUiIHBsYWNlaG9s ZGVyPSIx4oCTMiBTw6R0emUuLi4iPicgKyBlc2NhcGVIVE1MKGhpZGRlbkt1cnoudmFsdWUpICsg JzwvdGV4dGFyZWE+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48 bGFiZWwgZm9yPSJmdC1pbmZvLXVybCI+SW5mby1VUkwgKHouQi4gV2lraXBlZGlhKTwvbGFiZWw+ JyArCiAgICAgICAgJzxpbnB1dCBpZD0iZnQtaW5mby11cmwiIHR5cGU9InVybCIgY2xhc3M9ImZv cm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iaHR0cHM6Ly9kZS53aWtp cGVkaWEub3JnL3dpa2kvLi4uIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoaGlkZGVuVXJsLnZhbHVl KSArICciPjwvZGl2Pic7CiAgICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNl ayBidG4ta2xlaW4iIGlkPSJmdC1pbmZvLWFiYnJlY2hlbiI+QWJicmVjaGVuPC9idXR0b24+JyAr CiAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWlu IiBpZD0iZnQtaW5mby11ZWJlcm5laG1lbiI+w5xiZXJuZWhtZW48L2J1dHRvbj4nOwogICAgbW9k YWxaZWlnZW4oJ0ZlaWVydGFnLUluZm8gYmVhcmJlaXRlbicsIGtvZXJwZXIsIGZ1c3MpOwogICAg ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Z0LWluZm8tYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0 ZW5lcignY2xpY2snLCBtb2RhbFNjaGxpZXNzZW4pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2Z0LWluZm8tdWViZXJuZWhtZW4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0 aW9uKCkgewogICAgICAgIGhpZGRlbkt1cnoudmFsdWUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2Z0LWluZm8ta3VyeicpLnZhbHVlIHx8ICcnKS50cmltKCk7CiAgICAgICAgaGlkZGVuVXJs LnZhbHVlICA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnQtaW5mby11cmwnKS52YWx1ZSB8 fCAnJykudHJpbSgpOwogICAgICAgIC8vIGNoYW5nZS1FdmVudCBhdXNsb2VzZW4sIGRhbWl0IGRl ciBEaXJ0eS1UcmFja2VyIGdyZWlmdC4KICAgICAgICBoaWRkZW5LdXJ6LmRpc3BhdGNoRXZlbnQo bmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOwogICAgICAgIGhpZGRlblVy bC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTsK ICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9KTsKfQoKLy8gPT09PT0gQWRtaW46 IEZlcmllbiA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGZlcmllblRhYmVsbGVSZW5kZXJuKCkgewog ICAgdmFyIHRib2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zlcmllbi10Ym9keScpOwog ICAgaWYgKCF0Ym9keSkgcmV0dXJuOwogICAgaWYgKCEoWi5hZG1pbi5mZXJpZW4gfHwgW10pLmxl bmd0aCkgewogICAgICAgIHRib2R5LmlubmVySFRNTCA9IGFkbWluRW1wdHlaZWlsZSg0LCAnXHV7 MUYzRDZ977iPJywKICAgICAgICAgICAgJ05vY2gga2VpbmUgRmVyaWVuemVpdHLDpHVtZSBlcmZh c3N0JywKICAgICAgICAgICAgJ05SVy1TY2h1bGZlcmllbiB3ZXJkZW4gaW0gV29jaGVucGxhbiBt YXJraWVydCB1bmQgaGVsZmVuIGJlaSBkZXIgVXJsYXVic3ZlcmdhYmUuIEVpbnRyYWdlbiBtaXQg Vm9uLS9CaXMtRGF0dW0gdW5kIEJlemVpY2hudW5nICh6LkIuIE9zdGVyZmVyaWVuIDMwLjAzLuKA kzExLjA0LikuIEtsaWNrZSBvYmVuIGF1ZiDigJ5OZXVlciBGZXJpZW56ZWl0cmF1bSIuJyk7CiAg ICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGh0bWwgPSAnJzsKICAgIChaLmFkbWluLmZlcmll biB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihmLCBpKSB7CiAgICAgICAgaHRtbCArPSAnPHRyPjx0 ZD48aW5wdXQgdHlwZT0iZGF0ZSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKGYudm9uIHx8ICcnKSAr ICciIGRhdGEtaWR4PSInICsgaSArICciIGRhdGEtZmVsZD0idm9uIiBjbGFzcz0iZmVyaWVuLWlu cHV0Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJkYXRlIiB2YWx1ZT0i JyArIGVzY2FwZUF0dHIoZi5iaXMgfHwgJycpICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0 YS1mZWxkPSJiaXMiIGNsYXNzPSJmZXJpZW4taW5wdXQiPjwvdGQ+JyArCiAgICAgICAgICAgICc8 dGQ+PGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLm5hbWUpICsgJyIg ZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0YS1mZWxkPSJuYW1lIiBjbGFzcz0iZmVyaWVuLWlucHV0 Ij48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhy IGJ0bi1rbGVpbiBidG4tbG9lc2NoZW4iIGRhdGEtYWt0aW9uPSJmZXJpZW4tbG9lc2NoZW4iIGRh dGEtaWR4PSInICsgaSArICciIHRpdGxlPSJMw7ZzY2hlbiI+TMO2c2NoZW48L2J1dHRvbj48L3Rk PjwvdHI+JzsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zlcmllbi10Ym9k eScpLmlubmVySFRNTCA9IGh0bWw7Cn0KCmV4cG9ydCBmdW5jdGlvbiBmZXJpZW5BdXNUYWJlbGxl TGVzZW4oKSB7CiAgICByZXR1cm4gdGFiZWxsZUZlbGRlckxlc2VuKCdmZXJpZW4taW5wdXQnKQog ICAgICAgIC5maWx0ZXIoZnVuY3Rpb24oZikgeyByZXR1cm4gZi52b24gJiYgZi5iaXMgJiYgZi5u YW1lOyB9KTsKfQoKLy8gPT09PT0gQWRtaW46IFNvbmRlcnRlcm1pbmUgPT09PT0KCmV4cG9ydCBm dW5jdGlvbiBzb25kZXJ0ZXJtaW5lUmVuZGVybigpIHsKICAgIC8vICJNYXJraWVydW5nIi1TcGFs dGUgKENoZXJyeS1QaWNrIDg0ZmIwZjcsIGhpbnRlciBUb2dnbGUKICAgIC8vIGBmZWF0dXJlcy5z b25kZXJ0ZXJtaW5lV2ljaHRpZ2ApLiBCYWNrd2FyZHMtY29tcGF0OiBFaW50cmFlZ2UgbWl0CiAg ICAvLyBhbHRlbiBgdHlwOid3YXJudW5nJ2Agd2VyZGVuIGFscyAid2ljaHRpZyIgZXJrYW5udC4K ICAgIHZhciB3aWNodGlnVUkgPSBmZWF0dXJlSXN0QWt0aXYoJ3NvbmRlcnRlcm1pbmVXaWNodGln Jyk7CiAgICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8IFtdKS5zbGljZSgp LnNvcnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgIHJldHVybiAoYS5kYXR1bSB8fCAnJykubG9j YWxlQ29tcGFyZShiLmRhdHVtIHx8ICcnKTsKICAgIH0pOwogICAgdmFyIGh0bWwgPSAnJzsKICAg IGlmIChsaXN0ZS5sZW5ndGggPT09IDApIHsKICAgICAgICBodG1sID0gYWRtaW5FbXB0eVplaWxl KDYsICdcdXsxRjRDNX0nLAogICAgICAgICAgICAnTm9jaCBrZWluZSBTb25kZXJ0ZXJtaW5lIGFu Z2VsZWd0JywKICAgICAgICAgICAgJ1NvbmRlcnRlcm1pbmUgc2luZCBIaW53ZWlzZSBvZGVyIFdh cm51bmdlbiwgZGllIGFuIGJlc3RpbW10ZW4gVGFnZW4gZnVlciBhbGxlIHNpY2h0YmFyIHdlcmRl biDigJQgVmVyYW5zdGFsdHVuZ2VuLCBlcmhvZWh0ZXIgUGVyc29uYWxiZWRhcmYsIFNwZXJydGVy bWluZS4gS2xpY2tlIG9iZW4gYXVmIOKAnk5ldWVyIEhpbndlaXMiLCB1bSBkZW4gZXJzdGVuIHp1 IGVyc3RlbGxlbi4nKTsKICAgIH0KICAgIGxpc3RlLmZvckVhY2goZnVuY3Rpb24ocykgewogICAg ICAgIGlmICghcy5pZCkgcy5pZCA9ICdzdF8nICsgKHMuZGF0dW0gfHwgJ3gnKSArICdfJyArIE1h dGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA2KTsKICAgICAgICB2YXIgaWNvbkh0 bWwgPSBzLmljb24gPyBlc2NhcGVIVE1MKHMuaWNvbikgOiAn4oCUJzsKICAgICAgICB2YXIgaWNv bkNscyA9IHMuaWNvbiA/ICdzb25kZXItaWNvbi16ZWxsZScgOiAnc29uZGVyLWljb24temVsbGUg bGVlcic7CiAgICAgICAgdmFyIGlzdFdpY2h0aWcgPSAhIXMud2ljaHRpZyB8fCBzLnR5cCA9PT0g J3dhcm51bmcnOwogICAgICAgIHZhciB0eXBMYWJlbCwgdHlwQmFkZ2U7CiAgICAgICAgaWYgKHdp Y2h0aWdVSSkgewogICAgICAgICAgICB0eXBMYWJlbCA9IGlzdFdpY2h0aWcgPyAnV2ljaHRpZycg OiAnU3RhbmRhcmQnOwogICAgICAgICAgICB0eXBCYWRnZSA9IGlzdFdpY2h0aWcgPyAnc29uZGVy LXR5cC13YXJuJyA6ICdzb25kZXItdHlwLWluZm8nOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgIHR5cExhYmVsID0gcy50eXAgPT09ICd3YXJudW5nJyA/ICdXYXJudW5nJyA6ICdIaW53ZWlz JzsKICAgICAgICAgICAgdHlwQmFkZ2UgPSBzLnR5cCA9PT0gJ3dhcm51bmcnID8gJ3NvbmRlci10 eXAtd2FybicgOiAnc29uZGVyLXR5cC1pbmZvJzsKICAgICAgICB9CiAgICAgICAgdmFyIHdtID0g cy53YXJuTW9kdXMgfHwgJ2ltbWVyJzsKICAgICAgICB2YXIgd21MYWJlbCA9IHdtID09PSAnaW1t ZXInID8gJ0ltbWVyJyA6ICh3bSA9PT0gJ2Vpbm1hbGlnJyA/ICdFaW5tYWxpZyAvIFVzZXInIDog J0F1cycpOwogICAgICAgIHZhciB0aXRlbCA9IHMudGl0ZWwgfHwgc29uZGVyVGl0ZWxBdXNUZXh0 KHMudGV4dCkgfHwgJyhvaG5lIFRpdGVsKSc7CiAgICAgICAgaHRtbCArPSAnPHRyPicgKwogICAg ICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSInICsgaWNvbkNscyArICciPicgKyBpY29uSHRtbCAr ICc8L3NwYW4+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD4nICsgZXNjYXBlSFRNTChzb25kZXJE YXR1bUxhYmVsKHMpKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyBlc2NhcGVIVE1M KHRpdGVsKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkPjxzcGFuIGNsYXNzPSJzb25kZXIt dHlwLWJhZGdlICcgKyB0eXBCYWRnZSArICciPicgKyB0eXBMYWJlbCArICc8L3NwYW4+PC90ZD4n ICsKICAgICAgICAgICAgJzx0ZD4nICsgZXNjYXBlSFRNTCh3bUxhYmVsKSArICc8L3RkPicgKwog ICAgICAgICAgICAnPHRkPjxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6NnB4O2FsaWduLWl0 ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXAiPicgKwogICAgICAgICAgICAgICAgJzxidXR0 b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiBidG4taWNvbiBidG4tYmVhcmJlaXRlbiIg ZGF0YS1ha3Rpb249InNvbmRlci1iZWFyYmVpdGVuIiBkYXRhLWlkPSInICsgZXNjYXBlQXR0cihz LmlkKSArICciIHRpdGxlPSJIaW53ZWlzIGJlYXJiZWl0ZW4iPkJlYXJiZWl0ZW48L2J1dHRvbj4n ICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xl aW4gYnRuLWxvZXNjaGVuIiBkYXRhLWFrdGlvbj0ic29uZGVyLWxvZXNjaGVuIiBkYXRhLWlkPSIn ICsgZXNjYXBlQXR0cihzLmlkKSArICciIHRpdGxlPSJIaW53ZWlzIGzDtnNjaGVuIj5Mw7ZzY2hl bjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9kaXY+PC90ZD4nICsKICAgICAgICAnPC90cj4n OwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc29uZGVydGVybWluZS10Ym9k eScpLmlubmVySFRNTCA9IGh0bWw7Cn0KCmV4cG9ydCBmdW5jdGlvbiBzb25kZXJUaXRlbEF1c1Rl eHQoaHRtbCkgewogICAgaWYgKCFodG1sKSByZXR1cm4gJyc7CiAgICB2YXIgdG1wID0gZG9jdW1l bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICB0bXAuaW5uZXJIVE1MID0gaHRtbDsKICAgIHZh ciB0eHQgPSAodG1wLnRleHRDb250ZW50IHx8ICcnKS50cmltKCkuc3BsaXQoL1xyP1xuLylbMF07 CiAgICBpZiAodHh0Lmxlbmd0aCA+IDYwKSB0eHQgPSB0eHQuc3Vic3RyKDAsIDU3KSArICfigKYn OwogICAgcmV0dXJuIHR4dDsKfQoKLy8gc2FuaXRpemVSaWNoSHRtbCwgRU1PSklfU0VULCBlbW9q aVBpY2tlclplaWdlbiwgZW1vamlQaWNrZXJTY2hsaWVzc2VuIC0+IGpzL3VpL3J0ZS5qcwoKLy8g PT09PT0gU29uZGVydGVybWluLUhlbGZlciA9PT09PQpleHBvcnQgZnVuY3Rpb24gc29uZGVyRnVl ckRhdHVtKGRhdHVtKSB7CiAgICBpZiAoIWRhdHVtKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiAo Wi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHMpIHsKICAgICAgICB2 YXIgYmlzID0gcy5kYXR1bUJpcyB8fCBzLmRhdHVtOwogICAgICAgIHJldHVybiBzLmRhdHVtICYm IGRhdHVtID49IHMuZGF0dW0gJiYgZGF0dW0gPD0gYmlzOwogICAgfSk7Cn0KZXhwb3J0IGZ1bmN0 aW9uIHNvbmRlckJ5SWQoaWQpIHsKICAgIHJldHVybiAoWi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8 IFtdKS5maW5kKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMuaWQgPT09IGlkOyB9KTsKfQpleHBvcnQg ZnVuY3Rpb24gc29uZGVyRGF0dW1MYWJlbChzKSB7CiAgICBpZiAoIXMuZGF0dW0pIHJldHVybiAn 4oCUJzsKICAgIGlmIChzLmRhdHVtQmlzICYmIHMuZGF0dW1CaXMgIT09IHMuZGF0dW0pIHJldHVy biBkYXR1bUZvcm1hdERFKHMuZGF0dW0pICsgJyDigJMgJyArIGRhdHVtRm9ybWF0REUocy5kYXR1 bUJpcyk7CiAgICByZXR1cm4gZGF0dW1Gb3JtYXRERShzLmRhdHVtKTsKfQoKZXhwb3J0IGZ1bmN0 aW9uIHNvbmRlckluaGFsdEh0bWwoc29uZGVyKSB7CiAgICB2YXIgaWNvbiA9IHNvbmRlci5pY29u IHx8IChzb25kZXIudHlwID09PSAnd2FybnVuZycgPyAn4pqg77iPJyA6ICfihLnvuI8nKTsKICAg IHZhciB0aXRlbEh0bWwgPSBzb25kZXIudGl0ZWwgPyAnPGRpdiBjbGFzcz0ic29uZGVyLXdhcm4t dGl0ZWwiPicgKyBlc2NhcGVIVE1MKHNvbmRlci50aXRlbCkgKyAnPC9kaXY+JyA6ICcnOwogICAg dmFyIHRleHRIdG1sID0gc2FuaXRpemVSaWNoSHRtbChzb25kZXIudGV4dCB8fCAnJyk7CiAgICBy ZXR1cm4gJzxkaXYgY2xhc3M9InNvbmRlci13YXJuLWljb24iPicgKyBlc2NhcGVIVE1MKGljb24p ICsgJzwvZGl2PicgKwogICAgICAgIHRpdGVsSHRtbCArCiAgICAgICAgJzxkaXYgY2xhc3M9InNv bmRlci13YXJuLXRleHQiPicgKyB0ZXh0SHRtbCArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBj bGFzcz0ic29uZGVyLXdhcm4tZGF0dW0iPicgKyBlc2NhcGVIVE1MKHNvbmRlckRhdHVtTGFiZWwo c29uZGVyKSkgKyAnPC9kaXY+JzsKfQoKZXhwb3J0IGZ1bmN0aW9uIHNvbmRlcldhcm5Nb2RhbFpl aWdlbihzb25kZXIsIG9uV2VpdGVyKSB7CiAgICB2YXIgdHlwQ2xzID0gJ3R5cC0nICsgKHNvbmRl ci50eXAgfHwgJ2hpbndlaXMnKTsKICAgIHZhciB0aXRlbEtvcGYgPSAoc29uZGVyLnR5cCA9PT0g J3dhcm51bmcnID8gJ1dhcm5oaW53ZWlzJyA6ICdIaW53ZWlzJykgKyAnIGbDvHIgZGllc2VuIFRh Zyc7CiAgICB2YXIgZm9vdGVyID0gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9 InNvbmRlci13YXJuLW9rIj5WZXJzdGFuZGVuLCB3ZWl0ZXI8L2J1dHRvbj4nOwogICAgbW9kYWxa ZWlnZW4odGl0ZWxLb3BmLCBzb25kZXJJbmhhbHRIdG1sKHNvbmRlciksIGZvb3RlciwgbnVsbCk7 CiAgICB2YXIgbW9kID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vZGFsLWJveCcpOwogICAg aWYgKG1vZCkgbW9kLmNsYXNzTGlzdC5hZGQoJ3NvbmRlci13YXJuLW1vZGFsJywgdHlwQ2xzKTsK ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb25kZXItd2Fybi1vaycpLmFkZEV2ZW50TGlz dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKG1vZCkgbW9kLmNsYXNzTGlz dC5yZW1vdmUoJ3NvbmRlci13YXJuLW1vZGFsJywgdHlwQ2xzKTsKICAgICAgICBtb2RhbFNjaGxp ZXNzZW4oKTsKICAgICAgICBpZiAodHlwZW9mIG9uV2VpdGVyID09PSAnZnVuY3Rpb24nKSBvbldl aXRlcigpOwogICAgfSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBzb25kZXJBbnNpY2h0TW9kYWxaZWln ZW4oc29uZGVyKSB7CiAgICB2YXIgdGl0ZWxLb3BmID0gc29uZGVyLnR5cCA9PT0gJ3dhcm51bmcn ID8gJ1dhcm5oaW53ZWlzJyA6ICdIaW53ZWlzJzsKICAgIG1vZGFsWmVpZ2VuKHRpdGVsS29wZiwg c29uZGVySW5oYWx0SHRtbChzb25kZXIpLAogICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRu LXByaW1hZXIiIGlkPSJzb25kZXItYW5zaWNodC1vayI+U2NobGllw59lbjwvYnV0dG9uPicsCiAg ICAgICAgbnVsbCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc29uZGVyLWFuc2ljaHQt b2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG1vZGFsU2NobGllc3Nlbik7Cn0KCmV4cG9y dCBmdW5jdGlvbiBzb25kZXJFZGl0TW9kYWxaZWlnZW4oaWRPZGVyRGF0dW0pIHsKICAgIC8vIFBh cmFtZXRlcjogInN0Xy4uLiItSUQgKGJlYXJiZWl0ZW4pIG9kZXIgIllZWVktTU0tREQiIChuZXUg ZsO8ciBkaWVzZW4gVGFnKSBvZGVyICIiIChuZXUgb2huZSBEYXR1bSkKICAgIHZhciB2b3JoID0g bnVsbDsKICAgIGlmIChpZE9kZXJEYXR1bSAmJiBpZE9kZXJEYXR1bS5pbmRleE9mKCdzdF8nKSA9 PT0gMCkgdm9yaCA9IHNvbmRlckJ5SWQoaWRPZGVyRGF0dW0pOwogICAgZWxzZSBpZiAoaWRPZGVy RGF0dW0pIHZvcmggPSBzb25kZXJGdWVyRGF0dW0oaWRPZGVyRGF0dW0pOwogICAgdmFyIHN0YXJ0 RGF0dW0gPSAoaWRPZGVyRGF0dW0gJiYgaWRPZGVyRGF0dW0uaW5kZXhPZignc3RfJykgIT09IDAp ID8gaWRPZGVyRGF0dW0gOiAnJzsKICAgIHZhciBzID0gdm9yaCA/IE9iamVjdC5hc3NpZ24oe30s IHZvcmgpIDogeyBkYXR1bTogc3RhcnREYXR1bSwgZGF0dW1CaXM6ICcnLCB0aXRlbDogJycsIHRl eHQ6ICcnLCB0eXA6ICdoaW53ZWlzJywgaWNvbjogJycsIHdhcm5Nb2R1czogJ2ltbWVyJyB9Owog ICAgdmFyIGljb25Wb3JzY2hhdSA9IHMuaWNvbiB8fCAn4oCUJzsKICAgIHZhciB0b29sYmFySHRt bCA9CiAgICAgICAgJzxkaXYgY2xhc3M9InJ0ZS10b29sYmFyIj4nICsKICAgICAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxl PSJGZXR0IChDdHJsK0IpIj48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4nICsKICAgICAgICAg ICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Iml0YWxp YyIgdGl0bGU9Ikt1cnNpdiAoQ3RybCtJKSI+PGVtPkk8L2VtPjwvYnV0dG9uPicgKwogICAgICAg ICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0idW5k ZXJsaW5lIiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRvbj4n ICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+JyArCiAgICAgICAg ICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbnNl cnRVbm9yZGVyZWRMaXN0IiB0aXRsZT0iQXVmesOkaGx1bmciPuKAojwvYnV0dG9uPicgKwogICAg ICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0i aW5zZXJ0T3JkZXJlZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPicgKwogICAg ICAgICAgICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4nICsKICAgICAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Im91dGRlbnQiIHRp dGxlPSJBdXNyw7xja2VuIj7ih6Q8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLD vGNrZW4iPuKHpTwvYnV0dG9uPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAi Pjwvc3Bhbj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRl LWJ0biIgZGF0YS1jbWQ9InJlbW92ZUZvcm1hdCIgdGl0bGU9IkZvcm1hdGllcnVuZyBlbnRmZXJu ZW4iPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB2YXIga29lcnBl ciA9ICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDox MnB4Ij4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMnB4O2ZsZXgt d3JhcDp3cmFwIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIiBzdHls ZT0iZmxleDoxO21pbi13aWR0aDoxNTBweCI+PGxhYmVsPkRhdHVtIChWb24pPC9sYWJlbD48aW5w dXQgdHlwZT0iZGF0ZSIgaWQ9InNlLWRhdHVtIiBjbGFzcz0iZm9ybS1pbnB1dCIgdmFsdWU9Iicg KyBlc2NhcGVBdHRyKHMuZGF0dW0pICsgJyI+PC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTUwcHgiPjxsYWJlbD5E YXR1bSAoQmlzKSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6NDAwO2NvbG9yOnZhcigtLXRleHQt bXV0ZWQpO2ZvbnQtc2l6ZToxMXB4Ij7igJQgbGVlciBsYXNzZW4gZsO8ciBlaW5lbiBUYWc8L3Nw YW4+PC9sYWJlbD48aW5wdXQgdHlwZT0iZGF0ZSIgaWQ9InNlLWRhdHVtLWJpcyIgY2xhc3M9ImZv cm0taW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihzLmRhdHVtQmlzIHx8ICcnKSArICciPjwv ZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVw cGUiPjxsYWJlbD5UaXRlbDwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzZS10aXRlbCIg Y2xhc3M9ImZvcm0taW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihzLnRpdGVsIHx8ICcnKSAr ICciIHBsYWNlaG9sZGVyPSJLdXJ6ZXIgVGl0ZWwsIHouQi4g4oCeS2FybmV2YWwiIiBtYXhsZW5n dGg9IjEwMCI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFi ZWw+VGV4dDwvbGFiZWw+JyArIHRvb2xiYXJIdG1sICsKICAgICAgICAgICAgJzxkaXYgaWQ9InNl LXRleHQiIGNsYXNzPSJydGUtZWRpdG9yIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hl Y2s9InRydWUiPicgKyBzYW5pdGl6ZVJpY2hIdG1sKHMudGV4dCB8fCAnJykgKyAnPC9kaXY+JyAr CiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2Fw OjEycHg7ZmxleC13cmFwOndyYXAiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPjxsYWJlbD5JY29uPC9sYWJlbD48ZGl2PjxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0i c2UtaWNvbi1idG4iIGNsYXNzPSJlbW9qaS1idG4iPicgKyBlc2NhcGVIVE1MKGljb25Wb3JzY2hh dSkgKyAnPC9idXR0b24+PGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9InNlLWljb24iIHZhbHVlPSIn ICsgZXNjYXBlQXR0cihzLmljb24gfHwgJycpICsgJyI+PC9kaXY+PC9kaXY+JyArCiAgICAgICAg ICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImZsZXg6MTttaW4td2lkdGg6MTIw cHgiPjxsYWJlbD5UeXA8L2xhYmVsPjxzZWxlY3QgaWQ9InNlLXR5cCIgY2xhc3M9ImZvcm0taW5w dXQiPicgKwogICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImhpbndlaXMiJyArIChzLnR5 cCA9PT0gJ2hpbndlaXMnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkhpbndlaXMgKOKEuSk8L29w dGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJ3YXJudW5nIicgKyAocy50 eXAgPT09ICd3YXJudW5nJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5XYXJudW5nICjimqApPC9v cHRpb24+JyArCiAgICAgICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAgICAgLy8g IldpY2h0aWciLUNoZWNrYm94IChDaGVycnktUGljayA4NGZiMGY3KS4gTnVyIHNpY2h0YmFyIHdl bm4KICAgICAgICAgICAgLy8gRmVhdHVyZSBha3RpdiDigJQgc29uc3QgYmVoYWVsdCBkZXIgVXNl ciBkaWUgYmluYWVyZSAiVHlwOgogICAgICAgICAgICAvLyBIaW53ZWlzL1dhcm51bmciLVN0ZXVl cnVuZy4gQmFja3dhcmRzLWNvbXBhdDogYWx0ZQogICAgICAgICAgICAvLyB0eXA6J3dhcm51bmcn LUVpbnRyYWVnZSB3ZXJkZW4gaW0gUmVuZGVyIGF1Y2ggb2huZSB3aWNodGlnOnRydWUKICAgICAg ICAgICAgLy8gYWxzIHdpY2h0aWcgbWFya2llcnQuCiAgICAgICAgICAgIChmZWF0dXJlSXN0QWt0 aXYoJ3NvbmRlcnRlcm1pbmVXaWNodGlnJykKICAgICAgICAgICAgICAgID8gJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIiBzdHlsZT0iZmxleDoxO21pbi13aWR0aDoxNDBweCI+PGxhYmVsPk1hcmtp ZXJ1bmc8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAgICc8bGFiZWwgc3R5bGU9ImRpc3Bs YXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7cGFkZGluZzo2cHggMDtj dXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNo ZWNrYm94IiBpZD0ic2Utd2ljaHRpZyInICsgKChzLndpY2h0aWcgfHwgcy50eXAgPT09ICd3YXJu dW5nJykgPyAnIGNoZWNrZWQnIDogJycpICsgJz4gQWxzIOKAnndpY2h0aWciIG1hcmtpZXJlbicg KwogICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgICAnPC9k aXY+JwogICAgICAgICAgICAgICAgOiAnJykgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9y bS1ncnVwcGUiIHN0eWxlPSJmbGV4OjE7bWluLXdpZHRoOjE0MHB4Ij48bGFiZWw+V2Fybm1vZHVz PC9sYWJlbD48c2VsZWN0IGlkPSJzZS13bSIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwogICAgICAg ICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImltbWVyIicgKyAoKHMud2Fybk1vZHVzIHx8ICdpbW1l cicpID09PSAnaW1tZXInID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkltbWVyIGJlaSBQbGFudW5n PC9vcHRpb24+JyArCiAgICAgICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZWlubWFsaWciJyAr IChzLndhcm5Nb2R1cyA9PT0gJ2Vpbm1hbGlnJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5FaW5t YWxpZyBwcm8gVXNlcjwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9 ImF1cyInICsgKHMud2Fybk1vZHVzID09PSAnYXVzJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5B dXMgKG51ciBIZWFkZXItSWNvbik8L29wdGlvbj4nICsKICAgICAgICAgICAgJzwvc2VsZWN0Pjwv ZGl2PicgKwogICAgICAgICc8L2Rpdj48L2Rpdj4nOwogICAgdmFyIGZvb3RlciA9ICh2b3JoID8g JzxidXR0b24gY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBpZD0ic2UtbG9lc2NoZW4iIHN0eWxlPSJt YXJnaW4tcmlnaHQ6YXV0byI+TMO2c2NoZW48L2J1dHRvbj4nIDogJycpICsKICAgICAgICAnPGJ1 dHRvbiBjbGFzcz0iYnRuIiBpZD0ic2UtYWJicmVjaGVuIj5BYmJyZWNoZW48L2J1dHRvbj4nICsK ICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBpZD0ic2Utc3BlaWNoZXJu Ij5TcGVpY2hlcm48L2J1dHRvbj4nOwogICAgLy8gU3BlYyBGLjQ6IG1vZGFsS2V5IGFrdGl2aWVy dCBFbnR3dXJmLVN5c3RlbSBwcm8gU29uZGVydGVybWluCiAgICB2YXIgc29uZGVyTW9kYWxLZXkg PSB2b3JoID8gKCdzb25kZXJfZWRpdF8nICsgdm9yaC5pZCkgOiAoJ3NvbmRlcl9uZXVfJyArIChp ZE9kZXJEYXR1bSB8fCAnJykpOwogICAgbW9kYWxaZWlnZW4odm9yaCA/ICdIaW53ZWlzIGJlYXJi ZWl0ZW4nIDogJ05ldWVyIEhpbndlaXMnLCBrb2VycGVyLCBmb290ZXIsIG51bGwsIHNvbmRlck1v ZGFsS2V5KTsKCiAgICB2YXIgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLXRl eHQnKTsKICAgIHJ0ZUluaXQoZWRpdG9yKTsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn c2UtaWNvbi1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAg ICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGVtb2ppUGlja2VyWmVpZ2VuKHRoaXMs IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWlj b24nKS52YWx1ZSA9IHY7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZS1p Y29uLWJ0bicpLnRleHRDb250ZW50ID0gdiB8fCAn4oCUJzsKICAgICAgICB9KTsKICAgIH0pOwog ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVzc2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdzZS1zcGVpY2hlcm4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewog ICAgICAgIHZhciB0ZXh0SHRtbCA9IHNhbml0aXplUmljaEh0bWwoZWRpdG9yLmlubmVySFRNTCB8 fCAnJyk7CiAgICAgICAgdmFyIGRCaXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2UtZGF0 dW0tYmlzJykudmFsdWU7CiAgICAgICAgdmFyIGRhdGVuID0gewogICAgICAgICAgICBpZDogKHZv cmggJiYgdm9yaC5pZCkgfHwgKCdzdF8nICsgRGF0ZS5ub3coKS50b1N0cmluZygzNikgKyBNYXRo LnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgNSkpLAogICAgICAgICAgICBkYXR1bTog ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWRhdHVtJykudmFsdWUsCiAgICAgICAgICAgIGRh dHVtQmlzOiBkQmlzIHx8ICcnLAogICAgICAgICAgICB0aXRlbDogZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ3NlLXRpdGVsJykudmFsdWUudHJpbSgpLAogICAgICAgICAgICB0ZXh0OiB0ZXh0SHRt bCwKICAgICAgICAgICAgaWNvbjogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWljb24nKS52 YWx1ZSwKICAgICAgICAgICAgdHlwOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2UtdHlwJyku dmFsdWUsCiAgICAgICAgICAgIHdhcm5Nb2R1czogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nl LXdtJykudmFsdWUKICAgICAgICB9OwogICAgICAgIC8vICJ3aWNodGlnIi1GbGFnIGF1cyBvcHRp b25hbGVyIENoZWNrYm94IChUb2dnbGUtYWJoYWVuZ2lnKS4KICAgICAgICAvLyBXZW5uIENoZWNr Ym94IG5pY2h0IGltIERPTSBpc3QgKEZlYXR1cmUgYXVzKSwgYmVzdGVoZW5kZW4gV2VydAogICAg ICAgIC8vIGJlaWJlaGFsdGVuIOKAlCBzb25zdCB3dWVyZGVuIGJlc3RlaGVuZGUgRWludHJhZWdl IGlociBGbGFnIHZlcmxpZXJlbi4KICAgICAgICB2YXIgd2ljaHRpZ0VsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ3NlLXdpY2h0aWcnKTsKICAgICAgICBpZiAod2ljaHRpZ0VsKSBkYXRlbi53 aWNodGlnID0gd2ljaHRpZ0VsLmNoZWNrZWQ7CiAgICAgICAgZWxzZSBpZiAocy53aWNodGlnICE9 PSB1bmRlZmluZWQpIGRhdGVuLndpY2h0aWcgPSBzLndpY2h0aWc7CiAgICAgICAgdmFyIHBsYWlu Q2hlY2sgPSBlZGl0b3IudGV4dENvbnRlbnQudHJpbSgpOwogICAgICAgIGlmICghZGF0ZW4uZGF0 dW0gfHwgIXBsYWluQ2hlY2spIHsgdG9hc3QoJ1N0YXJ0LURhdHVtIHVuZCBUZXh0IHNpbmQgUGZs aWNodGZlbGRlcicsICd3YXJudW5nJyk7IHJldHVybjsgfQogICAgICAgIGlmIChkYXRlbi5kYXR1 bUJpcyAmJiBkYXRlbi5kYXR1bUJpcyA8IGRhdGVuLmRhdHVtKSB7IHRvYXN0KCdFbmQtRGF0dW0g bXVzcyBuYWNoIGRlbSBTdGFydC1EYXR1bSBsaWVnZW4nLCAnd2FybnVuZycpOyByZXR1cm47IH0K ICAgICAgICBpZiAoZGF0ZW4uZGF0dW1CaXMgPT09IGRhdGVuLmRhdHVtKSBkYXRlbi5kYXR1bUJp cyA9ICcnOyAvLyBub3JtYWxpc2llcmVuOiBnbGVpY2ggPSBsZWVyID0gRWluemVsdGFnCiAgICAg ICAgdmFyIGxpc3RlID0gKFouYWRtaW4uc29uZGVydGVybWluZSB8fCBbXSkuc2xpY2UoKTsKICAg ICAgICB2YXIgaWR4ID0gbGlzdGUuZmluZEluZGV4KGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguaWQg PT09IGRhdGVuLmlkOyB9KTsKICAgICAgICBpZiAoaWR4ID49IDApIGxpc3RlW2lkeF0gPSBkYXRl bjsgZWxzZSBsaXN0ZS5wdXNoKGRhdGVuKTsKICAgICAgICBhcGlQdXQoJy9hcGkvYWRtaW4vc29u ZGVydGVybWluZScsIGxpc3RlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBaLmFkbWlu LnNvbmRlcnRlcm1pbmUgPSBsaXN0ZTsKICAgICAgICAgICAgdGFnSW5mb3NCZXJlY2huZW4oKTsK ICAgICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgc29uZGVydGVybWluZVJlbmRl cm4oKTsKICAgICAgICAgICAgZW50d3VyZkxvZXNjaGVuKHNvbmRlck1vZGFsS2V5KTsKICAgICAg ICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICB0b2FzdCgnSGlud2VpcyBn ZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IHRv YXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7CiAgICB9KTsKICAgIGlm ICh2b3JoKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlLWxvZXNjaGVuJyku YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgYmVzdGFl dGlnZW4oJ0hpbndlaXMgd2lya2xpY2ggbMO2c2NoZW4/JywgZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgICAgICB2YXIgbGlzdGUgPSAoWi5hZG1pbi5zb25kZXJ0ZXJtaW5lIHx8IFtdKS5maWx0ZXIo ZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCAhPT0gdm9yaC5pZDsgfSk7CiAgICAgICAgICAgICAg ICBhcGlQdXQoJy9hcGkvYWRtaW4vc29uZGVydGVybWluZScsIGxpc3RlKS50aGVuKGZ1bmN0aW9u KCkgewogICAgICAgICAgICAgICAgICAgIFouYWRtaW4uc29uZGVydGVybWluZSA9IGxpc3RlOwog ICAgICAgICAgICAgICAgICAgIHRhZ0luZm9zQmVyZWNobmVuKCk7CiAgICAgICAgICAgICAgICAg ICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICBzb25kZXJ0ZXJtaW5lUmVuZGVy bigpOwogICAgICAgICAgICAgICAgICAgIGVudHd1cmZMb2VzY2hlbihzb25kZXJNb2RhbEtleSk7 CiAgICAgICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAg ICAgICAgIHRvYXN0KCdIaW53ZWlzIGdlbMO2c2NodCcsICdlcmZvbGcnKTsKICAgICAgICAgICAg ICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwg J2ZlaGxlcicpOyB9KTsKICAgICAgICAgICAgfSwgeyB0aXRlbDogJ0hpbndlaXMgbMO2c2NoZW4n LCBqYURhbmdlcjogdHJ1ZSB9KTsKICAgICAgICB9KTsKICAgIH0KfQo= ### FILE: js/admin_mitteilungen.js | 19959 Ly8gPT09IGFkbWluX21pdHRlaWx1bmdlbi5qcyA9PT0KLy8gQWRtaW4tRWRpdG9yIGZ1ZXIgZGFz IE1pdHRlaWx1bmdzLVN5c3RlbSAoU3ByaW50IEQtM2MsIDIwMjYtMDUtMjkpLgovLyBOdXIgZnVl ciBTdXBlclVzZXIgc2ljaHRiYXIvenVncmVpZmJhciAoU2VydmVyIGdhdGVkIGJlaWRlIFdlZ2U6 Ci8vIEdFVCAvYXBpL21pdHRlaWx1bmdlbi9hbGxlIGlzdCBTVS1vbmx5LCBQT1NUL1BVVC9ERUxF VEUgZWJlbmZhbGxzKS4KLy8KLy8gRnVua3Rpb25zdW1mYW5nOgovLyAgIC0gTGlzdGUgYWxsZXIg TWl0dGVpbHVuZ2VuIChha3RpdmUsIGFiZ2VsYXVmZW5lLCBvaG5lIFN0aWNodGFnKQovLyAgIC0g TmV1ZSBNaXR0ZWlsdW5nIGFubGVnZW4gLyBiZWFyYmVpdGVuIC8gbG9lc2NoZW4KLy8gICAtIFJU RS1UZXh0LUVkaXRvciAoc2FuaXRpemVSaWNoSHRtbCBiZWltIFNhdmUpCi8vICAgLSBNdWx0aS1T ZWxlY3QgZnVlciBQZXJzb25lbiwgRGllbnN0Z3J1cHBlbiwgUm9sbGVuICgrIEFsbGUtQ2hlY2ti b3gpCi8vICAgLSBUcmlnZ2VyOiBlaW5tYWwgfCBqZWRlc21hbCB8IGJpc0RhdHVtICgrIERhdGVw aWNrZXIgYmVpIGxldHp0ZXJlbSkKLy8gICAtIE9wdGlvbmFsZXIgQmlsZC0gdW5kIFBERi1Bbmhh bmcgKEZpbGVSZWFkZXIgLT4gZGF0YTpVUkwgLT4gL3VwbG9hZCkKCmltcG9ydCB7IFogfSBmcm9t ICcuL2NvcmVfc3RhdGUuanMnOwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBkYXR1 bUZvcm1hdERFLCBnZXRGdW5rdGlvbmVuIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwppbXBvcnQg eyBhcGksIGFwaVBvc3QsIGFwaVB1dCwgYXBpRGVsZXRlIH0gZnJvbSAnLi9jb3JlX2FwaS5qcyc7 CmltcG9ydCB7IHRvYXN0LCBtb2RhbFplaWdlbiwgbW9kYWxTY2hsaWVzc2VuLCBiZXN0YWV0aWdl biwgcGZsaWNodGZlbGRGZWhsZXIgfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7IHNh bml0aXplUmljaEh0bWwsIHJ0ZUluaXQgfSBmcm9tICcuL3VpX3J0ZS5qcyc7CgovLyA9PT09PSBM aXN0ZSByZW5kZXJuID09PT09CgpleHBvcnQgZnVuY3Rpb24gbWl0dGVpbHVuZ2VuVGFiUmVuZGVy bigpIHsKICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0dGVp bHVuZ2VuLWluaGFsdCcpOwogICAgaWYgKCFjb250YWluZXIpIHJldHVybjsKICAgIGNvbnRhaW5l ci5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFkbWlu LWVtcHR5LXRleHQiPkxhZGUgTWl0dGVpbHVuZ2VuIOKApjwvZGl2PjwvZGl2Pic7CiAgICBhcGko Jy9hcGkvbWl0dGVpbHVuZ2VuL2FsbGUnKS50aGVuKGZ1bmN0aW9uKGRhdGVuKSB7CiAgICAgICAg dmFyIGxpc3RlID0gKGRhdGVuICYmIGRhdGVuLm1pdHRlaWx1bmdlbikgfHwgW107CiAgICAgICAg aWYgKCFsaXN0ZS5sZW5ndGgpIHsKICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICc8 ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0i YWRtaW4tZW1wdHktdGl0ZWwiPk5vY2gga2VpbmUgTWl0dGVpbHVuZ2VuPC9kaXY+JyArCiAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+S2xpY2sgb2JlbiByZWNo dHMgYXVmIOKAnisgTmV1ZSBNaXR0ZWlsdW5nIiwgdW0gZGVuIGVyc3RlbiBIaW53ZWlzIGZ1ZXIg UGVyc29uZW4sIEdydXBwZW4gb2RlciBSb2xsZW4gYW56dWxlZ2VuLjwvZGl2PicgKwogICAgICAg ICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAg dmFyIGhldXRlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTsKICAgICAg ICB2YXIgaHRtbCA9ICc8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUiPicgKwogICAgICAgICAg ICAnPHRoZWFkPjx0cj4nICsKICAgICAgICAgICAgICAgICc8dGg+VGl0ZWw8L3RoPicgKwogICAg ICAgICAgICAgICAgJzx0aCBzdHlsZT0id2lkdGg6MTMwcHgiPlRyaWdnZXI8L3RoPicgKwogICAg ICAgICAgICAgICAgJzx0aCBzdHlsZT0id2lkdGg6MTIwcHgiPmJpcyBEYXR1bTwvdGg+JyArCiAg ICAgICAgICAgICAgICAnPHRoPkVtcGZhZW5nZXI8L3RoPicgKwogICAgICAgICAgICAgICAgJzx0 aCBzdHlsZT0id2lkdGg6MTIwcHgiPlN0YXR1czwvdGg+JyArCiAgICAgICAgICAgICAgICAnPHRo IHN0eWxlPSJ3aWR0aDoxNDBweCI+QWt0aW9uPC90aD4nICsKICAgICAgICAgICAgJzwvdHI+PC90 aGVhZD48dGJvZHk+JzsKICAgICAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHsKICAgICAg ICAgICAgdmFyIGFiZ2VsYXVmZW4gPSBtLmJpc0RhdHVtICYmIGhldXRlID4gbS5iaXNEYXR1bTsK ICAgICAgICAgICAgaHRtbCArPSAnPHRyIGRhdGEtbWlkPSInICsgZXNjYXBlQXR0cihtLmlkKSAr ICciPicgKwogICAgICAgICAgICAgICAgJzx0ZD48c3Ryb25nPicgKyBlc2NhcGVIVE1MKG0udGl0 ZWwpICsgJzwvc3Ryb25nPicgKwogICAgICAgICAgICAgICAgICAgIChtLnRodW1ibmFpbCA/ICcg PHNwYW4gdGl0bGU9IkJpbGQtQW5oYW5nIj7wn5a8PC9zcGFuPicgOiAnJykgKwogICAgICAgICAg ICAgICAgICAgIChtLnBkZiA/ICcgPHNwYW4gdGl0bGU9IlBERi1BbmhhbmciPvCfk4Q8L3NwYW4+ JyA6ICcnKSArCiAgICAgICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8dGQ+ JyArIGVzY2FwZUhUTUwobS50cmlnZ2VyIHx8ICdlaW5tYWwnKSArICc8L3RkPicgKwogICAgICAg ICAgICAgICAgJzx0ZD4nICsgKG0uYmlzRGF0dW0gPyBkYXR1bUZvcm1hdERFKG0uYmlzRGF0dW0p IDogJ+KAlCcpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPicgKyBfZW1wZmFlbmdl ckxhYmVsKG0uZW1wZmFlbmdlcikgKyAnPC90ZD4nICsKICAgICAgICAgICAgICAgICc8dGQ+JyAr IChhYmdlbGF1ZmVuCiAgICAgICAgICAgICAgICAgICAgPyAnPHNwYW4gc3R5bGU9ImNvbG9yOnZh cigtLXRleHQtbXV0ZWQpIj5hYmdlbGF1ZmVuPC9zcGFuPicKICAgICAgICAgICAgICAgICAgICA6 ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUtZXJmb2xnKTtmb250LXdlaWdodDo2MDAi PmFrdGl2PC9zcGFuPicpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICAgICAnPHRkPicgKwogICAg ICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGRh dGEtYWN0PSJiZWFyYmVpdGVuIj5CZWFyYmVpdGVuPC9idXR0b24+ICcgKwogICAgICAgICAgICAg ICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociBidG4ta2xlaW4iIGRhdGEtYWN0 PSJsb2VzY2hlbiI+TMO2c2NoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICc8L3RkPicg KwogICAgICAgICAgICAnPC90cj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvdGJv ZHk+PC90YWJsZT4nOwogICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBodG1sOwogICAgICAg IGNvbnRhaW5lci5vbmNsaWNrID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgYnRuID0g ZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRhcmdldC5jbG9zZXN0KCdidXR0b25b ZGF0YS1hY3RdJyk7CiAgICAgICAgICAgIGlmICghYnRuKSByZXR1cm47CiAgICAgICAgICAgIHZh ciB0ciA9IGJ0bi5jbG9zZXN0KCd0cltkYXRhLW1pZF0nKTsKICAgICAgICAgICAgaWYgKCF0cikg cmV0dXJuOwogICAgICAgICAgICB2YXIgbWlkID0gdHIuZ2V0QXR0cmlidXRlKCdkYXRhLW1pZCcp OwogICAgICAgICAgICB2YXIgbSA9IGxpc3RlLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5p ZCA9PT0gbWlkOyB9KTsKICAgICAgICAgICAgaWYgKCFtKSByZXR1cm47CiAgICAgICAgICAgIGlm IChidG4uZ2V0QXR0cmlidXRlKCdkYXRhLWFjdCcpID09PSAnYmVhcmJlaXRlbicpIG1pdHRlaWx1 bmdFZGl0b3JPZWZmbmVuKG0pOwogICAgICAgICAgICBlbHNlIGlmIChidG4uZ2V0QXR0cmlidXRl KCdkYXRhLWFjdCcpID09PSAnbG9lc2NoZW4nKSBtaXR0ZWlsdW5nTG9lc2NoZW4obSk7CiAgICAg ICAgfTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICBjb250YWluZXIuaW5uZXJI VE1MID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij4nICsKICAgICAgICAgICAgJzxkaXYgY2xh c3M9ImFkbWluLWVtcHR5LXRpdGVsIj5GZWhsZXIgYmVpbSBMYWRlbjwvZGl2PicgKwogICAgICAg ICAgICAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+JyArIGVzY2FwZUhUTUwoZS5tZXNz YWdlIHx8IFN0cmluZyhlKSkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAg fSk7Cn0KCmZ1bmN0aW9uIF9lbXBmYWVuZ2VyTGFiZWwoZW1wKSB7CiAgICBpZiAoIWVtcCkgcmV0 dXJuICfigJQnOwogICAgaWYgKGVtcC5hbGxlKSByZXR1cm4gJzxzcGFuIHN0eWxlPSJmb250LXdl aWdodDo2MDAiPkFsbGU8L3NwYW4+JzsKICAgIHZhciB0ZWlsZSA9IFtdOwogICAgdmFyIG5QID0g KGVtcC5wZXJzb25lbiB8fCBbXSkubGVuZ3RoOwogICAgdmFyIG5HID0gKGVtcC5ncnVwcGVuIHx8 IFtdKS5sZW5ndGg7CiAgICB2YXIgblIgPSAoZW1wLnJvbGxlbiB8fCBbXSkubGVuZ3RoOwogICAg aWYgKG5QKSB0ZWlsZS5wdXNoKG5QICsgJyBQZXJzb24nICsgKG5QID09PSAxID8gJycgOiAnZW4n KSk7CiAgICBpZiAobkcpIHRlaWxlLnB1c2goKGVtcC5ncnVwcGVuIHx8IFtdKS5qb2luKCcsICcp KTsKICAgIGlmIChuUikgdGVpbGUucHVzaCgoZW1wLnJvbGxlbiB8fCBbXSkuam9pbignLCAnKSk7 CiAgICByZXR1cm4gdGVpbGUubGVuZ3RoID8gZXNjYXBlSFRNTCh0ZWlsZS5qb2luKCcgwrcgJykp IDogJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKSI+4oCUIG5pZW1hbmQg4oCU PC9zcGFuPic7Cn0KCi8vID09PT09IExvZXNjaGVuID09PT09CgpmdW5jdGlvbiBtaXR0ZWlsdW5n TG9lc2NoZW4obSkgewogICAgYmVzdGFldGlnZW4oCiAgICAgICAgJ01pdHRlaWx1bmcg4oCeJyAr IG0udGl0ZWwgKyAnIiBlbmRndWVsdGlnIGxvZXNjaGVuP1xuXG5EaWUgRWludHJhZWdlIHdlcmRl biBhdXMgbWl0dGVpbHVuZ2VuLmpzb24gZW50ZmVybnQg4oCUIEFuaGFlbmdlIChCaWxkL1BERikg YmxlaWJlbiBpbSBVcGxvYWQtT3JkbmVyIHVuZCBrb2VubmVuIG1hbnVlbGwgYXVmZ2VyYWV1bXQg d2VyZGVuLicsCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGFwaURlbGV0ZSgnL2Fw aS9taXR0ZWlsdW5nZW4vJyArIGVuY29kZVVSSUNvbXBvbmVudChtLmlkKSkKICAgICAgICAgICAg ICAgIC50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHRvYXN0KCdNaXR0ZWls dW5nIGdlbG9lc2NodCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgICAgICAgICBtaXR0ZWlsdW5n ZW5UYWJSZW5kZXJuKCk7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNo KGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9 KTsKICAgICAgICB9LAogICAgICAgIHsgdGl0ZWw6ICdNaXR0ZWlsdW5nIGxvZXNjaGVuJywgamFU ZXh0OiAnRW5kZ3VlbHRpZyBsb2VzY2hlbicsIGphRGFuZ2VyOiB0cnVlIH0KICAgICk7Cn0KCi8v ID09PT09IEVkaXRvci1Nb2RhbCAoTmV1ICsgQmVhcmJlaXRlbikgPT09PT0KCmV4cG9ydCBmdW5j dGlvbiBtaXR0ZWlsdW5nTmV1T2VmZm5lbigpIHsKICAgIG1pdHRlaWx1bmdFZGl0b3JPZWZmbmVu KG51bGwpOwp9CgpmdW5jdGlvbiBtaXR0ZWlsdW5nRWRpdG9yT2VmZm5lbihtKSB7CiAgICB2YXIg aXN0TmV1ID0gIW07CiAgICBtID0gbSB8fCB7CiAgICAgICAgaWQ6IG51bGwsCiAgICAgICAgdGl0 ZWw6ICcnLAogICAgICAgIHRleHQ6ICcnLAogICAgICAgIHRodW1ibmFpbDogbnVsbCwKICAgICAg ICBwZGY6IG51bGwsCiAgICAgICAgdHJpZ2dlcjogJ2Vpbm1hbCcsCiAgICAgICAgYmlzRGF0dW06 ICcnLAogICAgICAgIGVtcGZhZW5nZXI6IHsgYWxsZTogdHJ1ZSwgcGVyc29uZW46IFtdLCBncnVw cGVuOiBbXSwgcm9sbGVuOiBbXSB9LAogICAgfTsKICAgIHZhciBncnVwcGVuID0gKFouYWRtaW4u Z3J1cHBlbiB8fCBbXSkubWFwKGZ1bmN0aW9uKGcpIHsgcmV0dXJuIGcubmFtZTsgfSk7CiAgICB2 YXIgZnVua3Rpb25lbiA9IGdldEZ1bmt0aW9uZW4oKS5tYXAoZnVuY3Rpb24oZikgeyByZXR1cm4g Zi5jb2RlOyB9KTsKICAgIHZhciBwZXJzb25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LmZpbHRlcihmdW5jdGlvbihwKSB7IHJldHVybiBwLmFrdGl2ICYmICFwLmdlbG9lc2NodEFtOyB9 KQogICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChh Lm5hbWUgfHwgJycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAnZGUnKTsgfSk7CgogICAg dmFyIGtvZXJwZXIgPSAnJyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIGZvcm0t cGZsaWNodCI+PGxhYmVsPlRpdGVsPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0ibWl0LXRpdGVsIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEw MCUiIG1heGxlbmd0aD0iMTIwIiBkYXRhLW1heGxlbmd0aC1jb3VudGVyPSIxIiB2YWx1ZT0iJyAr IGVzY2FwZUF0dHIobS50aXRlbCkgKyAnIiBwbGFjZWhvbGRlcj0iei5CLiBOZXVlIFNjaGljaHRj b2RlLUtvbnZlbnRpb24gYWIgSnVuaSI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZv cm0tZ3J1cHBlIGZvcm0tcGZsaWNodCI+PGxhYmVsPlRleHQ8L2xhYmVsPicgKwogICAgICAgICAg ICAnPGRpdiBpZD0ibWl0LXRleHQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgY2xhc3M9ImZvcm0t aW5wdXQiIHN0eWxlPSJtaW4taGVpZ2h0OjE0MHB4O3dpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MS41 Ij4nICsgc2FuaXRpemVSaWNoSHRtbChtLnRleHQgfHwgJycpICsgJzwvZGl2PicgKwogICAgICAg ICAgICAnPHNtYWxsIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6dmFy KC0tZnMtc20pIj5SaWNoLVRleHQ6IGZldHQva3Vyc2l2L0xpc3RlbiB1ZWJlciBkZW4gUlRFLUZs b2F0aW5nLUJhciBiZWkgRm9rdXMuPC9zbWFsbD48L2Rpdj4nICsKCiAgICAgICAgJzxkaXYgc3R5 bGU9ImRpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MCAxNnB4 O2FsaWduLWl0ZW1zOmVuZCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBw ZSI+PGxhYmVsPlRyaWdnZXI8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxzZWxlY3QgaWQ9 Im1pdC10cmlnZ2VyIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPicgKwog ICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJlaW5tYWwiJyArIChtLnRyaWdnZXIg PT09ICdlaW5tYWwnID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkVpbm1hbCAoc2llaHQgZGVyIFVz ZXIgZ2VuYXUgMcOXKTwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgICAgICc8b3B0aW9uIHZh bHVlPSJqZWRlc21hbCInICsgKG0udHJpZ2dlciA9PT0gJ2plZGVzbWFsJyA/ICcgc2VsZWN0ZWQn IDogJycpICsgJz5KZWRlcyBNYWwgKDHDlyBwcm8gS2FsZW5kZXJ0YWcpPC9vcHRpb24+JyArCiAg ICAgICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9ImJpc0RhdHVtIicgKyAobS50cmlnZ2Vy ID09PSAnYmlzRGF0dW0nID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPkJpcyBEYXR1bSAodGFlZ2xp Y2ggYmlzIFN0aWNodGFnKTwvb3B0aW9uPicgKwogICAgICAgICAgICAgICAgJzwvc2VsZWN0Pjwv ZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiIGlkPSJtaXQtYmlz RGF0dW0tZ3J1cHBlIiBzdHlsZT0iJyArIChtLnRyaWdnZXIgPT09ICdiaXNEYXR1bScgPyAnJyA6 ICdkaXNwbGF5Om5vbmUnKSArICciPjxsYWJlbD5iaXMgRGF0dW08L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgJzxpbnB1dCB0eXBlPSJkYXRlIiBpZD0ibWl0LWJpc0RhdHVtIiBjbGFzcz0iZm9y bS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVlPSInICsgZXNjYXBlQXR0cihtLmJpc0Rh dHVtIHx8ICcnKSArICciPjwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKCiAgICAgICAgJzxm aWVsZHNldCBjbGFzcz0iZm9ybS1ncnVwcGUiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkIHZhcigt LWJvcmRlci1saWdodCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtbWQpO3BhZGRpbmc6dmFy KC0tc3AtMykiPicgKwogICAgICAgICAgICAnPGxlZ2VuZCBzdHlsZT0icGFkZGluZzowIHZhcigt LXNwLTIpO2ZvbnQtd2VpZ2h0OjYwMCI+RW1wZmFlbmdlcjwvbGVnZW5kPicgKwogICAgICAgICAg ICAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7 bWFyZ2luLWJvdHRvbTp2YXIoLS1zcC0zKSI+JyArCiAgICAgICAgICAgICAgICAnPGlucHV0IHR5 cGU9ImNoZWNrYm94IiBpZD0ibWl0LWVtcC1hbGxlIicgKyAobS5lbXBmYWVuZ2VyLmFsbGUgPyAn IGNoZWNrZWQnIDogJycpICsgJz4gJyArCiAgICAgICAgICAgICAgICAnPHN0cm9uZz5BbGxlIGVp bmdlbG9nZ3RlbiBVc2VyPC9zdHJvbmc+ICh1ZWJlcnNjaHJlaWJ0IGRpZSBBdXN3YWhsIHVudGVu KScgKwogICAgICAgICAgICAnPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxkaXYgaWQ9Im1pdC1l bXAtc3BleiIgc3R5bGU9IicgKyAobS5lbXBmYWVuZ2VyLmFsbGUgPyAnb3BhY2l0eTowLjU7cG9p bnRlci1ldmVudHM6bm9uZScgOiAnJykgKyAnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPkRpZW5zdGdydXBwZW48L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOnZhcigtLXNwLTMpO2Zs ZXgtd3JhcDp3cmFwIj4nICsKICAgICAgICAgICAgICAgICAgICBncnVwcGVuLm1hcChmdW5jdGlv bihnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjayA9IChtLmVtcGZhZW5nZXIuZ3J1 cHBlbiB8fCBbXSkuaW5kZXhPZihnKSA+PSAwID8gJyBjaGVja2VkJyA6ICcnOwogICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gJzxsYWJlbCBzdHlsZT0iZGlzcGxheTpmbGV4O2FsaWduLWl0 ZW1zOmNlbnRlcjtnYXA6NHB4Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8aW5w dXQgdHlwZT0iY2hlY2tib3giIGRhdGEtZW1wLWdydXBwZT0iJyArIGVzY2FwZUF0dHIoZykgKyAn IicgKyBjayArICc+ICcgKyBlc2NhcGVIVE1MKGcpICsKICAgICAgICAgICAgICAgICAgICAgICAg JzwvbGFiZWw+JzsKICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgICAg ICAgICAgICAgJzwvZGl2PjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZv cm0tZ3J1cHBlIj48bGFiZWw+Um9sbGVuIC8gRnVua3Rpb25lbjwvbGFiZWw+JyArCiAgICAgICAg ICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDtnYXA6dmFyKC0tc3AtMyk7Zmxl eC13cmFwOndyYXAiPicgKwogICAgICAgICAgICAgICAgICAgIFsnU1UnLCAnR2VzYW10dmVyYW50 d29ydGxpY2gnXS5jb25jYXQoZnVua3Rpb25lbikubWFwKGZ1bmN0aW9uKHIpIHsKICAgICAgICAg ICAgICAgICAgICAgICAgdmFyIGNrID0gKG0uZW1wZmFlbmdlci5yb2xsZW4gfHwgW10pLmluZGV4 T2YocikgPj0gMCA/ICcgY2hlY2tlZCcgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICc8bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjRw eCI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94 IiBkYXRhLWVtcC1yb2xsZT0iJyArIGVzY2FwZUF0dHIocikgKyAnIicgKyBjayArICc+ICcgKyBl c2NhcGVIVE1MKHIpICsKICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGFiZWw+JzsKICAgICAg ICAgICAgICAgICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2Pjwv ZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+ RWluemVsbmUgUGVyc29uZW4gKE1laHJmYWNoYXVzd2FobCBtaXQgU3RyZy9DbWQpPC9sYWJlbD4n ICsKICAgICAgICAgICAgICAgICAgICAnPHNlbGVjdCBpZD0ibWl0LWVtcC1wZXJzb25lbiIgY2xh c3M9ImZvcm0taW5wdXQiIG11bHRpcGxlIHNpemU9IjYiIHN0eWxlPSJ3aWR0aDoxMDAlIj4nICsK ICAgICAgICAgICAgICAgICAgICBwZXJzb25lbi5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgICAg ICAgICAgICAgICAgICB2YXIgY2sgPSAobS5lbXBmYWVuZ2VyLnBlcnNvbmVuIHx8IFtdKS5zb21l KGZ1bmN0aW9uKGlkKSB7IHJldHVybiBTdHJpbmcoaWQpID09PSBTdHJpbmcocC5pZCk7IH0pID8g JyBzZWxlY3RlZCcgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSAoKHAu dm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpKS50cmltKCk7 CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0iJyArIHAuaWQg KyAnIicgKyBjayArICc+JyArIGVzY2FwZUhUTUwobmFtZSkgKyAnICgnICsgZXNjYXBlSFRNTChw LmdydXBwZSB8fCAn4oCTJykgKyAnKTwvb3B0aW9uPic7CiAgICAgICAgICAgICAgICAgICAgfSku am9pbignJykgKwogICAgICAgICAgICAgICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAg ICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2ZpZWxkc2V0PicgKwoKICAgICAgICAnPGZpZWxk c2V0IGNsYXNzPSJmb3JtLWdydXBwZSIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y ZGVyLWxpZ2h0KTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCk7cGFkZGluZzp2YXIoLS1z cC0zKSI+JyArCiAgICAgICAgICAgICc8bGVnZW5kIHN0eWxlPSJwYWRkaW5nOjAgdmFyKC0tc3At Mik7Zm9udC13ZWlnaHQ6NjAwIj5BbmhhZW5nZSAob3B0aW9uYWwpPC9sZWdlbmQ+JyArCiAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlRodW1ibmFpbC1CaWxkICht YXguIDIgTUIsIEpQRy9QTkcvV2ViUCk8L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxpbnB1 dCB0eXBlPSJmaWxlIiBpZD0ibWl0LWJpbGQtaW5wdXQiIGFjY2VwdD0iaW1hZ2UvanBlZyxpbWFn ZS9wbmcsaW1hZ2Uvd2VicCIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwogICAgICAgICAgICAgICAg JzxkaXYgaWQ9Im1pdC1iaWxkLXZvcnNjaGF1IiBzdHlsZT0ibWFyZ2luLXRvcDp2YXIoLS1zcC0y KSI+JyArCiAgICAgICAgICAgICAgICAgICAgKG0udGh1bWJuYWlsID8gJzxhIGhyZWY9IicgKyBl c2NhcGVBdHRyKG0udGh1bWJuYWlsKSArICciIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iJyAr IGVzY2FwZUF0dHIobS50aHVtYm5haWwpICsgJyIgYWx0PSJBbmhhbmciIHN0eWxlPSJtYXgtd2lk dGg6MjAwcHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtc20pIj48L2E+IDxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBpZD0ibWl0LWJpbGQtZW50 ZmVybmVuIj5FbnRmZXJuZW48L2J1dHRvbj4nIDogJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS10 ZXh0LW11dGVkKSI+4oCUIGtlaW4gQmlsZCDigJQ8L3NwYW4+JykgKwogICAgICAgICAgICAgICAg JzwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz PSJmb3JtLWdydXBwZSI+PGxhYmVsPlBERi1BbmhhbmcgKG1heC4gMTAgTUIpPC9sYWJlbD4nICsK ICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9Im1pdC1wZGYtaW5wdXQiIGFj Y2VwdD0iYXBwbGljYXRpb24vcGRmIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArCiAgICAgICAgICAg ICAgICAnPGRpdiBpZD0ibWl0LXBkZi12b3JzY2hhdSIgc3R5bGU9Im1hcmdpbi10b3A6dmFyKC0t c3AtMikiPicgKwogICAgICAgICAgICAgICAgICAgIChtLnBkZiA/ICc8YSBocmVmPSInICsgZXNj YXBlQXR0cihtLnBkZikgKyAnIiB0YXJnZXQ9Il9ibGFuayI+8J+ThCAnICsgZXNjYXBlSFRNTCht LnBkZi5zcGxpdCgnLycpLnBvcCgpKSArICc8L2E+IDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFz cz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBpZD0ibWl0LXBkZi1lbnRmZXJuZW4iPkVudGZlcm5l bjwvYnV0dG9uPicgOiAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj7igJQg a2VpbiBQREYg4oCUPC9zcGFuPicpICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAg ICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2ZpZWxkc2V0Pic7CgogICAgdmFyIGZ1c3MgPSAn PGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0ibWl0LWFiYnJlY2hlbiIgdHlwZT0iYnV0dG9uIj5BYmJy ZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4t cHJpbWFlciIgaWQ9ImRsZy1zcGVpY2hlcm4iIHR5cGU9ImJ1dHRvbiI+JyArIChpc3ROZXUgPyAn QW5sZWdlbicgOiAnU3BlaWNoZXJuJykgKyAnPC9idXR0b24+JzsKCiAgICAvLyBTdGF0ZSBmdWVy IGRpZSBBbmhhZW5nZSDigJQgd2lyZCBkdXJjaCBVcGxvYWRzL0VudGZlcm5lbiB1ZWJlcnNjaHJp ZWJlbi4KICAgIHZhciBzdGF0ZSA9IHsKICAgICAgICB0aHVtYm5haWw6IG0udGh1bWJuYWlsIHx8 IG51bGwsCiAgICAgICAgcGRmOiBtLnBkZiB8fCBudWxsLAogICAgfTsKCiAgICBtb2RhbFplaWdl bihpc3ROZXUgPyAnTmV1ZSBNaXR0ZWlsdW5nJyA6ICdNaXR0ZWlsdW5nIGJlYXJiZWl0ZW4nLCBr b2VycGVyLCBmdXNzLAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdGl0ZWwg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0LXRpdGVsJykudmFsdWUudHJpbSgpOwogICAg ICAgICAgICB2YXIgdGV4dFJhdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtdGV4dCcp LmlubmVySFRNTDsKICAgICAgICAgICAgaWYgKCF0aXRlbCkgeyBwZmxpY2h0ZmVsZEZlaGxlcign bWl0LXRpdGVsJywgJ1RpdGVsIGlzdCBQZmxpY2h0ZmVsZCcpOyByZXR1cm47IH0KICAgICAgICAg ICAgLy8gUlRFIGxpZWZlcnQgSFRNTDsgZGVmZW5zaXYgc2FuaXRpemVuICsgYXVmIFBsYWluLUxl bmd0aCBwcnVlZmVuCiAgICAgICAgICAgIHZhciB0ZXh0U2FuID0gc2FuaXRpemVSaWNoSHRtbCh0 ZXh0UmF3KTsKICAgICAgICAgICAgdmFyIHBsYWluTGVuID0gdGV4dFNhbi5yZXBsYWNlKC88W14+ XSs+L2csICcnKS50cmltKCkubGVuZ3RoOwogICAgICAgICAgICBpZiAocGxhaW5MZW4gPT09IDAp IHsgcGZsaWNodGZlbGRGZWhsZXIoJ21pdC10ZXh0JywgJ1RleHQgaXN0IFBmbGljaHRmZWxkJyk7 IHJldHVybjsgfQogICAgICAgICAgICB2YXIgdHJpZ2dlciA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdtaXQtdHJpZ2dlcicpLnZhbHVlOwogICAgICAgICAgICB2YXIgYmlzRGF0dW0gPSB0cmln Z2VyID09PSAnYmlzRGF0dW0nID8gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtYmlzRGF0 dW0nKS52YWx1ZSB8fCBudWxsKSA6IG51bGw7CiAgICAgICAgICAgIGlmICh0cmlnZ2VyID09PSAn YmlzRGF0dW0nICYmICFiaXNEYXR1bSkgewogICAgICAgICAgICAgICAgcGZsaWNodGZlbGRGZWhs ZXIoJ21pdC1iaXNEYXR1bScsICdiaXMgRGF0dW0gaXN0IFBmbGljaHQgYmVpIFRyaWdnZXIg4oCe YmlzRGF0dW0iJyk7IHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYWxsZSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtZW1wLWFsbGUnKS5jaGVja2VkOwogICAgICAg ICAgICB2YXIgZ3J1cHBlbiA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs bCgnaW5wdXRbZGF0YS1lbXAtZ3J1cHBlXTpjaGVja2VkJykpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24oZWwpIHsgcmV0dXJuIGVsLmdldEF0dHJpYnV0ZSgn ZGF0YS1lbXAtZ3J1cHBlJyk7IH0pOwogICAgICAgICAgICB2YXIgcm9sbGVuID0gW10uc2xpY2Uu Y2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFtkYXRhLWVtcC1yb2xsZV06Y2hl Y2tlZCcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKGVs KSB7IHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1wLXJvbGxlJyk7IH0pOwogICAgICAg ICAgICB2YXIgcGVyc29uZW5TZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0LWVtcC1w ZXJzb25lbicpOwogICAgICAgICAgICB2YXIgcGVyc29uZW5JZHMgPSBbXS5zbGljZS5jYWxsKHBl cnNvbmVuU2VsLnNlbGVjdGVkT3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAubWFwKGZ1bmN0aW9uKG8pIHsgcmV0dXJuIHBhcnNlSW50KG8udmFsdWUsIDEwKTsgfSk7CiAg ICAgICAgICAgIGlmICghYWxsZSAmJiBncnVwcGVuLmxlbmd0aCA9PT0gMCAmJiByb2xsZW4ubGVu Z3RoID09PSAwICYmIHBlcnNvbmVuSWRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAg dG9hc3QoJ01pbmRlc3RlbnMgZWluZW4gRW1wZmFlbmdlciB3YWVobGVuIChvZGVyIOKAnkFsbGUi IGFrdGl2aWVyZW4pJywgJ3dhcm51bmcnKTsgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAg ICAgIHZhciBwYXlsb2FkID0gewogICAgICAgICAgICAgICAgdGl0ZWw6IHRpdGVsLAogICAgICAg ICAgICAgICAgdGV4dDogdGV4dFNhbiwKICAgICAgICAgICAgICAgIHRyaWdnZXI6IHRyaWdnZXIs CiAgICAgICAgICAgICAgICBiaXNEYXR1bTogYmlzRGF0dW0sCiAgICAgICAgICAgICAgICBlbXBm YWVuZ2VyOiB7CiAgICAgICAgICAgICAgICAgICAgYWxsZTogYWxsZSwKICAgICAgICAgICAgICAg ICAgICBwZXJzb25lbjogYWxsZSA/IFtdIDogcGVyc29uZW5JZHMsCiAgICAgICAgICAgICAgICAg ICAgZ3J1cHBlbjogIGFsbGUgPyBbXSA6IGdydXBwZW4sCiAgICAgICAgICAgICAgICAgICAgcm9s bGVuOiAgIGFsbGUgPyBbXSA6IHJvbGxlbiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg ICAgICB0aHVtYm5haWw6IHN0YXRlLnRodW1ibmFpbCwKICAgICAgICAgICAgICAgIHBkZjogc3Rh dGUucGRmLAogICAgICAgICAgICB9OwogICAgICAgICAgICB2YXIgdXJsID0gaXN0TmV1ID8gJy9h cGkvbWl0dGVpbHVuZ2VuJyA6ICcvYXBpL21pdHRlaWx1bmdlbi8nICsgZW5jb2RlVVJJQ29tcG9u ZW50KG0uaWQpOwogICAgICAgICAgICB2YXIgcCA9IGlzdE5ldSA/IGFwaVBvc3QodXJsLCBwYXls b2FkKSA6IGFwaVB1dCh1cmwsIHBheWxvYWQpOwogICAgICAgICAgICBwLnRoZW4oZnVuY3Rpb24o KSB7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgICAg ICB0b2FzdChpc3ROZXUgPyAnTWl0dGVpbHVuZyBhbmdlbGVndCcgOiAnTWl0dGVpbHVuZyBha3R1 YWxpc2llcnQnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgICAgICBtaXR0ZWlsdW5nZW5UYWJSZW5k ZXJuKCk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjog JyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICB9CiAgICApOwoKICAgIC8vIFJU RSBhdWYgZGFzIGNvbnRlbnRlZGl0YWJsZS1UZXh0ZmVsZAogICAgdmFyIHJ0ZSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdtaXQtdGV4dCcpOwogICAgaWYgKHJ0ZSAmJiB0eXBlb2YgcnRlSW5p dCA9PT0gJ2Z1bmN0aW9uJykgcnRlSW5pdChydGUpOwoKICAgIC8vIFRyaWdnZXItV2VjaHNlbDog YmlzRGF0dW0tRmVsZCBlaW4tL2F1c2JsZW5kZW4KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdtaXQtdHJpZ2dlcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewog ICAgICAgIHZhciBnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1iaXNEYXR1bS1ncnVw cGUnKTsKICAgICAgICBpZiAoZykgZy5zdHlsZS5kaXNwbGF5ID0gKHRoaXMudmFsdWUgPT09ICdi aXNEYXR1bScgPyAnJyA6ICdub25lJyk7CiAgICB9KTsKCiAgICAvLyBFbXBmYWVuZ2VyIOKAnkFs bGUiIHRvZ2dlbHQgZGllIHNwZXppZmlzY2hlbiBBdXN3YWhsZW4gdmlzdWVsbCBhdXMKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtZW1wLWFsbGUnKS5hZGRFdmVudExpc3RlbmVyKCdj aGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdtaXQtZW1wLXNwZXonKTsKICAgICAgICBpZiAocykgewogICAgICAgICAgICBzLnN0eWxl Lm9wYWNpdHkgPSB0aGlzLmNoZWNrZWQgPyAnMC41JyA6ICcnOwogICAgICAgICAgICBzLnN0eWxl LnBvaW50ZXJFdmVudHMgPSB0aGlzLmNoZWNrZWQgPyAnbm9uZScgOiAnJzsKICAgICAgICB9CiAg ICB9KTsKCiAgICAvLyBCaWxkLVVwbG9hZAogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21p dC1iaWxkLWlucHV0JykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgX2RhdFVwbG9hZFZlcmFyYmVpdGVuKHRoaXMuZmlsZXMgJiYgdGhpcy5maWxlc1swXSwg J2JpbGQnLCBmdW5jdGlvbihwZmFkKSB7CiAgICAgICAgICAgIHN0YXRlLnRodW1ibmFpbCA9IHBm YWQ7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaXQtYmlsZC12b3JzY2hh dScpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAnPGEgaHJlZj0iJyArIGVzY2FwZUF0dHIo cGZhZCkgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxpbWcg c3JjPSInICsgZXNjYXBlQXR0cihwZmFkKSArICciIGFsdD0iQW5oYW5nIiBzdHlsZT0ibWF4LXdp ZHRoOjIwMHB4O2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLXNtKSI+JyArCiAgICAgICAgICAg ICAgICAnPC9hPiA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1r bGVpbiIgaWQ9Im1pdC1iaWxkLWVudGZlcm5lbiI+RW50ZmVybmVuPC9idXR0b24+JzsKICAgICAg ICAgICAgX2JpbGRFbnRmZXJuZW5CaW5kZW4oc3RhdGUpOwogICAgICAgIH0pOwogICAgfSk7CiAg ICBfYmlsZEVudGZlcm5lbkJpbmRlbihzdGF0ZSk7CgogICAgLy8gUERGLVVwbG9hZAogICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1wZGYtaW5wdXQnKS5hZGRFdmVudExpc3RlbmVyKCdj aGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZmlsZSA9IHRoaXMuZmlsZXMgJiYgdGhp cy5maWxlc1swXTsKICAgICAgICB2YXIgbmFtZSA9IGZpbGUgPyBmaWxlLm5hbWUgOiAnZG9rdS5w ZGYnOwogICAgICAgIF9kYXRVcGxvYWRWZXJhcmJlaXRlbihmaWxlLCAncGRmJywgZnVuY3Rpb24o cGZhZCkgewogICAgICAgICAgICBzdGF0ZS5wZGYgPSBwZmFkOwogICAgICAgICAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnbWl0LXBkZi12b3JzY2hhdScpLmlubmVySFRNTCA9CiAgICAgICAg ICAgICAgICAnPGEgaHJlZj0iJyArIGVzY2FwZUF0dHIocGZhZCkgKyAnIiB0YXJnZXQ9Il9ibGFu ayI+8J+ThCAnICsgZXNjYXBlSFRNTChuYW1lKSArICc8L2E+ICcgKwogICAgICAgICAgICAgICAg JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBpZD0i bWl0LXBkZi1lbnRmZXJuZW4iPkVudGZlcm5lbjwvYnV0dG9uPic7CiAgICAgICAgICAgIF9wZGZF bnRmZXJuZW5CaW5kZW4oc3RhdGUpOwogICAgICAgIH0pOwogICAgfSk7CiAgICBfcGRmRW50ZmVy bmVuQmluZGVuKHN0YXRlKTsKCiAgICAvLyBBYmJyZWNoZW4KICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdtaXQtYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlv bigpIHsgbW9kYWxTY2hsaWVzc2VuKHRydWUpOyB9KTsKfQoKZnVuY3Rpb24gX2JpbGRFbnRmZXJu ZW5CaW5kZW4oc3RhdGUpIHsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bWl0LWJpbGQtZW50ZmVybmVuJyk7CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgYnRuLmFkZEV2 ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgc3RhdGUudGh1bWJuYWls ID0gbnVsbDsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWl0LWJpbGQtdm9yc2No YXUnKS5pbm5lckhUTUwgPSAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj7i gJQga2VpbiBCaWxkIOKAlDwvc3Bhbj4nOwogICAgICAgIHZhciBpbnAgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnbWl0LWJpbGQtaW5wdXQnKTsKICAgICAgICBpZiAoaW5wKSBpbnAudmFsdWUg PSAnJzsKICAgIH0pOwp9CgpmdW5jdGlvbiBfcGRmRW50ZmVybmVuQmluZGVuKHN0YXRlKSB7CiAg ICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1wZGYtZW50ZmVybmVuJyk7 CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg ZnVuY3Rpb24oKSB7CiAgICAgICAgc3RhdGUucGRmID0gbnVsbDsKICAgICAgICBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnbWl0LXBkZi12b3JzY2hhdScpLmlubmVySFRNTCA9ICc8c3BhbiBzdHls ZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPuKAlCBrZWluIFBERiDigJQ8L3NwYW4+JzsKICAg ICAgICB2YXIgaW5wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pdC1wZGYtaW5wdXQnKTsK ICAgICAgICBpZiAoaW5wKSBpbnAudmFsdWUgPSAnJzsKICAgIH0pOwp9CgpmdW5jdGlvbiBfZGF0 VXBsb2FkVmVyYXJiZWl0ZW4oZmlsZSwgYXJ0LCBvbkZlcnRpZykgewogICAgaWYgKCFmaWxlKSBy ZXR1cm47CiAgICB2YXIgbWF4ID0gYXJ0ID09PSAncGRmJyA/IDEwICogMTAyNCAqIDEwMjQgOiAy ICogMTAyNCAqIDEwMjQ7CiAgICBpZiAoZmlsZS5zaXplID4gbWF4KSB7CiAgICAgICAgdmFyIGxp bWl0S2IgPSBtYXggLyAxMDI0OwogICAgICAgIHRvYXN0KGFydCArICc6IERhdGVpIHp1IGdyb3Nz IChtYXggJyArIGxpbWl0S2IgKyAnIEtCKScsICdmZWhsZXInKTsgcmV0dXJuOwogICAgfQogICAg dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rp b24oKSB7CiAgICAgICAgdmFyIGRhdGFVcmwgPSByZWFkZXIucmVzdWx0OwogICAgICAgIGFwaVBv c3QoJy9hcGkvbWl0dGVpbHVuZ2VuL3VwbG9hZCcsIHsgYXJ0OiBhcnQsIGRhdGVpbmFtZTogZmls ZS5uYW1lLCBkYXRhVXJsOiBkYXRhVXJsIH0pCiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJl cykgewogICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMucGZhZCkgb25GZXJ0aWcocmVzLnBm YWQpOwogICAgICAgICAgICAgICAgZWxzZSB0b2FzdCgnVXBsb2FkLUFudHdvcnQgb2huZSBQZmFk JywgJ2ZlaGxlcicpOwogICAgICAgICAgICB9KQogICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24o ZSkgeyB0b2FzdCgnVXBsb2FkLUZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsK ICAgIH07CiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkgeyB0b2FzdCgnS29ubnRlIERh dGVpIG5pY2h0IGxlc2VuJywgJ2ZlaGxlcicpOyB9OwogICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwo ZmlsZSk7Cn0K ### FILE: js/admin_personal.js | 108762 Ly8gPT09IGFkbWluX3BlcnNvbmFsLmpzID09PQovLyBQaGFzZSA5LUIgQzQ6IGF1cyBhZG1pbi5q cyBleHRyYWhpZXJ0LiBHcm9lc3N0ZXMgU3ViLU1vZHVsIGRlciBQaGFzZSwKLy8gYnVlbmRlbHQg YWxsZSBQZXJzb25hbC1iZXpvZ2VuZW4gQWRtaW4tRnVua3Rpb25lbjoKLy8KLy8gICAtIFBlcnNv bmFsLVRhYmVsbGUgKG1pdCBOZXVpbXBvcnQtQmxvY2ssIElubGluZS1FZGl0cywgUGFwaWVya29y Yi0KLy8gICAgIEZpbHRlciwgR3J1cHBlbi1UcmVubmVyKQovLyAgIC0gUGVyc29uIE5ldS9CZWFy YmVpdGVuL0xvZXNjaGVuICsgTWFudWVsbGUgU29ydGllcnVuZwovLyAgIC0gSW5saW5lLUVkaXRv cmVuIGZ1ZXIgUmFuZywgRGllbnN0Z3JhZCwgRnVua3Rpb24gdW5kIGJlbGllYmlnZQovLyAgICAg RGF0ZW4tRmVsZGVyIChUZWxlZm9uLCBFLU1haWwsIE5XLUtlbm51bmcsIE9FLCAuLi4pCi8vICAg LSBFLU1haWwtQWt0aW9uIGF1cyBkZXIgUGVyc29uYWwtVGFiZWxsZQovLwovLyBFeHRlcm5lciBL b25zdW1lbnQ6IGFwcC5qcyBiaW5kZXQgfjE1IGRpZXNlciBTeW1ib2xlOyBibGVpYnQgdWViZXIK Ly8gZGFzIFBhc3MtVGhyb3VnaC1SZS1FeHBvcnQgaW4gYWRtaW4uanMgdW52ZXJhZW5kZXJ0IGJp cyBQaGFzZSA5LUIgQzUuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1w b3J0IHsKZXNjYXBlSFRNTCwgZXNjYXBlQXR0ciwgZGF0dW1Gb3JtYXRERSwgZGF0dW1TdHIsCmdl dEZ1bmt0aW9uZW4sIGdldERpZW5zdGdyYWRlLApfcGVyc29uQW56ZWlnZSwgYWJzZW5kZXJOYW1l RXJtaXR0ZWxuLAphdmF0YXJLcmVpc0h0bWwsIHBlcnNvblNjaGljaHRBbQp9IGZyb20gJy4vY29y ZV91dGlsLmpzJzsKCi8vIHBlcnNvblNjaGljaHRBbSAoUm90YXRpb25zLVNjaGljaHQgRi9TL04g YXVzIGRlciBTdGFuZG9ydC1TY2hpY2h0Zm9sZ2UpCi8vIGxpZWd0IHNlaXQgMjAyNi0wNS0yNyBp biBjb3JlX3V0aWwuanMg4oCUIHdpcmQgaGllciBpbXBvcnRpZXJ0IHVuZCBhdWNoIHZvbQovLyBT Y2hpY2h0LVRlYW0tTW9kdWwgZ2VudXR6dC4KLy8gX2lzdERyaXR0ZUZ1bmt0aW9uIHd1cmRlIGFt IDIwMjYtMDUtMjMgZW50ZmVybnQ6IGRpZSBWSTMtREdMLQovLyBRdWFsaWZpemllcnVuZyBpc3Qg c2VpdGRlbSBmdWVyIGFsbGUgRnVua3Rpb25lbiBwZmxlZ2JhciwgbmljaHQKLy8gbWVociBudXIg ZnVlciAiMy4gTWFubi9GcmF1Ii4KCi8vIE5hZWNoc3RlciBXZWNoc2VsdGFnIGZ1ZXIgZWluZSBQ ZXJzb24gYWIgZ2VnZWJlbmVtIERhdHVtLiBXZWNoc2VsdGFnID0KLy8gVGFnLCBhbiBkZW0gZGll IGFiZ2VsZWl0ZXRlIFNjaGljaHQgc2ljaCBnZWdlbnVlYmVyIGRlbSBWb3J0YWcgYWVuZGVydC4K Ly8gTGllZmVydCB7IGRhdHVtLCB2b24sIG5hY2ggfSBvZGVyIG51bGwuCmZ1bmN0aW9uIF9wZXJz b25OYWVjaHN0ZXJXZWNoc2VsKHBlcnNvbiwgYWJEYXR1bSkgewogICAgaWYgKCFwZXJzb24gfHwg IXBlcnNvbi5ncnVwcGUgfHwgIXBlcnNvbi5vZSkgcmV0dXJuIG51bGw7CiAgICB2YXIgc3RhbmRv cnQgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pLmZpbmQoZnVuY3Rpb24ocykgeyByZXR1cm4g KHMua3VlcnplbCB8fCAnJykgPT09IHBlcnNvbi5vZTsgfSk7CiAgICBpZiAoIXN0YW5kb3J0IHx8 IHN0YW5kb3J0LmlzdFBvb2wpIHJldHVybiBudWxsOwogICAgdmFyIGhldXRlID0gYWJEYXR1bSA/ IG5ldyBEYXRlKGFiRGF0dW0gKyAnVDAwOjAwOjAwJykgOiBuZXcgRGF0ZSgpOwogICAgdmFyIGFr dHVlbGwgPSBwZXJzb25TY2hpY2h0QW0ocGVyc29uLCBkYXR1bVN0cihoZXV0ZSkpOwogICAgaWYg KCFha3R1ZWxsKSByZXR1cm4gbnVsbDsKICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IDYwOyBpKysp IHsKICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKGhldXRlKTsKICAgICAgICBkLnNldERhdGUoZC5n ZXREYXRlKCkgKyBpKTsKICAgICAgICB2YXIgZHMgPSBkYXR1bVN0cihkKTsKICAgICAgICB2YXIg cyA9IHBlcnNvblNjaGljaHRBbShwZXJzb24sIGRzKTsKICAgICAgICBpZiAocyAmJiBzICE9PSBh a3R1ZWxsKSByZXR1cm4geyBkYXR1bTogZHMsIHZvbjogYWt0dWVsbCwgbmFjaDogcyB9OwogICAg fQogICAgcmV0dXJuIG51bGw7Cn0KCi8vIEtvbXBha3RlIEFuemVpZ2UgZnVlciBkaWUgIlJvdGEi LVNwYWx0ZTogRi9TL04tUGlsbGUgKyBIb3Zlci1Ub29sdGlwCi8vIG1pdCBha3R1ZWxsZXIgU2No aWNodCArIG5hZWNoc3RlbSBXZWNoc2VsdGFnLgpmdW5jdGlvbiBfcGVyc29uUm90YVBpbGxlKHBl cnNvbikgewogICAgdmFyIGhldXRlID0gZGF0dW1TdHIobmV3IERhdGUoKSk7CiAgICB2YXIgYWt0 dWVsbCA9IHBlcnNvblNjaGljaHRBbShwZXJzb24sIGhldXRlKTsKICAgIGlmICghYWt0dWVsbCkg cmV0dXJuICc8c3BhbiBjbGFzcz0icm90YS1waWxsZSByb3RhLWxlZXIiIHRpdGxlPSJLZWluZSBT Y2hpY2h0cm90YXRpb24gKFN0YW5kb3J0L0dydXBwZSBuaWNodCB6dW9yZGVuYmFyKSI+4oCUPC9z cGFuPic7CiAgICB2YXIgZmFyYmUgPSBha3R1ZWxsID09PSAnRicgPyAncm90YS1mJyA6IGFrdHVl bGwgPT09ICdTJyA/ICdyb3RhLXMnIDogJ3JvdGEtbic7CiAgICB2YXIgbGFiZWwgPSB7IEY6ICdG csO8aGRpZW5zdCcsIFM6ICdTcMOkdGRpZW5zdCcsIE46ICdOYWNodGRpZW5zdCcgfVtha3R1ZWxs XTsKICAgIHZhciB3ID0gX3BlcnNvbk5hZWNoc3RlcldlY2hzZWwocGVyc29uLCBoZXV0ZSk7CiAg ICB2YXIgdGlwID0gbGFiZWwgKyAnIGhldXRlJzsKICAgIGlmICh3KSB7CiAgICAgICAgdmFyIG5h Y2hMYWJlbCA9IHsgRjogJ0Zyw7xoJywgUzogJ1Nww6R0JywgTjogJ05hY2h0JyB9W3cubmFjaF07 CiAgICAgICAgdGlwICs9ICdcbldlY2hzZWw6ICcgKyBkYXR1bUZvcm1hdERFKHcuZGF0dW0pICsg JyDihpIgJyArIG5hY2hMYWJlbDsKICAgIH0KICAgIHJldHVybiAnPHNwYW4gY2xhc3M9InJvdGEt cGlsbGUgJyArIGZhcmJlICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRpcCkgKyAnIj4nICsg YWt0dWVsbCArICc8L3NwYW4+JzsKfQppbXBvcnQgeyBhcGksIGFwaVBvc3QsIGFwaVB1dCwgYXBp RGVsZXRlIH0gZnJvbSAnLi9jb3JlX2FwaS5qcyc7CmltcG9ydCB7CnRvYXN0LCBiZXN0YWV0aWdl biwKbW9kYWxaZWlnZW4sIG1vZGFsU2NobGllc3NlbiwKZW50d3VyZkxvZXNjaGVuLCBwZmxpY2h0 ZmVsZEZlaGxlciwgaGlsZmVJY29uCn0gZnJvbSAnLi91aV9kaWFsb2cuanMnOwppbXBvcnQgeyBw ZXJzb25lbk5ldUF1ZmJhdWVuIH0gZnJvbSAnLi9jb3JlX2RhdGVuTGFkZW4uanMnOwppbXBvcnQg ewprb3BmUmVuZGVybiwgbmFtZW5SZW5kZXJuLCBkYXRlbkdyaWRSZW5kZXJuCn0gZnJvbSAnLi9n cmlkX3JlbmRlci5qcyc7CmltcG9ydCB7IG1haWxUcmlnZ2VyRmV1ZXJuIH0gZnJvbSAnLi9lbWFp bF92b3JsYWdlbi5qcyc7Ci8vIGZlYXR1cmVJc3RBa3RpdiBsZWJ0IGltIEJvb3RzdHJhcC1UZWls IHZvbiBhZG1pbi5qcyAoRmVhdHVyZS1Ub2dnbGVzLAovLyBuaWNodCBpbiBlaW5lbSBkZXIgUGhh c2UtOS1CLVN1Yi1Nb2R1bGUpLiBXaXJkIGhpZXIgZnVlcgovLyBwYXBpZXJrb3JiVUkgLyBwZXJz b25hbElubGluZUVkaXQgLyBrb2xsZWdlbkhlcnZvcmhlYmVuIC8KLy8gcGVyUGVyc29uU2ljaHRi YXJrZWl0IC8gZW1haWxBdXRvU3VmZml4IGdlYnJhdWNodC4KLy8gYWRtaW5FbXB0eVplaWxlOiBF bXB0eS1TdGF0ZS1LYXJ0ZSBhbHMgPHRyPiBmdWVyIGxlZXJlIExpc3Rlbi4KaW1wb3J0IHsgZmVh dHVyZUlzdEFrdGl2LCBhZG1pbkVtcHR5WmVpbGUgfSBmcm9tICcuL2FkbWluLmpzJzsKCmV4cG9y dCBmdW5jdGlvbiBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCkgewogICAgLy8gTmV1aW1wb3J0LUJs b2NrIG9iZW4gcmVuZGVybiAoZnJpc2NoIGltcG9ydGllcnRlIFBlcnNvbmVuKS4KICAgIC8vIFdl bm4ga2VpbmUgdm9yaGFuZGVuLCBibGVuZGV0IGRpZSBGdW5rdGlvbiBkZW4gQ29udGFpbmVyIGF1 cy4KICAgIG5ldWltcG9ydEJsb2NrUmVuZGVybigpOwogICAgLy8gUGFwaWVya29yYi1GZWF0dXJl OiBGaWx0ZXItWmVpbGUgaW4gZGVyIFRvb2xiYXIgamUgbmFjaCBUb2dnbGUtU3RhdHVzCiAgICAv LyBlaW4tIG9kZXIgYXVzYmxlbmRlbiAoQ2hlcnJ5LVBpY2sgMzAwOWVhOCkuCiAgICB2YXIgcGFw aWVya29yYkFrdGl2ID0gZmVhdHVyZUlzdEFrdGl2KCdwYXBpZXJrb3JiVUknKTsKICAgIHZhciBw YXBpZXJrb3JiRmlsdGVyWmVpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFwaWVya29y Yi1maWx0ZXItemVpbGUnKTsKICAgIGlmIChwYXBpZXJrb3JiRmlsdGVyWmVpbGUpIHBhcGllcmtv cmJGaWx0ZXJaZWlsZS5jbGFzc0xpc3QudG9nZ2xlKCd2ZXJzdGVja3QnLCAhcGFwaWVya29yYkFr dGl2KTsKCiAgICB2YXIgZmlsdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FkbWluLXBl cnNvbmFsLWZpbHRlcicpOwogICAgdmFyIHplaWdlVW1nZXNldHp0ZSA9IGZpbHRlciA/IGZpbHRl ci5jaGVja2VkIDogZmFsc2U7CiAgICB2YXIgcGFwaWVya29yYkZpbHRlciA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdhZG1pbi1wYXBpZXJrb3JiLWZpbHRlcicpOwogICAgdmFyIHplaWdlUGFw aWVya29yYiA9IHBhcGllcmtvcmJBa3RpdiAmJiBwYXBpZXJrb3JiRmlsdGVyICYmIHBhcGllcmtv cmJGaWx0ZXIuY2hlY2tlZDsKCiAgICBmdW5jdGlvbiBpc3RQYXBpZXJrb3JiKHApIHsgcmV0dXJu ICEhcC5nZWxvZXNjaHRBbTsgfQogICAgZnVuY3Rpb24gcGFwaWVya29yYlJlc3RUZXh0KHApIHsK ICAgICAgICBpZiAoIXAuZ2Vsb2VzY2h0QW0pIHJldHVybiAnJzsKICAgICAgICB2YXIgYXVmYmV3 YWhydW5nID0gWi5hZG1pbi5wYXBpZXJrb3JiVGFnZUF1ZmJld2FocnVuZyAhPSBudWxsID8gWi5h ZG1pbi5wYXBpZXJrb3JiVGFnZUF1ZmJld2FocnVuZyA6IDMwOwogICAgICAgIHZhciBzZWl0ID0g bmV3IERhdGUocC5nZWxvZXNjaHRBbSk7CiAgICAgICAgaWYgKGlzTmFOKHNlaXQuZ2V0VGltZSgp KSkgcmV0dXJuICcnOwogICAgICAgIHZhciB0YWdlVmVyZ2FuZ2VuID0gTWF0aC5mbG9vcigoRGF0 ZS5ub3coKSAtIHNlaXQuZ2V0VGltZSgpKSAvIDg2NDAwMDAwKTsKICAgICAgICB2YXIgcmVzdCA9 IE1hdGgubWF4KDAsIGF1ZmJld2FocnVuZyAtIHRhZ2VWZXJnYW5nZW4pOwogICAgICAgIHJldHVy biAnIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEwcHg7Y29sb3I6dmFy KC0tdGV4dC1tdXRlZCkiPihub2NoICcgKyByZXN0ICsgJyBUYWcnICsgKHJlc3QgPT09IDEgPyAn JyA6ICdlJykgKyAnKTwvc3Bhbj4nOwogICAgfQoKICAgIHZhciBhbGxlUGVyc29uZW4gPSAoWi5w bGFudW5nLnBlcnNvbmVuIHx8IFtdKS5zbGljZSgpCiAgICAgICAgLmZpbHRlcihmdW5jdGlvbihw KSB7CiAgICAgICAgICAgIGlmIChpc3RQYXBpZXJrb3JiKHApKSByZXR1cm4gemVpZ2VQYXBpZXJr b3JiOwogICAgICAgICAgICByZXR1cm4gcC5ha3RpdiB8fCB6ZWlnZVVtZ2VzZXR6dGU7CiAgICAg ICAgfSkKICAgICAgICAuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiAoYS5wb3NpdGlvbiB8 fCA5OTkpIC0gKGIucG9zaXRpb24gfHwgOTk5KTsgfSk7CgogICAgLy8gR3J1cHBlbi1SZWloZW5m b2xnZSBhdXMgYWRtaW4uZ3J1cHBlbiDigJQgc28gZXJzY2hlaW5lbiBkaWUgVHJlbm5lcgogICAg Ly8gaW4gZGVyIEFkbWluLWRlZmluaWVydGVuIEZvbGdlIChBLCBCLCBDLCBXRCwgV0wsIFZELCAu Li4pLgogICAgdmFyIGdydXBwZW5SZWloZW5mb2xnZSA9IChaLmFkbWluLmdydXBwZW4gfHwgW10p Lm1hcChmdW5jdGlvbihnKSB7IHJldHVybiBnLm5hbWU7IH0pOwogICAgdmFyIHBlcnNvbmVuUHJv R3J1cHBlID0ge307CiAgICB2YXIgdW5iZWthbm50ZUdydXBwZSA9IFtdOwogICAgYWxsZVBlcnNv bmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZhciBnID0gcC5ncnVwcGUgfHwgJyc7 CiAgICAgICAgaWYgKGdydXBwZW5SZWloZW5mb2xnZS5pbmRleE9mKGcpID49IDApIHsKICAgICAg ICAgICAgaWYgKCFwZXJzb25lblByb0dydXBwZVtnXSkgcGVyc29uZW5Qcm9HcnVwcGVbZ10gPSBb XTsKICAgICAgICAgICAgcGVyc29uZW5Qcm9HcnVwcGVbZ10ucHVzaChwKTsKICAgICAgICB9IGVs c2UgewogICAgICAgICAgICB1bmJla2FubnRlR3J1cHBlLnB1c2gocCk7CiAgICAgICAgfQogICAg fSk7CgogICAgdmFyIGlubGluZUVkaXRBa3RpdiA9IGZlYXR1cmVJc3RBa3RpdigncGVyc29uYWxJ bmxpbmVFZGl0JykgJiYgWi5yZWNodGUgJiYgWi5yZWNodGUuaXN0U3VwZXJVc2VyOwogICAgLy8g RGF0ZW5mZWxkZXIsIGRpZSBwZXIgRWluZmFjaC1LbGljayBpbmxpbmUgYmVhcmJlaXRldCB3ZXJk ZW4gZHVlcmZlbi4KICAgIC8vIE5hbWUgbGFldWZ0IHdlaXRlciB1ZWJlciBkZW4gTW9kYWwtRWRp dCAoUGZsaWNodGZlbGQgKyBEaWZmLVRyaWdnZXIpLgogICAgLy8gUG9zaXRpb24vRGllbnN0Z3Jh ZC9GdW5rdGlvbiBoYWJlbiBpaHJlIGVpZ2VuZW4gSW5saW5lLUVkaXRvcmVuLgogICAgLy8gQmVp IGxlZXJlbiBXZXJ0ZW4gd2lyZCBlaW4gIisiLVBsYWNlaG9sZGVyIGdlemVpZ3QsIGRhbWl0IGRl ciBLbGljay0KICAgIC8vIEJlcmVpY2ggYXVjaCBvaG5lIEluaGFsdCBleGlzdGllcnQgKFVzZXIt RmVlZGJhY2sgMjAyNi0wNS0yMykuCiAgICBmdW5jdGlvbiBpbmxpbmVXcmFwKHAsIGZlbGQsIGFu emVpZ2UsIG9wdHMpIHsKICAgICAgICBpZiAoIWlubGluZUVkaXRBa3RpdikgcmV0dXJuIGFuemVp Z2UgfHwgJyc7CiAgICAgICAgdmFyIHR5cCA9IChvcHRzICYmIG9wdHMudHlwKSB8fCAndGV4dCc7 CiAgICAgICAgdmFyIGxlZXIgPSAhYW56ZWlnZSB8fCBhbnplaWdlID09PSAnJzsKICAgICAgICB2 YXIgaW5uZXIgPSBsZWVyCiAgICAgICAgICAgID8gJzxzcGFuIGNsYXNzPSJwZXJzb25hbC1pbmxp bmUtcGxhY2Vob2xkZXIiPmVpbnRyYWdlbjwvc3Bhbj4nCiAgICAgICAgICAgIDogYW56ZWlnZTsK ICAgICAgICB2YXIgY2xzID0gJ3BlcnNvbmFsLWlubGluZScgKyAobGVlciA/ICcgcGVyc29uYWwt aW5saW5lLWxlZXInIDogJycpOwogICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9IicgKyBjbHMg KyAnIiBkYXRhLWlkPSInICsgcC5pZCArICciIGRhdGEtZmVsZD0iJyArIGZlbGQgKyAnIiBkYXRh LXR5cD0iJyArIHR5cCArICciIHRpdGxlPSJLbGlja2VuIHp1bSBCZWFyYmVpdGVuIj4nICsgaW5u ZXIgKyAnPC9zcGFuPic7CiAgICB9CgogICAgZnVuY3Rpb24gcGVyc29uWmVpbGUocCkgewogICAg ICAgIHZhciBnciA9IFouZ3J1cHBlbk1hcFtwLmdydXBwZV0gfHwge307CiAgICAgICAgdmFyIHVt Z2VzZXR6dCA9ICFwLmFrdGl2OwogICAgICAgIHZhciBwb3MgPSBwLnBvc2l0aW9uICE9IG51bGwg PyBwLnBvc2l0aW9uIDogJ+KAlCc7CiAgICAgICAgdmFyIHJhbmdJbm5lciA9IFoucmVjaHRlLmlz dFN1cGVyVXNlcgogICAgICAgICAgICA/ICc8c3BhbiBjbGFzcz0icmFuZy1lZGl0IiBkYXRhLWlk PSInICsgcC5pZCArICciIHRpdGxlPSJLbGlja2VuIHp1bSBCZWFyYmVpdGVuIj4nICsgcG9zICsg Jzwvc3Bhbj4nCiAgICAgICAgICAgIDogcG9zOwoKICAgICAgICB2YXIgZGdyZCA9IHAuZGllbnN0 Z3JhZCB8fCAnJzsKICAgICAgICB2YXIgZGdyZEFuemVpZ2UgPSBkZ3JkID8gZXNjYXBlSFRNTChk Z3JkKSA6ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCk7Zm9udC1zdHlsZTpp dGFsaWMiPuKAlDwvc3Bhbj4nOwogICAgICAgIHZhciBkZ3JkSW5uZXIgPSBaLnJlY2h0ZS5pc3RT dXBlclVzZXIKICAgICAgICAgICAgPyAnPHNwYW4gY2xhc3M9ImRpZW5zdGdyYWQtZWRpdCIgZGF0 YS1pZD0iJyArIHAuaWQgKyAnIiB0aXRsZT0iS2xpY2tlbiB6dW0gQmVhcmJlaXRlbiI+JyArIGRn cmRBbnplaWdlICsgJzwvc3Bhbj4nCiAgICAgICAgICAgIDogZGdyZEFuemVpZ2U7CgogICAgICAg IHZhciBmdW5rdGlvbiA9IHAuZnVua3Rpb24gfHwgJyc7CiAgICAgICAgdmFyIGZ1bmt0aW9uQW56 ZWlnZSA9IGZ1bmt0aW9uID8gZXNjYXBlSFRNTChmdW5rdGlvbikgOiAnPHNwYW4gc3R5bGU9ImNv bG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc3R5bGU6aXRhbGljIj7igJQgb2huZSDigJQ8L3Nw YW4+JzsKICAgICAgICB2YXIgZnVua3Rpb25Jbm5lciA9IFoucmVjaHRlLmlzdFN1cGVyVXNlcgog ICAgICAgICAgICA/ICc8c3BhbiBjbGFzcz0iZnVua3Rpb24tZWRpdCIgZGF0YS1pZD0iJyArIHAu aWQgKyAnIiB0aXRsZT0iS2xpY2tlbiB6dW0gQmVhcmJlaXRlbiI+JyArIGZ1bmt0aW9uQW56ZWln ZSArICc8L3NwYW4+JwogICAgICAgICAgICA6IGZ1bmt0aW9uQW56ZWlnZTsKCiAgICAgICAgLy8g RW1haWwtQnV0dG9uLVN0aWw6CiAgICAgICAgLy8gICBrZWluZSBBZHJlc3NlICAgICAgICAgICAt PiByb3QgKEdlZmFocikKICAgICAgICAvLyAgIEFkcmVzc2UgQHBvbGl6ZWkubnJ3LmRlIC0+IGdy dWVuIChFcmZvbGcpCiAgICAgICAgLy8gICBzb25zdGlnZSBEb21haW4gICAgICAgICAtPiBncnVl biArIHJvdGVyIHJlY2h0ZXIgUmFuZAogICAgICAgIC8vICAgKFRlc3QtQWRyZXNzZSwgb3B0aXNj aCBzb2ZvcnQgZXJrZW5uYmFyKQogICAgICAgIHZhciBlbWFpbERvbWFpbk9rID0gISEocC5lbWFp bCAmJiAvQHBvbGl6ZWlcLm5yd1wuZGUkL2kudGVzdChwLmVtYWlsKSk7CiAgICAgICAgdmFyIGVt YWlsQ2xzOwogICAgICAgIGlmICghcC5lbWFpbCkgICAgICAgICAgICAgIGVtYWlsQ2xzID0gJ2J0 bi1nZWZhaHInOwogICAgICAgIGVsc2UgaWYgKGVtYWlsRG9tYWluT2spICAgIGVtYWlsQ2xzID0g J2J0bi1lcmZvbGcnOwogICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsQ2xz ID0gJ2J0bi1lcmZvbGcgYnRuLWVtYWlsLXRlc3QnOwogICAgICAgIHZhciBlbWFpbFRpdGxlOwog ICAgICAgIGlmICghcC5lbWFpbCkgICAgICAgICAgICAgIGVtYWlsVGl0bGUgPSAnTm9jaCBrZWlu ZSBFLU1haWwtQWRyZXNzZSBoaW50ZXJsZWd0IOKAlCBLbGljayB6dW0gUGZsZWdlbic7CiAgICAg ICAgZWxzZSBpZiAoZW1haWxEb21haW5PaykgICAgZW1haWxUaXRsZSA9IHAuZW1haWw7CiAgICAg ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgZW1haWxUaXRsZSA9IHAuZW1haWwgKyAnXG7i mqAgVGVzdC0vRnJlbWQtQWRyZXNzZSAobmljaHQgQHBvbGl6ZWkubnJ3LmRlKSc7CiAgICAgICAg Ly8gUGFwaWVya29yYi1MZWJlbnN6eWtsdXMgKENoZXJyeS1QaWNrIDMwMDllYTgpLiBXZW5uIGRh cyBGZWF0dXJlCiAgICAgICAgLy8gYWt0aXYgaXN0IHVuZCBgZ2Vsb2VzY2h0QW1gIGdlc2V0enQ6 IFplaWxlIHdpcmQgcm90LCBzdGF0dAogICAgICAgIC8vIFVtc2V0emVuL1JlYWt0aXZpZXJlbiBz dGVoZW4gIldpZWRlcmhlcnN0ZWxsZW4iIHVuZCAiSmV0enQgbMO2c2NoZW4iCiAgICAgICAgLy8g enVyIFZlcmZ1ZWd1bmcuIEFrdGl2ZS9VbWdlc2V0enRlIGJla29tbWVuIHp1c2FldHpsaWNoIGVp bmVuCiAgICAgICAgLy8gVW1zZXR6ZW4gKyBMb2VzY2hlbiB3dXJkZW4gMjAyNi0wNS0yMyBpbnMg QmVhcmJlaXRlbi1Nb2RhbCB2ZXJsYWdlcnQKICAgICAgICAvLyAoWmVpbGUgd2FyIHp1IHZvbGwp LiBOdXIgIldpZWRlcmhlcnN0ZWxsZW4iIHVuZCAiSmV0enQgbG9lc2NoZW4iCiAgICAgICAgLy8g YmxlaWJlbiBpbiBkZXIgWmVpbGUgZnVlciBQYXBpZXJrb3JiLUVpbnRyYWVnZSBzaWNodGJhciDi gJQgZGEgZ2lidCdzCiAgICAgICAgLy8ga2VpbmVuIE1vZGFsLVBmYWQuCiAgICAgICAgdmFyIGlt UGFwaWVya29yYiA9IHBhcGllcmtvcmJBa3RpdiAmJiBpc3RQYXBpZXJrb3JiKHApOwogICAgICAg IHZhciBha3Rpb25CdG4gPSAnJzsKICAgICAgICBpZiAoaW1QYXBpZXJrb3JiKSB7CiAgICAgICAg ICAgIGFrdGlvbkJ0biA9CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1l cmZvbGcgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0id2llZGVyaGVyc3RlbGxlbiIgZGF0YS1pZD0i JyArIHAuaWQgKyAnIiB0aXRsZT0iQXVzIFBhcGllcmtvcmIgenVyw7xja2hvbGVuIChQZXJzb24g d2lyZCB3aWVkZXIgYWt0aXYpIj5XaWVkZXJoZXJzdGVsbGVuPC9idXR0b24+JyArCiAgICAgICAg ICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2Vz Y2hlbiIgZGF0YS1ha3Rpb249ImVuZGd1ZWx0aWctbG9lc2NoZW4iIGRhdGEtaWQ9IicgKyBwLmlk ICsgJyIgdGl0bGU9IlBlcnNvbiBlbmRnw7xsdGlnIGVudGZlcm5lbiAoRWludHJhZWdlIHZlcndh aXNlbiwgTG9nYnVjaCBibGVpYnQpIj5KZXR6dCBsw7ZzY2hlbjwvYnV0dG9uPic7CiAgICAgICAg fQoKICAgICAgICB2YXIgbmFtZVplbGxlID0gJzxkaXYgY2xhc3M9InBlcnNvbmFsLW5hbWUtemVs bGUiPicgKwogICAgICAgICAgICBhdmF0YXJLcmVpc0h0bWwocCwgMjYpICsKICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJwZXJzb24tbmFtZS1saW5rIiBkYXRhLWlkPSInICsgcC5pZCArICciIHRp dGxlPSJLbGlja2VuIHp1bSBCZWFyYmVpdGVuIj4nICsgZXNjYXBlSFRNTChwLm5hbWUpICsgJzwv c3Bhbj4nICsKICAgICAgICAnPC9kaXY+JzsKICAgICAgICB2YXIgdm9ybmFtZUFuemVpZ2UgPSBl c2NhcGVIVE1MKHAudm9ybmFtZSB8fCAnJyk7CiAgICAgICAgdmFyIG9lQW56ZWlnZSAgICAgID0g ZXNjYXBlSFRNTChwLm9lIHx8ICcnKTsKICAgICAgICB2YXIgdGVsZWZvbkFuemVpZ2UgPSBlc2Nh cGVIVE1MKHAudGVsZWZvbiB8fCAnJyk7CiAgICAgICAgdmFyIG53QW56ZWlnZSAgICAgID0gZXNj YXBlSFRNTChwLm53S2VubnVuZyB8fCAnJyk7CiAgICAgICAgdmFyIGdlYkFuemVpZ2UgICAgID0g cC5nZWJ1cnRzZGF0dW0gPyBkYXR1bUZvcm1hdERFKHAuZ2VidXJ0c2RhdHVtKSA6ICcnOwogICAg ICAgIHZhciB6ZWlsZW5LbGFzc2UgPSBpbVBhcGllcmtvcmIgPyAnIGNsYXNzPSJ6ZWlsZS1wYXBp ZXJrb3JiIicgOiAodW1nZXNldHp0ID8gJyBjbGFzcz0iemVpbGUtdW1nZXNldHp0IicgOiAnJyk7 CiAgICAgICAgcmV0dXJuICc8dHIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIicgKyB6ZWlsZW5LbGFz c2UgKyAnPicgKwogICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyArIG5hbWVaZWxsZSArICc8L3N0 cm9uZz48L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKyBpbmxpbmVXcmFwKHAsICd2b3JuYW1l JywgICAgIHZvcm5hbWVBbnplaWdlKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxl PSJ0ZXh0LWFsaWduOmxlZnQ7Zm9udC1zaXplOjEycHgiPicgKyBmdW5rdGlvbklubmVyICsgJzwv dGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdDtmb250LXNpemU6 MTJweCI+JyArIGRncmRJbm5lciArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0 ZXh0LWFsaWduOmxlZnQ7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigt LXRleHQtbXV0ZWQpIiB0aXRsZT0iUm9oZSBQb3NpdGlvbnMtWmFobCAoYXVzIEV4Y2VsLUltcG9y dCknICsgKFoucmVjaHRlLmlzdFN1cGVyVXNlciA/ICcg4oCUIGtsaWNrYmFyIHp1bSBCZWFyYmVp dGVuJyA6ICcnKSArICciPicgKyByYW5nSW5uZXIgKyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0 ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0O2ZvbnQtc2l6ZToxMnB4Ij4nICsgaW5saW5lV3JhcChw LCAnb2UnLCAgICAgICBvZUFuemVpZ2UpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5 bGU9InRleHQtYWxpZ246bGVmdDtmb250LXNpemU6MTJweCI+JyArIGlubGluZVdyYXAocCwgJ3Rl bGVmb24nLCAgdGVsZWZvbkFuemVpZ2UpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5 bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO21heC13aWR0aDoxMTVw eDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dy YXAiIHRpdGxlPSInICsgZXNjYXBlQXR0cihwLm53S2VubnVuZyB8fCAnJykgKyAnIj4nICsgaW5s aW5lV3JhcChwLCAnbndLZW5udW5nJywgbndBbnplaWdlKSArICc8L3RkPicgKwogICAgICAgICAg ICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyArIF9wZXJzb25Sb3RhUGlsbGUocCkg KyAnPC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpsZWZ0Ij48YnV0 dG9uIGNsYXNzPSJidG4gJyArIGVtYWlsQ2xzICsgJyBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJl bWFpbCIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoZW1haWxU aXRsZSkgKyAnIiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj5FLU1haWw8L2J1dHRvbj48L3Rk PicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJmb250LXNpemU6MTFweDt0ZXh0LWFsaWduOmxl ZnQiPicgKyBpbmxpbmVXcmFwKHAsICdnZWJ1cnRzZGF0dW0nLCBnZWJBbnplaWdlLCB7IHR5cDog J2RhdGUnIH0pICsgJzwvdGQ+JyArCiAgICAgICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAg ICAgICAgIC8vIFNwYWx0ZSDigJ5WSTMgREdMIi4gUXVhZHJhdGlzY2hlciBCdXR0b246CiAgICAg ICAgICAgICAgICAvLyAgIGdydWVuICsg4pyTICAgPSBxdWFsaWZpemllcnQKICAgICAgICAgICAg ICAgIC8vICAgcm90ICsgd2Vpc3NlciBRdWVyYmFsa2VuIChWZXJrZWhyc3NjaGlsZCDigJ5WZXJi b3QgZGVyCiAgICAgICAgICAgICAgICAvLyAgIEVpbmZhaHJ0Ii1PcHRpaykgPSBuaWNodCBxdWFs aWZpemllcnQuCiAgICAgICAgICAgICAgICAvLyBLbGljayB0b2dnbGV0IGRhcyBGbGFnIGZ1ZXIg SkVERSBQZXJzb24gKFN1cGVyVXNlciBvbmx5KS4KICAgICAgICAgICAgICAgIHZhciBrbGlja2Jh ciA9IFoucmVjaHRlLmlzdFN1cGVyVXNlcjsKICAgICAgICAgICAgICAgIHZhciBvayA9ICEhcC5l bERnbFF1YWxpZml6aWVydDsKICAgICAgICAgICAgICAgIHZhciB0aXRlbCA9IGtsaWNrYmFyCiAg ICAgICAgICAgICAgICAgICAgPyAnS2xpY2s6IFZJMy1ER0wtUXVhbGlmaXppZXJ1bmcgdW1zY2hh bHRlbiDigJQgYWt0dWVsbCAnICsgKG9rID8gJ2FrdGl2JyA6ICdpbmFrdGl2JykKICAgICAgICAg ICAgICAgICAgICA6IChvayA/ICdWSTMtREdMIHF1YWxpZml6aWVydCcgOiAnTmljaHQgVkkzLURH TCBxdWFsaWZpemllcnQnKTsKICAgICAgICAgICAgICAgIHZhciBidG4gPSAnPHNwYW4gY2xhc3M9 InZpM2RnbC1idG4gJyArIChvayA/ICd2aTNkZ2wtYnRuLW9rJyA6ICd2aTNkZ2wtYnRuLW5vJykg KyAnIiBhcmlhLWxhYmVsPSInICsgZXNjYXBlQXR0cih0aXRlbCkgKyAnIj48L3NwYW4+JzsKICAg ICAgICAgICAgICAgIHZhciBjbHMgPSBrbGlja2JhciA/ICcgY2xhc3M9ImVsZGdsLWVkaXQiJyA6 ICcnOwogICAgICAgICAgICAgICAgdmFyIGRhdGFJZCA9IGtsaWNrYmFyID8gJyBkYXRhLWlkPSIn ICsgcC5pZCArICciJyA6ICcnOwogICAgICAgICAgICAgICAgdmFyIHN0eWxlID0ga2xpY2tiYXIg PyAndGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXInIDogJ3RleHQtYWxpZ246Y2VudGVy JzsKICAgICAgICAgICAgICAgIHJldHVybiAnPHRkJyArIGNscyArIGRhdGFJZCArICcgc3R5bGU9 IicgKyBzdHlsZSArICciIHRpdGxlPSInICsgZXNjYXBlQXR0cih0aXRlbCkgKyAnIj4nICsgYnRu ICsgJzwvdGQ+JzsKICAgICAgICAgICAgfSkoKSArCiAgICAgICAgICAgIChmdW5jdGlvbigpIHsK ICAgICAgICAgICAgICAgIC8vIFNwYWx0ZSDigJ5BbnNwcmVjaHBhcnRuZXIiOiBUb2dnbGUgZnVl ciBFaW50cmFnIGltIEluZm8tCiAgICAgICAgICAgICAgICAvLyBGZW5zdGVyICjigJ5JbmZvcm1h dGlvbiAmIEhpbGZlIikuIFNlaXQgMjAyNi0wNS0yNSBvaG5lCiAgICAgICAgICAgICAgICAvLyBG dW5rdGlvbnMtIG9kZXIgRGllbnN0Z3J1cHBlbi1HYXRpbmcg4oCUIHRoZW9yZXRpc2NoIGthbm4K ICAgICAgICAgICAgICAgIC8vIGplZGUgUGVyc29uIGFscyBBbnNwcmVjaHBhcnRuZXIgYmVuYW5u dCB3ZXJkZW4uIFZpc3VlbGwKICAgICAgICAgICAgICAgIC8vIGlkZW50aXNjaCB6dW0gVkkzLURH TC1CdXR0b246IGdydWVuZXIgSGFrZW4gKGFrdGl2KSBvZGVyCiAgICAgICAgICAgICAgICAvLyBn cmF1ZXIgTWludXMtQmFsa2VuIChpbmFrdGl2KS4KICAgICAgICAgICAgICAgIHZhciBrbGlja2Jh ckFwID0gWi5yZWNodGUuaXN0U3VwZXJVc2VyOwogICAgICAgICAgICAgICAgdmFyIGlzdEFwID0g ISFwLmlzdEFuc3ByZWNocGFydG5lcjsKICAgICAgICAgICAgICAgIHZhciB0aXRlbEFwID0ga2xp Y2tiYXJBcAogICAgICAgICAgICAgICAgICAgID8gJ0tsaWNrOiBBbnNwcmVjaHBhcnRuZXItRmxh ZyB1bXNjaGFsdGVuIOKAlCBha3R1ZWxsICcgKyAoaXN0QXAgPyAnYWt0aXYnIDogJ2luYWt0aXYn KQogICAgICAgICAgICAgICAgICAgIDogKGlzdEFwID8gJ0ltIEluZm8tRmVuc3RlciBhbHMgQW5z cHJlY2hwYXJ0bmVyIGdlbGlzdGV0JyA6ICdOaWNodCBhbHMgQW5zcHJlY2hwYXJ0bmVyIGdlbGlz dGV0Jyk7CiAgICAgICAgICAgICAgICB2YXIgYnRuQXAgPSAnPHNwYW4gY2xhc3M9InZpM2RnbC1i dG4gJyArIChpc3RBcCA/ICd2aTNkZ2wtYnRuLW9rJyA6ICd2aTNkZ2wtYnRuLW9mZicpICsgJyIg YXJpYS1sYWJlbD0iJyArIGVzY2FwZUF0dHIodGl0ZWxBcCkgKyAnIj48L3NwYW4+JzsKICAgICAg ICAgICAgICAgIHZhciBjbHNBcCA9IGtsaWNrYmFyQXAgPyAnIGNsYXNzPSJhbnNwcmVjaHBhcnRu ZXItZWRpdCInIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgaWRBcCA9IGtsaWNrYmFyQXAgPyAn IGRhdGEtaWQ9IicgKyBwLmlkICsgJyInIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgc3R5bGVB cCA9IGtsaWNrYmFyQXAgPyAndGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXInIDogJ3Rl eHQtYWxpZ246Y2VudGVyJzsKICAgICAgICAgICAgICAgIHJldHVybiAnPHRkJyArIGNsc0FwICsg aWRBcCArICcgc3R5bGU9IicgKyBzdHlsZUFwICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRp dGVsQXApICsgJyI+JyArIGJ0bkFwICsgJzwvdGQ+JzsKICAgICAgICAgICAgfSkoKSArCiAgICAg ICAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIC8vIFNwYWx0ZSDigJ5JbiBQbGFu dW5nIjogYmxlbmRldCBkaWVzZSBlaW5lIFBlcnNvbiBhdXMgZGVyCiAgICAgICAgICAgICAgICAv LyBQbGFudW5nc2Fuc2ljaHQvV29jaGVucGxhbi9QZXJzLiBQbGFuIGF1cyAoYW5hbG9nIEdydXBw ZW4tLwogICAgICAgICAgICAgICAgLy8gRnVua3Rpb25zLWluUGxhbnVuZywgYWJlciBwcm8gUGVy c29uKS4gR3J1ZW4gPSBzaWNodGJhciwKICAgICAgICAgICAgICAgIC8vIHJvdCA9IGF1c2dlYmxl bmRldC4gU3VwZXJVc2VyLW9ubHkuCiAgICAgICAgICAgICAgICB2YXIga2xpY2tiYXJJcCA9IFou cmVjaHRlLmlzdFN1cGVyVXNlciAmJiAhaW1QYXBpZXJrb3JiOwogICAgICAgICAgICAgICAgdmFy IHNpY2h0YmFyID0gcC5pblBsYW51bmcgIT09IGZhbHNlOwogICAgICAgICAgICAgICAgdmFyIHRp dGVsSXAgPSBrbGlja2JhcklwCiAgICAgICAgICAgICAgICAgICAgPyAnS2xpY2s6IFBlcnNvbiBp biBkZXIgUGxhbnVuZyAnICsgKHNpY2h0YmFyID8gJ2F1c2JsZW5kZW4nIDogJ2VpbmJsZW5kZW4n KSArICcg4oCUIGFrdHVlbGwgJyArIChzaWNodGJhciA/ICdzaWNodGJhcicgOiAnYXVzZ2VibGVu ZGV0JykKICAgICAgICAgICAgICAgICAgICA6IChzaWNodGJhciA/ICdJbiBkZXIgUGxhbnVuZ3Nh bnNpY2h0IHNpY2h0YmFyJyA6ICdJbiBkZXIgUGxhbnVuZ3NhbnNpY2h0IGF1c2dlYmxlbmRldCcp OwogICAgICAgICAgICAgICAgdmFyIGJ0bklwID0gJzxzcGFuIGNsYXNzPSJ2aTNkZ2wtYnRuICcg KyAoc2ljaHRiYXIgPyAndmkzZGdsLWJ0bi1vaycgOiAndmkzZGdsLWJ0bi1ubycpICsgJyIgYXJp YS1sYWJlbD0iJyArIGVzY2FwZUF0dHIodGl0ZWxJcCkgKyAnIj48L3NwYW4+JzsKICAgICAgICAg ICAgICAgIHZhciBjbHNJcCA9IGtsaWNrYmFySXAgPyAnIGNsYXNzPSJpbnBsYW51bmctZWRpdCIn IDogJyc7CiAgICAgICAgICAgICAgICB2YXIgaWRJcCA9IGtsaWNrYmFySXAgPyAnIGRhdGEtaWQ9 IicgKyBwLmlkICsgJyInIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgc3R5bGVJcCA9IGtsaWNr YmFySXAgPyAndGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXInIDogJ3RleHQtYWxpZ246 Y2VudGVyJzsKICAgICAgICAgICAgICAgIHJldHVybiAnPHRkJyArIGNsc0lwICsgaWRJcCArICcg c3R5bGU9IicgKyBzdHlsZUlwICsgJyIgdGl0bGU9IicgKyBlc2NhcGVBdHRyKHRpdGVsSXApICsg JyI+JyArIGJ0bklwICsgJzwvdGQ+JzsKICAgICAgICAgICAgfSkoKSArCiAgICAgICAgICAgICc8 dGQgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+JyArIChpbVBhcGllcmtvcmIKICAgICAgICAgICAg ICAgID8gJzxzcGFuIGNsYXNzPSJ0ZXh0LWZlaGxlciIgdGl0bGU9IkltIFBhcGllcmtvcmIgc2Vp dCAnICsgZXNjYXBlQXR0cihwLmdlbG9lc2NodEFtKSArICciPlBhcGllcmtvcmInICsgcGFwaWVy a29yYlJlc3RUZXh0KHApICsgJzwvc3Bhbj4nCiAgICAgICAgICAgICAgICA6ICh1bWdlc2V0enQK ICAgICAgICAgICAgICAgICAgICA/ICc8c3BhbiBjbGFzcz0idGV4dC1mZWhsZXIiIHRpdGxlPSJV bWdlc2V0enQg4oCUIG5pY2h0IGluIGRlciBQbGFudW5nIj5VbWdlc2V0enQ8L3NwYW4+JwogICAg ICAgICAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJ0ZXh0LWVyZm9sZyI+QWt0aXY8L3NwYW4+ JykpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4 O2dhcDo2cHg7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnQ7d2hpdGUtc3BhY2U6bm93cmFwIj4n ICsKICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWts ZWluIiBkYXRhLWFrdGlvbj0iYmVhcmJlaXRlbiIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIj5CZWFy YmVpdGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAoWi5yZWNodGUuaXN0U3VwZXJVc2Vy ICYmICFpbVBhcGllcmtvcmIKICAgICAgICAgICAgICAgICAgICA/ICc8YnV0dG9uIGNsYXNzPSJi dG4gYnRuLXNlayBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJwZXJzb24tdGVzdGVuIiBkYXRhLWlk PSInICsgcC5pZCArICciIHRpdGxlPSJPYmVyZmzDpGNoZSBhbHMgZGllc2UgUGVyc29uIHRlc3Rl biAobnVyIGxva2FsLCBTZXJ2ZXItUmVjaHRlIGJsZWliZW4gU1UpIj5UZXN0ZW48L2J1dHRvbj4n CiAgICAgICAgICAgICAgICAgICAgOiAnJykgKwogICAgICAgICAgICAgICAgYWt0aW9uQnRuICsK ICAgICAgICAgICAgJzwvZGl2PjwvdGQ+JyArCiAgICAgICAgJzwvdHI+JzsKICAgIH0KCiAgICBm dW5jdGlvbiB0cmVubmVyWmVpbGUoZ3JOYW1lKSB7CiAgICAgICAgdmFyIGcgPSAoWi5hZG1pbi5n cnVwcGVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHgubmFtZSA9PT0gZ3JOYW1l OyB9KSB8fCB7fTsKICAgICAgICB2YXIgYmV6ID0gZy5iZXplaWNobnVuZyB8fCBnck5hbWU7CiAg ICAgICAgcmV0dXJuICc8dHIgY2xhc3M9ImdydXBwZW4tdHJlbm5lci16ZWlsZSIgc3R5bGU9ImJh Y2tncm91bmQ6JyArIGVzY2FwZUF0dHIoKGcuaGludGVyZ3J1bmQgfHwgJyM4ODgnKSArICcyMicp ICsgJyI+JyArCiAgICAgICAgICAgICc8dGQgY29sc3Bhbj0iMTYiIHN0eWxlPSJwYWRkaW5nOjhw eCAxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXItdG9wOjJweCBzb2xpZCAnICsgZXNjYXBlQXR0 cihnLmhpbnRlcmdydW5kIHx8ICcjODg4JykgKyAnO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZh cigtLWJvcmRlci1saWdodCkiPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImdydXBwZW4t YmFkZ2UiIHN0eWxlPSJiYWNrZ3JvdW5kOicgKyBlc2NhcGVBdHRyKGcuaGludGVyZ3J1bmQgfHwg JyM2NjYnKSArICc7Y29sb3I6JyArIGVzY2FwZUF0dHIoZy5zY2hyaWZ0IHx8ICcjZmZmJykgKyAn O21hcmdpbi1yaWdodDo4cHgiPicgKyBlc2NhcGVIVE1MKGdyTmFtZSkgKyAnPC9zcGFuPicgKwog ICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtaGVhZGluZykiPicgKyBl c2NhcGVIVE1MKGJleikgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPC90ZD48L3RyPic7CiAg ICB9CgogICAgdmFyIGh0bWwgPSAnJzsKICAgIGdydXBwZW5SZWloZW5mb2xnZS5mb3JFYWNoKGZ1 bmN0aW9uKGdyTmFtZSkgewogICAgICAgIHZhciBsaXN0ZSA9IHBlcnNvbmVuUHJvR3J1cHBlW2dy TmFtZV07CiAgICAgICAgaWYgKCFsaXN0ZSB8fCAhbGlzdGUubGVuZ3RoKSByZXR1cm47CiAgICAg ICAgaHRtbCArPSB0cmVubmVyWmVpbGUoZ3JOYW1lKTsKICAgICAgICBsaXN0ZS5mb3JFYWNoKGZ1 bmN0aW9uKHApIHsgaHRtbCArPSBwZXJzb25aZWlsZShwKTsgfSk7CiAgICB9KTsKICAgIGlmICh1 bmJla2FubnRlR3J1cHBlLmxlbmd0aCkgewogICAgICAgIGh0bWwgKz0gJzx0ciBjbGFzcz0iZ3J1 cHBlbi10cmVubmVyLXplaWxlIj48dGQgY29sc3Bhbj0iMTUiIHN0eWxlPSJwYWRkaW5nOjhweCAx MnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtib3JkZXItdG9wOjJw eCBzb2xpZCB2YXIoLS1ib3JkZXItbGlnaHQpIj7igJQgb2huZSBHcnVwcGUg4oCUPC90ZD48L3Ry Pic7CiAgICAgICAgdW5iZWthbm50ZUdydXBwZS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsgaHRtbCAr PSBwZXJzb25aZWlsZShwKTsgfSk7CiAgICB9CiAgICAvLyBXZW5uIHVlYmVyaGF1cHQga2VpbmUg UGVyc29uZW4gZ2VyZW5kZXJ0IHdlcmRlbiAoZnJpc2NoZXIgU3RhbmQgLwogICAgLy8gUmVzZXQg LyBoYXJ0ZSBGaWx0ZXIpLCBFbXB0eS1TdGF0ZSB6ZWlnZW4gc3RhdHQgbGVlcmVuIDx0Ym9keT4u CiAgICBpZiAoIWh0bWwpIHsKICAgICAgICBodG1sID0gYWRtaW5FbXB0eVplaWxlKDE1LCAnXHV7 MUY0NjR9JywKICAgICAgICAgICAgJ05vY2gga2VpbmUgUGVyc29uZW4gZXJmYXNzdCcsCiAgICAg ICAgICAgICdQZXJzb25lbiB3ZXJkZW4gaW4gZGVyIFRhYmVsbGUgcHJvIERpZW5zdGdydXBwZSBn cnVwcGllcnQuIEtsaWNrZSBvYmVuIGF1ZiDigJ5OZXVlIFBlcnNvbiIsIG9kZXIgaW1wb3J0aWVy ZSBlaW5lIHZvcmhhbmRlbmUgRXhjZWwtTGlzdGUgaW0gVGFiIOKAnkV4Y2VsLUltcG9ydCIuJyk7 CiAgICB9CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGVyc29uYWwtdGJvZHknKS5pbm5l ckhUTUwgPSBodG1sOwp9CgovLyA9PT09PSBBZG1pbjogTmV1aW1wb3J0LUJsb2NrID09PT09Ci8v Ci8vIFBlcnNvbmVuLCBkaWUgZGVyIEV4Y2VsLUltcG9ydCBmcmlzY2ggYW5nZWxlZ3QgaGF0LCB0 cmFnZW4gZWluZW4KLy8gYGltcG9ydE5ldUFtYC1NYXJrZXIuIFNvbGFuZ2UgZGllc2VyIGdlc2V0 enQgaXN0LCBlcnNjaGVpbnQgZGllIFBlcnNvbgovLyBpbSBCbG9jayBvYmVuIMO8YmVyIGRlciBU YWJlbGxlIOKAlCBtaXQgSW5saW5lLVNlbGVjdHMgZnVlciBEaWVuc3RncnVwcGUKLy8gdW5kIEZ1 bmt0aW9uIChkaWUgYmVpZGVuIFBmbGljaHRmZWxkZXIsIGRpZSBkZXIgRXhjZWwtSW1wb3J0IG5p Y2h0Ci8vIGF1dG9tYXRpc2NoIGhlcmxlaXRlbiBrYW5uKS4gUGVyIEtsaWNrIGF1ZiAiRXJsZWRp Z3QiIHdpcmQgZGVyIE1hcmtlcgovLyBlbnRmZXJudCB1bmQgZGllIFBlcnNvbiB3YW5kZXJ0IGlu IGRpZSBub3JtYWxlIFRhYmVsbGUuCmV4cG9ydCBmdW5jdGlvbiBuZXVpbXBvcnRCbG9ja1JlbmRl cm4oKSB7CiAgICB2YXIgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlcnNvbmFsLW5l dWltcG9ydC1ibG9jaycpOwogICAgaWYgKCFib3gpIHJldHVybjsKICAgIHZhciBuZXVlID0gKFou cGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHApIHsKICAgICAgICByZXR1 cm4gcC5pbXBvcnROZXVBbSAmJiAhcC5nZWxvZXNjaHRBbTsKICAgIH0pLnNvcnQoZnVuY3Rpb24o YSwgYikgeyByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7 IH0pOwogICAgaWYgKCFuZXVlLmxlbmd0aCkgewogICAgICAgIGJveC5jbGFzc0xpc3QuYWRkKCd2 ZXJzdGVja3QnKTsKICAgICAgICBib3guaW5uZXJIVE1MID0gJyc7CiAgICAgICAgcmV0dXJuOwog ICAgfQogICAgYm94LmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgdmFyIGdydXBw ZW4gPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4gZy5u YW1lOyB9KTsKICAgIHZhciB6ZWlsZW4gPSBuZXVlLm1hcChmdW5jdGlvbihwKSB7CiAgICAgICAg dmFyIHBpZCA9IHAuaWQ7CiAgICAgICAgdmFyIGdycE9wdCA9ICc8b3B0aW9uIHZhbHVlPSIiJyAr ICghcC5ncnVwcGUgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+4oCUIEdydXBwZSB3w6RobGVuIOKA lDwvb3B0aW9uPicgKwogICAgICAgICAgICBncnVwcGVuLm1hcChmdW5jdGlvbihnKSB7CiAgICAg ICAgICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGcpICsgJyIn ICsgKGcgPT09IHAuZ3J1cHBlID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2NhcGVIVE1M KGcpICsgJzwvb3B0aW9uPic7CiAgICAgICAgICAgIH0pLmpvaW4oJycpOwogICAgICAgIHZhciBm dW5rT3B0ID0gJzxvcHRpb24gdmFsdWU9IiInICsgKCFwLmZ1bmt0aW9uID8gJyBzZWxlY3RlZCcg OiAnJykgKyAnPuKAlCBvaG5lIEZ1bmt0aW9uIOKAlDwvb3B0aW9uPicgKwogICAgICAgICAgICAo Z2V0RnVua3Rpb25lbigpIHx8IFtdKS5tYXAoZnVuY3Rpb24oZikgewogICAgICAgICAgICAgICAg cmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLmNvZGUpICsgJyInICsgKGYu Y29kZSA9PT0gcC5mdW5rdGlvbiA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgZXNjYXBlSFRN TChmLmNvZGUpICsgJzwvb3B0aW9uPic7CiAgICAgICAgICAgIH0pLmpvaW4oJycpOwogICAgICAg IHZhciBkZXRhaWwgPSBbXTsKICAgICAgICBpZiAocC5vZSkgICAgICBkZXRhaWwucHVzaCgnT0U6 IDxzdHJvbmc+JyArIGVzY2FwZUhUTUwocC5vZSkgKyAnPC9zdHJvbmc+Jyk7CiAgICAgICAgaWYg KHAudGVsZWZvbikgZGV0YWlsLnB1c2goJ1RlbDogJyArIGVzY2FwZUhUTUwocC50ZWxlZm9uKSk7 CiAgICAgICAgaWYgKHAucG9zaXRpb24gIT0gbnVsbCkgZGV0YWlsLnB1c2goJ1Jhbmc6ICcgKyBl c2NhcGVIVE1MKFN0cmluZyhwLnBvc2l0aW9uKSkpOwogICAgICAgIHZhciBkZXRhaWxIdG1sID0g ZGV0YWlsLmxlbmd0aCA/ICc8ZGl2IGNsYXNzPSJuZXVpbXBvcnQtZGV0YWlsIj4nICsgZGV0YWls LmpvaW4oJyAmbmJzcDvCtyZuYnNwOyAnKSArICc8L2Rpdj4nIDogJyc7CiAgICAgICAgcmV0dXJu ICc8ZGl2IGNsYXNzPSJuZXVpbXBvcnQtemVpbGUiIGRhdGEtaWQ9IicgKyBwaWQgKyAnIj4nICsK ICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im5ldWltcG9ydC1uYW1lIj4nICsKICAgICAgICAgICAg ICAgICc8c3Ryb25nPicgKyBlc2NhcGVIVE1MKHAubmFtZSB8fCAnJykgKyAnPC9zdHJvbmc+JyAr CiAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWlucHV0IG5l dWltcG9ydC12b3JuYW1lIiBkYXRhLWlkPSInICsgcGlkICsgJyIgZGF0YS1mZWxkPSJ2b3JuYW1l IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIocC52b3JuYW1lIHx8ICcnKSArICciIHBsYWNlaG9sZGVy PSJWb3JuYW1lIOKApiIgc3R5bGU9Im1hcmdpbi1sZWZ0OjhweDt3aWR0aDoxNjBweDtmb250LXNp emU6MTNweCI+JyArCiAgICAgICAgICAgICAgICBkZXRhaWxIdG1sICsKICAgICAgICAgICAgJzwv ZGl2PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ibmV1aW1wb3J0LWZlbGRlciI+JyArCiAg ICAgICAgICAgICAgICAnPHNlbGVjdCBjbGFzcz0iZm9ybS1pbnB1dCBuZXVpbXBvcnQtZmVsZCIg ZGF0YS1pZD0iJyArIHBpZCArICciIGRhdGEtZmVsZD0iZ3J1cHBlIiBzdHlsZT0id2lkdGg6MTMw cHgiIHRpdGxlPSJEaWVuc3RncnVwcGUg4oCUIFBmbGljaHRmZWxkLCBkYW1pdCBkaWUgUGVyc29u IGluIGRlciBQbGFudW5nIGVyc2NoZWludCI+JyArIGdycE9wdCArICc8L3NlbGVjdD4nICsKICAg ICAgICAgICAgICAgICc8c2VsZWN0IGNsYXNzPSJmb3JtLWlucHV0IG5ldWltcG9ydC1mZWxkIiBk YXRhLWlkPSInICsgcGlkICsgJyIgZGF0YS1mZWxkPSJmdW5rdGlvbiIgc3R5bGU9IndpZHRoOjE2 MHB4IiB0aXRsZT0iU3RhbW0tRnVua3Rpb24gKG9wdGlvbmFsLCBrYW5uIHNww6R0ZXIgZ2VzZXR6 dCB3ZXJkZW4pIj4nICsgZnVua09wdCArICc8L3NlbGVjdD4nICsKICAgICAgICAgICAgJzwvZGl2 PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ibmV1aW1wb3J0LWFrdGlvbmVuIj4nICsKICAg ICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWluIiBk YXRhLW5ldWltcG9ydC1ha3Rpb249ImJlYXJiZWl0ZW4iIGRhdGEtaWQ9IicgKyBwaWQgKyAnIiB0 aXRsZT0iVm9sbHN0w6RuZGlnZW4gQmVhcmJlaXRlbi1EaWFsb2cgw7ZmZm5lbiI+QmVhcmJlaXRl bjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tZXJm b2xnIGJ0bi1rbGVpbiIgZGF0YS1uZXVpbXBvcnQtYWt0aW9uPSJlcmxlZGlndCIgZGF0YS1pZD0i JyArIHBpZCArICciIHRpdGxlPSJBdXMgZGVtIE5ldWltcG9ydC1CbG9jayBlbnRmZXJuZW4g4oCU IFBlcnNvbiBibGVpYnQgYWt0aXYiPkVybGVkaWd0PC9idXR0b24+JyArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIiBkYXRhLW5ldWltcG9y dC1ha3Rpb249InZlcndlcmZlbiIgZGF0YS1pZD0iJyArIHBpZCArICciIHRpdGxlPSJQZXJzb24g a29tcGxldHQgbMO2c2NoZW4gKEV4Y2VsLUltcG9ydCB3YXIgZWluIEZlaGxpbXBvcnQpIj5WZXJ3 ZXJmZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4n OwogICAgfSkuam9pbignJyk7CiAgICB2YXIgYWxsZUVybGVkaWdlbkJ0biA9IG5ldWUubGVuZ3Ro ID49IDIKICAgICAgICA/ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iIGlk PSJuZXVpbXBvcnQtYWxsZS1lcmxlZGlndCIgdGl0bGU9Ik1hcmtlciBiZWkgYWxsZW4gUGVyc29u ZW4gaW0gQmxvY2sgZW50ZmVybmVuIOKAlCBTdGFtbWRhdGVuIGJsZWliZW4gZXJoYWx0ZW4iPkFs bGUgYWxzIGVybGVkaWd0IG1hcmtpZXJlbjwvYnV0dG9uPicKICAgICAgICA6ICcnOwogICAgYm94 LmlubmVySFRNTCA9CiAgICAgICAgJzxkaXYgY2xhc3M9Im5ldWltcG9ydC1rb3BmIj4nICsKICAg ICAgICAgICAgJzxkaXY+JyArCiAgICAgICAgICAgICAgICAnPGgzPk5ldSBpbXBvcnRpZXJ0IMK3 ICcgKyBuZXVlLmxlbmd0aCArICcgUGVyc29uJyArIChuZXVlLmxlbmd0aCA9PT0gMSA/ICcnIDog J2VuJykgKyAnPC9oMz4nICsKICAgICAgICAgICAgICAgICc8cD5EaWVzZSBQZXJzb25lbiB3dXJk ZW4gZ2VyYWRlIHBlciBFeGNlbC1JbXBvcnQgYW5nZWxlZ3QuIEJpdHRlIERpZW5zdGdydXBwZSAo UGZsaWNodCkgdW5kIG9wdGlvbmFsIFZvcm5hbWUvRnVua3Rpb24gZXJnw6RuemVuLCBkYW5uIGF1 ZiA8ZW0+RXJsZWRpZ3Q8L2VtPiBrbGlja2VuLjwvcD4nICsKICAgICAgICAgICAgJzwvZGl2Picg KwogICAgICAgICAgICAnPGRpdj4nICsgYWxsZUVybGVkaWdlbkJ0biArICc8L2Rpdj4nICsKICAg ICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9Im5ldWltcG9ydC1saXN0ZSI+JyAr IHplaWxlbiArICc8L2Rpdj4nOwogICAgLy8gRXZlbnQtQmluZGluZ3MKICAgIGJveC5xdWVyeVNl bGVjdG9yQWxsKCcubmV1aW1wb3J0LWZlbGQnKS5mb3JFYWNoKGZ1bmN0aW9uKHNlbCkgewogICAg ICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAg ICAgbmV1aW1wb3J0RmVsZFNwZWljaGVybihwYXJzZUludChzZWwuZ2V0QXR0cmlidXRlKCdkYXRh LWlkJyksIDEwKSwgc2VsLmdldEF0dHJpYnV0ZSgnZGF0YS1mZWxkJyksIHNlbC52YWx1ZSk7CiAg ICAgICAgfSk7CiAgICB9KTsKICAgIGJveC5xdWVyeVNlbGVjdG9yQWxsKCcubmV1aW1wb3J0LXZv cm5hbWUnKS5mb3JFYWNoKGZ1bmN0aW9uKGlucCkgewogICAgICAgIGlucC5hZGRFdmVudExpc3Rl bmVyKCdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIG5ldWltcG9ydEZlbGRTcGVpY2hl cm4ocGFyc2VJbnQoaW5wLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpLCAxMCksICd2b3JuYW1lJywg aW5wLnZhbHVlLnRyaW0oKSk7CiAgICAgICAgfSk7CiAgICAgICAgaW5wLmFkZEV2ZW50TGlzdGVu ZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0Vu dGVyJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGlucC5ibHVyKCk7IH0KICAgICAgICB9KTsKICAg IH0pOwogICAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5ldWltcG9ydC1ha3Rpb25dJyku Zm9yRWFjaChmdW5jdGlvbihidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xp Y2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIGlkID0gcGFyc2VJbnQoYnRuLmdldEF0 dHJpYnV0ZSgnZGF0YS1pZCcpLCAxMCk7CiAgICAgICAgICAgIHZhciBha3QgPSBidG4uZ2V0QXR0 cmlidXRlKCdkYXRhLW5ldWltcG9ydC1ha3Rpb24nKTsKICAgICAgICAgICAgaWYgKGFrdCA9PT0g J2VybGVkaWd0JykgICAgbmV1aW1wb3J0RXJsZWRpZ3QoaWQpOwogICAgICAgICAgICBlbHNlIGlm IChha3QgPT09ICd2ZXJ3ZXJmZW4nKSAgIG5ldWltcG9ydFZlcndlcmZlbihpZCk7CiAgICAgICAg ICAgIGVsc2UgaWYgKGFrdCA9PT0gJ2JlYXJiZWl0ZW4nKSAgcGVyc29uQmVhcmJlaXRlbkRpYWxv ZyhpZCk7CiAgICAgICAgfSk7CiAgICB9KTsKICAgIHZhciBhbGxlQnRuID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ25ldWltcG9ydC1hbGxlLWVybGVkaWd0Jyk7CiAgICBpZiAoYWxsZUJ0bikg YWxsZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgIGJl c3RhZXRpZ2VuKAogICAgICAgICAgICAnQWxsZSAnICsgbmV1ZS5sZW5ndGggKyAnIFBlcnNvbmVu IGF1cyBkZW0gTmV1aW1wb3J0LUJsb2NrIGVudGZlcm5lbj9cblxuJyArCiAgICAgICAgICAgICdE aWUgU3RhbW1kYXRlbiBibGVpYmVuIGVyaGFsdGVuLCBudXIgZGVyIE5ldWltcG9ydC1NYXJrZXIg d2lyZCB6dXLDvGNrZ2VzZXR6dC4nLAogICAgICAgICAgICBmdW5jdGlvbigpIHsgbmV1aW1wb3J0 QWxsZUVybGVkaWd0KG5ldWUubWFwKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQ7IH0pKTsgfSwK ICAgICAgICAgICAgeyB0aXRlbDogJ0FsbGUgYWxzIGVybGVkaWd0IG1hcmtpZXJlbicsIGphVGV4 dDogJ0VybGVkaWd0IG1hcmtpZXJlbicgfQogICAgICAgICk7CiAgICB9KTsKfQoKZXhwb3J0IGZ1 bmN0aW9uIG5ldWltcG9ydEZlbGRTcGVpY2hlcm4oaWQsIGZlbGQsIHdlcnQpIHsKICAgIHZhciBw ZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHApIHsgcmV0 dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSByZXR1cm47CiAgICBpZiAoU3Ry aW5nKHBlcnNvbltmZWxkXSB8fCAnJykgPT09IFN0cmluZyh3ZXJ0IHx8ICcnKSkgcmV0dXJuOwog ICAgdmFyIHVwZGF0ZSA9IHt9OyB1cGRhdGVbZmVsZF0gPSB3ZXJ0OwogICAgYXBpUHV0KCcvYXBp L3BlcnNvbmVuLycgKyBpZCwgdXBkYXRlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHBlcnNv bltmZWxkXSA9IHdlcnQ7CiAgICAgICAgcGVyc29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgIC8v IFRhYmVsbGUgKyBCbG9jayBuZXUsIGZhbGxzIEdydXBwZW4tQWVuZGVydW5nIGRpZSBTb3J0aWVy dW5nIGJlZWluZmx1c3N0CiAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAg IGlmICh0eXBlb2YgbmFtZW5SZW5kZXJuID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIG5h bWVuUmVuZGVybigpOwogICAgICAgICAgICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAg IGtvcGZSZW5kZXJuKCk7CiAgICAgICAgfQogICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2Fz dCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9CgpleHBvcnQgZnVuY3Rp b24gbmV1aW1wb3J0RXJsZWRpZ3QoaWQpIHsKICAgIC8vIE1hcmtlciBlbnRmZXJuZW46IFBVVCBt aXQgaW1wb3J0TmV1QW09bnVsbC4gU2VydmVyIHNjaHJlaWJ0IGRhcyBGZWxkCiAgICAvLyBlaW5m YWNoIHVtLCBpbiBkZXIgRGF0ZWkgc3RlaHQgZGFubiBpbXBvcnROZXVBbTogbnVsbCDigJQgZGVy IEZpbHRlcgogICAgLy8gInAuaW1wb3J0TmV1QW0iIGlzdCBmYWxzeSB1bmQgZGllIFBlcnNvbiBl cnNjaGVpbnQgbmljaHQgbWVociBpbSBCbG9jay4KICAgIGFwaVB1dCgnL2FwaS9wZXJzb25lbi8n ICsgaWQsIHsgaW1wb3J0TmV1QW06IG51bGwgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICB2 YXIgcCA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1 cm4geC5pZCA9PT0gaWQ7IH0pOwogICAgICAgIGlmIChwKSBwLmltcG9ydE5ldUFtID0gbnVsbDsK ICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAgdG9hc3QoJ1BlcnNvbiBh dXMgTmV1aW1wb3J0LUJsb2NrIGVudGZlcm50JywgJ2VyZm9sZycpOwogICAgfSkuY2F0Y2goZnVu Y3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9 CgpleHBvcnQgZnVuY3Rpb24gbmV1aW1wb3J0QWxsZUVybGVkaWd0KGlkcykgewogICAgLy8gU2Vx dWVuemllbGwgZHVyY2hnZWhlbiwgZGFtaXQgU2VydmVyLUxhc3QgYmVncmVuenQgYmxlaWJ0IHVu ZCBkZXIKICAgIC8vIGxldHp0ZSBQVVQgZGllIFJlbmRlcmluZy1Ba3R1YWxpc2llcnVuZyB0cmln Z2VybiBrYW5uLgogICAgdmFyIGkgPSAwOwogICAgZnVuY3Rpb24gbmFlY2hzdGUoKSB7CiAgICAg ICAgaWYgKGkgPj0gaWRzLmxlbmd0aCkgewogICAgICAgICAgICB0b2FzdChpZHMubGVuZ3RoICsg JyBQZXJzb24nICsgKGlkcy5sZW5ndGggPT09IDEgPyAnJyA6ICdlbicpICsgJyBhdXMgTmV1aW1w b3J0LUJsb2NrIGVudGZlcm50JywgJ2VyZm9sZycpOwogICAgICAgICAgICBwZXJzb25hbFRhYmVs bGVSZW5kZXJuKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGlk ID0gaWRzW2krK107CiAgICAgICAgYXBpUHV0KCcvYXBpL3BlcnNvbmVuLycgKyBpZCwgeyBpbXBv cnROZXVBbTogbnVsbCB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcCA9ICha LnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9 PT0gaWQ7IH0pOwogICAgICAgICAgICBpZiAocCkgcC5pbXBvcnROZXVBbSA9IG51bGw7CiAgICAg ICAgICAgIG5hZWNoc3RlKCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAg ICAgICB0b2FzdCgnRmVobGVyIGJlaSBJRCAnICsgaWQgKyAnOiAnICsgZS5tZXNzYWdlLCAnZmVo bGVyJyk7CiAgICAgICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICB9KTsK ICAgIH0KICAgIG5hZWNoc3RlKCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBuZXVpbXBvcnRWZXJ3ZXJm ZW4oaWQpIHsKICAgIHZhciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5k KGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSBy ZXR1cm47CiAgICBiZXN0YWV0aWdlbigKICAgICAgICAnUGVyc29uICInICsgKHBlcnNvbi5uYW1l IHx8ICgnSUQgJyArIGlkKSkgKyAnIiBlbmRnw7xsdGlnIGzDtnNjaGVuP1xuXG4nICsKICAgICAg ICAnVmVyd2VuZGUgZGFzIG51ciwgd2VubiBkZXIgRXhjZWwtSW1wb3J0IGRpZXNlIFBlcnNvbiBm w6Rsc2NobGljaCBhbmdlbGVndCBoYXQuICcgKwogICAgICAgICdEaWUgU3RhbW1kYXRlbiBnZWhl biB2ZXJsb3Jlbi4nLAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmZXRjaCgnL2Fw aS9wZXJzb25lbi8nICsgaWQgKyAnP2VuZGd1ZWx0aWc9MScsIHsgbWV0aG9kOiAnREVMRVRFJyB9 KS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIGlmICghci5vaykgcmV0dXJuIHIu anNvbigpLnRoZW4oZnVuY3Rpb24oYikgeyB0aHJvdyBuZXcgRXJyb3IoYi5mZWhsZXIgfHwgKCdI VFRQICcgKyByLnN0YXR1cykpOyB9KTsKICAgICAgICAgICAgICAgIFoucGxhbnVuZy5wZXJzb25l biA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVy biB4LmlkICE9PSBpZDsgfSk7CiAgICAgICAgICAgICAgICBwZXJzb25lbk5ldUF1ZmJhdWVuKCk7 CiAgICAgICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAgICAgICAg ICBpZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAg ICAgICAgIG5hbWVuUmVuZGVybigpOwogICAgICAgICAgICAgICAgICAgIGRhdGVuR3JpZFJlbmRl cm4oKTsKICAgICAgICAgICAgICAgICAgICBrb3BmUmVuZGVybigpOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgdG9hc3QoJ1BlcnNvbiB2ZXJ3b3JmZW4nLCAnZXJmb2xnJyk7CiAg ICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVz c2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICB9LAogICAgICAgIHsgdGl0ZWw6ICdQZXJzb24g dmVyd2VyZmVuJywgamFUZXh0OiAnRW5kZ8O8bHRpZyBsw7ZzY2hlbicsIGphRGFuZ2VyOiB0cnVl IH0KICAgICk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBwZXJzb25TdGF0dXNTZXR6ZW4oaWQsIGFrdGl2 KSB7CiAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IGFrdGl2OiBha3RpdiB9KS50 aGVuKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBwID0gWi5wbGFudW5nLnBlcnNvbmVuLmZpbmQo ZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9PT0gaWQ7IH0pOwogICAgICAgIGlmIChwKSBwLmFr dGl2ID0gYWt0aXY7CiAgICAgICAgcGVyc29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICBpZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0g J2Z1bmN0aW9uJykgewogICAgICAgICAgICBuYW1lblJlbmRlcm4oKTsKICAgICAgICAgICAgZGF0 ZW5HcmlkUmVuZGVybigpOwogICAgICAgICAgICBrb3BmUmVuZGVybigpOwogICAgICAgIH0KICAg ICAgICB0b2FzdChha3RpdiA/ICdQZXJzb24gcmVha3RpdmllcnQnIDogJ1BlcnNvbiB1bWdlc2V0 enQnLCAnZXJmb2xnJyk7CiAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7IHRvYXN0KCdGZWhsZXI6 ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBwZXJzb25C ZWFyYmVpdGVuRGlhbG9nKGlkKSB7CiAgICB2YXIgcGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25l biB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBp ZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGdydXBwZW4gPSAoWi5hZG1pbi5ncnVwcGVuIHx8 IFtdKS5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4gZy5uYW1lOyB9KTsKCiAgICAvLyBBa3R1ZWxs ZSBSYW5nLVBvc2l0aW9uIChQbGF0eiBpbiBkZXIgYWt0aXYgc29ydGllcnRlbiBMaXN0ZSkg4oCU IHJlYWQtb25seSwKICAgIC8vIHdpcmQgdmlhIFBmZWlsZSDilrIv4pa8IGluIGRlciBQZXJzb25h bC1UYWJlbGxlIGdlYWVuZGVydCwgbmljaHQgaGllci4KICAgIC8vIFp1c2FldHpsaWNoIHplaWdl biB3aXIgZGllIHJvaGUgcG9zaXRpb24gKEV4Y2VsLVJhbmd6YWhsKSwgZGFtaXQgZGVyCiAgICAv LyBVc2VyIGVya2VubnQsIG9iIGRpZSBSYW5nb3JkbnVuZyBhdXMgZWluZW0gSW1wb3J0IHVlYmVy bm9tbWVuIHd1cmRlLgogICAgdmFyIGFrdGl2ZSA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p CiAgICAgICAgLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiB4LmFrdGl2OyB9KQogICAgICAg IC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChhLnBvc2l0aW9uIHx8IDk5OSkgLSAoYi5w b3NpdGlvbiB8fCA5OTkpOyB9KTsKICAgIHZhciByYW5nSWR4ID0gYWt0aXZlLmZpbmRJbmRleChm dW5jdGlvbih4KSB7IHJldHVybiB4LmlkID09PSBpZDsgfSk7CiAgICB2YXIgcmFuZ1RleHQgPSAn 4oCUJzsKICAgIGlmIChwZXJzb24uYWt0aXYgJiYgcmFuZ0lkeCA+PSAwKSB7CiAgICAgICAgcmFu Z1RleHQgPSAnUmFuZyAnICsgKHJhbmdJZHggKyAxKSArICcgdm9uICcgKyBha3RpdmUubGVuZ3Ro OwogICAgICAgIGlmIChwZXJzb24ucG9zaXRpb24gIT0gbnVsbCkgcmFuZ1RleHQgKz0gJyDCtyBQ b3NpdGlvbiAnICsgcGVyc29uLnBvc2l0aW9uOwogICAgfQoKICAgIHZhciBrb2VycGVyID0gYXZh dGFyQmxvY2tIdG1sKHBlcnNvbikgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7 Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjAgMTZweCI+JyArCiAgICAgICAgJzxk aXYgY2xhc3M9ImZvcm0tZ3J1cHBlIGZvcm0tcGZsaWNodCI+PGxhYmVsPk5hbWU8L2xhYmVsPjxp bnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGxnLW5hbWUiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0i d2lkdGg6MTAwJSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHBlcnNvbi5uYW1lKSArICciPjwvZGl2 PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlZvcm5hbWU8L2xh YmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGxnLXZvcm5hbWUiIGNsYXNzPSJmb3JtLWlucHV0 IiBzdHlsZT0id2lkdGg6MTAwJSIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHBlcnNvbi52b3JuYW1l IHx8ICcnKSArICciPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+ PGxhYmVsPkRpZW5zdGdyYWQ8L2xhYmVsPjxzZWxlY3QgaWQ9ImRsZy1kaWVuc3RncmFkIiBjbGFz cz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPicgKwogICAgICAgICc8b3B0aW9uIHZh bHVlPSIiJyArICghcGVyc29uLmRpZW5zdGdyYWQgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+4oCU IG9obmUg4oCUPC9vcHRpb24+JyArCiAgICAgICAgZ2V0RGllbnN0Z3JhZGUoKS5tYXAoZnVuY3Rp b24oZykgewogICAgICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRy KGcpICsgJyInICsgKGcgPT09IHBlcnNvbi5kaWVuc3RncmFkID8gJyBzZWxlY3RlZCcgOiAnJykg KyAnPicgKyBlc2NhcGVIVE1MKGcpICsgJzwvb3B0aW9uPic7CiAgICAgICAgfSkuam9pbignJykg KwogICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPjxsYWJlbD5EaWVuc3RncnVwcGU8L2xhYmVsPjxzZWxlY3QgaWQ9ImRsZy1ncnVwcGUi IGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSI+JyArCiAgICAgICAgZ3J1cHBl bi5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4gJzxvcHRpb24nICsgKGcgPT09IHBlcnNvbi5ncnVw cGUgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIGVzY2FwZUhUTUwoZykgKyAnPC9vcHRpb24+ JzsgfSkuam9pbignJykgKwogICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRp diBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5GdW5rdGlvbjwvbGFiZWw+PHNlbGVjdCBpZD0i ZGxnLWZ1bmt0aW9uIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHRpdGxl PSJTdGFtbS1GdW5rdGlvbjogYmVzdGltbXQgZGllIFZlcmFudHdvcnR1bmdzLVJlaWhlbmZvbGdl IGluIGRlciBTY2hpY2h0Ij4nICsKICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIicgKyAoIXBlcnNv bi5mdW5rdGlvbiA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz7igJQgb2huZSBGdW5rdGlvbiDigJQ8 L29wdGlvbj4nICsKICAgICAgICBnZXRGdW5rdGlvbmVuKCkubWFwKGZ1bmN0aW9uKGYpIHsKICAg ICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLmNvZGUpICsg JyInICsgKGYuY29kZSA9PT0gcGVyc29uLmZ1bmt0aW9uID8gJyBzZWxlY3RlZCcgOiAnJykgKyAn PicgKyBlc2NhcGVIVE1MKGYuY29kZSkgKyAnPC9vcHRpb24+JzsKICAgICAgICB9KS5qb2luKCcn KSArCiAgICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3Jt LWdydXBwZSIgaWQ9ImRsZy1lbGRnbC1ncnVwcGUiPicgKwogICAgICAgICAgICAnPGxhYmVsPlZJ MyBER0w8L2xhYmVsPicgKwogICAgICAgICAgICBlbGRnbFRvZ2dsZUh0bWwocGVyc29uLmVsRGds UXVhbGlmaXppZXJ0KSArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJm b3JtLWdydXBwZSI+PGxhYmVsPk9FIChTdGFuZG9ydCk8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0 IiBpZD0iZGxnLW9lIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVl PSInICsgZXNjYXBlQXR0cihwZXJzb24ub2UgfHwgJycpICsgJyIgcGxhY2Vob2xkZXI9InouQi4g S0EsIEhBLCBCTyI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48 bGFiZWw+VGVsZWZvbjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJkbGctdGVsZWZvbiIg Y2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiB2YWx1ZT0iJyArIGVzY2FwZUF0 dHIocGVyc29uLnRlbGVmb24gfHwgJycpICsgJyIgcGxhY2Vob2xkZXI9InouQi4gNDUyMCI+PC9k aXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+TlctS2VubnVu ZzwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJkbGctbndrZW5udW5nIiBjbGFzcz0iZm9y bS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHZhbHVlPSInICsgZXNjYXBlQXR0cihwZXJzb24u bndLZW5udW5nIHx8ICcnKSArICciIHBsYWNlaG9sZGVyPSJET01BSU5cXHVzZXIiPjwvZGl2Picg KwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPkUtTWFpbDwvbGFiZWw+ PGlucHV0IHR5cGU9ImVtYWlsIiBpZD0iZGxnLWVtYWlsIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5 bGU9IndpZHRoOjEwMCUiIHZhbHVlPSInICsgZXNjYXBlQXR0cihwZXJzb24uZW1haWwgfHwgJycp ICsgJyIgcGxhY2Vob2xkZXI9IkJlbmFjaHJpY2h0aWd1bmcgYmVpIMOEbmRlcnVuZ2VuIj48L2Rp dj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5HZWJ1cnRzZGF0 dW08L2xhYmVsPjxpbnB1dCB0eXBlPSJkYXRlIiBpZD0iZGxnLWdlYnVydHNkYXR1bSIgY2xhc3M9 ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIocGVy c29uLmdlYnVydHNkYXR1bSB8fCAnJykgKyAnIj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFz cz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5SYW5nZm9sZ2U8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0 IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS1i Zy1tdXRlZCk7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiIHZhbHVlPSInICsgZXNjYXBlQXR0cihy YW5nVGV4dCkgKyAnIiByZWFkb25seSB0aXRsZT0iV2lyZCB1ZWJlciBkaWUgUGZlaWxlIOKWsi/i lrwgaW4gZGVyIFBlcnNvbmFsLVRhYmVsbGUgZ2VhZW5kZXJ0Ij48L2Rpdj4nICsKICAgICAgICAv LyBTY2hpY2h0cm90YXRpb24gYXVzIFN0YW5kb3J0ICsgRGllbnN0Z3J1cHBlIGFiZ2VsZWl0ZXQg KFBoYXNlIDMsCiAgICAgICAgLy8gcmVhZC1vbmx5KS4gUGZsZWdlIGVyZm9sZ3QgaW5kaXJla3Q6 IFN0YW5kb3J0LVNjaGljaHRmb2xnZSBpbQogICAgICAgIC8vIEFkbWluLVRhYiAiU3RhbmRvcnRl IiArIERpZW5zdGdydXBwZSBvYmVuIGltIHNlbGJlbiBNb2RhbC4KICAgICAgICAoZnVuY3Rpb24o KSB7CiAgICAgICAgICAgIHZhciBoZXV0ZSA9IGRhdHVtU3RyKG5ldyBEYXRlKCkpOwogICAgICAg ICAgICB2YXIgc2NoaWNodCA9IHBlcnNvblNjaGljaHRBbShwZXJzb24sIGhldXRlKTsKICAgICAg ICAgICAgdmFyIHcgPSBfcGVyc29uTmFlY2hzdGVyV2VjaHNlbChwZXJzb24sIGhldXRlKTsKICAg ICAgICAgICAgaWYgKCFzY2hpY2h0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJzxkaXYgY2xh c3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+U2NoaWNodHJvdGF0aW9uPC9sYWJlbD4nICsKICAgICAg ICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHls ZT0id2lkdGg6MTAwJTtiYWNrZ3JvdW5kOnZhcigtLWJnLW11dGVkKTtjb2xvcjp2YXIoLS10ZXh0 LW11dGVkKSIgcmVhZG9ubHkgdmFsdWU9IuKAlCBuaWNodCB6dW9yZGVuYmFyIChTdGFuZG9ydC9H cnVwcGUgZmVobHQgb2RlciBQb29sKSIgdGl0bGU9IlBlcnNvbiBoYXQga2VpbmUgU3RhbmRvcnQt Um90YXRpb24uIFouQi4gV0wvVkQvUG9vbC1NaXRhcmJlaXRlci4iPjwvZGl2Pic7CiAgICAgICAg ICAgIH0KICAgICAgICAgICAgdmFyIGFrdHVlbGxMYWJlbCA9IHsgRjogJ0Zyw7xoc2NoaWNodCcs IFM6ICdTcMOkdHNjaGljaHQnLCBOOiAnTmFjaHRzY2hpY2h0JyB9W3NjaGljaHRdOwogICAgICAg ICAgICB2YXIgaW5mbyA9IGFrdHVlbGxMYWJlbDsKICAgICAgICAgICAgaWYgKHcpIHsKICAgICAg ICAgICAgICAgIHZhciBuYWNoTGFiZWwgPSB7IEY6ICdGcsO8aCcsIFM6ICdTcMOkdCcsIE46ICdO YWNodCcgfVt3Lm5hY2hdOwogICAgICAgICAgICAgICAgaW5mbyArPSAnIMK3IFdlY2hzZWwgJyAr IGRhdHVtRm9ybWF0REUody5kYXR1bSkgKyAnIOKGkiAnICsgbmFjaExhYmVsOwogICAgICAgICAg ICB9CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5T Y2hpY2h0cm90YXRpb24gKGF1cyBTdGFuZG9ydCArIEdydXBwZSk8L2xhYmVsPicgKwogICAgICAg ICAgICAgICAgJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9Indp ZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS1iZy1tdXRlZCk7Y29sb3I6dmFyKC0tdGV4dC1tdXRl ZCkiIHJlYWRvbmx5IHZhbHVlPSInICsgZXNjYXBlQXR0cihpbmZvKSArICciIHRpdGxlPSJIZXV0 aWdlciBTdGFuZCBsYXV0IFN0YW5kb3J0LVNjaGljaHRmb2xnZSB1bmQgRGllbnN0Z3J1cHBlLiBB ZW5kZXJ1bmdlbiBlcmZvbGdlbiB1ZWJlciBkaWUgU3RhbmRvcnQtU2NoaWNodGZvbGdlIGltIFRh YiBTdGFuZG9ydGUgKyBEaWVuc3RncnVwcGVuIG9iZW4uIj48L2Rpdj4nOwogICAgICAgIH0pKCkg KwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlN0YXR1czwvbGFiZWw+ PHNlbGVjdCBpZD0iZGxnLWFrdGl2IiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEw MCUiPicgKwogICAgICAgICc8b3B0aW9uIHZhbHVlPSJ0cnVlIicgKyAocGVyc29uLmFrdGl2ID8g JyBzZWxlY3RlZCcgOiAnJykgKyAnPkFrdGl2IChpbiBkZXIgUGxhbnVuZyk8L29wdGlvbj4nICsK ICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZmFsc2UiJyArICghcGVyc29uLmFrdGl2ID8gJyBzZWxl Y3RlZCcgOiAnJykgKyAnPlVtZ2VzZXR6dCAobmljaHQgaW4gZGVyIFBsYW51bmcpPC9vcHRpb24+ JyArCiAgICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgICAgIC8vIFByby1QZXJzb24gYXVz IGRlciBQbGFudW5nIGF1c2JsZW5kZW4gKFN1cGVyVXNlci1vbmx5KSDigJQgUGVuZGFudCB6dXIK ICAgICAgICAvLyBUb2dnbGUtU3BhbHRlIGluIGRlciBQZXJzb25hbC1UYWJlbGxlLgogICAgICAg IChaLnJlY2h0ZS5pc3RTdXBlclVzZXIKICAgICAgICAgICAgPyAnPGRpdiBjbGFzcz0iZm9ybS1n cnVwcGUiPjxsYWJlbD5QbGFudW5nc2Fuc2ljaHQ8L2xhYmVsPicgKwogICAgICAgICAgICAgICc8 bGFiZWwgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmb250 LXNpemU6MTNweDtjdXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAgICAgICAgJzxpbnB1dCB0eXBl PSJjaGVja2JveCIgaWQ9ImRsZy1pbnBsYW51bmciJyArIChwZXJzb24uaW5QbGFudW5nID09PSBm YWxzZSA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPiAnICsKICAgICAgICAgICAgICAnSW4gUGxhbnVu ZyAvIFdvY2hlbnBsYW4gLyBQZXJzLiBQbGFuIGF1c2JsZW5kZW48L2xhYmVsPicgKwogICAgICAg ICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MTFweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVk KTttYXJnaW4tdG9wOjJweCI+UGVyc29uIGJsZWlidCBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5n IHBmbGVnYmFyLCBlcnNjaGVpbnQgYWJlciBuaWNodCBpbiBkZW4gUGxhbnVuZ3NhbnNpY2h0ZW4u PC9kaXY+PC9kaXY+JwogICAgICAgICAgICA6ICcnKSArCiAgICAgICAgJzwvZGl2Pic7CgogICAg Ly8gWmVsbC1FZGl0LVJlY2h0ZS1TZWt0aW9uIOKAlCBudXIgZnVlciBTdXBlclVzZXIgc2ljaHRi YXIgKGFuZGVyZSBzb2xsZW4KICAgIC8vIGtlaW5lIFp1Z3JpZmZzcmVjaHRlIHZlcmFlbmRlcm4g a29lbm5lbiwgYXVjaCBuaWNodCBpaHJlIGVpZ2VuZW4pLgogICAgaWYgKFoucmVjaHRlLmlzdFN1 cGVyVXNlcikgewogICAgICAgIHZhciBlciA9IHBlcnNvbi5lZGl0UmVjaHRlIHx8IHt9OwogICAg ICAgIC8vIFNvcnRpZXJ1bmcgYWxwaGFiZXRpc2NoIG5hY2ggTmFjaG5hbWUsIFRpZWJyZWFrZXIg Vm9ybmFtZSAoVXNlci1XdW5zY2ggQy4yOgogICAgICAgIC8vIE1pdGJlYXJiZWl0ZXIgc29sbGVu IGltbWVyIGFscGhhYmV0aXNjaCBlcnNjaGVpbmVuLCB1bmFiaGFlbmdpZyB2b24gRXhjZWwtUG9z aXRpb24pLgogICAgICAgIHZhciBwZXJzb25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LnNsaWNlKCkKICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiB4LmFrdGl2 ICYmIHguaWQgIT09IHBlcnNvbi5pZDsgfSkKICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwg YikgewogICAgICAgICAgICAgICAgdmFyIGMgPSAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJl KGIubmFtZSB8fCAnJywgJ2RlJyk7CiAgICAgICAgICAgICAgICBpZiAoYyAhPT0gMCkgcmV0dXJu IGM7CiAgICAgICAgICAgICAgICByZXR1cm4gKGEudm9ybmFtZSB8fCAnJykubG9jYWxlQ29tcGFy ZShiLnZvcm5hbWUgfHwgJycsICdkZScpOwogICAgICAgICAgICB9KTsKICAgICAgICB2YXIgc3Rh bmRvcnRlID0gKFouYWRtaW4uc3RhbmRvcnRlIHx8IFtdKS5tYXAoZnVuY3Rpb24ocykgeyByZXR1 cm4gcy5rdWVyemVsIHx8IHMubmFtZTsgfSkuZmlsdGVyKEJvb2xlYW4pOwogICAgICAgIGZ1bmN0 aW9uIGVyQ2hrKGlkLCBsYWJlbCwgY2hlY2tlZCkgewogICAgICAgICAgICByZXR1cm4gJzxsYWJl bCBzdHlsZT0iZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtt YXJnaW46MnB4IDEycHggMnB4IDA7Y3Vyc29yOnBvaW50ZXIiPjxpbnB1dCB0eXBlPSJjaGVja2Jv eCIgY2xhc3M9ImVkaXQtcmVjaHQtY2hrIiBkYXRhLXdlcnQ9IicgKyBlc2NhcGVBdHRyKGlkKSAr ICciJyArIChjaGVja2VkID8gJyBjaGVja2VkJyA6ICcnKSArICc+PHNwYW4+JyArIGVzY2FwZUhU TUwobGFiZWwpICsgJzwvc3Bhbj48L2xhYmVsPic7CiAgICAgICAgfQogICAgICAgIC8vIE1pa3Jv dGVhbS1Lb2xsZWdlbiBkZXIgYmVhcmJlaXRldGVuIFBlcnNvbiAoVW5pb24gdWViZXIgYWxsZSBU ZWFtcywKICAgICAgICAvLyBpbiBkZW5lbiBzaWUgTWl0Z2xpZWQgaXN0OyBvaG5lIHNpZSBzZWxi c3QpLiBXaXJkIGdlbnV0enQgZnVlciBlaW5lCiAgICAgICAgLy8gZWlnZW5lIFNla3Rpb24gIk1l aW4gTWlrcm90ZWFtIiBtaXQgVm9yaGFrZW4gYmVpbSBFcnN0LUtvbmZpZ3VyaWVyZW4uCiAgICAg ICAgdmFyIG1pa3JvSWRzID0gW107CiAgICAgICAgKFouYWRtaW4ubWlrcm90ZWFtcyB8fCBbXSku Zm9yRWFjaChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIGlmICghdCB8fCAhdC5wZXJzb25JZHMg fHwgdC5wZXJzb25JZHMuaW5kZXhPZihwZXJzb24uaWQpIDwgMCkgcmV0dXJuOwogICAgICAgICAg ICB0LnBlcnNvbklkcy5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgdmFy IG4gPSBOdW1iZXIocGlkKTsKICAgICAgICAgICAgICAgIGlmIChuICE9PSBOdW1iZXIocGVyc29u LmlkKSAmJiBtaWtyb0lkcy5pbmRleE9mKG4pIDwgMCkgbWlrcm9JZHMucHVzaChuKTsKICAgICAg ICAgICAgfSk7CiAgICAgICAgfSk7CiAgICAgICAgLy8gTWlrcm90ZWFtIHdpcmQgbnVyIGJlaW0g ZXJzdGVuIE9lZmZuZW4gZWluZXMgbm9jaCBuaWUga29uZmlndXJpZXJ0ZW4KICAgICAgICAvLyBF aW50cmFncyB2b3JnZWhha3Qg4oCUIHNvbnN0IHJlc3Bla3RpZXJlbiB3aXIgZGllIGV4cGxpeml0 ZSBTVS1XYWhsLgogICAgICAgIHZhciBtaWtyb1ByZXNlbGVjdCA9ICFwZXJzb24uZWRpdFJlY2h0 ZTsKICAgICAgICAvLyBQZXJzb25lbiB3ZXJkZW4gYWxzIEJsb2NrLUxhYmVscyBnZXJlbmRlcnQs IGRhbWl0IGRhcyBFbHRlcm4tQ29udGFpbmVyCiAgICAgICAgLy8gcGVyIENTUyBjb2x1bW4tY291 bnQgZGllIExpc3RlIGFscGhhYmV0aXNjaCBpbiBTcGFsdGVuIGZsb3d0LgogICAgICAgIGZ1bmN0 aW9uIGVyQ2hrUGVyc29uKHApIHsKICAgICAgICAgICAgdmFyIHBpZCA9IE51bWJlcihwLmlkKTsK ICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAoZXIucGVyc29uZW5JZHMgfHwgW10pLmluZGV4T2Yo cGlkKSA+PSAwOwogICAgICAgICAgICBpZiAobWlrcm9QcmVzZWxlY3QgJiYgbWlrcm9JZHMuaW5k ZXhPZihwaWQpID49IDApIGNoZWNrZWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgbmFtZSA9ICgo cC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsgcC5uYW1lKTsKICAgICAgICAgICAg cmV0dXJuICc8bGFiZWwgY2xhc3M9ImVyLXBlcnNvbmVuLXplaWxlIj4nICsKICAgICAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJlZGl0LXJlY2h0LWNoayIgZGF0YS13 ZXJ0PSJQXycgKyBwLmlkICsgJyInICsgKGNoZWNrZWQgPyAnIGNoZWNrZWQnIDogJycpICsgJz4n ICsKICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iZXItcGVyc29uZW4tbmFtZSI+JyArIGVz Y2FwZUhUTUwobmFtZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz PSJlci1wZXJzb25lbi1ncnVwcGUiPicgKyBlc2NhcGVIVE1MKHAuZ3J1cHBlIHx8ICcnKSArICc8 L3NwYW4+JyArCiAgICAgICAgICAgICc8L2xhYmVsPic7CiAgICAgICAgfQogICAgICAgIC8vIE1p a3JvdGVhbS1NaXRnbGllZGVyIHdlcmRlbiBhdXMgZGVuIG5hY2hmb2xnZW5kZW4gU2VrdGlvbmVu IGhlcmF1cy0KICAgICAgICAvLyBnZWZpbHRlcnQsIGRhbWl0IHNpZSBuaWNodCBkb3BwZWx0IGVy c2NoZWluZW4uCiAgICAgICAgdmFyIG1pa3JvUGVyc29uZW4gPSBwZXJzb25lbi5maWx0ZXIoZnVu Y3Rpb24ocCkgeyByZXR1cm4gbWlrcm9JZHMuaW5kZXhPZihOdW1iZXIocC5pZCkpID49IDA7IH0p OwogICAgICAgIHZhciByZXN0UGVyc29uZW4gID0gcGVyc29uZW4uZmlsdGVyKGZ1bmN0aW9uKHAp IHsgcmV0dXJuIG1pa3JvSWRzLmluZGV4T2YoTnVtYmVyKHAuaWQpKSA8IDA7IH0pOwogICAgICAg IHZhciBtaWtyb0ZpZWxkc2V0ID0gJyc7CiAgICAgICAgaWYgKG1pa3JvUGVyc29uZW4ubGVuZ3Ro KSB7CiAgICAgICAgICAgIG1pa3JvRmllbGRzZXQgPQogICAgICAgICAgICAgICAgJzxmaWVsZHNl dCBjbGFzcz0ia29sbGVnZW4tbWlrcm8iPicgKwogICAgICAgICAgICAgICAgICAgICc8bGVnZW5k Pk1laW4gTWlrcm90ZWFtICcgKwogICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1 dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgZGF0YS1ha3Rpb249ImtvbGxlZ2Vu LW1pa3JvLWFsbGUiIHN0eWxlPSJtYXJnaW4tbGVmdDo4cHgiPkFsbGUgbWFya2llcmVuPC9idXR0 b24+PC9sZWdlbmQ+JyArCiAgICAgICAgICAgICAgICAgICAgbWlrcm9QZXJzb25lbi5tYXAoZXJD aGtQZXJzb24pLmpvaW4oJycpICsKICAgICAgICAgICAgICAgICc8L2ZpZWxkc2V0Pic7CiAgICAg ICAgfQogICAgICAgIC8vIENoZXJyeS1QaWNrIDg5ZWIzYzcgKGhpbnRlciBUb2dnbGUgYGZlYXR1 cmVzLmtvbGxlZ2VuSGVydm9yaGViZW5gKToKICAgICAgICAvLyBEaXJla3RlIEtvbGxlZ2VuIChn bGVpY2hlciBTdGFuZG9ydCArIGdsZWljaGUgRGllbnN0Z3J1cHBlIHdpZSBkaWUKICAgICAgICAv LyBiZWFyYmVpdGV0ZSBQZXJzb24pIHdlcmRlbiBpbiBlaW5lciBlaWdlbmVuIFNla3Rpb24gbWl0 IEhlcnZvcmhlYnVuZwogICAgICAgIC8vIHVuZCAiQWxsZSBtYXJraWVyZW4iLUJ1dHRvbiBnZXJl bmRlcnQ7IGFsbGUgYW5kZXJlbiBQZXJzb25lbiBmb2xnZW4KICAgICAgICAvLyBkYXJ1bnRlciBt aXQgZWlnZW5lbSBCdXR0b24uCiAgICAgICAgdmFyIHBlcnNDYnM7CiAgICAgICAgaWYgKGZlYXR1 cmVJc3RBa3Rpdigna29sbGVnZW5IZXJ2b3JoZWJlbicpKSB7CiAgICAgICAgICAgIHZhciBtZWlu ZU9lICAgICA9IHBlcnNvbi5vZSB8fCAnJzsKICAgICAgICAgICAgdmFyIG1laW5lR3J1cHBlID0g cGVyc29uLmdydXBwZSB8fCAnJzsKICAgICAgICAgICAgdmFyIGRpcmVrdGUgPSByZXN0UGVyc29u ZW4uZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIChwLm9lIHx8ICcnKSA9PT0gbWVpbmVPZSAm JiAocC5ncnVwcGUgfHwgJycpID09PSBtZWluZUdydXBwZTsgfSk7CiAgICAgICAgICAgIHZhciBy ZXN0ICAgID0gcmVzdFBlcnNvbmVuLmZpbHRlcihmdW5jdGlvbihwKSB7IHJldHVybiAhKChwLm9l IHx8ICcnKSA9PT0gbWVpbmVPZSAmJiAocC5ncnVwcGUgfHwgJycpID09PSBtZWluZUdydXBwZSk7 IH0pOwogICAgICAgICAgICB2YXIga29udGV4dExhYmVsID0gJ09FOiAnICsgZXNjYXBlSFRNTCht ZWluZU9lIHx8ICfigJQnKSArICcsIEdydXBwZTogJyArIGVzY2FwZUhUTUwobWVpbmVHcnVwcGUg fHwgJ+KAlCcpOwogICAgICAgICAgICBwZXJzQ2JzID0gbWlrcm9GaWVsZHNldCArCiAgICAgICAg ICAgICAgICAnPGZpZWxkc2V0IGNsYXNzPSJrb2xsZWdlbi1kaXJla3QiPicgKwogICAgICAgICAg ICAgICAgICAgICc8bGVnZW5kPkRpcmVrdGUgS29sbGVnZW4gPHNwYW4gc3R5bGU9ImNvbG9yOnZh cigtLXRleHQtbXV0ZWQpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTFweCI+KCcgKyBrb250 ZXh0TGFiZWwgKyAnKTwvc3Bhbj4gJyArCiAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlvbj0ia29s bGVnZW4tZGlyZWt0LWFsbGUiIHN0eWxlPSJtYXJnaW4tbGVmdDo4cHgiPkFsbGUgbWFya2llcmVu PC9idXR0b24+PC9sZWdlbmQ+JyArCiAgICAgICAgICAgICAgICAgICAgKGRpcmVrdGUubGVuZ3Ro ID8gZGlyZWt0ZS5tYXAoZXJDaGtQZXJzb24pLmpvaW4oJycpIDogJzxzcGFuIHN0eWxlPSJjb2xv cjp2YXIoLS10ZXh0LW11dGVkKSI+4oCUIGtlaW5lIGRpcmVrdGVuIEtvbGxlZ2VuIHZvcmhhbmRl biDigJQ8L3NwYW4+JykgKwogICAgICAgICAgICAgICAgJzwvZmllbGRzZXQ+JyArCiAgICAgICAg ICAgICAgICAnPGZpZWxkc2V0IGNsYXNzPSJrb2xsZWdlbi1yZXN0Ij4nICsKICAgICAgICAgICAg ICAgICAgICAnPGxlZ2VuZD5BbGxlIMO8YnJpZ2VuICcgKwogICAgICAgICAgICAgICAgICAgICc8 YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgZGF0YS1h a3Rpb249ImtvbGxlZ2VuLXJlc3QtYWxsZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OjhweCI+QWxsZSBt YXJraWVyZW48L2J1dHRvbj48L2xlZ2VuZD4nICsKICAgICAgICAgICAgICAgICAgICAocmVzdC5s ZW5ndGggPyByZXN0Lm1hcChlckNoa1BlcnNvbikuam9pbignJykgOiAnPHNwYW4gc3R5bGU9ImNv bG9yOnZhcigtLXRleHQtbXV0ZWQpIj7igJQga2VpbmUg4oCUPC9zcGFuPicpICsKICAgICAgICAg ICAgICAgICc8L2ZpZWxkc2V0Pic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcGVyc0Ni cyA9IG1pa3JvRmllbGRzZXQgKyByZXN0UGVyc29uZW4ubWFwKGVyQ2hrUGVyc29uKS5qb2luKCcn KTsKICAgICAgICB9CiAgICAgICAgdmFyIGdyQ2JzID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSku bWFwKGZ1bmN0aW9uKGdyKSB7CiAgICAgICAgICAgIHJldHVybiBlckNoaygnR18nICsgZ3IubmFt ZSwgKGdyLmJlemVpY2hudW5nIHx8IGdyLm5hbWUpLCAoZXIuZGllbnN0Z3J1cHBlbiB8fCBbXSku aW5kZXhPZihnci5uYW1lKSA+PSAwKTsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICB2YXIg c3RDYnMgPSBzdGFuZG9ydGUubWFwKGZ1bmN0aW9uKHMpIHsKICAgICAgICAgICAgcmV0dXJuIGVy Q2hrKCdTXycgKyBzLCBzLCAoZXIuc3RhbmRvcnRlIHx8IFtdKS5pbmRleE9mKHMpID49IDApOwog ICAgICAgIH0pLmpvaW4oJycpOwoKICAgICAgICBrb2VycGVyICs9CiAgICAgICAgICAgICc8ZGV0 YWlscyBzdHlsZT0ibWFyZ2luLXRvcDoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVy LWxpZ2h0KTtib3JkZXItcmFkaXVzOjRweDtwYWRkaW5nOjhweCAxMnB4Ij4nICsKICAgICAgICAg ICAgJzxzdW1tYXJ5IHN0eWxlPSJjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDAiPlBsYW51 bmcgKG51ciBTdXBlclVzZXIpJyArCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQt d2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6MTFweDttYXJnaW4t bGVmdDo4cHgiPuKAlCBlaWdlbmUgWmVpbGUgaXN0IGltbWVyIGVybGF1YnQ8L3NwYW4+JyArCiAg ICAgICAgICAgICc8L3N1bW1hcnk+JyArCiAgICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luOjhw eCAwO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5EaWVzZSBQZXJzb24g ZGFyZiB6dXPDpHR6bGljaCBkaWUgUGxhbnVuZ3N6ZWxsZW4gZm9sZ2VuZGVyIEVpbnRyw6RnZSDD pG5kZXJuOjwvcD4nICsKICAgICAgICAgICAgJzxoNCBzdHlsZT0ibWFyZ2luOjhweCAwIDRweCI+ RWluemVsbmUgUGVyc29uZW48L2g0PicgKwogICAgICAgICAgICAnPGRpdiBpZD0iZXItcGVyc29u ZW4iIGNsYXNzPSJlci1wZXJzb25lbi1ncmlkIj4nICsKICAgICAgICAgICAgICAgIChwZXJzQ2Jz IHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPktlaW5lIHdlaXRlcmVu IGFrdGl2ZW4gUGVyc29uZW48L3NwYW4+JykgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAg ICAgICAgICc8aDQgc3R5bGU9Im1hcmdpbjo4cHggMCA0cHgiPkdhbnplIERpZW5zdGdydXBwZW48 L2g0PicgKwogICAgICAgICAgICAnPGRpdiBpZD0iZXItZGllbnN0Z3J1cHBlbiI+JyArIChnckNi cyB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpIj5LZWluZSBEaWVuc3Rn cnVwcGVuIGtvbmZpZ3VyaWVydDwvc3Bhbj4nKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxo NCBzdHlsZT0ibWFyZ2luOjhweCAwIDRweCI+R2FuemUgU3RhbmRvcnRlIChPRSk8L2g0PicgKwog ICAgICAgICAgICAnPGRpdiBpZD0iZXItc3RhbmRvcnRlIj4nICsgKHN0Q2JzIHx8ICc8c3BhbiBz dHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPktlaW5lIFN0YW5kb3J0ZSBrb25maWd1cmll cnQ8L3NwYW4+JykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2RldGFpbHM+JzsKCiAgICAg ICAgLy8gQ2hlcnJ5LVBpY2sgN2FmNjViMTogUGVyLVBlcnNvbi1TaWNodGJhcmtlaXQgKFNVLW9u bHkpLiBUb2dnbGUKICAgICAgICAvLyBgZmVhdHVyZXMucGVyUGVyc29uU2ljaHRiYXJrZWl0YCBz Y2hhbHRldCBudXIgZGllIFVJIGZyZWk7IGRlcgogICAgICAgIC8vIFNjaGVtYS1PdmVycmlkZSBg cGVyc29uLnNlaGVuYCBncmVpZnQgc2VydmVyc2VpdGlnIGltbWVyLgogICAgICAgIGlmIChmZWF0 dXJlSXN0QWt0aXYoJ3BlclBlcnNvblNpY2h0YmFya2VpdCcpKSB7CiAgICAgICAgICAgIHZhciBw cyA9IChwZXJzb24uc2VoZW4gJiYgdHlwZW9mIHBlcnNvbi5zZWhlbiA9PT0gJ29iamVjdCcpID8g cGVyc29uLnNlaGVuIDoge307CiAgICAgICAgICAgIGZ1bmN0aW9uIHNlaGVuU2VsZWN0KGlkQXR0 ciwgbGFiZWwsIGFrdHVlbGxlcldlcnQpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIG9wdCh2 LCB0eHQpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2VsID0gKGFrdHVlbGxlcldlcnQgPT09 IHYgfHwgKHYgPT09IG51bGwgJiYgKGFrdHVlbGxlcldlcnQgPT0gbnVsbCkpKSA/ICcgc2VsZWN0 ZWQnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsg KHYgPT09IG51bGwgPyAnJyA6IFN0cmluZyh2KSkgKyAnIicgKyBzZWwgKyAnPicgKyBlc2NhcGVI VE1MKHR4dCkgKyAnPC9vcHRpb24+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg IHJldHVybiAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbCBmb3I9IicgKyBpZEF0dHIg KyAnIj4nICsgZXNjYXBlSFRNTChsYWJlbCkgKyAnPC9sYWJlbD4nICsKICAgICAgICAgICAgICAg ICAgICAnPHNlbGVjdCBpZD0iJyArIGlkQXR0ciArICciIGNsYXNzPSJmb3JtLWlucHV0IiBzdHls ZT0id2lkdGg6MjAwcHgiPicgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHQobnVsbCwgICfi gJQgU3RhbmRhcmQg4oCUJykgKwogICAgICAgICAgICAgICAgICAgICAgICBvcHQodHJ1ZSwgICdT aWNodGJhcicpICsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0KGZhbHNlLCAnVmVyc3RlY2t0 JykgKwogICAgICAgICAgICAgICAgICAgICc8L3NlbGVjdD48L2Rpdj4nOwogICAgICAgICAgICB9 CiAgICAgICAgICAgIGtvZXJwZXIgKz0KICAgICAgICAgICAgICAgICc8ZGV0YWlscyBzdHlsZT0i bWFyZ2luLXRvcDoxNnB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyLWxpZ2h0KTtib3Jk ZXItcmFkaXVzOjRweDtwYWRkaW5nOjhweCAxMnB4Ij4nICsKICAgICAgICAgICAgICAgICc8c3Vt bWFyeSBzdHlsZT0iY3Vyc29yOnBvaW50ZXI7Zm9udC13ZWlnaHQ6NjAwIj5Qcm8tUGVyc29uLVNp Y2h0YmFya2VpdCAobnVyIFN1cGVyVXNlciknICsKICAgICAgICAgICAgICAgICAgICAnPHNwYW4g c3R5bGU9ImZvbnQtd2VpZ2h0OjQwMDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKTtmb250LXNpemU6 MTFweDttYXJnaW4tbGVmdDo4cHgiPuKAlCBTdGFuZGFyZCBmb2xndCBkZXIgUm9sbGU8L3NwYW4+ JyArCiAgICAgICAgICAgICAgICAnPC9zdW1tYXJ5PicgKwogICAgICAgICAgICAgICAgJzxwIHN0 eWxlPSJtYXJnaW46OHB4IDA7Zm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRlZCki PsOcYmVyc2NocmVpYnQgZGllIHJvbGxlbmJhc2llcnRlIFRhYi1TaWNodGJhcmtlaXQgZsO8ciBk aWVzZSBlaW5lIFBlcnNvbi4g4oCeU3RhbmRhcmQiIGJlZGV1dGV0OiBWZXJoYWx0ZW4gcmljaHRl dCBzaWNoIG5hY2ggaWhyZXIgUm9sbGUgKHJlZ3Vsw6RyIC8gRmFjaGF1ZnNpY2h0IC8gU1UpLjwv cD4nICsKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjI0cHg7 ZmxleC13cmFwOndyYXAiPicgKwogICAgICAgICAgICAgICAgICAgIHNlaGVuU2VsZWN0KCdkbGct c2VoZW4tbG9nYnVjaCcsICAgJ0xvZ2J1Y2ggc2VoZW4nLCAgIHBzLmxvZ2J1Y2ggICA9PT0gdW5k ZWZpbmVkID8gbnVsbCA6IHBzLmxvZ2J1Y2gpICsKICAgICAgICAgICAgICAgICAgICBzZWhlblNl bGVjdCgnZGxnLXNlaGVuLXN0YXRpc3RpaycsICdTdGF0aXN0aWsgc2VoZW4nLCBwcy5zdGF0aXN0 aWsgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBwcy5zdGF0aXN0aWspICsKICAgICAgICAgICAgICAg ICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8L2RldGFpbHM+JzsKICAgICAgICB9CiAgICB9 CgogICAgdmFyIGRsZ1RpdGVsID0gKHBlcnNvbi52b3JuYW1lID8gcGVyc29uLnZvcm5hbWUgKyAn ICcgOiAnJykgKyBwZXJzb24ubmFtZTsKICAgIHZhciBwYXBpZXJrb3JiQWt0aXZMb2thbCA9IGZl YXR1cmVJc3RBa3RpdigncGFwaWVya29yYlVJJyk7CiAgICB2YXIgdW1zZXR6ZW5MYWJlbCA9IHBl cnNvbi5ha3RpdiA9PT0gZmFsc2UgPyAnUmVha3RpdmllcmVuJyA6ICdVbXNldHplbic7CiAgICB2 YXIgdW1zZXR6ZW5DbHMgICA9IHBlcnNvbi5ha3RpdiA9PT0gZmFsc2UgPyAnYnRuLWVyZm9sZycg OiAnYnRuLWdlZmFocic7CiAgICB2YXIgdW1zZXR6ZW5UaXRsZSA9IHBlcnNvbi5ha3RpdiA9PT0g ZmFsc2UKICAgICAgICA/ICdQZXJzb24gd2llZGVyIGluIGRpZSBQbGFudW5nIGF1Zm5laG1lbicK ICAgICAgICA6ICdQZXJzb24gYXVzIGRlciBQbGFudW5nIGVudGZlcm5lbiAoRWludHLDpGdlIGJs ZWliZW4gZXJoYWx0ZW4pJzsKICAgIHZhciBmdXNzSHRtbCA9CiAgICAgICAgJzxidXR0b24gdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuICcgKyB1bXNldHplbkNscyArICciIGlkPSJkbGctdW1zZXR6 ZW4iIHRpdGxlPSInICsgZXNjYXBlQXR0cih1bXNldHplblRpdGxlKSArICciPicgKyB1bXNldHpl bkxhYmVsICsgJzwvYnV0dG9uPicgKwogICAgICAgIChwYXBpZXJrb3JiQWt0aXZMb2thbAogICAg ICAgICAgICA/ICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZ2VmYWhyIiBp ZD0iZGxnLWxvZXNjaGVuIiB0aXRsZT0iUGVyc29uIHVuZCBBTExFIFBsYW5kYXRlbiBlbmRnw7xs dGlnIGVudGZlcm5lbiI+TMO2c2NoZW48L2J1dHRvbj4nCiAgICAgICAgICAgIDogJycpICsKICAg ICAgICAnPHNwYW4gc3R5bGU9ImZsZXg6MSI+PC9zcGFuPicgKwogICAgICAgICc8YnV0dG9uIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9ImRsZy1zcGVpY2hlcm4iPlNw ZWljaGVybjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignUGVyc29uIGJlYXJiZWl0ZW46ICcg KyBkbGdUaXRlbCwga29lcnBlciwgZnVzc0h0bWwsCiAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgIHZhciBkbGdGdW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1mdW5rdGlv bicpLnZhbHVlOwogICAgICAgICAgICB2YXIgZGxnRWxkZ2xFbCA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdkbGctZWxkZ2wnKTsKICAgICAgICAgICAgdmFyIGRhdGVuID0gewogICAgICAgICAg ICAgICAgbmFtZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1uYW1lJykudmFsdWUudHJp bSgpLAogICAgICAgICAgICAgICAgdm9ybmFtZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rs Zy12b3JuYW1lJykudmFsdWUsCiAgICAgICAgICAgICAgICBncnVwcGU6IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdkbGctZ3J1cHBlJykudmFsdWUsCiAgICAgICAgICAgICAgICBmdW5rdGlvbjog ZGxnRnVuaywKICAgICAgICAgICAgICAgIG9lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxn LW9lJykudmFsdWUsCiAgICAgICAgICAgICAgICBkaWVuc3RncmFkOiBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZGxnLWRpZW5zdGdyYWQnKS52YWx1ZSwKICAgICAgICAgICAgICAgIHRlbGVmb246 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctdGVsZWZvbicpLnZhbHVlLAogICAgICAgICAg ICAgICAgbndLZW5udW5nOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW53a2VubnVuZycp LnZhbHVlLAogICAgICAgICAgICAgICAgZW1haWw6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk bGctZW1haWwnKS52YWx1ZSwKICAgICAgICAgICAgICAgIGdlYnVydHNkYXR1bTogZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ2RsZy1nZWJ1cnRzZGF0dW0nKS52YWx1ZSwKICAgICAgICAgICAgICAg IGFrdGl2OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWFrdGl2JykudmFsdWUgPT09ICd0 cnVlJywKICAgICAgICAgICAgICAgIGVsRGdsUXVhbGlmaXppZXJ0OiBkbGdFbGRnbEVsID8gZGxn RWxkZ2xFbC5jaGVja2VkIDogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCFk YXRlbi5uYW1lKSB7IHBmbGljaHRmZWxkRmVobGVyKCdkbGctbmFtZScsICdOYW1lIGlzdCBlaW4g UGZsaWNodGZlbGQnKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIC8vIFByby1QZXJzb24tQXVzYmxl bmRlbiAoU1Utb25seSkuIENoZWNrYm94IGFrdGl2ID0gYXVzYmxlbmRlbiAtPgogICAgICAgICAg ICAvLyBpblBsYW51bmc9ZmFsc2UuIE51ciBzZW5kZW4sIHdlbm4gZGFzIEZlbGQgaW0gRE9NIGlz dCAoU1UpLCBzb25zdAogICAgICAgICAgICAvLyBibGVpYnQgZWluIGV2dGwuIHZvcmhhbmRlbmVy IFdlcnQgdW5hbmdldGFzdGV0LgogICAgICAgICAgICB2YXIgZGxnSW5QbGFudW5nRWwgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWlucGxhbnVuZycpOwogICAgICAgICAgICBpZiAoZGxn SW5QbGFudW5nRWwpIGRhdGVuLmluUGxhbnVuZyA9ICFkbGdJblBsYW51bmdFbC5jaGVja2VkOwog ICAgICAgICAgICAvLyBQcm8tUGVyc29uLVNpY2h0YmFya2VpdDogbnVyIGxlc2VuIHdlbm4gVG9n Z2xlIGFrdGl2IFVORCBTVQogICAgICAgICAgICAvLyAoRHJvcGRvd25zIGV4aXN0aWVyZW4gc29u c3QgbmljaHQgaW0gRE9NKS4gV2VydGU6ICcnID0gbnVsbAogICAgICAgICAgICAvLyAoU3RhbmRh cmQvUm9sbGUpLCAndHJ1ZScgPSBleHBsaXppdCBzaWNodGJhciwgJ2ZhbHNlJyA9CiAgICAgICAg ICAgIC8vIGV4cGxpeml0IHZlcnN0ZWNrdC4gV2lyIHNlbmRlbiBkYXMgT2JqZWt0IGltbWVyIGtv bXBsZXR0LAogICAgICAgICAgICAvLyBkYW1pdCBTZXJ2ZXIgYWx0ZSBPdmVycmlkZXMgZW50ZmVy bmVuIGthbm4uCiAgICAgICAgICAgIGlmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIgJiYgZmVhdHVy ZUlzdEFrdGl2KCdwZXJQZXJzb25TaWNodGJhcmtlaXQnKSkgewogICAgICAgICAgICAgICAgdmFy IHNlTG9nRWwgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1zZWhlbi1sb2didWNoJyk7 CiAgICAgICAgICAgICAgICB2YXIgc2VTdGF0RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn ZGxnLXNlaGVuLXN0YXRpc3RpaycpOwogICAgICAgICAgICAgICAgaWYgKHNlTG9nRWwgJiYgc2VT dGF0RWwpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBsZXNlKHYpIHsKICAgICAgICAg ICAgICAgICAgICAgICAgaWYgKHYgPT09ICcnKSAgICAgIHJldHVybiBudWxsOwogICAgICAgICAg ICAgICAgICAgICAgICBpZiAodiA9PT0gJ3RydWUnKSAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg ICAgICAgICAgICAgIGlmICh2ID09PSAnZmFsc2UnKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICAgICBkYXRlbi5zZWhlbiA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgbG9nYnVj aDogICBsZXNlKHNlTG9nRWwudmFsdWUpLAogICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0 aWs6IGxlc2Uoc2VTdGF0RWwudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBaZWxsLUVkaXQtUmVjaHRlOiBu dXIgdWViZXJuZWhtZW4gd2VubiBTVSAoU2VrdGlvbiBleGlzdGllcnQgc29uc3QgbmljaHQpCiAg ICAgICAgICAgIGlmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHsKICAgICAgICAgICAgICAgIHZh ciBlclAgPSBbXSwgZXJHID0gW10sIGVyUyA9IFtdOwogICAgICAgICAgICAgICAgZG9jdW1lbnQu cXVlcnlTZWxlY3RvckFsbCgnI2VyLXBlcnNvbmVuIC5lZGl0LXJlY2h0LWNoaycpLmZvckVhY2go ZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICAgIGlmIChjLmNoZWNrZWQpIGVyUC5wdXNo KHBhcnNlSW50KGMuZ2V0QXR0cmlidXRlKCdkYXRhLXdlcnQnKS5zbGljZSgyKSkpOwogICAgICAg ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcj ZXItZGllbnN0Z3J1cHBlbiAuZWRpdC1yZWNodC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsK ICAgICAgICAgICAgICAgICAgICBpZiAoYy5jaGVja2VkKSBlckcucHVzaChjLmdldEF0dHJpYnV0 ZSgnZGF0YS13ZXJ0Jykuc2xpY2UoMikpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg ICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjZXItc3RhbmRvcnRlIC5lZGl0LXJlY2h0 LWNoaycpLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAgICAgIGlmIChjLmNo ZWNrZWQpIGVyUy5wdXNoKGMuZ2V0QXR0cmlidXRlKCdkYXRhLXdlcnQnKS5zbGljZSgyKSk7CiAg ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGRhdGVuLmVkaXRSZWNodGUgPSB7IHBl cnNvbmVuSWRzOiBlclAsIGRpZW5zdGdydXBwZW46IGVyRywgc3RhbmRvcnRlOiBlclMgfTsKICAg ICAgICAgICAgfQogICAgICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCBkYXRl bikudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBwID0gWi5wbGFudW5nLnBl cnNvbmVuLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9PT0gaWQ7IH0pOwogICAgICAg ICAgICAgICAgaWYgKHApIE9iamVjdC5hc3NpZ24ocCwgZGF0ZW4pOwogICAgICAgICAgICAgICAg ZW50d3VyZkxvZXNjaGVuKCdwZXJzb25fZWRpdF8nICsgaWQpOwogICAgICAgICAgICAgICAgcGVy c29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgICAgICAgICAgbW9kYWxTY2hsaWVzc2VuKHRydWUp OwogICAgICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICAg ICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAg ICAgICAgICBuYW1lblJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICBkYXRlbkdyaWRSZW5k ZXJuKCk7CiAgICAgICAgICAgICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgICAg IH0KICAgICAgICAgICAgICAgIHRvYXN0KCdQZXJzb24gYWt0dWFsaXNpZXJ0JywgJ2VyZm9sZycp OwogICAgICAgICAgICAgICAgLy8gSWRlbnRpdGFldHMtQWVuZGVydW5nZW4gKG53S2VubnVuZy9l bWFpbCkgZXJ6ZXVnZW4gc2VpdCBQaGFzZSA0CiAgICAgICAgICAgICAgICAvLyAoMjAyNi0wNS0y MCkgZWluZW4gU2VydmVyLXNlaXRpZ2VuIEluLUFwcC1IaW53ZWlzIHN0YXR0IG1haWx0by4KICAg ICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNz YWdlLCAnZmVobGVyJyk7IH0pOwogICAgICAgIH0sCiAgICAgICAgJ3BlcnNvbl9lZGl0XycgKyBp ZCwgIC8vIFNwZWMgRi40OiBtb2RhbEtleSBha3RpdmllcnQgRW50d3VyZi1TeXN0ZW0KICAgICAg ICB7IGF1dG9TYXZlOiB0cnVlIH0gICAgLy8gUGFrZXQtQyAoMjAyNi0wNS0yOSk6IFNjaGxpZXNz ZW4gc3BlaWNoZXJ0IGF1dG9tYXRpc2NoCiAgICApOwoKICAgIC8vIERpZSBWSTMtREdMLUNoZWNr Ym94IGlzdCBzZWl0IDIwMjYtMDUtMjMgZnVlciBhbGxlIEZ1bmt0aW9uZW4KICAgIC8vIHNpY2h0 YmFyIOKAlCBrZWluIEZ1bmt0aW9ucy1hYmhhZW5naWdlciBUb2dnbGUgbWVociBub2V0aWcuCiAg ICBlbGRnbFRvZ2dsZUxpc3RlbmVyQmluZGVuKCk7CiAgICBhdmF0YXJVcGxvYWRIYW5kbGVyQmlu ZGVuKHBlcnNvbik7CgogICAgLy8gVW1zZXR6ZW4vUmVha3RpdmllcmVuLUJ1dHRvbiBpbSBNb2Rh bC1Gb290ZXIgKHNlaXQgMjAyNi0wNS0yMywKICAgIC8vIGZydWVoZXIgaW5saW5lIGluIGRlciBU YWJlbGxlbnplaWxlKS4KICAgIHZhciBkbGdVbXNldHplbkJ0biA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdkbGctdW1zZXR6ZW4nKTsKICAgIGlmIChkbGdVbXNldHplbkJ0bikgewogICAgICAg IGRsZ1Vtc2V0emVuQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgICAgIHZhciB3aWxsQWt0aXYgPSBwZXJzb24uYWt0aXYgPT09IGZhbHNlOwogICAgICAg ICAgICBiZXN0YWV0aWdlbigKICAgICAgICAgICAgICAgIHdpbGxBa3RpdgogICAgICAgICAgICAg ICAgICAgID8gcGVyc29uLm5hbWUgKyAnIHdpZWRlciBpbiBkaWUgUGxhbnVuZyBhdWZuZWhtZW4/ JwogICAgICAgICAgICAgICAgICAgIDogcGVyc29uLm5hbWUgKyAnIGF1cyBkZXIgUGxhbnVuZyBl bnRmZXJuZW4/XG5cbkRpZSBiaXNoZXJpZ2VuIEVpbnRyw6RnZSBibGVpYmVuIGVyaGFsdGVuIHVu ZCB0YXVjaGVuIHdpZWRlciBhdWYsIHdlbm4gZGllIFBlcnNvbiBzcMOkdGVyIHJlYWt0aXZpZXJ0 IHdpcmQuJywKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAg IHBlcnNvblN0YXR1c1NldHplbihpZCwgd2lsbEFrdGl2KTsKICAgICAgICAgICAgICAgICAgICBt b2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg eyB0aXRlbDogd2lsbEFrdGl2ID8gJ1JlYWt0aXZpZXJlbicgOiAnVW1zZXR6ZW4nLCBqYVRleHQ6 IHdpbGxBa3RpdiA/ICdSZWFrdGl2aWVyZW4nIDogJ1Vtc2V0emVuJywgamFEYW5nZXI6ICF3aWxs QWt0aXYgfQogICAgICAgICAgICApOwogICAgICAgIH0pOwogICAgfQogICAgLy8gRW5kZ3VlbHRp Zy1Mb2VzY2hlbi1CdXR0b24gaW0gTW9kYWwtRm9vdGVyIG1pdCBrcmFlZnRpZ2VyIEhUTUwtV2Fy bnVuZy4KICAgIC8vIGJlc3RhZXRpZ2VuKCkgZXNjYXBlZCBkZW4gVGV4dCwgZGFoZXIgbnV0emVu IHdpciBoaWVyIG1vZGFsWmVpZ2VuKCkKICAgIC8vIGRpcmVrdCBmdWVyIGRhcyBIVE1MLWZvcm1h dGllcnRlIFdhcm4tTW9kYWwuCiAgICB2YXIgZGxnTG9lQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2RsZy1sb2VzY2hlbicpOwogICAgaWYgKGRsZ0xvZUJ0bikgewogICAgICAgIGRsZ0xv ZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2 YXIgcE5hbWUgPSAocGVyc29uLnZvcm5hbWUgPyBwZXJzb24udm9ybmFtZSArICcgJyA6ICcnKSAr IHBlcnNvbi5uYW1lOwogICAgICAgICAgICAvLyBBbnphaGwgZGVyIGhpbnRlcmxlZ3RlbiBFaW50 cmFlZ2UgZnVlciBQZXJzb24gemFlaGxlbiwgZGFtaXQgZGVyCiAgICAgICAgICAgIC8vIFVzZXIg aW4gZGVyIFdhcm51bmcgd2Vpc3MsIHdpZSB2aWVsIHZlcmxvcmVuIGdlaHQuCiAgICAgICAgICAg IHZhciBhbnpFaW50cmFlZ2UgPSAwOwogICAgICAgICAgICBpZiAoWi5wbGFudW5nICYmIFoucGxh bnVuZy5laW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKFoucGxhbnVuZy5l aW50cmFlZ2UpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBl ID0gWi5wbGFudW5nLmVpbnRyYWVnZVtkXTsKICAgICAgICAgICAgICAgICAgICBpZiAoZSAmJiBl W1N0cmluZyhpZCldKSBhbnpFaW50cmFlZ2UrKzsKICAgICAgICAgICAgICAgIH0pOwogICAgICAg ICAgICB9CiAgICAgICAgICAgIHZhciBhbnpLb21tZW50YXJlID0gMDsKICAgICAgICAgICAgaWYg KFoucGxhbnVuZyAmJiBaLnBsYW51bmcua29tbWVudGFyZSkgewogICAgICAgICAgICAgICAgT2Jq ZWN0LmtleXMoWi5wbGFudW5nLmtvbW1lbnRhcmUpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAg ICAgICAgICAgICAgICAgIHZhciBrID0gWi5wbGFudW5nLmtvbW1lbnRhcmVbZF07CiAgICAgICAg ICAgICAgICAgICAgaWYgKGsgJiYga1tTdHJpbmcoaWQpXSkgYW56S29tbWVudGFyZSsrOwogICAg ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGtvZXJwZXIgPQog ICAgICAgICAgICAgICAgJzxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OjEuNTUiPicgKwogICAgICAg ICAgICAgICAgICAgICc8cCBzdHlsZT0ibWFyZ2luLXRvcDowIj48c3Ryb25nPicgKyBlc2NhcGVI VE1MKHBOYW1lKSArICc8L3N0cm9uZz4gd2lya2xpY2ggZW5kZ8O8bHRpZyBsw7ZzY2hlbj88L3A+ JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS1mZWhs ZXIpO2ZvbnQtd2VpZ2h0OjYwMDttYXJnaW46MTBweCAwIDRweCI+RGllc2UgQWt0aW9uIGVudGZl cm50IHVud2lkZXJydWZsaWNoOjwvcD4nICsKICAgICAgICAgICAgICAgICAgICAnPHVsIHN0eWxl PSJtYXJnaW46MCAwIDEwcHggMjBweCI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+ YWxsZSBTdGFtbWRhdGVuIGRlciBQZXJzb24gKE5hbWUsIEZ1bmt0aW9uLCBEaWVuc3RncmFkLCBU ZWxlZm9uLCBOVy1LZW5udW5nLCDigKYpPC9saT4nICsKICAgICAgICAgICAgICAgICAgICAgICAg JzxsaT48c3Ryb25nPicgKyBhbnpFaW50cmFlZ2UgKyAnPC9zdHJvbmc+IGhpbnRlcmxlZ3RlIFNj aGljaHQtRWludHInICsgKGFuekVpbnRyYWVnZSA9PT0gMSA/ICdhZycgOiAnw6RnZScpICsgJyBp bSBnZXNhbXRlbiBQbGFudW5ncy1aZWl0cmF1bTwvbGk+JyArCiAgICAgICAgICAgICAgICAgICAg ICAgICc8bGk+PHN0cm9uZz4nICsgYW56S29tbWVudGFyZSArICc8L3N0cm9uZz4gS29tbWVudGFy JyArIChhbnpLb21tZW50YXJlID09PSAxID8gJycgOiAnZScpICsgJyB6dSBkaWVzZXIgUGVyc29u PC9saT4nICsKICAgICAgICAgICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAgICAgICAgICAg ICAnPHAgc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxMnB4O21hcmdp bjo4cHggMCAwIj5EYXMgTG9nYnVjaCBibGVpYnQgYWxzIEF1ZGl0LVNwdXIgZXJoYWx0ZW4g4oCU IGRpZSBBa3Rpb24gaXN0IG5pY2h0IMO8YmVyIOKAnldpZWRlcmhlcnN0ZWxsZW4iIHp1csO8Y2tu ZWhtYmFyLjwvcD4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICB2YXIg ZnVzcyA9CiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0ibG9lLWFiYnJl Y2hlbiIgdHlwZT0iYnV0dG9uIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAg ICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWdlZmFociIgaWQ9ImxvZS1iZXN0YWV0aWdlbiIgdHlw ZT0iYnV0dG9uIj5FbmRnw7xsdGlnIGzDtnNjaGVuPC9idXR0b24+JzsKICAgICAgICAgICAgbW9k YWxaZWlnZW4oJ1BlcnNvbiBlbmRnw7xsdGlnIGzDtnNjaGVuIOKAlCAnICsgcE5hbWUsIGtvZXJw ZXIsIGZ1c3MsIG51bGwsIG51bGwsIHsgcmVpbmVyRGlhbG9nOiB0cnVlIH0pOwogICAgICAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9lLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4o dHJ1ZSk7CiAgICAgICAgICAgICAgICAvLyBCZWFyYmVpdGVuLU1vZGFsIG5ldSB6ZWlnZW4sIGRh bWl0IGRlciBVc2VyIGRvcnQgd2VpdGVybWFjaGVuIGthbm4KICAgICAgICAgICAgICAgIHBlcnNv bkJlYXJiZWl0ZW5EaWFsb2coaWQpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZS1iZXN0YWV0aWdlbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBhcGlEZWxldGUoJy9hcGkvcGVyc29u ZW4vJyArIGlkICsgJz9lbmRndWVsdGlnPTEnKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAg ICAgICAgICAgIFoucGxhbnVuZy5wZXJzb25lbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiB4LmlkICE9PSBpZDsgfSk7CiAgICAgICAgICAg ICAgICAgICAgaWYgKFoucGxhbnVuZy5laW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgT2JqZWN0LmtleXMoWi5wbGFudW5nLmVpbnRyYWVnZSkuZm9yRWFjaChmdW5jdGlvbihkKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoWi5wbGFudW5nLmVpbnRyYWVnZVtkXSkg ZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZF1bU3RyaW5nKGlkKV07CiAgICAgICAgICAgICAg ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBp ZiAoWi5wbGFudW5nLmtvbW1lbnRhcmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0 LmtleXMoWi5wbGFudW5nLmtvbW1lbnRhcmUpLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKFoucGxhbnVuZy5rb21tZW50YXJlW2RdKSBkZWxldGUg Wi5wbGFudW5nLmtvbW1lbnRhcmVbZF1bU3RyaW5nKGlkKV07CiAgICAgICAgICAgICAgICAgICAg ICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbnR3dXJm TG9lc2NoZW4oJ3BlcnNvbl9lZGl0XycgKyBpZCk7CiAgICAgICAgICAgICAgICAgICAgbW9kYWxT Y2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4o KTsKICAgICAgICAgICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAg ICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZW5SZW5kZXJuKCk7CiAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGVuR3JpZFJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICAgICAga29wZlJlbmRl cm4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ1Bl cnNvbiBlbmRnw7xsdGlnIGdlbMO2c2NodCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgICAgIH0p LmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxl cicpOyB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgLy8gIkFsbGUg bWFya2llcmVuIi1CdXR0b25zIGZ1ZXIgZGllIERpcmVrdGUtS29sbGVnZW4vUmVzdC1TZWt0aW9u ZW4sCiAgICAvLyB3ZW5uIGRlciBUb2dnbGUgYWt0aXYgaXN0IChDaGVycnktUGljayA4OWViM2M3 KS4gV2VubiBkaWUgQnV0dG9ucwogICAgLy8gaW0gTWFya3VwIGZlaGxlbiAoRmVhdHVyZSBhdXMp LCBwYXNzaWVydCBoaWVyIG5pY2h0cy4KICAgIHZhciBlclBlcnNvbmVuID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2VyLXBlcnNvbmVuJyk7CiAgICBpZiAoZXJQZXJzb25lbikgZXJQZXJzb25l bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgYnRu ID0gZS50YXJnZXQuY2xvc2VzdCgnYnV0dG9uW2RhdGEtYWt0aW9uXScpOwogICAgICAgIGlmICgh YnRuKSByZXR1cm47CiAgICAgICAgdmFyIGFrdGlvbiA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEt YWt0aW9uJyk7CiAgICAgICAgdmFyIHNlbGVjdG9yID0gYWt0aW9uID09PSAna29sbGVnZW4tZGly ZWt0LWFsbGUnCiAgICAgICAgICAgID8gJy5rb2xsZWdlbi1kaXJla3QgLmVkaXQtcmVjaHQtY2hr JwogICAgICAgICAgICA6IChha3Rpb24gPT09ICdrb2xsZWdlbi1yZXN0LWFsbGUnICA/ICcua29s bGVnZW4tcmVzdCAuZWRpdC1yZWNodC1jaGsnCiAgICAgICAgICAgIDogKGFrdGlvbiA9PT0gJ2tv bGxlZ2VuLW1pa3JvLWFsbGUnID8gJy5rb2xsZWdlbi1taWtybyAuZWRpdC1yZWNodC1jaGsnIDog bnVsbCkpOwogICAgICAgIGlmICghc2VsZWN0b3IpIHJldHVybjsKICAgICAgICAvLyBUb2dnbGUt VmVyaGFsdGVuOiB3ZW5uIGFsbGUgYmVyZWl0cyBhbiwgYWxsZSBhdXMg4oCUIHNvbnN0IGFsbGUg YW4uCiAgICAgICAgdmFyIGJveGVuID0gZXJQZXJzb25lbi5xdWVyeVNlbGVjdG9yQWxsKHNlbGVj dG9yKTsKICAgICAgICB2YXIgYWxsZUFuID0gYm94ZW4ubGVuZ3RoID4gMCAmJiBBcnJheS5wcm90 b3R5cGUuZXZlcnkuY2FsbChib3hlbiwgZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jaGVja2VkOyB9 KTsKICAgICAgICBib3hlbi5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gIWFsbGVB bjsgfSk7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHBlcnNvbk5ldURpYWxvZygpIHsKICAg IHZhciBncnVwcGVuID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkubWFwKGZ1bmN0aW9uKGcpIHsg cmV0dXJuIGcubmFtZTsgfSk7CiAgICB2YXIgYWxsZSA9IChaLnBsYW51bmcucGVyc29uZW4gfHwg W10pLnNsaWNlKCkKICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuYWt0aXY7 IH0pCiAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gKGEucG9zaXRpb24gfHwg OTk5KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7IH0pOwogICAgdmFyIHJlZk9wdGlvbmVuID0gYWxs ZS5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgIHZhciBsYWJlbCA9IChwLnZvcm5hbWUgPyBwLnZv cm5hbWUgKyAnICcgOiAnJykgKyBwLm5hbWUgKyAnICgnICsgcC5ncnVwcGUgKyAnKSc7CiAgICAg ICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgcC5pZCArICciPicgKyBlc2NhcGVIVE1MKGxh YmVsKSArICc8L29wdGlvbj4nOwogICAgfSkuam9pbignJyk7CgogICAgdmFyIGtvZXJwZXIgPSAn PGRpdiBzdHlsZT0iZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dh cDowIDE2cHgiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSBmb3JtLXBmbGlj aHQiPjxsYWJlbD5OYW1lPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRsZy1uYW1lIiBj bGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPjwvZGl2PicgKwogICAgICAgICc8 ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlZvcm5hbWU8L2xhYmVsPjxpbnB1dCB0eXBl PSJ0ZXh0IiBpZD0iZGxnLXZvcm5hbWUiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6 MTAwJSI+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBlIj48bGFiZWw+ RGllbnN0Z3JhZDwvbGFiZWw+PHNlbGVjdCBpZD0iZGxnLWRpZW5zdGdyYWQiIGNsYXNzPSJmb3Jt LWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSI+JyArCiAgICAgICAgJzxvcHRpb24gdmFsdWU9IiIg c2VsZWN0ZWQ+4oCUIG9obmUg4oCUPC9vcHRpb24+JyArCiAgICAgICAgZ2V0RGllbnN0Z3JhZGUo KS5tYXAoZnVuY3Rpb24oZykgewogICAgICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9Iicg KyBlc2NhcGVBdHRyKGcpICsgJyI+JyArIGVzY2FwZUhUTUwoZykgKyAnPC9vcHRpb24+JzsKICAg ICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgJzwvc2VsZWN0PjwvZGl2PicgKwogICAgICAgICc8 ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSBmb3JtLXBmbGljaHQiPjxsYWJlbD5EaWVuc3RncnVwcGU8 L2xhYmVsPjxzZWxlY3QgaWQ9ImRsZy1ncnVwcGUiIGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0i d2lkdGg6MTAwJSI+JyArCiAgICAgICAgZ3J1cHBlbi5tYXAoZnVuY3Rpb24oZykgeyByZXR1cm4g JzxvcHRpb24+JyArIGVzY2FwZUhUTUwoZykgKyAnPC9vcHRpb24+JzsgfSkuam9pbignJykgKwog ICAgICAgICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVw cGUiPjxsYWJlbD5GdW5rdGlvbjwvbGFiZWw+PHNlbGVjdCBpZD0iZGxnLWZ1bmt0aW9uIiBjbGFz cz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHRpdGxlPSJTdGFtbS1GdW5rdGlvbjog YmVzdGltbXQgZGllIFZlcmFudHdvcnR1bmdzLVJlaWhlbmZvbGdlIGluIGRlciBTY2hpY2h0Ij4n ICsKICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iIiBzZWxlY3RlZD7igJQgb2huZSBGdW5rdGlvbiDi gJQ8L29wdGlvbj4nICsKICAgICAgICBnZXRGdW5rdGlvbmVuKCkubWFwKGZ1bmN0aW9uKGYpIHsK ICAgICAgICAgICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihmLmNvZGUp ICsgJyI+JyArIGVzY2FwZUhUTUwoZi5jb2RlKSArICc8L29wdGlvbj4nOwogICAgICAgIH0pLmpv aW4oJycpICsKICAgICAgICAnPC9zZWxlY3Q+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9 ImZvcm0tZ3J1cHBlIiBpZD0iZGxnLWVsZGdsLWdydXBwZSI+JyArCiAgICAgICAgICAgICc8bGFi ZWw+VkkzIERHTDwvbGFiZWw+JyArCiAgICAgICAgICAgIGVsZGdsVG9nZ2xlSHRtbChmYWxzZSkg KwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxs YWJlbD5PRSAoU3RhbmRvcnQpPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRsZy1vZSIg Y2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iei5CLiBL QSwgSEEsIEJPIj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxs YWJlbD5UZWxlZm9uPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRsZy10ZWxlZm9uIiBj bGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiIHBsYWNlaG9sZGVyPSJ6LkIuIDQ1 MjAiPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPk5X LUtlbm51bmc8L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGxnLW53a2VubnVuZyIgY2xh c3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iRE9NQUlOXFx1 c2VyIj48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZm9ybS1ncnVwcGUiPjxsYWJlbD5F LU1haWw8L2xhYmVsPjxpbnB1dCB0eXBlPSJlbWFpbCIgaWQ9ImRsZy1lbWFpbCIgY2xhc3M9ImZv cm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIiBwbGFjZWhvbGRlcj0iQmVuYWNocmljaHRpZ3Vu ZyBiZWkgw4RuZGVydW5nZW4iPjwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdy dXBwZSI+PGxhYmVsPkdlYnVydHNkYXR1bTwvbGFiZWw+PGlucHV0IHR5cGU9ImRhdGUiIGlkPSJk bGctZ2VidXJ0c2RhdHVtIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPjwv ZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGhyIHN0eWxlPSJtYXJnaW46MTJw eCAwO2JvcmRlcjpub25lO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1saWdodCki PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1 bW5zOjFmciAyZnI7Z2FwOjAgMTZweCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3Jt LWdydXBwZSI+PGxhYmVsPkVpbnJlaWhlbjwvbGFiZWw+PHNlbGVjdCBpZD0iZGxnLWVpbnJlaWhl biIgY2xhc3M9ImZvcm0taW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIj4nICsKICAgICAgICAgICAg ICAgICc8b3B0aW9uIHZhbHVlPSJ1bnRlbiIgc2VsZWN0ZWQ+R2FueiB1bnRlbiBhbmjDpG5nZW48 L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJ2b3IiPlZvciBQZXJz b27igKY8L29wdGlvbj4nICsKICAgICAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJuYWNoIj5O YWNoIFBlcnNvbuKApjwvb3B0aW9uPicgKwogICAgICAgICAgICAnPC9zZWxlY3Q+PC9kaXY+JyAr CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJmb3JtLWdydXBwZSI+PGxhYmVsPlJlZmVyZW56cGVy c29uPC9sYWJlbD48c2VsZWN0IGlkPSJkbGctcmVmIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9 IndpZHRoOjEwMCUiIGRpc2FibGVkPicgKwogICAgICAgICAgICAgICAgJzxvcHRpb24gdmFsdWU9 IiI+4oCUIGtlaW5lIOKAlDwvb3B0aW9uPicgKyByZWZPcHRpb25lbiArCiAgICAgICAgICAgICc8 L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKCiAgICBtb2RhbFplaWdlbignTmV1 ZSBQZXJzb24gYW5sZWdlbicsIGtvZXJwZXIsCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBi dG4tZXJmb2xnIiBpZD0iZGxnLXNwZWljaGVybiI+QW5sZWdlbjwvYnV0dG9uPicsCiAgICAgICAg ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBlaW5yZWloZW4gPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZGxnLWVpbnJlaWhlbicpLnZhbHVlOwogICAgICAgICAgICB2YXIgcmVmU2VsID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1yZWYnKTsKICAgICAgICAgICAgdmFyIHJlZklk ID0gcmVmU2VsLnZhbHVlID8gcGFyc2VJbnQocmVmU2VsLnZhbHVlKSA6IG51bGw7CiAgICAgICAg ICAgIGlmICgoZWlucmVpaGVuID09PSAndm9yJyB8fCBlaW5yZWloZW4gPT09ICduYWNoJykgJiYg IXJlZklkKSB7CiAgICAgICAgICAgICAgICB0b2FzdCgnQml0dGUgZWluZSBSZWZlcmVuenBlcnNv biB3w6RobGVuIG9kZXIgIkdhbnogdW50ZW4iIGF1c3fDpGhsZW4nLCAnd2FybnVuZycpOwogICAg ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBkbGdGdW5r MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctZnVua3Rpb24nKS52YWx1ZTsKICAgICAg ICAgICAgdmFyIGRsZ0VsZGdsRWwyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1lbGRn bCcpOwogICAgICAgICAgICB2YXIgZGF0ZW4gPSB7CiAgICAgICAgICAgICAgICBuYW1lOiBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW5hbWUnKS52YWx1ZS50cmltKCksCiAgICAgICAgICAg ICAgICB2b3JuYW1lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLXZvcm5hbWUnKS52YWx1 ZSwKICAgICAgICAgICAgICAgIGdydXBwZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1n cnVwcGUnKS52YWx1ZSwKICAgICAgICAgICAgICAgIGZ1bmt0aW9uOiBkbGdGdW5rMiwKICAgICAg ICAgICAgICAgIG9lOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW9lJykudmFsdWUsCiAg ICAgICAgICAgICAgICBkaWVuc3RncmFkOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWRp ZW5zdGdyYWQnKS52YWx1ZSwKICAgICAgICAgICAgICAgIHRlbGVmb246IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdkbGctdGVsZWZvbicpLnZhbHVlLAogICAgICAgICAgICAgICAgbndLZW5udW5n OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLW53a2VubnVuZycpLnZhbHVlLAogICAgICAg ICAgICAgICAgZW1haWw6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctZW1haWwnKS52YWx1 ZSwKICAgICAgICAgICAgICAgIGdlYnVydHNkYXR1bTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2RsZy1nZWJ1cnRzZGF0dW0nKS52YWx1ZSwKICAgICAgICAgICAgICAgIGVsRGdsUXVhbGlmaXpp ZXJ0OiBkbGdFbGRnbEVsMiA/IGRsZ0VsZGdsRWwyLmNoZWNrZWQgOiBmYWxzZSwKICAgICAgICAg ICAgICAgIGVpbnJlaWhlbjogZWlucmVpaGVuLAogICAgICAgICAgICAgICAgcmVmZXJlbnpJZDog cmVmSWQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCFkYXRlbi5uYW1lKSB7IHBmbGlj aHRmZWxkRmVobGVyKCdkbGctbmFtZScsICdOYW1lIGlzdCBlaW4gUGZsaWNodGZlbGQnKTsgcmV0 dXJuOyB9CiAgICAgICAgICAgIGFwaVBvc3QoJy9hcGkvcGVyc29uZW4nLCBkYXRlbikudGhlbihm dW5jdGlvbihyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXBpKCcvYXBpL3BsYW51bmcnKS50 aGVuKGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgICAgICAgICBaLnBsYW51bmcgPSBwOwogICAg ICAgICAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICAgICAgICAgICAg ICBtb2RhbFNjaGxpZXNzZW4oKTsKICAgICAgICAgICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVS ZW5kZXJuKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09 ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZW5SZW5kZXJuKCk7CiAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGVuR3JpZFJlbmRlcm4oKTsKICAgICAgICAgICAgICAg ICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgdG9hc3QoJ1BlcnNvbiBhbmdlbGVndCAoUG9zLiAnICsgci5wb3NpdGlvbiArICcp JywgJ2VyZm9sZycpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1 bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOyB9KTsK ICAgICAgICB9CiAgICApOwoKICAgIHZhciBlaW5TZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnZGxnLWVpbnJlaWhlbicpOwogICAgdmFyIHJlZkRkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2RsZy1yZWYnKTsKICAgIGVpblNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5j dGlvbigpIHsKICAgICAgICByZWZEZC5kaXNhYmxlZCA9IChlaW5TZWwudmFsdWUgPT09ICd1bnRl bicpOwogICAgfSk7CgogICAgLy8gVkkzLURHTC1DaGVja2JveCBibGVpYnQgZnVlciBhbGxlIEZ1 bmt0aW9uZW4gc2ljaHRiYXIgKHNlaXQgMjAyNi0wNS0yMykuCiAgICBlbGRnbFRvZ2dsZUxpc3Rl bmVyQmluZGVuKCk7Cn0KCi8vID09PT09IEFkbWluOiBNYW51ZWxsZSBTb3J0aWVydW5nIChEcmFn ICYgRHJvcCkgPT09PT0KCi8vIExpc3RldCBhbGxlIGFrdGl2ZW4gRnVlaHJ1bmdza3JhZWZ0ZSAo R3J1cHBlbiBB4oCTQyB1bmQgV0QpIHVuZCBlcmxhdWJ0Ci8vIGRlcmVuIE5ldWFub3JkbnVuZyBw ZXIgRHJhZyZEcm9wLiBCZWltIFNwZWljaGVybiB3ZXJkZW4gZGllIFBvc2l0aW9uZW4KLy8gYWxz IDEuLk4gaW4gZGVyIG5ldWVuIFJlaWhlbmZvbGdlIHZlcmdlYmVuIOKAlCBpbm5lcmhhbGIgZWlu ZXIgR3J1cHBlCi8vIHNvcnRpZXJ0IHBlcnNvbmVuTmV1QXVmYmF1ZW4oKSBvaG5laGluIG5hY2gg R3J1cHBlIHByaW1hZXIuCmV4cG9ydCBmdW5jdGlvbiBtYW51ZWxsZVNvcnRpZXJ1bmdEaWFsb2co KSB7CiAgICB2YXIgZXJsYXVidGUgPSBbJ0EnLCAnQicsICdDJywgJ1dEJ107CiAgICB2YXIgZ3J1 cHBlblJhbmcgPSB7fTsKICAgIGVybGF1YnRlLmZvckVhY2goZnVuY3Rpb24oZywgaSkgeyBncnVw cGVuUmFuZ1tnXSA9IGk7IH0pOwogICAgdmFyIHBlcnNvbmVuID0gKFoucGxhbnVuZy5wZXJzb25l biB8fCBbXSkKICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuYWt0aXYgJiYg ZXJsYXVidGUuaW5kZXhPZihwLmdydXBwZSkgPj0gMDsgfSkKICAgICAgICAuc29ydChmdW5jdGlv bihhLCBiKSB7CiAgICAgICAgICAgIHZhciByQSA9IGdydXBwZW5SYW5nW2EuZ3J1cHBlXSwgckIg PSBncnVwcGVuUmFuZ1tiLmdydXBwZV07CiAgICAgICAgICAgIGlmIChyQSAhPT0gckIpIHJldHVy biByQSAtIHJCOwogICAgICAgICAgICByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5KSAtIChiLnBv c2l0aW9uIHx8IDk5OSk7CiAgICAgICAgfSk7CgogICAgdmFyIGtvZXJwZXIgPSAnPHAgc3R5bGU9 Im1hcmdpbjowIDAgMTBweCAwO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2ZvbnQtc2l6ZToxM3B4 Ij5aaWVoZSBQZXJzb25lbiBhbSDimLAtR3JpZmYgaW4gZGllIGdld8O8bnNjaHRlIFJlaWhlbmZv bGdlIOKAlCBvZGVyIG51dHplIOKWsiAvIOKWvCBuZWJlbiBqZWRlciBaZWlsZSAoVGFzdGF0dXIt VmFyaWFudGUpLiDigJ5TcGVpY2hlcm4iIMO8YmVybmltbXQgZGllIG5ldWUgUmFuZ2ZvbGdlLicg KwogICAgICAgIGhpbGZlSWNvbignRGllIFJlaWhlbmZvbGdlIGJlc3RpbW10IG51ciBkaWUgQW56 ZWlnZSBpbiBkZXIgUGxhbnRhZmVsIHVuZCBpbSBXb2NoZW5wbGFuLCBuaWNodCBkaWUgZmFjaGxp Y2hlIFJhbmdvcmRudW5nIChGdW5rdGlvbikuIERpZSBQb3NpdGlvbnMtWmFobGVuIGF1cyBkZW0g RXhjZWwtSW1wb3J0IGJsZWliZW4gZXJoYWx0ZW4g4oCUIHNpZSB3ZXJkZW4gbnVyIG5ldSB6dWdl b3JkbmV0LCBzb2Rhc3MgZGllIFNvcnRpZXJ1bmcgZGVpbmVyIERyYWcmRHJvcC1SZWloZW5mb2xn ZSBlbnRzcHJpY2h0LicpICsKICAgICAgICAnPC9wPicgKwogICAgICAgICc8ZGl2IGlkPSJtcy1s aXN0ZSIgY2xhc3M9Im1zLWxpc3RlIj4nOwogICAgcGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihw KSB7CiAgICAgICAgdmFyIGcgPSBaLmdydXBwZW5NYXBbcC5ncnVwcGVdIHx8IHt9OwogICAgICAg IHZhciBkaWVuc3RncmFkID0gcC5kaWVuc3RncmFkID8gZXNjYXBlSFRNTChwLmRpZW5zdGdyYWQp ICsgJyAnIDogJyc7CiAgICAgICAga29lcnBlciArPSAnPGRpdiBjbGFzcz0ibXMtemVpbGUiIGRy YWdnYWJsZT0idHJ1ZSIgZGF0YS1pZD0iJyArIHAuaWQgKyAnIj4nICsKICAgICAgICAgICAgJzxz cGFuIGNsYXNzPSJtcy1ncmlmZiIgdGl0bGU9IlppZWhlbiI+4piwPC9zcGFuPicgKwogICAgICAg ICAgICAnPHNwYW4gY2xhc3M9ImdydXBwZW4tYmFkZ2UiIHN0eWxlPSJiYWNrZ3JvdW5kOicgKyBl c2NhcGVBdHRyKGcuaGludGVyZ3J1bmQgfHwgJyM2NjYnKSArICc7Y29sb3I6JyArIGVzY2FwZUF0 dHIoZy5zY2hyaWZ0IHx8ICcjZmZmJykgKyAnIj4nICsgZXNjYXBlSFRNTChwLmdydXBwZSkgKyAn PC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9Im1zLW5hbWUiPicgKyBkaWVuc3Rn cmFkICsgZXNjYXBlSFRNTChwLm5hbWUpICsgKHAudm9ybmFtZSA/ICcsICcgKyBlc2NhcGVIVE1M KHAudm9ybmFtZSkgOiAnJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9 Im1zLXJhbmciIHRpdGxlPSJBa3R1ZWxsZSBQb3NpdGlvbnMtWmFobCI+UG9zaXRpb24gJyArIChw LnBvc2l0aW9uICE9IG51bGwgPyBwLnBvc2l0aW9uIDogJ+KAlCcpICsgJzwvc3Bhbj4nICsKICAg ICAgICAgICAgLy8gVVgtQXVkaXQgU3ByaW50IDMuNiAoMjAyNi0wNS0yOSk6IFRhc3RhdHVyLUJ1 dHRvbnMgYWxzCiAgICAgICAgICAgIC8vIGExMXktQWx0ZXJuYXRpdmUgenVtIERyYWcmRHJvcC4K ICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ibXMtcGZlaWwiIGRhdGEt cmljaHR1bmc9ImhvY2giIHRpdGxlPSJFaW5lIFBvc2l0aW9uIGhvY2giIGFyaWEtbGFiZWw9IkVp bmUgUG9zaXRpb24gaG9jaCI+4payPC9idXR0b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9Im1zLXBmZWlsIiBkYXRhLXJpY2h0dW5nPSJydW50ZXIiIHRpdGxl PSJFaW5lIFBvc2l0aW9uIHJ1bnRlciIgYXJpYS1sYWJlbD0iRWluZSBQb3NpdGlvbiBydW50ZXIi PuKWvDwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwogICAgfSk7CiAgICBrb2VycGVyICs9 ICc8L2Rpdj4nOwoKICAgIHZhciBmdXNzID0gJzxidXR0b24gY2xhc3M9ImJ0biIgaWQ9Im1zLWFi YnJlY2hlbiI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICc8YnV0dG9uIGNs YXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJtcy1zcGVpY2hlcm4iPlNwZWljaGVybjwvYnV0dG9u Pic7CiAgICBtb2RhbFplaWdlbignTWFudWVsbGUgU29ydGllcnVuZyDigJQgRsO8aHJ1bmdza3LD pGZ0ZSAoQeKAk0MsIFdEKScsIGtvZXJwZXIsIGZ1c3MsIG51bGwpOwoKICAgIHZhciBsaXN0ZSA9 IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtcy1saXN0ZScpOwogICAgdmFyIGdlem9nZW4gPSBu dWxsOwoKICAgIGxpc3RlLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdzdGFydCcsIGZ1bmN0aW9uKGUp IHsKICAgICAgICB2YXIgemVpbGUgPSBlLnRhcmdldC5jbG9zZXN0ID8gZS50YXJnZXQuY2xvc2Vz dCgnLm1zLXplaWxlJykgOiBudWxsOwogICAgICAgIGlmICghemVpbGUpIHJldHVybjsKICAgICAg ICBnZXpvZ2VuID0gemVpbGU7CiAgICAgICAgemVpbGUuY2xhc3NMaXN0LmFkZCgnbXMtZHJhZ2dp bmcnKTsKICAgICAgICB0cnkgeyBlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUn OyBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0L3BsYWluJywgemVpbGUuZ2V0QXR0cmlidXRl KCdkYXRhLWlkJykpOyB9IGNhdGNoIChfKSB7fQogICAgfSk7CiAgICBsaXN0ZS5hZGRFdmVudExp c3RlbmVyKCdkcmFnZW5kJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKGdlem9nZW4pIGdlem9n ZW4uY2xhc3NMaXN0LnJlbW92ZSgnbXMtZHJhZ2dpbmcnKTsKICAgICAgICBnZXpvZ2VuID0gbnVs bDsKICAgIH0pOwogICAgbGlzdGUuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBmdW5jdGlv bihlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGlmICghZ2V6b2dlbikg cmV0dXJuOwogICAgICAgIHZhciB6aWVsID0gZS50YXJnZXQuY2xvc2VzdCA/IGUudGFyZ2V0LmNs b3Nlc3QoJy5tcy16ZWlsZScpIDogbnVsbDsKICAgICAgICBpZiAoIXppZWwgfHwgemllbCA9PT0g Z2V6b2dlbikgcmV0dXJuOwogICAgICAgIHZhciByZWN0ID0gemllbC5nZXRCb3VuZGluZ0NsaWVu dFJlY3QoKTsKICAgICAgICB2YXIgb2JlcmhhbGIgPSAoZS5jbGllbnRZIC0gcmVjdC50b3ApIDwg KHJlY3QuaGVpZ2h0IC8gMik7CiAgICAgICAgaWYgKG9iZXJoYWxiKSB6aWVsLnBhcmVudE5vZGUu aW5zZXJ0QmVmb3JlKGdlem9nZW4sIHppZWwpOwogICAgICAgIGVsc2UgICAgICAgICAgemllbC5w YXJlbnROb2RlLmluc2VydEJlZm9yZShnZXpvZ2VuLCB6aWVsLm5leHRTaWJsaW5nKTsKICAgIH0p OwoKICAgIC8vIFVYLUF1ZGl0IFNwcmludCAzLjYgKDIwMjYtMDUtMjkpOiBUYXN0YXR1ci1OYXZp Z2F0aW9uIHZpYSDilrIv4pa8LUJ1dHRvbnMKICAgIC8vIGFscyBBbHRlcm5hdGl2ZSB6dW0gRHJh ZyZEcm9wIChhMTF5LUFuZm9yZGVydW5nLCBkYSBEcmFnJkRyb3AgZnVlcgogICAgLy8gVGFzdGF0 dXItL1NjcmVlbnJlYWRlci1OdXR6ZXIgbmljaHQgYmVkaWVuYmFyIGlzdCkuCiAgICBsaXN0ZS5h ZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgYnRuID0g ZS50YXJnZXQgJiYgZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRhcmdldC5jbG9zZXN0KCcubXMtcGZl aWwnKTsKICAgICAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAgICAgIHZhciB6ZWlsZSA9IGJ0bi5j bG9zZXN0KCcubXMtemVpbGUnKTsKICAgICAgICBpZiAoIXplaWxlKSByZXR1cm47CiAgICAgICAg dmFyIHJpY2h0dW5nID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1yaWNodHVuZycpOwogICAgICAg IGlmIChyaWNodHVuZyA9PT0gJ2hvY2gnKSB7CiAgICAgICAgICAgIHZhciBwcmV2ID0gemVpbGUu cHJldmlvdXNFbGVtZW50U2libGluZzsKICAgICAgICAgICAgaWYgKHByZXYpIHplaWxlLnBhcmVu dE5vZGUuaW5zZXJ0QmVmb3JlKHplaWxlLCBwcmV2KTsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICB2YXIgbmV4dCA9IHplaWxlLm5leHRFbGVtZW50U2libGluZzsKICAgICAgICAgICAgaWYg KG5leHQpIHplaWxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5leHQsIHplaWxlKTsKICAgICAg ICB9CiAgICAgICAgLy8gRm9rdXMgYXVmIGdsZWljaGVtIEJ1dHRvbiBiZWhhbHRlbiwgZGFtaXQg d2VpdGVyZSDilrIv4pa8LUtsaWNrcwogICAgICAgIC8vIChvZGVyIEVudGVyIHZpYSBLZXlib2Fy ZCkgb2huZSBNYXVzIHdlaXRlcmdlaGVuIGtvZW5uZW4uCiAgICAgICAgdHJ5IHsgYnRuLmZvY3Vz KCk7IH0gY2F0Y2ggKF8pIHt9CiAgICB9KTsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn bXMtYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBtb2RhbFNjaGxpZXNzZW4p OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21zLXNwZWljaGVybicpLmFkZEV2ZW50TGlz dGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gTmV1ZSBET00tUmVpaGVuZm9s Z2UgZWluc2FtbWVsbgogICAgICAgIHZhciBpZHNOZXUgPSBbXTsKICAgICAgICBkb2N1bWVudC5x dWVyeVNlbGVjdG9yQWxsKCcjbXMtbGlzdGUgLm1zLXplaWxlJykuZm9yRWFjaChmdW5jdGlvbihl bCkgewogICAgICAgICAgICBpZHNOZXUucHVzaChwYXJzZUludChlbC5nZXRBdHRyaWJ1dGUoJ2Rh dGEtaWQnKSwgMTApKTsKICAgICAgICB9KTsKICAgICAgICAvLyBCaXNoZXJpZ2UgUG9zaXRpb25z LVphaGxlbiBkZXIgYmV0ZWlsaWd0ZW4gUGVyc29uZW4gKHNvcnRpZXJ0IGF1ZnN0ZWlnZW5kKQog ICAgICAgIC8vIGJsZWliZW4gZXJoYWx0ZW4g4oCUIHNpZSB3ZXJkZW4gbnVyIG5ldSB6dWdlb3Jk bmV0LiBTbyBnZWh0IGRpZSBTdHJ1a3R1cgogICAgICAgIC8vIGF1cyBkZW0gRXhjZWwtSW1wb3J0 ICgxMTEsIDExMiwgMTIxLCAuLi4pIG5pY2h0IHZlcmxvcmVuLgogICAgICAgIHZhciBwb3NpdGlv bmVuQWx0ID0gaWRzTmV1Lm1hcChmdW5jdGlvbihpZCkgewogICAgICAgICAgICB2YXIgcCA9ICha LnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5pZCA9 PT0gaWQ7IH0pOwogICAgICAgICAgICByZXR1cm4gcCAmJiBwLnBvc2l0aW9uICE9IG51bGwgPyBw LnBvc2l0aW9uIDogOTk5OTsKICAgICAgICB9KS5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikg eyByZXR1cm4gYSAtIGI7IH0pOwogICAgICAgIHZhciByZWloZSA9IGlkc05ldS5tYXAoZnVuY3Rp b24oaWQsIGkpIHsKICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBwb3NpdGlvbjogcG9zaXRp b25lbkFsdFtpXSB9OwogICAgICAgIH0pOwogICAgICAgIGFwaVB1dCgnL2FwaS9wZXJzb25lbi9y ZWloZW5mb2xnZScsIHJlaWhlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZWloZS5m b3JFYWNoKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgICAgIHZhciBwID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiB4LmlkID09PSByLmlkOyB9 KTsKICAgICAgICAgICAgICAgIGlmIChwKSBwLnBvc2l0aW9uID0gci5wb3NpdGlvbjsKICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgIG1vZGFsU2NobGllc3NlbigpOwogICAgICAgICAgICBwZXJz b25lbk5ldUF1ZmJhdWVuKCk7CiAgICAgICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsK ICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlvbicpIHsKICAg ICAgICAgICAgICAgIG5hbWVuUmVuZGVybigpOwogICAgICAgICAgICAgICAgZGF0ZW5HcmlkUmVu ZGVybigpOwogICAgICAgICAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICAgICAgfQogICAg ICAgICAgICB0b2FzdCgnUmVpaGVuZm9sZ2UgZ2VzcGVpY2hlcnQgKCcgKyByZWloZS5sZW5ndGgg KyAnIFBlcnNvbmVuKScsICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7 IHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7CiAgICB9KTsKfQoK Ly8gPT09PT0gQWRtaW46IFJhbmcgaW5saW5lIGVkaXRpZXJlbiAobnVyIFN1cGVyVXNlcikgPT09 PT0KCi8vIEVyc2V0enQgZGFzIC5yYW5nLWVkaXQtU3BhbiBkdXJjaCBlaW4gbnVtYmVyLUlucHV0 LiBFbnRlci9CbHVyIHNwZWljaGVydCwKLy8gRXNjYXBlIGJyaWNodCBhYi4gQmVpbSBTcGVpY2hl cm4gd2lyZCBudXIgZGllIFJvaHphaGwgcGVyc2lzdGllcnQg4oCUIGRpZQovLyBTb3J0aWVydW5n IGluIGRlciBQbGFudGFmZWwgZXJnaWJ0IHNpY2ggdWViZXIgcGVyc29uZW5OZXVBdWZiYXVlbigp LgpleHBvcnQgZnVuY3Rpb24gcmFuZ0lubGluZUVkaXQoaWQsIHNwYW4pIHsKICAgIGlmICghWi5y ZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIgcGVyc29uID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkID09PSBpZDsgfSk7 CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGFsdCA9IHBlcnNvbi5wb3NpdGlvbiAh PSBudWxsID8gcGVyc29uLnBvc2l0aW9uIDogJyc7CgogICAgdmFyIGlucHV0ID0gZG9jdW1lbnQu Y3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgIGlucHV0LnR5cGUgPSAnbnVtYmVyJzsKICAgIGlu cHV0Lm1pbiA9ICcwJzsKICAgIGlucHV0LnN0ZXAgPSAnMSc7CiAgICBpbnB1dC52YWx1ZSA9IFN0 cmluZyhhbHQpOwogICAgaW5wdXQuY2xhc3NOYW1lID0gJ3JhbmctZWRpdC1pbnB1dCc7CiAgICBz cGFuLnJlcGxhY2VXaXRoKGlucHV0KTsKICAgIGlucHV0LmZvY3VzKCk7CiAgICBpbnB1dC5zZWxl Y3QoKTsKCiAgICB2YXIgYWJnZXNjaGxvc3NlbiA9IGZhbHNlOwogICAgZnVuY3Rpb24gdWViZXJu ZWhtZW4oKSB7CiAgICAgICAgaWYgKGFiZ2VzY2hsb3NzZW4pIHJldHVybjsKICAgICAgICBhYmdl c2NobG9zc2VuID0gdHJ1ZTsKICAgICAgICB2YXIgdiA9IGlucHV0LnZhbHVlLnRyaW0oKTsKICAg ICAgICB2YXIgbmV1ID0gdiA9PT0gJycgPyBudWxsIDogcGFyc2VJbnQodiwgMTApOwogICAgICAg IGlmICh2ICE9PSAnJyAmJiAoaXNOYU4obmV1KSB8fCBuZXUgPCAwKSkgewogICAgICAgICAgICB0 b2FzdCgnVW5nw7xsdGlnZSBSYW5nemFobCcsICd3YXJudW5nJyk7CiAgICAgICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAg ICBpZiAobmV1ID09PSBhbHQgfHwgKG5ldSA9PSBudWxsICYmIGFsdCA9PT0gJycpKSB7CiAgICAg ICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgcmV0dXJuOwogICAg ICAgIH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IHBvc2l0aW9uOiBu ZXUgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGVyc29uLnBvc2l0aW9uID0gbmV1 OwogICAgICAgICAgICBwZXJzb25lbk5ldUF1ZmJhdWVuKCk7CiAgICAgICAgICAgIHBlcnNvbmFs VGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09 ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgICAgIG5hbWVuUmVuZGVybigpOwogICAgICAgICAg ICAgICAgZGF0ZW5HcmlkUmVuZGVybigpOwogICAgICAgICAgICAgICAga29wZlJlbmRlcm4oKTsK ICAgICAgICAgICAgfQogICAgICAgICAgICB0b2FzdCgnUmFuZyBha3R1YWxpc2llcnQnLCAnZXJm b2xnJyk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAgICB0b2FzdCgn RmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7CiAgICAgICAgICAgIHBlcnNvbmFsVGFi ZWxsZVJlbmRlcm4oKTsKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGFiYnJlY2hlbigp IHsKICAgICAgICBpZiAoYWJnZXNjaGxvc3NlbikgcmV0dXJuOwogICAgICAgIGFiZ2VzY2hsb3Nz ZW4gPSB0cnVlOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgIH0KCiAgICBp bnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGlm IChlLmtleSA9PT0gJ0VudGVyJykgICAgICAgeyBlLnByZXZlbnREZWZhdWx0KCk7IHVlYmVybmVo bWVuKCk7IH0KICAgICAgICBlbHNlIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHsgZS5wcmV2ZW50 RGVmYXVsdCgpOyBhYmJyZWNoZW4oKTsgfQogICAgfSk7CiAgICBpbnB1dC5hZGRFdmVudExpc3Rl bmVyKCdibHVyJywgdWViZXJuZWhtZW4pOwp9CgovLyA9PT09PSBBZG1pbjogRGllbnN0Z3JhZCBp bmxpbmUgZWRpdGllcmVuIChudXIgU3VwZXJVc2VyKSA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGRp ZW5zdGdyYWRJbmxpbmVFZGl0KGlkLCBzcGFuKSB7CiAgICBpZiAoIVoucmVjaHRlLmlzdFN1cGVy VXNlcikgcmV0dXJuOwogICAgdmFyIHBlcnNvbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10p LmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5pZCA9PT0gaWQ7IH0pOwogICAgaWYgKCFwZXJz b24pIHJldHVybjsKICAgIHZhciBhbHQgPSBwZXJzb24uZGllbnN0Z3JhZCB8fCAnJzsKCiAgICB2 YXIgc2VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7CiAgICBzZWwuY2xhc3NO YW1lID0gJ2RpZW5zdGdyYWQtZWRpdC1pbnB1dCc7CiAgICB2YXIgbGVlck9wdCA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgbGVlck9wdC52YWx1ZSA9ICcnOwogICAgbGVl ck9wdC50ZXh0Q29udGVudCA9ICfigJQgb2huZSDigJQnOwogICAgaWYgKCFhbHQpIGxlZXJPcHQu c2VsZWN0ZWQgPSB0cnVlOwogICAgc2VsLmFwcGVuZENoaWxkKGxlZXJPcHQpOwogICAgZ2V0RGll bnN0Z3JhZGUoKS5mb3JFYWNoKGZ1bmN0aW9uKGcpIHsKICAgICAgICB2YXIgbyA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwogICAgICAgIG8udmFsdWUgPSBnOwogICAgICAgIG8u dGV4dENvbnRlbnQgPSBnOwogICAgICAgIGlmIChnID09PSBhbHQpIG8uc2VsZWN0ZWQgPSB0cnVl OwogICAgICAgIHNlbC5hcHBlbmRDaGlsZChvKTsKICAgIH0pOwogICAgc3Bhbi5yZXBsYWNlV2l0 aChzZWwpOwogICAgc2VsLmZvY3VzKCk7CgogICAgdmFyIGFiZ2VzY2hsb3NzZW4gPSBmYWxzZTsK ICAgIGZ1bmN0aW9uIHVlYmVybmVobWVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9zc2VuKSBy ZXR1cm47CiAgICAgICAgYWJnZXNjaGxvc3NlbiA9IHRydWU7CiAgICAgICAgdmFyIG5ldSA9IHNl bC52YWx1ZSB8fCAnJzsKICAgICAgICBpZiAobmV1ID09PSBhbHQpIHsgcGVyc29uYWxUYWJlbGxl UmVuZGVybigpOyByZXR1cm47IH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlk LCB7IGRpZW5zdGdyYWQ6IG5ldSB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBwZXJz b24uZGllbnN0Z3JhZCA9IG5ldTsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigp OwogICAgICAgICAgICBpZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgbmFt ZW5SZW5kZXJuKCk7CiAgICAgICAgICAgIHRvYXN0KG5ldSA/ICgnRGllbnN0Z3JhZDogJyArIG5l dSkgOiAnRGllbnN0Z3JhZCBlbnRmZXJudCcsICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChm dW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdm ZWhsZXInKTsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgIH0p OwogICAgfQogICAgZnVuY3Rpb24gYWJicmVjaGVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9z c2VuKSByZXR1cm47CiAgICAgICAgYWJnZXNjaGxvc3NlbiA9IHRydWU7CiAgICAgICAgcGVyc29u YWxUYWJlbGxlUmVuZGVybigpOwogICAgfQogICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5n ZScsIHVlYmVybmVobWVuKTsKICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgdWViZXJu ZWhtZW4pOwogICAgc2VsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7 CiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykgeyBlLnByZXZlbnREZWZhdWx0KCk7IGFi YnJlY2hlbigpOyB9CiAgICB9KTsKfQoKLy8gPT09PT0gQWRtaW46IEZ1bmt0aW9uIGlubGluZSBl ZGl0aWVyZW4gKG51ciBTdXBlclVzZXIpID09PT09CgovLyBFcnNldHp0IGRhcyAuZnVua3Rpb24t ZWRpdC1TcGFuIGR1cmNoIGVpbiBEcm9wZG93bi4gQ2hhbmdlL0JsdXIgc3BlaWNoZXJ0LAovLyBF c2NhcGUgYnJpY2h0IGFiLiBBZW5kZXJ1bmcgZ3JlaWZ0IGRpcmVrdCBpbiBkZ2xzSW5TY2hpY2h0 KCkg4oCUIGRpZSBQbGFuLQovLyB0YWZlbCB1bmQgQmVzZXR6dW5nc2tvbnRyb2xsZSByZWNobmVu IGF1dG9tYXRpc2NoIG5hY2guCmV4cG9ydCBmdW5jdGlvbiBmdW5rdGlvbklubGluZUVkaXQoaWQs IHNwYW4pIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGFs dCA9IHBlcnNvbi5mdW5rdGlvbiB8fCAnJzsKCiAgICB2YXIgc2VsID0gZG9jdW1lbnQuY3JlYXRl RWxlbWVudCgnc2VsZWN0Jyk7CiAgICBzZWwuY2xhc3NOYW1lID0gJ2Z1bmt0aW9uLWVkaXQtaW5w dXQnOwogICAgdmFyIGxlZXJPcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsK ICAgIGxlZXJPcHQudmFsdWUgPSAnJzsKICAgIGxlZXJPcHQudGV4dENvbnRlbnQgPSAn4oCUIG9o bmUg4oCUJzsKICAgIGlmICghYWx0KSBsZWVyT3B0LnNlbGVjdGVkID0gdHJ1ZTsKICAgIHNlbC5h cHBlbmRDaGlsZChsZWVyT3B0KTsKICAgIGdldEZ1bmt0aW9uZW4oKS5mb3JFYWNoKGZ1bmN0aW9u KGYpIHsKICAgICAgICB2YXIgbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwog ICAgICAgIG8udmFsdWUgPSBmLmNvZGU7CiAgICAgICAgby50ZXh0Q29udGVudCA9IGYuY29kZTsK ICAgICAgICBpZiAoZi5jb2RlID09PSBhbHQpIG8uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIHNl bC5hcHBlbmRDaGlsZChvKTsKICAgIH0pOwogICAgc3Bhbi5yZXBsYWNlV2l0aChzZWwpOwogICAg c2VsLmZvY3VzKCk7CgogICAgdmFyIGFiZ2VzY2hsb3NzZW4gPSBmYWxzZTsKICAgIGZ1bmN0aW9u IHVlYmVybmVobWVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9zc2VuKSByZXR1cm47CiAgICAg ICAgYWJnZXNjaGxvc3NlbiA9IHRydWU7CiAgICAgICAgdmFyIG5ldSA9IHNlbC52YWx1ZSB8fCAn JzsKICAgICAgICBpZiAobmV1ID09PSBhbHQpIHsgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOyBy ZXR1cm47IH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IGZ1bmt0aW9u OiBuZXUgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGVyc29uLmZ1bmt0aW9uID0g bmV1OwogICAgICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICAgICAgICAgIHRv YXN0KG5ldSA/ICgnRnVua3Rpb24gZ2VzZXR6dDogJyArIG5ldSkgOiAnRnVua3Rpb24gZW50ZmVy bnQnLCAnZXJmb2xnJyk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgICAg ICB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7CiAgICAgICAgICAgIHBl cnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGFi YnJlY2hlbigpIHsKICAgICAgICBpZiAoYWJnZXNjaGxvc3NlbikgcmV0dXJuOwogICAgICAgIGFi Z2VzY2hsb3NzZW4gPSB0cnVlOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAg IH0KICAgIHNlbC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1ZWJlcm5laG1lbik7CiAgICBz ZWwuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIHVlYmVybmVobWVuKTsKICAgIHNlbC5hZGRFdmVu dExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgIGlmIChlLmtleSA9PT0g J0VzY2FwZScpIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyBhYmJyZWNoZW4oKTsgfQogICAgfSk7Cn0K Ci8vID09PT09IEFkbWluOiBBbnNwcmVjaHBhcnRuZXItRmxhZyBpbmxpbmUgdG9nZ2xlbiAoU3Vw ZXJVc2VyIG9ubHkpID09PT09Ci8vCi8vIEtsaWNrIGF1ZiBkYXMgU3ltYm9sIGluIGRlciBTcGFs dGUg4oCeQW5zcHJlY2hwYXJ0bmVyIiB0b2dnbGV0IGRhcyBGbGFnCi8vIHAuaXN0QW5zcHJlY2hw YXJ0bmVyLiBTZWl0IDIwMjYtMDUtMjUgb2huZSBGdW5rdGlvbnMtL0RpZW5zdGdydXBwZW4tCi8v IEdhdGluZyDigJQgamVkZSBQZXJzb24ga2FubiB0aGVvcmV0aXNjaCBhbHMgQW5zcHJlY2hwYXJ0 bmVyIGJlbmFubnQgd2VyZGVuLgpleHBvcnQgZnVuY3Rpb24gYW5zcHJlY2hwYXJ0bmVySW5saW5l VG9nZ2xlKGlkKSB7CiAgICBpZiAoIVoucmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuOwogICAg dmFyIHBlcnNvbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZpbmQoZnVuY3Rpb24ocCkg eyByZXR1cm4gcC5pZCA9PT0gaWQ7IH0pOwogICAgaWYgKCFwZXJzb24pIHJldHVybjsKICAgIHZh ciBuZXUgPSAhcGVyc29uLmlzdEFuc3ByZWNocGFydG5lcjsKICAgIGFwaVB1dCgnL2FwaS9wZXJz b25lbi8nICsgaWQsIHsgaXN0QW5zcHJlY2hwYXJ0bmVyOiBuZXUgfSkudGhlbihmdW5jdGlvbigp IHsKICAgICAgICBwZXJzb24uaXN0QW5zcHJlY2hwYXJ0bmVyID0gbmV1OwogICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICB0b2FzdChuZXUgPyAnQWxzIEFuc3ByZWNocGFy dG5lciBtYXJraWVydCcgOiAnQW5zcHJlY2hwYXJ0bmVyLU1hcmtpZXJ1bmcgZW50ZmVybnQnLCAn ZXJmb2xnJyk7CiAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgdG9hc3QoJ0ZlaGxl cjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRl cm4oKTsKICAgIH0pOwp9CgovLyA9PT09PSBBZG1pbjogUGVyc29uIGF1cyBkZXIgUGxhbnVuZyBl aW4tL2F1c2JsZW5kZW4gKFN1cGVyVXNlcikgPT09PT0KCi8vIFByby1QZXJzb24tU2ljaHRiYXJr ZWl0IGluIFBsYW51bmdzYW5zaWNodC9Xb2NoZW5wbGFuL1BlcnMuIFBsYW4uIFNldHp0Ci8vIHBl cnNvbi5pblBsYW51bmcgKGZhbHNlID0gYXVzZ2VibGVuZGV0KSB1bmQgYmF1dCBkaWUgUGVyc29u ZW5saXN0ZSArCi8vIGRhcyBHcmlkIG5ldSBhdWYsIGRhbWl0IGRpZSBQZXJzb24gc29mb3J0IGVy c2NoZWludC92ZXJzY2h3aW5kZXQuCmV4cG9ydCBmdW5jdGlvbiBpblBsYW51bmdJbmxpbmVUb2dn bGUoaWQpIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIG5l dVNpY2h0YmFyID0gcGVyc29uLmluUGxhbnVuZyA9PT0gZmFsc2U7ICAgLy8gYWt0dWVsbCBhdXNn ZWJsZW5kZXQgLT4gd2llZGVyIGVpbmJsZW5kZW4KICAgIHZhciBuZXVJblBsYW51bmcgPSAhIW5l dVNpY2h0YmFyOyAgICAgICAgICAgICAgIC8vIHRydWUgPSBzaWNodGJhciwgZmFsc2UgPSBhdXNn ZWJsZW5kZXQKICAgIGFwaVB1dCgnL2FwaS9wZXJzb25lbi8nICsgaWQsIHsgaW5QbGFudW5nOiBu ZXVJblBsYW51bmcgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICBwZXJzb24uaW5QbGFudW5n ID0gbmV1SW5QbGFudW5nOwogICAgICAgIHBlcnNvbmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAg ICAvLyBQbGFudW5ncy1HcmlkIG5ldSBhdWZiYXVlbiDigJQgUGVyc29uIGVyc2NoZWludC92ZXJz Y2h3aW5kZXQgc29mb3J0LgogICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICBp ZiAodHlwZW9mIG5hbWVuUmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgeyBuYW1lblJlbmRlcm4oKTsg ZGF0ZW5HcmlkUmVuZGVybigpOyBrb3BmUmVuZGVybigpOyB9CiAgICAgICAgdG9hc3QobmV1SW5Q bGFudW5nID8gJ1BlcnNvbiB3aXJkIGluIGRlciBQbGFudW5nIGFuZ2V6ZWlndCcgOiAnUGVyc29u IGluIGRlciBQbGFudW5nIGF1c2dlYmxlbmRldCcsICdlcmZvbGcnKTsKICAgIH0pLmNhdGNoKGZ1 bmN0aW9uKGUpIHsKICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVy Jyk7CiAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgfSk7Cn0KCi8vID09PT09 IEFkbWluOiBWSTMgREdMIGlubGluZSB0b2dnbGVuIChTdXBlclVzZXIsIGZ1ZXIgYWxsZSBQZXJz b25lbikgPT09PT0KCi8vIEJvb2wtSW5saW5lLUVkaXQgb2huZSBFZGl0LU1vZHVzOiBTaW5nbGUt S2xpY2sgYXVmIGRhcyBTeW1ib2wgdG9nZ2xldAovLyBkYXMgYGVsRGdsUXVhbGlmaXppZXJ0YC1G bGFnIGRlciBQZXJzb24sIHNwZWljaGVydCB2aWEgUFVUIHVuZCByZW5kZXJ0Ci8vIGRpZSBUYWJl bGxlIG5ldS4gRnJ1ZWhlciBudXIgZnVlciAzLiBNYW5uL0ZyYXUsIHNlaXQgMjAyNi0wNS0yMyBm dWVyCi8vIGFsbGUgUGVyc29uZW4gKGF1Y2ggREdML0RHTGluL0F0LURHTC9XREYgbXVlc3NlbiBl eHBsaXppdCBxdWFsaWZpemllcnQKLy8gd2VyZGVuLCB3ZW5uIGRhcyBnZXd1ZW5zY2h0IGlzdCDi gJQgSW1wbGljaXQtREdMLUxvZ2lrIGluCi8vIGlzdERnbFF1YWxpZml6aWVydCgpIGJsZWlidCBh YmVyIGFscyBGYWxsYmFjayBiZXN0ZWhlbikuCmV4cG9ydCBmdW5jdGlvbiBlbGRnbElubGluZVRv Z2dsZShpZCkgewogICAgaWYgKCFaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIHZh ciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHApIHsg cmV0dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSByZXR1cm47CiAgICB2YXIg bmV1ID0gIXBlcnNvbi5lbERnbFF1YWxpZml6aWVydDsKICAgIGFwaVB1dCgnL2FwaS9wZXJzb25l bi8nICsgaWQsIHsgZWxEZ2xRdWFsaWZpemllcnQ6IG5ldSB9KS50aGVuKGZ1bmN0aW9uKCkgewog ICAgICAgIHBlcnNvbi5lbERnbFF1YWxpZml6aWVydCA9IG5ldTsKICAgICAgICBwZXJzb25hbFRh YmVsbGVSZW5kZXJuKCk7CiAgICAgICAgdG9hc3QobmV1ID8gJ1ZJMyBER0wgcXVhbGlmaXppZXJ0 JyA6ICdWSTMgREdMIFF1YWxpZml6aWVydW5nIGVudGZlcm50JywgJ2VyZm9sZycpOwogICAgfSku Y2F0Y2goZnVuY3Rpb24oZSkgewogICAgICAgIHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2Us ICdmZWhsZXInKTsKICAgICAgICBwZXJzb25hbFRhYmVsbGVSZW5kZXJuKCk7CiAgICB9KTsKfQoK Ly8gYXZhdGFyVXJsIC8gYXZhdGFySW5pdGlhbGVuIC8gYXZhdGFyS3JlaXNIdG1sIGxlYmVuIGlu IGNvcmVfdXRpbC5qcywKLy8gZGFtaXQgZ3JpZF9yZW5kZXIuanMgLyB3b2NoZW5wbGFuLmpzIHNp ZSBlYmVuZmFsbHMgbnV0emVuIGtvZW5uZW4uCgovLyA9PT09PSBQZXJzb24tSG92ZXItUG9wb3Zl ciA9PT09PQovLyBTY2h3ZWJlbmRlcyBNaW5pLU1vZGFsIG1pdCBBdmF0YXIsIFN0YW1tZGF0ZW4g KyAxNC1UYWdlLVNjaGljaHQtVm9yc2NoYXUuCi8vIFdpcmQgZHVyY2ggbW91c2VvdmVyIGF1ZiAu bmFtZW4temVpbGUgLyAucGVyc29uYWwtbmFtZS16ZWxsZSAvIFdvY2hlbi0KLy8gcGxhbi1OYW1l bnMtRWxlbWVudGUgZ2V0cmlnZ2VydCAoRXZlbnQtRGVsZWdhdGlvbiBpbiBhcHAuanMpLiBTaW5n bGUtCi8vIEluc3RhbnogaW0gQm9keSwgbmV1IGJlZnVlbGx0ICsgcG9zaXRpb25pZXJ0IGJlaSBq ZWRlbSBUcmlnZ2VyLgoKdmFyIHBwX3plaWdlVGltZXIgPSBudWxsOwp2YXIgcHBfdmVyc3RlY2tU aW1lciA9IG51bGw7CgpmdW5jdGlvbiBwcF9uYWVjaHN0ZTE0VGFnZSgpIHsKICAgIHZhciB0YWdl ID0gW107CiAgICB2YXIgaGV1dGUgPSBuZXcgRGF0ZSgpOwogICAgaGV1dGUuc2V0SG91cnMoMCwg MCwgMCwgMCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE0OyBpKyspIHsKICAgICAgICB2YXIg ZCA9IG5ldyBEYXRlKGhldXRlLmdldFRpbWUoKSArIGkgKiA4NjQwMDAwMCk7CiAgICAgICAgdGFn ZS5wdXNoKGQpOwogICAgfQogICAgcmV0dXJuIHRhZ2U7Cn0KCmZ1bmN0aW9uIHBwX2h0bWwocGVy c29uKSB7CiAgICB2YXIgZGcgICA9IHBlcnNvbi5kaWVuc3RncmFkIHx8ICcnOwogICAgdmFyIG5h bWUgPSAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIHBlcnNvbi5uYW1lKS50cmltKCk7 CiAgICB2YXIgZmt0ICA9IHBlcnNvbi5mdW5rdGlvbiB8fCAn4oCUJzsKICAgIC8vIERpZW5zdGdy dXBwZW4tQmV6ZWljaG51bmcgc3RhdHQgbnVyIEt1ZXJ6ZWwgKCJBIiAtPiAiR3J1cHBlIEEg4oCU IFdlc3RmYWxlbiBOb3JkIiBvLmFlLikKICAgIHZhciBncnVwcGUgPSBwZXJzb24uZ3J1cHBlIHx8 ICcnOwogICAgdmFyIGdydXBwZUFueiA9IGdydXBwZTsKICAgIGlmIChncnVwcGUgJiYgWi5ncnVw cGVuTWFwICYmIFouZ3J1cHBlbk1hcFtncnVwcGVdICYmIFouZ3J1cHBlbk1hcFtncnVwcGVdLmJl emVpY2hudW5nKSB7CiAgICAgICAgZ3J1cHBlQW56ID0gZ3J1cHBlICsgJyDigJQgJyArIFouZ3J1 cHBlbk1hcFtncnVwcGVdLmJlemVpY2hudW5nOwogICAgfQogICAgaWYgKCFncnVwcGVBbnopIGdy dXBwZUFueiA9ICfigJQnOwogICAgLy8gU3RhbmRvcnQtS3VlcnplbCAtPiBWb2xsZXIgTmFtZSAo VXNlci1GZWVkYmFjayAyMDI2LTA1LTIzKTogIkFSIiAtPiAiQXJuc2JlcmciLgogICAgdmFyIG9l S3VlcnplbCA9IHBlcnNvbi5vZSB8fCAnJzsKICAgIHZhciBvZUFueiA9IG9lS3VlcnplbDsKICAg IGlmIChvZUt1ZXJ6ZWwgJiYgWi5hZG1pbiAmJiBaLmFkbWluLnN0YW5kb3J0ZSkgewogICAgICAg IHZhciBzdCA9IFouYWRtaW4uc3RhbmRvcnRlLmZpbmQoZnVuY3Rpb24ocykgewogICAgICAgICAg ICByZXR1cm4gKHMua3VlcnplbCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gb2VLdWVyemVsLnRv TG93ZXJDYXNlKCk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKHN0ICYmIHN0Lm5hbWUpIG9lQW56 ID0gc3QubmFtZTsKICAgIH0KICAgIGlmICghb2VBbnopIG9lQW56ID0gJ+KAlCc7CiAgICB2YXIg dGVsICA9IHBlcnNvbi50ZWxlZm9uIHx8ICcnOwoKICAgIHZhciBoZXV0ZVRzID0gbmV3IERhdGUo bmV3IERhdGUoKS5zZXRIb3VycygwLDAsMCwwKSkuZ2V0VGltZSgpOwogICAgdmFyIHRhZ2VIdG1s ID0gcHBfbmFlY2hzdGUxNFRhZ2UoKS5tYXAoZnVuY3Rpb24oZCkgewogICAgICAgIHZhciBkU3Ry ID0gZGF0dW1TdHIoZCk7CiAgICAgICAgdmFyIGUgPSAoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7 fSlbZFN0cl0gfHwge307CiAgICAgICAgdmFyIGNvZGUgPSBlW1N0cmluZyhwZXJzb24uaWQpXSB8 fCAnJzsKICAgICAgICB2YXIgZmFyYmVuID0gKFouY29kZU1hcCB8fCB7fSlbY29kZV0gfHwge307 CiAgICAgICAgdmFyIGJnID0gZmFyYmVuLmhpbnRlcmdydW5kIHx8ICcnOwogICAgICAgIHZhciBm ZyA9IGZhcmJlbi5zY2hyaWZ0IHx8ICcnOwogICAgICAgIHZhciB3dCA9IFsnU28nLCdNbycsJ0Rp JywnTWknLCdEbycsJ0ZyJywnU2EnXVtkLmdldERheSgpXTsKICAgICAgICB2YXIgaXN0V0UgPSAo ZC5nZXREYXkoKSA9PT0gMCB8fCBkLmdldERheSgpID09PSA2KTsKICAgICAgICB2YXIgZGQgPSAo JzAnICsgZC5nZXREYXRlKCkpLnNsaWNlKC0yKTsKICAgICAgICB2YXIgbW0gPSAoJzAnICsgKGQu Z2V0TW9udGgoKSArIDEpKS5zbGljZSgtMik7CiAgICAgICAgdmFyIGlzdEhldXRlID0gKGQuZ2V0 VGltZSgpID09PSBoZXV0ZVRzKTsKICAgICAgICB2YXIgYW56ZWlnZSA9IGZhcmJlbi5rdWVyemVs IHx8IGNvZGUgfHwgJ+KAlCc7CiAgICAgICAgdmFyIGNvZGVTdHlsZSA9ICcnOwogICAgICAgIGlm IChiZykgY29kZVN0eWxlID0gJ2JhY2tncm91bmQ6JyArIGVzY2FwZUF0dHIoYmcpICsgJztjb2xv cjonICsgZXNjYXBlQXR0cihmZyB8fCAnIzAwMCcpOwogICAgICAgIHZhciBjbHMgPSAncHB2LXRh Zyc7CiAgICAgICAgaWYgKGlzdEhldXRlKSBjbHMgKz0gJyBwcHYtdGFnLWhldXRlJzsKICAgICAg ICBpZiAoaXN0V0UpICAgIGNscyArPSAnIHBwdi10YWctd2UnOwogICAgICAgIGlmICghY29kZSkg ICAgY2xzICs9ICcgcHB2LXRhZy1sZWVyJzsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9Iicg KyBjbHMgKyAnIj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJwcHYtdGFnLXd0Ij4nICsg d3QgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InBwdi10YWctZGF0dW0i PicgKyBkZCArICcuJyArIG1tICsgJy48L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFz cz0icHB2LXRhZy1jb2RlIiBzdHlsZT0iJyArIGNvZGVTdHlsZSArICciPicgKyBlc2NhcGVIVE1M KGFuemVpZ2UpICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9kaXY+JzsKICAgIH0pLmpvaW4oJycp OwoKICAgIHJldHVybiAnPGRpdiBjbGFzcz0icHB2LWtvcGYiPicgKwogICAgICAgICAgICAnPGRp diBjbGFzcz0icHB2LWF2YXRhciI+JyArIGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDU2KSArICc8 L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwdi1rb3BmLXRleHQiPicgKwogICAg ICAgICAgICAgICAgJzxkaXYgY2xhc3M9InBwdi1uYW1lIj4nICsgKGRnID8gZXNjYXBlSFRNTChk ZykgKyAnICcgOiAnJykgKyBlc2NhcGVIVE1MKG5hbWUpICsgJzwvZGl2PicgKwogICAgICAgICAg ICAgICAgJzxkaXYgY2xhc3M9InBwdi1tZXRhIj4nICsgZXNjYXBlSFRNTChma3QpICsgJyDCtyAn ICsgZXNjYXBlSFRNTChncnVwcGVBbnopICsgKG9lQW56ICE9PSAn4oCUJyA/ICcgwrcgJyArIGVz Y2FwZUhUTUwob2VBbnopIDogJycpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgKHRlbCA/ ICc8ZGl2IGNsYXNzPSJwcHYtbWV0YSI+VGVsLiAnICsgZXNjYXBlSFRNTCh0ZWwpICsgJzwvZGl2 PicgOiAnJykgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAg ICAgICc8ZGl2IGNsYXNzPSJwcHYtdGFnZS10aXRlbCI+TsOkY2hzdGUgMTQgVGFnZTwvZGl2Picg KwogICAgICAgICc8ZGl2IGNsYXNzPSJwcHYtdGFnZSI+JyArIHRhZ2VIdG1sICsgJzwvZGl2Pic7 Cn0KCmZ1bmN0aW9uIHBwX3Bvc2l0aW9uaWVyZW4ocG9wb3ZlciwgYW5rZXIpIHsKICAgIHZhciBh ciA9IGFua2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHZ3ID0gd2luZG93Lmlu bmVyV2lkdGg7CiAgICB2YXIgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAvLyBQb3BvdmVy IHVuc2ljaHRiYXIgbWVzc2VuLCBkYW5uIHBvc2l0aW9uaWVyZW4KICAgIHBvcG92ZXIuY2xhc3NM aXN0LnJlbW92ZSgndmVyc3RlY2t0Jyk7CiAgICBwb3BvdmVyLnN0eWxlLnZpc2liaWxpdHkgPSAn aGlkZGVuJzsKICAgIHZhciBwdyA9IHBvcG92ZXIub2Zmc2V0V2lkdGg7CiAgICB2YXIgcGggPSBw b3BvdmVyLm9mZnNldEhlaWdodDsKICAgIHZhciByYW5kID0gODsKICAgIC8vIEJldm9yenVndCBy ZWNodHMgbmViZW4gZGVtIEFua2VyLCBzb25zdCBsaW5rcwogICAgdmFyIGxlZnQgPSBhci5yaWdo dCArIHJhbmQ7CiAgICBpZiAobGVmdCArIHB3ID4gdncgLSA2KSBsZWZ0ID0gYXIubGVmdCAtIHB3 IC0gcmFuZDsKICAgIGlmIChsZWZ0IDwgNikgbGVmdCA9IDY7CiAgICAvLyBWZXJ0aWthbDogdG9w IGFtIEFua2VyLCBhYmVyIG5pY2h0IGFiZ2VzY2huaXR0ZW4KICAgIHZhciB0b3AgPSBhci50b3A7 CiAgICBpZiAodG9wICsgcGggPiB2aCAtIDYpIHRvcCA9IHZoIC0gcGggLSA2OwogICAgaWYgKHRv cCA8IDYpIHRvcCA9IDY7CiAgICBwb3BvdmVyLnN0eWxlLmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQp ICsgJ3B4JzsKICAgIHBvcG92ZXIuc3R5bGUudG9wICA9IE1hdGgucm91bmQodG9wKSAgKyAncHgn OwogICAgcG9wb3Zlci5zdHlsZS52aXNpYmlsaXR5ID0gJyc7Cn0KCmV4cG9ydCBmdW5jdGlvbiBw ZXJzb25Qb3BvdmVyWmVpZ2VuKHBlcnNvbklkLCBhbmtlckVsKSB7CiAgICBpZiAocHBfdmVyc3Rl Y2tUaW1lcikgeyBjbGVhclRpbWVvdXQocHBfdmVyc3RlY2tUaW1lcik7IHBwX3ZlcnN0ZWNrVGlt ZXIgPSBudWxsOyB9CiAgICBpZiAocHBfemVpZ2VUaW1lcikgICB7IGNsZWFyVGltZW91dChwcF96 ZWlnZVRpbWVyKTsgcHBfemVpZ2VUaW1lciA9IG51bGw7IH0KICAgIHBwX3plaWdlVGltZXIgPSBz ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHBwX3plaWdlVGltZXIgPSBudWxsOwogICAg ICAgIHZhciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9u KHApIHsgcmV0dXJuIFN0cmluZyhwLmlkKSA9PT0gU3RyaW5nKHBlcnNvbklkKTsgfSk7CiAgICAg ICAgaWYgKCFwZXJzb24pIHJldHVybjsKICAgICAgICB2YXIgcG9wID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3ZpMy1wZXJzb24tcG9wb3ZlcicpOwogICAgICAgIGlmICghcG9wKSByZXR1cm47 CiAgICAgICAgcG9wLmlubmVySFRNTCA9IHBwX2h0bWwocGVyc29uKTsKICAgICAgICBwb3Auc2V0 QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICdmYWxzZScpOwogICAgICAgIHBwX3Bvc2l0aW9uaWVy ZW4ocG9wLCBhbmtlckVsKTsKICAgIH0sIDM4MCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBwZXJzb25Q b3BvdmVyVmVyc3RlY2tlbigpIHsKICAgIGlmIChwcF96ZWlnZVRpbWVyKSB7IGNsZWFyVGltZW91 dChwcF96ZWlnZVRpbWVyKTsgcHBfemVpZ2VUaW1lciA9IG51bGw7IH0KICAgIGlmIChwcF92ZXJz dGVja1RpbWVyKSBjbGVhclRpbWVvdXQocHBfdmVyc3RlY2tUaW1lcik7CiAgICBwcF92ZXJzdGVj a1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcG9wID0gZG9jdW1l bnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpMy1wZXJzb24tcG9wb3ZlcicpOwogICAgICAgIGlmIChwb3Ap IHsKICAgICAgICAgICAgcG9wLmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAgICAg ICBwb3Auc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgICAgICAgfQogICAg fSwgMTIwKTsKfQoKLy8gU2VsZi1TZXJ2aWNlOiBrbGVpbmVzIE1pbmktTW9kYWwgbnVyIGZ1ZXIg ZGVuIEF2YXRhci1CbG9jayBkZXIgZWlnZW5lbgovLyBQZXJzb24uIFdpcmQgdm9tICJtZWluLWF2 YXRhci1idG4iIGluIGRlciBUb3BiYXIgZ2V0cmlnZ2VydC4gU2VydmVyLQovLyBzZWl0aWcgaGFi ZW4gYWxsZSBVc2VyIGRhcyBSZWNodCwgaWhyZW4gZWlnZW5lbiBBdmF0YXIgenUgcGZsZWdlbgov LyAoUE9TVCAvYXBpL3BlcnNvbmVuLzxlaWdlbmVJZD4vYXZhdGFyIOKAlCBDaGVjayB2aWEgbWVp bmVQZXJzb25JZCkuCmV4cG9ydCBmdW5jdGlvbiBtZWluUHJvZmlsTW9kYWxPZWZmbmVuKCkgewog ICAgaWYgKCFaLnJlY2h0ZSB8fCAhWi5yZWNodGUubWVpbmVQZXJzb25JZCkgewogICAgICAgIHRv YXN0KCdFaWdlbmUgUGVyc29uIG5pY2h0IHp1Z2VvcmRuZXQg4oCUIFByb2ZpbGJpbGQga2FubiBu aWNodCBnZXBmbGVndCB3ZXJkZW4nLCAnd2FybnVuZycpOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIHZhciBpZCA9IFoucmVjaHRlLm1laW5lUGVyc29uSWQ7CiAgICB2YXIgcGVyc29uID0gKFou cGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBTdHJpbmco cC5pZCkgPT09IFN0cmluZyhpZCk7IH0pOwogICAgaWYgKCFwZXJzb24pIHsgdG9hc3QoJ0VpZ2Vu ZSBQZXJzb24gbmljaHQgaW4gZGVyIFBlcnNvbmFsbGlzdGUgZ2VmdW5kZW4nLCAnd2FybnVuZycp OyByZXR1cm47IH0KCiAgICB2YXIga29lcnBlciA9IGF2YXRhckJsb2NrSHRtbChwZXJzb24pICsK ICAgICAgICAnPGRpdiBzdHlsZT0iZm9udC1zaXplOjEycHg7Y29sb3I6dmFyKC0tdGV4dC1tdXRl ZCk7bWFyZ2luLXRvcDo0cHgiPicgKwogICAgICAgICAgICAnSGllciBrYW5uc3QgZHUgZGVpbiBQ cm9maWxiaWxkIGhvY2hsYWRlbiBvZGVyIGVudGZlcm5lbi4gQW5kZXJlIFN0YW1tZGF0ZW4gJyAr CiAgICAgICAgICAgICdwZmxlZ3QgZGllIEFkbWluaXN0cmF0aW9uIMO8YmVyIGRpZSBQZXJzb25h bHZlcndhbHR1bmcuJyArCiAgICAgICAgJzwvZGl2Pic7CiAgICBtb2RhbFplaWdlbignTWVpbiBQ cm9maWwg4oCUICcgKyAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIHBlcnNvbi5uYW1l KS50cmltKCksIGtvZXJwZXIsCiAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFl ciIgdHlwZT0iYnV0dG9uIiBpZD0icHJvZmlsLXNjaGxpZXNzZW4iPlNjaGxpZcOfZW48L2J1dHRv bj4nLAogICAgICAgIG51bGwsIG51bGwsIHsgcmVpbmVyRGlhbG9nOiB0cnVlIH0pOwogICAgYXZh dGFyVXBsb2FkSGFuZGxlckJpbmRlbihwZXJzb24sIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBh dkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZWluLWF2YXRhci1idG4nKTsKICAgICAg ICBpZiAoYXZCdG4pIGF2QnRuLmlubmVySFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDI4 KTsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2ZpbC1zY2hsaWVzc2Vu JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2Vu KHRydWUpOyB9KTsKfQoKLy8gQmVmdWVsbHQgZGVuIFRvcGJhci1BdmF0YXIgbWl0IGRlbSBha3R1 ZWxsZW4gQmlsZCBkZXIgZWluZ2Vsb2dndGVuIFBlcnNvbi4KLy8gV2lyZCBiZWltIExvZ2luICsg bmFjaCBqZWRlbSBBdmF0YXItVXBsb2FkIGF1ZmdlcnVmZW4uCmV4cG9ydCBmdW5jdGlvbiBtZWlu QXZhdGFyVG9wYmFyQWt0dWFsaXNpZXJlbigpIHsKICAgIHZhciBidG4gPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnbWVpbi1hdmF0YXItYnRuJyk7CiAgICBpZiAoIWJ0bikgcmV0dXJuOwogICAg aWYgKCFaLnJlY2h0ZSB8fCAhWi5yZWNodGUubWVpbmVQZXJzb25JZCkgewogICAgICAgIGJ0bi5j bGFzc0xpc3QuYWRkKCd2ZXJzdGVja3QnKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBTdHJpbmcocC5pZCkgPT09IFN0cmluZyhaLnJlY2h0ZS5tZWluZVBlcnNvbklkKTsgfSk7 CiAgICBpZiAoIXBlcnNvbikgeyBidG4uY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7IHJldHVy bjsgfQogICAgYnRuLmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgYnRuLmlubmVy SFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDI4KTsKfQoKZnVuY3Rpb24gYXZhdGFyQmxv Y2tIdG1sKHBlcnNvbikgewogICAgdmFyIGhhdEJpbGQgPSAhIXBlcnNvbi5hdmF0YXJUczsKICAg IHZhciBkYXJmRWRpdGllcmVuID0gWi5yZWNodGUgJiYgKAogICAgICAgIFoucmVjaHRlLmlzdFN1 cGVyVXNlciB8fAogICAgICAgIFoucmVjaHRlLmlzdEZhY2hhdWZzaWNodCB8fAogICAgICAgICha LnJlY2h0ZS5tZWluZVBlcnNvbklkICYmIFN0cmluZyhaLnJlY2h0ZS5tZWluZVBlcnNvbklkKSA9 PT0gU3RyaW5nKHBlcnNvbi5pZCkpCiAgICApOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJkbGct YXZhdGFyLWJsb2NrIj4nICsKICAgICAgICAnPGRpdiBpZD0iZGxnLWF2YXRhci12b3JzY2hhdSIg Y2xhc3M9ImRsZy1hdmF0YXItdm9yc2NoYXUiPicgKyBhdmF0YXJLcmVpc0h0bWwocGVyc29uLCA3 MikgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImRsZy1hdmF0YXItYWt0aW9uZW4i PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGxnLWF2YXRhci1uYW1lIj4nICsgZXNjYXBl SFRNTCgoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIChwZXJzb24ubmFtZSB8fCAnJykp LnRyaW0oKSB8fCAnUGVyc29uJykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgIChkYXJmRWRpdGll cmVuCiAgICAgICAgICAgICAgICA/ICc8aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImRsZy1hdmF0YXIt ZmlsZSIgYWNjZXB0PSJpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwIiBzdHlsZT0iZGlz cGxheTpub25lIj4nICsKICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBp ZD0iZGxnLWF2YXRhci11cGxvYWQiIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4iPicgKyAo aGF0QmlsZCA/ICdCaWxkIMOkbmRlcm4nIDogJ0JpbGQgaG9jaGxhZGVuJykgKyAnPC9idXR0b24+ JyArCiAgICAgICAgICAgICAgICAgIChoYXRCaWxkID8gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBp ZD0iZGxnLWF2YXRhci1sb2VzY2hlbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiI+Qmls ZCBlbnRmZXJuZW48L2J1dHRvbj4nIDogJycpCiAgICAgICAgICAgICAgICA6ICc8ZGl2IGNsYXNz PSJkbGctYXZhdGFyLWhpbndlaXMiPlByb2ZpbGJpbGQtUGZsZWdlIGlzdCBkZWFrdGl2aWVydCAo a2VpbmUgQmVyZWNodGlndW5nKS48L2Rpdj4nKSArCiAgICAgICAgJzwvZGl2PicgKwogICAgJzwv ZGl2Pic7Cn0KCi8vIFNrYWxpZXJ0IGVpbiBGaWxlIGF1ZiAoa29uZmlndXJpZXJiYXJlcykgTnhO LVF1YWRyYXQgcGVyIGNlbnRlci1jcm9wCi8vIHVuZCBnaWJ0IGVpbmUgSlBFRy1EYXRhLVVSTCB6 dXJ1ZWNrLiBaaWVsZ3JvZXNzZSBzdGV1ZXJ0Ci8vIFouYWRtaW4uYXZhdGFyR3JvZXNzZSAoRGVm YXVsdCAyMDApLiBTZXJ2ZXIgcHJ1ZWZ0IHp1c2FldHpsaWNoIGRlbgovLyAyNTAtS0ItQnl0ZS1D YXA7IGRhbWl0IGlzdCBhdWNoIGJlaSA2MDAgcHggZGllIERhdGVpIGtsZWluIGdlbnVnLgpmdW5j dGlvbiBhdmF0YXJTa2FsaWVyZW4oZmlsZSkgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0 aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIGlmICghZmlsZSkgeyByZWplY3QobmV3IEVy cm9yKCdLZWluIEZpbGUnKSk7IHJldHVybjsgfQogICAgICAgIGlmIChmaWxlLnNpemUgPiA4ICog MTAyNCAqIDEwMjQpIHsgcmVqZWN0KG5ldyBFcnJvcignRGF0ZWkgenUgZ3Jvc3MgKG1heCA4IE1C IE9yaWdpbmFsKScpKTsgcmV0dXJuOyB9CiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVh ZGVyKCk7CiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcmVqZWN0KG5ldyBF cnJvcignRGF0ZWkga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuJykpOyB9OwogICAgICAgIHJl YWRlci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBpbWcgPSBuZXcgSW1h Z2UoKTsKICAgICAgICAgICAgaW1nLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgcmVqZWN0KG5ldyBF cnJvcignS2VpbiBnw7xsdGlnZXMgQmlsZCcpKTsgfTsKICAgICAgICAgICAgaW1nLm9ubG9hZCA9 IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIHppZWwgPSBwYXJzZUludCgoWi5hZG1p biAmJiBaLmFkbWluLmF2YXRhckdyb2Vzc2UpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoaXNO YU4oemllbCkgfHwgemllbCA8IDEwMCkgemllbCA9IDIwMDsKICAgICAgICAgICAgICAgIGVsc2Ug aWYgKHppZWwgPiA2MDApIHppZWwgPSA2MDA7CiAgICAgICAgICAgICAgICB2YXIgY2FudmFzID0g ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CiAgICAgICAgICAgICAgICBjYW52YXMu d2lkdGggPSB6aWVsOyBjYW52YXMuaGVpZ2h0ID0gemllbDsKICAgICAgICAgICAgICAgIHZhciBj dHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgICAgICAgICAgIC8vIENlbnRlci1D cm9wOiBrbGVpbmVyZSBEaW1lbnNpb24gZGVmaW5pZXJ0IGRhcyBRdWFkcmF0CiAgICAgICAgICAg ICAgICB2YXIgc3JjID0gTWF0aC5taW4oaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTsKICAgICAgICAg ICAgICAgIHZhciBzeCA9IChpbWcud2lkdGggIC0gc3JjKSAvIDI7CiAgICAgICAgICAgICAgICB2 YXIgc3kgPSAoaW1nLmhlaWdodCAtIHNyYykgLyAyOwogICAgICAgICAgICAgICAgY3R4LmZpbGxT dHlsZSA9ICcjZmZmJzsKICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB6aWVsLCB6 aWVsKTsKICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCBzeCwgc3ksIHNyYywgc3Jj LCAwLCAwLCB6aWVsLCB6aWVsKTsKICAgICAgICAgICAgICAgIHJlc29sdmUoY2FudmFzLnRvRGF0 YVVSTCgnaW1hZ2UvanBlZycsIDAuODUpKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaW1n LnNyYyA9IGUudGFyZ2V0LnJlc3VsdDsKICAgICAgICB9OwogICAgICAgIHJlYWRlci5yZWFkQXNE YXRhVVJMKGZpbGUpOwogICAgfSk7Cn0KCmZ1bmN0aW9uIGF2YXRhclVwbG9hZEhhbmRsZXJCaW5k ZW4ocGVyc29uLCByZWZyZXNoSG9vaykgewogICAgdmFyIGZpbGVJbnAgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnZGxnLWF2YXRhci1maWxlJyk7CiAgICB2YXIgYnRuVXAgICA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdkbGctYXZhdGFyLXVwbG9hZCcpOwogICAgdmFyIGJ0bkRlbCAgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWF2YXRhci1sb2VzY2hlbicpOwogICAgdmFyIHZv cnNjaGF1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1hdmF0YXItdm9yc2NoYXUnKTsK ICAgIGlmIChidG5VcCAmJiBmaWxlSW5wKSB7CiAgICAgICAgYnRuVXAuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBmdW5jdGlvbigpIHsgZmlsZUlucC5jbGljaygpOyB9KTsKICAgICAgICBmaWxl SW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2 YXIgZmlsZSA9IGZpbGVJbnAuZmlsZXMgJiYgZmlsZUlucC5maWxlc1swXTsKICAgICAgICAgICAg aWYgKCFmaWxlKSByZXR1cm47CiAgICAgICAgICAgIGF2YXRhclNrYWxpZXJlbihmaWxlKS50aGVu KGZ1bmN0aW9uKGRhdGFVcmwpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcGlQb3N0KCcvYXBp L3BlcnNvbmVuLycgKyBwZXJzb24uaWQgKyAnL2F2YXRhcicsIHsgZGF0YVVybDogZGF0YVVybCB9 KTsKICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHBlcnNv bi5hdmF0YXJUcyA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICBpZiAodm9yc2NoYXUpIHZv cnNjaGF1LmlubmVySFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDcyKTsKICAgICAgICAg ICAgICAgIGlmIChidG5VcCkgYnRuVXAudGV4dENvbnRlbnQgPSAnQmlsZCDDpG5kZXJuJzsKICAg ICAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICAgICAgICAgIHBlcnNv bmFsVGFiZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbmFtZW5SZW5k ZXJuID09PSAnZnVuY3Rpb24nKSBuYW1lblJlbmRlcm4oKTsKICAgICAgICAgICAgICAgIGlmIChy ZWZyZXNoSG9vaykgcmVmcmVzaEhvb2soKTsKICAgICAgICAgICAgICAgIHRvYXN0KCdQcm9maWxi aWxkIGdlc3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlv bihlKSB7CiAgICAgICAgICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgKGUgJiYgZS5tZXNzYWdl IHx8IGUpLCAnZmVobGVyJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgfQogICAg aWYgKGJ0bkRlbCkgewogICAgICAgIGJ0bkRlbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1 bmN0aW9uKCkgewogICAgICAgICAgICBhcGlEZWxldGUoJy9hcGkvcGVyc29uZW4vJyArIHBlcnNv bi5pZCArICcvYXZhdGFyJykudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHBlcnNv bi5hdmF0YXJUcyA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAodm9yc2NoYXUpIHZvcnNjaGF1 LmlubmVySFRNTCA9IGF2YXRhcktyZWlzSHRtbChwZXJzb24sIDcyKTsKICAgICAgICAgICAgICAg IGlmIChidG5EZWwpIGJ0bkRlbC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIGlmIChidG5VcCkg YnRuVXAudGV4dENvbnRlbnQgPSAnQmlsZCBob2NobGFkZW4nOwogICAgICAgICAgICAgICAgcGVy c29uZW5OZXVBdWZiYXVlbigpOwogICAgICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVy bigpOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBuYW1lblJlbmRlcm4gPT09ICdmdW5jdGlv bicpIG5hbWVuUmVuZGVybigpOwogICAgICAgICAgICAgICAgaWYgKHJlZnJlc2hIb29rKSByZWZy ZXNoSG9vaygpOwogICAgICAgICAgICAgICAgdG9hc3QoJ1Byb2ZpbGJpbGQgZW50ZmVybnQnLCAn ZXJmb2xnJyk7CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAg ICAgIHRvYXN0KCdGZWhsZXI6ICcgKyAoZSAmJiBlLm1lc3NhZ2UgfHwgZSksICdmZWhsZXInKTsK ICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICB9Cn0KCi8vID09PT09IFZJMy1ER0wtVG9n Z2xlIGltIFBlcnNvbi1Nb2RhbCA9PT09PQovLyBWaXN1ZWxsZSBWYXJpYW50ZSBkZXMgU3RhdHVz LUJ1dHRvbnMgYXVzIGRlciBQZXJzb25hbC1UYWJlbGxlOgovLyBncm9zc2Uga2xpY2tiYXJlIEth cnRlIG1pdCBncnVlbmVtIEhha2VuIG9kZXIgcm90ZW0gUXVlcmJhbGtlbiBwbHVzCi8vIEtsYXJ0 ZXh0LVN0YXR1cy4gSGlkZGVuIENoZWNrYm94ICNkbGctZWxkZ2wgaGFlbHQgZGVuIFN0YXRlIChT YXZlLQovLyBIYW5kbGVyIGxpZXN0IC5jaGVja2VkIHdpZSB6dXZvciDigJQga2VpbiBCcnVjaCku CmZ1bmN0aW9uIGVsZGdsVG9nZ2xlSHRtbChha3RpdikgewogICAgdmFyIG9rID0gISFha3RpdjsK ICAgIHJldHVybiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGlkPSJkbGctZWxkZ2wtdG9nZ2xlIiBj bGFzcz0iZGxnLWVsZGdsLXRvZ2dsZSAnICsgKG9rID8gJ2FrdGl2JyA6ICdpbmFrdGl2JykgKyAn IiBhcmlhLXByZXNzZWQ9IicgKyAob2sgPyAndHJ1ZScgOiAnZmFsc2UnKSArICciPicgKwogICAg ICAgICc8c3BhbiBjbGFzcz0idmkzZGdsLWJ0biAnICsgKG9rID8gJ3ZpM2RnbC1idG4tb2snIDog J3ZpM2RnbC1idG4tbm8nKSArICciPjwvc3Bhbj4nICsKICAgICAgICAnPHNwYW4gY2xhc3M9ImRs Zy1lbGRnbC10ZXh0Ij4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkbGctZWxkZ2wtc3Rh dHVzIj4nICsgKG9rID8gJ3F1YWxpZml6aWVydCcgOiAnbmljaHQgcXVhbGlmaXppZXJ0JykgKyAn PC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImRsZy1lbGRnbC1oaW50Ij5LbGlj a2VuIHp1bSAnICsgKG9rID8gJ0F1ZmhlYmVuJyA6ICdBa3RpdmllcmVuJykgKyAnPC9zcGFuPicg KwogICAgICAgICc8L3NwYW4+JyArCiAgICAnPC9idXR0b24+JyArCiAgICAnPGlucHV0IHR5cGU9 ImNoZWNrYm94IiBpZD0iZGxnLWVsZGdsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bGVmdDot OTk5OXB4IicgKyAob2sgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nOwp9CgovLyBDbGljay1IYW5k bGVyIGZ1ZXIgZGVuIFRvZ2dsZS1CdXR0b24uIFdpcmQgbmFjaCBtb2RhbFplaWdlbigpIGltCi8v IFBlcnNvbi1Nb2RhbCBhbmdlaGFlbmd0LiBUb2dnbGV0IGhpZGRlbiBDaGVja2JveCArIHZpc3Vl bGxlIEtsYXNzZW4uCmZ1bmN0aW9uIGVsZGdsVG9nZ2xlTGlzdGVuZXJCaW5kZW4oKSB7CiAgICB2 YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1lbGRnbC10b2dnbGUnKTsKICAg IHZhciBjaGsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGxnLWVsZGdsJyk7CiAgICBpZiAo IWJ0biB8fCAhY2hrKSByZXR1cm47CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBm dW5jdGlvbigpIHsKICAgICAgICBjaGsuY2hlY2tlZCA9ICFjaGsuY2hlY2tlZDsKICAgICAgICAv LyBNb2RhbC1EaXJ0eS1UcmFja2luZzogbWFudWVsbGVzIGNoYW5nZS1FdmVudCwgd2VpbCB3aXIg ZGllCiAgICAgICAgLy8gQ2hlY2tib3ggcHJvZ3JhbW1hdGlzY2ggdG9nZ2xlbiAoa2VpbiBVc2Vy LUlucHV0LUV2ZW50KS4KICAgICAgICBjaGsuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5n ZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7CiAgICAgICAgdmFyIG9rID0gY2hrLmNoZWNrZWQ7CiAg ICAgICAgYnRuLmNsYXNzTGlzdC50b2dnbGUoJ2FrdGl2Jywgb2spOwogICAgICAgIGJ0bi5jbGFz c0xpc3QudG9nZ2xlKCdpbmFrdGl2JywgIW9rKTsKICAgICAgICBidG4uc2V0QXR0cmlidXRlKCdh cmlhLXByZXNzZWQnLCBvayA/ICd0cnVlJyA6ICdmYWxzZScpOwogICAgICAgIHZhciBxdWFkID0g YnRuLnF1ZXJ5U2VsZWN0b3IoJy52aTNkZ2wtYnRuJyk7CiAgICAgICAgaWYgKHF1YWQpIHsKICAg ICAgICAgICAgcXVhZC5jbGFzc0xpc3QudG9nZ2xlKCd2aTNkZ2wtYnRuLW9rJywgb2spOwogICAg ICAgICAgICBxdWFkLmNsYXNzTGlzdC50b2dnbGUoJ3ZpM2RnbC1idG4tbm8nLCAhb2spOwogICAg ICAgIH0KICAgICAgICB2YXIgc3RhdHVzID0gYnRuLnF1ZXJ5U2VsZWN0b3IoJy5kbGctZWxkZ2wt c3RhdHVzJyk7CiAgICAgICAgaWYgKHN0YXR1cykgc3RhdHVzLnRleHRDb250ZW50ID0gb2sgPyAn cXVhbGlmaXppZXJ0JyA6ICduaWNodCBxdWFsaWZpemllcnQnOwogICAgICAgIHZhciBoaW50ID0g YnRuLnF1ZXJ5U2VsZWN0b3IoJy5kbGctZWxkZ2wtaGludCcpOwogICAgICAgIGlmIChoaW50KSBo aW50LnRleHRDb250ZW50ID0gJ0tsaWNrZW4genVtICcgKyAob2sgPyAnQXVmaGViZW4nIDogJ0Fr dGl2aWVyZW4nKTsKICAgIH0pOwp9CgovLyA9PT09PSBHZWJ1cnRzdGFnLUF1c3dhaGwgYWxzIEJ1 dHRvbi1HcmlkLU1vZGFsID09PT09Ci8vCi8vIDMxIFRhZy1CdXR0b25zICg1LXplaWxpZywgNy1z cGFsdGlnKSArIDEyIE1vbmF0LUJ1dHRvbnMgKDN4NCkgKyAzNyBKYWhyLQovLyBCdXR0b25zIGZ1 ZXIgMTk2NC0yMDAwICg1eDgpLiBBa3R1ZWxsIGdld2FlaGx0ZSBCdXR0b25zIHNpbmQgaGVydm9y LQovLyBnZWhvYmVuLiBEaXJ0eS1UcmFja2luZyBudXR6dCBkYXMgZWluZ2ViYXV0ZSBNb2RhbC1T eXN0ZW0gKFoubW9kYWxEaXJ0eQovLyArIG1vZGFsRGlydHlCZXN0YWV0aWd1bmdaZWlnZW4gYmVp bSBTY2hsaWVzc2VuKS4KCnZhciBHQl9KQUhSRV9WT04gPSAxOTY0Owp2YXIgR0JfSkFIUkVfQklT ID0gMjAwMDsKdmFyIEdCX01PTkFURSA9IFsnSmFuJywnRmViJywnTcOkcicsJ0FwcicsJ01haScs J0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09rdCcsJ05vdicsJ0RleiddOwovLyBNb2R1bC1TdGF0 ZTogbnVyIHdhZWhyZW5kIGRhcyBNb2RhbCBvZmZlbiBpc3QgZ2VzZXR6dC4gQ2xpY2stSGFuZGxl ciBpbgovLyBhcHAuanMgbGllc3QgaGllciBhYi4KZXhwb3J0IHZhciBnZWJ1cnRzdGFnTW9kYWxT dGF0ZSA9IHsgb2ZmZW46IGZhbHNlLCBwZXJzb25JZDogbnVsbCwgd2VydGU6IHsgdGFnOiBudWxs LCBtb25hdDogbnVsbCwgamFocjogbnVsbCB9LCB1cnNwcnVuZzogJycgfTsKCmZ1bmN0aW9uIGdi UGFkKG4pIHsgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiAnJyArIG47IH0KCmZ1bmN0aW9uIGdi UGFyc2VEYXR1bShzdHIpIHsKICAgIGlmICghc3RyIHx8IHN0ci5sZW5ndGggPCAxMCkgcmV0dXJu IHsgdGFnOiBudWxsLCBtb25hdDogbnVsbCwgamFocjogbnVsbCB9OwogICAgdmFyIHQgPSBzdHIu c3BsaXQoJy0nKTsKICAgIHJldHVybiB7CiAgICAgICAgamFocjogIHBhcnNlSW50KHRbMF0sIDEw KSB8fCBudWxsLAogICAgICAgIG1vbmF0OiBwYXJzZUludCh0WzFdLCAxMCkgfHwgbnVsbCwKICAg ICAgICB0YWc6ICAgcGFyc2VJbnQodFsyXSwgMTApIHx8IG51bGwKICAgIH07Cn0KCmZ1bmN0aW9u IGdiQnRuR3JpZCh0eXAsIHZvbiwgYmlzLCBsYWJlbHMpIHsKICAgIHZhciBzID0gZ2VidXJ0c3Rh Z01vZGFsU3RhdGUud2VydGU7CiAgICB2YXIgaHRtbCA9ICcnOwogICAgZm9yICh2YXIgaSA9IHZv bjsgaSA8PSBiaXM7IGkrKykgewogICAgICAgIHZhciBsYmwgPSBsYWJlbHMgPyBsYWJlbHNbaSAt IHZvbl0gOiBTdHJpbmcoaSk7CiAgICAgICAgdmFyIGNscyA9ICdnYi1idG4nICsgKHNbdHlwXSA9 PT0gaSA/ICcgYWt0aXYnIDogJycpOwogICAgICAgIGh0bWwgKz0gJzxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0iJyArIGNscyArICciIGRhdGEtZ2ItdHlwPSInICsgdHlwICsgJyIgZGF0YS1n Yi13ZXJ0PSInICsgaSArICciPicgKyBlc2NhcGVIVE1MKGxibCkgKyAnPC9idXR0b24+JzsKICAg IH0KICAgIHJldHVybiBodG1sOwp9CgpmdW5jdGlvbiBnYkFuemVpZ2UoKSB7CiAgICB2YXIgcyA9 IGdlYnVydHN0YWdNb2RhbFN0YXRlLndlcnRlOwogICAgaWYgKCFzLnRhZyB8fCAhcy5tb25hdCB8 fCAhcy5qYWhyKSByZXR1cm4gJzxlbSBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPkJp dHRlIFRhZywgTW9uYXQgdW5kIEphaHIgYXVzd8OkaGxlbi48L2VtPic7CiAgICByZXR1cm4gJzxz dHJvbmc+JyArIGdiUGFkKHMudGFnKSArICcuJyArIGdiUGFkKHMubW9uYXQpICsgJy4nICsgcy5q YWhyICsgJzwvc3Ryb25nPic7Cn0KCmV4cG9ydCBmdW5jdGlvbiBnZWJ1cnRzdGFnTW9kYWxJbmhh bHRSZW5kZXJuKCkgewogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJnYi1ha3R1ZWxsIj5HZXfDpGhs dDogJyArIGdiQW56ZWlnZSgpICsgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJnYi1z ZWt0aW9uIj48ZGl2IGNsYXNzPSJnYi1zZWt0aW9uLXRpdGVsIj5UYWc8L2Rpdj4nICsKICAgICAg ICAgICAgJzxkaXYgY2xhc3M9ImdiLWdyaWQgZ2ItZ3JpZC10YWciPicgKyBnYkJ0bkdyaWQoJ3Rh ZycsIDEsIDMxKSArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYg Y2xhc3M9ImdiLXNla3Rpb24iPjxkaXYgY2xhc3M9ImdiLXNla3Rpb24tdGl0ZWwiPk1vbmF0PC9k aXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJnYi1ncmlkIGdiLWdyaWQtbW9uYXQiPicg KyBnYkJ0bkdyaWQoJ21vbmF0JywgMSwgMTIsIEdCX01PTkFURSkgKyAnPC9kaXY+JyArCiAgICAg ICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJnYi1zZWt0aW9uIj48ZGl2IGNsYXNz PSJnYi1zZWt0aW9uLXRpdGVsIj5KYWhyPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNz PSJnYi1ncmlkIGdiLWdyaWQtamFociI+JyArIGdiQnRuR3JpZCgnamFocicsIEdCX0pBSFJFX1ZP TiwgR0JfSkFIUkVfQklTKSArICc8L2Rpdj4nICsKICAgICAgICAnPC9kaXY+JzsKfQoKZXhwb3J0 IGZ1bmN0aW9uIGdlYnVydHN0YWdNb2RhbFJlZnJlc2goKSB7CiAgICB2YXIgYyA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdnYi1tb2RhbC1pbmhhbHQnKTsKICAgIGlmICghYykgcmV0dXJuOwog ICAgYy5pbm5lckhUTUwgPSBnZWJ1cnRzdGFnTW9kYWxJbmhhbHRSZW5kZXJuKCk7CiAgICBpZiAo SlNPTi5zdHJpbmdpZnkoZ2VidXJ0c3RhZ01vZGFsU3RhdGUud2VydGUpICE9PSBnZWJ1cnRzdGFn TW9kYWxTdGF0ZS51cnNwcnVuZykgewogICAgICAgIFoubW9kYWxEaXJ0eSA9IHRydWU7CiAgICB9 Cn0KCmV4cG9ydCBmdW5jdGlvbiBnZWJ1cnRzdGFnTW9kYWxPZWZmbmVuKGlkKSB7CiAgICB2YXIg cGVyc29uID0gKFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJl dHVybiBwLmlkID09PSBpZDsgfSk7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIHRl aWxlID0gZ2JQYXJzZURhdHVtKHBlcnNvbi5nZWJ1cnRzZGF0dW0gfHwgJycpOwogICAgZ2VidXJ0 c3RhZ01vZGFsU3RhdGUub2ZmZW4gPSB0cnVlOwogICAgZ2VidXJ0c3RhZ01vZGFsU3RhdGUucGVy c29uSWQgPSBpZDsKICAgIGdlYnVydHN0YWdNb2RhbFN0YXRlLndlcnRlID0geyB0YWc6IHRlaWxl LnRhZywgbW9uYXQ6IHRlaWxlLm1vbmF0LCBqYWhyOiB0ZWlsZS5qYWhyIH07CiAgICBnZWJ1cnRz dGFnTW9kYWxTdGF0ZS51cnNwcnVuZyA9IEpTT04uc3RyaW5naWZ5KGdlYnVydHN0YWdNb2RhbFN0 YXRlLndlcnRlKTsKCiAgICB2YXIgdGl0ZWwgPSAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcg JyArIChwZXJzb24ubmFtZSB8fCAnJykpLnRyaW0oKSB8fCAnUGVyc29uJzsKICAgIHZhciBrb2Vy cGVyID0gJzxkaXYgaWQ9ImdiLW1vZGFsLWluaGFsdCI+JyArIGdlYnVydHN0YWdNb2RhbEluaGFs dFJlbmRlcm4oKSArICc8L2Rpdj4nOwogICAgdmFyIGZ1c3MgPQogICAgICAgICc8YnV0dG9uIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgaWQ9ImdiLWxvZXNjaGVuIiB0aXRsZT0iR2VidXJ0c2Rh dHVtIGVudGZlcm5lbiI+TMO2c2NoZW48L2J1dHRvbj4nICsKICAgICAgICAnPHNwYW4gc3R5bGU9 ImZsZXg6MSI+PC9zcGFuPicgKwogICAgICAgICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9 ImJ0biIgaWQ9ImdiLWFiYnJlY2hlbiI+QWJicmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiBpZD0iZGxnLXNwZWlj aGVybiI+U3BlaWNoZXJuPC9idXR0b24+JzsKCiAgICBtb2RhbFplaWdlbignR2VidXJ0c3RhZyDi gJQgJyArIHRpdGVsLCBrb2VycGVyLCBmdXNzLCBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgcyA9 IGdlYnVydHN0YWdNb2RhbFN0YXRlLndlcnRlOwogICAgICAgIGlmICghcy50YWcgfHwgIXMubW9u YXQgfHwgIXMuamFocikgewogICAgICAgICAgICB0b2FzdCgnQml0dGUgVGFnLCBNb25hdCB1bmQg SmFociBhdXN3w6RobGVuJywgJ3dhcm51bmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAg IH0KICAgICAgICAvLyBWYWxpZGllcnVuZzogMzEuMDIgZXRjLiBlcmtlbm5lbgogICAgICAgIHZh ciBkID0gbmV3IERhdGUocy5qYWhyLCBzLm1vbmF0IC0gMSwgcy50YWcpOwogICAgICAgIGlmIChk LmdldERhdGUoKSAhPT0gcy50YWcgfHwgZC5nZXRNb250aCgpICE9PSBzLm1vbmF0IC0gMSB8fCBk LmdldEZ1bGxZZWFyKCkgIT09IHMuamFocikgewogICAgICAgICAgICB0b2FzdCgnVW5nw7xsdGln ZXMgRGF0dW0gKHouQi4gMzEuIEZlYnJ1YXIpIOKAlCBiaXR0ZSBrb3JyaWdpZXJlbicsICd3YXJu dW5nJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdmFyIGRhdHVtU3Ry ID0gcy5qYWhyICsgJy0nICsgZ2JQYWQocy5tb25hdCkgKyAnLScgKyBnYlBhZChzLnRhZyk7CiAg ICAgICAgYXBpUHV0KCcvYXBpL3BlcnNvbmVuLycgKyBpZCwgeyBnZWJ1cnRzZGF0dW06IGRhdHVt U3RyIH0pLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHBlcnNvbi5nZWJ1cnRzZGF0dW0g PSBkYXR1bVN0cjsKICAgICAgICAgICAgZ2VidXJ0c3RhZ01vZGFsU3RhdGUub2ZmZW4gPSBmYWxz ZTsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICB0b2Fz dCgnR2VidXJ0c3RhZyBnZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgbW9kYWxT Y2hsaWVzc2VuKHRydWUpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAg ICAgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAgIH0pOwog ICAgfSk7CgogICAgLy8gRm9vdGVyLUJ1dHRvbnMgYmluZGVuCiAgICBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZ2ItYWJicmVjaGVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlv bigpIHsKICAgICAgICAvLyBtb2RhbFNjaGxpZXNzZW4oKSBsb2VzdCBiZWkgWi5tb2RhbERpcnR5 IGF1dG9tYXRpc2NoIGRhcwogICAgICAgIC8vIEJlc3RhZXRpZ3VuZ3MtTW9kYWwgYXVzIChTcGVp Y2hlcm4gLyBWZXJ3ZXJmZW4gLyBBYmJyZWNoZW4pLgogICAgICAgIG1vZGFsU2NobGllc3Nlbigp OwogICAgfSk7CiAgICB2YXIgbG9lQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2diLWxv ZXNjaGVuJyk7CiAgICBpZiAobG9lQnRuKSB7CiAgICAgICAgbG9lQnRuLmFkZEV2ZW50TGlzdGVu ZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGFwaVB1dCgnL2FwaS9wZXJzb25l bi8nICsgaWQsIHsgZ2VidXJ0c2RhdHVtOiAnJyB9KS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAg ICAgICAgICAgcGVyc29uLmdlYnVydHNkYXR1bSA9ICcnOwogICAgICAgICAgICAgICAgZ2VidXJ0 c3RhZ01vZGFsU3RhdGUub2ZmZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIHBlcnNvbmFsVGFi ZWxsZVJlbmRlcm4oKTsKICAgICAgICAgICAgICAgIHRvYXN0KCdHZWJ1cnRzZGF0dW0gZW50ZmVy bnQnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAg ICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVz c2FnZSwgJ2ZlaGxlcicpOyB9KTsKICAgICAgICB9KTsKICAgIH0KfQoKLy8gQ2xpY2stSGFuZGxl ciBmdWVyIGVpbnplbG5lIFRhZy9Nb25hdC9KYWhyLUJ1dHRvbnMgaW0gTW9kYWwuIFdpcmQgcGVy Ci8vIEV2ZW50LURlbGVnYXRpb24gaW0gYXBwLmpzIG1vZGFsLUNvbnRhaW5lci1IYW5kbGVyIGF1 ZmdlcnVmZW4uCmV4cG9ydCBmdW5jdGlvbiBnZWJ1cnRzdGFnTW9kYWxLbGljayh0eXAsIHdlcnQp IHsKICAgIGlmICghZ2VidXJ0c3RhZ01vZGFsU3RhdGUub2ZmZW4pIHJldHVybjsKICAgIGdlYnVy dHN0YWdNb2RhbFN0YXRlLndlcnRlW3R5cF0gPSB3ZXJ0OwogICAgZ2VidXJ0c3RhZ01vZGFsUmVm cmVzaCgpOwp9CgovLyA9PT09PSBBZG1pbjogR2VuZXJpc2NoZXIgSW5saW5lLUVkaXQgZnVlciBi ZWxpZWJpZ2UgRGF0ZW4tRmVsZGVyID09PT09Ci8vCi8vIE51dHp0IGRhcyBgcGVyc29uYWwtaW5s aW5lYC1TcGFuLU1hcmt1cCBhdXMgcGVyc29uWmVpbGUgKENoZXJyeS1QaWNrCi8vIGQ0MzQ2MWEs IGhpbnRlciBUb2dnbGUgYGZlYXR1cmVzLnBlcnNvbmFsSW5saW5lRWRpdGApLiBEb3BwZWxrbGlj ayBhdWYKLy8gZWluIG1hcmtpZXJ0ZXMgU3BhbiBlcnNldHp0IGVzIGR1cmNoIGVpbiA8aW5wdXQ+ LCBCbHVyL0VudGVyIHNwZWljaGVydCwKLy8gRXNjYXBlIHJvbGx0IHp1cnVlY2suIFVudGVyc3R1 ZXR6dGUgZGF0YS10eXAtV2VydGU6ICd0ZXh0JywgJ2RhdGUnLgpleHBvcnQgZnVuY3Rpb24gcGVy c29uYWxGZWxkSW5saW5lRWRpdChpZCwgc3BhbikgewogICAgaWYgKCFaLnJlY2h0ZSB8fCAhWi5y ZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIgcGVyc29uID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLmlkID09PSBpZDsgfSk7 CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuOwogICAgdmFyIGZlbGQgPSBzcGFuLmdldEF0dHJpYnV0 ZSgnZGF0YS1mZWxkJyk7CiAgICB2YXIgdHlwICA9IHNwYW4uZ2V0QXR0cmlidXRlKCdkYXRhLXR5 cCcpIHx8ICd0ZXh0JzsKICAgIGlmICghZmVsZCkgcmV0dXJuOwogICAgLy8gR2VidXJ0c2RhdHVt IG51dHp0IGVpbmVuIGRlZGl6aWVydGVuIEJ1dHRvbi1HcmlkLURpYWxvZyBzdGF0dAogICAgLy8g SW5saW5lLURhdGUtSW5wdXQgKFVzZXItRmVlZGJhY2sgMjAyNi0wNS0yMykuCiAgICBpZiAoZmVs ZCA9PT0gJ2dlYnVydHNkYXR1bScpIHsgZ2VidXJ0c3RhZ01vZGFsT2VmZm5lbihpZCk7IHJldHVy bjsgfQoKICAgIHZhciBha3R1ZWxsZXJXZXJ0ID0gcGVyc29uW2ZlbGRdOwogICAgaWYgKGFrdHVl bGxlcldlcnQgPT0gbnVsbCkgYWt0dWVsbGVyV2VydCA9ICcnOwoKICAgIHZhciBpbnB1dCA9IGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICBpbnB1dC50eXBlID0gdHlwID09PSAn ZGF0ZScgPyAnZGF0ZScgOiAndGV4dCc7CiAgICBpbnB1dC52YWx1ZSA9IFN0cmluZyhha3R1ZWxs ZXJXZXJ0KTsKICAgIGlucHV0LmNsYXNzTmFtZSA9ICdwZXJzb25hbC1pbmxpbmUtaW5wdXQnOwog ICAgaW5wdXQuc3R5bGUuZm9udCA9ICdpbmhlcml0JzsKICAgIGlucHV0LnN0eWxlLnBhZGRpbmcg PSAnMnB4IDRweCc7CiAgICBpbnB1dC5zdHlsZS53aWR0aCA9IHR5cCA9PT0gJ2RhdGUnID8gJzE0 MHB4JyA6ICcxMDAlJzsKICAgIHNwYW4ucmVwbGFjZVdpdGgoaW5wdXQpOwogICAgaW5wdXQuZm9j dXMoKTsKICAgIHRyeSB7IGlucHV0LnNlbGVjdCgpOyB9IGNhdGNoIChlKSB7fQoKICAgIHZhciBh Ymdlc2NobG9zc2VuID0gZmFsc2U7CiAgICBmdW5jdGlvbiB1ZWJlcm5laG1lbigpIHsKICAgICAg ICBpZiAoYWJnZXNjaGxvc3NlbikgcmV0dXJuOwogICAgICAgIGFiZ2VzY2hsb3NzZW4gPSB0cnVl OwogICAgICAgIHZhciBuZXUgPSBpbnB1dC52YWx1ZTsKICAgICAgICBpZiAodHlwICE9PSAnZGF0 ZScpIG5ldSA9IG5ldS50cmltKCk7CiAgICAgICAgaWYgKFN0cmluZyhuZXUpID09PSBTdHJpbmco YWt0dWVsbGVyV2VydCB8fCAnJykpIHsKICAgICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVy bigpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciB1cGRhdGUgPSB7 fTsKICAgICAgICB1cGRhdGVbZmVsZF0gPSBuZXU7CiAgICAgICAgYXBpUHV0KCcvYXBpL3BlcnNv bmVuLycgKyBpZCwgdXBkYXRlKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBwZXJzb25b ZmVsZF0gPSBuZXU7CiAgICAgICAgICAgIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKTsKICAgICAgICAg ICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICBpZiAodHlwZW9mIG5hbWVu UmVuZGVybiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgbmFtZW5SZW5kZXJuKCk7 CiAgICAgICAgICAgICAgICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAgICAgICAgICBrb3Bm UmVuZGVybigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvYXN0KCdHZXNwZWljaGVydCcs ICdlcmZvbGcnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHRv YXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsKICAgICAgICAgICAgcGVyc29u YWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgIH0pOwogICAgfQogICAgZnVuY3Rpb24gYWJicmVj aGVuKCkgewogICAgICAgIGlmIChhYmdlc2NobG9zc2VuKSByZXR1cm47CiAgICAgICAgYWJnZXNj aGxvc3NlbiA9IHRydWU7CiAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgfQog ICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAg ICBpZiAoZS5rZXkgPT09ICdFbnRlcicpICAgICAgIHsgZS5wcmV2ZW50RGVmYXVsdCgpOyB1ZWJl cm5laG1lbigpOyB9CiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7IGUucHJl dmVudERlZmF1bHQoKTsgYWJicmVjaGVuKCk7IH0KICAgIH0pOwogICAgaW5wdXQuYWRkRXZlbnRM aXN0ZW5lcignYmx1cicsIHVlYmVybmVobWVuKTsKfQoKLy8gPT09PT0gQWRtaW46IEUtTWFpbC1B a3Rpb24gYXVzIGRlciBQZXJzb25hbC1UYWJlbGxlID09PT09CgovLyBLbGVpbmVzIE1vZGFsIG1p dCB6d2VpIEFrdGlvbmVuOiBBZHJlc3NlIGJlYXJiZWl0ZW4gb2RlciBNYWlsIHNjaHJlaWJlbi4K Ly8gS2xpY2sgYXVmIGRhcyBPdmVybGF5IHNjaGxpZXNzdCBkYXMgTW9kYWwgKGdsb2JhbCBpbiBt b2RhbC1vdmVybGF5LUhhbmRsZXIpLgpleHBvcnQgZnVuY3Rpb24gcGVyc29uRW1haWxEaWFsb2co aWQpIHsKICAgIHZhciBwZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1 bmN0aW9uKHApIHsgcmV0dXJuIHAuaWQgPT09IGlkOyB9KTsKICAgIGlmICghcGVyc29uKSByZXR1 cm47CiAgICB2YXIgYWt0dWVsbGUgPSBwZXJzb24uZW1haWwgfHwgJyc7CiAgICB2YXIgdGl0ZWwg PSAoKHBlcnNvbi52b3JuYW1lIHx8ICcnKSArICcgJyArIChwZXJzb24ubmFtZSB8fCAnJykpLnRy aW0oKTsKCiAgICB2YXIga29lcnBlciA9CiAgICAgICAgJzxkaXYgY2xhc3M9ImZvcm0tZ3J1cHBl Ij4nICsKICAgICAgICAgICAgJzxsYWJlbD5IaW50ZXJsZWd0ZSBFLU1haWwtQWRyZXNzZTwvbGFi ZWw+JyArCiAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iZW1haWwiIGlkPSJwZW1sLWFkcmVzc2Ui IGNsYXNzPSJmb3JtLWlucHV0IiBzdHlsZT0id2lkdGg6MTAwJSIgdmFsdWU9IicgKyBlc2NhcGVB dHRyKGFrdHVlbGxlKSArICciIHBsYWNlaG9sZGVyPSJiZWlzcGllbEBwb2xpemVpLm5ydy5kZSI+ JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJkaXNwbGF5OmZsZXg7 Z2FwOjEwcHg7bWFyZ2luLXRvcDoxNnB4O2ZsZXgtd3JhcDp3cmFwIj4nICsKICAgICAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9InBlbWwtc3BlaWNoZXJuIj5BZHJl c3NlIHNwZWljaGVybjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRu IGJ0bi1lcmZvbGciIGlkPSJwZW1sLXNjaHJlaWJlbiInICsgKGFrdHVlbGxlID8gJycgOiAnIGRp c2FibGVkIHRpdGxlPSJFcnN0IGVpbmUgQWRyZXNzZSBoaW50ZXJsZWdlbiInKSArICc+RS1NYWls IHNjaHJlaWJlbjwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwoKICAgIG1vZGFsWmVpZ2Vu KCdFLU1haWwg4oCUICcgKyB0aXRlbCwga29lcnBlciwgJycsIG51bGwpOwoKICAgIGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdwZW1sLXNwZWljaGVybicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG5ldSA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgncGVtbC1hZHJlc3NlJykudmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICAvLyBBdXRvLVN1 ZmZpeDogV2VubiBGZWF0dXJlIGFrdGl2IGlzdCB1bmQgZGllIEVpbmdhYmUga2VpbiAiQCIgZW50 aGFlbHQsCiAgICAgICAgLy8gaGFlbmdlbiB3aXIgZGllIGluIGRlciBBZG1pbi1Lb25maWcgaGlu dGVybGVndGUgRG9tYWluIGFuLgogICAgICAgIC8vIChDaGVycnktUGljayAxYjg3Y2Q1LikgRGVm YXVsdC1Eb21haW4gZmFsbHMgbmljaHRzIGtvbmZpZ3VyaWVydDoKICAgICAgICAvLyAiQHBvbGl6 ZWkubnJ3LmRlIiAoc2llaGUgYWRtaW4uanNvbi9TZXJ2ZXItQWxsb3dsaXN0KS4KICAgICAgICBp ZiAobmV1ICYmIGZlYXR1cmVJc3RBa3RpdignZW1haWxBdXRvU3VmZml4JykgJiYgbmV1LmluZGV4 T2YoJ0AnKSA8IDApIHsKICAgICAgICAgICAgdmFyIGRvbWFpbiA9IChaLmFkbWluICYmIFouYWRt aW4uZW1haWxBdXRvRG9tYWluKSB8fCAnQHBvbGl6ZWkubnJ3LmRlJzsKICAgICAgICAgICAgaWYg KGRvbWFpbi5jaGFyQXQoMCkgIT09ICdAJykgZG9tYWluID0gJ0AnICsgZG9tYWluOwogICAgICAg ICAgICBuZXUgPSBuZXUgKyBkb21haW47CiAgICAgICAgfQogICAgICAgIGlmIChuZXUgJiYgIS9e W15cc0BdK0BbXlxzQF0rXC5bXlxzQF0rJC8udGVzdChuZXUpKSB7CiAgICAgICAgICAgIHRvYXN0 KCdVbmfDvGx0aWdlIEUtTWFpbC1BZHJlc3NlJywgJ3dhcm51bmcnKTsKICAgICAgICAgICAgcmV0 dXJuOwogICAgICAgIH0KICAgICAgICBhcGlQdXQoJy9hcGkvcGVyc29uZW4vJyArIGlkLCB7IGVt YWlsOiBuZXUgfSkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgcGVyc29uLmVtYWlsID0g bmV1OwogICAgICAgICAgICAvLyBmb3JjZT10cnVlOiBkaWUgQWRyZXNzZSBJU1QgZ2VzcGVpY2hl cnQgLT4gZGlyZWt0IHNjaGxpZXNzZW4sIHNvbnN0CiAgICAgICAgICAgIC8vIHNjaGxhZWd0IGRh cyBEaXJ0eS1UcmFja2luZyAoVXNlciBoYXQgamEgaW5zIEZlbGQgZ2V0aXBwdCkgZmFlbHNjaC0K ICAgICAgICAgICAgLy8gbGljaGVyd2Vpc2UgZGllICJVbmdlc3BlaWNoZXJ0ZSDDhG5kZXJ1bmdl biItUnVlY2tmcmFnZSB2b3IuCiAgICAgICAgICAgIG1vZGFsU2NobGllc3Nlbih0cnVlKTsKICAg ICAgICAgICAgcGVyc29uYWxUYWJlbGxlUmVuZGVybigpOwogICAgICAgICAgICB0b2FzdChuZXUg PyAnRS1NYWlsIGdlc3BlaWNoZXJ0JyA6ICdFLU1haWwgZW50ZmVybnQnLCAnZXJmb2xnJyk7CiAg ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdl LCAnZmVobGVyJyk7IH0pOwogICAgfSk7CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bl bWwtc2NocmVpYmVuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAg ICAgICB2YXIgemllbCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGVtbC1hZHJlc3NlJyku dmFsdWUgfHwgJycpLnRyaW0oKTsKICAgICAgICBpZiAoIXppZWwpIHsgdG9hc3QoJ0tlaW5lIEFk cmVzc2UgaGludGVybGVndCcsICd3YXJudW5nJyk7IHJldHVybjsgfQogICAgICAgIHdpbmRvdy5s b2NhdGlvbi5ocmVmID0gJ21haWx0bzonICsgZW5jb2RlVVJJQ29tcG9uZW50KHppZWwpOwogICAg fSk7Cn0K ### FILE: js/admin_rollen.js | 43278 Ly8gPT09IGFkbWluX3JvbGxlbi5qcyA9PT0KLy8gUGhhc2UgOS1CIEMxOiBhdXMgYWRtaW4uanMg ZXh0cmFoaWVydC4gVmVyd2FsdGV0IGRpZSB6d2VpIHJvbGxlbi0KLy8gbmFoZW4gQWRtaW4tVGFi czoKLy8gICAxLiBTdXBlclVzZXItTGlzdGUgKFouYWRtaW4uc3VwZXJVc2VyKQovLyAgIDIuIEZh Y2hhdWZzaWNodC1MaXN0ZSAoWi5hZG1pbi5mYWNoYXVmc2ljaHQpIGlua2wuIGdyYW51bGFyZSBT dWItCi8vICAgICAgU2ljaHRiYXJrZWl0IGZ1ZXIgQWRtaW4tU3ViLVRhYnMgKyBTdGF0aXN0aWst QmVyZWljaGUgdW5kCi8vICAgICAgUGxhbnVuZ3MtUmVjaHRlIChQZXJzb25lbi9HcnVwcGVuL1N0 YW5kb3J0ZSkuCi8vCi8vIEZlYXR1cmVzLVRvZ2dsZXMgKGZlYXR1cmVzUmVuZGVybi9mZWF0dXJl SXN0QWt0aXYpIGJsZWliZW4gYmV3dXNzdAovLyBpbiBhZG1pbi5qcyDigJQgQm9vdHN0cmFwLVZl cmFudHdvcnR1bmcsIGtlaW4gZWlnZW5lcyBSb2xsZW4tS29uemVwdC4KLy8gWmVudHJhbGVyIERp cnR5LVRyYWNrZXIgKGRpcnR5VHJhY2tlckVpbnJpY2h0ZW4pIGJsZWlidCBlYmVuZmFsbHMKLy8g aW4gYWRtaW4uanMgKGNyb3NzY3V0dGluZykuCi8vCi8vIFBhc3MtVGhyb3VnaC1SZS1FeHBvcnRz IGluIGFkbWluLmpzIHN0ZWxsZW4gc2ljaGVyLCBkYXNzIGV4dGVybmUKLy8gS29uc3VtZW50ZW4g KGFwcC5qcywgc3RhdGlzdGlrLmpzLCDigKYpIHVudmVyYWVuZGVydCBibGVpYmVuLgoKaW1wb3J0 IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhUTUwsIGVzY2Fw ZUF0dHIgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IGFwaVB1dCB9IGZyb20gJy4v Y29yZV9hcGkuanMnOwppbXBvcnQgewogICAgdG9hc3QsCiAgICBtb2RhbFplaWdlbiwgbW9kYWxT Y2hsaWVzc2VuLAogICAgZGlydHlTZXR6ZW4sIGRpcnR5SXN0Cn0gZnJvbSAnLi91aV9kaWFsb2cu anMnOwppbXBvcnQgeyB2ZXJhbnR3b3J0dW5nc01haWx0b0ZldWVybiB9IGZyb20gJy4vZW1haWxf dm9ybGFnZW4uanMnOwppbXBvcnQgeyB0YWJlbGxlRmVsZGVyTGVzZW4gfSBmcm9tICcuL2FkbWlu X2NvbW1vbi5qcyc7CgovLyA9PT09PSBBZG1pbjogU3VwZXJVc2VyLVZlcndhbHR1bmcgPT09PT0K CmV4cG9ydCBmdW5jdGlvbiBzdXBlclVzZXJSZW5kZXJuKCkgewogICAgdmFyIG5hdkJ0biA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtc3VwZXJ1c2VyJyk7CiAgICBpZiAobmF2QnRuKSBu YXZCdG4uc3R5bGUuZGlzcGxheSA9IFoucmVjaHRlLmlzdFN1cGVyVXNlciA/ICcnIDogJ25vbmUn OwoKICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdXBlcnVzZXItdGJv ZHknKTsKICAgIHZhciBidG5OZXUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLXN1cGVy dXNlci1uZXUnKTsKICAgIHZhciBidG5TcGVpY2hlcm4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnYnRuLXN1cGVydXNlci1zcGVpY2hlcm4nKTsKICAgIHZhciBrZWluUmVjaHQgPSBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnc3VwZXJ1c2VyLWtlaW4tcmVjaHQnKTsKCiAgICBpZiAoIVoucmVj aHRlLmlzdFN1cGVyVXNlcikgewogICAgICAgIGlmIChidG5OZXUpIGJ0bk5ldS5zdHlsZS5kaXNw bGF5ID0gJ25vbmUnOwogICAgICAgIGlmIChidG5TcGVpY2hlcm4pIGJ0blNwZWljaGVybi5zdHls ZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIGlmIChrZWluUmVjaHQpIGtlaW5SZWNodC5jbGFz c0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgICAgICBpZiAodGJvZHkpIHRib2R5LmlubmVy SFRNTCA9ICcnOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoYnRuTmV1KSBidG5OZXUu c3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGJ0blNwZWljaGVybikgYnRuU3BlaWNoZXJuLnN0 eWxlLmRpc3BsYXkgPSAnJzsKICAgIGlmIChrZWluUmVjaHQpIGtlaW5SZWNodC5jbGFzc0xpc3Qu YWRkKCd2ZXJzdGVja3QnKTsKCiAgICB2YXIgbGlzdGUgPSBaLmFkbWluLnN1cGVyVXNlciB8fCBb XTsKICAgIHZhciBodG1sID0gJyc7CiAgICBsaXN0ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1LCBpKSB7 CiAgICAgICAgaHRtbCArPSAnPHRyPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0 ZXh0IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3UubmFtZSB8fCAnJykgKyAnIiBkYXRhLWlkeD0i JyArIGkgKyAnIiBkYXRhLWZlbGQ9Im5hbWUiIGNsYXNzPSJzdXBlcnVzZXItaW5wdXQiIHN0eWxl PSJ3aWR0aDoxMDAlIj48L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0 IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3UubndLZW5udW5nIHx8ICcnKSArICciIGRhdGEtaWR4 PSInICsgaSArICciIGRhdGEtZmVsZD0ibndLZW5udW5nIiBjbGFzcz0ic3VwZXJ1c2VyLWlucHV0 IiBzdHlsZT0id2lkdGg6MTAwJSI+PC90ZD4nICsKICAgICAgICAgICAgJzx0ZD48aW5wdXQgdHlw ZT0idGV4dCIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKHN1Lm9lIHx8ICcnKSArICciIGRhdGEtaWR4 PSInICsgaSArICciIGRhdGEtZmVsZD0ib2UiIGNsYXNzPSJzdXBlcnVzZXItaW5wdXQiIHBsYWNl aG9sZGVyPSJ6LkIuIFZJMyBLYW1lbiIgc3R5bGU9IndpZHRoOjEwMCUiPjwvdGQ+JyArCiAgICAg ICAgICAgICc8dGQ+PGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSInICsgZXNjYXBlQXR0cihzdS50 ZWxlZm9uIHx8ICcnKSArICciIGRhdGEtaWR4PSInICsgaSArICciIGRhdGEtZmVsZD0idGVsZWZv biIgY2xhc3M9InN1cGVydXNlci1pbnB1dCIgcGxhY2Vob2xkZXI9InouQi4gNDUyMCIgc3R5bGU9 IndpZHRoOjEwMCUiPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+PGJ1dHRvbiBjbGFzcz0iYnRu IGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1ha3Rpb249InN1cGVydXNl ci1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpICsgJyIgdGl0bGU9IkzDtnNjaGVuIj5Mw7ZzY2hl bjwvYnV0dG9uPjwvdGQ+PC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5lckhUTUwgPSBodG1s Owp9CgpleHBvcnQgZnVuY3Rpb24gc3VwZXJVc2VyQXVzVGFiZWxsZUxlc2VuKCkgewogICAgcmV0 dXJuIHRhYmVsbGVGZWxkZXJMZXNlbignc3VwZXJ1c2VyLWlucHV0JykKICAgICAgICAuZmlsdGVy KGZ1bmN0aW9uKHN1KSB7IHJldHVybiBzdS5uYW1lICYmIHN1Lm53S2VubnVuZzsgfSk7Cn0KCi8v ID09PT09IEFkbWluOiBGYWNoYXVmc2ljaHQgPT09PT0KLy8gTnVyIFN1cGVyVXNlciBkYXJmIEVp bnRyYWVnZSBoaWVyIGFlbmRlcm4gKGFuYWxvZyB6dXIgU3VwZXJVc2VyLVZlcndhbHR1bmcpLgov LyBEYXRlbnN0cnVrdHVyIHBybyBFaW50cmFnOgovLyAgIHsgbmFtZSwgbndLZW5udW5nLCBzZWhl bjp7YWRtaW5pc3RyYXRpb24sc3RhdGlzdGlrLGxvZ2J1Y2gsYmFja3Vwc30sCi8vICAgICBlZGl0 aWVyZW46e3BlcnNvbmVuSWRzW10sIGRpZW5zdGdydXBwZW5bXSwgc3RhbmRvcnRlW119IH0KCmV4 cG9ydCBmdW5jdGlvbiBmYWNoYXVmc2ljaHRSZW5kZXJuKCkgewogICAgdmFyIHRib2R5ID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhY2hhdWZzaWNodC10Ym9keScpOwogICAgdmFyIGJ0bk5l dSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tZmFjaGF1ZnNpY2h0LW5ldScpOwogICAg dmFyIGJ0blNwZWljaGVybiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG4tZmFjaGF1ZnNp Y2h0LXNwZWljaGVybicpOwogICAgdmFyIGtlaW5SZWNodCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdmYWNoYXVmc2ljaHQta2Vpbi1yZWNodCcpOwogICAgaWYgKCF0Ym9keSkgcmV0dXJuOwoK ICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSB7CiAgICAgICAgaWYgKGJ0bk5ldSkgYnRu TmV1LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKGJ0blNwZWljaGVybikgYnRu U3BlaWNoZXJuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgaWYgKGtlaW5SZWNodCkg a2VpblJlY2h0LmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgICAgIHRib2R5Lmlu bmVySFRNTCA9ICcnOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChidG5OZXUpIGJ0bk5l dS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBpZiAoYnRuU3BlaWNoZXJuKSBidG5TcGVpY2hlcm4u c3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGtlaW5SZWNodCkga2VpblJlY2h0LmNsYXNzTGlz dC5hZGQoJ3ZlcnN0ZWNrdCcpOwoKICAgIHZhciBsaXN0ZSA9IFouYWRtaW4uZmFjaGF1ZnNpY2h0 IHx8IFtdOwogICAgZnVuY3Rpb24gY2hrKGlkeCwgZmVsZCwgY2hlY2tlZCkgewogICAgICAgIHJl dHVybiAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZmFjaGF1ZnNpY2h0LWNoayIgZGF0 YS1pZHg9IicgKyBpZHggKyAnIiBkYXRhLWZlbGQ9IicgKyBmZWxkICsgJyInICsgKGNoZWNrZWQg PyAnIGNoZWNrZWQnIDogJycpICsgJz4nOwogICAgfQogICAgdmFyIGh0bWwgPSAnJzsKICAgIGxp c3RlLmZvckVhY2goZnVuY3Rpb24oZmEsIGkpIHsKICAgICAgICB2YXIgcyA9IGZhLnNlaGVuIHx8 IHt9OwogICAgICAgIHZhciBlZCA9IGZhLmVkaXRpZXJlbiB8fCB7fTsKICAgICAgICB2YXIgcGxh bkxhYmVsID0gZmFjaGF1ZnNpY2h0UGxhbkxhYmVsKGVkKTsKICAgICAgICAvLyBHcmFudWxhcmUg U3ViLVNpY2h0LUJ1dHRvbnMgKEZpbmRpbmcgQy45IC8gU3BlYyBGLjIpOiB6ZWlnZW4KICAgICAg ICAvLyBrb256aXNlIHdpZSB2aWVsZSBBZG1pbi1TdWJ0YWJzIC8gU3RhdGlzdGlrLUJlcmVpY2hl IHNpY2h0YmFyCiAgICAgICAgLy8gc2luZC4gS2xpY2sgb2VmZm5ldCBqZXdlaWxpZ2VzIERldGFp bC1Nb2RhbC4KICAgICAgICB2YXIgYWRtaW5MYWJlbCA9IGZhY2hhdWZzaWNodFN1YlNpY2h0TGFi ZWwoJ2FkbWluJywgZmEuYWRtaW5TaWNodGJhcmtlaXQsIHMuYWRtaW5pc3RyYXRpb24pOwogICAg ICAgIHZhciBzdGF0TGFiZWwgID0gZmFjaGF1ZnNpY2h0U3ViU2ljaHRMYWJlbCgnc3RhdCcsICBm YS5zdGF0aXN0aWtTaWNodGJhcmtlaXQsIHMuc3RhdGlzdGlrKTsKCiAgICAgICAgaHRtbCArPSAn PHRyPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJyArIGVz Y2FwZUF0dHIoZmEubmFtZSB8fCAnJykgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiBkYXRhLWZl bGQ9Im5hbWUiIGNsYXNzPSJmYWNoYXVmc2ljaHQtaW5wdXQiIHN0eWxlPSJ3aWR0aDoxMDAlIj48 L3RkPicgKwogICAgICAgICAgICAnPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iJyArIGVz Y2FwZUF0dHIoZmEubndLZW5udW5nIHx8ICcnKSArICciIGRhdGEtaWR4PSInICsgaSArICciIGRh dGEtZmVsZD0ibndLZW5udW5nIiBjbGFzcz0iZmFjaGF1ZnNpY2h0LWlucHV0IiBzdHlsZT0id2lk dGg6MTAwJSIgcGxhY2Vob2xkZXI9IkRPTUFJTlxcdXNlciBvZGVyIE5XMDUzNjA5Ij48L3RkPicg KwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JyArIGNoayhpLCAn YWRtaW5pc3RyYXRpb24nLCAhIXMuYWRtaW5pc3RyYXRpb24pICsgJzwvdGQ+JyArCiAgICAgICAg ICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4nICsgY2hrKGksICdzdGF0aXN0aWsn LCAgICAgICEhcy5zdGF0aXN0aWspICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9 InRleHQtYWxpZ246Y2VudGVyIj4nICsgY2hrKGksICdsb2didWNoJywgICAgICAgICEhcy5sb2di dWNoKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRl ciI+JyArIGNoayhpLCAnYmFja3VwcycsICAgICAgICAhIXMuYmFja3VwcykgKyAnPC90ZD4nICsK ICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPicgKwogICAgICAgICAg ICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZhY2hhdWZzaWNodC1nZXNhbXQt Y2hrIiBkYXRhLWlkeD0iJyArIGkgKyAnIicgKyAoZmEuZ2VzYW10dmVyYW50d29ydGxpY2ggPyAn IGNoZWNrZWQnIDogJycpICsgJyB0aXRsZT0iR2VzYW10dmVyYW50d29ydGxpY2ggZsO8ciBkaWUg QmVzZXR6dW5nIOKAlCBzY2hhbHRldCBkZW4gSGVhZGVyLVRhYiBQcsO8ZnVuZyBmcmVpIj4nICsK ICAgICAgICAgICAgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArCiAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIGZhY2hhdWZzaWNodC1zdWJz aWNodC1idG4iIGRhdGEtYWt0aW9uPSJmYWNoYXVmc2ljaHQtc3Vic2ljaHQiIGRhdGEtaWR4PSIn ICsgaSArICciJyArIChzLmFkbWluaXN0cmF0aW9uID8gJycgOiAnIGRpc2FibGVkJykgKyAnIHRp dGxlPSInICsgZXNjYXBlQXR0cihzLmFkbWluaXN0cmF0aW9uID8gJ1dlbGNoZSBBZG1pbi1TdWIt VGFicyBkYXJmIGRpZXNlIEZhY2hhdWZzaWNodCBzZWhlbj8nIDogJ0Vyc3QgIkFkbWluIi1Iw6Rr Y2hlbiBvYmVuIHNldHplbicpICsgJyIgc3R5bGU9IndpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0 Ij4nICsgZXNjYXBlSFRNTChhZG1pbkxhYmVsKSArICc8L2J1dHRvbj4nICsKICAgICAgICAgICAg ICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXNlayBidG4ta2xlaW4gZmFjaGF1ZnNpY2h0LXN1 YnNpY2h0LWJ0biIgZGF0YS1ha3Rpb249ImZhY2hhdWZzaWNodC1zdGF0c2ljaHQiIGRhdGEtaWR4 PSInICsgaSArICciJyArIChzLnN0YXRpc3RpayA/ICcnIDogJyBkaXNhYmxlZCcpICsgJyB0aXRs ZT0iJyArIGVzY2FwZUF0dHIocy5zdGF0aXN0aWsgPyAnV2VsY2hlIFN0YXRpc3Rpay1CZXJlaWNo ZSBkYXJmIGRpZXNlIEZhY2hhdWZzaWNodCBzZWhlbj8nIDogJ0Vyc3QgIlN0YXRpc3RpayItSMOk a2NoZW4gb2JlbiBzZXR6ZW4nKSArICciIHN0eWxlPSJ3aWR0aDoxMDAlO3RleHQtYWxpZ246bGVm dDttYXJnaW4tdG9wOjNweCI+JyArIGVzY2FwZUhUTUwoc3RhdExhYmVsKSArICc8L2J1dHRvbj4n ICsKICAgICAgICAgICAgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArCiAgICAgICAgICAg ICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIGZhY2hhdWZzaWNodC1w bGFuLWJ0biIgZGF0YS1ha3Rpb249ImZhY2hhdWZzaWNodC1kZXRhaWxzIiBkYXRhLWlkeD0iJyAr IGkgKyAnIiB0aXRsZT0iS2xpY2tlbiB6dW0gQmVhcmJlaXRlbiBkZXIgUGxhbnVuZ3MtUmVjaHRl IiBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQiPicgKwogICAgICAgICAgICAgICAg ICAgIGVzY2FwZUhUTUwocGxhbkxhYmVsKSArCiAgICAgICAgICAgICAgICAnPC9idXR0b24+JyAr CiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAgICAgICAnPHRkIHN0eWxlPSJ3aGl0ZS1zcGFj ZTpub3dyYXAiPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tc2Vr IGJ0bi1rbGVpbiIgZGF0YS1ha3Rpb249ImZhY2hhdWZzaWNodC10ZXN0ZW4iIGRhdGEtaWR4PSIn ICsgaSArICciIHRpdGxlPSJPYmVyZmzDpGNoZSBhbHMgZGllc2UgRmFjaGF1ZnNpY2h0IHRlc3Rl biAobnVyIGxva2FsLCBTZXJ2ZXItUmVjaHRlIGJsZWliZW4gU1UpIiBzdHlsZT0ibWFyZ2luLXJp Z2h0OjRweCI+VGVzdGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFz cz0iYnRuIGJ0bi1nZWZhaHIgYnRuLWtsZWluIGJ0bi1sb2VzY2hlbiIgZGF0YS1ha3Rpb249ImZh Y2hhdWZzaWNodC1sb2VzY2hlbiIgZGF0YS1pZHg9IicgKyBpICsgJyIgdGl0bGU9IkzDtnNjaGVu Ij5Mw7ZzY2hlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC90ZD4nICsKICAgICAgICAgICAg JzwvdHI+JzsKICAgIH0pOwogICAgdGJvZHkuaW5uZXJIVE1MID0gaHRtbDsKICAgIGZhY2hhdWZz aWNodERpcnR5U2V0emVuKGZhbHNlKTsKfQoKLy8gQWJ3YWVydHNrb21wYXRpYmxlIEFkYXB0ZXIg 4oCUIGVpbmlnZSBleGlzdGllcmVuZGUgQXVmcnVmZXIgbnV0emVuIGRpZQovLyBhbHRlbiBGYWNo YXVmc2ljaHQtTmFtZW4uIFVtbGVpdGVuIGF1ZiBkZW4gemVudHJhbGVuIFRyYWNrZXIKLy8gKFJl Z2lzdHJ5IGluIGFkbWluLmpzIGRpcnR5VHJhY2tlckVpbnJpY2h0ZW4pLgpleHBvcnQgZnVuY3Rp b24gZmFjaGF1ZnNpY2h0RGlydHlTZXR6ZW4oaXN0RGlydHkpIHsgZGlydHlTZXR6ZW4oJ2ZhY2hh dWZzaWNodCcsIGlzdERpcnR5KTsgfQpleHBvcnQgZnVuY3Rpb24gZmFjaGF1ZnNpY2h0SXN0RGly dHkoKSB7IHJldHVybiBkaXJ0eUlzdCgnZmFjaGF1ZnNpY2h0Jyk7IH0KCi8vIEtvbmZpZ3VyaWVy YmFyZSBBZG1pbi1TdWItVGFicyBmdWVyIEZhY2hhdWZzaWNodC1HcmFudWxhci1TaWNodGJhcmtl aXQuCi8vIFNpY2hlcmhlaXRzLVRhYnMgKHN1cGVydXNlciwgZmFjaGF1ZnNpY2h0LCBzaWNodGJh cmtlaXQsIGZlYXR1cmVzLAovLyB0ZXN0ZGF0ZW4pIHNpbmQgaGFydGNvZGllcnQgU1Utb25seSB1 bmQgc3RlaGVuIE5JQ0hUIGluIGRpZXNlciBMaXN0ZS4KZXhwb3J0IHZhciBGQUNIQVVGU0lDSFRf QURNSU5fU1VCVEFCUyA9IFsKICAgIHsga2V5OiAncGVyc29uYWwnLCAgICAgIGxhYmVsOiAnUGVy c29uYWx2ZXJ3YWx0dW5nJyB9LAogICAgeyBrZXk6ICdncnVwcGVuJywgICAgICAgbGFiZWw6ICdE aWVuc3RncnVwcGVuJyB9LAogICAgeyBrZXk6ICdmZWllcnRhZ2UnLCAgICAgbGFiZWw6ICdGZWll cnRhZ2UnIH0sCiAgICB7IGtleTogJ2ZlcmllbicsICAgICAgICBsYWJlbDogJ0ZlcmllbicgfSwK ICAgIHsga2V5OiAnc29uZGVydGVybWluZScsIGxhYmVsOiAnU29uZGVydGVybWluZScgfSwKICAg IHsga2V5OiAnc2NoaWNodGNvZGVzJywgIGxhYmVsOiAnU2NoaWNodGNvZGVzJyB9LAogICAgeyBr ZXk6ICdzdGFuZG9ydGUnLCAgICAgbGFiZWw6ICdTdGFuZG9ydGUnIH0sCiAgICB7IGtleTogJ2Vp bnN0ZWxsdW5nZW4nLCBsYWJlbDogJ0VpbnN0ZWxsdW5nZW4nIH0sCiAgICB7IGtleTogJ2JhY2t1 cHMnLCAgICAgICBsYWJlbDogJ0JhY2t1cHMnIH0sCiAgICB7IGtleTogJ2ltcG9ydCcsICAgICAg ICBsYWJlbDogJ0V4Y2VsLUltcG9ydCcgfSwKICAgIHsga2V5OiAnYmV6ZWljaG51bmdlbicsIGxh YmVsOiAnQmV6ZWljaG51bmdlbicgfSwKICAgIHsga2V5OiAnaW5mb2hpbGZlJywgICAgIGxhYmVs OiAnSW5mb3JtYXRpb24gJiBIaWxmZScgfSwKICAgIHsga2V5OiAnZW1haWx2b3JsYWdlbicsIGxh YmVsOiAnRS1NYWlsLVZvcmxhZ2VuJyB9Cl07CmV4cG9ydCB2YXIgRkFDSEFVRlNJQ0hUX1NUQVRf QkVSRUlDSEUgPSBbCiAgICB7IGtleTogJ2twaXMnLCAgICAgICAgICAgICAgbGFiZWw6ICdLUEkt S2FjaGVsbiAob2JlbiknIH0sCiAgICB7IGtleTogJ3N0YXRGYWlybmVzcycsICAgICAgbGFiZWw6 ICdGYWlybmVzcy1BbnplaWdlJyB9LAogICAgeyBrZXk6ICdzdGF0TXVzdGVyJywgICAgICAgIGxh YmVsOiAnQXVmZsOkbGxpZ2tlaXRlbiAvIE11c3RlcicgfSwKICAgIHsga2V5OiAnc3RhdEFid2Vz ZW5oZWl0JywgICBsYWJlbDogJ0Fid2VzZW5oZWl0cy1LYWNoZWxuJyB9LAogICAgeyBrZXk6ICdz dGF0RGV0YWlsVGFiZWxsZScsIGxhYmVsOiAnRGV0YWlsLVRhYmVsbGUnIH0KXTsKCi8vIExhYmVs LUhlbHBlciBmdWVyIGRlbiBTdWItU2ljaHQtQnV0dG9uLiB0eXA6ICdhZG1pbid8J3N0YXQnLgov LyBzaWNodGJhcmtlaXRNYXA6IGRhcyBmYS5hZG1pblNpY2h0YmFya2VpdCAvIGZhLnN0YXRpc3Rp a1NpY2h0YmFya2VpdC1PYmpla3QuCi8vIERlZmF1bHQtVmVyaGFsdGVuIChNYXAgbGVlci91bmRl ZmluZWQpOiAiQWxsZSBlcmxhdWJ0IiB3ZW5uIFRhYiBmcmVpZ2VnZWJlbiwKLy8gIuKAlCIgd2Vu biBUYWIgbmljaHQgZnJlaWdlZ2ViZW4uCmV4cG9ydCBmdW5jdGlvbiBmYWNoYXVmc2ljaHRTdWJT aWNodExhYmVsKHR5cCwgc2ljaHRiYXJrZWl0TWFwLCB0YWJGcmVpZ2VnZWJlbikgewogICAgdmFy IGxpc3RlID0gdHlwID09PSAnYWRtaW4nID8gRkFDSEFVRlNJQ0hUX0FETUlOX1NVQlRBQlMgOiBG QUNIQVVGU0lDSFRfU1RBVF9CRVJFSUNIRTsKICAgIHZhciBiZXJlaWNoID0gdHlwID09PSAnYWRt aW4nID8gJ0FkbWluLVRhYnMnIDogJ1N0YXRpc3Rpay1CZXJlaWNoZSc7CiAgICBpZiAoIXRhYkZy ZWlnZWdlYmVuKSByZXR1cm4gJ+KAlCAoJyArICh0eXAgPT09ICdhZG1pbicgPyAnQWRtaW4nIDog J1N0YXRpc3RpaycpICsgJyBuaWNodCBmcmVpZ2VnZWJlbiknOwogICAgdmFyIG0gPSBzaWNodGJh cmtlaXRNYXAgfHwge307CiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG0pOwogICAgaWYgKGtl eXMubGVuZ3RoID09PSAwKSByZXR1cm4gJ0FsbGUgJyArIGJlcmVpY2ggKyAnIChTdGFuZGFyZCkn OwogICAgdmFyIHZlcnN0ZWNrdCA9IGtleXMuZmlsdGVyKGZ1bmN0aW9uKGspIHsgcmV0dXJuIG1b a10gPT09IGZhbHNlOyB9KS5sZW5ndGg7CiAgICB2YXIgc2ljaHRiYXIgPSBsaXN0ZS5sZW5ndGgg LSB2ZXJzdGVja3Q7CiAgICBpZiAodmVyc3RlY2t0ID09PSAwKSByZXR1cm4gJ0FsbGUgJyArIGJl cmVpY2g7CiAgICBpZiAoc2ljaHRiYXIgPT09IDApIHJldHVybiAnS2VpbmUgJyArIGJlcmVpY2g7 CiAgICByZXR1cm4gc2ljaHRiYXIgKyAnIHZvbiAnICsgbGlzdGUubGVuZ3RoICsgJyAnICsgYmVy ZWljaDsKfQoKLy8gR2VuZXJpc2NoZXIgTW9kYWwtS29udGV4dC4gS2Fwc2VsdCwgQVVGIFdFTENI RSBaLmFkbWluLUxpc3RlLCB1ZWJlcgovLyB3ZWxjaGVuIEVuZHBvaW50IHVuZCBtaXQgd2VsY2hl bSBUYWJlbGxlbi1SZWFkZXIvUmVuZGVyZXIgZWluCi8vIFN1Yi1TaWNodC0vUGxhbi1Nb2RhbCBh cmJlaXRldC4gRnJ1ZWhlciB3dXJkZSBkYWZ1ZXIga3VyenplaXRpZwovLyBaLmFkbWluLmZhY2hh dWZzaWNodCB1bWdlYm9nZW4gKyBuYWNoIDUwbXMgcGVyIHNldFRpbWVvdXQgenVydWVjay0KLy8g Z2VzcGllZ2VsdCDigJQgZGFzIGZldWVydGUgYWJlciwgQkVWT1IgZGVyIFVzZXIgaW0gTW9kYWwg IlNwZWljaGVybiIKLy8gZHJ1ZWNrdGUsIHNvZGFzcyBkZXIgTW9kYWwtU2F2ZSBkaWUgRUNIVEUg RmFjaGF1ZnNpY2h0LUxpc3RlIG1pdAovLyBSb2xsZW4tRGF0ZW4gdWViZXJzY2hyaWViIChDUklU SUNBTCBEYXRlbmtvcnJ1cHR1cikuIERlciBLb250ZXh0Ci8vIG1hY2h0IGRlbiBTd2FwIHVlYmVy Zmx1ZXNzaWc6IGplZGVzIE1vZGFsIHNjaHJlaWJ0IGRpcmVrdCBhdWYgZGllCi8vIHJpY2h0aWdl IExpc3RlLgpmdW5jdGlvbiBmYWNoYXVmc2ljaHRNb2RhbEN0eCgpIHsKICAgIHJldHVybiB7CiAg ICAgICAgZ2V0TGlzdGU6ICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIFouYWRtaW4uZmFjaGF1 ZnNpY2h0IHx8IFtdOyB9LAogICAgICAgIHNldExpc3RlOiAgICAgICAgZnVuY3Rpb24oZCkgeyBa LmFkbWluLmZhY2hhdWZzaWNodCA9IGQ7IH0sCiAgICAgICAgYXVzVGFiZWxsZUxlc2VuOiBmdW5j dGlvbigpIHsgcmV0dXJuIGZhY2hhdWZzaWNodEF1c1RhYmVsbGVMZXNlbigpOyB9LAogICAgICAg IGVuZHBvaW50OiAgICAgICAgJy9hcGkvYWRtaW4vZmFjaGF1ZnNpY2h0JywKICAgICAgICByZW5k ZXJuOiAgICAgICAgIGZhY2hhdWZzaWNodFJlbmRlcm4sCiAgICAgICAgLy8gRmFjaGF1ZnNpY2h0 LVBsYW4tTW9kYWwgbnV0enQgZWluZW4gSW5mby1Ub2FzdCBhbHMgU3BlaWNoZXItCiAgICAgICAg Ly8gSGlud2VpcyB1bmQgbGFlc3N0IGRhcyBEaXJ0eS1GbGFnIGluIFJ1aGUgKGtlaW4gUmVzZXQg aW4KICAgICAgICAvLyBmYWNoYXVmc2ljaHRSZW5kZXJuKS4KICAgICAgICBtYXJrRGlydHk6ICAg ICAgIGZ1bmN0aW9uKCkge30KICAgIH07Cn0KZnVuY3Rpb24gcm9sbGVNb2RhbEN0eCh0eXApIHsK ICAgIHJldHVybiB7CiAgICAgICAgZ2V0TGlzdGU6ICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJu IFouYWRtaW5bdHlwXSB8fCBbXTsgfSwKICAgICAgICBzZXRMaXN0ZTogICAgICAgIGZ1bmN0aW9u KGQpIHsgWi5hZG1pblt0eXBdID0gZDsgfSwKICAgICAgICBhdXNUYWJlbGxlTGVzZW46IGZ1bmN0 aW9uKCkgeyByZXR1cm4gcm9sbGVuQXVzVGFiZWxsZUxlc2VuKHR5cCwgZmFsc2UpOyB9LAogICAg ICAgIGVuZHBvaW50OiAgICAgICAgKFJPTExFTl9UWVBFTlt0eXBdIHx8IHt9KS5lbmRwb2ludCwK ICAgICAgICByZW5kZXJuOiAgICAgICAgIGZ1bmN0aW9uKCkgeyByb2xsZW5UYWJlbGxlUmVuZGVy bih0eXApOyB9LAogICAgICAgIC8vIHJvbGxlblRhYmVsbGVSZW5kZXJuIHNldHp0IERpcnR5PWZh bHNlIGFtIEVuZGUg4oCUIG5hY2ggZWluZXIKICAgICAgICAvLyBuaWNodC1wZXJzaXN0aWVydGVu IFBsYW4tQWVuZGVydW5nIG11c3MgZXMgd2llZGVyIHRydWUgc2Vpbi4KICAgICAgICBtYXJrRGly dHk6ICAgICAgIGZ1bmN0aW9uKCkgeyByb2xsZW5EaXJ0eVNldHplbih0eXAsIHRydWUpOyB9CiAg ICB9Owp9CgovLyBNb2RhbCBmdWVyIGdyYW51bGFyZSBTdWItU2ljaHRiYXJrZWl0LiBzaWNodFR5 cDogJ2FkbWluJ3wnc3RhdCcuCi8vIGN0eCBvcHRpb25hbCDigJQgRGVmYXVsdCBGYWNoYXVmc2lj aHQ7IFJvbGxlbiByZWljaGVuIHJvbGxlTW9kYWxDdHgodHlwKS4KZXhwb3J0IGZ1bmN0aW9uIGZh Y2hhdWZzaWNodFN1YlNpY2h0TW9kYWwoaWR4LCBzaWNodFR5cCwgY3R4KSB7CiAgICBpZiAoIVou cmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuOwogICAgY3R4ID0gY3R4IHx8IGZhY2hhdWZzaWNo dE1vZGFsQ3R4KCk7CiAgICB2YXIgdHlwID0gc2ljaHRUeXA7CiAgICAvLyBLb21wbGV0dGUgVGFi ZWxsZSBpbiBkZW4gU3RhdGUgc3BpZWdlbG4gKGFsbGUgWmVpbGVuLCBuaWNodCBudXIgZGllCiAg ICAvLyBlZGl0aWVydGUpIOKAlCBzb25zdCBnZWhlbiBwYXJhbGxlbGUgVGFiZWxsZW4tRWRpdHMg YmVpbSBNb2RhbC1TcHJ1bmcKICAgIC8vIHZlcmxvcmVuLgogICAgY3R4LnNldExpc3RlKGN0eC5h dXNUYWJlbGxlTGVzZW4oKSk7CiAgICB2YXIgbGlzdGUgPSBjdHguZ2V0TGlzdGUoKTsKICAgIGlm ICghbGlzdGVbaWR4XSkgcmV0dXJuOwogICAgdmFyIGZhID0gbGlzdGVbaWR4XTsKICAgIHZhciBm ZWxkID0gdHlwID09PSAnYWRtaW4nID8gJ2FkbWluU2ljaHRiYXJrZWl0JyA6ICdzdGF0aXN0aWtT aWNodGJhcmtlaXQnOwogICAgdmFyIHN1Ykxpc3RlID0gdHlwID09PSAnYWRtaW4nID8gRkFDSEFV RlNJQ0hUX0FETUlOX1NVQlRBQlMgOiBGQUNIQVVGU0lDSFRfU1RBVF9CRVJFSUNIRTsKICAgIHZh ciB0aXRlbCA9IHR5cCA9PT0gJ2FkbWluJyA/ICdBZG1pbi1TaWNodCcgOiAnU3RhdGlzdGlrLVNp Y2h0JzsKICAgIHZhciBiZXNjaHIgPSB0eXAgPT09ICdhZG1pbicKICAgICAgICA/ICdXZWxjaGUg U3ViLVRhYnMgZGVzIEFkbWluLUJlcmVpY2hzIGRhcmYgZGllc2UgRmFjaGF1ZnNpY2h0IHNlaGVu PyBTaWNoZXJoZWl0c2tyaXRpc2NoZSBUYWJzIChTdXBlclVzZXIsIEZhY2hhdWZzaWNodCwgU2lj aHRiYXJrZWl0LCBGdW5rdGlvbmVuLCBUZXN0ZGF0ZW4pIHNpbmQgZ3J1bmRzw6R0emxpY2ggU1Ut b25seSB1bmQgbmljaHQgZnJlaWdlYmJhci4nCiAgICAgICAgOiAnV2VsY2hlIEJlcmVpY2hlIGRl cyBTdGF0aXN0aWstVGFicyBkYXJmIGRpZXNlIEZhY2hhdWZzaWNodCBzZWhlbj8nOwogICAgdmFy IGFrdHVlbGxlTWFwID0gZmFbZmVsZF0gfHwge307CgogICAgdmFyIGxpc3RlX2h0bWwgPSBzdWJM aXN0ZS5tYXAoZnVuY3Rpb24oaXRlbSkgewogICAgICAgIHZhciBzaWNodGJhciA9IGFrdHVlbGxl TWFwW2l0ZW0ua2V5XSAhPT0gZmFsc2U7ICAvLyBEZWZhdWx0OiBzaWNodGJhcgogICAgICAgIHJl dHVybiAnPGxhYmVsIGNsYXNzPSJmYS1zdWJzaWNodC16ZWlsZSI+JyArCiAgICAgICAgICAgICc8 aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmYS1zdWJzaWNodC1jaGsiIGRhdGEta2V5PSIn ICsgZXNjYXBlQXR0cihpdGVtLmtleSkgKyAnIicgKyAoc2ljaHRiYXIgPyAnIGNoZWNrZWQnIDog JycpICsgJz4nICsKICAgICAgICAgICAgJzxzcGFuPicgKyBlc2NhcGVIVE1MKGl0ZW0ubGFiZWwp ICsgJzwvc3Bhbj4nICsKICAgICAgICAnPC9sYWJlbD4nOwogICAgfSkuam9pbignJyk7CgogICAg dmFyIGtvZXJwZXIgPQogICAgICAgICc8cCBjbGFzcz0iZXZtLWJlc2NocmVpYnVuZyI+JyArIGVz Y2FwZUhUTUwoYmVzY2hyKSArICc8L3A+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZhLXN1YnNp Y2h0LWFrdGlvbmVuIj4nICsKICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4ta2xl aW4iIHR5cGU9ImJ1dHRvbiIgaWQ9ImZhLXN1YnNpY2h0LWFsbGUiPkFsbGUgYWt0aXZpZXJlbjwv YnV0dG9uPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1rbGVpbiIgdHlw ZT0iYnV0dG9uIiBpZD0iZmEtc3Vic2ljaHQta2VpbmUiPkFsbGUgZGVha3RpdmllcmVuPC9idXR0 b24+JyArCiAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWtsZWluIiB0eXBlPSJi dXR0b24iIGlkPSJmYS1zdWJzaWNodC1kZWZhdWx0Ij5BdWYgU3RhbmRhcmQgenVyw7xja3NldHpl bjwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iZmEt c3Vic2ljaHQtbGlzdGUiPicgKyBsaXN0ZV9odG1sICsgJzwvZGl2Pic7CgogICAgdmFyIGZ1c3Mg PSAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0iZmEtc3ViLWFiYnIiIHR5cGU9ImJ1dHRvbiI+QWJi cmVjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRu LXByaW1hZXIiIGlkPSJkbGctc3BlaWNoZXJuIiB0eXBlPSJidXR0b24iPsOcYmVybmVobWVuPC9i dXR0b24+JzsKCiAgICBtb2RhbFplaWdlbih0aXRlbCArICc6ICcgKyAoZmEubmFtZSB8fCAnKG9o bmUgTmFtZSknKSwga29lcnBlciwgZnVzcywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG5ldSA9 IHt9OwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYS1zdWJzaWNodC1jaGsn KS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAgICAgICAgdmFyIGsgPSBjLmdldEF0dHJpYnV0 ZSgnZGF0YS1rZXknKTsKICAgICAgICAgICAgaWYgKCFjLmNoZWNrZWQpIG5ldVtrXSA9IGZhbHNl OyAgLy8gTnVyIGV4cGxpeml0ZSBWZXJzdGVja2VyIHNwZWljaGVybgogICAgICAgIH0pOwogICAg ICAgIC8vIFZvcmhlciBudXIgQ2xpZW50LVN0YXRlIOKAlCBoYXQgenUgIkdhbGVja2kgc2llaHQg dHJvdHpkZW0gYWxsZXMiCiAgICAgICAgLy8gZ2VmdWVocnQsIHdlaWwgVXNlciBkYXMgc2VwYXJh dGUgIkZhY2hhdWZzaWNodCBzcGVpY2hlcm4iIHVudGVuCiAgICAgICAgLy8gdmVyZ2lzc3QuIEpl dHp0IGRpcmVrdCBhbnMgQmFja2VuZCAoa29tcGxldHRlIGZhY2hhdWZzaWNodC1MaXN0ZQogICAg ICAgIC8vIG1pdCBkZW0gZWluZW4gYWt0dWFsaXNpZXJ0ZW4gRWludHJhZykuCiAgICAgICAgZmFb ZmVsZF0gPSBuZXU7CiAgICAgICAgdmFyIGRhdGVuID0gY3R4LmF1c1RhYmVsbGVMZXNlbigpOwog ICAgICAgIGlmICghZGF0ZW5baWR4XSkgeyB0b2FzdCgnRWludHJhZyBuaWNodCBtZWhyIHZvcmhh bmRlbicsICdmZWhsZXInKTsgcmV0dXJuOyB9CiAgICAgICAgZGF0ZW5baWR4XVtmZWxkXSA9IG5l dTsKICAgICAgICBhcGlQdXQoY3R4LmVuZHBvaW50LCBkYXRlbikudGhlbihmdW5jdGlvbihyKSB7 CiAgICAgICAgICAgIGN0eC5zZXRMaXN0ZShkYXRlbik7CiAgICAgICAgICAgIG1vZGFsU2NobGll c3Nlbih0cnVlKTsKICAgICAgICAgICAgY3R4LnJlbmRlcm4oKTsKICAgICAgICAgICAgdG9hc3Qo dGl0ZWwgKyAnIGdlc3BlaWNoZXJ0JywgJ2VyZm9sZycpOwogICAgICAgICAgICBpZiAociAmJiBy Ll9icmF1Y2h0X21haWx0bykgdmVyYW50d29ydHVuZ3NNYWlsdG9GZXVlcm4oci5fYnJhdWNodF9t YWlsdG8pOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdG9hc3Qo J0ZlaGxlcjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAgIH0pOwogICAgfSk7CiAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtc3ViLWFiYnInKS5hZGRFdmVudExpc3RlbmVy KCdjbGljaycsIGZ1bmN0aW9uKCkgeyBtb2RhbFNjaGxpZXNzZW4oKTsgfSk7CiAgICBkb2N1bWVu dC5nZXRFbGVtZW50QnlJZCgnZmEtc3Vic2ljaHQtYWxsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZh LXN1YnNpY2h0LWNoaycpLmZvckVhY2goZnVuY3Rpb24oYykgeyBjLmNoZWNrZWQgPSB0cnVlOyB9 KTsKICAgICAgICBaLm1vZGFsRGlydHkgPSB0cnVlOwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnZmEtc3Vic2ljaHQta2VpbmUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs IGZ1bmN0aW9uKCkgewogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYS1zdWJz aWNodC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gZmFsc2U7IH0pOwog ICAgICAgIFoubW9kYWxEaXJ0eSA9IHRydWU7CiAgICB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdmYS1zdWJzaWNodC1kZWZhdWx0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBm dW5jdGlvbigpIHsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmEtc3Vic2lj aHQtY2hrJykuZm9yRWFjaChmdW5jdGlvbihjKSB7IGMuY2hlY2tlZCA9IHRydWU7IH0pOwogICAg ICAgIFoubW9kYWxEaXJ0eSA9IHRydWU7CiAgICB9KTsKfQoKLy8gRXJ6ZXVndCBkYXMgZHluYW1p c2NoZSBMYWJlbCBmdWVyIGRlbiBQbGFudW5ncy1CdXR0b24gKEMuMTEpOgovLyAiTnVyIGVpZ2Vu ZSBaZWlsZSIgd2VubiBuaWNodHMgZ2VzZXR6dDsgIkFsbGUgRGllbnN0Z3J1cHBlbiIsICJBbGxl Ci8vIFN0YW5kb3J0ZSIsICJBbGxlIFBlcnNvbmVuIiB3ZW5uIGpld2VpbHMga29tcGxldHRlIEF1 c3dhaGw7IHNvbnN0Ci8vIEFuemFobCArIEJlcmVpY2guIE1laHJlcmUgQmVyZWljaGUgd2VyZGVu IG1pdCAiIMK3ICIgdmVyYnVuZGVuLgpleHBvcnQgZnVuY3Rpb24gZmFjaGF1ZnNpY2h0UGxhbkxh YmVsKGVkKSB7CiAgICBlZCA9IGVkIHx8IHt9OwogICAgdmFyIG5QID0gKGVkLnBlcnNvbmVuSWRz IHx8IFtdKS5sZW5ndGg7CiAgICB2YXIgbkcgPSAoZWQuZGllbnN0Z3J1cHBlbiB8fCBbXSkubGVu Z3RoOwogICAgdmFyIG5TID0gKGVkLnN0YW5kb3J0ZSB8fCBbXSkubGVuZ3RoOwogICAgaWYgKG5Q ID09PSAwICYmIG5HID09PSAwICYmIG5TID09PSAwKSByZXR1cm4gJ051ciBlaWdlbmUgWmVpbGUn OwogICAgdmFyIGdlc2FtdEcgPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5sZW5ndGg7CiAgICB2 YXIgZ2VzYW10UyA9IChaLmFkbWluLnN0YW5kb3J0ZSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHgp IHsgcmV0dXJuIHgua3VlcnplbCB8fCB4Lm5hbWU7IH0pLmxlbmd0aDsKICAgIC8vIFBlcnNvbmVu LVRvdGFsID0gYWt0aXZlIG1pbnVzIDEgKGVpZ2VuZSBQZXJzb24gaXN0IGltbWVyIGltcGxpeml0 IGVybGF1YnQpCiAgICB2YXIgZ2VzYW10UCA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZp bHRlcihmdW5jdGlvbihwKSB7IHJldHVybiBwLmFrdGl2OyB9KS5sZW5ndGggLSAxOwogICAgdmFy IHRlaWxlID0gW107CiAgICBpZiAobkcgPiAwKSB0ZWlsZS5wdXNoKG5HID09PSBnZXNhbXRHICYm IGdlc2FtdEcgPiAwID8gJ0FsbGUgRGllbnN0Z3J1cHBlbicgOiBuRyArIChuRyA9PT0gMSA/ICcg RGllbnN0Z3J1cHBlJyA6ICcgRGllbnN0Z3J1cHBlbicpKTsKICAgIGlmIChuUyA+IDApIHRlaWxl LnB1c2goblMgPT09IGdlc2FtdFMgJiYgZ2VzYW10UyA+IDAgPyAnQWxsZSBTdGFuZG9ydGUnIDog blMgKyAoblMgPT09IDEgPyAnIFN0YW5kb3J0JyA6ICcgU3RhbmRvcnRlJykpOwogICAgaWYgKG5Q ID4gMCkgdGVpbGUucHVzaChuUCA9PT0gZ2VzYW10UCAmJiBnZXNhbXRQID4gMCA/ICdBbGxlIFBl cnNvbmVuJyA6IG5QICsgKG5QID09PSAxID8gJyBQZXJzb24nIDogJyBQZXJzb25lbicpKTsKICAg IC8vIFdlbm4gYWxsZSBkcmVpICJBbGxlIC4uLiIgLT4ga29tcGFrdGVyICJEYXJmIGFsbGVzIHBs YW5lbiIKICAgIGlmICh0ZWlsZS5sZW5ndGggPT09IDMgJiYKICAgICAgICB0ZWlsZVswXS5pbmRl eE9mKCdBbGxlICcpID09PSAwICYmCiAgICAgICAgdGVpbGVbMV0uaW5kZXhPZignQWxsZSAnKSA9 PT0gMCAmJgogICAgICAgIHRlaWxlWzJdLmluZGV4T2YoJ0FsbGUgJykgPT09IDApIHsKICAgICAg ICByZXR1cm4gJ0RhcmYgYWxsZXMgcGxhbmVuJzsKICAgIH0KICAgIHJldHVybiB0ZWlsZS5qb2lu KCcgwrcgJyk7Cn0KCi8vIGZpbHRlckxlZXI6IHRydWUgPSBFaW50cmFlZ2Ugb2huZSBOYW1lIFVO RCBvaG5lIE5XLUtlbm51bmcgcmF1c3dlcmZlbi4KLy8gRGVmYXVsdCBmYWxzZSwgZGFtaXQgU3Rh dGUtVWViZXJuYWhtZW4gKExvZXNjaGVuLCBNb2RhbC1TcHJ1bmcpIGtlaW5lCi8vIGJlcmVpdHMg Z2VzcGVpY2hlcnRlbiBFaW50cmFlZ2UgbWl0IGZlaGxlbmRlciBud0tlbm51bmcgd2VnZmVnZW4u Ci8vIE51ciBkZXIgIkZhY2hhdWZzaWNodCBzcGVpY2hlcm4iLUJ1dHRvbiBydWZ0IG1pdCBmaWx0 ZXJMZWVyPXRydWUgYXVmLgpleHBvcnQgZnVuY3Rpb24gZmFjaGF1ZnNpY2h0QXVzVGFiZWxsZUxl c2VuKGZpbHRlckxlZXIpIHsKICAgIHZhciBhbHRlTGlzdGUgPSBaLmFkbWluLmZhY2hhdWZzaWNo dCB8fCBbXTsKICAgIHZhciBmZWxkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmFj aGF1ZnNpY2h0LWlucHV0Jyk7CiAgICB2YXIgbWFwID0ge307CiAgICBmZWxkZXIuZm9yRWFjaChm dW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGlkeCA9IGYuZ2V0QXR0cmlidXRlKCdkYXRhLWlkeCcp OwogICAgICAgIHZhciBmZWxkID0gZi5nZXRBdHRyaWJ1dGUoJ2RhdGEtZmVsZCcpOwogICAgICAg IGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAgICAgICAgbWFwW2lkeF1bZmVsZF0gPSBm LnZhbHVlLnRyaW0oKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZh Y2hhdWZzaWNodC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAgICB2YXIgaWR4ID0g Yy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4Jyk7CiAgICAgICAgdmFyIGZlbGQgPSBjLmdldEF0dHJp YnV0ZSgnZGF0YS1mZWxkJyk7CiAgICAgICAgaWYgKCFtYXBbaWR4XSkgbWFwW2lkeF0gPSB7fTsK ICAgICAgICBpZiAoIW1hcFtpZHhdLnNlaGVuKSBtYXBbaWR4XS5zZWhlbiA9IHt9OwogICAgICAg IG1hcFtpZHhdLnNlaGVuW2ZlbGRdID0gYy5jaGVja2VkOwogICAgfSk7CiAgICBkb2N1bWVudC5x dWVyeVNlbGVjdG9yQWxsKCcuZmFjaGF1ZnNpY2h0LWdlc2FtdC1jaGsnKS5mb3JFYWNoKGZ1bmN0 aW9uKGMpIHsKICAgICAgICB2YXIgaWR4ID0gYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtaWR4Jyk7CiAg ICAgICAgaWYgKCFtYXBbaWR4XSkgbWFwW2lkeF0gPSB7fTsKICAgICAgICBtYXBbaWR4XS5nZXNh bXR2ZXJhbnR3b3J0bGljaCA9IGMuY2hlY2tlZDsKICAgIH0pOwogICAgdmFyIGVyZ2VibmlzID0g W107CiAgICBPYmplY3Qua2V5cyhtYXApLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gcGFy c2VJbnQoYSkgLSBwYXJzZUludChiKTsgfSkuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAg dmFyIGFsdCA9IGFsdGVMaXN0ZVtwYXJzZUludChrKV0gfHwge307CiAgICAgICAgdmFyIGUgPSBt YXBba107CiAgICAgICAgLy8gTnVyIHdlbm4gZXhwbGl6aXQgZmlsdGVyTGVlcj10cnVlIGdlc2V0 enQgaXN0OiBFaW50cmFlZ2UgZ2FuegogICAgICAgIC8vIG9obmUgTmFtZSBVTkQgb2huZSBOVy1L ZW5udW5nIHZlcndlcmZlbiAoPSBsZWVyZSBuZXUtYW5nZWxlZ3RlCiAgICAgICAgLy8gUmVpaGVu KS4gQW5zb25zdGVuIElNTUVSIGR1cmNocmVpY2hlbiwgZGFtaXQgTG9lc2NoLUFrdGlvbmVuCiAg ICAgICAgLy8ga2VpbmUgYmVzdGVoZW5kZW4gRWludHJhZWdlIG1pdHJlaXNzZW4uCiAgICAgICAg aWYgKGZpbHRlckxlZXIgJiYgIWUubmFtZSAmJiAhZS5ud0tlbm51bmcpIHJldHVybjsKICAgICAg ICAvLyBHcmFudWxhcmUgU3ViLVNpY2h0YmFya2VpdCAoU3BlYyBGLjIpOiB3aXJkIGltIERldGFp bC1Nb2RhbCBnZXBmbGVndCwKICAgICAgICAvLyBoaWVyIG51ciBkdXJjaGdlcmVpY2h0LiBGYWxs cyBuaWNodCB2b3JoYW5kZW4gLT4gbGVlcmUgTWFwICg9IGFsbGVzIGVybGF1YnQpLgogICAgICAg IGVyZ2VibmlzLnB1c2goewogICAgICAgICAgICBuYW1lOiAgICAgIGUubmFtZSwKICAgICAgICAg ICAgbndLZW5udW5nOiBlLm53S2VubnVuZywKICAgICAgICAgICAgc2VoZW46IHsKICAgICAgICAg ICAgICAgIGFkbWluaXN0cmF0aW9uOiAhIShlLnNlaGVuICYmIGUuc2VoZW4uYWRtaW5pc3RyYXRp b24pLAogICAgICAgICAgICAgICAgc3RhdGlzdGlrOiAgICAgICEhKGUuc2VoZW4gJiYgZS5zZWhl bi5zdGF0aXN0aWspLAogICAgICAgICAgICAgICAgbG9nYnVjaDogICAgICAgICEhKGUuc2VoZW4g JiYgZS5zZWhlbi5sb2didWNoKSwKICAgICAgICAgICAgICAgIGJhY2t1cHM6ICAgICAgICAhIShl LnNlaGVuICYmIGUuc2VoZW4uYmFja3VwcykKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZ2Vz YW10dmVyYW50d29ydGxpY2g6ICEhZS5nZXNhbXR2ZXJhbnR3b3J0bGljaCwKICAgICAgICAgICAg YWRtaW5TaWNodGJhcmtlaXQ6ICAgICBhbHQuYWRtaW5TaWNodGJhcmtlaXQgICAgIHx8IHt9LAog ICAgICAgICAgICBzdGF0aXN0aWtTaWNodGJhcmtlaXQ6IGFsdC5zdGF0aXN0aWtTaWNodGJhcmtl aXQgfHwge30sCiAgICAgICAgICAgIGVkaXRpZXJlbjogYWx0LmVkaXRpZXJlbiB8fCB7IHBlcnNv bmVuSWRzOiBbXSwgZGllbnN0Z3J1cHBlbjogW10sIHN0YW5kb3J0ZTogW10gfQogICAgICAgIH0p OwogICAgfSk7CiAgICByZXR1cm4gZXJnZWJuaXM7Cn0KCi8vID09PT09IEdlbmVyaXNjaGUgUm9s bGVuLVZlcndhbHR1bmc6IERpcmVrdGlvbnNsZWl0dW5nICsgRnVlaHJ1bmdzc3RlbGxlID09PT09 Ci8vCi8vIFNjaGVtYS1pZGVudGlzY2ggenVyIEZhY2hhdWZzaWNodCwgYWJlciB6d2VpIHdlc2Vu dGxpY2hlIFVYLVVudGVyLQovLyBzY2hpZWRlOgovLyAgIC0gUGVyc29uZW4tU2VsZWN0b3IgKERy b3Bkb3duIGRlciBha3RpdmVuIFBlcnNvbmVuKSBzdGF0dCBmcmVpZXIKLy8gICAgIG5hbWUvbndL ZW5udW5nLUVpbmdhYmUg4oCUIG5hbWUgKyBud0tlbm51bmcgd2VyZGVuIGF1dG9tYXRpc2NoIGF1 cwovLyAgICAgZGVyIGdld2FlaGx0ZW4gUGVyc29uYWx2ZXJ3YWx0dW5ncy1QZXJzb24gdWViZXJu b21tZW4uCi8vICAgLSBLZWluZSAiR2VzYW10dmVyYW50d29ydGxpY2giLVNwYWx0ZSwga2VpbiBU ZXN0ZW4tQnV0dG9uIChkaWUKLy8gICAgIGJlaWRlbiBuZXVlbiBSb2xsZW4gc2luZCBrZWluZSBW ZXJ0cmV0dW5ncy1Sb2xsZW4gZnVlciBER0wtCi8vICAgICBWZXJhbnR3b3J0dW5nOyBkYXMgYmxl aWJ0IGRlciBGYWNoYXVmc2ljaHQgdm9yYmVoYWx0ZW4pLgovLwovLyBTdWItU2ljaHQtQnV0dG9u cyArIFBsYW51bmdzLVJlY2h0ZSB0ZWlsZW4gc2ljaCBNb2RhbGUgdW5kIExvZ2lrIG1pdAovLyBk ZXIgRmFjaGF1ZnNpY2h0IChTcGVjIEYuMikuIEJlaW0gTGVzZW4gYXVzIGRlbiBNb2RhbGVuIHNj aHJlaWJ0IGRlcgovLyBnZW5lcmlzY2hlIFBmYWQgYXVmIFouYWRtaW5bdHlwXSAodHlwID0gJ2Rp cmVrdGlvbnNsZWl0dW5nJyBvZGVyCi8vICdmdWVocnVuZ3NzdGVsbGUnKS4KCmV4cG9ydCB2YXIg Uk9MTEVOX1RZUEVOID0gewogICAgZGlyZWt0aW9uc2xlaXR1bmc6IHsgbGFiZWw6ICdEaXJla3Rp b25zbGVpdHVuZycsIGVuZHBvaW50OiAnL2FwaS9hZG1pbi9kaXJla3Rpb25zbGVpdHVuZycgfSwK ICAgIGZ1ZWhydW5nc3N0ZWxsZTogICB7IGxhYmVsOiAnRsO8aHJ1bmdzc3RlbGxlJywgICAgZW5k cG9pbnQ6ICcvYXBpL2FkbWluL2Z1ZWhydW5nc3N0ZWxsZScgICB9Cn07CgpmdW5jdGlvbiByb2xs ZVBlcnNvbk9wdGlvbnNIdG1sKGFrdHVlbGxlS2VubnVuZykgewogICAgdmFyIHBlcnNvbmVuID0g KFoucGxhbnVuZy5wZXJzb25lbiB8fCBbXSkKICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKHApIHsg cmV0dXJuIHAuYWt0aXYgJiYgIXAuZ2Vsb2VzY2h0QW07IH0pCiAgICAgICAgLnNsaWNlKCkKICAg ICAgICAuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgIHJldHVybiAoKGEubmFtZSB8 fCAnJykgKyAnICcgKyAoYS52b3JuYW1lIHx8ICcnKSkubG9jYWxlQ29tcGFyZSgoKGIubmFtZSB8 fCAnJykgKyAnICcgKyAoYi52b3JuYW1lIHx8ICcnKSksICdkZScpOwogICAgICAgIH0pOwogICAg dmFyIGh0bWwgPSAnPG9wdGlvbiB2YWx1ZT0iIj7igJQgUGVyc29uIHfDpGhsZW4g4oCUPC9vcHRp b24+JzsKICAgIHZhciBtaXRLZW5udW5nID0gW107CiAgICB2YXIgb2huZUtlbm51bmcgPSBbXTsK ICAgIHBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIGlmIChwLm53S2VubnVu ZyAmJiBwLm53S2VubnVuZy50cmltKCkpIG1pdEtlbm51bmcucHVzaChwKTsKICAgICAgICBlbHNl IG9obmVLZW5udW5nLnB1c2gocCk7CiAgICB9KTsKICAgIG1pdEtlbm51bmcuZm9yRWFjaChmdW5j dGlvbihwKSB7CiAgICAgICAgdmFyIGxhYmVsID0gKHAuZGllbnN0Z3JhZCA/IHAuZGllbnN0Z3Jh ZCArICcgJyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgKHAudm9ybmFtZSA/IHAudm9ybmFt ZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpICsKICAgICAgICAgICAgICAgICAgICAocC5n cnVwcGUgPyAnICgnICsgcC5ncnVwcGUgKyAnKScgOiAnJyk7CiAgICAgICAgdmFyIGtlbm51bmcg PSBwLm53S2VubnVuZzsKICAgICAgICB2YXIgc2VsID0gKGtlbm51bmcudG9Mb3dlckNhc2UoKSA9 PT0gKGFrdHVlbGxlS2VubnVuZyB8fCAnJykudG9Mb3dlckNhc2UoKSkgPyAnIHNlbGVjdGVkJyA6 ICcnOwogICAgICAgIGh0bWwgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBlc2NhcGVBdHRyKGtlbm51 bmcpICsgJyIgZGF0YS1uYW1lPSInICsgZXNjYXBlQXR0cigoKHAudm9ybmFtZSA/IHAudm9ybmFt ZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwgJycpKS50cmltKCkpICsgJyInICsgc2VsICsgJz4n ICsgZXNjYXBlSFRNTChsYWJlbCkgKyAnPC9vcHRpb24+JzsKICAgIH0pOwogICAgLy8gUGVyc29u ZW4gb2huZSBOVy1LZW5udW5nIGRpc2FibGVkLCBtaXQgR3J1cHBlbi1MYWJlbCB1bmQgSGlud2Vp cy4gRWluZQogICAgLy8gUm9sbGUgb2huZSBOVy1LZW5udW5nIGthbm4gYmVpbSBMb2dpbiBuaWNo dCB6dWdlb3JkbmV0IHdlcmRlbiDigJQgZGFoZXIKICAgIC8vIHNwZXJyZW4gd2lyIGRpZSBBdXN3 YWhsIHVuZCB6ZWlnZW4gZGVuIEdydW5kIGltIExpc3Rlbi1UZXh0IGFuLgogICAgaWYgKG9obmVL ZW5udW5nLmxlbmd0aCkgewogICAgICAgIGh0bWwgKz0gJzxvcHRncm91cCBsYWJlbD0i4oCUIGtl aW5lIE5XLUtlbm51bmcgaW4gUGVyc29uYWx2ZXJ3YWx0dW5nIGdlcGZsZWd0IOKAlCI+JzsKICAg ICAgICBvaG5lS2VubnVuZy5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgdmFyIGxh YmVsID0gKHAuZGllbnN0Z3JhZCA/IHAuZGllbnN0Z3JhZCArICcgJyA6ICcnKSArCiAgICAgICAg ICAgICAgICAgICAgICAgIChwLnZvcm5hbWUgPyBwLnZvcm5hbWUgKyAnICcgOiAnJykgKyAocC5u YW1lIHx8ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgIChwLmdydXBwZSA/ICcgKCcgKyBw LmdydXBwZSArICcpJyA6ICcnKSArICcg4oCUIE5XLUtlbm51bmcgZmVobHQnOwogICAgICAgICAg ICBodG1sICs9ICc8b3B0aW9uIHZhbHVlPSIiIGRpc2FibGVkPicgKyBlc2NhcGVIVE1MKGxhYmVs KSArICc8L29wdGlvbj4nOwogICAgICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvb3B0Z3JvdXA+ JzsKICAgIH0KICAgIHJldHVybiBodG1sOwp9CgpleHBvcnQgZnVuY3Rpb24gcm9sbGVuVGFiZWxs ZVJlbmRlcm4odHlwKSB7CiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0 eXAgKyAnLXRib2R5Jyk7CiAgICB2YXIgYnRuTmV1ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2J0bi0nICsgdHlwICsgJy1uZXUnKTsKICAgIHZhciBidG5TcGVpY2hlcm4gPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnYnRuLScgKyB0eXAgKyAnLXNwZWljaGVybicpOwogICAgdmFyIGtlaW5S ZWNodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHR5cCArICcta2Vpbi1yZWNodCcpOwogICAg aWYgKCF0Ym9keSkgcmV0dXJuOwoKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSB7CiAg ICAgICAgaWYgKGJ0bk5ldSkgYnRuTmV1LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAg aWYgKGJ0blNwZWljaGVybikgYnRuU3BlaWNoZXJuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAg ICAgICAgaWYgKGtlaW5SZWNodCkga2VpblJlY2h0LmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNr dCcpOwogICAgICAgIHRib2R5LmlubmVySFRNTCA9ICcnOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIGlmIChidG5OZXUpIGJ0bk5ldS5zdHlsZS5kaXNwbGF5ID0gJyc7CiAgICBpZiAoYnRuU3Bl aWNoZXJuKSBidG5TcGVpY2hlcm4uc3R5bGUuZGlzcGxheSA9ICcnOwogICAgaWYgKGtlaW5SZWNo dCkga2VpblJlY2h0LmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwoKICAgIHZhciBsaXN0ZSA9 IFouYWRtaW5bdHlwXSB8fCBbXTsKICAgIGZ1bmN0aW9uIGNoayhpZHgsIGZlbGQsIGNoZWNrZWQp IHsKICAgICAgICByZXR1cm4gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9InJvbGxlLWNo ayIgZGF0YS10eXA9IicgKyB0eXAgKyAnIiBkYXRhLWlkeD0iJyArIGlkeCArICciIGRhdGEtZmVs ZD0iJyArIGZlbGQgKyAnIicgKyAoY2hlY2tlZCA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPic7CiAg ICB9CiAgICB2YXIgaHRtbCA9ICcnOwogICAgbGlzdGUuZm9yRWFjaChmdW5jdGlvbihlLCBpKSB7 CiAgICAgICAgdmFyIHMgPSBlLnNlaGVuIHx8IHt9OwogICAgICAgIHZhciBlZCA9IGUuZWRpdGll cmVuIHx8IHt9OwogICAgICAgIHZhciBwbGFuTGFiZWwgPSBmYWNoYXVmc2ljaHRQbGFuTGFiZWwo ZWQpOwogICAgICAgIHZhciBhZG1pbkxhYmVsID0gZmFjaGF1ZnNpY2h0U3ViU2ljaHRMYWJlbCgn YWRtaW4nLCBlLmFkbWluU2ljaHRiYXJrZWl0LCBzLmFkbWluaXN0cmF0aW9uKTsKICAgICAgICB2 YXIgc3RhdExhYmVsICA9IGZhY2hhdWZzaWNodFN1YlNpY2h0TGFiZWwoJ3N0YXQnLCAgZS5zdGF0 aXN0aWtTaWNodGJhcmtlaXQsIHMuc3RhdGlzdGlrKTsKCiAgICAgICAgaHRtbCArPSAnPHRyPicg KwogICAgICAgICAgICAnPHRkPjxzZWxlY3QgY2xhc3M9InJvbGxlLWlucHV0IHJvbGxlLXBlcnNv bi1zZWxlY3QiIGRhdGEtdHlwPSInICsgdHlwICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIgZGF0 YS1mZWxkPSJud0tlbm51bmciIHN0eWxlPSJ3aWR0aDoxMDAlIj4nICsKICAgICAgICAgICAgICAg IHJvbGxlUGVyc29uT3B0aW9uc0h0bWwoZS5ud0tlbm51bmcgfHwgJycpICsKICAgICAgICAgICAg Jzwvc2VsZWN0PjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9InRleHQtYWxpZ246Y2Vu dGVyIj4nICsgY2hrKGksICdhZG1pbmlzdHJhdGlvbicsICEhcy5hZG1pbmlzdHJhdGlvbikgKyAn PC90ZD4nICsKICAgICAgICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPicgKyBj aGsoaSwgJ3N0YXRpc3RpaycsICAgICAgISFzLnN0YXRpc3RpaykgKyAnPC90ZD4nICsKICAgICAg ICAgICAgJzx0ZCBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPicgKyBjaGsoaSwgJ2xvZ2J1Y2gn LCAgICAgICAgISFzLmxvZ2J1Y2gpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9 InRleHQtYWxpZ246Y2VudGVyIj4nICsgY2hrKGksICdiYWNrdXBzJywgICAgICAgICEhcy5iYWNr dXBzKSArICc8L3RkPicgKwogICAgICAgICAgICAnPHRkPicgKwogICAgICAgICAgICAgICAgJzxi dXR0b24gY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiByb2xsZS1zdWJzaWNodC1idG4iIGRh dGEtYWt0aW9uPSJyb2xsZS1zdWJzaWNodCIgZGF0YS10eXA9IicgKyB0eXAgKyAnIiBkYXRhLWlk eD0iJyArIGkgKyAnIicgKyAocy5hZG1pbmlzdHJhdGlvbiA/ICcnIDogJyBkaXNhYmxlZCcpICsg JyBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQiPicgKyBlc2NhcGVIVE1MKGFkbWlu TGFiZWwpICsgJzwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0 biBidG4tc2VrIGJ0bi1rbGVpbiByb2xsZS1zdWJzaWNodC1idG4iIGRhdGEtYWt0aW9uPSJyb2xs ZS1zdGF0c2ljaHQiIGRhdGEtdHlwPSInICsgdHlwICsgJyIgZGF0YS1pZHg9IicgKyBpICsgJyIn ICsgKHMuc3RhdGlzdGlrID8gJycgOiAnIGRpc2FibGVkJykgKyAnIHN0eWxlPSJ3aWR0aDoxMDAl O3RleHQtYWxpZ246bGVmdDttYXJnaW4tdG9wOjNweCI+JyArIGVzY2FwZUhUTUwoc3RhdExhYmVs KSArICc8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+ JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWlu IHJvbGxlLXBsYW4tYnRuIiBkYXRhLWFrdGlvbj0icm9sbGUtZGV0YWlscyIgZGF0YS10eXA9Iicg KyB0eXAgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiBzdHlsZT0id2lkdGg6MTAwJTt0ZXh0LWFs aWduOmxlZnQiPicgKwogICAgICAgICAgICAgICAgICAgIGVzY2FwZUhUTUwocGxhbkxhYmVsKSAr CiAgICAgICAgICAgICAgICAnPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAg ICAgICAgICAnPHRkPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4t Z2VmYWhyIGJ0bi1rbGVpbiBidG4tbG9lc2NoZW4iIGRhdGEtYWt0aW9uPSJyb2xsZS1sb2VzY2hl biIgZGF0YS10eXA9IicgKyB0eXAgKyAnIiBkYXRhLWlkeD0iJyArIGkgKyAnIiB0aXRsZT0iTMO2 c2NoZW4iPkzDtnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8L3RkPicgKwogICAgICAg ICAgICAnPC90cj4nOwogICAgfSk7CiAgICB0Ym9keS5pbm5lckhUTUwgPSBodG1sOwogICAgcm9s bGVuRGlydHlTZXR6ZW4odHlwLCBmYWxzZSk7Cn0KCmV4cG9ydCBmdW5jdGlvbiByb2xsZW5EaXJ0 eVNldHplbih0eXAsIGlzdERpcnR5KSB7IGRpcnR5U2V0emVuKHR5cCwgaXN0RGlydHkpOyB9Cgov LyBCZWltIEF1c2xlc2VuOiBud0tlbm51bmcga29tbXQgYXVzIGRlbSBTZWxlY3QtV2VydCwgbmFt ZSBhdXMgZGVtCi8vIGRhdGEtbmFtZS1BdHRyaWJ1dCBkZXMgc2VsZWt0aWVydGVuIE9wdGlvbnMu CmV4cG9ydCBmdW5jdGlvbiByb2xsZW5BdXNUYWJlbGxlTGVzZW4odHlwLCBmaWx0ZXJMZWVyKSB7 CiAgICB2YXIgYWx0ZUxpc3RlID0gWi5hZG1pblt0eXBdIHx8IFtdOwogICAgdmFyIG1hcCA9IHt9 OwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJvbGxlLWlucHV0W2RhdGEtdHlwPSIn ICsgdHlwICsgJyJdJykuZm9yRWFjaChmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGlkeCA9IGYu Z2V0QXR0cmlidXRlKCdkYXRhLWlkeCcpOwogICAgICAgIHZhciBmZWxkID0gZi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtZmVsZCcpOwogICAgICAgIGlmICghbWFwW2lkeF0pIG1hcFtpZHhdID0ge307CiAg ICAgICAgdmFyIHdlcnQgPSBmLnZhbHVlLnRyaW0oKTsKICAgICAgICBtYXBbaWR4XVtmZWxkXSA9 IHdlcnQ7CiAgICAgICAgaWYgKGZlbGQgPT09ICdud0tlbm51bmcnICYmIGYudGFnTmFtZSA9PT0g J1NFTEVDVCcgJiYgZi5zZWxlY3RlZEluZGV4ID49IDApIHsKICAgICAgICAgICAgdmFyIG9wdCA9 IGYub3B0aW9uc1tmLnNlbGVjdGVkSW5kZXhdOwogICAgICAgICAgICBtYXBbaWR4XS5uYW1lID0g b3B0ID8gKG9wdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtbmFtZScpIHx8ICcnKSA6ICcnOwogICAgICAg IH0KICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJvbGxlLWNoa1tkYXRh LXR5cD0iJyArIHR5cCArICciXScpLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgIHZhciBp ZHggPSBjLmdldEF0dHJpYnV0ZSgnZGF0YS1pZHgnKTsKICAgICAgICB2YXIgZmVsZCA9IGMuZ2V0 QXR0cmlidXRlKCdkYXRhLWZlbGQnKTsKICAgICAgICBpZiAoIW1hcFtpZHhdKSBtYXBbaWR4XSA9 IHt9OwogICAgICAgIGlmICghbWFwW2lkeF0uc2VoZW4pIG1hcFtpZHhdLnNlaGVuID0ge307CiAg ICAgICAgbWFwW2lkeF0uc2VoZW5bZmVsZF0gPSBjLmNoZWNrZWQ7CiAgICB9KTsKICAgIHZhciBl cmdlYm5pcyA9IFtdOwogICAgT2JqZWN0LmtleXMobWFwKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsg cmV0dXJuIHBhcnNlSW50KGEpIC0gcGFyc2VJbnQoYik7IH0pLmZvckVhY2goZnVuY3Rpb24oaykg ewogICAgICAgIHZhciBhbHQgPSBhbHRlTGlzdGVbcGFyc2VJbnQoayldIHx8IHt9OwogICAgICAg IHZhciBlID0gbWFwW2tdOwogICAgICAgIGlmIChmaWx0ZXJMZWVyICYmICFlLm53S2VubnVuZykg cmV0dXJuOwogICAgICAgIGVyZ2VibmlzLnB1c2goewogICAgICAgICAgICBuYW1lOiAgICAgIGUu bmFtZSB8fCAnJywKICAgICAgICAgICAgbndLZW5udW5nOiBlLm53S2VubnVuZyB8fCAnJywKICAg ICAgICAgICAgc2VoZW46IHsKICAgICAgICAgICAgICAgIGFkbWluaXN0cmF0aW9uOiAhIShlLnNl aGVuICYmIGUuc2VoZW4uYWRtaW5pc3RyYXRpb24pLAogICAgICAgICAgICAgICAgc3RhdGlzdGlr OiAgICAgICEhKGUuc2VoZW4gJiYgZS5zZWhlbi5zdGF0aXN0aWspLAogICAgICAgICAgICAgICAg bG9nYnVjaDogICAgICAgICEhKGUuc2VoZW4gJiYgZS5zZWhlbi5sb2didWNoKSwKICAgICAgICAg ICAgICAgIGJhY2t1cHM6ICAgICAgICAhIShlLnNlaGVuICYmIGUuc2VoZW4uYmFja3VwcykKICAg ICAgICAgICAgfSwKICAgICAgICAgICAgYWRtaW5TaWNodGJhcmtlaXQ6ICAgICBhbHQuYWRtaW5T aWNodGJhcmtlaXQgICAgIHx8IHt9LAogICAgICAgICAgICBzdGF0aXN0aWtTaWNodGJhcmtlaXQ6 IGFsdC5zdGF0aXN0aWtTaWNodGJhcmtlaXQgfHwge30sCiAgICAgICAgICAgIGVkaXRpZXJlbjog YWx0LmVkaXRpZXJlbiB8fCB7IHBlcnNvbmVuSWRzOiBbXSwgZGllbnN0Z3J1cHBlbjogW10sIHN0 YW5kb3J0ZTogW10gfQogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gZXJnZWJuaXM7Cn0K CmV4cG9ydCBmdW5jdGlvbiByb2xsZW5OZXVFaW50cmFnKHR5cCkgewogICAgaWYgKCFaLnJlY2h0 ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIHZhciBha3R1ZWxsID0gcm9sbGVuQXVzVGFiZWxs ZUxlc2VuKHR5cCwgZmFsc2UpOwogICAgYWt0dWVsbC5wdXNoKHsKICAgICAgICBuYW1lOiAnJywg bndLZW5udW5nOiAnJywKICAgICAgICBzZWhlbjogeyBhZG1pbmlzdHJhdGlvbjogZmFsc2UsIHN0 YXRpc3RpazogZmFsc2UsIGxvZ2J1Y2g6IGZhbHNlLCBiYWNrdXBzOiBmYWxzZSB9LAogICAgICAg IGFkbWluU2ljaHRiYXJrZWl0OiB7fSwgc3RhdGlzdGlrU2ljaHRiYXJrZWl0OiB7fSwKICAgICAg ICBlZGl0aWVyZW46IHsgcGVyc29uZW5JZHM6IFtdLCBkaWVuc3RncnVwcGVuOiBbXSwgc3RhbmRv cnRlOiBbXSB9CiAgICB9KTsKICAgIFouYWRtaW5bdHlwXSA9IGFrdHVlbGw7CiAgICByb2xsZW5U YWJlbGxlUmVuZGVybih0eXApOwogICAgcm9sbGVuRGlydHlTZXR6ZW4odHlwLCB0cnVlKTsKfQoK ZXhwb3J0IGZ1bmN0aW9uIHJvbGxlbkVpbnRyYWdMb2VzY2hlbih0eXAsIGlkeCkgewogICAgaWYg KCFaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIHZhciBha3R1ZWxsID0gcm9sbGVu QXVzVGFiZWxsZUxlc2VuKHR5cCwgZmFsc2UpOwogICAgYWt0dWVsbC5zcGxpY2UoaWR4LCAxKTsK ICAgIFouYWRtaW5bdHlwXSA9IGFrdHVlbGw7CiAgICByb2xsZW5UYWJlbGxlUmVuZGVybih0eXAp OwogICAgcm9sbGVuRGlydHlTZXR6ZW4odHlwLCB0cnVlKTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHJv bGxlblNwZWljaGVybih0eXApIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1 cm4gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICB2YXIgbWV0YSA9IFJPTExFTl9UWVBFTlt0eXBdOwog ICAgaWYgKCFtZXRhKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CiAgICAvLyBLb21wbGV0dGUg TGlzdGUgbGVzZW4gKGF1Y2ggRWludHJhZWdlIG9obmUgS2VubnVuZyDigJQgZGllc2UgdmVybGll cmVuIHdpcgogICAgLy8gc29uc3Qgc3RpbGxzY2h3ZWlnZW5kLCB3ZW5uIHouQi4gZGVyIFVzZXIg dmVyZ2Vzc2VuIGhhdCBlaW5lIFBlcnNvbgogICAgLy8gYXVzenV3YWVobGVuKS4KICAgIHZhciBh bGxlID0gcm9sbGVuQXVzVGFiZWxsZUxlc2VuKHR5cCwgZmFsc2UpOwogICAgdmFyIGxlZXIgPSBh bGxlLmZpbHRlcihmdW5jdGlvbihlKSB7IHJldHVybiAhZS5ud0tlbm51bmc7IH0pOwogICAgaWYg KGxlZXIubGVuZ3RoID4gMCkgewogICAgICAgIHRvYXN0KG1ldGEubGFiZWwgKyAnOiAnICsgbGVl ci5sZW5ndGggKyAnIEVpbnRyYWcvRWludHLDpGdlIG9obmUgUGVyc29uZW4tQXVzd2FobCDigJQg Yml0dGUgdm9yIGRlbSBTcGVpY2hlcm4gZWluZSBQZXJzb24gd8OkaGxlbiBvZGVyIGRlbiBsZWVy ZW4gRWludHJhZyBsw7ZzY2hlbicsICd3YXJudW5nJyk7CiAgICAgICAgcmV0dXJuIFByb21pc2Uu cmVzb2x2ZSgpOwogICAgfQogICAgdmFyIGRhdGVuID0gYWxsZTsKICAgIFouYWRtaW5bdHlwXSA9 IGRhdGVuOwogICAgcmV0dXJuIGFwaVB1dChtZXRhLmVuZHBvaW50LCBkYXRlbikudGhlbihmdW5j dGlvbigpIHsKICAgICAgICB0b2FzdChtZXRhLmxhYmVsICsgJyBnZXNwZWljaGVydCAoJyArIGRh dGVuLmxlbmd0aCArICcgRWludHJhZycgKyAoZGF0ZW4ubGVuZ3RoID09PSAxID8gJycgOiAnZScp ICsgJyknLCAnZXJmb2xnJyk7CiAgICAgICAgcm9sbGVuRGlydHlTZXR6ZW4odHlwLCBmYWxzZSk7 CiAgICAgICAgcm9sbGVuVGFiZWxsZVJlbmRlcm4odHlwKTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9u KGUpIHsKICAgICAgICB0b2FzdCgnRmVobGVyOiAnICsgKGUgJiYgZS5tZXNzYWdlIHx8IGUpLCAn ZmVobGVyJyk7CiAgICAgICAgdGhyb3cgZTsKICAgIH0pOwp9CgovLyBTdWItU2ljaHQtTW9kYWwg ZnVlciBkaWUgbmV1ZW4gUm9sbGVuIChEaXJla3Rpb25zbGVpdHVuZy9GdWVocnVuZ3MtCi8vIHN0 ZWxsZSkuIE51dHp0IGpldHp0IGRhcyBnZW5lcmlzY2hlIGZhY2hhdWZzaWNodFN1YlNpY2h0TW9k YWwgbWl0IGVpbmVtCi8vIFJvbGxlbi1Lb250ZXh0IOKAlCBLRUlOIHRlbXBvcmFlcmVzIFVtYmll Z2VuIHZvbiBaLmFkbWluLmZhY2hhdWZzaWNodCArCi8vIHNldFRpbWVvdXQtUnVlY2tzcGllZ2Vs dW5nIG1laHIuIERlciBmcnVlaGVyZSBTd2FwLVRyaWNrIGZldWVydGUgZGFzCi8vIFp1cnVlY2tz cGllZ2VsbiBuYWNoIDUwbXMsIGFsc28gYmV2b3IgZGVyIFVzZXIgaW0gTW9kYWwgIlNwZWljaGVy biIKLy8gZHJ1Y2t0ZSwgc29kYXNzIGRlciBNb2RhbC1TYXZlIGRpZSBlY2h0ZSBGYWNoYXVmc2lj aHQtTGlzdGUgbWl0Ci8vIFJvbGxlbi1EYXRlbiB1ZWJlcnNjaHJpZWIgKENSSVRJQ0FMIERhdGVu a29ycnVwdHVyKSBiencuIGVpbmVuCi8vIFR5cGVFcnJvciBhdXNsb2VzdGUuIEVybGVkaWd0Lgpl eHBvcnQgZnVuY3Rpb24gcm9sbGVuU3ViU2ljaHRNb2RhbCh0eXAsIGlkeCwgc2ljaHRUeXApIHsK ICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICBpZiAoIVJPTExFTl9U WVBFTlt0eXBdKSByZXR1cm47CiAgICBmYWNoYXVmc2ljaHRTdWJTaWNodE1vZGFsKGlkeCwgc2lj aHRUeXAsIHJvbGxlTW9kYWxDdHgodHlwKSk7Cn0KCi8vIFBsYW4tUmVjaHRlLU1vZGFsOiBhbmFs b2cgdWViZXIgZGVuIGdlbmVyaXNjaGVuIERldGFpbC1Nb2RhbC1QZmFkLgpleHBvcnQgZnVuY3Rp b24gcm9sbGVuUGxhblJlY2h0ZU1vZGFsKHR5cCwgaWR4KSB7CiAgICBpZiAoIVoucmVjaHRlLmlz dFN1cGVyVXNlcikgcmV0dXJuOwogICAgaWYgKCFST0xMRU5fVFlQRU5bdHlwXSkgcmV0dXJuOwog ICAgZmFjaGF1ZnNpY2h0RGV0YWlsTW9kYWwoaWR4LCByb2xsZU1vZGFsQ3R4KHR5cCkpOwp9Cgov LyBNb2RhbCBmdWVyICJOZXVlciBGYWNoYXVmc2ljaHQtRWludHJhZyIg4oCUIFVzZXItV3Vuc2No OgovLyBWYXJpYW50ZSBBOiBEcm9wZG93biBkZXIgV2FjaGxlaXR1bmdlbiAoR3J1cHBlIFdMKSBh bHMgUXVpY2stUGljawovLyBWYXJpYW50ZSBCOiBNYW51ZWxsZSBBbmxhZ2UgKFBlcnNvbiBlcnNj aGVpbnQgTklDSFQgaW4gZGVyIFBsYW51bmcsCi8vICAgICAgICAgICAgIGlzdCBudXIgRmFjaGF1 ZnNpY2h0LUVpbnRyYWcgbWl0IE5hbWUgKyBud0tlbm51bmcpCmV4cG9ydCBmdW5jdGlvbiBmYWNo YXVmc2ljaHROZXVNb2RhbCgpIHsKICAgIGlmICghWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1 cm47CiAgICB2YXIgd2FjaGxlaXR1bmdlbiA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZp bHRlcihmdW5jdGlvbihwKSB7CiAgICAgICAgcmV0dXJuIHAuYWt0aXYgJiYgcC5ncnVwcGUgPT09 ICdXTCc7CiAgICB9KS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICB2YXIgYW4gPSAoKGEu dm9ybmFtZSB8fCAnJykgKyAnICcgKyAoYS5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgICAgIHZh ciBibiA9ICgoYi52b3JuYW1lIHx8ICcnKSArICcgJyArIChiLm5hbWUgfHwgJycpKS50cmltKCk7 CiAgICAgICAgcmV0dXJuIGFuLmxvY2FsZUNvbXBhcmUoYm4sICdkZScpOwogICAgfSk7CiAgICB2 YXIgc2Nob25EcmluID0ge307CiAgICAoWi5hZG1pbi5mYWNoYXVmc2ljaHQgfHwgW10pLmZvckVh Y2goZnVuY3Rpb24oZmEpIHsKICAgICAgICBpZiAoZmEubndLZW5udW5nKSBzY2hvbkRyaW5bZmEu bndLZW5udW5nLnRvTG93ZXJDYXNlKCldID0gdHJ1ZTsKICAgIH0pOwoKICAgIHZhciBvcHRpb25l biA9IHdhY2hsZWl0dW5nZW4ubWFwKGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgYW56ZWlnZSA9 ICgocC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsgcC5uYW1lKS50cmltKCk7CiAg ICAgICAgdmFyIG9lID0gcC5vZSA/ICcgKCcgKyBwLm9lICsgJyknIDogJyc7CiAgICAgICAgdmFy IGV4aXN0aWVydCA9IHAubndLZW5udW5nICYmIHNjaG9uRHJpbltwLm53S2VubnVuZy50b0xvd2Vy Q2FzZSgpXTsKICAgICAgICByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBwLmlkICsgJyInICsg KGV4aXN0aWVydCA/ICcgZGlzYWJsZWQnIDogJycpICsgJz4nICsKICAgICAgICAgICAgICAgZXNj YXBlSFRNTChhbnplaWdlICsgb2UgKyAoZXhpc3RpZXJ0ID8gJyDigJQgYmVyZWl0cyBGYWNoYXVm c2ljaHQnIDogJycpKSArICc8L29wdGlvbj4nOwogICAgfSkuam9pbignJyk7CgogICAgdmFyIGtv ZXJwZXIgPQogICAgICAgICc8cCBjbGFzcz0iZXZtLWJlc2NocmVpYnVuZyI+V8OkaGxlIGVpbmUg YmVzdGVoZW5kZSBQZXJzb24gYXVzIGRlciA8c3Ryb25nPldhY2hsZWl0dW5nIChHcnVwcGUgV0wp PC9zdHJvbmc+IG9kZXIgbGVnZSBtYW51ZWxsIGVpbmUgbmV1ZSBGYWNoYXVmc2ljaHQgYW4uIE1h bnVlbGwgYW5nZWxlZ3RlIFBlcnNvbmVuIGVyc2NoZWluZW4gPHN0cm9uZz5uaWNodDwvc3Ryb25n PiBpbiBkZXIgUGxhbnVuZyDigJQgc2llIGV4aXN0aWVyZW4gbnVyIGFscyBGYWNoYXVmc2ljaHQt RWludHJhZy48L3A+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImZhLW5ldS1tb2R1cy16ZWlsZSI+ JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9ImZhLW5ldS1tb2R1cy1vcHQiPjxpbnB1dCB0 eXBlPSJyYWRpbyIgbmFtZT0iZmEtbmV1LW1vZHVzIiB2YWx1ZT0iZHJvcGRvd24iJyArICh3YWNo bGVpdHVuZ2VuLmxlbmd0aCA/ICcgY2hlY2tlZCcgOiAnJykgKyAod2FjaGxlaXR1bmdlbi5sZW5n dGggPyAnJyA6ICcgZGlzYWJsZWQnKSArICc+IEF1cyBXYWNobGVpdHVuZyB3w6RobGVuPC9sYWJl bD4nICsKICAgICAgICAgICAgJzxsYWJlbCBjbGFzcz0iZmEtbmV1LW1vZHVzLW9wdCI+PGlucHV0 IHR5cGU9InJhZGlvIiBuYW1lPSJmYS1uZXUtbW9kdXMiIHZhbHVlPSJtYW51ZWxsIicgKyAod2Fj aGxlaXR1bmdlbi5sZW5ndGggPyAnJyA6ICcgY2hlY2tlZCcpICsgJz4gTWFudWVsbCBhbmxlZ2Vu IChuaWNodCBpbiBQbGFudW5nKTwvbGFiZWw+JyArCiAgICAgICAgJzwvZGl2PicgKwogICAgICAg ICc8ZGl2IGlkPSJmYS1uZXUtZHJvcGRvd24tYmVyZWljaCIgY2xhc3M9ImZhLW5ldS1iZXJlaWNo IicgKyAod2FjaGxlaXR1bmdlbi5sZW5ndGggPyAnJyA6ICcgc3R5bGU9ImRpc3BsYXk6bm9uZSIn KSArICc+JyArCiAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9ImRsZy1sYWJlbCIgZm9yPSJmYS1u ZXUtcGVyc29uIj5XYWNobGVpdHVuZzwvbGFiZWw+JyArCiAgICAgICAgICAgICc8c2VsZWN0IGlk PSJmYS1uZXUtcGVyc29uIiBjbGFzcz0iZm9ybS1pbnB1dCIgc3R5bGU9IndpZHRoOjEwMCUiPicg KwogICAgICAgICAgICAgICAgKG9wdGlvbmVuIHx8ICc8b3B0aW9uIHZhbHVlPSIiPktlaW5lIGFr dGl2ZW4gV2FjaGxlaXR1bmdlbiB2b3JoYW5kZW48L29wdGlvbj4nKSArCiAgICAgICAgICAgICc8 L3NlbGVjdD4nICsKICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgaWQ9ImZhLW5ldS1t YW51ZWxsLWJlcmVpY2giIGNsYXNzPSJmYS1uZXUtYmVyZWljaCInICsgKHdhY2hsZWl0dW5nZW4u bGVuZ3RoID8gJyBzdHlsZT0iZGlzcGxheTpub25lIicgOiAnJykgKyAnPicgKwogICAgICAgICAg ICAnPGRpdiBjbGFzcz0iZmEtbmV1LWdyaWQiPicgKwogICAgICAgICAgICAgICAgJzxkaXY+PGxh YmVsIGNsYXNzPSJkbGctbGFiZWwiIGZvcj0iZmEtbmV1LXZvcm5hbWUiPlZvcm5hbWU8L2xhYmVs PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZmEtbmV1LXZvcm5hbWUiIGNsYXNzPSJmb3JtLWlucHV0 Ij48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2PjxsYWJlbCBjbGFzcz0iZGxnLWxhYmVs IiBmb3I9ImZhLW5ldS1uYW1lIj5OYWNobmFtZSAqPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIg aWQ9ImZhLW5ldS1uYW1lIiBjbGFzcz0iZm9ybS1pbnB1dCI+PC9kaXY+JyArCiAgICAgICAgICAg ICAgICAnPGRpdiBzdHlsZT0iZ3JpZC1jb2x1bW46MS8tMSI+PGxhYmVsIGNsYXNzPSJkbGctbGFi ZWwiIGZvcj0iZmEtbmV1LW53ayI+TlctS2VubnVuZyAqPC9sYWJlbD48aW5wdXQgdHlwZT0idGV4 dCIgaWQ9ImZhLW5ldS1ud2siIGNsYXNzPSJmb3JtLWlucHV0IiBwbGFjZWhvbGRlcj0iRE9NQUlO XFx1c2VyIG9kZXIgTlcwNTM2MDkiPjwvZGl2PicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAg ICAgICAgICAgICc8c21hbGwgY2xhc3M9ImV2bS1oaW53ZWlzIj5EaWVzZSBQZXJzb24gdGF1Y2h0 IDxzdHJvbmc+bmljaHQ8L3N0cm9uZz4gaW4gZGVyIFBsYW51bmdzLVRhYmVsbGUgYXVmIOKAlCBz aWUgaXN0IG51ciBhbHMgRmFjaGF1ZnNpY2h0ICh1bmQgZ2dmLiBTdXBlclVzZXIpIGtvbmZpZ3Vy aWVyYmFyLiBOVy1LZW5udW5nIGlzdCBQZmxpY2h0LCBzb25zdCBrYW5uIHNpY2ggZGllIFBlcnNv biBuaWNodCBhdXN3ZWlzZW4uPC9zbWFsbD4nICsKICAgICAgICAnPC9kaXY+JzsKCiAgICB2YXIg ZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJmYS1uZXUtYWJiciIgdHlwZT0iYnV0dG9u Ij5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0 biBidG4tcHJpbWFlciIgaWQ9ImRsZy1zcGVpY2hlcm4iIHR5cGU9ImJ1dHRvbiI+w5xiZXJuZWht ZW48L2J1dHRvbj4nOwoKICAgIG1vZGFsWmVpZ2VuKCdOZXVlciBGYWNoYXVmc2ljaHQtRWludHJh ZycsIGtvZXJwZXIsIGZ1c3MsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBtb2R1cyA9IGRvY3Vt ZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImZhLW5ldS1tb2R1cyJdOmNoZWNrZWQnKTsK ICAgICAgICBpZiAoIW1vZHVzKSByZXR1cm47CiAgICAgICAgdmFyIG5ldSA9IG51bGw7CiAgICAg ICAgaWYgKG1vZHVzLnZhbHVlID09PSAnZHJvcGRvd24nKSB7CiAgICAgICAgICAgIHZhciBwaWQg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtbmV1LXBlcnNvbicpLnZhbHVlOwogICAgICAg ICAgICBpZiAoIXBpZCkgeyB0b2FzdCgnQml0dGUgZWluZSBXYWNobGVpdHVuZyB3w6RobGVuJywg J3dhcm51bmcnKTsgcmV0dXJuOyB9CiAgICAgICAgICAgIHZhciBwID0gKFoucGxhbnVuZy5wZXJz b25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBTdHJpbmcoeC5pZCkgPT09IFN0 cmluZyhwaWQpOyB9KTsKICAgICAgICAgICAgaWYgKCFwKSB7IHRvYXN0KCdQZXJzb24gbmljaHQg Z2VmdW5kZW4nLCAnZmVobGVyJyk7IHJldHVybjsgfQogICAgICAgICAgICBpZiAocC5ud0tlbm51 bmcgJiYgc2Nob25EcmluW3AubndLZW5udW5nLnRvTG93ZXJDYXNlKCldKSB7CiAgICAgICAgICAg ICAgICB0b2FzdCgnRGllc2UgUGVyc29uIGlzdCBiZXJlaXRzIEZhY2hhdWZzaWNodCcsICd3YXJu dW5nJyk7IHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXUgPSB7CiAgICAgICAg ICAgICAgICBuYW1lOiAgICAgICgocC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsg cC5uYW1lKS50cmltKCksCiAgICAgICAgICAgICAgICBud0tlbm51bmc6IHAubndLZW5udW5nIHx8 ICcnCiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIG5hbWUg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtbmV1LW5hbWUnKS52YWx1ZS50cmltKCk7CiAg ICAgICAgICAgIHZhciB2biAgID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhLW5ldS12b3Ju YW1lJykudmFsdWUudHJpbSgpOwogICAgICAgICAgICB2YXIgbndrICA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdmYS1uZXUtbndrJykudmFsdWUudHJpbSgpOwogICAgICAgICAgICBpZiAoIW5h bWUpIHsgdG9hc3QoJ05hY2huYW1lIGlzdCBQZmxpY2h0JywgJ3dhcm51bmcnKTsgcmV0dXJuOyB9 CiAgICAgICAgICAgIGlmICghbndrKSAgeyB0b2FzdCgnTlctS2VubnVuZyBpc3QgUGZsaWNodCAo c29uc3Qga2FubiBzaWNoIGRpZSBQZXJzb24gbmljaHQgYXVzd2Vpc2VuKScsICd3YXJudW5nJyk7 IHJldHVybjsgfQogICAgICAgICAgICBpZiAoc2Nob25EcmluW253ay50b0xvd2VyQ2FzZSgpXSkg eyB0b2FzdCgnRGllc2UgTlctS2VubnVuZyBpc3QgYmVyZWl0cyBGYWNoYXVmc2ljaHQnLCAnd2Fy bnVuZycpOyByZXR1cm47IH0KICAgICAgICAgICAgbmV1ID0gewogICAgICAgICAgICAgICAgbmFt ZTogICAgICB2biA/ICh2biArICcgJyArIG5hbWUpIDogbmFtZSwKICAgICAgICAgICAgICAgIG53 S2VubnVuZzogbndrCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIC8vIEFrdHVlbGxl IFRhYmVsbGVuLVN0YXRlIHVlYmVybmVobWVuIChvaG5lIEZpbHRlciksIGRhbm4gYW5oYWVuZ2Vu CiAgICAgICAgWi5hZG1pbi5mYWNoYXVmc2ljaHQgPSBmYWNoYXVmc2ljaHRBdXNUYWJlbGxlTGVz ZW4oKTsKICAgICAgICBaLmFkbWluLmZhY2hhdWZzaWNodC5wdXNoKHsKICAgICAgICAgICAgbmFt ZTogbmV1Lm5hbWUsCiAgICAgICAgICAgIG53S2VubnVuZzogbmV1Lm53S2VubnVuZywKICAgICAg ICAgICAgc2VoZW46IHsgYWRtaW5pc3RyYXRpb246IGZhbHNlLCBzdGF0aXN0aWs6IGZhbHNlLCBs b2didWNoOiBmYWxzZSwgYmFja3VwczogZmFsc2UgfSwKICAgICAgICAgICAgZ2VzYW10dmVyYW50 d29ydGxpY2g6IGZhbHNlLAogICAgICAgICAgICBhZG1pblNpY2h0YmFya2VpdDoge30sCiAgICAg ICAgICAgIHN0YXRpc3Rpa1NpY2h0YmFya2VpdDoge30sCiAgICAgICAgICAgIGVkaXRpZXJlbjog eyBwZXJzb25lbklkczogW10sIGRpZW5zdGdydXBwZW46IFtdLCBzdGFuZG9ydGU6IFtdIH0KICAg ICAgICB9KTsKICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICAgICAgZmFjaGF1ZnNp Y2h0UmVuZGVybigpOwogICAgICAgIHRvYXN0KCdGYWNoYXVmc2ljaHQtRWludHJhZyAiJyArIG5l dS5uYW1lICsgJyIgYW5nZWxlZ3Qg4oCUICJTcGVpY2hlcm4iIGRyw7xja2VuIHVtIGRhdWVyaGFm dCB6dSBzaWNoZXJuJywgJ2luZm8nKTsKICAgIH0pOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdmYS1uZXUtYWJicicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7 IG1vZGFsU2NobGllc3NlbigpOyB9KTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lu cHV0W25hbWU9ImZhLW5ldS1tb2R1cyJdJykuZm9yRWFjaChmdW5jdGlvbihyKSB7CiAgICAgICAg ci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFy IHNlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImZhLW5ldS1tb2R1cyJd OmNoZWNrZWQnKTsKICAgICAgICAgICAgaWYgKCFzZWwpIHJldHVybjsKICAgICAgICAgICAgZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZhLW5ldS1kcm9wZG93bi1iZXJlaWNoJykuc3R5bGUuZGlz cGxheSA9IHNlbC52YWx1ZSA9PT0gJ2Ryb3Bkb3duJyA/ICcnIDogJ25vbmUnOwogICAgICAgICAg ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmEtbmV1LW1hbnVlbGwtYmVyZWljaCcpLnN0eWxl LmRpc3BsYXkgID0gc2VsLnZhbHVlID09PSAnbWFudWVsbCcgID8gJycgOiAnbm9uZSc7CiAgICAg ICAgfSk7CiAgICB9KTsKfQoKLy8gY3R4IG9wdGlvbmFsIOKAlCBEZWZhdWx0IEZhY2hhdWZzaWNo dDsgUm9sbGVuIHJlaWNoZW4gcm9sbGVNb2RhbEN0eCh0eXApLgpleHBvcnQgZnVuY3Rpb24gZmFj aGF1ZnNpY2h0RGV0YWlsTW9kYWwoaWR4LCBjdHgpIHsKICAgIC8vIE1vZGFsIG1pdCBkcmVpIExp c3RlbjogUGVyc29uZW4gKGNoZWNrYm94IGplIFBlcnNvbiksCiAgICAvLyBEaWVuc3RncnVwcGVu IChjaGVja2JveCBqZSBHcnVwcGUpLCBTdGFuZG9ydGUgKGNoZWNrYm94IGplIE9FKS4KICAgIC8v IEVkaXQtUmVjaHRlIHdlcmRlbiBkaXJla3QgaW4gY3R4LUxpc3RlW2lkeF0uZWRpdGllcmVuIGdl c3BlaWNoZXJ0LgogICAgaWYgKCFaLnJlY2h0ZS5pc3RTdXBlclVzZXIpIHJldHVybjsKICAgIGN0 eCA9IGN0eCB8fCBmYWNoYXVmc2ljaHRNb2RhbEN0eCgpOwogICAgLy8gS29tcGxldHRlIFRhYmVs bGUgaW4gZGVuIFN0YXRlIHNwaWVnZWxuIChhbGxlIFplaWxlbikg4oCUIHNvbnN0IGdlaGVuCiAg ICAvLyBwYXJhbGxlbGUgVGFiZWxsZW4tRWRpdHMgYmVpbSBNb2RhbC1TcHJ1bmcgdmVybG9yZW4u CiAgICBjdHguc2V0TGlzdGUoY3R4LmF1c1RhYmVsbGVMZXNlbigpKTsKICAgIHZhciBsaXN0ZSA9 IGN0eC5nZXRMaXN0ZSgpOwogICAgaWYgKCFsaXN0ZVtpZHhdKSByZXR1cm47CiAgICB2YXIgZmEg PSBsaXN0ZVtpZHhdOwogICAgdmFyIGVkID0gZmEuZWRpdGllcmVuIHx8IHsgcGVyc29uZW5JZHM6 IFtdLCBkaWVuc3RncnVwcGVuOiBbXSwgc3RhbmRvcnRlOiBbXSB9OwoKICAgIHZhciBwZXJzb25l biA9IChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLnNsaWNlKCkKICAgICAgICAuZmlsdGVyKGZ1 bmN0aW9uKHApIHsgcmV0dXJuIHAuYWt0aXY7IH0pCiAgICAgICAgLnNvcnQoZnVuY3Rpb24oYSwg YikgeyByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7IH0p OwoKICAgIHZhciBzdGFuZG9ydGUgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pLm1hcChmdW5j dGlvbihzKSB7IHJldHVybiBzLmt1ZXJ6ZWwgfHwgcy5uYW1lOyB9KS5maWx0ZXIoQm9vbGVhbik7 CgogICAgZnVuY3Rpb24gY2hrYm94KGlkLCBsYWJlbCwgY2hlY2tlZCkgewogICAgICAgIHJldHVy biAnPGxhYmVsIHN0eWxlPSJkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtn YXA6NnB4O21hcmdpbjoycHggMTJweCAycHggMDtjdXJzb3I6cG9pbnRlciI+JyArCiAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJlZGl0LWNoayIgZGF0YS13ZXJ0PSIn ICsgZXNjYXBlQXR0cihpZCkgKyAnIicgKyAoY2hlY2tlZCA/ICcgY2hlY2tlZCcgOiAnJykgKyAn PicgKwogICAgICAgICAgICAnPHNwYW4+JyArIGVzY2FwZUhUTUwobGFiZWwpICsgJzwvc3Bhbj48 L2xhYmVsPic7CiAgICB9CgogICAgdmFyIHBlcnNDYnMgPSBwZXJzb25lbi5tYXAoZnVuY3Rpb24o cCkgewogICAgICAgIHZhciBuYW1lTGFiZWwgPSAoKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcg JyA6ICcnKSArIHAubmFtZSkgKyAnIMK3ICcgKyBwLmdydXBwZTsKICAgICAgICByZXR1cm4gY2hr Ym94KFN0cmluZyhwLmlkKSwgbmFtZUxhYmVsLCAoZWQucGVyc29uZW5JZHMgfHwgW10pLmluZGV4 T2YoTnVtYmVyKHAuaWQpKSA+PSAwKTsKICAgIH0pLmpvaW4oJycpOwogICAgdmFyIGdydXBwZW5D YnMgPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5tYXAoZnVuY3Rpb24oZ3IpIHsKICAgICAgICBy ZXR1cm4gY2hrYm94KGdyLm5hbWUsIChnci5iZXplaWNobnVuZyB8fCBnci5uYW1lKSArICcgKCcg KyBnci5uYW1lICsgJyknLCAoZWQuZGllbnN0Z3J1cHBlbiB8fCBbXSkuaW5kZXhPZihnci5uYW1l KSA+PSAwKTsKICAgIH0pLmpvaW4oJycpOwogICAgdmFyIHN0YW5kb3J0ZUNicyA9IHN0YW5kb3J0 ZS5tYXAoZnVuY3Rpb24ocykgewogICAgICAgIHJldHVybiBjaGtib3gocywgcywgKGVkLnN0YW5k b3J0ZSB8fCBbXSkuaW5kZXhPZihzKSA+PSAwKTsKICAgIH0pLmpvaW4oJycpOwoKICAgIHZhciBr b2VycGVyID0KICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MCI+WnVzw6R0emxpY2ggenVy IDxiPmVpZ2VuZW4gWmVpbGU8L2I+IChpc3QgaW1tZXIgZXJsYXVidCkgZGFyZiBkaWVzZSBGYWNo YXVmc2ljaHQgZGllIFBsYW51bmdzemVsbGVuIGZvbGdlbmRlciBFaW50csOkZ2Ugw6RuZGVybjo8 L3A+JyArCiAgICAgICAgJzxoMyBzdHlsZT0ibWFyZ2luOjEycHggMCA0cHgiPkVpbnplbG5lIFBl cnNvbmVuPC9oMz4nICsKICAgICAgICAnPGRpdiBpZD0iZGV0YWlsLXBlcnNvbmVuIiBzdHlsZT0i bWF4LWhlaWdodDoyODBweDtvdmVyZmxvdzphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9y ZGVyLWxpZ2h0KTtwYWRkaW5nOjhweDtib3JkZXItcmFkaXVzOjRweCI+JyArCiAgICAgICAgICAg IChwZXJzQ2JzIHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1tdXRlZCkiPktlaW5l IGFrdGl2ZW4gUGVyc29uZW48L3NwYW4+JykgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAn PGgzIHN0eWxlPSJtYXJnaW46MTJweCAwIDRweCI+R2FuemUgRGllbnN0Z3J1cHBlbjwvaDM+JyAr CiAgICAgICAgJzxkaXYgaWQ9ImRldGFpbC1kaWVuc3RncnVwcGVuIiBzdHlsZT0icGFkZGluZzo0 cHgiPicgKyAoZ3J1cHBlbkNicyB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0 ZWQpIj5LZWluZSBEaWVuc3RncnVwcGVuIGtvbmZpZ3VyaWVydDwvc3Bhbj4nKSArICc8L2Rpdj4n ICsKICAgICAgICAnPGgzIHN0eWxlPSJtYXJnaW46MTJweCAwIDRweCI+R2FuemUgU3RhbmRvcnRl IChPRSk8L2gzPicgKwogICAgICAgICc8ZGl2IGlkPSJkZXRhaWwtc3RhbmRvcnRlIiBzdHlsZT0i cGFkZGluZzo0cHgiPicgKyAoc3RhbmRvcnRlQ2JzIHx8ICc8c3BhbiBzdHlsZT0iY29sb3I6dmFy KC0tdGV4dC1tdXRlZCkiPktlaW5lIFN0YW5kb3J0ZSBrb25maWd1cmllcnQ8L3NwYW4+JykgKyAn PC9kaXY+JzsKCiAgICBtb2RhbFplaWdlbignUGxhbnVuZzogJyArIChmYS5uYW1lIHx8ICcob2hu ZSBOYW1lKScpLCBrb2VycGVyLAogICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkbGct YWJicmVjaGVuIj5BYmJyZWNoZW48L2J1dHRvbj4nICsKICAgICAgICAnPGJ1dHRvbiBjbGFzcz0i YnRuIGJ0bi1wcmltYWVyIiBpZD0iZGxnLXNwZWljaGVybiI+w5xiZXJuZWhtZW48L2J1dHRvbj4n LAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgbmV1UCA9IFtdLCBuZXVHID0g W10sIG5ldVMgPSBbXTsKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2Rl dGFpbC1wZXJzb25lbiAuZWRpdC1jaGsnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKICAgICAgICAg ICAgICAgIGlmIChjLmNoZWNrZWQpIG5ldVAucHVzaChwYXJzZUludChjLmdldEF0dHJpYnV0ZSgn ZGF0YS13ZXJ0JykpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3JBbGwoJyNkZXRhaWwtZGllbnN0Z3J1cHBlbiAuZWRpdC1jaGsnKS5mb3JFYWNoKGZ1 bmN0aW9uKGMpIHsKICAgICAgICAgICAgICAgIGlmIChjLmNoZWNrZWQpIG5ldUcucHVzaChjLmdl dEF0dHJpYnV0ZSgnZGF0YS13ZXJ0JykpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZG9j dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI2RldGFpbC1zdGFuZG9ydGUgLmVkaXQtY2hrJykuZm9y RWFjaChmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgICBpZiAoYy5jaGVja2VkKSBuZXVTLnB1 c2goYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtd2VydCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgIGZhLmVkaXRpZXJlbiA9IHsgcGVyc29uZW5JZHM6IG5ldVAsIGRpZW5zdGdydXBwZW46IG5l dUcsIHN0YW5kb3J0ZTogbmV1UyB9OwogICAgICAgICAgICBtb2RhbFNjaGxpZXNzZW4oKTsKICAg ICAgICAgICAgY3R4LnJlbmRlcm4oKTsKICAgICAgICAgICAgY3R4Lm1hcmtEaXJ0eSgpOwogICAg ICAgICAgICB0b2FzdCgnUGxhbnVuZ3MtUmVjaHRlIMO8YmVybm9tbWVuIOKAlCAiU3BlaWNoZXJu IiBkcsO8Y2tlbiwgdW0gZGF1ZXJoYWZ0IHp1IHNpY2hlcm4nLCAnaW5mbycpOwogICAgICAgIH0K ICAgICk7CiAgICB2YXIgYWJiciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGctYWJicmVj aGVuJyk7CiAgICBpZiAoYWJicikgYWJici5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG1vZGFs U2NobGllc3Nlbik7Cn0K ### FILE: js/admin_standardrechte.js | 9237 Ly8gPT09IGFkbWluX3N0YW5kYXJkcmVjaHRlLmpzID09PQovLyBBZG1pbi1UYWIgIlN0YW5kYXJk cmVjaHRlIChVc2VyKSIg4oCUIFNVLW9ubHkuIFp3ZWkgVGVpbGU6Ci8vCi8vICAxKSBHcnVuZHNh ZXR6bGljaGUgUGxhbnVuZ3NyZWNodGUgZnVlciBBTExFIHJlZ3VsYWVyZW4gVXNlcjogZ2VnZW5z ZWl0aWdlCi8vICAgICBQbGFudW5nIGplIERpZW5zdGdydXBwZSB1bmQvb2RlciBqZSBTdGFuZG9y dC4gU3RlaHQgZGllIGVpZ2VuZSBHcnVwcGUvCi8vICAgICBkZXIgZWlnZW5lIFN0YW5kb3J0IGhp ZXIsIGRhcmYgbWFuIGFsbGUgTWl0Z2xpZWRlciBkaWVzZXIgR3J1cHBlL2RpZXNlcwovLyAgICAg U3RhbmRvcnRzIG1pdHBsYW5lbi4gV2lyZCBzZXJ2ZXJzZWl0aWcgKGJlcmVjaG5lX3JlY2h0ZS9H ZXQtUmVjaHRlKQovLyAgICAgYWRkaXRpdiBpbiBgZWRpdGllcmVuYCBlaW5nZXdvYmVuIC0+IGdy ZWlmdCBpbiBkZXIgYmVzdGVoZW5kZW4gWmVsbC1FZGl0LQovLyAgICAgUHJ1ZWZ1bmcgb2huZSBT b25kZXJsb2dpay4gUGVyc2lzdGVuejogUFVUIC9hcGkvYWRtaW4vc3RhbmRhcmRyZWNodGUuCi8v Ci8vICAyKSBMaXN0ZSAiVXNlciBtaXQgenVzYWV0emxpY2hlbiBSZWNodGVuIjogYWxsZSBQZXJz b25lbiwgZGllIGluIGRlcgovLyAgICAgUGVyc29uYWx2ZXJ3YWx0dW5nIGluZGl2aWR1ZWxsZSBl ZGl0UmVjaHRlIGJla29tbWVuIGhhYmVuICh6LkIuIGhvY2gtCi8vICAgICByYW5naWdlIE1BKSwg aW5rbC4gVmlzdWFsaXNpZXJ1bmcgaWhyZXIgWnVzYXR6cmVjaHRlICsgQmVhcmJlaXRlbi1MaW5r LgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9ydCB7IGVzY2FwZUhU TUwsIGVzY2FwZUF0dHIgfSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IHRvYXN0IH0g ZnJvbSAnLi91aV9kaWFsb2cuanMnOwppbXBvcnQgeyBhcGkgfSBmcm9tICcuL2NvcmVfYXBpLmpz JzsKaW1wb3J0IHsgcGVyc29uQmVhcmJlaXRlbkRpYWxvZyB9IGZyb20gJy4vYWRtaW5fcGVyc29u YWwuanMnOwoKZnVuY3Rpb24gX2RhcmYoKSB7IHJldHVybiAhIShaLnJlY2h0ZSAmJiBaLnJlY2h0 ZS5pc3RTdXBlclVzZXIpOyB9CmZ1bmN0aW9uIF9hcnIodikgeyByZXR1cm4gQXJyYXkuaXNBcnJh eSh2KSA/IHYgOiAodiA9PSBudWxsID8gW10gOiBbdl0pOyB9CgpmdW5jdGlvbiBfc3RhbmRhcmRS ZWNodGUoKSB7CiAgICB2YXIgc3IgPSAoWi5hZG1pbiAmJiBaLmFkbWluLnN0YW5kYXJkUmVjaHRl KSB8fCB7fTsKICAgIHJldHVybiB7CiAgICAgICAgZ2VnZW5zZWl0aWdHcnVwcGVuOiAgIF9hcnIo c3IuZ2VnZW5zZWl0aWdHcnVwcGVuKS5tYXAoU3RyaW5nKSwKICAgICAgICBnZWdlbnNlaXRpZ1N0 YW5kb3J0ZTogX2Fycihzci5nZWdlbnNlaXRpZ1N0YW5kb3J0ZSkubWFwKFN0cmluZykKICAgIH07 Cn0KCmZ1bmN0aW9uIF9ncnVwcGVuTGFiZWwobmFtZSkgewogICAgdmFyIGcgPSAoWi5hZG1pbi5n cnVwcGVuIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oeCl7IHJldHVybiB4Lm5hbWUgPT09IG5hbWU7 IH0pWzBdOwogICAgcmV0dXJuIGcgPyAoZy5iZXplaWNobnVuZyB8fCBnLm5hbWUpIDogbmFtZTsK fQpmdW5jdGlvbiBfc3RhbmRvcnRMYWJlbChrdWVyemVsKSB7CiAgICB2YXIgcyA9IChaLmFkbWlu LnN0YW5kb3J0ZSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4geC5rdWVyemVsID09 PSBrdWVyemVsOyB9KVswXTsKICAgIGlmIChzICYmIHMubmFtZSkgcmV0dXJuIHMubmFtZSArICcg KCcgKyBrdWVyemVsICsgJyknOwogICAgcmV0dXJuIGt1ZXJ6ZWw7Cn0KZnVuY3Rpb24gX3BlcnNv bk5hbWUoaWQpIHsKICAgIHZhciBwID0gKChaLnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVu KSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4gU3RyaW5nKHguaWQpID09PSBTdHJp bmcoaWQpOyB9KVswXTsKICAgIGlmICghcCkgcmV0dXJuICcjJyArIGlkOwogICAgdmFyIG4gPSAo cC5uYW1lIHx8ICcnKS50cmltKCksIHYgPSAocC52b3JuYW1lIHx8ICcnKS50cmltKCk7CiAgICBy ZXR1cm4gdiA/IChuICsgJywgJyArIHYpIDogbjsKfQoKLy8gPT09PT0gUmVuZGVyID09PT09Cgpl eHBvcnQgZnVuY3Rpb24gc3RhbmRhcmRyZWNodGVSZW5kZXJuKCkgewogICAgdmFyIGNvbnQgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhbmRhcmRyZWNodGUtaW5oYWx0Jyk7CiAgICBpZiAo IWNvbnQpIHJldHVybjsKICAgIGlmICghX2RhcmYoKSkgewogICAgICAgIGNvbnQuaW5uZXJIVE1M ID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5Ij48ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS10ZXh0 Ij5OdXIgU3VwZXJVc2VyIGTDvHJmZW4gU3RhbmRhcmRyZWNodGUgdmVyd2FsdGVuLjwvZGl2Pjwv ZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHNyID0gX3N0YW5kYXJkUmVjaHRl KCk7CiAgICBjb250LmlubmVySFRNTCA9IF9lcmtsYWVydW5nSHRtbCgpICsgX2tvbmZpZ0h0bWwo c3IpICsgX3p1c2F0ekxpc3RlSHRtbCgpOwogICAgX3ZlcmRyYWh0ZW4oY29udCk7Cn0KCmZ1bmN0 aW9uIF9lcmtsYWVydW5nSHRtbCgpIHsKICAgIHJldHVybiAnJyArCiAgICAnPGRldGFpbHMgY2xh c3M9ImFkbWluLWluZm8iIGRhdGEtaW5mby1rZXk9InN0YW5kYXJkcmVjaHRlIiBvcGVuPicgKwog ICAgICAgICc8c3VtbWFyeT48c3BhbiBjbGFzcz0iYWRtaW4taW5mby1jaGV2Ij7ilrg8L3NwYW4+ V2FzIHNpbmQgU3RhbmRhcmRyZWNodGU/PHNwYW4gY2xhc3M9ImFkbWluLWluZm8tYmFkZ2UiPkF1 ZmtsYXBwZW4gLyBadWtsYXBwZW48L3NwYW4+PC9zdW1tYXJ5PicgKwogICAgICAgICc8ZGl2IGNs YXNzPSJhZG1pbi1pbmZvLWJvZHkiPicgKwogICAgICAgICAgICAnPHA+PHN0cm9uZz5TdGFuZGFy ZHJlY2h0ZTwvc3Ryb25nPiBnZWx0ZW4gZsO8ciA8Yj5hbGxlPC9iPiBNaXRhcmJlaXRlbmRlbiwg ZGllIGluIGtlaW5lciBSb2xsZW4tTGlzdGUgKFN1cGVyVXNlciAvIEZhY2hhdWZzaWNodCAvIERp cmVrdGlvbnNsZWl0dW5nIC8gRsO8aHJ1bmdzc3RlbGxlKSBzdGVoZW4g4oCUIGFsc28gZGVuIOKA nm5vcm1hbGVuIiBVc2VyLjwvcD4nICsKICAgICAgICAgICAgJzxwPjxzdHJvbmc+SW1tZXIgZXJs YXVidCAoQmFzaXMsIG5pY2h0IGFic2NoYWx0YmFyKTo8L3N0cm9uZz48L3A+JyArCiAgICAgICAg ICAgICc8dWw+JyArCiAgICAgICAgICAgICAgICAnPGxpPjxiPkVpZ2VuZSBaZWlsZTwvYj4g4oCU IGplZGUgUGVyc29uIGRhcmYgaWhyZSBlaWdlbmVuIFRhZ2UgZWludHJhZ2VuLjwvbGk+JyArCiAg ICAgICAgICAgICAgICAnPGxpPjxiPk1pa3JvdGVhbTwvYj4g4oCUIE1pdGdsaWVkZXIgZGVzc2Vs YmVuIE1pa3JvdGVhbXMgcGxhbmVuIHNpY2ggZ2VnZW5zZWl0aWcgKFBmbGVnZSB1bnRlciA8ZW0+ TWlrcm90ZWFtczwvZW0+KS48L2xpPicgKwogICAgICAgICAgICAnPC91bD4nICsKICAgICAgICAg ICAgJzxwPjxzdHJvbmc+WnVzw6R0emxpY2gga29uZmlndXJpZXJiYXIgKHVudGVuKTo8L3N0cm9u Zz4g4oCeZ2VnZW5zZWl0aWdlIFBsYW51bmciIGplIERpZW5zdGdydXBwZSBvZGVyIFN0YW5kb3J0 LiBCZWlzcGllbDogSXN0IGRpZSBTY2hpY2h0Z3J1cHBlIDxjb2RlPkE8L2NvZGU+IGFrdGl2aWVy dCwgZGFyZiA8Yj5qZWRlczwvYj4gTWl0Z2xpZWQgZGVyIEdydXBwZSBBIDxiPmplZGVzIGFuZGVy ZTwvYj4gTWl0Z2xpZWQgZGVyIEdydXBwZSBBIG1pdHBsYW5lbi4gQW5hbG9nIGRlciBTdGFuZG9y dCAoei5CLiBhbGxlIGRlciBBUFcgS2FtZW4pLjwvcD4nICsKICAgICAgICAgICAgJzxwPjxzdHJv bmc+SW5kaXZpZHVlbGxlIFp1c2F0enJlY2h0ZTwvc3Ryb25nPiBlaW56ZWxuZXIgUGVyc29uZW4g d2VyZGVuIHdlaXRlcmhpbiBpbiBkZXIgPGVtPlBlcnNvbmFsdmVyd2FsdHVuZzwvZW0+IHBybyBQ ZXJzb24gZ2VzZXR6dCDigJQgc2llIHNpbmQgdW50ZW4gaW4gZGVyIMOcYmVyc2ljaHQgYXVmZ2Vm w7xocnQuPC9wPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICc8L2RldGFpbHM+JzsKfQoKZnVu Y3Rpb24gX2NoaXBzKGdycCwgb3B0aW9uZW4sIHNlbGVjdGVkKSB7CiAgICB2YXIgY2hpcHMgPSBv cHRpb25lbi5tYXAoZnVuY3Rpb24obykgewogICAgICAgIHZhciBhbiA9IHNlbGVjdGVkLmluZGV4 T2YoU3RyaW5nKG8ud2VydCkpID49IDA7CiAgICAgICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImJs ZC1jaGlwJyArIChhbiA/ICcgYW4nIDogJycpICsgJyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBk YXRhLXNyY2hpcD0iJyArIGVzY2FwZUF0dHIoZ3JwKSArICciIHZhbHVlPSInICsgZXNjYXBlQXR0 cihTdHJpbmcoby53ZXJ0KSkgKyAnIicgKyAoYW4gPyAnIGNoZWNrZWQnIDogJycpICsgJz48c3Bh bj4nICsgZXNjYXBlSFRNTChvLmxhYmVsKSArICc8L3NwYW4+PC9sYWJlbD4nOwogICAgfSkuam9p bignJyk7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJsZC1jaGlwcyI+JyArIChjaGlwcyB8fCAn PHNwYW4gY2xhc3M9ImJsZC1saXN0ZS1sZWVyIj7igJQ8L3NwYW4+JykgKyAnPC9kaXY+JzsKfQoK ZnVuY3Rpb24gX2tvbmZpZ0h0bWwoc3IpIHsKICAgIHZhciBnck9wdCA9IChaLmFkbWluLmdydXBw ZW4gfHwgW10pLm1hcChmdW5jdGlvbihnKXsgcmV0dXJuIHsgd2VydDogZy5uYW1lLCBsYWJlbDog Zy5iZXplaWNobnVuZyB8fCBnLm5hbWUgfTsgfSk7CiAgICB2YXIgc3RPcHQgPSAoWi5hZG1pbi5z dGFuZG9ydGUgfHwgW10pLm1hcChmdW5jdGlvbihzKXsgcmV0dXJuIHsgd2VydDogcy5rdWVyemVs LCBsYWJlbDogcy5uYW1lID8gKHMubmFtZSArICcgKCcgKyBzLmt1ZXJ6ZWwgKyAnKScpIDogcy5r dWVyemVsIH07IH0pOwogICAgcmV0dXJuICcnICsKICAgICc8c2VjdGlvbiBjbGFzcz0iYWRtaW4t c2VrdGlvbiBzci1rb25maWciPicgKwogICAgICAgICc8aDM+R2VnZW5zZWl0aWdlIFBsYW51bmc8 L2gzPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJibGQtZmVsZCI+PHNwYW4gY2xhc3M9ImJsZC1m ZWxkLXRpdGVsIj5EaWVuc3RncnVwcGVuLCBkZXJlbiBNaXRnbGllZGVyIHNpY2ggZ2VnZW5zZWl0 aWcgcGxhbmVuPC9zcGFuPicgKwogICAgICAgICAgICBfY2hpcHMoJ2dydXBwZW4nLCBnck9wdCwg c3IuZ2VnZW5zZWl0aWdHcnVwcGVuKSArICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0i YmxkLWZlbGQiPjxzcGFuIGNsYXNzPSJibGQtZmVsZC10aXRlbCI+U3RhbmRvcnRlLCBkZXJlbiBN aXRnbGllZGVyIHNpY2ggZ2VnZW5zZWl0aWcgcGxhbmVuPC9zcGFuPicgKwogICAgICAgICAgICBf Y2hpcHMoJ3N0YW5kb3J0ZScsIHN0T3B0LCBzci5nZWdlbnNlaXRpZ1N0YW5kb3J0ZSkgKyAnPC9k aXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InJlY2h0ZS1jYXJkLWZ1c3MiPjxidXR0b24gY2xh c3M9ImJ0biBidG4tcHJpbWFlciIgdHlwZT0iYnV0dG9uIiBpZD0ic3Itc3BlaWNoZXJuIj5TdGFu ZGFyZHJlY2h0ZSBzcGVpY2hlcm48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxzcGFuIGNsYXNz PSJzci1oaW53ZWlzIj5HaWx0IHNvZm9ydCBmw7xyIGFsbGUgcmVndWzDpHJlbiBVc2VyIChncmVp ZnQgYmVpbSBuw6RjaHN0ZW4gTGFkZW4gaWhyZXIgUGxhbnVuZykuPC9zcGFuPjwvZGl2PicgKwog ICAgJzwvc2VjdGlvbj4nOwp9CgpmdW5jdGlvbiBfenVzYXR6TGlzdGVIdG1sKCkgewogICAgdmFy IGxldXRlID0gKChaLnBsYW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVuKSB8fCBbXSkuZmlsdGVy KGZ1bmN0aW9uKHApIHsKICAgICAgICB2YXIgZXIgPSBwLmVkaXRSZWNodGU7CiAgICAgICAgaWYg KCFlcikgcmV0dXJuIGZhbHNlOwogICAgICAgIHJldHVybiAoX2Fycihlci5wZXJzb25lbklkcyku bGVuZ3RoICsgX2Fycihlci5kaWVuc3RncnVwcGVuKS5sZW5ndGggKyBfYXJyKGVyLnN0YW5kb3J0 ZSkubGVuZ3RoKSA+IDA7CiAgICB9KTsKICAgIHZhciBpbmhhbHQ7CiAgICBpZiAoIWxldXRlLmxl bmd0aCkgewogICAgICAgIGluaGFsdCA9ICc8ZGl2IGNsYXNzPSJibGQtbGlzdGUtbGVlciI+QWt0 dWVsbCBoYXQga2VpbmUgUGVyc29uIGluZGl2aWR1ZWxsZSBadXNhdHpyZWNodGUuIERpZXNlIHdl cmRlbiBpbiBkZXIgUGVyc29uYWx2ZXJ3YWx0dW5nIHBybyBQZXJzb24gZ2VzZXR6dCAobnVyIFN1 cGVyVXNlcikuPC9kaXY+JzsKICAgIH0gZWxzZSB7CiAgICAgICAgaW5oYWx0ID0gJzxkaXYgY2xh c3M9InNyLXp1c2F0ei1pdGVtcyI+JyArIGxldXRlLm1hcChmdW5jdGlvbihwKSB7CiAgICAgICAg ICAgIHZhciBlciA9IHAuZWRpdFJlY2h0ZSB8fCB7fTsKICAgICAgICAgICAgdmFyIHRlaWxlID0g W107CiAgICAgICAgICAgIHZhciBwaXMgPSBfYXJyKGVyLnBlcnNvbmVuSWRzKTsKICAgICAgICAg ICAgaWYgKHBpcy5sZW5ndGgpIHRlaWxlLnB1c2goJzxzcGFuIGNsYXNzPSJzci10YWcgc3ItdGFn LXBlcnNvbiI+UGVyc29uZW46ICcgKyBwaXMubWFwKGZ1bmN0aW9uKGlkKXsgcmV0dXJuIGVzY2Fw ZUhUTUwoX3BlcnNvbk5hbWUoaWQpKTsgfSkuam9pbignLCAnKSArICc8L3NwYW4+Jyk7CiAgICAg ICAgICAgIF9hcnIoZXIuZGllbnN0Z3J1cHBlbikuZm9yRWFjaChmdW5jdGlvbihnKXsgdGVpbGUu cHVzaCgnPHNwYW4gY2xhc3M9InNyLXRhZyBzci10YWctZ3JwIj5HcnVwcGUgJyArIGVzY2FwZUhU TUwoX2dydXBwZW5MYWJlbChnKSkgKyAnPC9zcGFuPicpOyB9KTsKICAgICAgICAgICAgX2Fycihl ci5zdGFuZG9ydGUpLmZvckVhY2goZnVuY3Rpb24ocyl7IHRlaWxlLnB1c2goJzxzcGFuIGNsYXNz PSJzci10YWcgc3ItdGFnLW9ydCI+U3RhbmRvcnQgJyArIGVzY2FwZUhUTUwoX3N0YW5kb3J0TGFi ZWwocykpICsgJzwvc3Bhbj4nKTsgfSk7CiAgICAgICAgICAgIHZhciBwTmFtZSA9IChwLm5hbWUg fHwgJycpICsgKHAudm9ybmFtZSA/ICgnLCAnICsgcC52b3JuYW1lKSA6ICcnKTsKICAgICAgICAg ICAgdmFyIG1ldGEgPSBbcC5mdW5rdGlvbiwgcC5ncnVwcGUsIHAub2VdLmZpbHRlcihCb29sZWFu KS5qb2luKCcgwrcgJyk7CiAgICAgICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic3ItenVzYXR6 LWl0ZW0iPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InNyLXp1c2F0ei1rb3BmIj48 c3BhbiBjbGFzcz0ic3ItenVzYXR6LW5hbWUiPicgKyBlc2NhcGVIVE1MKHBOYW1lKSArICc8L3Nw YW4+JyArCiAgICAgICAgICAgICAgICAgICAgKG1ldGEgPyAnPHNwYW4gY2xhc3M9InNyLXp1c2F0 ei1tZXRhIj4nICsgZXNjYXBlSFRNTChtZXRhKSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAg ICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0biBidG4tbWluaSIgdHlwZT0iYnV0dG9uIiBk YXRhLXNyLWVkaXQ9IicgKyBlc2NhcGVBdHRyKFN0cmluZyhwLmlkKSkgKyAnIj5CZWFyYmVpdGVu PC9idXR0b24+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ic3ItenVzYXR6 LXJlY2h0ZSI+JyArIHRlaWxlLmpvaW4oJycpICsgJzwvZGl2PicgKwogICAgICAgICAgICAnPC9k aXY+JzsKICAgICAgICB9KS5qb2luKCcnKSArICc8L2Rpdj4nOwogICAgfQogICAgcmV0dXJuICc8 c2VjdGlvbiBjbGFzcz0iYWRtaW4tc2VrdGlvbiBzci16dXNhdHoiPicgKwogICAgICAgICc8aDM+ VXNlciBtaXQgenVzw6R0emxpY2hlbiBSZWNodGVuPC9oMz4nICsKICAgICAgICAnPHAgY2xhc3M9 InNyLXp1c2F0ei1zdWIiPkRpZXNlIFBlcnNvbmVuIGTDvHJmZW4gw7xiZXIgZGllIEJhc2lzLS9T dGFuZGFyZHJlY2h0ZSBoaW5hdXMgd2VpdGVyZSBQZXJzb25lbiwgR3J1cHBlbiBvZGVyIFN0YW5k b3J0ZSBwbGFuZW4gKGluZGl2aWR1ZWxsIGluIGRlciBQZXJzb25hbHZlcndhbHR1bmcgdmVyZ2Vi ZW4pLjwvcD4nICsKICAgICAgICBpbmhhbHQgKyAnPC9zZWN0aW9uPic7Cn0KCi8vID09PT09IFNw ZWljaGVybiAvIFZlcmRyYWh0dW5nID09PT09CgpmdW5jdGlvbiBfbGVzZUNoaXBzKGdycCkgewog ICAgdmFyIG91dCA9IFtdOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3Jj aGlwPSInICsgZ3JwICsgJyJdOmNoZWNrZWQnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyBvdXQucHVz aChjLnZhbHVlKTsgfSk7CiAgICByZXR1cm4gb3V0Owp9CmZ1bmN0aW9uIF9zcGVpY2hlcm4oKSB7 CiAgICB2YXIgZGF0ZW4gPSB7IGdlZ2Vuc2VpdGlnR3J1cHBlbjogX2xlc2VDaGlwcygnZ3J1cHBl bicpLCBnZWdlbnNlaXRpZ1N0YW5kb3J0ZTogX2xlc2VDaGlwcygnc3RhbmRvcnRlJykgfTsKICAg IGFwaSgnL2FwaS9hZG1pbi9zdGFuZGFyZHJlY2h0ZScsIHsgbWV0aG9kOiAnUFVUJywgaGVhZGVy czogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sIGJvZHk6IEpTT04uc3Ry aW5naWZ5KGRhdGVuKSB9KQogICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBa LmFkbWluLnN0YW5kYXJkUmVjaHRlID0gZGF0ZW47CiAgICAgICAgICAgIHRvYXN0KCdTdGFuZGFy ZHJlY2h0ZSBnZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAgICAgICAgICAgc3RhbmRhcmRyZWNo dGVSZW5kZXJuKCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZSl7IHRvYXN0KCdTcGVpY2hl cm4gZmVobGdlc2NobGFnZW46ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsgfSk7Cn0KCmZ1bmN0 aW9uIF92ZXJkcmFodGVuKGNvbnQpIHsKICAgIGNvbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdl JywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciB0ID0gZS50YXJnZXQ7CiAgICAgICAgaWYgKHQu bWF0Y2hlcyAmJiB0Lm1hdGNoZXMoJ1tkYXRhLXNyY2hpcF0nKSkgewogICAgICAgICAgICB2YXIg bGFiID0gdC5jbG9zZXN0KCcuYmxkLWNoaXAnKTsgaWYgKGxhYikgbGFiLmNsYXNzTGlzdC50b2dn bGUoJ2FuJywgdC5jaGVja2VkKTsKICAgICAgICB9CiAgICB9KTsKICAgIHZhciBzYiA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdzci1zcGVpY2hlcm4nKTsKICAgIGlmIChzYikgc2IuYWRkRXZl bnRMaXN0ZW5lcignY2xpY2snLCBfc3BlaWNoZXJuKTsKICAgIGNvbnQucXVlcnlTZWxlY3RvckFs bCgnW2RhdGEtc3ItZWRpdF0nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICBiLmFkZEV2 ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgcGVyc29uQmVhcmJlaXRlbkRpYWxvZyhw YXJzZUludChiLmdldEF0dHJpYnV0ZSgnZGF0YS1zci1lZGl0JyksIDEwKSk7IH0pOwogICAgfSk7 Cn0K ### FILE: js/admin_statistik.js | 8259 Ly8gPT09IGFkbWluX3N0YXRpc3Rpay5qcyA9PT0KLy8gU3VwZXJVc2VyLUxheW91dC1SYXN0ZXIg ZnVlciBkZW4gU3RhdGlzdGlrLVRhYi4gT3JkbmV0IEFMTEUgU3RhdGlzdGlrLQovLyBLYWNoZWxu IChmZXN0ZSBQYW5lbHMgKyBzZWxic3RnZWJhdXRlIEJhdWthc3Rlbi1LYWNoZWxuKSBpbiBlaW5l bSB2aXN1ZWxsZW4KLy8gNi1TcGFsdGVuLVJhc3RlciBhbjogQnJlaXRlICgxOjEgdm9sbCAvIDE6 MiBoYWxiIC8gMTozIGRyaXR0ZWwpLCBSZWloZW5mb2xnZQovLyAoRHJhZykgdW5kIFNpY2h0YmFy a2VpdCAoQXVnZSkuIFBlcnNpc3RlbnogdmlhIFBVVCAvYXBpL2FkbWluL3N0YXRpc3RpawovLyAo UGFydGlhbC1NZXJnZSBudXIgc3RhdGlzdGlrTGF5b3V0KS4gUGVuZGFudC1EYXRlbmZsdXNzIHp1 IHN0YXRpc3Rpay5qcwovLyAoZG9ydCBsaWVzdCBsYXlvdXRBbndlbmRlbigpIFouYWRtaW4uc3Rh dGlzdGlrTGF5b3V0KS4KLy8KLy8gTXVzdGVyIGZ1ZXIgRHJhZyZEcm9wIHVlYmVybm9tbWVuIGF1 cyBhZG1pbl9jb2Rlcy5qcyAoc2NoaWNodGNvZGVEcmFnVmVyZHJhaHRlbikuCgppbXBvcnQgeyBa IH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1wb3J0IHsgZXNjYXBlSFRNTCwgZXNjYXBlQXR0 ciB9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QgfSBmcm9tICcuL3VpX2Rp YWxvZy5qcyc7CmltcG9ydCB7IGFwaSB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQgeyBz dGF0aXN0aWtUaWxlc0FsbGUsIEJSRUlURV9TUEFOIH0gZnJvbSAnLi9zdGF0aXN0aWsuanMnOwoK dmFyIEJSRUlURV9SQU5HICA9IHsgZHJpdHRlbDogMCwgaGFsYjogMSwgdm9sbDogMiB9Owp2YXIg QlJFSVRFX1JFSUhFID0gWyd2b2xsJywgJ2hhbGInLCAnZHJpdHRlbCddOwp2YXIgQlJFSVRFX0xB QkVMID0geyB2b2xsOiAnMToxIMK3IHZvbGwnLCBoYWxiOiAnMToyIMK3IGhhbGInLCBkcml0dGVs OiAnMTozIMK3IGRyaXR0ZWwnIH07CgovLyBBa3R1ZWxsZXMgQXJiZWl0cy1MYXlvdXQgKGdlbWlz Y2h0IGF1cyBaLmFkbWluLnN0YXRpc3Rpa0xheW91dCArIFRpbGUtU3RhbW1kYXRlbikuCnZhciBf cmFzdGVyID0gW107CgpmdW5jdGlvbiBfZGFyZkVkaXRpZXJlbigpIHsKICAgIHJldHVybiAhISha LnJlY2h0ZSAmJiBaLnJlY2h0ZS5pc3RTdXBlclVzZXIpOwp9CgpmdW5jdGlvbiBfY2xhbXAoYnJl aXRlLCBtaW5CcmVpdGUpIHsKICAgIGlmICghQlJFSVRFX1NQQU5bYnJlaXRlXSkgYnJlaXRlID0g J3ZvbGwnOwogICAgaWYgKCFCUkVJVEVfU1BBTlttaW5CcmVpdGVdKSBtaW5CcmVpdGUgPSAnZHJp dHRlbCc7CiAgICByZXR1cm4gKEJSRUlURV9SQU5HW2JyZWl0ZV0gPCBCUkVJVEVfUkFOR1ttaW5C cmVpdGVdKSA/IG1pbkJyZWl0ZSA6IGJyZWl0ZTsKfQoKLy8gTWVyZ2UgZ2VzcGVpY2hlcnRlcyBM YXlvdXQgKFJlaWhlbmZvbGdlL0JyZWl0ZS9TaWNodGJhcmtlaXQpIG1pdCBkZXIKLy8gdm9sbHN0 YWVuZGlnZW4gVGlsZS1MaXN0ZSDigJQgbmV1ZSBUaWxlcyBoaW50ZW4gYW5oYWVuZ2VuLCB2ZXJ3 YWlzdGUgZHJvcHBlbi4KZnVuY3Rpb24gX2JhdWVSYXN0ZXIoKSB7CiAgICB2YXIgdGlsZXMgPSBz dGF0aXN0aWtUaWxlc0FsbGUoKTsKICAgIHZhciBieUlkID0ge307CiAgICB0aWxlcy5mb3JFYWNo KGZ1bmN0aW9uKHQpeyBieUlkW3QuaWRdID0gdDsgfSk7CiAgICB2YXIgZ2VzcGVpY2hlcnQgPSAo Wi5hZG1pbiAmJiBBcnJheS5pc0FycmF5KFouYWRtaW4uc3RhdGlzdGlrTGF5b3V0KSkgPyBaLmFk bWluLnN0YXRpc3Rpa0xheW91dCA6IFtdOwogICAgdmFyIG91dCA9IFtdLCBnZXNlaGVuID0ge307 CiAgICBnZXNwZWljaGVydC5mb3JFYWNoKGZ1bmN0aW9uKGUpewogICAgICAgIGlmICghZSB8fCAh ZS5pZCkgcmV0dXJuOwogICAgICAgIHZhciB0ID0gYnlJZFtlLmlkXTsKICAgICAgICBpZiAoIXQp IHJldHVybjsKICAgICAgICBvdXQucHVzaCh7CiAgICAgICAgICAgIGlkOiB0LmlkLCB0aXRlbDog dC50aXRlbCwgbWluQnJlaXRlOiB0Lm1pbkJyZWl0ZSwgaXN0S2FjaGVsOiB0LmlzdEthY2hlbCwK ICAgICAgICAgICAgYnJlaXRlOiBfY2xhbXAoZS5icmVpdGUgfHwgdC5kZWZhdWx0QnJlaXRlLCB0 Lm1pbkJyZWl0ZSksCiAgICAgICAgICAgIHNpY2h0YmFyOiBlLnNpY2h0YmFyICE9PSBmYWxzZQog ICAgICAgIH0pOwogICAgICAgIGdlc2VoZW5bdC5pZF0gPSB0cnVlOwogICAgfSk7CiAgICB0aWxl cy5mb3JFYWNoKGZ1bmN0aW9uKHQpewogICAgICAgIGlmIChnZXNlaGVuW3QuaWRdKSByZXR1cm47 CiAgICAgICAgb3V0LnB1c2goewogICAgICAgICAgICBpZDogdC5pZCwgdGl0ZWw6IHQudGl0ZWws IG1pbkJyZWl0ZTogdC5taW5CcmVpdGUsIGlzdEthY2hlbDogdC5pc3RLYWNoZWwsCiAgICAgICAg ICAgIGJyZWl0ZTogdC5kZWZhdWx0QnJlaXRlLCBzaWNodGJhcjogdHJ1ZQogICAgICAgIH0pOwog ICAgfSk7CiAgICByZXR1cm4gb3V0Owp9CgpmdW5jdGlvbiBfcGVyc2lzdGllcmVuKCkgewogICAg dmFyIG51ciA9IF9yYXN0ZXIubWFwKGZ1bmN0aW9uKGUpeyByZXR1cm4geyBpZDogZS5pZCwgYnJl aXRlOiBlLmJyZWl0ZSwgc2ljaHRiYXI6IGUuc2ljaHRiYXIgfTsgfSk7CiAgICByZXR1cm4gYXBp KCcvYXBpL2FkbWluL3N0YXRpc3RpaycsIHsKICAgICAgICBtZXRob2Q6ICdQVVQnLAogICAgICAg IGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LAogICAgICAg IGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgc3RhdGlzdGlrTGF5b3V0OiBudXIgfSkKICAgIH0pLnRo ZW4oZnVuY3Rpb24oKXsKICAgICAgICBaLmFkbWluLnN0YXRpc3Rpa0xheW91dCA9IG51cjsKICAg ICAgICB0b2FzdCgnU3RhdGlzdGlrLUxheW91dCBnZXNwZWljaGVydCcsICdlcmZvbGcnKTsKICAg IH0pLmNhdGNoKGZ1bmN0aW9uKGUpewogICAgICAgIHRvYXN0KCdTcGVpY2hlcm4gZmVobGdlc2No bGFnZW46ICcgKyBlLm1lc3NhZ2UsICdmZWhsZXInKTsKICAgIH0pOwp9CgpmdW5jdGlvbiBfbmFl Y2hzdGVCcmVpdGUoY3VyLCBtaW5CcmVpdGUpIHsKICAgIHZhciBlcmxhdWJ0ID0gQlJFSVRFX1JF SUhFLmZpbHRlcihmdW5jdGlvbihiKXsgcmV0dXJuIEJSRUlURV9SQU5HW2JdID49IEJSRUlURV9S QU5HW21pbkJyZWl0ZV07IH0pOwogICAgdmFyIGkgPSBlcmxhdWJ0LmluZGV4T2YoY3VyKTsKICAg IGlmIChpIDwgMCkgaSA9IDA7CiAgICByZXR1cm4gZXJsYXVidFsoaSArIDEpICUgZXJsYXVidC5s ZW5ndGhdOwp9CgpmdW5jdGlvbiBfdGlsZUh0bWwoZSkgewogICAgdmFyIHNwYW4gPSBCUkVJVEVf U1BBTltlLmJyZWl0ZV0gfHwgNjsKICAgIHZhciBtaW5IaW53ZWlzID0gKGUubWluQnJlaXRlID09 PSAndm9sbCcpID8gJyA8c3BhbiBjbGFzcz0ic2wtbWluIj4obnVyIHZvbGwpPC9zcGFuPicgOiAn JzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0ic2wtdGlsZScgKyAoZS5zaWNodGJhciA/ICcnIDog JyBzbC11bnNpY2h0YmFyJykgKyAnIiAnICsKICAgICAgICAgICAgJ2RhdGEtdGlsZS1pZD0iJyAr IGVzY2FwZUF0dHIoZS5pZCkgKyAnIiBkcmFnZ2FibGU9InRydWUiICcgKwogICAgICAgICAgICAn c3R5bGU9ImdyaWQtY29sdW1uOnNwYW4gJyArIHNwYW4gKyAnIiAnICsKICAgICAgICAgICAgJ3Rp dGxlPSJLbGljayB3ZWNoc2VsdCBkaWUgQnJlaXRlLCBaaWVoZW4gw6RuZGVydCBkaWUgUmVpaGVu Zm9sZ2UiPicgKwogICAgICAgICc8ZGl2IGNsYXNzPSJzbC10aWxlLWtvcGYiPicgKwogICAgICAg ICAgICAoZS5pc3RLYWNoZWwgPyAnPHNwYW4gY2xhc3M9InNsLWJhZGdlIj5CYXVrYXN0ZW48L3Nw YW4+JyA6ICc8c3BhbiBjbGFzcz0ic2wtYmFkZ2Ugc2wtYmFkZ2UtZmVzdCI+UGFuZWw8L3NwYW4+ JykgKwogICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0ic2wtYXVnZSIgdHlwZT0iYnV0dG9uIiBk YXRhLXNsLWF1Z2U9IicgKyBlc2NhcGVBdHRyKGUuaWQpICsgJyIgJyArCiAgICAgICAgICAgICAg ICAndGl0bGU9IicgKyAoZS5zaWNodGJhciA/ICdTaWNodGJhciDigJQgS2xpY2sgYmxlbmRldCBh dXMnIDogJ0F1c2dlYmxlbmRldCDigJQgS2xpY2sgYmxlbmRldCBlaW4nKSArICciICcgKwogICAg ICAgICAgICAgICAgJ2FyaWEtbGFiZWw9IlNpY2h0YmFya2VpdCB1bXNjaGFsdGVuIj4nICsgKGUu c2ljaHRiYXIgPyAnU2ljaHRiYXInIDogJ0F1cycpICsgJzwvYnV0dG9uPicgKwogICAgICAgICc8 L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0ic2wtdGlsZS10aXRlbCI+JyArIGVzY2FwZUhU TUwoZS50aXRlbCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9InNsLXRpbGUtYnJl aXRlIj4nICsgZXNjYXBlSFRNTChCUkVJVEVfTEFCRUxbZS5icmVpdGVdIHx8IGUuYnJlaXRlKSAr IG1pbkhpbndlaXMgKyAnPC9kaXY+JyArCiAgICAnPC9kaXY+JzsKfQoKZXhwb3J0IGZ1bmN0aW9u IHN0YXRpc3Rpa0xheW91dFJlbmRlcm4oKSB7CiAgICB2YXIgY29udCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdzdGF0aXN0aWstbGF5b3V0LWluaGFsdCcpOwogICAgaWYgKCFjb250KSByZXR1 cm47CiAgICBpZiAoIV9kYXJmRWRpdGllcmVuKCkpIHsKICAgICAgICBjb250LmlubmVySFRNTCA9 ICc8ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eSI+PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHktdGV4dCI+ TnVyIFN1cGVyVXNlciBkw7xyZmVuIGRhcyBTdGF0aXN0aWstTGF5b3V0IGFub3JkbmVuLjwvZGl2 PjwvZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgX3Jhc3RlciA9IF9iYXVlUmFzdGVy KCk7CiAgICBpZiAoIV9yYXN0ZXIubGVuZ3RoKSB7CiAgICAgICAgY29udC5pbm5lckhUTUwgPSAn PGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFkbWluLWVtcHR5LXRleHQiPktl aW5lIFN0YXRpc3Rpay1LYWNoZWxuIHZvcmhhbmRlbi48L2Rpdj48L2Rpdj4nOwogICAgICAgIHJl dHVybjsKICAgIH0KICAgIGNvbnQuaW5uZXJIVE1MID0KICAgICAgICAnPGRpdiBjbGFzcz0ic2wt bGVnZW5kZSI+Ni1TcGFsdGVuLVJhc3RlciDigJQgc28gZXJzY2hlaW50IGRlciBTdGF0aXN0aWst VGFiIGbDvHIgYWxsZS4gJyArCiAgICAgICAgJ0tsaWNrIGF1ZiBlaW5lIEthY2hlbCB3ZWNoc2Vs dCBkaWUgQnJlaXRlICh2b2xsIOKGkiBoYWxiIOKGkiBkcml0dGVsKSwgWmllaGVuIG9yZG5ldCBu ZXUsIGRhcyBBdWdlIGJsZW5kZXQgYXVzLjwvZGl2PicgKwogICAgICAgICc8ZGl2IGlkPSJzbC1y YXN0ZXIiIGNsYXNzPSJzbC1yYXN0ZXIgc3RhdHMtZ3JpZCI+JyArIF9yYXN0ZXIubWFwKF90aWxl SHRtbCkuam9pbignJykgKyAnPC9kaXY+JzsKICAgIF92ZXJkcmFodGVuKGNvbnQpOwp9CgpmdW5j dGlvbiBfdmVyZHJhaHRlbihjb250KSB7CiAgICB2YXIgcmFzdGVyID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ3NsLXJhc3RlcicpOwogICAgaWYgKCFyYXN0ZXIpIHJldHVybjsKCiAgICAvLyBL bGljazogQnJlaXRlIGN5Y2xlbiAoQXVnZS1LbGljayBzZXBhcmF0IGJlaGFuZGVsbikuCiAgICBy YXN0ZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKXsKICAgICAgICB2YXIg YXVnZSA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNsLWF1Z2VdJyk7CiAgICAgICAgaWYgKGF1 Z2UpIHsKICAgICAgICAgICAgdmFyIGFpZCA9IGF1Z2UuZ2V0QXR0cmlidXRlKCdkYXRhLXNsLWF1 Z2UnKTsKICAgICAgICAgICAgdmFyIGFlID0gX3Jhc3Rlci5maWx0ZXIoZnVuY3Rpb24oeCl7IHJl dHVybiB4LmlkID09PSBhaWQ7IH0pWzBdOwogICAgICAgICAgICBpZiAoYWUpIHsgYWUuc2ljaHRi YXIgPSAhYWUuc2ljaHRiYXI7IF9wZXJzaXN0aWVyZW4oKS50aGVuKGZ1bmN0aW9uKCl7IHN0YXRp c3Rpa0xheW91dFJlbmRlcm4oKTsgfSk7IH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0K ICAgICAgICB2YXIgdGlsZSA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5zbC10aWxlJyk7CiAgICAgICAg aWYgKCF0aWxlKSByZXR1cm47CiAgICAgICAgdmFyIGlkID0gdGlsZS5nZXRBdHRyaWJ1dGUoJ2Rh dGEtdGlsZS1pZCcpOwogICAgICAgIHZhciB0ZSA9IF9yYXN0ZXIuZmlsdGVyKGZ1bmN0aW9uKHgp eyByZXR1cm4geC5pZCA9PT0gaWQ7IH0pWzBdOwogICAgICAgIGlmICghdGUpIHJldHVybjsKICAg ICAgICB2YXIgbmV1ID0gX25hZWNoc3RlQnJlaXRlKHRlLmJyZWl0ZSwgdGUubWluQnJlaXRlKTsK ICAgICAgICBpZiAobmV1ID09PSB0ZS5icmVpdGUpIHsKICAgICAgICAgICAgdG9hc3QoJ0RpZXNl cyBQYW5lbCBpc3QgYXVmIHZvbGxlIEJyZWl0ZSBmZXN0Z2VsZWd0JywgJ2luZm8nKTsKICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB0ZS5icmVpdGUgPSBuZXU7CiAgICAgICAg X3BlcnNpc3RpZXJlbigpLnRoZW4oZnVuY3Rpb24oKXsgc3RhdGlzdGlrTGF5b3V0UmVuZGVybigp OyB9KTsKICAgIH0pOwoKICAgIC8vIERyYWcmRHJvcC1SZWloZW5mb2xnZSAoTXVzdGVyIGF1cyBh ZG1pbl9jb2Rlcy5qcykuCiAgICB2YXIgZHJhZ0lkID0gbnVsbDsKICAgIHJhc3Rlci5hZGRFdmVu dExpc3RlbmVyKCdkcmFnc3RhcnQnLCBmdW5jdGlvbihlKXsKICAgICAgICB2YXIgdGlsZSA9IGUu dGFyZ2V0LmNsb3Nlc3QoJy5zbC10aWxlJyk7CiAgICAgICAgaWYgKCF0aWxlKSByZXR1cm47CiAg ICAgICAgZHJhZ0lkID0gdGlsZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlsZS1pZCcpOwogICAgICAg IHRpbGUuY2xhc3NMaXN0LmFkZCgnc2wtZHJhZ2dpbmcnKTsKICAgICAgICBlLmRhdGFUcmFuc2Zl ci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnOwogICAgICAgIHRyeSB7IGUuZGF0YVRyYW5zZmVyLnNl dERhdGEoJ3RleHQvcGxhaW4nLCBkcmFnSWQpOyB9IGNhdGNoIChfKSB7fQogICAgfSk7CiAgICBy YXN0ZXIuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIGZ1bmN0aW9uKCl7CiAgICAgICAgcmFz dGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbC10aWxlJykuZm9yRWFjaChmdW5jdGlvbih0KXsgdC5j bGFzc0xpc3QucmVtb3ZlKCdzbC1kcmFnZ2luZycsICdzbC1kcm9wLXppZWwnKTsgfSk7CiAgICB9 KTsKICAgIHJhc3Rlci5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIGZ1bmN0aW9uKGUpewog ICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICB2YXIgdGlsZSA9IGUudGFyZ2V0LmNs b3Nlc3QoJy5zbC10aWxlJyk7CiAgICAgICAgcmFzdGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5zbC1k cm9wLXppZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHQpeyB0LmNsYXNzTGlzdC5yZW1vdmUoJ3NsLWRy b3AtemllbCcpOyB9KTsKICAgICAgICBpZiAodGlsZSAmJiB0aWxlLmdldEF0dHJpYnV0ZSgnZGF0 YS10aWxlLWlkJykgIT09IGRyYWdJZCkgdGlsZS5jbGFzc0xpc3QuYWRkKCdzbC1kcm9wLXppZWwn KTsKICAgIH0pOwogICAgcmFzdGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBmdW5jdGlvbihl KXsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgdmFyIHppZWwgPSBlLnRhcmdl dC5jbG9zZXN0KCcuc2wtdGlsZScpOwogICAgICAgIGlmICghemllbCB8fCAhZHJhZ0lkIHx8IHpp ZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXRpbGUtaWQnKSA9PT0gZHJhZ0lkKSB7IGRyYWdJZCA9IG51 bGw7IHJldHVybjsgfQogICAgICAgIHZhciB6aWVsSWQgPSB6aWVsLmdldEF0dHJpYnV0ZSgnZGF0 YS10aWxlLWlkJyk7CiAgICAgICAgdmFyIHZvbklkeCA9IF9yYXN0ZXIuZmluZEluZGV4KGZ1bmN0 aW9uKHgpeyByZXR1cm4geC5pZCA9PT0gZHJhZ0lkOyB9KTsKICAgICAgICB2YXIgYmlzSWR4ID0g X3Jhc3Rlci5maW5kSW5kZXgoZnVuY3Rpb24oeCl7IHJldHVybiB4LmlkID09PSB6aWVsSWQ7IH0p OwogICAgICAgIGlmICh2b25JZHggPCAwIHx8IGJpc0lkeCA8IDApIHsgZHJhZ0lkID0gbnVsbDsg cmV0dXJuOyB9CiAgICAgICAgdmFyIG1vdmVkID0gX3Jhc3Rlci5zcGxpY2Uodm9uSWR4LCAxKVsw XTsKICAgICAgICAvLyBOYWNoIEVudGZlcm5lbiBnZ2YuIFppZWxpbmRleCBrb3JyaWdpZXJlbi4K ICAgICAgICBiaXNJZHggPSBfcmFzdGVyLmZpbmRJbmRleChmdW5jdGlvbih4KXsgcmV0dXJuIHgu aWQgPT09IHppZWxJZDsgfSk7CiAgICAgICAgX3Jhc3Rlci5zcGxpY2UoYmlzSWR4LCAwLCBtb3Zl ZCk7CiAgICAgICAgZHJhZ0lkID0gbnVsbDsKICAgICAgICBfcGVyc2lzdGllcmVuKCkudGhlbihm dW5jdGlvbigpeyBzdGF0aXN0aWtMYXlvdXRSZW5kZXJuKCk7IH0pOwogICAgfSk7Cn0K ### FILE: js/admin_statistik_builder.js | 30494 Ly8gPT09IGFkbWluX3N0YXRpc3Rpa19idWlsZGVyLmpzID09PQovLyBTdGF0aXN0aWstQnVpbGRl ciBpbSBBZG1pbiAoVGFiICJTdGF0aXN0aWstQnVpbGRlciIsIHVudGVyIFN0YXRpc3Rpay1MYXlv dXQpLgovLyBEQVUtdGF1Z2xpY2hlciBLbGljay1adXNhbW1lbmJhdSBlaW5lciBtZWhyZGltZW5z aW9uYWxlbiBBdXN3ZXJ0dW5nOgovLwovLyAgIERhdGVuIC0+IEZpbHRlciAtPiBEaW1lbnNpb24o ZW4pIC0+IEtlbm56YWhsIC0+IERpYWdyYW1tdHlwIC0+IEVyZ2VibmlzCi8vCi8vIERpZSBQaXBl bGluZSB3aXJkIGxpdmUgYWxzIEZsdXNzZGlhZ3JhbW0gZ2V6ZWlndDsgIlRlc3RlbiIgYmF1dCBk aWUgU3RhdGlzdGlrCi8vIChFbmdpbmUgKyBuYXRpdmUgU1ZHLUNoYXJ0cykgdW5kIHplaWd0IHNp ZSB1bnRlcmhhbGIuICJBbHMgS2FjaGVsIHNwZWljaGVybiIKLy8gbGVndCBkaWUgRGVmaW5pdGlv biBnbG9iYWwgYWIgKFBVVCAvYXBpL2FkbWluL3N0YXRpc3RpaykgLT4gZXJzY2hlaW50IGltCi8v IFN0YXRpc3Rpay1UYWIuIEVuZ2luZS9DaGFydHMga29tbWVuIGF1cyBzdGF0aXN0aWtfZW5naW5l LmpzICsgc3RhdGlzdGlrX2NoYXJ0cy5qcy4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3Rh dGUuanMnOwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBkYXR1bVN0ciB9IGZyb20g Jy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QsIGJlc3RhZXRpZ2VuIH0gZnJvbSAnLi91 aV9kaWFsb2cuanMnOwppbXBvcnQgeyBhcGkgfSBmcm9tICcuL2NvcmVfYXBpLmpzJzsKaW1wb3J0 IHsgRElNRU5TSU9ORU4sIEtFTk5aQUhMRU4sIFBFUlNPTl9NQVNTRSwgYXVzd2VydGVuIH0gZnJv bSAnLi9zdGF0aXN0aWtfZW5naW5lLmpzJzsKaW1wb3J0IHsgZGlhZ3JhbW1UeXBlbiwgZGlhZ3Jh bW1SZW5kZXJuIH0gZnJvbSAnLi9zdGF0aXN0aWtfY2hhcnRzLmpzJzsKCnZhciBUQUdfS0FURUdP UklFTiA9IFsnRGllbnN0JywgJ1NvbmRlcmRpZW5zdCcsICdBdXMtL0ZvcnRiaWxkdW5nJywgJ1Vy bGF1YicsICdLcmFuay9LdXInLCAnRnJlaScsICdTb25zdGlnZXMnXTsKdmFyIFdPQ0hFTlRBR0Vf T1BUID0gW3sgdzogMSwgbDogJ01vJyB9LCB7IHc6IDIsIGw6ICdEaScgfSwgeyB3OiAzLCBsOiAn TWknIH0sIHsgdzogNCwgbDogJ0RvJyB9LCB7IHc6IDUsIGw6ICdGcicgfSwgeyB3OiA2LCBsOiAn U2EnIH0sIHsgdzogMCwgbDogJ1NvJyB9XTsKCnZhciBfZWRpdElkID0gbnVsbDsgICAvLyBpZCBk ZXIgZ2VyYWRlIGJlYXJiZWl0ZXRlbiBLYWNoZWwgKG51bGwgPSBuZXVlKQoKLy8gPT09PT0gWmVp dHJhdW0tSGVsZmVyIChEYXR1bSAvIEthbGVuZGVyd29jaGUgLyBRdWFydGFsIC8gR2VzYW10KSA9 PT09PQoKLy8gTW9udGFnIGRlciBJU08tS2FsZW5kZXJ3b2NoZSAod29jaGUgMSA9IGRpZSBXb2No ZSBtaXQgZGVtIDQuIEphbnVhcikuCmZ1bmN0aW9uIF9pc29Xb2NoZW5Nb250YWcoamFociwgd29j aGUpIHsKICAgIHZhciBqYW40ID0gbmV3IERhdGUoamFociwgMCwgNCk7CiAgICB2YXIgdGFnID0g KGphbjQuZ2V0RGF5KCkgKyA2KSAlIDc7ICAgICAgICAgICAgICAgICAvLyBNbz0wIOKApiBTbz02 CiAgICB2YXIgdzFNb250YWcgPSBuZXcgRGF0ZShqYW40LmdldEZ1bGxZZWFyKCksIGphbjQuZ2V0 TW9udGgoKSwgamFuNC5nZXREYXRlKCkgLSB0YWcpOwogICAgcmV0dXJuIG5ldyBEYXRlKHcxTW9u dGFnLmdldEZ1bGxZZWFyKCksIHcxTW9udGFnLmdldE1vbnRoKCksIHcxTW9udGFnLmdldERhdGUo KSArICh3b2NoZSAtIDEpICogNyk7Cn0KLy8gJ1lZWVktV3d3JyAoV2VydCBlaW5lcyA8aW5wdXQg dHlwZT0id2VlayI+KSAtPiB7IHZvbiwgYmlzIH0gYWxzIERhdHVtc3N0cmluZ3MKLy8gKE1vIOKA piBTbykuIExlZXJlci91bmd1ZWx0aWdlciBJbnB1dCAtPiBudWxsLgpmdW5jdGlvbiBfa3dHcmVu emVuKHdrU3RyKSB7CiAgICB2YXIgbSA9IC9eKFxkezR9KS1XKFxkezEsMn0pJC8uZXhlYyh3a1N0 ciB8fCAnJyk7CiAgICBpZiAoIW0pIHJldHVybiBudWxsOwogICAgdmFyIG1vID0gX2lzb1dvY2hl bk1vbnRhZyhwYXJzZUludChtWzFdLCAxMCksIHBhcnNlSW50KG1bMl0sIDEwKSk7CiAgICB2YXIg c28gPSBuZXcgRGF0ZShtby5nZXRGdWxsWWVhcigpLCBtby5nZXRNb250aCgpLCBtby5nZXREYXRl KCkgKyA2KTsKICAgIHJldHVybiB7IHZvbjogZGF0dW1TdHIobW8pLCBiaXM6IGRhdHVtU3RyKHNv KSB9Owp9Ci8vICdZWVlZLVFuJyAtPiB7IHZvbiwgYmlzIH0gKGVyc3Rlci9sZXR6dGVyIFRhZyBk ZXMgUXVhcnRhbHMpLiBudWxsIGJlaSBGZWhsZXIuCmZ1bmN0aW9uIF9xdWFydGFsR3Jlbnplbihx U3RyKSB7CiAgICB2YXIgbSA9IC9eKFxkezR9KS1RKFsxLTRdKSQvLmV4ZWMocVN0ciB8fCAnJyk7 CiAgICBpZiAoIW0pIHJldHVybiBudWxsOwogICAgdmFyIGphaHIgPSBwYXJzZUludChtWzFdLCAx MCksIHEgPSBwYXJzZUludChtWzJdLCAxMCk7CiAgICB2YXIgc3RhcnRNb25hdCA9IChxIC0gMSkg KiAzOyAgICAgICAgICAgICAgICAgICAgICAgLy8gMCwzLDYsOQogICAgdmFyIHZvbiA9IG5ldyBE YXRlKGphaHIsIHN0YXJ0TW9uYXQsIDEpOwogICAgdmFyIGJpcyA9IG5ldyBEYXRlKGphaHIsIHN0 YXJ0TW9uYXQgKyAzLCAwKTsgICAgICAgIC8vIFRhZyAwID0gbGV0enRlciBUYWcgZGVzIFZvcm1v bmF0cwogICAgcmV0dXJuIHsgdm9uOiBkYXR1bVN0cih2b24pLCBiaXM6IGRhdHVtU3RyKGJpcykg fTsKfQovLyBEaXN0aW5rdGUgSmFocmUgYXVzIGRlbiBQbGFuZGF0ZW4gKGZ1ZXIgZGllIFF1YXJ0 YWxzLURyb3Bkb3ducyk7IEZhbGxiYWNrIGF1ZgovLyBkYXMgUGxhbnVuZ3NqYWhyIGF1cyBhZG1p bi5qc29uIGJ6dy4gZGFzIGFrdHVlbGxlIEphaHIuCmZ1bmN0aW9uIF9kYXRlbkphaHJlKCkgewog ICAgdmFyIHNldCA9IHt9OwogICAgdmFyIGVpbnRyID0gKFoucGxhbnVuZyAmJiBaLnBsYW51bmcu ZWludHJhZWdlKSB8fCB7fTsKICAgIE9iamVjdC5rZXlzKGVpbnRyKS5mb3JFYWNoKGZ1bmN0aW9u KGQpeyBpZiAoZCAmJiBkLmxlbmd0aCA+PSA0KSBzZXRbZC5zdWJzdHJpbmcoMCwgNCldID0gdHJ1 ZTsgfSk7CiAgICB2YXIgamFocmUgPSBPYmplY3Qua2V5cyhzZXQpLnNvcnQoKTsKICAgIGlmICgh amFocmUubGVuZ3RoKSBqYWhyZSA9IFtTdHJpbmcoKFouYWRtaW4gJiYgWi5hZG1pbi5qYWhyKSB8 fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkpXTsKICAgIHJldHVybiBqYWhyZTsKfQoKZnVuY3Rp b24gX2RhcmYoKSB7IHJldHVybiAhIShaLnJlY2h0ZSAmJiAoWi5yZWNodGUuaXN0U3VwZXJVc2Vy IHx8IFoucmVjaHRlLmlzdEdlc2FtdHZlcmFudHdvcnRsaWNoIHx8IChaLnJlY2h0ZS5pc3RGYWNo YXVmc2ljaHQgJiYgWi5yZWNodGUuc2VoZW4gJiYgWi5yZWNodGUuc2VoZW4uYWRtaW5pc3RyYXRp b24pKSk7IH0KCmZ1bmN0aW9uIF9zdGFuZGFyZFNwZWMoKSB7CiAgICByZXR1cm4gewogICAgICAg IHY6IDIsIGlkOiBudWxsLCB0aXRlbDogJycsCiAgICAgICAgZGlhZ3JhbW06ICdiYWxrZW4nLAog ICAgICAgIHplaXRNb2R1czogJ2RhdHVtJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBkYXR1bSB8IGt3IHwgcXVhcnRhbCB8IGdlc2FtdAogICAgICAgIHplaXRWb246ICcnLCB6ZWl0 QmlzOiAnJywgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXJrc2FtZXIgQmVyZWljaCAoRW5n aW5lKTsgYmVpIGt3L3F1YXJ0YWwgYWJnZWxlaXRldAogICAgICAgIHplaXRLd1ZvbjogJycsIHpl aXRLd0JpczogJycsICAgICAgICAgICAgICAgICAgICAvLyBSb2gtRWluZ2FiZW4gS2FsZW5kZXJ3 b2NoZSAoJ1lZWVktV3d3JykKICAgICAgICB6ZWl0UVZvbjogJycsIHplaXRRQmlzOiAnJywgICAg ICAgICAgICAgICAgICAgICAgLy8gUm9oLUVpbmdhYmVuIFF1YXJ0YWwgKCdZWVlZLVFuJykKICAg ICAgICBmaWx0ZXI6IHsgcGVyc29uZW46IFtdLCBncnVwcGVuOiBbXSwgZnVua3Rpb25lbjogW10s IHN0YW5kb3J0ZTogW10sIGRpZW5zdGdyYWRlOiBbXSwgY29kZXM6IFtdLCBrYXRlZ29yaWVuOiBb XSwgd29jaGVudGFnZTogW10sIG51ckRpZW5zdDogZmFsc2UsIG51cldFOiBmYWxzZSwgbnVyRmVp ZXJ0YWc6IGZhbHNlLCBudXJGZWllcnRhZ0J1bmQ6IGZhbHNlLCBudXJGZWllcnRhZ05SVzogZmFs c2UgfSwKICAgICAgICBkaW1YOiAnZ3J1cHBlJywgZGltU2VyaWU6ICcnLCBrZW5uemFobDogJ2Fu emFobCcsCiAgICAgICAgc2NhdHRlclg6ICduYWNodCcsIHNjYXR0ZXJZOiAndXJsYXViJywKICAg ICAgICBzb3J0OiAnd2VydC1kZXNjJywgdG9wTjogMAogICAgfTsKfQoKLy8gPT09PT0gUmVuZGVy ID09PT09CgpleHBvcnQgZnVuY3Rpb24gc3RhdGlzdGlrQnVpbGRlclJlbmRlcm4oKSB7CiAgICB2 YXIgY29udCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0aXN0aWstYnVpbGRlci1pbmhh bHQnKTsKICAgIGlmICghY29udCkgcmV0dXJuOwogICAgaWYgKCFfZGFyZigpKSB7CiAgICAgICAg Y29udC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iYWRtaW4tZW1wdHkiPjxkaXYgY2xhc3M9ImFk bWluLWVtcHR5LXRleHQiPk51ciBTdXBlclVzZXIsIEdlc2FtdHZlcmFudHdvcnRsaWNoZSB1bmQg QWRtaW5zIGTDvHJmZW4gU3RhdGlzdGlrZW4gYmF1ZW4uPC9kaXY+PC9kaXY+JzsKICAgICAgICBy ZXR1cm47CiAgICB9CiAgICB2YXIgc3BlYyA9IF9lZGl0SWQgPyAoX2thY2hlbEZpbmRlbihfZWRp dElkKSB8fCBfc3RhbmRhcmRTcGVjKCkpIDogX3N0YW5kYXJkU3BlYygpOwogICAgY29udC5pbm5l ckhUTUwgPQogICAgICAgICc8ZGl2IGNsYXNzPSJibGQtZ3JpZCI+JyArCiAgICAgICAgICAgICc8 ZGl2IGNsYXNzPSJibGQtc3BhbHRlLWZvcm0iPicgKyBfZm9ybUh0bWwoc3BlYykgKyAnPC9kaXY+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtc3BhbHRlLWF1cyI+JyArCiAgICAgICAg ICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLWZsdXNzIiBpZD0iYmxkLWZsdXNzIj48L2Rpdj4nICsK ICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtYWt0aW9uZW4iPicgKwogICAgICAgICAg ICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIHR5cGU9ImJ1dHRvbiIg aWQ9ImJsZC10ZXN0ZW4iPuKWtiBUZXN0ZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAg ICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIHR5cGU9ImJ1dHRvbiIgaWQ9ImJsZC1zcGVp Y2hlcm4iPicgKyAoX2VkaXRJZCA/ICfDhG5kZXJ1bmdlbiBzcGVpY2hlcm4nIDogJ0FscyBLYWNo ZWwgc3BlaWNoZXJuJykgKyAnPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgKF9lZGl0 SWQgPyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWsiIHR5cGU9ImJ1dHRvbiIgaWQ9ImJsZC1u ZXUiPk5ldTwvYnV0dG9uPicgOiAnJykgKwogICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAg ICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1lcmdlYm5pcyIgaWQ9ImJsZC1lcmdlYm5pcyI+ PGRpdiBjbGFzcz0iYmxkLWVyZ2VibmlzLWhpbnQiPktvbmZpZ3VyYXRpb24gbGlua3Mgd8OkaGxl biB1bmQgYXVmIDxiPlRlc3RlbjwvYj4ga2xpY2tlbi48L2Rpdj48L2Rpdj4nICsKICAgICAgICAg ICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxk LWxpc3RlIiBpZD0iYmxkLWxpc3RlIj4nICsgX2xpc3RlSHRtbCgpICsgJzwvZGl2Pic7CiAgICBf dmVyZHJhaHRlbihjb250KTsKICAgIF9mbHVzc0FrdHVhbGlzaWVyZW4oKTsKICAgIF90ZXN0ZW4o KTsgLy8gZGlyZWt0ZSBWb3JzY2hhdQp9CgovLyAtLS0tLSBGb3JtdWxhciAtLS0tLQoKZnVuY3Rp b24gX2NoaXBHcnVwcGUoZ3JwLCB0aXRlbCwgb3B0aW9uZW4sIHNlbGVjdGVkKSB7CiAgICB2YXIg Y2hpcHMgPSBvcHRpb25lbi5tYXAoZnVuY3Rpb24obykgewogICAgICAgIHZhciBhbiA9IHNlbGVj dGVkLmluZGV4T2Yoby53ZXJ0KSA+PSAwOwogICAgICAgIHJldHVybiAnPGxhYmVsIGNsYXNzPSJi bGQtY2hpcCcgKyAoYW4gPyAnIGFuJyA6ICcnKSArICciPjxpbnB1dCB0eXBlPSJjaGVja2JveCIg ZGF0YS1jaGlwPSInICsgZXNjYXBlQXR0cihncnApICsgJyIgdmFsdWU9IicgKyBlc2NhcGVBdHRy KFN0cmluZyhvLndlcnQpKSArICciJyArIChhbiA/ICcgY2hlY2tlZCcgOiAnJykgKyAnPjxzcGFu PicgKyBlc2NhcGVIVE1MKG8ubGFiZWwpICsgJzwvc3Bhbj48L2xhYmVsPic7CiAgICB9KS5qb2lu KCcnKTsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0iYmxkLWZlbGQiPjxzcGFuIGNsYXNzPSJibGQt ZmVsZC10aXRlbCI+JyArIGVzY2FwZUhUTUwodGl0ZWwpICsgJzwvc3Bhbj48ZGl2IGNsYXNzPSJi bGQtY2hpcHMiIGRhdGEtY2hpcGdycD0iJyArIGVzY2FwZUF0dHIoZ3JwKSArICciPicgKyBjaGlw cyArICc8L2Rpdj48L2Rpdj4nOwp9CgovLyBQZXJzb25lbnNjaGFyZmUgQXVzd2FobCwgbmFjaCBE aWVuc3RncnVwcGUgKEEvQi9DLCBXRCwgVkQsIOKApikgZ3J1cHBpZXJ0LAovLyBtaXQgImFsbGUv a2VpbmUiLVNjaG5lbGxzY2hhbHRlciBqZSBHcnVwcGUuIFdlcnRlIHNpbmQgUGVyc29uLUlEcyAo U3RyaW5nKS4KZnVuY3Rpb24gX3BlcnNvbmVuU2VrdGlvbkh0bWwoc2VsZWN0ZWQpIHsKICAgIHNl bGVjdGVkID0gKHNlbGVjdGVkIHx8IFtdKS5tYXAoU3RyaW5nKTsKICAgIHZhciBieUdycCA9IHt9 OwogICAgKFoucGVyc29uZW4gfHwgW10pLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZh ciBnID0gcC5ncnVwcGUgfHwgJ+KAlCc7CiAgICAgICAgKGJ5R3JwW2ddIHx8IChieUdycFtnXSA9 IFtdKSkucHVzaChwKTsKICAgIH0pOwogICAgdmFyIG9yZGVyID0gKFouYWRtaW4uZ3J1cHBlbiB8 fCBbXSkubWFwKGZ1bmN0aW9uKGcpeyByZXR1cm4gZy5uYW1lOyB9KTsKICAgIHZhciBncnBOYW1l biA9IG9yZGVyLmZpbHRlcihmdW5jdGlvbihuKXsgcmV0dXJuIGJ5R3JwW25dOyB9KQogICAgICAg IC5jb25jYXQoT2JqZWN0LmtleXMoYnlHcnApLmZpbHRlcihmdW5jdGlvbihuKXsgcmV0dXJuIG9y ZGVyLmluZGV4T2YobikgPCAwOyB9KSk7CiAgICB2YXIgYmxvY2tzID0gZ3JwTmFtZW4ubWFwKGZ1 bmN0aW9uKGduKSB7CiAgICAgICAgdmFyIGdPYmogPSAoWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5m aWx0ZXIoZnVuY3Rpb24oeCl7IHJldHVybiB4Lm5hbWUgPT09IGduOyB9KVswXTsKICAgICAgICB2 YXIgZ0xhYmVsID0gZ09iaiA/IChnT2JqLmJlemVpY2hudW5nIHx8IGdPYmoubmFtZSkgOiAoZ24g PT09ICfigJQnID8gJ29obmUgR3J1cHBlJyA6IGduKTsKICAgICAgICB2YXIgbGV1dGUgPSBieUdy cFtnbl0uc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpeyByZXR1cm4gKGEubmFtZSB8fCAnJyku bG9jYWxlQ29tcGFyZShiLm5hbWUgfHwgJycsICdkZScpOyB9KTsKICAgICAgICB2YXIgY2hpcHMg PSBsZXV0ZS5tYXAoZnVuY3Rpb24ocCkgewogICAgICAgICAgICB2YXIgaWQgPSBTdHJpbmcocC5p ZCk7CiAgICAgICAgICAgIHZhciBhbiA9IHNlbGVjdGVkLmluZGV4T2YoaWQpID49IDA7CiAgICAg ICAgICAgIHZhciBubSA9IChwLm5hbWUgfHwgJycpICsgKHAudm9ybmFtZSA/ICgnLCAnICsgcC52 b3JuYW1lKSA6ICcnKTsKICAgICAgICAgICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImJsZC1jaGlw JyArIChhbiA/ICcgYW4nIDogJycpICsgJyIgZGF0YS1wZ3JwPSInICsgZXNjYXBlQXR0cihnbikg KyAnIj4nICsKICAgICAgICAgICAgICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtY2hp cD0icGVyc29uZW4iIHZhbHVlPSInICsgZXNjYXBlQXR0cihpZCkgKyAnIicgKyAoYW4gPyAnIGNo ZWNrZWQnIDogJycpICsgJz48c3Bhbj4nICsgZXNjYXBlSFRNTChubSkgKyAnPC9zcGFuPjwvbGFi ZWw+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJs ZC1wZXJzLWdycCI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtcGVycy1ncnAta29w ZiI+PHNwYW4+JyArIGVzY2FwZUhUTUwoZ0xhYmVsKSArICcgPHNwYW4gY2xhc3M9ImJsZC1wZXJz LXphaGwiPignICsgbGV1dGUubGVuZ3RoICsgJyk8L3NwYW4+PC9zcGFuPicgKwogICAgICAgICAg ICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW1pbmkiIGRhdGEtZ3JwLXRv Z2dsZT0iJyArIGVzY2FwZUF0dHIoZ24pICsgJyI+YWxsZSAvIGtlaW5lPC9idXR0b24+PC9kaXY+ JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJibGQtY2hpcHMiPicgKyBjaGlwcyArICc8L2Rp dj48L2Rpdj4nOwogICAgfSkuam9pbignJyk7CiAgICB2YXIgYW56YWhsID0gKFoucGVyc29uZW4g fHwgW10pLmxlbmd0aDsKICAgIHJldHVybiAnPGRldGFpbHMgY2xhc3M9ImJsZC1zZWt0aW9uIj48 c3VtbWFyeT5FaW56ZWxuZSBQZXJzb25lbiBhdXN3w6RobGVuICgnICsgYW56YWhsICsgJyk8L3N1 bW1hcnk+JyArCiAgICAgICAgJzxwIGNsYXNzPSJibGQtcGVycy1oaW53ZWlzIj5CZXN0aW1tdGUg TWl0YXJiZWl0ZXIgZ2V6aWVsdCBlaW5iZXppZWhlbiDigJQgei5CLiBtZWhyZXJlIGF1cyBERyBB L0IvQyBvZGVyIFdhY2gtL1ZlcmtlaHJzZGllbnN0LCB1bmQgbWl0IERpbWVuc2lvbiDigJ5QZXJz b24iIGRpcmVrdCB2ZXJnbGVpY2hlbi4gTmljaHRzIGdld8OkaGx0ID0gYWxsZS48L3A+JyArCiAg ICAgICAgKGJsb2NrcyB8fCAnPGRpdiBjbGFzcz0iYmxkLWxpc3RlLWxlZXIiPktlaW5lIFBlcnNv bmVuIGdlbGFkZW4uPC9kaXY+JykgKyAnPC9kZXRhaWxzPic7Cn0KCmZ1bmN0aW9uIF9vcHQobGlz dGUsIHNlbCkgewogICAgcmV0dXJuIGxpc3RlLm1hcChmdW5jdGlvbihvKSB7CiAgICAgICAgcmV0 dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cihvLndlcnQpICsgJyInICsgKG8ud2Vy dCA9PT0gc2VsID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPicgKyBlc2NhcGVIVE1MKG8ubGFiZWwp ICsgJzwvb3B0aW9uPic7CiAgICB9KS5qb2luKCcnKTsKfQoKLy8gWmVpdHJhdW0tQmxvY2s6IE1v ZHVzLUF1c3dhaGwgKERhdHVtIC8gS2FsZW5kZXJ3b2NoZSAvIFF1YXJ0YWwgLyBHZXNhbXQpICsK Ly8gZGllIHp1bSBNb2R1cyBwYXNzZW5kZW4gRWluZ2FiZW4uIFNpY2h0YmFya2VpdCBzdGV1ZXJ0 IF96ZWl0U2ljaHRiYXJrZWl0KCkuCmZ1bmN0aW9uIF96ZWl0cmF1bUh0bWwoc3BlYykgewogICAg dmFyIG1vZHVzID0gc3BlYy56ZWl0TW9kdXMgfHwgJ2RhdHVtJzsKICAgIHZhciBxdWFydE9wdCA9 ICc8b3B0aW9uIHZhbHVlPSIiPuKAlCB3w6RobGVuIOKAlDwvb3B0aW9uPicgKyBfZGF0ZW5KYWhy ZSgpLm1hcChmdW5jdGlvbihqKSB7CiAgICAgICAgcmV0dXJuIFsxLCAyLCAzLCA0XS5tYXAoZnVu Y3Rpb24ocSkgewogICAgICAgICAgICB2YXIgdyA9IGogKyAnLVEnICsgcTsKICAgICAgICAgICAg cmV0dXJuICc8b3B0aW9uIHZhbHVlPSInICsgZXNjYXBlQXR0cih3KSArICciPlEnICsgcSArICcg JyArIGVzY2FwZUhUTUwoaikgKyAnPC9vcHRpb24+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAg IH0pLmpvaW4oJycpOwogICAgZnVuY3Rpb24gcVNlbChpZCwgdmFsKSB7CiAgICAgICAgcmV0dXJu ICc8c2VsZWN0IGlkPSInICsgaWQgKyAnIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArIHF1YXJ0T3B0 LnJlcGxhY2UoJ3ZhbHVlPSInICsgZXNjYXBlQXR0cih2YWwpICsgJyInLCAndmFsdWU9IicgKyBl c2NhcGVBdHRyKHZhbCkgKyAnIiBzZWxlY3RlZCcpICsgJzwvc2VsZWN0Pic7CiAgICB9CiAgICBy ZXR1cm4gJycgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIj48c3BhbiBjbGFzcz0iYmxkLWZl bGQtdGl0ZWwiPlplaXRyYXVtPC9zcGFuPicgKwogICAgICAgICc8c2VsZWN0IGlkPSJibGQtemVp dG1vZHVzIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArCiAgICAgICAgICAgICc8b3B0aW9uIHZhbHVl PSJkYXR1bSInICsgKG1vZHVzID09PSAnZGF0dW0nID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPlZv buKAk0JpcyAoVGFnIGdlbmF1KTwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1 ZT0ia3ciJyArIChtb2R1cyA9PT0gJ2t3JyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5LYWxlbmRl cndvY2hlbiAodm9u4oCTYmlzKTwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1 ZT0icXVhcnRhbCInICsgKG1vZHVzID09PSAncXVhcnRhbCcgPyAnIHNlbGVjdGVkJyA6ICcnKSAr ICc+UXVhcnRhbGUgKHZvbuKAk2Jpcyk8L29wdGlvbj4nICsKICAgICAgICAgICAgJzxvcHRpb24g dmFsdWU9Imdlc2FtdCInICsgKG1vZHVzID09PSAnZ2VzYW10JyA/ICcgc2VsZWN0ZWQnIDogJycp ICsgJz5HZXNhbXQgKGFsbGUgRGF0ZW4pPC9vcHRpb24+JyArCiAgICAgICAgJzwvc2VsZWN0Pjwv ZGl2PicgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIGJsZC1mZWxkLTIiIGRhdGEtemVpdD0i ZGF0dW0iJyArIChtb2R1cyA9PT0gJ2RhdHVtJyA/ICcnIDogJyBzdHlsZT0iZGlzcGxheTpub25l IicpICsgJz4nICsKICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtbWluaSI+Vm9uPGlucHV0IGlk PSJibGQtdm9uIiBjbGFzcz0iZm9ybS1pbnB1dCIgdHlwZT0iZGF0ZSIgdmFsdWU9IicgKyBlc2Nh cGVBdHRyKHNwZWMuemVpdFZvbiB8fCAnJykgKyAnIj48L2xhYmVsPicgKwogICAgICAgICc8bGFi ZWwgY2xhc3M9ImJsZC1taW5pIj5CaXM8aW5wdXQgaWQ9ImJsZC1iaXMiIGNsYXNzPSJmb3JtLWlu cHV0IiB0eXBlPSJkYXRlIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3BlYy56ZWl0QmlzIHx8ICcn KSArICciPjwvbGFiZWw+PC9kaXY+JyArCiAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZl bGQtMiIgZGF0YS16ZWl0PSJrdyInICsgKG1vZHVzID09PSAna3cnID8gJycgOiAnIHN0eWxlPSJk aXNwbGF5Om5vbmUiJykgKyAnPicgKwogICAgICAgICc8bGFiZWwgY2xhc3M9ImJsZC1taW5pIj5W b24gS1c8aW5wdXQgaWQ9ImJsZC1rdy12b24iIGNsYXNzPSJmb3JtLWlucHV0IiB0eXBlPSJ3ZWVr IiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3BlYy56ZWl0S3dWb24gfHwgJycpICsgJyI+PC9sYWJl bD4nICsKICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtbWluaSI+QmlzIEtXPGlucHV0IGlkPSJi bGQta3ctYmlzIiBjbGFzcz0iZm9ybS1pbnB1dCIgdHlwZT0id2VlayIgdmFsdWU9IicgKyBlc2Nh cGVBdHRyKHNwZWMuemVpdEt3QmlzIHx8ICcnKSArICciPjwvbGFiZWw+PC9kaXY+JyArCiAgICAn PGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZlbGQtMiIgZGF0YS16ZWl0PSJxdWFydGFsIicgKyAo bW9kdXMgPT09ICdxdWFydGFsJyA/ICcnIDogJyBzdHlsZT0iZGlzcGxheTpub25lIicpICsgJz4n ICsKICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtbWluaSI+Vm9uIFF1YXJ0YWwnICsgcVNlbCgn YmxkLXEtdm9uJywgc3BlYy56ZWl0UVZvbiB8fCAnJykgKyAnPC9sYWJlbD4nICsKICAgICAgICAn PGxhYmVsIGNsYXNzPSJibGQtbWluaSI+QmlzIFF1YXJ0YWwnICsgcVNlbCgnYmxkLXEtYmlzJywg c3BlYy56ZWl0UUJpcyB8fCAnJykgKyAnPC9sYWJlbD48L2Rpdj4nICsKICAgICc8ZGl2IGNsYXNz PSJibGQtZmVsZCIgZGF0YS16ZWl0PSJnZXNhbXQiJyArIChtb2R1cyA9PT0gJ2dlc2FtdCcgPyAn JyA6ICcgc3R5bGU9ImRpc3BsYXk6bm9uZSInKSArICc+JyArCiAgICAgICAgJzxwIGNsYXNzPSJi bGQtcGVycy1oaW53ZWlzIj5FcyB3ZXJkZW4gYWxsZSB2b3JoYW5kZW5lbiBQbGFuZGF0ZW4gb2hu ZSBaZWl0YmVncmVuenVuZyBhdXNnZXdlcnRldC48L3A+PC9kaXY+JzsKfQoKZnVuY3Rpb24gX2Zv cm1IdG1sKHNwZWMpIHsKICAgIHZhciBmaSA9IHNwZWMuZmlsdGVyIHx8IHt9OwogICAgdmFyIGdy T3B0ID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkubWFwKGZ1bmN0aW9uKGcpeyByZXR1cm4geyB3 ZXJ0OiBnLm5hbWUsIGxhYmVsOiBnLmJlemVpY2hudW5nIHx8IGcubmFtZSB9OyB9KTsKICAgIHZh ciBmbk9wdCA9IChaLmFkbWluLmZ1bmt0aW9uZW4gfHwgW10pLm1hcChmdW5jdGlvbihmKXsgcmV0 dXJuIHsgd2VydDogKGYuY29kZSB8fCBmKSwgbGFiZWw6IChmLmNvZGUgfHwgZikgfTsgfSk7CiAg ICB2YXIgc3RPcHQgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pLm1hcChmdW5jdGlvbihzKXsg cmV0dXJuIHsgd2VydDogcy5rdWVyemVsLCBsYWJlbDogcy5rdWVyemVsIH07IH0pOwogICAgdmFy IGRnT3B0ID0gKFouYWRtaW4uZGllbnN0Z3JhZGUgfHwgW10pLm1hcChmdW5jdGlvbihkKXsgcmV0 dXJuIHsgd2VydDogKGQuY29kZSB8fCBkKSwgbGFiZWw6IChkLmNvZGUgfHwgZCkgfTsgfSk7CiAg ICB2YXIgY29PcHQgPSAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10pLmZpbHRlcihmdW5jdGlv bihjKXsgcmV0dXJuIGMuYWt0aXYgIT09IGZhbHNlOyB9KS5tYXAoZnVuY3Rpb24oYyl7IHJldHVy biB7IHdlcnQ6IGMuY29kZSwgbGFiZWw6IGMuY29kZSB9OyB9KTsKICAgIHZhciBrYXRPcHQgPSBU QUdfS0FURUdPUklFTi5tYXAoZnVuY3Rpb24oayl7IHJldHVybiB7IHdlcnQ6IGssIGxhYmVsOiBr IH07IH0pOwogICAgdmFyIHdkT3B0ID0gV09DSEVOVEFHRV9PUFQubWFwKGZ1bmN0aW9uKHcpeyBy ZXR1cm4geyB3ZXJ0OiB3LncsIGxhYmVsOiB3LmwgfTsgfSk7CgogICAgdmFyIGRpbUxpc3RlID0g RElNRU5TSU9ORU4ubWFwKGZ1bmN0aW9uKGQpeyByZXR1cm4geyB3ZXJ0OiBkLmtleSwgbGFiZWw6 IGQubGFiZWwgfTsgfSk7CiAgICB2YXIgZGltU2VyaWVMaXN0ZSA9IFt7IHdlcnQ6ICcnLCBsYWJl bDogJ+KAlCBrZWluZSDigJQnIH1dLmNvbmNhdChkaW1MaXN0ZSk7CiAgICB2YXIga3pMaXN0ZSA9 IEtFTk5aQUhMRU4ubWFwKGZ1bmN0aW9uKGspeyByZXR1cm4geyB3ZXJ0OiBrLmtleSwgbGFiZWw6 IGsubGFiZWwgfTsgfSk7CiAgICB2YXIgcG1MaXN0ZSA9IFBFUlNPTl9NQVNTRS5tYXAoZnVuY3Rp b24ocCl7IHJldHVybiB7IHdlcnQ6IHAua2V5LCBsYWJlbDogcC5sYWJlbCB9OyB9KTsKICAgIHZh ciBkdExpc3RlID0gZGlhZ3JhbW1UeXBlbigpLm1hcChmdW5jdGlvbih0KXsgcmV0dXJuIHsgd2Vy dDogdC5rZXksIGxhYmVsOiB0LmxhYmVsIH07IH0pOwoKICAgIHJldHVybiAnJyArCiAgICAnPGRp diBjbGFzcz0iYmxkLWZlbGQiPjxzcGFuIGNsYXNzPSJibGQtZmVsZC10aXRlbCI+VGl0ZWwgZGVy IEthY2hlbDwvc3Bhbj4nICsKICAgICAgICAnPGlucHV0IGlkPSJibGQtdGl0ZWwiIGNsYXNzPSJm b3JtLWlucHV0IiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjYwIiBwbGFjZWhvbGRlcj0iei5CLiBO YWNodGRpZW5zdGUgamUgRGllbnN0Z3J1cHBlIiB2YWx1ZT0iJyArIGVzY2FwZUF0dHIoc3BlYy50 aXRlbCB8fCAnJykgKyAnIj48L2Rpdj4nICsKICAgICc8ZGl2IGNsYXNzPSJibGQtZmVsZCI+PHNw YW4gY2xhc3M9ImJsZC1mZWxkLXRpdGVsIj5EaWFncmFtbXR5cDwvc3Bhbj4nICsKICAgICAgICAn PHNlbGVjdCBpZD0iYmxkLWRpYWdyYW1tIiBjbGFzcz0iZm9ybS1pbnB1dCI+JyArIF9vcHQoZHRM aXN0ZSwgc3BlYy5kaWFncmFtbSkgKyAnPC9zZWxlY3Q+PC9kaXY+JyArCgogICAgJzxkZXRhaWxz IGNsYXNzPSJibGQtc2VrdGlvbiIgb3Blbj48c3VtbWFyeT5EYXRlbiAmYW1wOyBGaWx0ZXI8L3N1 bW1hcnk+JyArCiAgICAgICAgX3plaXRyYXVtSHRtbChzcGVjKSArCiAgICAgICAgX2NoaXBHcnVw cGUoJ2dydXBwZW4nLCAnRGllbnN0Z3J1cHBlbicsIGdyT3B0LCBmaS5ncnVwcGVuIHx8IFtdKSAr CiAgICAgICAgX2NoaXBHcnVwcGUoJ2Z1bmt0aW9uZW4nLCAnRnVua3Rpb25lbicsIGZuT3B0LCBm aS5mdW5rdGlvbmVuIHx8IFtdKSArCiAgICAgICAgX2NoaXBHcnVwcGUoJ3N0YW5kb3J0ZScsICdT dGFuZG9ydGUnLCBzdE9wdCwgZmkuc3RhbmRvcnRlIHx8IFtdKSArCiAgICAgICAgX2NoaXBHcnVw cGUoJ2RpZW5zdGdyYWRlJywgJ0RpZW5zdGdyYWRlJywgZGdPcHQsIGZpLmRpZW5zdGdyYWRlIHx8 IFtdKSArCiAgICAgICAgX2NoaXBHcnVwcGUoJ2thdGVnb3JpZW4nLCAnVGFnLUthdGVnb3JpZW4n LCBrYXRPcHQsIGZpLmthdGVnb3JpZW4gfHwgW10pICsKICAgICAgICBfY2hpcEdydXBwZSgnY29k ZXMnLCAnU2NoaWNodGNvZGVzJywgY29PcHQsIGZpLmNvZGVzIHx8IFtdKSArCiAgICAgICAgX2No aXBHcnVwcGUoJ3dvY2hlbnRhZ2UnLCAnV29jaGVudGFnZScsIHdkT3B0LCAoZmkud29jaGVudGFn ZSB8fCBbXSkubWFwKFN0cmluZykpICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLXRvZ2dsZXMi PicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtdG9nZ2xlIj48aW5wdXQgdHlwZT0i Y2hlY2tib3giIGlkPSJibGQtbnVyRGllbnN0IicgKyAoZmkubnVyRGllbnN0ID8gJyBjaGVja2Vk JyA6ICcnKSArICc+IG51ciBEaWVuc3RlPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxsYWJlbCBj bGFzcz0iYmxkLXRvZ2dsZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYmxkLW51cldFIicg KyAoZmkubnVyV0UgPyAnIGNoZWNrZWQnIDogJycpICsgJz4gbnVyIFdvY2hlbmVuZGU8L2xhYmVs PicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtdG9nZ2xlIj48aW5wdXQgdHlwZT0i Y2hlY2tib3giIGlkPSJibGQtbnVyRmVpZXJ0YWciJyArIChmaS5udXJGZWllcnRhZyA/ICcgY2hl Y2tlZCcgOiAnJykgKyAnPiBudXIgRmVpZXJ0YWdlPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0iYmxkLXRvZ2dsZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYmxkLW51 ckZlaWVydGFnQnVuZCInICsgKGZpLm51ckZlaWVydGFnQnVuZCA/ICcgY2hlY2tlZCcgOiAnJykg KyAnPiBudXIgYnVuZGVzd2VpdGUgRmVpZXJ0YWdlPC9sYWJlbD4nICsKICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0iYmxkLXRvZ2dsZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYmxkLW51 ckZlaWVydGFnTlJXIicgKyAoZmkubnVyRmVpZXJ0YWdOUlcgPyAnIGNoZWNrZWQnIDogJycpICsg Jz4gbnVyIE5SVy1GZWllcnRhZ2U8L2xhYmVsPicgKwogICAgICAgICc8L2Rpdj4nICsKICAgICAg ICAnPHAgY2xhc3M9ImJsZC1wZXJzLWhpbndlaXMiPkZlaWVydGFnZSB3ZXJkZW4gYnVuZGVzd2Vp dCBiencuIE5SVy1zcGV6aWZpc2NoIChGcm9ubGVpY2huYW0sIEFsbGVyaGVpbGlnZW4pIGVya2Fu bnQuIFp1bSBBdWZzY2hsw7xzc2VsbiBkaWUgRGltZW5zaW9uIOKAnkZlaWVydGFnIChOYW1lKSIg b2RlciDigJ5GZWllcnRhZyAoQnVuZC9OUlcpIiB3w6RobGVuLjwvcD4nICsKICAgICc8L2RldGFp bHM+JyArCgogICAgX3BlcnNvbmVuU2VrdGlvbkh0bWwoZmkucGVyc29uZW4gfHwgW10pICsKCiAg ICAnPGRldGFpbHMgY2xhc3M9ImJsZC1zZWt0aW9uIiBvcGVuPjxzdW1tYXJ5PkF1c3dlcnR1bmc8 L3N1bW1hcnk+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIiBkYXRhLW51cj0ia2F0 ZWdvcmlhbCI+PHNwYW4gY2xhc3M9ImJsZC1mZWxkLXRpdGVsIj5EaW1lbnNpb24gKFgtQWNoc2Up PC9zcGFuPicgKwogICAgICAgICAgICAnPHNlbGVjdCBpZD0iYmxkLWRpbVgiIGNsYXNzPSJmb3Jt LWlucHV0Ij4nICsgX29wdChkaW1MaXN0ZSwgc3BlYy5kaW1YKSArICc8L3NlbGVjdD48L2Rpdj4n ICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQiIGRhdGEtbnVyPSJrYXRlZ29yaWFsIj48 c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwiPjIuIERpbWVuc2lvbiAoU2VyaWUvU3RhcGVsL01h dHJpeCk8L3NwYW4+JyArCiAgICAgICAgICAgICc8c2VsZWN0IGlkPSJibGQtZGltU2VyaWUiIGNs YXNzPSJmb3JtLWlucHV0Ij4nICsgX29wdChkaW1TZXJpZUxpc3RlLCBzcGVjLmRpbVNlcmllIHx8 ICcnKSArICc8L3NlbGVjdD48L2Rpdj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQi IGRhdGEtbnVyPSJrYXRlZ29yaWFsIj48c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwiPktlbm56 YWhsPC9zcGFuPicgKwogICAgICAgICAgICAnPHNlbGVjdCBpZD0iYmxkLWtlbm56YWhsIiBjbGFz cz0iZm9ybS1pbnB1dCI+JyArIF9vcHQoa3pMaXN0ZSwgc3BlYy5rZW5uemFobCkgKyAnPC9zZWxl Y3Q+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIGJsZC1mZWxkLTIiIGRh dGEtbnVyPSJzY2F0dGVyIiBzdHlsZT0iZGlzcGxheTpub25lIj4nICsKICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0iYmxkLW1pbmkiPlgtTWHDnyAocHJvIFBlcnNvbik8c2VsZWN0IGlkPSJibGQt c2NhdHRlclgiIGNsYXNzPSJmb3JtLWlucHV0Ij4nICsgX29wdChwbUxpc3RlLCBzcGVjLnNjYXR0 ZXJYKSArICc8L3NlbGVjdD48L2xhYmVsPicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJi bGQtbWluaSI+WS1NYcOfIChwcm8gUGVyc29uKTxzZWxlY3QgaWQ9ImJsZC1zY2F0dGVyWSIgY2xh c3M9ImZvcm0taW5wdXQiPicgKyBfb3B0KHBtTGlzdGUsIHNwZWMuc2NhdHRlclkpICsgJzwvc2Vs ZWN0PjwvbGFiZWw+PC9kaXY+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIGJsZC1m ZWxkLTIiIGRhdGEtbnVyPSJrYXRlZ29yaWFsIj48bGFiZWwgY2xhc3M9ImJsZC1taW5pIj5Tb3J0 aWVydW5nPHNlbGVjdCBpZD0iYmxkLXNvcnQiIGNsYXNzPSJmb3JtLWlucHV0Ij4nICsKICAgICAg ICAgICAgJzxvcHRpb24gdmFsdWU9IndlcnQtZGVzYyInICsgKHNwZWMuc29ydCA9PT0gJ3dlcnQt ZGVzYycgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+SMO2Y2hzdGVyIHp1ZXJzdDwvb3B0aW9uPicg KwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0id2VydC1hc2MiJyArIChzcGVjLnNvcnQgPT09 ICd3ZXJ0LWFzYycgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+TmllZHJpZ3N0ZXIgenVlcnN0PC9v cHRpb24+JyArCiAgICAgICAgICAgICc8b3B0aW9uIHZhbHVlPSJsYWJlbCInICsgKHNwZWMuc29y dCA9PT0gJ2xhYmVsJyA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5OYWNoIEJlemVpY2hudW5nPC9v cHRpb24+JyArCiAgICAgICAgJzwvc2VsZWN0PjwvbGFiZWw+JyArCiAgICAgICAgJzxsYWJlbCBj bGFzcz0iYmxkLW1pbmkiPkJlZ3JlbnplbjxzZWxlY3QgaWQ9ImJsZC10b3BuIiBjbGFzcz0iZm9y bS1pbnB1dCI+JyArCiAgICAgICAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAzMF0ubWFwKGZ1bmN0 aW9uKG4peyByZXR1cm4gJzxvcHRpb24gdmFsdWU9IicgKyBuICsgJyInICsgKHNwZWMudG9wTiA9 PT0gbiA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz4nICsgKG4gPT09IDAgPyAnQWxsZScgOiAnVG9w ICcgKyBuKSArICc8L29wdGlvbj4nOyB9KS5qb2luKCcnKSArCiAgICAgICAgJzwvc2VsZWN0Pjwv bGFiZWw+PC9kaXY+JyArCiAgICAnPC9kZXRhaWxzPic7Cn0KCi8vIC0tLS0tIFNwZWMgYXVzIEZv cm11bGFyIGxlc2VuIC0tLS0tCgpmdW5jdGlvbiBfdmFsKGlkKSB7IHZhciBlID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoaWQpOyByZXR1cm4gZSA/IGUudmFsdWUgOiAnJzsgfQpmdW5jdGlvbiBf Y2hrKGlkKSB7IHZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyByZXR1cm4gISEo ZSAmJiBlLmNoZWNrZWQpOyB9CmZ1bmN0aW9uIF9jaGlwcyhncnApIHsKICAgIHZhciBvdXQgPSBb XTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWNoaXA9IicgKyBncnAgKyAn Il06Y2hlY2tlZCcpLmZvckVhY2goZnVuY3Rpb24oYyl7IG91dC5wdXNoKGMudmFsdWUpOyB9KTsK ICAgIHJldHVybiBvdXQ7Cn0KCi8vIEF1cyBkZW0gWmVpdHJhdW0tTW9kdXMgZGVuIHdpcmtzYW1l biBEYXR1bXNiZXJlaWNoICh6ZWl0Vm9uL3plaXRCaXMpIGFibGVpdGVuLgovLyBrdy9xdWFydGFs IHdlcmRlbiBhdWYgVGFnZXNncmVuemVuIHVtZ2VyZWNobmV0LCAnZ2VzYW10JyBsb2VzY2h0IGRl biBCZXJlaWNoLgpmdW5jdGlvbiBfemVpdEJlcmVpY2gobW9kdXMsIHJvaCkgewogICAgaWYgKG1v ZHVzID09PSAnZ2VzYW10JykgcmV0dXJuIHsgdm9uOiAnJywgYmlzOiAnJyB9OwogICAgaWYgKG1v ZHVzID09PSAna3cnKSB7CiAgICAgICAgdmFyIGt2ID0gX2t3R3Jlbnplbihyb2gua3dWb24pLCBr YiA9IF9rd0dyZW56ZW4ocm9oLmt3QmlzKTsKICAgICAgICByZXR1cm4geyB2b246IGt2ID8ga3Yu dm9uIDogJycsIGJpczoga2IgPyBrYi5iaXMgOiAnJyB9OwogICAgfQogICAgaWYgKG1vZHVzID09 PSAncXVhcnRhbCcpIHsKICAgICAgICB2YXIgcXYgPSBfcXVhcnRhbEdyZW56ZW4ocm9oLnFWb24p LCBxYiA9IF9xdWFydGFsR3Jlbnplbihyb2gucUJpcyk7CiAgICAgICAgcmV0dXJuIHsgdm9uOiBx diA/IHF2LnZvbiA6ICcnLCBiaXM6IHFiID8gcWIuYmlzIDogJycgfTsKICAgIH0KICAgIHJldHVy biB7IHZvbjogcm9oLnZvbiwgYmlzOiByb2guYmlzIH07ICAgICAgICAgICAgICAgLy8gJ2RhdHVt Jwp9CgpmdW5jdGlvbiBfc3BlY0F1c0Zvcm0oKSB7CiAgICB2YXIgbW9kdXMgPSBfdmFsKCdibGQt emVpdG1vZHVzJykgfHwgJ2RhdHVtJzsKICAgIHZhciBrd1ZvbiA9IF92YWwoJ2JsZC1rdy12b24n KSwga3dCaXMgPSBfdmFsKCdibGQta3ctYmlzJyk7CiAgICB2YXIgcVZvbiA9IF92YWwoJ2JsZC1x LXZvbicpLCAgcUJpcyA9IF92YWwoJ2JsZC1xLWJpcycpOwogICAgdmFyIGJlcmVpY2ggPSBfemVp dEJlcmVpY2gobW9kdXMsIHsKICAgICAgICB2b246IF92YWwoJ2JsZC12b24nKSwgYmlzOiBfdmFs KCdibGQtYmlzJyksCiAgICAgICAga3dWb246IGt3Vm9uLCBrd0Jpczoga3dCaXMsIHFWb246IHFW b24sIHFCaXM6IHFCaXMKICAgIH0pOwogICAgcmV0dXJuIHsKICAgICAgICB2OiAyLAogICAgICAg IGlkOiBfZWRpdElkLAogICAgICAgIHRpdGVsOiAoX3ZhbCgnYmxkLXRpdGVsJykgfHwgJycpLnRy aW0oKSwKICAgICAgICBkaWFncmFtbTogX3ZhbCgnYmxkLWRpYWdyYW1tJykgfHwgJ2JhbGtlbics CiAgICAgICAgemVpdE1vZHVzOiBtb2R1cywKICAgICAgICB6ZWl0Vm9uOiBiZXJlaWNoLnZvbiwK ICAgICAgICB6ZWl0QmlzOiBiZXJlaWNoLmJpcywKICAgICAgICB6ZWl0S3dWb246IGt3Vm9uLCB6 ZWl0S3dCaXM6IGt3QmlzLAogICAgICAgIHplaXRRVm9uOiBxVm9uLCB6ZWl0UUJpczogcUJpcywK ICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgICAgcGVyc29uZW46IF9jaGlwcygncGVyc29uZW4n KSwKICAgICAgICAgICAgZ3J1cHBlbjogX2NoaXBzKCdncnVwcGVuJyksCiAgICAgICAgICAgIGZ1 bmt0aW9uZW46IF9jaGlwcygnZnVua3Rpb25lbicpLAogICAgICAgICAgICBzdGFuZG9ydGU6IF9j aGlwcygnc3RhbmRvcnRlJyksCiAgICAgICAgICAgIGRpZW5zdGdyYWRlOiBfY2hpcHMoJ2RpZW5z dGdyYWRlJyksCiAgICAgICAgICAgIGthdGVnb3JpZW46IF9jaGlwcygna2F0ZWdvcmllbicpLAog ICAgICAgICAgICBjb2RlczogX2NoaXBzKCdjb2RlcycpLAogICAgICAgICAgICB3b2NoZW50YWdl OiBfY2hpcHMoJ3dvY2hlbnRhZ2UnKS5tYXAoZnVuY3Rpb24oeCl7IHJldHVybiBwYXJzZUludCh4 LCAxMCk7IH0pLAogICAgICAgICAgICBudXJEaWVuc3Q6IF9jaGsoJ2JsZC1udXJEaWVuc3QnKSwK ICAgICAgICAgICAgbnVyV0U6IF9jaGsoJ2JsZC1udXJXRScpLAogICAgICAgICAgICBudXJGZWll cnRhZzogX2NoaygnYmxkLW51ckZlaWVydGFnJyksCiAgICAgICAgICAgIG51ckZlaWVydGFnQnVu ZDogX2NoaygnYmxkLW51ckZlaWVydGFnQnVuZCcpLAogICAgICAgICAgICBudXJGZWllcnRhZ05S VzogX2NoaygnYmxkLW51ckZlaWVydGFnTlJXJykKICAgICAgICB9LAogICAgICAgIGRpbVg6IF92 YWwoJ2JsZC1kaW1YJykgfHwgJ2dydXBwZScsCiAgICAgICAgZGltU2VyaWU6IF92YWwoJ2JsZC1k aW1TZXJpZScpIHx8ICcnLAogICAgICAgIGtlbm56YWhsOiBfdmFsKCdibGQta2VubnphaGwnKSB8 fCAnYW56YWhsJywKICAgICAgICBzY2F0dGVyWDogX3ZhbCgnYmxkLXNjYXR0ZXJYJykgfHwgJ25h Y2h0JywKICAgICAgICBzY2F0dGVyWTogX3ZhbCgnYmxkLXNjYXR0ZXJZJykgfHwgJ3VybGF1Yics CiAgICAgICAgc29ydDogX3ZhbCgnYmxkLXNvcnQnKSB8fCAnd2VydC1kZXNjJywKICAgICAgICB0 b3BOOiBwYXJzZUludChfdmFsKCdibGQtdG9wbicpIHx8ICcwJywgMTApIHx8IDAKICAgIH07Cn0K Ci8vIC0tLS0tIEZsdXNzZGlhZ3JhbW0gKGxpdmUpIC0tLS0tCgpmdW5jdGlvbiBfZmx1c3NBa3R1 YWxpc2llcmVuKCkgewogICAgdmFyIHppZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmxk LWZsdXNzJyk7CiAgICBpZiAoIXppZWwpIHJldHVybjsKICAgIHZhciBzcGVjID0gX3NwZWNBdXNG b3JtKCk7CiAgICB2YXIgc2NhdHRlciA9IHNwZWMuZGlhZ3JhbW0gPT09ICdzY2F0dGVyJzsKICAg IHZhciBkdExhYmVsID0gKGRpYWdyYW1tVHlwZW4oKS5maWx0ZXIoZnVuY3Rpb24odCl7IHJldHVy biB0LmtleSA9PT0gc3BlYy5kaWFncmFtbTsgfSlbMF0gfHwge30pLmxhYmVsIHx8IHNwZWMuZGlh Z3JhbW07CiAgICB2YXIgZGltWExhYmVsID0gKERJTUVOU0lPTkVOLmZpbHRlcihmdW5jdGlvbihk KXsgcmV0dXJuIGQua2V5ID09PSBzcGVjLmRpbVg7IH0pWzBdIHx8IHt9KS5sYWJlbCB8fCBzcGVj LmRpbVg7CiAgICB2YXIgZGltU0xhYmVsID0gc3BlYy5kaW1TZXJpZSA/IChESU1FTlNJT05FTi5m aWx0ZXIoZnVuY3Rpb24oZCl7IHJldHVybiBkLmtleSA9PT0gc3BlYy5kaW1TZXJpZTsgfSlbMF0g fHwge30pLmxhYmVsIDogJyc7CiAgICB2YXIga3pMYWJlbCA9IChLRU5OWkFITEVOLmZpbHRlcihm dW5jdGlvbihrKXsgcmV0dXJuIGsua2V5ID09PSBzcGVjLmtlbm56YWhsOyB9KVswXSB8fCB7fSku bGFiZWwgfHwgc3BlYy5rZW5uemFobDsKICAgIHZhciBwbVggPSAoUEVSU09OX01BU1NFLmZpbHRl cihmdW5jdGlvbihwKXsgcmV0dXJuIHAua2V5ID09PSBzcGVjLnNjYXR0ZXJYOyB9KVswXSB8fCB7 fSkubGFiZWwgfHwgc3BlYy5zY2F0dGVyWDsKICAgIHZhciBwbVkgPSAoUEVSU09OX01BU1NFLmZp bHRlcihmdW5jdGlvbihwKXsgcmV0dXJuIHAua2V5ID09PSBzcGVjLnNjYXR0ZXJZOyB9KVswXSB8 fCB7fSkubGFiZWwgfHwgc3BlYy5zY2F0dGVyWTsKCiAgICB2YXIgc3RhdGlvbmVuID0gW3sgdDog J1BsYW5kYXRlbicsIHM6ICdhbGxlIEVpbnRyw6RnZScgfSwgeyB0OiAnRmlsdGVyJywgczogX2Zp bHRlckt1cnooc3BlYykgfV07CiAgICBpZiAoc2NhdHRlcikgewogICAgICAgIHN0YXRpb25lbi5w dXNoKHsgdDogJ0tvcnJlbGF0aW9uJywgczogcG1YICsgJyDDlyAnICsgcG1ZICsgJyBqZSBQZXJz b24nIH0pOwogICAgfSBlbHNlIHsKICAgICAgICBzdGF0aW9uZW4ucHVzaCh7IHQ6ICdEaW1lbnNp b24nLCBzOiBkaW1YTGFiZWwgKyAoZGltU0xhYmVsID8gJyDDlyAnICsgZGltU0xhYmVsIDogJycp IH0pOwogICAgICAgIHN0YXRpb25lbi5wdXNoKHsgdDogJ0tlbm56YWhsJywgczoga3pMYWJlbCB9 KTsKICAgIH0KICAgIHN0YXRpb25lbi5wdXNoKHsgdDogJ0RpYWdyYW1tJywgczogZHRMYWJlbCB9 KTsKCiAgICB6aWVsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPSJmbHVzcy10aXRlbCI+TG9naWsg ZGllc2VyIFN0YXRpc3RpazwvZGl2PjxkaXYgY2xhc3M9ImZsdXNzLWtldHRlIj4nICsKICAgICAg ICBzdGF0aW9uZW4ubWFwKGZ1bmN0aW9uKHN0LCBpKSB7CiAgICAgICAgICAgIHJldHVybiAoaSA/ ICc8c3BhbiBjbGFzcz0iZmx1c3MtcGZlaWwiPuKGkjwvc3Bhbj4nIDogJycpICsKICAgICAgICAg ICAgICAgICc8ZGl2IGNsYXNzPSJmbHVzcy1zdGF0aW9uIj48ZGl2IGNsYXNzPSJmbHVzcy10Ij4n ICsgZXNjYXBlSFRNTChzdC50KSArICc8L2Rpdj48ZGl2IGNsYXNzPSJmbHVzcy1zIj4nICsgZXNj YXBlSFRNTChzdC5zKSArICc8L2Rpdj48L2Rpdj4nOwogICAgICAgIH0pLmpvaW4oJycpICsgJzwv ZGl2Pic7Cn0KCmZ1bmN0aW9uIF9maWx0ZXJLdXJ6KHNwZWMpIHsKICAgIHZhciBmaSA9IHNwZWMu ZmlsdGVyIHx8IHt9LCB0ZWlsZSA9IFtdOwogICAgaWYgKGZpLnBlcnNvbmVuICYmIGZpLnBlcnNv bmVuLmxlbmd0aCkgdGVpbGUucHVzaChmaS5wZXJzb25lbi5sZW5ndGggKyAnIFBlcnNvbmVuJyk7 CiAgICBbJ2dydXBwZW4nLCAnZnVua3Rpb25lbicsICdzdGFuZG9ydGUnLCAnZGllbnN0Z3JhZGUn LCAna2F0ZWdvcmllbicsICdjb2RlcyddLmZvckVhY2goZnVuY3Rpb24oaykgewogICAgICAgIGlm IChmaVtrXSAmJiBmaVtrXS5sZW5ndGgpIHRlaWxlLnB1c2goZmlba10ubGVuZ3RoICsgJ8OXICcg KyBrKTsKICAgIH0pOwogICAgaWYgKGZpLndvY2hlbnRhZ2UgJiYgZmkud29jaGVudGFnZS5sZW5n dGgpIHRlaWxlLnB1c2goZmkud29jaGVudGFnZS5sZW5ndGggKyAnw5cgV29jaGVudGFnJyk7CiAg ICBpZiAoZmkubnVyRGllbnN0KSB0ZWlsZS5wdXNoKCdudXIgRGllbnN0ZScpOwogICAgaWYgKGZp Lm51cldFKSB0ZWlsZS5wdXNoKCdudXIgV0UnKTsKICAgIGlmIChmaS5udXJGZWllcnRhZykgdGVp bGUucHVzaCgnbnVyIEZlaWVydGFnZScpOwogICAgaWYgKGZpLm51ckZlaWVydGFnQnVuZCkgdGVp bGUucHVzaCgnbnVyIGJ1bmRlc3dlaXRlIEZUJyk7CiAgICBpZiAoZmkubnVyRmVpZXJ0YWdOUlcp IHRlaWxlLnB1c2goJ251ciBOUlctRlQnKTsKICAgIHZhciB6bCA9IF96ZWl0cmF1bUt1cnooc3Bl Yyk7CiAgICBpZiAoemwpIHRlaWxlLnB1c2goemwpOwogICAgcmV0dXJuIHRlaWxlLmxlbmd0aCA/ IHRlaWxlLmpvaW4oJywgJykgOiAna2VpbiBGaWx0ZXInOwp9CgovLyBLdXJ6YmVzY2hyaWZ0dW5n IGRlcyBha3RpdmVuIFplaXRyYXVtcyBmdWVyIGRhcyBGbHVzc2RpYWdyYW1tLgpmdW5jdGlvbiBf emVpdHJhdW1LdXJ6KHNwZWMpIHsKICAgIHZhciBtID0gc3BlYy56ZWl0TW9kdXMgfHwgJ2RhdHVt JzsKICAgIGlmIChtID09PSAnZ2VzYW10JykgcmV0dXJuICdHZXNhbXQnOwogICAgaWYgKG0gPT09 ICdrdycpIHJldHVybiAoc3BlYy56ZWl0S3dWb24gfHwgc3BlYy56ZWl0S3dCaXMpID8gJ0tXLUJl cmVpY2gnIDogJyc7CiAgICBpZiAobSA9PT0gJ3F1YXJ0YWwnKSByZXR1cm4gKHNwZWMuemVpdFFW b24gfHwgc3BlYy56ZWl0UUJpcykgPyAnUXVhcnRhbHMtQmVyZWljaCcgOiAnJzsKICAgIHJldHVy biAoc3BlYy56ZWl0Vm9uIHx8IHNwZWMuemVpdEJpcykgPyAnWmVpdHJhdW0nIDogJyc7Cn0KCi8v IC0tLS0tIFRlc3RlbiAtLS0tLQoKZnVuY3Rpb24gX3Rlc3RlbigpIHsKICAgIHZhciB6aWVsID0g ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JsZC1lcmdlYm5pcycpOwogICAgaWYgKCF6aWVsKSBy ZXR1cm47CiAgICB2YXIgc3BlYyA9IF9zcGVjQXVzRm9ybSgpOwogICAgdHJ5IHsKICAgICAgICB2 YXIgZXJnID0gYXVzd2VydGVuKHNwZWMpOwogICAgICAgIHZhciBhbm9uID0gZmFsc2U7IC8vIEJ1 aWxkZXIgemVpZ3QgS2xhcmRhdGVuIChBZG1pbi1Lb250ZXh0KQogICAgICAgIHppZWwuaW5uZXJI VE1MID0gJzxkaXYgY2xhc3M9ImJsZC1lcmdlYm5pcy10aXRlbCI+JyArIGVzY2FwZUhUTUwoc3Bl Yy50aXRlbCB8fCAnVm9yc2NoYXUnKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xh c3M9ImJsZC1lcmdlYm5pcy1jaGFydCI+JyArIGRpYWdyYW1tUmVuZGVybihzcGVjLmRpYWdyYW1t LCBlcmcsIHNwZWMpICsgJzwvZGl2Pic7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgemllbC5p bm5lckhUTUwgPSAnPGRpdiBjbGFzcz0icmVuZGVyLWZlaGxlci1ib3giPjxkaXYgY2xhc3M9InJl bmRlci1mZWhsZXItdGV4dCI+PGRpdiBjbGFzcz0icmVuZGVyLWZlaGxlci10aXRlbCI+RmVobGVy IGJlaW0gQmF1ZW48L2Rpdj48ZGl2IGNsYXNzPSJyZW5kZXItZmVobGVyLWRldGFpbCI+JyArIGVz Y2FwZUhUTUwoZS5tZXNzYWdlIHx8IFN0cmluZyhlKSkgKyAnPC9kaXY+PC9kaXY+PC9kaXY+JzsK ICAgICAgICB0cnkgeyBjb25zb2xlLmVycm9yKCdbc3RhdGlzdGlrLWJ1aWxkZXJdJywgZSk7IH0g Y2F0Y2ggKF8pIHt9CiAgICB9Cn0KCi8vIC0tLS0tIFNwZWljaGVybiAvIExpc3RlIC0tLS0tCgpm dW5jdGlvbiBfa2FjaGVsRmluZGVuKGlkKSB7CiAgICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5h ZG1pbi5zdGF0aXN0aWtLYWNoZWxuKSB8fCBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJy Lmxlbmd0aDsgaSsrKSBpZiAoYXJyW2ldLmlkID09PSBpZCkgcmV0dXJuIGFycltpXTsKICAgIHJl dHVybiBudWxsOwp9CmZ1bmN0aW9uIF9uZXVlSWQoKSB7CiAgICB2YXIgbWF4ID0gMDsKICAgICgo Wi5hZG1pbiAmJiBaLmFkbWluLnN0YXRpc3Rpa0thY2hlbG4pIHx8IFtdKS5mb3JFYWNoKGZ1bmN0 aW9uKGspIHsKICAgICAgICB2YXIgbSA9IC9ea18oXGQrKSQvLmV4ZWMoay5pZCB8fCAnJyk7IGlm IChtKSBtYXggPSBNYXRoLm1heChtYXgsIHBhcnNlSW50KG1bMV0sIDEwKSk7CiAgICB9KTsKICAg IHJldHVybiAna18nICsgKG1heCArIDEpOwp9CmZ1bmN0aW9uIF9wZXJzaXN0KGxpc3RlLCBvbk9r KSB7CiAgICBhcGkoJy9hcGkvYWRtaW4vc3RhdGlzdGlrJywgeyBtZXRob2Q6ICdQVVQnLCBoZWFk ZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwgYm9keTogSlNPTi5z dHJpbmdpZnkoeyBzdGF0aXN0aWtLYWNoZWxuOiBsaXN0ZSB9KSB9KQogICAgICAgIC50aGVuKGZ1 bmN0aW9uKCl7IFouYWRtaW4uc3RhdGlzdGlrS2FjaGVsbiA9IGxpc3RlOyBvbk9rKCk7IH0pCiAg ICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpeyB0b2FzdCgnU3BlaWNoZXJuIGZlaGxnZXNjaGxhZ2Vu OiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwp9CmZ1bmN0aW9uIF9zcGVpY2hlcm4oKSB7 CiAgICB2YXIgc3BlYyA9IF9zcGVjQXVzRm9ybSgpOwogICAgaWYgKCFzcGVjLnRpdGVsKSB7IHRv YXN0KCdCaXR0ZSBlaW5lbiBUaXRlbCB2ZXJnZWJlbicsICd3YXJudW5nJyk7IHJldHVybjsgfQog ICAgc3BlYy5pZCA9IF9lZGl0SWQgfHwgX25ldWVJZCgpOwogICAgdmFyIGxpc3RlID0gKChaLmFk bWluICYmIFouYWRtaW4uc3RhdGlzdGlrS2FjaGVsbikgfHwgW10pLnNsaWNlKCk7CiAgICB2YXIg aWR4ID0gLTE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlLmxlbmd0aDsgaSsrKSBpZiAo bGlzdGVbaV0uaWQgPT09IHNwZWMuaWQpIHsgaWR4ID0gaTsgYnJlYWs7IH0KICAgIGlmIChpZHgg Pj0gMCkgbGlzdGVbaWR4XSA9IHNwZWM7IGVsc2UgbGlzdGUucHVzaChzcGVjKTsKICAgIF9wZXJz aXN0KGxpc3RlLCBmdW5jdGlvbigpIHsKICAgICAgICBfZWRpdElkID0gc3BlYy5pZDsKICAgICAg ICB0b2FzdChpZHggPj0gMCA/ICdLYWNoZWwgZ2VzcGVpY2hlcnQnIDogJ0thY2hlbCBhbmdlbGVn dCDigJQgZXJzY2hlaW50IGltIFN0YXRpc3Rpay1UYWInLCAnZXJmb2xnJyk7CiAgICAgICAgc3Rh dGlzdGlrQnVpbGRlclJlbmRlcm4oKTsKICAgIH0pOwp9CmZ1bmN0aW9uIF9sb2VzY2hlbihpZCkg ewogICAgYmVzdGFldGlnZW4oJ0RpZXNlIFN0YXRpc3Rpay1LYWNoZWwgZsO8ciBhbGxlIGzDtnNj aGVuPycsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBsaXN0ZSA9ICgoWi5hZG1pbiAmJiBaLmFk bWluLnN0YXRpc3Rpa0thY2hlbG4pIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oayl7IHJldHVybiBr LmlkICE9PSBpZDsgfSk7CiAgICAgICAgdmFyIGxheW91dCA9ICgoWi5hZG1pbiAmJiBaLmFkbWlu LnN0YXRpc3Rpa0xheW91dCkgfHwgW10pLmZpbHRlcihmdW5jdGlvbihlKXsgcmV0dXJuIGUuaWQg IT09IGlkOyB9KTsKICAgICAgICBhcGkoJy9hcGkvYWRtaW4vc3RhdGlzdGlrJywgeyBtZXRob2Q6 ICdQVVQnLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwg Ym9keTogSlNPTi5zdHJpbmdpZnkoeyBzdGF0aXN0aWtLYWNoZWxuOiBsaXN0ZSwgc3RhdGlzdGlr TGF5b3V0OiBsYXlvdXQgfSkgfSkKICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgICAgICBaLmFkbWluLnN0YXRpc3Rpa0thY2hlbG4gPSBsaXN0ZTsgWi5hZG1pbi5zdGF0 aXN0aWtMYXlvdXQgPSBsYXlvdXQ7CiAgICAgICAgICAgICAgICBpZiAoX2VkaXRJZCA9PT0gaWQp IF9lZGl0SWQgPSBudWxsOwogICAgICAgICAgICAgICAgdG9hc3QoJ0thY2hlbCBnZWzDtnNjaHQn LCAnZXJmb2xnJyk7CiAgICAgICAgICAgICAgICBzdGF0aXN0aWtCdWlsZGVyUmVuZGVybigpOwog ICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbihlKXsgdG9hc3QoJ0zDtnNjaGVuIGZlaGxnZXNj aGxhZ2VuOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7IH0pOwogICAgfSwgeyBqYVRleHQ6ICdM w7ZzY2hlbicsIGphRGFuZ2VyOiB0cnVlIH0pOwp9CmZ1bmN0aW9uIF9saXN0ZUh0bWwoKSB7CiAg ICB2YXIgYXJyID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdGF0aXN0aWtLYWNoZWxuKSB8fCBbXTsK ICAgIGlmICghYXJyLmxlbmd0aCkgcmV0dXJuICc8ZGl2IGNsYXNzPSJibGQtbGlzdGUtdGl0ZWwi PlZvcmhhbmRlbmUgS2FjaGVsbjwvZGl2PjxkaXYgY2xhc3M9ImJsZC1saXN0ZS1sZWVyIj5Ob2No IGtlaW5lIEthY2hlbG4gZ2ViYXV0LjwvZGl2Pic7CiAgICB2YXIgZHQgPSBkaWFncmFtbVR5cGVu KCk7CiAgICB2YXIgaXRlbXMgPSBhcnIubWFwKGZ1bmN0aW9uKGspIHsKICAgICAgICB2YXIgdHlw ID0gKGR0LmZpbHRlcihmdW5jdGlvbih0KXsgcmV0dXJuIHQua2V5ID09PSBrLmRpYWdyYW1tOyB9 KVswXSB8fCB7fSkubGFiZWwgfHwgKGsuZGlhZ3JhbW0gPyBrLmRpYWdyYW1tIDogJ1Jhbmtpbmcg KGFsdCknKTsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJsZC1saXN0ZS1pdGVtJyArIChr LmlkID09PSBfZWRpdElkID8gJyBha3RpdicgOiAnJykgKyAnIj4nICsKICAgICAgICAgICAgJzxz cGFuIGNsYXNzPSJibGQtbGlzdGUtbmFtZSI+JyArIGVzY2FwZUhUTUwoay50aXRlbCB8fCAnKG9o bmUgVGl0ZWwpJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJsZC1s aXN0ZS10eXAiPicgKyBlc2NhcGVIVE1MKHR5cCkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAn PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1taW5pIiB0eXBlPSJidXR0b24iIGRhdGEtYmxkLWVkaXQ9 IicgKyBlc2NhcGVBdHRyKGsuaWQpICsgJyI+QmVhcmJlaXRlbjwvYnV0dG9uPicgKwogICAgICAg ICAgICAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1taW5pIGJ0bi1nZWZhaHIiIHR5cGU9ImJ1dHRv biIgZGF0YS1ibGQtZGVsPSInICsgZXNjYXBlQXR0cihrLmlkKSArICciPkzDtnNjaGVuPC9idXR0 b24+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICB9KS5qb2luKCcnKTsKICAgIHJldHVybiAnPGRp diBjbGFzcz0iYmxkLWxpc3RlLXRpdGVsIj5Wb3JoYW5kZW5lIEthY2hlbG48L2Rpdj48ZGl2IGNs YXNzPSJibGQtbGlzdGUtaXRlbXMiPicgKyBpdGVtcyArICc8L2Rpdj4nOwp9CgovLyAtLS0tLSBW ZXJkcmFodHVuZyAtLS0tLQoKZnVuY3Rpb24gX2RpYWdyYW1tU2ljaHRiYXJrZWl0KCkgewogICAg dmFyIHNwZWMgPSBfc3BlY0F1c0Zvcm0oKTsKICAgIHZhciBzY2F0dGVyID0gc3BlYy5kaWFncmFt bSA9PT0gJ3NjYXR0ZXInOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3N0YXRpc3Rp ay1idWlsZGVyLWluaGFsdCBbZGF0YS1udXI9ImthdGVnb3JpYWwiXScpLmZvckVhY2goZnVuY3Rp b24oZWwpeyBlbC5zdHlsZS5kaXNwbGF5ID0gc2NhdHRlciA/ICdub25lJyA6ICcnOyB9KTsKICAg IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNzdGF0aXN0aWstYnVpbGRlci1pbmhhbHQgW2Rh dGEtbnVyPSJzY2F0dGVyIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXsgZWwuc3R5bGUuZGlzcGxh eSA9IHNjYXR0ZXIgPyAnJyA6ICdub25lJzsgfSk7Cn0KCi8vIFplaXRyYXVtLUVpbmdhYmVncnVw cGVuIGplIG5hY2ggTW9kdXMgZWluLS9hdXNibGVuZGVuLgpmdW5jdGlvbiBfemVpdFNpY2h0YmFy a2VpdCgpIHsKICAgIHZhciBtb2R1cyA9IF92YWwoJ2JsZC16ZWl0bW9kdXMnKSB8fCAnZGF0dW0n OwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI3N0YXRpc3Rpay1idWlsZGVyLWluaGFs dCBbZGF0YS16ZWl0XScpLmZvckVhY2goZnVuY3Rpb24oZWwpewogICAgICAgIGVsLnN0eWxlLmRp c3BsYXkgPSAoZWwuZ2V0QXR0cmlidXRlKCdkYXRhLXplaXQnKSA9PT0gbW9kdXMpID8gJycgOiAn bm9uZSc7CiAgICB9KTsKfQoKZnVuY3Rpb24gX3ZlcmRyYWh0ZW4oY29udCkgewogICAgLy8gQ2hp cC1Ub2dnbGVzIChhbi9hdXMtT3B0aWspICsgTGl2ZS1VcGRhdGUuCiAgICBjb250LmFkZEV2ZW50 TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgdCA9IGUudGFyZ2V0 OwogICAgICAgIGlmICh0Lm1hdGNoZXMgJiYgdC5tYXRjaGVzKCdbZGF0YS1jaGlwXScpKSB7CiAg ICAgICAgICAgIHZhciBsYWIgPSB0LmNsb3Nlc3QoJy5ibGQtY2hpcCcpOyBpZiAobGFiKSBsYWIu Y2xhc3NMaXN0LnRvZ2dsZSgnYW4nLCB0LmNoZWNrZWQpOwogICAgICAgIH0KICAgICAgICBpZiAo dC5pZCA9PT0gJ2JsZC1kaWFncmFtbScpIF9kaWFncmFtbVNpY2h0YmFya2VpdCgpOwogICAgICAg IGlmICh0LmlkID09PSAnYmxkLXplaXRtb2R1cycpIF96ZWl0U2ljaHRiYXJrZWl0KCk7CiAgICAg ICAgX2ZsdXNzQWt0dWFsaXNpZXJlbigpOwogICAgfSk7CiAgICBjb250LmFkZEV2ZW50TGlzdGVu ZXIoJ2lucHV0JywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBpZHMgPSBbJ2JsZC10aXRlbCcs ICdibGQtdm9uJywgJ2JsZC1iaXMnLCAnYmxkLWt3LXZvbicsICdibGQta3ctYmlzJ107CiAgICAg ICAgaWYgKGUudGFyZ2V0ICYmIGlkcy5pbmRleE9mKGUudGFyZ2V0LmlkKSA+PSAwKSBfZmx1c3NB a3R1YWxpc2llcmVuKCk7CiAgICB9KTsKICAgIC8vICJhbGxlIC8ga2VpbmUiIGplIERpZW5zdGdy dXBwZSAoUGVyc29uZW4tU2VrdGlvbikuCiAgICBjb250LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBndCA9IGUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRh LWdycC10b2dnbGVdJyk7CiAgICAgICAgaWYgKCFndCkgcmV0dXJuOwogICAgICAgIHZhciBnbiA9 IGd0LmdldEF0dHJpYnV0ZSgnZGF0YS1ncnAtdG9nZ2xlJyk7CiAgICAgICAgdmFyIGNoaXBzID0g W107CiAgICAgICAgY29udC5xdWVyeVNlbGVjdG9yQWxsKCcuYmxkLWNoaXBbZGF0YS1wZ3JwXScp LmZvckVhY2goZnVuY3Rpb24obGFiKSB7CiAgICAgICAgICAgIGlmIChsYWIuZ2V0QXR0cmlidXRl KCdkYXRhLXBncnAnKSA9PT0gZ24pIGNoaXBzLnB1c2gobGFiKTsKICAgICAgICB9KTsKICAgICAg ICB2YXIgYWxsZUFuID0gY2hpcHMubGVuZ3RoID4gMCAmJiBjaGlwcy5ldmVyeShmdW5jdGlvbihs YWIpeyB2YXIgaSA9IGxhYi5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOyByZXR1cm4gaSAmJiBpLmNo ZWNrZWQ7IH0pOwogICAgICAgIGNoaXBzLmZvckVhY2goZnVuY3Rpb24obGFiKSB7CiAgICAgICAg ICAgIHZhciBpbnAgPSBsYWIucXVlcnlTZWxlY3RvcignaW5wdXQnKTsKICAgICAgICAgICAgaWYg KCFpbnApIHJldHVybjsKICAgICAgICAgICAgaW5wLmNoZWNrZWQgPSAhYWxsZUFuOwogICAgICAg ICAgICBsYWIuY2xhc3NMaXN0LnRvZ2dsZSgnYW4nLCBpbnAuY2hlY2tlZCk7CiAgICAgICAgfSk7 CiAgICAgICAgX2ZsdXNzQWt0dWFsaXNpZXJlbigpOwogICAgfSk7CiAgICB2YXIgYnQgPSBkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnYmxkLXRlc3RlbicpOwogICAgaWYgKGJ0KSBidC5hZGRFdmVu dExpc3RlbmVyKCdjbGljaycsIF90ZXN0ZW4pOwogICAgdmFyIGJzID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2JsZC1zcGVpY2hlcm4nKTsKICAgIGlmIChicykgYnMuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLCBfc3BlaWNoZXJuKTsKICAgIHZhciBibiA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdibGQtbmV1Jyk7CiAgICBpZiAoYm4pIGJuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg ZnVuY3Rpb24oKXsgX2VkaXRJZCA9IG51bGw7IHN0YXRpc3Rpa0J1aWxkZXJSZW5kZXJuKCk7IH0p OwogICAgY29udC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1ibGQtZWRpdF0nKS5mb3JFYWNoKGZ1 bmN0aW9uKGIpeyBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgX2VkaXRJ ZCA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLWJsZC1lZGl0Jyk7IHN0YXRpc3Rpa0J1aWxkZXJSZW5k ZXJuKCk7IH0pOyB9KTsKICAgIGNvbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtYmxkLWRlbF0n KS5mb3JFYWNoKGZ1bmN0aW9uKGIpeyBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rp b24oKXsgX2xvZXNjaGVuKGIuZ2V0QXR0cmlidXRlKCdkYXRhLWJsZC1kZWwnKSk7IH0pOyB9KTsK ICAgIF9kaWFncmFtbVNpY2h0YmFya2VpdCgpOwogICAgX3plaXRTaWNodGJhcmtlaXQoKTsKfQo= ### FILE: js/besetzung.js | 59595 Ly8gPT09IGJlc2V0enVuZy9iZXNldHp1bmcuanMgPT09Ci8vIFN0YW5kOiAyMDI2LTA1LTE0Ci8v IFZJMy1zcGV6aWZpc2NoZXIgVGFiICJCZXNldHp1bmdza29udHJvbGxlIiBmdWVyIEdlc2FtdHZl cmFudHdvcnRsaWNoZToKLy8gNC1Xb2NoZW4tVm9yc2NoYXUgYXVmIGRpZSBGdWVocnVuZ3MtQmVz ZXR6dW5nIHBybyBTY2hpY2h0LiBGdWVyIERlZml6aXQtCi8vIFRhZ2UgZ2lidCBlcyBlaW5lbiBS dW5kbWFpbC1Nb2RhbCBhbiBhbGxlIGZyZWkgZWluZ2VwbGFudGVuIFBlcnNvbmVuLgovLwovLyBI b29rczogYmV6IChCZXplaWNobnVuZ2VuIGF1cyBhZG1pbi5qc29uLCBQaGFzZSA4KSwgZW1haWxW b3JsYWdlbkhvbGVuLwovLyBlbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4gKFBoYXNlIDcpLCBtYWlsVHJp Z2dlckZldWVybiAoUGhhc2UgNykuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpz JzsKaW1wb3J0IHsKICAgIGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsCiAgICBkYXR1bVN0ciwgZGF0 dW1Gb3JtYXRERSwgd29jaGVudGFnS3VyeiwKICAgIGFic2VuZGVyTmFtZUVybWl0dGVsbgp9IGZy b20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3QsIG1vZGFsWmVpZ2VuLCBtb2RhbFNj aGxpZXNzZW4gfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7CiAgICBCS19IT1JJWk9O VF9UQUdFLAogICAga29tbWVudGFyVGV4dCwgenVEYXR1bVNjcm9sbGVuCn0gZnJvbSAnLi9ncmlk X2ludGVyYWN0aW9uLmpzJzsKaW1wb3J0IHsgZnVlaHJ1bmdzWmFlaGxlbiwgZGdsc0luU2NoaWNo dCwgZ2VzYW10dmVyYW50d29ydGxpY2hFbWFpbCwgaXN0RGdsUXVhbGlmaXppZXJ0LCBpc3RHZXNh bXR2ZXJhbnR3b3J0bGljaCB9IGZyb20gJy4vZ3JpZF9lZGl0b3IuanMnOwppbXBvcnQgeyBhbnNp Y2h0V2VjaHNlbG4gfSBmcm9tICcuL2dyaWRfcmVuZGVyLmpzJzsKCi8vID09PT09IEhvb2tzID09 PT09CgpleHBvcnQgdmFyIGJlc2V0enVuZ0hvb2tzID0gewogICAgYmV6OiBudWxsLAogICAgZW1h aWxWb3JsYWdlbkhvbGVuOiBudWxsLAogICAgZW1haWxWb3JsYWdlQmVmdWVsbGVuOiBudWxsLAog ICAgbWFpbFRyaWdnZXJGZXVlcm46IG51bGwKfTsKCmZ1bmN0aW9uIGJlek9kZXIoa2V5LCBmYWxs YmFjaykgewogICAgaWYgKGJlc2V0enVuZ0hvb2tzLmJleikgewogICAgICAgIHZhciB2ID0gYmVz ZXR6dW5nSG9va3MuYmV6KGtleSk7CiAgICAgICAgaWYgKHYpIHJldHVybiB2OwogICAgfQogICAg cmV0dXJuIGZhbGxiYWNrOwp9CgovLyA9PT09PSBBbmFseXNlID09PT09CgovLyA0LVdvY2hlbi1B bmFseXNlIGZ1ZXIgZGVuIEJlc2V0enVuZ3Nrb250cm9sbC1UYWIuIERyZWktU3RhdHVzLUFtcGVs OgovLyAgIHJvdCAgID0gaXJnZW5kZWluZSBTY2hpY2h0IGhhdCDiiaQgMSBGdWVocnVuZ3NrcmFm dCAoYWt1dGUgVW50ZXJiZXNldHp1bmcpCi8vICAgZ2VsYiAgPSBpcmdlbmRlaW5lIFNjaGljaHQg aGF0IGdlbmF1IDIgRnVlaHJ1bmdza3JhZWZ0ZSAoa25hcHBlIE1pbmRlc3QtCi8vICAgICAgICAg ICAgQmVzZXR6dW5nIOKAlCBrZWluIFB1ZmZlciBmdWVyIGt1cnpmcmlzdGlnZSBBdXNmYWVsbGUp Ci8vICAgZ3J1ZW4gPSBhbGxlIFNjaGljaHRlbiBoYWJlbiDiiaUgMyBGdWVocnVuZ3NrcmFlZnRl IChrb21mb3J0YWJlbCBiZXNldHp0KQovLyBSdWVja2dhYmUgcHJvIFRhZzogeyBkYXR1bSwgZGF0 ZU9iaiwgd29jaGVudGFnLCBzdGF0dXMsIHNjaGljaHRlbjoKLy8gICB7Rjp7aXN0LHN0YXR1c30s IFM6Li4uLCBOOi4uLn0gfQpleHBvcnQgZnVuY3Rpb24gYmVzZXR6dW5nc0FuYWx5c2UoKSB7CiAg ICB2YXIgaGV1dGUgPSBuZXcgRGF0ZSgpOyBoZXV0ZS5zZXRIb3VycygwLDAsMCwwKTsKICAgIHZh ciB0YWdlID0gW107CiAgICB2YXIgcm90ID0gMCwgZ2VsYiA9IDAsIGdydWVuID0gMDsKICAgIGZ1 bmN0aW9uIHNjaGljaHRTdGF0dXMoaXN0KSB7CiAgICAgICAgaWYgKGlzdCA8PSAxKSByZXR1cm4g J3JvdCc7CiAgICAgICAgaWYgKGlzdCA9PT0gMikgcmV0dXJuICdnZWxiJzsKICAgICAgICByZXR1 cm4gJ2dydWVuJzsKICAgIH0KICAgIGZ1bmN0aW9uIHRhZ1N0YXR1cyhmLCBzLCBuKSB7CiAgICAg ICAgaWYgKGYgPD0gMSB8fCBzIDw9IDEgfHwgbiA8PSAxKSByZXR1cm4gJ3JvdCc7CiAgICAgICAg aWYgKGYgPT09IDIgfHwgcyA9PT0gMiB8fCBuID09PSAyKSByZXR1cm4gJ2dlbGInOwogICAgICAg IHJldHVybiAnZ3J1ZW4nOwogICAgfQogICAgKFoudGFnZSB8fCBbXSkuZm9yRWFjaChmdW5jdGlv bihkKSB7CiAgICAgICAgaWYgKGQgPCBoZXV0ZSkgcmV0dXJuOwogICAgICAgIHZhciBkaWZmID0g TWF0aC5mbG9vcigoZCAtIGhldXRlKSAvIDg2NDAwMDAwKTsKICAgICAgICBpZiAoZGlmZiA+PSBC S19IT1JJWk9OVF9UQUdFKSByZXR1cm47CiAgICAgICAgdmFyIGRTdHIgPSBkYXR1bVN0cihkKTsK ICAgICAgICB2YXIgZiA9IGZ1ZWhydW5nc1phZWhsZW4oZFN0ciwgJ0YnKTsKICAgICAgICB2YXIg cyA9IGZ1ZWhydW5nc1phZWhsZW4oZFN0ciwgJ1MnKTsKICAgICAgICB2YXIgbiA9IGZ1ZWhydW5n c1phZWhsZW4oZFN0ciwgJ04nKTsKICAgICAgICB2YXIgc3QgPSB0YWdTdGF0dXMoZiwgcywgbik7 CiAgICAgICAgaWYgKHN0ID09PSAncm90Jykgcm90Kys7CiAgICAgICAgZWxzZSBpZiAoc3QgPT09 ICdnZWxiJykgZ2VsYisrOwogICAgICAgIGVsc2UgZ3J1ZW4rKzsKICAgICAgICB0YWdlLnB1c2go ewogICAgICAgICAgICBkYXR1bTogZFN0ciwKICAgICAgICAgICAgZGF0ZU9iajogZCwKICAgICAg ICAgICAgd29jaGVudGFnOiB3b2NoZW50YWdLdXJ6KGQpLAogICAgICAgICAgICBzdGF0dXM6IHN0 LAogICAgICAgICAgICBzY2hpY2h0ZW46IHsKICAgICAgICAgICAgICAgIEY6IHsgaXN0OiBmLCBz dGF0dXM6IHNjaGljaHRTdGF0dXMoZikgfSwKICAgICAgICAgICAgICAgIFM6IHsgaXN0OiBzLCBz dGF0dXM6IHNjaGljaHRTdGF0dXMocykgfSwKICAgICAgICAgICAgICAgIE46IHsgaXN0OiBuLCBz dGF0dXM6IHNjaGljaHRTdGF0dXMobikgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9 KTsKICAgIHJldHVybiB7CiAgICAgICAgdGFnZTogdGFnZSwKICAgICAgICBnZXNhbXRUYWdlOiB0 YWdlLmxlbmd0aCwKICAgICAgICByb3RUYWdlOiByb3QsIGdlbGJUYWdlOiBnZWxiLCBncnVlblRh Z2U6IGdydWVuLAogICAgICAgIC8vIEtvbXBhdC1GZWxkZXIgZnVlciBhZWx0ZXJlbiBDb2RlIChk ZWZpeml0VGFnZSA9IHJvdCtnZWxiKQogICAgICAgIGRlZml6aXRUYWdlOiByb3QgKyBnZWxiLCBv a1RhZ2U6IGdydWVuCiAgICB9Owp9CgovLyBEZWZpeml0LUJyaWVmaW5nLUJ1dHRvbiAoUHJ1ZWZ1 bmdzLUFuc2ljaHQpOiBvZWZmbmV0IGVpbiBJbnRlcnZpZXctCi8vIE1vZGFsLCBpbiBkZW0gZGVy IE51dHplciBaZWl0cmF1bSAoMS8yLzQgV29jaGVuKSwgU3RyZW5nZSAobnVyIGtyaXRpc2NoCi8v IG9kZXIgYXVjaCBrZWluLVB1ZmZlcikgdW5kIGRpZSBlaW56dWxhZGVuZGVuIGZyZWktZWluZ2Vw bGFudGVuIFBlcnNvbmVuCi8vIHdhZWhsdC4gQW5zY2hsaWVzc2VuZCBiYXV0IGVpbiBQbGFpbi1U ZXh0LU1haWx0byBkaWUgTWFpbCB2b3Ig4oCUIE91dGxvb2sKLy8gYXVmIGRlbiBCZWhvZXJkZW4t UENzIHVlYmVybmltbXQgSFRNTC1Cb2RpZXMgYXVzIG1haWx0bzogbmljaHQgenV2ZXItCi8vIGxh ZXNzaWcuIEVtcGZhZW5nZXI6IGF1c2dld2FlaGx0ZSB3ZnIvZGZyLVBlcnNvbmVuIGluICJBbiIs IEdlc2FtdC0KLy8gdmVyYW50d29ydGxpY2hlL3IgaW1tZXIgaW4gIkNjIiB6dXIgRHVyY2hmdWVo cnVuZ3Nrb250cm9sbGUuCnZhciBERUZJWklUX0ZSRUlfQ09ERVMgPSB7ICd3ZnInOiAxLCAnZGZy JzogMSB9OwoKZXhwb3J0IGZ1bmN0aW9uIGRlZml6aXRCcmllZmluZ09lZmZuZW4oKSB7CiAgICB2 YXIga29lcnBlciA9ICcnCiAgICAgICAgKyAnPGRpdiBjbGFzcz0iZGVmaXppdC1icmllZmluZy1t b2RhbCI+JwogICAgICAgICsgJzxoNCBjbGFzcz0iZGJtLWZyYWdlIj4xLiBXZWxjaGVyIFplaXRy YXVtPzwvaDQ+JwogICAgICAgICsgJzxkaXYgY2xhc3M9ImRibS1vcHRpb25lbiIgaWQ9ImRibS13 b2NoZW4tZ3J1cHBlIj4nCiAgICAgICAgKyAgICc8bGFiZWw+PGlucHV0IHR5cGU9InJhZGlvIiBu YW1lPSJkYm0td29jaGVuIiB2YWx1ZT0iMSI+IDEgV29jaGU8L2xhYmVsPicKICAgICAgICArICAg JzxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImRibS13b2NoZW4iIHZhbHVlPSIyIiBj aGVja2VkPiAyIFdvY2hlbjwvbGFiZWw+JwogICAgICAgICsgICAnPGxhYmVsPjxpbnB1dCB0eXBl PSJyYWRpbyIgbmFtZT0iZGJtLXdvY2hlbiIgdmFsdWU9IjQiPiA0IFdvY2hlbjwvbGFiZWw+Jwog ICAgICAgICsgJzwvZGl2PicKCiAgICAgICAgKyAnPGg0IGNsYXNzPSJkYm0tZnJhZ2UiPjIuIFdh cyBzb2xsIGltIEJyaWVmaW5nIGVyd8OkaG50IHdlcmRlbj88L2g0PicKICAgICAgICArICc8ZGl2 IGNsYXNzPSJkYm0tb3B0aW9uZW4iIGlkPSJkYm0tc3RyZW5nZS1ncnVwcGUiPicKICAgICAgICAr ICAgJzxsYWJlbD48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImRibS1zdHJlbmdlIiB2YWx1ZT0i cm90IiBjaGVja2VkPiBOdXIga3JpdGlzY2hlIFRhZ2UgKOKJpCAxIEbDvGhydW5nc2tyYWZ0IGlu IG1pbmRlc3RlbnMgZWluZXIgU2NoaWNodCk8L2xhYmVsPicKICAgICAgICArICAgJzxsYWJlbD48 aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImRibS1zdHJlbmdlIiB2YWx1ZT0icm90X2dlbGIiPiBB dWNoIFRhZ2UgbWl0IGdlbmF1IDIgRsO8aHJ1bmdza3LDpGZ0ZW4gKGtlaW4gUHVmZmVyKTwvbGFi ZWw+JwogICAgICAgICsgJzwvZGl2PicKCiAgICAgICAgKyAnPGg0IGNsYXNzPSJkYm0tZnJhZ2Ui PjMuIFdlciBzb2xsIGFuZ2VzY2hyaWViZW4gd2VyZGVuPzwvaDQ+JwogICAgICAgICsgJzxwIGNs YXNzPSJkYm0taGludCI+UGVyc29uZW4sIGRpZSBhbiBkZW4gYmV0cm9mZmVuZW4gVGFnZW4gd2Fj aC0gb2RlciBkaWVuc3RmcmVpICh3ZnIvZGZyKSBoYWJlbi4gSMOka2NoZW4gZW50ZmVybmVuLCB1 bSBqZW1hbmRlbiBhdXN6dWxhc3Nlbi48L3A+JwogICAgICAgICsgJzxkaXYgaWQ9ImRibS1lbXBm YWVuZ2VyLWxpc3RlIiBjbGFzcz0iZGJtLWVtcGZhZW5nZXItbGlzdGUiPjwvZGl2PicKICAgICAg ICArICc8cCBjbGFzcz0iZGJtLWNjLWhpbnQiPkNjOiA8c3Ryb25nIGlkPSJkYm0tY2MtdGV4dCI+ 4oCmPC9zdHJvbmc+IDxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIj4oaW1tZXIgbWl0LCB6dXIgRHVy Y2hmw7xocnVuZ3Nrb250cm9sbGUpPC9zcGFuPjwvcD4nCiAgICAgICAgKyAnPC9kaXY+JzsKCiAg ICB2YXIgZnVzcyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkYm0tYWJicmVjaGVuIiB0eXBl PSJidXR0b24iPkFiYnJlY2hlbjwvYnV0dG9uPicKICAgICAgICAgICAgICsgJzxidXR0b24gY2xh c3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9ImRibS12b3JiZXJlaXRlbiIgdHlwZT0iYnV0dG9uIj5N YWlsIHZvcmJlcmVpdGVuPC9idXR0b24+JzsKCiAgICBtb2RhbFplaWdlbignRGVmaXppdC1Ccmll ZmluZyB6dXNhbW1lbnN0ZWxsZW4nLCBrb2VycGVyLCBmdXNzLCBudWxsLCBudWxsLCB7IHJlaW5l ckRpYWxvZzogdHJ1ZSB9KTsKCiAgICB2YXIgZ3YgPSBfZGVmaXppdEd2SW5mbygpOwogICAgdmFy IGNjVGV4dCA9IGd2Lm5hbWUgfHwgJyhrZWluIEdlc2FtdHZlcmFudHdvcnRsaWNoZXIgZ2VwZmxl Z3QpJzsKICAgIGlmIChndi5uYW1lICYmICFndi5lbWFpbCkgY2NUZXh0ICs9ICcg4oCUIGtlaW5l IEUtTWFpbCBoaW50ZXJsZWd0ISc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGJtLWNj LXRleHQnKS50ZXh0Q29udGVudCA9IGNjVGV4dDsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ ZCgnZGJtLWFiYnJlY2hlbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbW9kYWxTY2hsaWVz c2VuKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYm0tdm9yYmVyZWl0ZW4nKS5hZGRF dmVudExpc3RlbmVyKCdjbGljaycsIF9kZWZpeml0QnJpZWZpbmdNYWlsVm9yYmVyZWl0ZW4pOwoK ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNkYm0td29jaGVuLWdydXBwZSBpbnB1dCwg I2RibS1zdHJlbmdlLWdydXBwZSBpbnB1dCcpLmZvckVhY2goZnVuY3Rpb24oaW5wKSB7CiAgICAg ICAgaW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIF9kZWZpeml0RW1wZmFlbmdlckFrdHVh bGlzaWVyZW4pOwogICAgfSk7CgogICAgX2RlZml6aXRFbXBmYWVuZ2VyQWt0dWFsaXNpZXJlbigp Owp9CgovLyBMaWVmZXJ0IHtuYW1lLCBlbWFpbH0gZnVlciBkZW4vZGllIEdlc2FtdHZlcmFudHdv cnRsaWNoZS9uIGF1cwovLyBhZG1pbi5mYWNoYXVmc2ljaHQuIEVtYWlsIGtvbW10IGF1cyBlZGl0 b3IuZ2VzYW10dmVyYW50d29ydGxpY2hFbWFpbCgpOwovLyBOYW1lIGJhdWVuIHdpciBoaWVyIGF1 Ziwgd2VpbCBkb3J0IG51ciBWb3JuYW1lLUhlbHBlciBleGlzdGllcnQuCmZ1bmN0aW9uIF9kZWZp eml0R3ZJbmZvKCkgewogICAgdmFyIGZhID0gKChaLmFkbWluICYmIFouYWRtaW4uZmFjaGF1ZnNp Y2h0KSB8fCBbXSkuZmluZChmdW5jdGlvbihmKSB7IHJldHVybiBmLmdlc2FtdHZlcmFudHdvcnRs aWNoOyB9KTsKICAgIGlmICghZmEpIHJldHVybiB7IG5hbWU6ICcnLCBlbWFpbDogJycgfTsKICAg IHZhciBuYW1lID0gJyc7CiAgICBpZiAoZmEubndLZW5udW5nKSB7CiAgICAgICAgdmFyIHAgPSAo KFoucGxhbnVuZyAmJiBaLnBsYW51bmcucGVyc29uZW4pIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgp IHsKICAgICAgICAgICAgcmV0dXJuICh4Lm53S2VubnVuZyB8fCAnJykudG9Mb3dlckNhc2UoKSA9 PT0gZmEubndLZW5udW5nLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgfSk7CiAgICAgICAgaWYgKHAp IG5hbWUgPSAoKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSArIChwLm5hbWUgfHwg JycpKS50cmltKCk7CiAgICB9CiAgICBpZiAoIW5hbWUpIG5hbWUgPSBmYS5uYW1lIHx8IGZhLm53 S2VubnVuZyB8fCAnJzsKICAgIHJldHVybiB7IG5hbWU6IG5hbWUsIGVtYWlsOiBnZXNhbXR2ZXJh bnR3b3J0bGljaEVtYWlsKCkgfHwgJycgfTsKfQoKLy8gTGllZmVydCBkaWUgRGVmaXppdC1UYWdl IGZ1ZXIgYmVsaWViaWdlbiBXb2NoZW4tSG9yaXpvbnQgKyBTdHJlbmdlLgovLyBzdHJlbmdlOiAn cm90JyAobnVyIFNjaGljaHRlbiBtaXQg4omkMSBGaykgb2RlciAncm90X2dlbGInIChhdWNoID0y IEZrKS4KLy8gRm9ybWF0OiB7IHRhZ2U6IFt7ZGF0dW0sIHdvY2hlbnRhZywgZmVobGVuZDpbe3Nj aGljaHQsaXN0fV19XSwgZ2VzYW10VGFnZSwgZGVmaXppdFRhZ2UgfS4KZnVuY3Rpb24gX2RlZml6 aXRBbmFseXNlRnVlcih3b2NoZW4sIHN0cmVuZ2UpIHsKICAgIHZhciBob3Jpem9udFRhZ2UgPSB3 b2NoZW4gKiA3OwogICAgdmFyIGhldXRlID0gbmV3IERhdGUoKTsgaGV1dGUuc2V0SG91cnMoMCww LDAsMCk7CiAgICB2YXIgdGFnZSA9IFtdOwogICAgKFoudGFnZSB8fCBbXSkuZm9yRWFjaChmdW5j dGlvbihkKSB7CiAgICAgICAgaWYgKGQgPCBoZXV0ZSkgcmV0dXJuOwogICAgICAgIHZhciBkaWZm ID0gTWF0aC5mbG9vcigoZCAtIGhldXRlKSAvIDg2NDAwMDAwKTsKICAgICAgICBpZiAoZGlmZiA+ PSBob3Jpem9udFRhZ2UpIHJldHVybjsKICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwog ICAgICAgIHZhciBmID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAnRicpOwogICAgICAgIHZhciBz ID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAnUycpOwogICAgICAgIHZhciBuID0gZnVlaHJ1bmdz WmFlaGxlbihkU3RyLCAnTicpOwogICAgICAgIHZhciBmZWhsZW5kID0gW107CiAgICAgICAgZnVu Y3Rpb24gcHJ1ZWZlKGxhYmVsLCBpc3QpIHsKICAgICAgICAgICAgaWYgKGlzdCA8PSAxKSAgICAg ICAgICAgICAgICAgIGZlaGxlbmQucHVzaCh7IHNjaGljaHQ6IGxhYmVsLCBpc3Q6IGlzdCB9KTsK ICAgICAgICAgICAgZWxzZSBpZiAoaXN0ID09PSAyICYmIHN0cmVuZ2UgPT09ICdyb3RfZ2VsYicp IGZlaGxlbmQucHVzaCh7IHNjaGljaHQ6IGxhYmVsLCBpc3Q6IGlzdCB9KTsKICAgICAgICB9CiAg ICAgICAgcHJ1ZWZlKCdGJywgZik7IHBydWVmZSgnUycsIHMpOyBwcnVlZmUoJ04nLCBuKTsKICAg ICAgICBpZiAoIWZlaGxlbmQubGVuZ3RoKSByZXR1cm47CiAgICAgICAgdGFnZS5wdXNoKHsKICAg ICAgICAgICAgZGF0dW06ICAgICBkU3RyLAogICAgICAgICAgICB3b2NoZW50YWc6IHdvY2hlbnRh Z0t1cnooZCksCiAgICAgICAgICAgIGZlaGxlbmQ6ICAgZmVobGVuZAogICAgICAgIH0pOwogICAg fSk7CiAgICByZXR1cm4geyB0YWdlOiB0YWdlLCBnZXNhbXRUYWdlOiBob3Jpem9udFRhZ2UsIGRl Zml6aXRUYWdlOiB0YWdlLmxlbmd0aCB9Owp9CgovLyBTYW1tZWx0IFBlcnNvbmVuIG1pdCBGcmVp LUNvZGUgKHdmci9kZnIpIGFuIGRlbiBiZXRyb2ZmZW5lbiBUYWdlbi4KLy8gQWdncmVnaWVydCBw cm8gUGVyc29uIGlocmUgRnJlaS1UYWdlLiBQZXJzb25lbiBvaG5lIEUtTWFpbCB3ZXJkZW4gbWl0 Ci8vIG1hcmtpZXJ0IChpbSBNb2RhbCBkaXNhYmxlZCArIEhpbndlaXMpLgpmdW5jdGlvbiBfZGVm aXppdEZyZWllUGVyc29uZW4odGFnZSkgewogICAgdmFyIGVpbnRyYWVnZSA9IChaLnBsYW51bmcg JiYgWi5wbGFudW5nLmVpbnRyYWVnZSkgfHwge307CiAgICB2YXIgcGVyc29uZW4gID0gKChaLnBs YW51bmcgJiYgWi5wbGFudW5nLnBlcnNvbmVuKSB8fCBbXSk7CiAgICB2YXIgbWFwID0ge307ICAg Ly8gcGlkIC0+IHsgaWQsIG5hbWUsIHZvcm5hbWUsIGVtYWlsLCB0YWdlU3RyW10gfQogICAgdGFn ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHsKICAgICAgICB2YXIgZSA9IGVpbnRyYWVnZVt0LmRhdHVt XSB8fCB7fTsKICAgICAgICBwZXJzb25lbi5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICAg ICAgaWYgKCFwLmFrdGl2KSByZXR1cm47CiAgICAgICAgICAgIHZhciBjb2RlID0gZVtTdHJpbmco cC5pZCldIHx8ICcnOwogICAgICAgICAgICBpZiAoIURFRklaSVRfRlJFSV9DT0RFU1tjb2RlXSkg cmV0dXJuOwogICAgICAgICAgICBpZiAoIW1hcFtwLmlkXSkgewogICAgICAgICAgICAgICAgbWFw W3AuaWRdID0gewogICAgICAgICAgICAgICAgICAgIGlkOiBwLmlkLCBuYW1lOiBwLm5hbWUgfHwg JycsIHZvcm5hbWU6IHAudm9ybmFtZSB8fCAnJywKICAgICAgICAgICAgICAgICAgICBlbWFpbDog cC5lbWFpbCB8fCAnJywgdGFnZVN0cjogW10KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAg IH0KICAgICAgICAgICAgbWFwW3AuaWRdLnRhZ2VTdHIucHVzaCh0LndvY2hlbnRhZyArICcgJyAr IGRhdHVtRm9ybWF0REUodC5kYXR1bSkpOwogICAgICAgIH0pOwogICAgfSk7CiAgICB2YXIgbGlz dGUgPSBPYmplY3Qua2V5cyhtYXApLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiBtYXBba107IH0p OwogICAgbGlzdGUuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgcmV0dXJuIChhLm5hbWUg KyBhLnZvcm5hbWUpLmxvY2FsZUNvbXBhcmUoYi5uYW1lICsgYi52b3JuYW1lLCAnZGUnKTsKICAg IH0pOwogICAgcmV0dXJuIGxpc3RlOwp9CgovLyBMaWVzdCBkZW4gYWt0dWVsbGVuIEludGVydmll dy1TdGFuZCAoV29jaGVuICsgU3RyZW5nZSkgdW5kIHJlbmRlcnQgZGllCi8vIEVtcGZhZW5nZXIt TGlzdGUgbmV1IOKAlCB3aXJkIGJlaSBqZWRlbSBPcHRpb25zd2VjaHNlbCBhdWZnZXJ1ZmVuLgpm dW5jdGlvbiBfZGVmaXppdEVtcGZhZW5nZXJBa3R1YWxpc2llcmVuKCkgewogICAgdmFyIGxpc3Rl RWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGJtLWVtcGZhZW5nZXItbGlzdGUnKTsKICAg IGlmICghbGlzdGVFbCkgcmV0dXJuOwogICAgdmFyIHdvY2hlbklucCA9IGRvY3VtZW50LnF1ZXJ5 U2VsZWN0b3IoJ2lucHV0W25hbWU9ImRibS13b2NoZW4iXTpjaGVja2VkJyk7CiAgICB2YXIgc3Ry ZW5nZUlucCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImRibS1zdHJlbmdl Il06Y2hlY2tlZCcpOwogICAgdmFyIHdvY2hlbiA9IHdvY2hlbklucCA/IHBhcnNlSW50KHdvY2hl bklucC52YWx1ZSwgMTApIDogMjsKICAgIHZhciBzdHJlbmdlID0gc3RyZW5nZUlucCA/IHN0cmVu Z2VJbnAudmFsdWUgOiAncm90JzsKCiAgICB2YXIgYW5hbHlzZSA9IF9kZWZpeml0QW5hbHlzZUZ1 ZXIod29jaGVuLCBzdHJlbmdlKTsKICAgIGlmIChhbmFseXNlLmRlZml6aXRUYWdlID09PSAwKSB7 CiAgICAgICAgbGlzdGVFbC5pbm5lckhUTUwgPSAnPHAgY2xhc3M9ImRibS1sZWVyIj5LZWluZSBE ZWZpeml0LVRhZ2UgaW4gZGVuIG7DpGNoc3RlbiAnICsgd29jaGVuICsgJyBXb2NoZW4g4oCUIGtl aW4gQnJpZWZpbmcgbsO2dGlnLjwvcD4nOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBw ZXJzb25lbiA9IF9kZWZpeml0RnJlaWVQZXJzb25lbihhbmFseXNlLnRhZ2UpOwogICAgaWYgKCFw ZXJzb25lbi5sZW5ndGgpIHsKICAgICAgICBsaXN0ZUVsLmlubmVySFRNTCA9ICc8cCBjbGFzcz0i ZGJtLWxlZXIiPicgKyBhbmFseXNlLmRlZml6aXRUYWdlICsgJyBEZWZpeml0LVRhZyhlKSBnZWZ1 bmRlbiwgYWJlciBuaWVtYW5kIGlzdCBhbiBkaWVzZW4gVGFnZW4gd2ZyL2RmciDigJQgbmllbWFu ZCB6dW0gQW5zY2hyZWliZW4uPC9wPic7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIGh0 bWwgPSAnPGRpdiBjbGFzcz0iZGJtLWluZm8iPicgKyBhbmFseXNlLmRlZml6aXRUYWdlICsgJyBE ZWZpeml0LVRhZyhlKSwgJyArIHBlcnNvbmVuLmxlbmd0aCArICcgbcO2Z2xpY2hlIEVtcGbDpG5n ZXI6PC9kaXY+JzsKICAgIGh0bWwgKz0gJzx1bCBjbGFzcz0iZGJtLXBlcnNvbmVuIj4nOwogICAg cGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgdmFyIGhhdE1haWwgPSAhIXAu ZW1haWw7CiAgICAgICAgdmFyIGNoZWNrZWQgPSBoYXRNYWlsID8gJyBjaGVja2VkJyA6ICcnOwog ICAgICAgIHZhciBkaXNhYmxlZCA9ICFoYXRNYWlsID8gJyBkaXNhYmxlZCcgOiAnJzsKICAgICAg ICB2YXIgYW56ZWlnZSA9ICgocC52b3JuYW1lID8gcC52b3JuYW1lICsgJyAnIDogJycpICsgcC5u YW1lKS50cmltKCkgfHwgKCcjJyArIHAuaWQpOwogICAgICAgIHZhciB0YWdlS3VyeiA9IHAudGFn ZVN0ci5qb2luKCcsICcpOwogICAgICAgIGh0bWwgKz0gJzxsaT48bGFiZWwgY2xhc3M9IicgKyAo aGF0TWFpbCA/ICcnIDogJ2RibS1kaXNhYmxlZCcpICsgJyI+JwogICAgICAgICAgICAgICsgJzxp bnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImRibS1lbXBmLWNiIiBkYXRhLXBpZD0iJyArIGVz Y2FwZUF0dHIoU3RyaW5nKHAuaWQpKSArICciIGRhdGEtZW1haWw9IicgKyBlc2NhcGVBdHRyKHAu ZW1haWwpICsgJyIgZGF0YS1uYW1lPSInICsgZXNjYXBlQXR0cihhbnplaWdlKSArICciJyArIGNo ZWNrZWQgKyBkaXNhYmxlZCArICc+JwogICAgICAgICAgICAgICsgJyA8c3Ryb25nPicgKyBlc2Nh cGVIVE1MKGFuemVpZ2UpICsgJzwvc3Ryb25nPicKICAgICAgICAgICAgICArICcgPHNwYW4gY2xh c3M9ImRibS10YWdlIj4oJyArIGVzY2FwZUhUTUwodGFnZUt1cnopICsgJyk8L3NwYW4+JwogICAg ICAgICAgICAgICsgKGhhdE1haWwgPyAnJyA6ICcgPHNwYW4gY2xhc3M9ImRibS1uby1tYWlsIj7i gJQga2VpbmUgRS1NYWlsIGhpbnRlcmxlZ3Q8L3NwYW4+JykKICAgICAgICAgICAgICArICc8L2xh YmVsPjwvbGk+JzsKICAgIH0pOwogICAgaHRtbCArPSAnPC91bD4nOwogICAgbGlzdGVFbC5pbm5l ckhUTUwgPSBodG1sOwp9CgovLyBCYXV0IGRlbiBQbGFpbi1UZXh0LU1haWwtQm9keSB1bmQgb2Vm Zm5ldCBkaWUgbWFpbHRvOi1VUkwuIEZvcm1hdDoKLy8gZnJldW5kbGljaC1tb2Rlcm4gKER1LUZv cm0pLCBrZWluZSBIVE1MLVRhZ3Mg4oCUIE91dGxvb2sgYmVpIGRlciBCZWhvZXJkZQovLyB1ZWJl cm5pbW10IG1haWx0by1IVE1MIG5pY2h0IHp1dmVybGFlc3NpZy4KZnVuY3Rpb24gX2RlZml6aXRC cmllZmluZ01haWxWb3JiZXJlaXRlbigpIHsKICAgIHZhciB3b2NoZW5JbnAgPSBkb2N1bWVudC5x dWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJkYm0td29jaGVuIl06Y2hlY2tlZCcpOwogICAgdmFy IHN0cmVuZ2VJbnAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJkYm0tc3Ry ZW5nZSJdOmNoZWNrZWQnKTsKICAgIHZhciB3b2NoZW4gPSB3b2NoZW5JbnAgPyBwYXJzZUludCh3 b2NoZW5JbnAudmFsdWUsIDEwKSA6IDI7CiAgICB2YXIgc3RyZW5nZSA9IHN0cmVuZ2VJbnAgPyBz dHJlbmdlSW5wLnZhbHVlIDogJ3JvdCc7CgogICAgdmFyIGFuYWx5c2UgPSBfZGVmaXppdEFuYWx5 c2VGdWVyKHdvY2hlbiwgc3RyZW5nZSk7CiAgICBpZiAoYW5hbHlzZS5kZWZpeml0VGFnZSA9PT0g MCkgewogICAgICAgIHRvYXN0KCdLZWluZSBEZWZpeml0LVRhZ2UgaW0gZ2V3w6RobHRlbiBaZWl0 cmF1bS4nLCAnaW5mbycpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBFbXBmYWVuZ2Vy IGF1cyBkZW4gYW5nZWhha3RlbiBDaGVja2JveGVuIHNhbW1lbG4KICAgIHZhciBhbkVtYWlscyA9 IFtdOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRibS1lbXBmLWNiOmNoZWNrZWQn KS5mb3JFYWNoKGZ1bmN0aW9uKGNiKSB7CiAgICAgICAgdmFyIG1haWwgPSBjYi5nZXRBdHRyaWJ1 dGUoJ2RhdGEtZW1haWwnKTsKICAgICAgICBpZiAobWFpbCkgYW5FbWFpbHMucHVzaChtYWlsKTsK ICAgIH0pOwoKICAgIHZhciBndiA9IF9kZWZpeml0R3ZJbmZvKCk7CgogICAgaWYgKCFhbkVtYWls cy5sZW5ndGggJiYgIWd2LmVtYWlsKSB7CiAgICAgICAgdG9hc3QoJ1dlZGVyIGF1c2dld8OkaGx0 ZSBFbXBmw6RuZ2VyIG5vY2ggR2VzYW10dmVyYW50d29ydGxpY2hlL3IgaGFiZW4gZWluZSBFLU1h aWwtQWRyZXNzZSBoaW50ZXJsZWd0LicsICd3YXJudW5nJyk7CiAgICAgICAgcmV0dXJuOwogICAg fQoKICAgIC8vIFNjaGljaHQtQmV6ZWljaG5lciBsYWVuZ2VyIGFscyBkYXMgS3VlcnplbAogICAg dmFyIHNjaGljaHROYW1lID0geyBGOiAnRnLDvGgnLCBTOiAnU3DDpHQnLCBOOiAnTmFjaHQnIH07 CgogICAgLy8gQXVzZ2V3YWVobHRlIFBlcnNvbmVuIHNhbW1lbG4gdW5kIG5hY2ggVGFnIG1hcHBl biDigJQgcHJvIERlZml6aXQtVGFnCiAgICAvLyBiYXVlbiB3aXIgZWluZW4gQmxvY2sgbWl0IERh dHVtICsgTHVlY2tlbi1TY2hpY2h0ZW4gb2JlbiB1bmQgZGVuCiAgICAvLyB3ZnIvZGZyLVBlcnNv bmVuLCBkaWUgYW4gZ2VuYXUgZGllc2VtIFRhZyBmcmVpIHNpbmQsIGRhcnVudGVyLgogICAgdmFy IGF1c2dld0lkcyA9IHt9OwogICAgdmFyIGF1c2dld01hcCA9IHt9OyAgIC8vIHBpZCAtPiB7IG5h bWUsIGVtYWlsIH0KICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5kYm0tZW1wZi1jYjpj aGVja2VkJykuZm9yRWFjaChmdW5jdGlvbihjYikgewogICAgICAgIHZhciBwaWQgPSBjYi5nZXRB dHRyaWJ1dGUoJ2RhdGEtcGlkJyk7CiAgICAgICAgYXVzZ2V3SWRzW3BpZF0gPSB0cnVlOwogICAg ICAgIGF1c2dld01hcFtwaWRdID0gewogICAgICAgICAgICBuYW1lOiAgY2IuZ2V0QXR0cmlidXRl KCdkYXRhLW5hbWUnKSwKICAgICAgICAgICAgZW1haWw6IGNiLmdldEF0dHJpYnV0ZSgnZGF0YS1l bWFpbCcpCiAgICAgICAgfTsKICAgIH0pOwogICAgdmFyIGVpbnRyYWVnZSA9IChaLnBsYW51bmcg JiYgWi5wbGFudW5nLmVpbnRyYWVnZSkgfHwge307CiAgICBmdW5jdGlvbiBwZXJzb25lbkFuVGFn KGRhdHVtKSB7CiAgICAgICAgdmFyIGUgPSBlaW50cmFlZ2VbZGF0dW1dIHx8IHt9OwogICAgICAg IHZhciBsaXN0ZSA9IFtdOwogICAgICAgIE9iamVjdC5rZXlzKGF1c2dld0lkcykuZm9yRWFjaChm dW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgdmFyIGNvZGUgPSBlW1N0cmluZyhwaWQpXSB8fCAn JzsKICAgICAgICAgICAgaWYgKERFRklaSVRfRlJFSV9DT0RFU1tjb2RlXSkgbGlzdGUucHVzaChh dXNnZXdNYXBbcGlkXSk7CiAgICAgICAgfSk7CiAgICAgICAgbGlzdGUuc29ydChmdW5jdGlvbihh LCBiKSB7IHJldHVybiAoYS5uYW1lIHx8ICcnKS5sb2NhbGVDb21wYXJlKGIubmFtZSB8fCAnJywg J2RlJyk7IH0pOwogICAgICAgIHJldHVybiBsaXN0ZTsKICAgIH0KCiAgICAvLyBCbG9jayBwcm8g RGVmaXppdC1UYWc6IEhlYWRlciA9IERhdHVtICsgTHVlY2tlbi1TY2hpY2h0ZW4sCiAgICAvLyBk YXJ1bnRlciBlaW5nZXJ1ZWNrdCBkaWUgTmFtZW4gZGVyIGFuZ2VzY2hyaWViZW5lbiBGcmVpLVBl cnNvbmVuLgogICAgdmFyIHRhZ0Jsb2Vja2UgPSBhbmFseXNlLnRhZ2UubWFwKGZ1bmN0aW9uKHQp IHsKICAgICAgICB2YXIgZmVobExpc3QgPSB0LmZlaGxlbmQubWFwKGZ1bmN0aW9uKGYpIHsKICAg ICAgICAgICAgcmV0dXJuIHNjaGljaHROYW1lW2Yuc2NoaWNodF0gKyAnICcgKyBmLmlzdCArICcv Mic7CiAgICAgICAgfSkuam9pbignLCAnKTsKICAgICAgICB2YXIgaGVhZGVyID0gdC53b2NoZW50 YWcgKyAnICcgKyBkYXR1bUZvcm1hdERFKHQuZGF0dW0pICsgJyAg4oCUICBMw7xja2U6ICcgKyBm ZWhsTGlzdDsKICAgICAgICB2YXIgcGVycyA9IHBlcnNvbmVuQW5UYWcodC5kYXR1bSk7CiAgICAg ICAgdmFyIHBlcnNvbmVuWmVpbGVuID0gcGVycy5sZW5ndGgKICAgICAgICAgICAgPyAnXG4gIEvD tm5uZW4gZWluc3ByaW5nZW4gKHdmci9kZnIpOlxuJyArIHBlcnMubWFwKGZ1bmN0aW9uKHApIHsg cmV0dXJuICcgICAgLSAnICsgcC5uYW1lOyB9KS5qb2luKCdcbicpCiAgICAgICAgICAgIDogJyc7 CiAgICAgICAgcmV0dXJuIGhlYWRlciArIHBlcnNvbmVuWmVpbGVuOwogICAgfSkuam9pbignXG5c bicpOwoKICAgIC8vIFN0cmVuZ2UtSGlud2VpcyBmdWVyIGRlbiBCb2R5CiAgICB2YXIgc3RyZW5n ZUluZm8gPSAoc3RyZW5nZSA9PT0gJ3JvdF9nZWxiJykKICAgICAgICA/ICdrcml0aXNjaGUgVGFn ZSAo4omkIDEgRmspIHVuZCBUYWdlIG9obmUgUHVmZmVyICg9IDIgRmspJwogICAgICAgIDogJ2ty aXRpc2NoZSBUYWdlICjiiaQgMSBGw7xocnVuZ3NrcmFmdCBpbiBtaW5kZXN0ZW5zIGVpbmVyIFNj aGljaHQpJzsKCiAgICB2YXIgYWJzZW5kZXIgPSBhYnNlbmRlck5hbWVFcm1pdHRlbG4oKSB8fCAn ZGllIERpZW5zdGdydXBwZW5sZWl0dW5nJzsKCiAgICB2YXIgYmV0cmVmZiA9ICdEZWZpeml0LUJy aWVmaW5nOiAnICsgYW5hbHlzZS5kZWZpeml0VGFnZSArICcgVGFnKGUpIG1pdCBMw7xja2VuIGlu IGRlciBGw7xocnVuZ3MtQmVzZXR6dW5nICgnICsgd29jaGVuICsgKHdvY2hlbiA9PT0gMSA/ICcg V29jaGUnIDogJyBXb2NoZW4nKSArICcpJzsKCiAgICB2YXIgYm9keSA9CiAgICAgICAgJ0hhbGxv IHp1c2FtbWVuLFxuJyArCiAgICAgICAgJ1xuJyArCiAgICAgICAgJ2t1cnplciBTdGFuZCB6dXIg RsO8aHJ1bmdzLUJlc2V0enVuZyBpbiBkZW4gbsOkY2hzdGVuICcgKyB3b2NoZW4gKyAod29jaGVu ID09PSAxID8gJyBXb2NoZScgOiAnIFdvY2hlbicpICsgJzpcbicgKwogICAgICAgICdcbicgKwog ICAgICAgIGFuYWx5c2UuZGVmaXppdFRhZ2UgKyAnIHZvbiAnICsgYW5hbHlzZS5nZXNhbXRUYWdl ICsgJyBUYWdlbiBzaW5kIG5pY2h0IGF1c3JlaWNoZW5kIGJlc2V0enQuXG4nICsKICAgICAgICAn QXVmZ2Vmw7xocnQgc2luZCAnICsgc3RyZW5nZUluZm8gKyAnLlxuJyArCiAgICAgICAgJ1xuJyAr CiAgICAgICAgdGFnQmxvZWNrZSArCiAgICAgICAgJ1xuXG4nICsKICAgICAgICAnRmFsbHMgZHUg ZWluc3ByaW5nZW4ga2FubnN0IOKAlCBhdWNoIGbDvHIgZWluZSBlaW56ZWxuZSBTY2hpY2h0IOKA lCBtZWxkIGRpY2ggZ2VybmUga3VyeiB6dXLDvGNrIHVuZCBrbGlja2UgZWluZmFjaCBhdWYgIkFs bGVuIEFudHdvcnRlbiIgKFN0cmcgKyBVbXNjaGFsdCArIFIpLCBzbyBkYXNzIGFsbGUgS2VubnRu aXMgZGF2b24ga3JpZWdlbiwgZGFzcyBkYXMgRGVmaXppdCBlcmxlZGlndCBpc3QuXG4nICsKICAg ICAgICAnXG4nICsKICAgICAgICAnRGFua2UgZXVjaCFcbicgKwogICAgICAgICdcbicgKwogICAg ICAgICdWaWVsZSBHcsO8w59lXG4nICsKICAgICAgICBhYnNlbmRlcjsKCiAgICB2YXIgdXJsID0g J21haWx0bzonICsgZW5jb2RlVVJJQ29tcG9uZW50KGFuRW1haWxzLmpvaW4oJywnKSk7CiAgICB2 YXIgcXVlcnkgPSBbXTsKICAgIGlmIChndi5lbWFpbCkgcXVlcnkucHVzaCgnY2M9JyArIGVuY29k ZVVSSUNvbXBvbmVudChndi5lbWFpbCkpOwogICAgcXVlcnkucHVzaCgnc3ViamVjdD0nICsgZW5j b2RlVVJJQ29tcG9uZW50KGJldHJlZmYpKTsKICAgIHF1ZXJ5LnB1c2goJ2JvZHk9JyArIGVuY29k ZVVSSUNvbXBvbmVudChib2R5KSk7CiAgICB1cmwgKz0gJz8nICsgcXVlcnkuam9pbignJicpOwoK ICAgIG1vZGFsU2NobGllc3NlbigpOwogICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7Cn0K Ci8vIEZhZXJidCBkZW4gUHJ1ZWZ1bmdzLVRhYiBpbSBIZWFkZXIgKG5hdi1iZXNldHp1bmcpIGpl IG5hY2ggU3RhdHVzLQovLyBIb3Jpem9udCByb3QvZ2VsYi4gV2lyZCBhdXMga29wZlJlbmRlcm4g KyBiZWkgU2NoaWNodC1FZGl0cyBhdWZnZXJ1ZmVuLAovLyBkYW1pdCBkaWUgRmFlcmJ1bmcgaW1t ZXIgYWt0dWVsbCBpc3QgKG5pY2h0IG51ciBuYWNoIFRhYi1CZXN1Y2gpLgovLyAgIHJvdCAgKCdi ay10YWItZGVmaXppdC0ydycpICA6IG1pbmQuIGVpbiBST1QtVGFnICjiiaQxIEZrIGluIGVpbmVy IFNjaGljaHQpCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gZGVuIG5hZWNo c3RlbiAxNCBUYWdlbgovLyAgIGdlbGIgKCdiay10YWItZGVmaXppdC00dycpIDogUk9ULVRhZyBp biAxNC0yOCBPREVSIEdFTEItVGFnICg9MiBGaykgaW4gMC0yOAovLyAgIHNvbnN0ICAgICAgICAg ICAgICAgICAgICAgICA6IG5ldXRyYWwgKGFsbGUgVGFnZSBncnVlbiwg4omlMyBGayBwcm8gU2No aWNodCkKZXhwb3J0IGZ1bmN0aW9uIGJlc2V0enVuZ3NUYWJGYXJiZUFrdHVhbGlzaWVyZW4oKSB7 CiAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdi1iZXNldHp1bmcnKTsK ICAgIGlmICghYnRuKSByZXR1cm47CiAgICBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYmstdGFiLWRl Zml6aXQtMncnLCAnYmstdGFiLWRlZml6aXQtNHcnKTsKICAgIHZhciBsYWJlbCA9IGJlek9kZXIo J25hdi5iZXNldHp1bmcnLCAnQmVzZXR6dW5nJyk7CiAgICBidG4udGl0bGUgPSBsYWJlbCArICcg 4oCUIDQgV29jaGVuLVZvcnNjaGF1JzsKICAgIGlmICghKFoucmVjaHRlICYmIFoucmVjaHRlLmlz dEdlc2FtdHZlcmFudHdvcnRsaWNoKSkgcmV0dXJuOwogICAgdmFyIGhldXRlID0gbmV3IERhdGUo KTsgaGV1dGUuc2V0SG91cnMoMCwwLDAsMCk7CiAgICB2YXIgZGVmaXppdDJ3ID0gMCwgZGVmaXpp dDR3ID0gMDsKICAgIChaLnRhZ2UgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAg IGlmIChkIDwgaGV1dGUpIHJldHVybjsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguZmxvb3IoKGQg LSBoZXV0ZSkgLyA4NjQwMDAwMCk7CiAgICAgICAgaWYgKGRpZmYgPj0gMjgpIHJldHVybjsKICAg ICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQpOwogICAgICAgIHZhciBmID0gZnVlaHJ1bmdzWmFl aGxlbihkU3RyLCAnRicpOwogICAgICAgIHZhciBzID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAn UycpOwogICAgICAgIHZhciBuID0gZnVlaHJ1bmdzWmFlaGxlbihkU3RyLCAnTicpOwogICAgICAg IHZhciByb3QgID0gKGYgPD0gMSB8fCBzIDw9IDEgfHwgbiA8PSAxKTsKICAgICAgICB2YXIgZ2Vs YiA9ICFyb3QgJiYgKGYgPT09IDIgfHwgcyA9PT0gMiB8fCBuID09PSAyKTsKICAgICAgICBpZiAo cm90ICYmIGRpZmYgPCAxNCkgZGVmaXppdDJ3Kys7CiAgICAgICAgZWxzZSBpZiAocm90IHx8IGdl bGIpIGRlZml6aXQ0dysrOwogICAgfSk7CiAgICBpZiAoZGVmaXppdDJ3ID4gMCkgewogICAgICAg IGJ0bi5jbGFzc0xpc3QuYWRkKCdiay10YWItZGVmaXppdC0ydycpOwogICAgICAgIGJ0bi50aXRs ZSA9IGxhYmVsICsgJyDigJQgQWNodHVuZzogJyArIGRlZml6aXQydyArICcgVGFnJyArIChkZWZp eml0MncgPT09IDEgPyAnJyA6ICdlJykgKyAnIG1pdCBVbnRlcmJlc2V0enVuZyBpbiBkZW4gbsOk Y2hzdGVuIDE0IFRhZ2VuJzsKICAgIH0gZWxzZSBpZiAoZGVmaXppdDR3ID4gMCkgewogICAgICAg IGJ0bi5jbGFzc0xpc3QuYWRkKCdiay10YWItZGVmaXppdC00dycpOwogICAgICAgIGJ0bi50aXRs ZSA9IGxhYmVsICsgJyDigJQgSGlud2VpczogJyArIGRlZml6aXQ0dyArICcgVGFnJyArIChkZWZp eml0NHcgPT09IDEgPyAnJyA6ICdlJykgKyAnIG1pdCBVbnRlcmJlc2V0enVuZyBpbiBXb2NoZSAz 4oCTNCc7CiAgICB9Cn0KCi8vIFZvcm5hbWVuIGRlcyBha3R1ZWxsZW4gR2VzYW10dmVyYW50d29y dGxpY2hlbiBlcm1pdHRlbG4uIFN1Y2hyZWloZW5mb2xnZToKLy8gICAxKSBhZG1pbi5mYWNoYXVm c2ljaHQgIChoYXQgZGllIG1laXN0ZW4gRGV0YWlsLUZlbGRlciwgaW5rbC4gZXhwbGl6aXRlcgov LyAgICAgIFZvcm5hbWUvTmFjaG5hbWUtVHJlbm51bmcgaW4gRm9ybSB2b24gIlZvcm5hbWUgTmFj aG5hbWUiKQovLyAgIDIpIGFkbWluLnN1cGVyVXNlciAgICAgKFNVIHNpbmQgZWJlbmZhbGxzIEdl c2FtdHZlcmFudHdvcnRsaWNoZSwgc3RlaGVuCi8vICAgICAgYWJlciBzZWx0ZW4gaW4gZGVyIEZh Y2hhdWZzaWNodC1MaXN0ZSkKLy8gICAzKSBwbGFudW5nLnBlcnNvbmVuICAgIChlaWdlbmVyIFBl cnNvbmFsdmVyd2FsdHVuZ3MtRWludHJhZyDigJQgaGF0Ci8vICAgICAgdHlwaXNjaGVyd2Vpc2Ug c2F1YmVyIGdldHJlbm50ZSBGZWxkZXIgdm9ybmFtZSAvIG5hbWUpCi8vIEF1cyBhZG1pbi1MaXN0 ZW4tRWludHJhZWdlbiB3aXJkIGRlciBlcnN0ZSBUb2tlbiBhdXMgJ25hbWUnIGdlbm9tbWVuLAov LyBhdXMgZGVtIFBlcnNvbmVuLUVpbnRyYWcgZGFzIGVjaHRlICd2b3JuYW1lJy1GZWxkIGJldm9y enVndC4KZXhwb3J0IGZ1bmN0aW9uIGdlc2FtdHZlcmFudHdvcnRsaWNoVm9ybmFtZUVybWl0dGVs bigpIHsKICAgIHZhciBiID0gKFouYmVudXR6ZXIgfHwgJycpLnRvTG93ZXJDYXNlKCk7CiAgICB2 YXIgYkt1cnogPSBiLnNwbGl0KCdcXCcpLnBvcCgpOwogICAgZnVuY3Rpb24gcGFzc3Qoa2VubnVu ZykgewogICAgICAgIGlmICgha2VubnVuZykgcmV0dXJuIGZhbHNlOwogICAgICAgIHZhciBrID0g U3RyaW5nKGtlbm51bmcpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgcmV0dXJuIChrID09PSBiIHx8 IGsgPT09IGJLdXJ6IHx8IGIuZW5kc1dpdGgoJ1xcJyArIGspKTsKICAgIH0KICAgIHZhciBmYSA9 IChaLmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSkuZmluZChmdW5jdGlvbihmKSB7IHJldHVybiBw YXNzdChmLm53S2VubnVuZyk7IH0pOwogICAgaWYgKGZhICYmIGZhLm5hbWUpIHJldHVybiBTdHJp bmcoZmEubmFtZSkudHJpbSgpLnNwbGl0KC9ccysvKVswXTsKICAgIHZhciBzdSA9IChaLmFkbWlu LnN1cGVyVXNlciB8fCBbXSkuZmluZChmdW5jdGlvbihzKSB7IHJldHVybiBwYXNzdChzLm53S2Vu bnVuZyk7IH0pOwogICAgaWYgKHN1ICYmIHN1Lm5hbWUpIHJldHVybiBTdHJpbmcoc3UubmFtZSku dHJpbSgpLnNwbGl0KC9ccysvKVswXTsKICAgIHZhciBwICA9IChaLnBsYW51bmcgJiYgWi5wbGFu dW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHBwKSB7IHJldHVybiBwYXNzdChwcC5u d0tlbm51bmcpOyB9KTsKICAgIGlmIChwKSB7CiAgICAgICAgaWYgKHAudm9ybmFtZSkgcmV0dXJu IFN0cmluZyhwLnZvcm5hbWUpLnRyaW0oKS5zcGxpdCgvXHMrLylbMF07CiAgICAgICAgaWYgKHAu bmFtZSkgICAgcmV0dXJuIFN0cmluZyhwLm5hbWUpLnRyaW0oKS5zcGxpdCgvXHMrLylbMF07CiAg ICB9CiAgICByZXR1cm4gJyc7Cn0KCmV4cG9ydCBmdW5jdGlvbiBiZXNldHp1bmdza29udHJvbGxl UmVuZGVybigpIHsKICAgIGlmICghKFoucmVjaHRlICYmIFoucmVjaHRlLmlzdEdlc2FtdHZlcmFu dHdvcnRsaWNoKSkgcmV0dXJuOwogICAgdmFyIGFuYWx5c2UgPSBiZXNldHp1bmdzQW5hbHlzZSgp OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JrLWtwaS1nZXNhbXQnKS5xdWVyeVNlbGVj dG9yKCcuYmsta3BpLXphaGwnKS50ZXh0Q29udGVudCA9IGFuYWx5c2UuZ2VzYW10VGFnZTsKICAg IC8vIEtQSXMgamV0enQgbWl0IDMtU3RhdHVzLUFtcGVsIHN0YXR0IG51ciBkZWZpeml0L29rLiBX aXIgdmVyd2VuZGVuIGRpZQogICAgLy8gYmVzdGVoZW5kZW4gQ29udGFpbmVyIHdlaXRlciAoYmst a3BpLWRlZml6aXQgLT4gcm90LCBiay1rcGktb2sgLT4gZ3J1ZW4pCiAgICAvLyB1bmQgZXJnYWVu emVuIExhYmVsLVRleHQgdmlhIHRpdGxlLgogICAgdmFyIGVsRGVmID0gZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJ2JrLWtwaS1kZWZpeml0Jyk7CiAgICB2YXIgZWxPayAgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnYmsta3BpLW9rJyk7CiAgICBpZiAoZWxEZWYpIHsKICAgICAgICBlbERlZi5x dWVyeVNlbGVjdG9yKCcuYmsta3BpLXphaGwnKS50ZXh0Q29udGVudCAgPSBhbmFseXNlLnJvdFRh Z2U7CiAgICAgICAgZWxEZWYucXVlcnlTZWxlY3RvcignLmJrLWtwaS1sYWJlbCcpLnRleHRDb250 ZW50ID0gJ3JvdCAo4omkMSknOwogICAgfQogICAgaWYgKGVsT2spIHsKICAgICAgICBlbE9rLnF1 ZXJ5U2VsZWN0b3IoJy5iay1rcGktemFobCcpLnRleHRDb250ZW50ICA9IGFuYWx5c2UuZ3J1ZW5U YWdlOwogICAgICAgIGVsT2sucXVlcnlTZWxlY3RvcignLmJrLWtwaS1sYWJlbCcpLnRleHRDb250 ZW50ID0gJ2dyw7xuICjiiaUzKSc7CiAgICB9CgogICAgLy8gUGVyc29lbmxpY2hlIEJlZ3J1ZXNz dW5nICsgRXJrbGFlcnVuZy4gQW5yZWRlICsgQnJpZWZpbmctQnV0dG9uIGltbWVyCiAgICAvLyBz aWNodGJhcjsgZGllIGF1c2Z1ZWhybGljaGUgRXJrbGFlcnVuZyBpbiBlaW5lbSBhdWZrbGFwcGJh cmVuIDxkZXRhaWxzPi4KICAgIHZhciBiZ0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jr LWJlZ3J1ZXNzdW5nJyk7CiAgICBpZiAoYmdFbCkgewogICAgICAgIHZhciB2b3JuYW1lID0gZ2Vz YW10dmVyYW50d29ydGxpY2hWb3JuYW1lRXJtaXR0ZWxuKCk7CiAgICAgICAgdmFyIGFucmVkZSA9 IHZvcm5hbWUgPyAoJ0hhbGxvICcgKyBlc2NhcGVIVE1MKHZvcm5hbWUpICsgJyEnKSA6ICdIYWxs byEnOwogICAgICAgIHZhciBuYXZCZXNMYWJlbCA9IGJlek9kZXIoJ25hdi5iZXNldHp1bmcnLCAn QmVzZXR6dW5nJyk7CiAgICAgICAgYmdFbC5pbm5lckhUTUwgPQogICAgICAgICAgICAnPGRpdiBj bGFzcz0iYmstYmVncnVlc3N1bmciPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJr LWJlZ3Ita29wZiI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWJlZ3It YW5yZWRlIj4nICsgYW5yZWRlICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiIgaWQ9ImJ0bi1k ZWZpeml0LWJyaWVmaW5nIj5EZWZpeml0LUJyaWVmaW5nIGFscyBNYWlsIHZvcmJlcmVpdGVuPC9i dXR0b24+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPHAg Y2xhc3M9ImJrLWJlZ3ItcXVpY2tpbnRybyI+S2xpY2sgYXVmIGVpbmVuIFRhZyBpbSBLYWxlbmRl ciB1bnRlbiB6ZWlndCBkaXIgZGllIGVpbmdlcGxhbnRlbiBGw7xocnVuZ3NrcsOkZnRlLiBCZWkg PHNwYW4gY2xhc3M9ImJrLWJlZ3ItcGlsbCBiay1iZWdyLXBpbGwtcm90Ij5Sb3Q8L3NwYW4+LVRh Z2VuIHp1c8OkdHpsaWNoIGRpZSBQZXJzb25lbiwgZGllIGR1IHBlcnPDtm5saWNoIGFuc2NocmVp YmVuIGthbm5zdC48L3A+JyArCiAgICAgICAgICAgICAgICAnPGRldGFpbHMgY2xhc3M9ImJrLWJl Z3ItZGV0YWlscyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzdW1tYXJ5Pk1laHIgSW5mb3Mg enVyIExvZ2lrICZhbXA7IGRlbiBNYWlsLUZ1bmt0aW9uZW48L3N1bW1hcnk+JyArCiAgICAgICAg ICAgICAgICAgICAgJzxwPkRpZXNlIEFuc2ljaHQgdW5kIGRlciBUYWIgPHN0cm9uZz4nICsgZXNj YXBlSFRNTChuYXZCZXNMYWJlbCkgKyAnPC9zdHJvbmc+IG9iZW4gaW0gSGVhZGVyIHNpbmQgPHN0 cm9uZz5hdXNzY2hsaWXDn2xpY2ggZsO8ciBkaWNoPC9zdHJvbmc+IGFscyBHZXNhbXR2ZXJhbnR3 b3J0bGljaGUvciBlaW5nZXJpY2h0ZXQg4oCUIHNpZSBzb2xsZW4gZGlyIGRpZSBXYWhybmVobXVu ZyBkZWluZXIgVmVyYW50d29ydHVuZ3PCrXp1d2Vpc3VuZyBlcmxlaWNodGVybi48L3A+JyArCiAg ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWJlZ3ItbGVnZW5kZSI+JyArCiAgICAg ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJiay1iZWdyLWVpbnRyYWciPicgKwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmstYmVn ci1waWxsLXJvdCI+Um90PC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxz cGFuPk1pbmRlc3RlbnMgZWluZSBTY2hpY2h0IG1pdCBudXIgPHN0cm9uZz4xIEbDvGhydW5nc2ty YWZ0PC9zdHJvbmc+IG9kZXIgd2VuaWdlciDigJQga3JpdGlzY2guPC9zcGFuPicgKwogICAgICAg ICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPSJiay1iZWdyLWVpbnRyYWciPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmstYmVnci1waWxsLWdlbGIiPkdlbGI8L3NwYW4+ JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+TWluZGVzdGVucyBlaW5lIFNj aGljaHQgbWl0IDxzdHJvbmc+Z2VuYXUgMjwvc3Ryb25nPiDigJQga2VpbiBQdWZmZXIgZsO8ciBB dXNmw6RsbGUuPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAg ICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJiay1iZWdyLWVpbnRyYWciPicgKwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmst YmVnci1waWxsLWdydWVuIj5HcsO8bjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICc8c3Bhbj5BbGxlIFNjaGljaHRlbiBtaXQgPHN0cm9uZz4zIG9kZXIgbWVocjwvc3Ryb25n PiBGw7xocnVuZ3NrcsOkZnRlbiDigJQga29tZm9ydGFiZWwgYmVzZXR6dC48L3NwYW4+JyArCiAg ICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9k aXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIGNsYXNzPSJiay1iZWdyLW1haWwiPjxzdHJv bmc+VGFnIMO2ZmZuZW46PC9zdHJvbmc+IGJlaSBSb3Qgd2VyZGVuIHp1c8OkdHpsaWNoIGRpZSBQ ZXJzb25lbiBtaXQgPGNvZGU+ZGZyPC9jb2RlPi88Y29kZT53ZnI8L2NvZGU+IChwb3RlbnppZWxs IHZlcmbDvGdiYXIpIHVuZCBtaXQgU2NodWx1bmdzLUNvZGVzIHdpZSA8Y29kZT5BdUY8L2NvZGU+ Lzxjb2RlPkxHPC9jb2RlPi88Y29kZT5TZW08L2NvZGU+IChudXIgTm90ZmFsbCkgZ2VsaXN0ZXQg 4oCUIEtsaWNrIGF1ZiBlaW5lIFBlcnNvbiDDtmZmbmV0IGVpbmUgcGVyc8O2bmxpY2hlIE1haWwg aW4gZGVpbmVtIE1haWxwcm9ncmFtbS48L3A+JyArCiAgICAgICAgICAgICAgICAgICAgJzxwIGNs YXNzPSJiay1iZWdyLW1haWwiPjxzdHJvbmc+RGVmaXppdC1CcmllZmluZy1CdXR0b246PC9zdHJv bmc+IE91dGxvb2sgbWl0IGVpbmVyIHp1c2FtbWVuZ2VmYXNzdGVuIMOcYmVyc2ljaHQgYWxsZXIg RsO8aHJ1bmdzLVVudGVyYmVzZXR6dW5nZW4gZGVyIG7DpGNoc3RlbiA0IFdvY2hlbi48L3A+JyAr CiAgICAgICAgICAgICAgICAnPC9kZXRhaWxzPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAg ICAgICB2YXIgYnRuREIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuLWRlZml6aXQtYnJp ZWZpbmcnKTsKICAgICAgICBpZiAoYnRuREIpIGJ0bkRCLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNr JywgZGVmaXppdEJyaWVmaW5nT2VmZm5lbik7CiAgICB9CgogICAgLy8gPT09PT0gS2FsZW5kZXIt QW5zaWNodCA9PT09PQogICAgLy8gV2lyIHplaWdlbiA1IFdvY2hlbi1SZWloZW4gYWIgZGVtIE1v bnRhZyBkZXIgYWt0dWVsbGVuIFdvY2hlLgogICAgLy8gVGFnZSBWT1IgaGV1dGUgb2RlciBOQUNI IGhldXRlKzI4IHNpbmQgZ3JhdS9pbmFrdGl2LCBkYXp3aXNjaGVuCiAgICAvLyB3ZXJkZW4gc2ll IG5hY2ggU3RhdHVzIChyb3QvZ2VsYi9ncnVlbikgZWluZ2VmYWVyYnQgdW5kIHNpbmQga2xpY2ti YXIuCiAgICB2YXIgaW5oYWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JrLWluaGFsdCcp OwogICAgdmFyIGhldXRlICA9IG5ldyBEYXRlKCk7IGhldXRlLnNldEhvdXJzKDAsMCwwLDApOwog ICAgdmFyIGhldXRlU3RyID0gZGF0dW1TdHIoaGV1dGUpOwogICAgdmFyIGVuZGVTdHI7CiAgICB7 CiAgICAgICAgdmFyIGVuZGUgPSBuZXcgRGF0ZShoZXV0ZSk7CiAgICAgICAgZW5kZS5zZXREYXRl KGVuZGUuZ2V0RGF0ZSgpICsgQktfSE9SSVpPTlRfVEFHRSk7CiAgICAgICAgZW5kZVN0ciA9IGRh dHVtU3RyKGVuZGUpOwogICAgfQogICAgLy8gTWFwIGRhdHVtIC0+IHRhZ0RhdGVuIChhdXMgYW5h bHlzZS50YWdlLCBmdWVyIHNjaG5lbGxlbiBadWdyaWZmKQogICAgdmFyIHRhZ01hcCA9IHt9Owog ICAgYW5hbHlzZS50YWdlLmZvckVhY2goZnVuY3Rpb24odCkgeyB0YWdNYXBbdC5kYXR1bV0gPSB0 OyB9KTsKICAgIC8vIE1vbnRhZyBkaWVzZXIgV29jaGUgYmVzdGltbWVuCiAgICB2YXIgc3RhcnRN byA9IG5ldyBEYXRlKGhldXRlKTsKICAgIHZhciBkb3cgPSBzdGFydE1vLmdldERheSgpOyAvLyAw PVNvLCAxPU1vLCAuLi4sIDY9U2EKICAgIHZhciBkaWZmTW8gPSAoZG93ID09PSAwKSA/IC02IDog KDEgLSBkb3cpOwogICAgc3RhcnRNby5zZXREYXRlKHN0YXJ0TW8uZ2V0RGF0ZSgpICsgZGlmZk1v KTsKCiAgICB2YXIgbW9OYW1lbiA9IFsnSmFudWFyJywnRmVicnVhcicsJ03DpHJ6JywnQXByaWwn LCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3Zl bWJlcicsJ0RlemVtYmVyJ107CiAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJiay1rYWwiPic7 CiAgICAvLyBXb2NoZW50YWctSGVhZGVyIChNby1TbykKICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9 ImJrLWthbC13dC1rb3BmIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+ TW88L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+RGk8L2Rpdj4n ICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+TWk8L2Rpdj4nICsKICAgICAg ICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbC13dCI+RG88L2Rpdj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9ImJrLWthbC13dCI+RnI8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9 ImJrLWthbC13dCBiay1rYWwtd3Qtd2UiPlNhPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNs YXNzPSJiay1rYWwtd3QgYmsta2FsLXd0LXdlIj5TbzwvZGl2PicgKwogICAgICAgICAgICAnPC9k aXY+JzsKICAgIC8vIDUgV29jaGVuIMOXIDcgVGFnZSA9IDM1IFplbGxlbiDigJQgZGVja3QgMjgg VGFnZSBIb3Jpem9udCBzaWNoZXIgYWIsCiAgICAvLyBlZ2FsIGFuIHdlbGNoZW0gV29jaGVudGFn IHdpciBzdGFydGVuLgogICAgZm9yICh2YXIgdyA9IDA7IHcgPCA1OyB3KyspIHsKICAgICAgICBo dG1sICs9ICc8ZGl2IGNsYXNzPSJiay1rYWwtd29jaGUiPic7CiAgICAgICAgZm9yICh2YXIgZCA9 IDA7IGQgPCA3OyBkKyspIHsKICAgICAgICAgICAgdmFyIHRhZyA9IG5ldyBEYXRlKHN0YXJ0TW8p OwogICAgICAgICAgICB0YWcuc2V0RGF0ZSh0YWcuZ2V0RGF0ZSgpICsgdyAqIDcgKyBkKTsKICAg ICAgICAgICAgdmFyIHRhZ1MgPSBkYXR1bVN0cih0YWcpOwogICAgICAgICAgICB2YXIgaW1GZW5z dGVyID0gKHRhZ1MgPj0gaGV1dGVTdHIgJiYgdGFnUyA8IGVuZGVTdHIpOwogICAgICAgICAgICB2 YXIgaXN0SGV1dGUgPSAodGFnUyA9PT0gaGV1dGVTdHIpOwogICAgICAgICAgICB2YXIgaXN0V0Ug PSAoZCA+PSA1KTsKICAgICAgICAgICAgdmFyIGRhdGEgPSB0YWdNYXBbdGFnU107CiAgICAgICAg ICAgIHZhciBzdGF0dXNDbHMgPSAnJzsKICAgICAgICAgICAgaWYgKGltRmVuc3RlciAmJiBkYXRh KSBzdGF0dXNDbHMgPSAnIGJrLWthbC0nICsgZGF0YS5zdGF0dXM7CiAgICAgICAgICAgIGVsc2Ug c3RhdHVzQ2xzID0gJyBiay1rYWwtYXVzc2VuJzsKICAgICAgICAgICAgaWYgKGlzdEhldXRlKSBz dGF0dXNDbHMgKz0gJyBiay1rYWwtaGV1dGUnOwogICAgICAgICAgICBpZiAoaXN0V0UpIHN0YXR1 c0NscyArPSAnIGJrLWthbC13ZSc7CiAgICAgICAgICAgIC8vIE1vbmF0c25hbWUgYW0gMS4gYW56 ZWlnZW4sIHNvbnN0IG51ciBaYWhsCiAgICAgICAgICAgIHZhciBsYWJlbCA9ICc8c3BhbiBjbGFz cz0iYmsta2FsLXRhZ25yIj4nICsgdGFnLmdldERhdGUoKSArICc8L3NwYW4+JzsKICAgICAgICAg ICAgaWYgKHRhZy5nZXREYXRlKCkgPT09IDEpIGxhYmVsICs9ICc8c3BhbiBjbGFzcz0iYmsta2Fs LW1vIj4nICsgbW9OYW1lblt0YWcuZ2V0TW9udGgoKV0uc3Vic3RyaW5nKDAsMykgKyAnPC9zcGFu Pic7CiAgICAgICAgICAgIC8vIFNjaGljaHQtTWluaS1JbmRpa2F0b3JlbiBiZWkgaW1GZW5zdGVy CiAgICAgICAgICAgIHZhciBtaW5pID0gJyc7CiAgICAgICAgICAgIGlmIChpbUZlbnN0ZXIgJiYg ZGF0YSkgewogICAgICAgICAgICAgICAgbWluaSA9ICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmki PicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmktemVsbGUg Ymsta2FsLW1pbmktJyArIGRhdGEuc2NoaWNodGVuLkYuc3RhdHVzICsgJyIgdGl0bGU9IkZyw7xo c2NoaWNodDogJyArIGRhdGEuc2NoaWNodGVuLkYuaXN0ICsgJyBGayI+RicgKyBkYXRhLnNjaGlj aHRlbi5GLmlzdCArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz PSJiay1rYWwtbWluaS16ZWxsZSBiay1rYWwtbWluaS0nICsgZGF0YS5zY2hpY2h0ZW4uUy5zdGF0 dXMgKyAnIiB0aXRsZT0iU3DDpHRzY2hpY2h0OiAnICsgZGF0YS5zY2hpY2h0ZW4uUy5pc3QgKyAn IEZrIj5TJyArIGRhdGEuc2NoaWNodGVuLlMuaXN0ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAg ICAgICAgICAnPHNwYW4gY2xhc3M9ImJrLWthbC1taW5pLXplbGxlIGJrLWthbC1taW5pLScgKyBk YXRhLnNjaGljaHRlbi5OLnN0YXR1cyArICciIHRpdGxlPSJOYWNodHNjaGljaHQ6ICcgKyBkYXRh LnNjaGljaHRlbi5OLmlzdCArICcgRmsiPk4nICsgZGF0YS5zY2hpY2h0ZW4uTi5pc3QgKyAnPC9z cGFuPicgKwogICAgICAgICAgICAgICAgICAgICc8L3NwYW4+JzsKICAgICAgICAgICAgfQogICAg ICAgICAgICB2YXIgY2xpY2sgPSBpbUZlbnN0ZXIgPyAnIGRhdGEtYWt0aW9uPSJiay10YWciIGRh dGEtZGF0dW09IicgKyBlc2NhcGVBdHRyKHRhZ1MpICsgJyInIDogJyc7CiAgICAgICAgICAgIGh0 bWwgKz0gJzxkaXYgY2xhc3M9ImJrLWthbC10YWcnICsgc3RhdHVzQ2xzICsgJyInICsgY2xpY2sg KyAnPicgKwogICAgICAgICAgICAgICAgbGFiZWwgKyBtaW5pICsgJzwvZGl2Pic7CiAgICAgICAg fQogICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICB9CiAgICBodG1sICs9ICc8L2Rpdj4nOwog ICAgaW5oYWx0LmlubmVySFRNTCA9IGh0bWw7Cn0KCi8vIERlbHRhLVVwZGF0ZSBmdWVyIGVpbmVu IGVpbnplbG5lbiBUYWcg4oCUIHZlcm1laWRldCBkZW4gdm9sbHN0YWVuZGlnZW4KLy8gaW5uZXJI VE1MLVJlYnVpbGQgZGVzIDUtV29jaGVuLUthbGVuZGVycyBuYWNoIGplZGVtIFplbGwtRWRpdC4g V2lyZCBhdXMKLy8gZGVtIEVkaXRvciBhdWZnZXJ1ZmVuLCB3ZW5uIGRlciBQcnVlZnVuZ3MtVGFi IHNpY2h0YmFyIGlzdC4gQXVmZ2FiZToKLy8gICAxLiBTdGF0dXMtS2xhc3NlIChyb3QvZ2VsYi9n cnVlbikgZGVyIGVpbmVuIEthY2hlbCBwYXRjaGVuCi8vICAgMi4gTWluaS1JbmRpa2F0b3JlbiBG L1MvTiBtaXQgZGVuIG5ldWVuIFphZWhsdW5nZW4gYWt0dWFsaXNpZXJlbgovLyAgIDMuIEtQSS1a YWhsZW4gKGdlc2FtdC9yb3QvZ3J1ZW4pIG5ldSB6YWVobGVuCi8vIFdlbm4gZGVyIFRhYiBuaWUg Z2VyZW5kZXJ0IHd1cmRlIChrZWluIGJrLWluaGFsdCkgb2RlciBkYXMgRGF0dW0KLy8gYXVzc2Vy aGFsYiBkZXMgNC1Xb2NoZW4tRmVuc3RlcnMgbGllZ3Q6IG5vLW9wLiBLUEktUmVjb3VudCBudXR6 dAovLyBiZXNldHp1bmdzQW5hbHlzZSgpIOKAlCBkYXMgaXN0IGJpbGxpZyAoTygyOCBUYWdlICog NDUgUGVyc29uZW4pKSwKLy8gdGV1ZXIgaXN0IGRlciBET00tUmVidWlsZCwgZGVuIHdpciBkYW1p dCBzcGFyZW4uCmV4cG9ydCBmdW5jdGlvbiBiZXNldHp1bmdza29udHJvbGxlVGFnVXBkYXRlbihk YXR1bSkgewogICAgaWYgKCEoWi5yZWNodGUgJiYgWi5yZWNodGUuaXN0R2VzYW10dmVyYW50d29y dGxpY2gpKSByZXR1cm47CiAgICB2YXIgaW5oYWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo J2JrLWluaGFsdCcpOwogICAgaWYgKCFpbmhhbHQpIHJldHVybjsKICAgIHZhciB0YWdFbCA9IGlu aGFsdC5xdWVyeVNlbGVjdG9yKCcuYmsta2FsLXRhZ1tkYXRhLWRhdHVtPSInICsgZGF0dW0gKyAn Il0nKTsKICAgIGlmICghdGFnRWwpIHJldHVybjsgIC8vIGF1c3NlcmhhbGIgZGVzIDQtV29jaGVu LUZlbnN0ZXJzCgogICAgZnVuY3Rpb24gc2NoaWNodFN0YXR1cyhpc3QpIHsKICAgICAgICBpZiAo aXN0IDw9IDEpIHJldHVybiAncm90JzsKICAgICAgICBpZiAoaXN0ID09PSAyKSByZXR1cm4gJ2dl bGInOwogICAgICAgIHJldHVybiAnZ3J1ZW4nOwogICAgfQogICAgZnVuY3Rpb24gdGFnU3RhdHVz KGYsIHMsIG4pIHsKICAgICAgICBpZiAoZiA8PSAxIHx8IHMgPD0gMSB8fCBuIDw9IDEpIHJldHVy biAncm90JzsKICAgICAgICBpZiAoZiA9PT0gMiB8fCBzID09PSAyIHx8IG4gPT09IDIpIHJldHVy biAnZ2VsYic7CiAgICAgICAgcmV0dXJuICdncnVlbic7CiAgICB9CgogICAgdmFyIGYgPSBmdWVo cnVuZ3NaYWVobGVuKGRhdHVtLCAnRicpOwogICAgdmFyIHMgPSBmdWVocnVuZ3NaYWVobGVuKGRh dHVtLCAnUycpOwogICAgdmFyIG4gPSBmdWVocnVuZ3NaYWVobGVuKGRhdHVtLCAnTicpOwogICAg dmFyIHN0ID0gdGFnU3RhdHVzKGYsIHMsIG4pOwoKICAgIHRhZ0VsLmNsYXNzTGlzdC5yZW1vdmUo J2JrLWthbC1yb3QnLCAnYmsta2FsLWdlbGInLCAnYmsta2FsLWdydWVuJyk7CiAgICB0YWdFbC5j bGFzc0xpc3QuYWRkKCdiay1rYWwtJyArIHN0KTsKCiAgICB2YXIgbWluaSA9IHRhZ0VsLnF1ZXJ5 U2VsZWN0b3IoJy5iay1rYWwtbWluaScpOwogICAgaWYgKG1pbmkpIHsKICAgICAgICBtaW5pLmlu bmVySFRNTCA9CiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmktemVsbGUgYmst a2FsLW1pbmktJyArIHNjaGljaHRTdGF0dXMoZikgKyAnIiB0aXRsZT0iRnLDvGhzY2hpY2h0OiAn ICsgZiArICcgRmsiPkYnICsgZiArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFz cz0iYmsta2FsLW1pbmktemVsbGUgYmsta2FsLW1pbmktJyArIHNjaGljaHRTdGF0dXMocykgKyAn IiB0aXRsZT0iU3DDpHRzY2hpY2h0OiAnICsgcyArICcgRmsiPlMnICsgcyArICc8L3NwYW4+JyAr CiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FsLW1pbmktemVsbGUgYmsta2FsLW1pbmkt JyArIHNjaGljaHRTdGF0dXMobikgKyAnIiB0aXRsZT0iTmFjaHRzY2hpY2h0OiAnICsgbiArICcg RmsiPk4nICsgbiArICc8L3NwYW4+JzsKICAgIH0KCiAgICB2YXIgYW5hbHlzZSA9IGJlc2V0enVu Z3NBbmFseXNlKCk7CiAgICB2YXIgZ2VzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmst a3BpLWdlc2FtdCcpOwogICAgdmFyIGRlZkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jr LWtwaS1kZWZpeml0Jyk7CiAgICB2YXIgb2tFbCAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn Ymsta3BpLW9rJyk7CiAgICBpZiAoZ2VzRWwpIGdlc0VsLnF1ZXJ5U2VsZWN0b3IoJy5iay1rcGkt emFobCcpLnRleHRDb250ZW50ID0gYW5hbHlzZS5nZXNhbXRUYWdlOwogICAgaWYgKGRlZkVsKSBk ZWZFbC5xdWVyeVNlbGVjdG9yKCcuYmsta3BpLXphaGwnKS50ZXh0Q29udGVudCA9IGFuYWx5c2Uu cm90VGFnZTsKICAgIGlmIChva0VsKSAgb2tFbCAucXVlcnlTZWxlY3RvcignLmJrLWtwaS16YWhs JykudGV4dENvbnRlbnQgPSBhbmFseXNlLmdydWVuVGFnZTsKfQoKLy8gS2xpY2stSGFuZGxlciBm dWVyIEthbGVuZGVyLVRhZ2UuIEtsaWNrIGF1ZiBlaW5lbiBha3RpdmVuIFRhZyBvZWZmbmV0Ci8v IGRhcyBEZXRhaWwtTW9kYWwgbWl0IFNjaGljaHQtQXVmc3RlbGx1bmcgKyAoYmVpIHJvdCkgQXVz aGlsZmUtS2FuZGlkYXRlbi4KZXhwb3J0IGZ1bmN0aW9uIGJlc2V0enVuZ3Nrb250cm9sbGVFdmVu dHNBdWZoYWVuZ2VuKCkgewogICAgdmFyIGluaGFsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdiay1pbmhhbHQnKTsKICAgIGlmICghaW5oYWx0KSByZXR1cm47CiAgICBpbmhhbHQuYWRkRXZl bnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHRhZyA9IGUudGFy Z2V0LmNsb3Nlc3QoJ1tkYXRhLWFrdGlvbj0iYmstdGFnIl0nKTsKICAgICAgICBpZiAodGFnKSB7 CiAgICAgICAgICAgIHRhZ0RldGFpbE1vZGFsWmVpZ2VuKHRhZy5nZXRBdHRyaWJ1dGUoJ2RhdGEt ZGF0dW0nKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9KTsKfQoKLy8gTGll ZmVydCBkaWUgUGVyc29uZW4sIGRpZSBhbSBnZWdlYmVuZW4gRGF0dW0gZWluZW4gRnJlaS1Db2Rl IChkZnIsIHdmcikKLy8gZWluZ2V0cmFnZW4gaGFiZW4uIEthbmRpZGF0ZW4gZnVlciBkaWUgUnVu ZG1haWwuCmV4cG9ydCBmdW5jdGlvbiBmcmVpUGVyc29uZW5GdWVyKGRhdHVtKSB7CiAgICByZXR1 cm4gdmVyZnVlZ2JhcmVQZXJzb25lbkZ1ZXIoZGF0dW0pLmZpbHRlcihmdW5jdGlvbihwKSB7CiAg ICAgICAgcmV0dXJuIHAua2F0ZWdvcmllID09PSAnZnJlaSc7CiAgICB9KTsKfQoKLy8gUG90ZW50 aWVsbCB2ZXJmdWVnYmFyZSBQZXJzb25lbiBhbSBEYXR1bSDigJQgS2FuZGlkYXRlbiBmdWVyIGRp ZQovLyBTY2hpY2h0LUF1c2hpbGZlLiBOdXIgRnJlaS1Db2RlcyAoZGZyL3dmcik6IGRpZSBoYWJl biBhbSBUYWcgb2ZmaXppZWxsCi8vIG5pY2h0cyB2b3IgdW5kIGtvZW5uZW4gdGhlb3JldGlzY2gg ZWluc3ByaW5nZW4uIFRlcm1pbi1Db2RlcyAoQXVGL0xHLwovLyBTZW0vVHpGL0FaQS9FVE0pIHNp bmQgdGFnc3VlYmVyIGJsb2NraWVydCB1bmQga29tbWVuIGZ1ZXIgZWluZQovLyBrbGFzc2lzY2hl IFNjaGljaHQtQXVzaGlsZmUgbmljaHQgaW4gRnJhZ2Ug4oCUIGRpZSB3dXJkZW4gZnJ1ZWhlciBh bHMKLy8gIk5vdGZhbGwiLUJsb2NrIGFuZ2V6ZWlndCwgd2FzIGltIExpdmUtQmV0cmllYiBtZWhy IHZlcndpcnJ0IGhhdCBhbHMKLy8gZ2VudXR6dCwgZGFoZXIgMjAyNi0wNS0xOSByYXVzLgpleHBv cnQgZnVuY3Rpb24gdmVyZnVlZ2JhcmVQZXJzb25lbkZ1ZXIoZGF0dW0pIHsKICAgIHZhciBlID0g KFoucGxhbnVuZy5laW50cmFlZ2UgfHwge30pW2RhdHVtXSB8fCB7fTsKICAgIHZhciBrb21tZW50 YXJlID0gKChaLnBsYW51bmcua29tbWVudGFyZSB8fCB7fSlbZGF0dW1dKSB8fCB7fTsKICAgIHZh ciBGUkVJX0NPREVTID0geyBkZnI6IDEsIHdmcjogMSB9OwogICAgdmFyIGxpc3RlID0gW107CiAg ICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAg ICBpZiAoIXAuYWt0aXYpIHJldHVybjsKICAgICAgICB2YXIgdyA9IGVbU3RyaW5nKHAuaWQpXSB8 fCAnJzsKICAgICAgICBpZiAoIUZSRUlfQ09ERVNbd10pIHJldHVybjsKICAgICAgICBsaXN0ZS5w dXNoKHsKICAgICAgICAgICAgaWQ6IHAuaWQsCiAgICAgICAgICAgIG5hbWU6ICgocC52b3JuYW1l IHx8ICcnKSArICcgJyArIChwLm5hbWUgfHwgJycpKS50cmltKCksCiAgICAgICAgICAgIHZvcm5h bWU6IHAudm9ybmFtZSB8fCAnJywKICAgICAgICAgICAgd2VydDogdywKICAgICAgICAgICAgZW1h aWw6IHAuZW1haWwgfHwgJycsCiAgICAgICAgICAgIGtvbW1lbnRhcjoga29tbWVudGFyVGV4dChr b21tZW50YXJlW1N0cmluZyhwLmlkKV0pLAogICAgICAgICAgICBncnVwcGU6IHAuZ3J1cHBlIHx8 ICcnCiAgICAgICAgfSk7CiAgICB9KTsKICAgIGxpc3RlLnNvcnQoZnVuY3Rpb24oYSwgYikgeyBy ZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTsgfSk7CiAgICByZXR1cm4gbGlzdGU7 Cn0KCi8vIEthbmRpZGF0ZW4tUmVzb2x2ZXIgZnVlciBlaW5lIGtvbmtyZXQgdW50ZXJiZXNldHp0 ZSBTY2hpY2h0LgovLyBWSTMtREdMLXF1YWxpZml6aWVydGUgUGVyc29uZW4gYXVzIGRlciB2b3Jn ZWdlYmVuZW4gRGllbnN0Z3J1cHBlLCBuaWNodAovLyBHZXNhbXR2ZXJhbnR3b3J0bGljaC4gUmV0 dXJucyB6d2VpIEdydXBwZW46Ci8vICAgLmZyZWkgIOKAlCBhbSBUYWcgd2lya2xpY2ggZnJlaSAo bGVlcmVyIEVpbnRyYWcsIGRmci93ZnIvwqcyMS8yMWEpCi8vICAgLnVtZGlzcG9uaWVyYmFyIOKA lCBhbSBUYWcgaW4gV0RGIG9kZXIgRkJQIGVpbmdlcGxhbnQgaW4gZGVyc2VsYmVuCi8vICAgICBT Y2hpY2h0IChGL1MvTik6IGtvZW5uZW4gREdMIHVlYmVybmVobWVuLCBicmF1Y2hlbiBhYmVyIEVy c2F0eiBmdWVyCi8vICAgICBpaHJlIGJpc2hlcmlnZSBXREYvRkJQLVJvbGxlIChVc2VyLUZlZWRi YWNrIDIwMjYtMDUtMjMpLgpleHBvcnQgZnVuY3Rpb24gYmVzZXR6dW5nc0thbmRpZGF0ZW5Fcm1p dHRlbG4oZGF0dW0sIHNjaGljaHRMZXR0ZXIsIGRpZW5zdGdydXBwZSkgewogICAgdmFyIGUgPSAo Wi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZGF0dW1dIHx8IHt9OwogICAgdmFyIEZSRUkgPSB7 ICcnOiAxLCBkZnI6IDEsIHdmcjogMSwgJ8KnMjEnOiAxLCAnMjFhJzogMSB9OwogICAgdmFyIGVy Z2VibmlzID0geyBmcmVpOiBbXSwgdW1kaXNwb25pZXJiYXI6IFtdIH07CiAgICAoWi5wbGFudW5n LnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAgICAgICBpZiAoIXAuYWt0 aXYpIHJldHVybjsKICAgICAgICBpZiAocC5nZWxvZXNjaHRBbSkgcmV0dXJuOwogICAgICAgIGlm ICghaXN0RGdsUXVhbGlmaXppZXJ0KHApKSByZXR1cm47CiAgICAgICAgaWYgKGRpZW5zdGdydXBw ZSAmJiAocC5ncnVwcGUgfHwgJycpICE9PSBkaWVuc3RncnVwcGUpIHJldHVybjsKICAgICAgICBp ZiAoaXN0R2VzYW10dmVyYW50d29ydGxpY2gocCkpIHJldHVybjsKICAgICAgICB2YXIgdyA9IFN0 cmluZyhlW1N0cmluZyhwLmlkKV0gfHwgJycpOwogICAgICAgIGlmICh3IGluIEZSRUkpIHsKICAg ICAgICAgICAgZXJnZWJuaXMuZnJlaS5wdXNoKHApOwogICAgICAgICAgICByZXR1cm47CiAgICAg ICAgfQogICAgICAgIC8vIFVtZGlzcG9uaWVyYmFyOiBQZXJzb24gaXN0IGluIGRlcnNlbGJlbiBT Y2hpY2h0IEYvUy9OCiAgICAgICAgLy8gZWluZ2VwbGFudCBhbHMgV0RGIG9kZXIgRkJQIC0+IGth bm4gREdMIHVlYmVybmVobWVuLCB3ZW5uCiAgICAgICAgLy8gamVtYW5kIGFuZGVyZXMgaWhyZSBS b2xsZSB1ZWJlcm5pbW10LgogICAgICAgIGlmICh3Lmxlbmd0aCA+PSA1ICYmIHcuY2hhckF0KDAp ID09PSBzY2hpY2h0TGV0dGVyICYmIHcuY2hhckF0KDEpID09PSAnLScpIHsKICAgICAgICAgICAg dmFyIHJvbGxlID0gdy5zdWJzdHJpbmcoMiwgNSk7CiAgICAgICAgICAgIGlmIChyb2xsZSA9PT0g J1dERicgfHwgcm9sbGUgPT09ICdGQlAnKSB7CiAgICAgICAgICAgICAgICBlcmdlYm5pcy51bWRp c3BvbmllcmJhci5wdXNoKHsgcGVyc29uOiBwLCBvcmlnaW5hbENvZGU6IHcsIHJvbGxlOiByb2xs ZSB9KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg IH0pOwogICAgZnVuY3Rpb24gc29ydEJ5TmFtZShhLCBiKSB7CiAgICAgICAgdmFyIHBhID0gYS5w ZXJzb24gfHwgYSwgcGIgPSBiLnBlcnNvbiB8fCBiOwogICAgICAgIHZhciBhbiA9ICgocGEudm9y bmFtZSB8fCAnJykgKyAnICcgKyAocGEubmFtZSB8fCAnJykpLnRyaW0oKTsKICAgICAgICB2YXIg Ym4gPSAoKHBiLnZvcm5hbWUgfHwgJycpICsgJyAnICsgKHBiLm5hbWUgfHwgJycpKS50cmltKCk7 CiAgICAgICAgcmV0dXJuIGFuLmxvY2FsZUNvbXBhcmUoYm4sICdkZScpOwogICAgfQogICAgZXJn ZWJuaXMuZnJlaS5zb3J0KHNvcnRCeU5hbWUpOwogICAgZXJnZWJuaXMudW1kaXNwb25pZXJiYXIu c29ydChzb3J0QnlOYW1lKTsKICAgIHJldHVybiBlcmdlYm5pczsKfQoKLy8gTGVpdGV0IGRpZSBm dWVyIGVpbmUgU2NoaWNodCByZWxldmFudGUgRGllbnN0Z3J1cHBlIGFiOiBuaW1tdCBkaWUgR3J1 cHBlCi8vIGRlciBiZXJlaXRzIGVpbmdlcGxhbnRlbiBER0wtUGVyc29uZW4uIFdlbm4gbWVocmVy ZSB1bnRlcnNjaGllZGxpY2hlCi8vIEdydXBwZW4gYW53ZXNlbmQgc2luZCwgd2lyZCBkaWUgZXJz dGUgZ2Vub21tZW4gKHR5cGlzY2hlcndlaXNlIHNpbmQKLy8gYWxsZSBhbndlc2VuZGVuIERHTCBh dXMgZGVyc2VsYmVuIFJvdGF0aW9ucy1HcnVwcGUpLiBCZWkgMCBQZXJzb25lbgovLyBpbiBkZXIg U2NoaWNodCByZXR1cm5zIG51bGwgLT4gS2FuZGlkYXRlbiBrb21tZW4gYXVzIGFsbGVuIEdydXBw ZW4uCmV4cG9ydCBmdW5jdGlvbiBkaWVuc3RncnVwcGVGdWVyU2NoaWNodChkYXR1bSwgc2NoaWNo dExldHRlcikgewogICAgdmFyIGZrTGlzdGUgPSBkZ2xzSW5TY2hpY2h0KGRhdHVtLCBzY2hpY2h0 TGV0dGVyKTsKICAgIGlmICghZmtMaXN0ZSB8fCBma0xpc3RlLmxlbmd0aCA9PT0gMCkgcmV0dXJu IG51bGw7CiAgICByZXR1cm4gZmtMaXN0ZVswXS5ncnVwcGUgfHwgbnVsbDsKfQoKLy8gVGFnLURl dGFpbC1Nb2RhbCDigJQgZGllIHplbnRyYWxlIEtsaWNrLUFrdGlvbiBpbSBuZXVlbiBLYWxlbmRl ci4KLy8gWmVpZ3QgZnVlciBkZW4gZ2V3YWVobHRlbiBUYWc6Ci8vICAtIFN0YXR1cyBwcm8gU2No aWNodCAoQW56YWhsICsgQW1wZWwtRmFyYmUpCi8vICAtIEFsbGUgZWluZ2VwbGFudGVuIEZ1ZWhy dW5nc2tyYWVmdGUgamUgU2NoaWNodCAoTmFtZSwgRnVua3Rpb24sIENvZGUpCi8vICAtIEJlaSBy b3QtU3RhdHVzIHp1c2FldHpsaWNoIGRpZSBBdXNoaWxmZS1LYW5kaWRhdGVuIGluIHp3ZWkgQmxv ZWNrZW4KLy8gICAgKEZyZWkgLyBUZXJtaW4pIOKAlCBLbGljayBhdWYgZWluZSBQZXJzb24gb2Vm Zm5ldCBlaW5lIHBlcnNvZW5saWNoZQovLyAgICBNYWlsIHBlciBtYWlsdG86LgpleHBvcnQgZnVu Y3Rpb24gdGFnRGV0YWlsTW9kYWxaZWlnZW4oZGF0dW0pIHsKICAgIHZhciBkID0gbmV3IERhdGUo ZGF0dW0gKyAnVDAwOjAwOjAwJyk7CiAgICB2YXIgd3QgPSBbJ1Nvbm50YWcnLCdNb250YWcnLCdE aWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdTYW1zdGFnJ11bZC5n ZXREYXkoKV07CiAgICB2YXIgZiA9IGZ1ZWhydW5nc1phZWhsZW4oZGF0dW0sICdGJyk7CiAgICB2 YXIgcyA9IGZ1ZWhydW5nc1phZWhsZW4oZGF0dW0sICdTJyk7CiAgICB2YXIgbiA9IGZ1ZWhydW5n c1phZWhsZW4oZGF0dW0sICdOJyk7CiAgICBmdW5jdGlvbiBzdGF0dXNPZihpc3QpIHsKICAgICAg ICBpZiAoaXN0IDw9IDEpIHJldHVybiAncm90JzsKICAgICAgICBpZiAoaXN0ID09PSAyKSByZXR1 cm4gJ2dlbGInOwogICAgICAgIHJldHVybiAnZ3J1ZW4nOwogICAgfQogICAgZnVuY3Rpb24gc3Rh dHVzTGFiZWwoc3QpIHsKICAgICAgICByZXR1cm4gc3QgPT09ICdyb3QnID8gJ2tyaXRpc2NoICji iaQgMSknIDogc3QgPT09ICdnZWxiJyA/ICdrbmFwcCAoPSAyKScgOiAnZ3V0ICjiiaUgMyknOwog ICAgfQogICAgdmFyIHRhZ1N0ID0gKGYgPD0gMSB8fCBzIDw9IDEgfHwgbiA8PSAxKSA/ICdyb3Qn IDoKICAgICAgICAgICAgICAgIChmID09PSAyIHx8IHMgPT09IDIgfHwgbiA9PT0gMikgPyAnZ2Vs YicgOiAnZ3J1ZW4nOwoKICAgIGZ1bmN0aW9uIHNjaGljaHRCbG9jayhsZXR0ZXIsIG5hbWUpIHsK ICAgICAgICB2YXIgaXN0ID0gbGV0dGVyID09PSAnRicgPyBmIDogbGV0dGVyID09PSAnUycgPyBz IDogbjsKICAgICAgICB2YXIgc3QgID0gc3RhdHVzT2YoaXN0KTsKICAgICAgICB2YXIgZmtMaXN0 ZSA9IGRnbHNJblNjaGljaHQoZGF0dW0sIGxldHRlcik7CiAgICAgICAgLy8gSG9lY2hzdHN0dWZl IChpc3Q9MCkgYmVrb21tdCBlaW5lIHp1c2FldHpsaWNoZSBLbGFzc2UgZnVlcgogICAgICAgIC8v IHZlcnN0YWVya3RlIHZpc3VlbGxlIFdpcmt1bmcgKFBoYXNlIDYsIDIwMjYtMDUtMjEpLgogICAg ICAgIHZhciBrcml0aXNjaCA9IChpc3QgPT09IDApID8gJyBiay1kZXRhaWwtc2NoaWNodC1rcml0 aXNjaCcgOiAnJzsKICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJiay1kZXRhaWwtc2No aWNodCBiay1kZXRhaWwtc2NoaWNodC0nICsgc3QgKyBrcml0aXNjaCArICciIGRhdGEtc2NoaWNo dC1sZXR0ZXI9IicgKyBsZXR0ZXIgKyAnIj4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJr LWRldGFpbC1zY2hpY2h0LWtvcGYiPicgKwogICAgICAgICAgICAgICAgJzxzdHJvbmc+JyArIG5h bWUgKyAnc2NoaWNodDwvc3Ryb25nPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJi ay1kZXRhaWwtc2NoaWNodC16YWhsIj4nICsgaXN0ICsgJyBGw7xocnVuZ3NrcsOkZnRlPC9zcGFu PicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmstYmVnci1w aWxsLScgKyBzdCArICciPicgKyAoaXN0ID09PSAwID8gJ3VuYmVzZXR6dCAoMCknIDogc3RhdHVz TGFiZWwoc3QpKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgIGlm IChma0xpc3RlLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICBodG1sICs9ICc8ZGl2IGNsYXNz PSJiay1kZXRhaWwtbGVlciI+4oCUIG5pZW1hbmQgZWluZ2VwbGFudCDigJQ8L2Rpdj4nOwogICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWwgKz0gJzx1bCBjbGFzcz0iYmstZGV0YWlsLWZr LWxpc3RlIj4nOwogICAgICAgICAgICBma0xpc3RlLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAg ICAgICAgICAgICAgdmFyIGUyID0gKFoucGxhbnVuZy5laW50cmFlZ2UgfHwge30pW2RhdHVtXSB8 fCB7fTsKICAgICAgICAgICAgICAgIHZhciBjb2RlID0gZTJbU3RyaW5nKHAuaWQpXSB8fCAnJzsK ICAgICAgICAgICAgICAgIHZhciBubSA9ICgocC52b3JuYW1lIHx8ICcnKSArICcgJyArIChwLm5h bWUgfHwgJycpKS50cmltKCkgfHwgKCdQZXJzb24gJyArIHAuaWQpOwogICAgICAgICAgICAgICAg dmFyIGZrdCA9IHAuZnVua3Rpb24gPyAoJyDCtyAnICsgZXNjYXBlSFRNTChwLmZ1bmt0aW9uKSkg OiAnJzsKICAgICAgICAgICAgICAgIHZhciBncnAgPSBwLmdydXBwZSA/ICgnIMK3ICcgKyBlc2Nh cGVIVE1MKHAuZ3J1cHBlKSkgOiAnJzsKICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxsaT48c3Bh biBjbGFzcz0iYmstZGV0YWlsLWZrLW5hbWUiPicgKyBlc2NhcGVIVE1MKG5tKSArICc8L3NwYW4+ JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmstZGV0YWlsLWZrLW1l dGEiPicgKyBlc2NhcGVIVE1MKGNvZGUpICsgZmt0ICsgZ3JwICsgJzwvc3Bhbj48L2xpPic7CiAg ICAgICAgICAgIH0pOwogICAgICAgICAgICBodG1sICs9ICc8L3VsPic7CiAgICAgICAgfQogICAg ICAgIC8vIFNjaGljaHQtS2FuZGlkYXRlbi1CbG9jayAoUGhhc2UgNiwgMjAyNi0wNS0yMSk6IGJl aSA8IDIgUGVyc29uZW4gcHJvCiAgICAgICAgLy8gU2NoaWNodCBlcnNjaGVpbnQgaGllciBlaW4g QnV0dG9uLCBkZXIgZGllIGluIEZyYWdlIGtvbW1lbmRlbgogICAgICAgIC8vIEF1c2hpbGZlbiBh dWZrbGFwcHQgKERHTC1xdWFsaWZpemllcnQsIGZyZWkgYW0gVGFnLCBnbGVpY2hlCiAgICAgICAg Ly8gRGllbnN0Z3J1cHBlLCBrZWluZSBHZXNhbXR2ZXJhbnR3b3J0bGljaGVuKS4gSW5saW5lIHN0 YXR0IFN1Yi1Nb2RhbCwKICAgICAgICAvLyBkYW1pdCBkYXMgVGFnLURldGFpbC1Nb2RhbCBuaWNo dCB1ZWJlcmxhZ2VydCB3aXJkLgogICAgICAgIGlmIChpc3QgPCAyKSB7CiAgICAgICAgICAgIGh0 bWwgKz0gJzxkaXYgY2xhc3M9ImJrLXNjaGljaHQta2FuZGlkYXRlbiIgZGF0YS1zY2hpY2h0LWxl dHRlcj0iJyArIGxldHRlciArICciPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0i YnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIGJrLWthbmRpZGF0ZW4tdG9nZ2xl IiBkYXRhLXNjaGljaHQtbGV0dGVyPSInICsgbGV0dGVyICsgJyIgYXJpYS1leHBhbmRlZD0iZmFs c2UiPicgKwogICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmsta2FuZC1sYWJlbCI+ S2FuZGlkYXRlbiBhbnNjaHJlaWJlbjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNw YW4gY2xhc3M9ImJrLWthbmQtcGZlaWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj7ilr48L3NwYW4+JyAr CiAgICAgICAgICAgICAgICAnPC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFz cz0iYmsta2FuZGlkYXRlbi1wYW5lbCB2ZXJzdGVja3QiIGRhdGEtc2NoaWNodC1sZXR0ZXI9Iicg KyBsZXR0ZXIgKyAnIj48L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgfQog ICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICAgICAgcmV0dXJuIGh0bWw7CiAgICB9CgogICAg dmFyIGtvZXJwZXIgPSAnPGRpdiBjbGFzcz0iYmstZGV0YWlsLWtvcGYgYmstZGV0YWlsLWtvcGYt JyArIHRhZ1N0ICsgJyI+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWRldGFpbC10aXRlbCI+ JyArIGVzY2FwZUhUTUwoZGF0dW1Gb3JtYXRERShkYXR1bSkpICsgJyDCtyAnICsgZXNjYXBlSFRN TCh3dCkgKyAnPC9kaXY+JyArCiAgICAgICAgJzxzcGFuIGNsYXNzPSJiay1iZWdyLXBpbGwgYmst YmVnci1waWxsLScgKyB0YWdTdCArICciPlN0YXR1czogJyArIHN0YXR1c0xhYmVsKHRhZ1N0KSAr ICc8L3NwYW4+JyArCiAgICAgICAgJzwvZGl2Pic7CiAgICBrb2VycGVyICs9ICc8ZGl2IGNsYXNz PSJiay1kZXRhaWwtc2NoaWNodGVuIj4nOwogICAga29lcnBlciArPSBzY2hpY2h0QmxvY2soJ0Yn LCAnRnLDvGgnKTsKICAgIGtvZXJwZXIgKz0gc2NoaWNodEJsb2NrKCdTJywgJ1Nww6R0Jyk7CiAg ICBrb2VycGVyICs9IHNjaGljaHRCbG9jaygnTicsICdOYWNodCcpOwogICAga29lcnBlciArPSAn PC9kaXY+JzsKCiAgICBpZiAodGFnU3QgPT09ICdyb3QnKSB7CiAgICAgICAgLy8gV2VsY2hlIFNj aGljaHQgaXN0IGFtIHVudGVyc3Rlbj8gRGllc2UgbmVobWVuIHdpciBhbHMgRGVmaXppdC0KICAg ICAgICAvLyBTY2hpY2h0IGZ1ZXIgZGllIFNhbW1lbC1NYWlsLiBXZW5uIG1laHJlcmUgZ2xlaWNo IHNjaGxlY2h0IHNpbmQsCiAgICAgICAgLy8gZ2V3aW5udCBkaWUgZnJ1ZWhlcmUgU2NoaWNodCAo RiB2b3IgUyB2b3IgTikuCiAgICAgICAgdmFyIGRlZml6aXRTY2hpY2h0ID0gKGYgPD0gcyAmJiBm IDw9IG4pID8gJ0YnIDogKHMgPD0gbikgPyAnUycgOiAnTic7CiAgICAgICAgdmFyIGRlZml6aXRT Y2hpY2h0TmFtZSA9IHsgRjogJ0Zyw7xoJywgUzogJ1Nww6R0JywgTjogJ05hY2h0JyB9W2RlZml6 aXRTY2hpY2h0XTsKICAgICAgICB2YXIgdmVyZlBlcnNvbmVuID0gdmVyZnVlZ2JhcmVQZXJzb25l bkZ1ZXIoZGF0dW0pOwoKICAgICAgICBrb2VycGVyICs9ICc8ZGl2IGNsYXNzPSJiay1kZXRhaWwt YXVzaGlsZmUiPicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iYmstZGV0YWlsLWF1c2hpbGZl LWtvcGYiPicgKwogICAgICAgICAgICAgICAgJzxzdHJvbmc+UG90ZW50aWVsbCB2ZXJmw7xnYmFy PC9zdHJvbmc+IGbDvHIgJyArIGRlZml6aXRTY2hpY2h0TmFtZSArICdzY2hpY2h0IOKAlCAnICsK ICAgICAgICAgICAgICAgICdQZXJzb25lbiBtaXQgPGNvZGU+ZGZyPC9jb2RlPiBvZGVyIDxjb2Rl PndmcjwvY29kZT4gYW0gJyArIGVzY2FwZUhUTUwoZGF0dW1Gb3JtYXRERShkYXR1bSkpICsKICAg ICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgaWYgKHZlcmZQZXJzb25lbi5sZW5ndGggPT09IDAp IHsKICAgICAgICAgICAga29lcnBlciArPSAnPGRpdiBjbGFzcz0iYmstZGV0YWlsLWxlZXIiPk5p ZW1hbmQgaGF0IGFuIGRpZXNlbSBUYWcgPGNvZGU+ZGZyPC9jb2RlPiBvZGVyIDxjb2RlPndmcjwv Y29kZT4gZWluZ2V0cmFnZW4uPC9kaXY+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBr b2VycGVyICs9ICc8ZGl2IGNsYXNzPSJiay1kZXRhaWwtYXVzaGlsZmUtdG9vbGJhciI+JyArCiAg ICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJiay1kZXRhaWwtYWxsZSI+PGlucHV0IHR5cGU9 ImNoZWNrYm94IiBpZD0iYmstYXVzaGlsZmUtYWxsZSIgY2hlY2tlZD4gQWxsZSBtYXJraWVyZW48 L2xhYmVsPicgKwogICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0i YnRuIGJ0bi1wcmltYWVyIGJ0bi1rbGVpbiIgaWQ9ImJrLWF1c2hpbGZlLW1haWwiIGRhdGEtZGVm aXppdD0iJyArIGRlZml6aXRTY2hpY2h0ICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJ01h aWwgYW4gbWFya2llcnRlIFBlcnNvbmVuIHZvcmJlcmVpdGVuJyArCiAgICAgICAgICAgICAgICAn PC9idXR0b24+JyArCiAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICBrb2VycGVyICs9 IGF1c2hpbGZlTGlzdGVIdG1sKHZlcmZQZXJzb25lbiwgZGF0dW0sIGRlZml6aXRTY2hpY2h0KTsK ICAgICAgICB9CiAgICAgICAga29lcnBlciArPSAnPC9kaXY+JzsKICAgIH0KCiAgICB2YXIgZnVz cyA9ICc8YnV0dG9uIGNsYXNzPSJidG4iIGlkPSJkbGctYWJicmVjaGVuIiB0eXBlPSJidXR0b24i PlNjaGxpZcOfZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImJ0 biBidG4tcHJpbWFlciIgaWQ9ImRsZy1zcHJpbmciIHR5cGU9ImJ1dHRvbiI+4oaSIEltIFBsYW4g enVtIFRhZyBzcHJpbmdlbjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignVGFnLURldGFpbDog JyArIGRhdHVtRm9ybWF0REUoZGF0dW0pLCBrb2VycGVyLCBmdXNzLCBudWxsKTsKICAgIC8vIFRh Zy1EZXRhaWwgYnJhdWNodCBtZWhyIFBsYXR6IGFscyBkYXMgU3RhbmRhcmQtNjIwcHgtTW9kYWw6 IGRyZWkKICAgIC8vIFNjaGljaHQtU3BhbHRlbiArIGdnZi4gYXVmZ2VrbGFwcHRlcyBLYW5kaWRh dGVuLVBhbmVsIGplIFNjaGljaHQKICAgIC8vIGVyemV1Z2VuIHNvbnN0IGhvcml6b250YWxlIFNj cm9sbGJhbGtlbiAoSXNzdWUgVVggMjAyNi0wNS0yNCkuCiAgICB2YXIgX21JbmhhbHQgPSBkb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9kYWwtb3ZlcmxheSAubW9kYWwtaW5oYWx0Jyk7CiAgICBp ZiAoX21JbmhhbHQpIF9tSW5oYWx0LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWluaGFsdC1ncm9zcycp OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RsZy1hYmJyZWNoZW4nKS5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIG1vZGFsU2NobGllc3Nlbik7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgnZGxnLXNwcmluZycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7 CiAgICAgICAgbW9kYWxTY2hsaWVzc2VuKCk7CiAgICAgICAgYW5zaWNodFdlY2hzZWxuKCdwbGFu dW5nJyk7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgenVEYXR1bVNjcm9sbGVuKGRh dHVtKTsgfSwgNTApOwogICAgfSk7CgogICAgLy8gUGhhc2UgNiAoMjAyNi0wNS0yMSk6IFBybyB1 bnRlcmJlc2V0enRlciBTY2hpY2h0IChpc3Q8MikgZ2lidCBlcyBlaW5lbgogICAgLy8gIkthbmRp ZGF0ZW4gYW5zY2hyZWliZW4iLUJ1dHRvbiBpbSBTY2hpY2h0LUJsb2NrLiBLbGljayBrbGFwcHQg ZWluZQogICAgLy8gTGlzdGUgREdMLXF1YWxpZml6aWVydGVyIFBlcnNvbmVuIGF1ZiAoZ2xlaWNo ZSBEaWVuc3RncnVwcGUsIGZyZWkgYW0KICAgIC8vIFRhZywga2VpbmUgR2VzYW10dmVyYW50d29y dGxpY2hlbikuICJBbnNjaHJlaWJlbiIgc3RhcnRldCBkaWUgTWFpbC0KICAgIC8vIFZvcmJlcmVp dHVuZyBtaXQgZGVuIGF1c2dld2FlaGx0ZW4gUGVyc29uZW4uCiAgICAvLwogICAgLy8gQXVkaXQt UGhhc2UgQi4zICgyMDI2LTA1LTIxKTogS2FuZGlkYXRlbiBwcm8gU2NoaWNodCBlaW5tYWwgaW0g Q2xvc3VyZQogICAgLy8gY2FjaGVuLCBkYW1pdCBBdWYtL1p1a2xhcHBlbiBpbnN0YW50IGlzdCB1 bmQgbmljaHQgamVkZXMgTWFsIGFsbGUKICAgIC8vIFBlcnNvbmVuIGl0ZXJpZXJ0IHdlcmRlbi4K ICAgIHZhciBrYW5kaWRhdGVuQ2FjaGUgPSB7fTsKICAgIGZ1bmN0aW9uIGthbmRpZGF0ZW5GdWVy KGxldHRlcikgewogICAgICAgIGlmICgha2FuZGlkYXRlbkNhY2hlW2xldHRlcl0pIHsKICAgICAg ICAgICAgdmFyIGdydXBwZSA9IGRpZW5zdGdydXBwZUZ1ZXJTY2hpY2h0KGRhdHVtLCBsZXR0ZXIp OwogICAgICAgICAgICBrYW5kaWRhdGVuQ2FjaGVbbGV0dGVyXSA9IHsKICAgICAgICAgICAgICAg IGdydXBwZTogZ3J1cHBlLAogICAgICAgICAgICAgICAgbGlzdGU6ICBiZXNldHp1bmdzS2FuZGlk YXRlbkVybWl0dGVsbihkYXR1bSwgbGV0dGVyLCBncnVwcGUpCiAgICAgICAgICAgIH07CiAgICAg ICAgfQogICAgICAgIHJldHVybiBrYW5kaWRhdGVuQ2FjaGVbbGV0dGVyXTsKICAgIH0KICAgIHZh ciBtb2RhbEtvZXJwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwta29lcnBlcicp OwogICAgaWYgKG1vZGFsS29lcnBlcikgewogICAgICAgIG1vZGFsS29lcnBlci5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KSB7CiAgICAgICAgICAgIHZhciB0b2dnbGUgPSBl di50YXJnZXQuY2xvc2VzdCgnLmJrLWthbmRpZGF0ZW4tdG9nZ2xlJyk7CiAgICAgICAgICAgIGlm ICh0b2dnbGUpIHsKICAgICAgICAgICAgICAgIHZhciBsZXR0ZXIgPSB0b2dnbGUuZ2V0QXR0cmli dXRlKCdkYXRhLXNjaGljaHQtbGV0dGVyJyk7CiAgICAgICAgICAgICAgICB2YXIgcGFuZWwgID0g bW9kYWxLb2VycGVyLnF1ZXJ5U2VsZWN0b3IoJy5iay1rYW5kaWRhdGVuLXBhbmVsW2RhdGEtc2No aWNodC1sZXR0ZXI9IicgKyBsZXR0ZXIgKyAnIl0nKTsKICAgICAgICAgICAgICAgIGlmICghcGFu ZWwpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciBsYWJlbEVsID0gdG9nZ2xlLnF1ZXJ5U2Vs ZWN0b3IoJy5iay1rYW5kLWxhYmVsJyk7CiAgICAgICAgICAgICAgICB2YXIgcGZlaWxFbCA9IHRv Z2dsZS5xdWVyeVNlbGVjdG9yKCcuYmsta2FuZC1wZmVpbCcpOwogICAgICAgICAgICAgICAgaWYg KHBhbmVsLmNsYXNzTGlzdC5jb250YWlucygndmVyc3RlY2t0JykpIHsKICAgICAgICAgICAgICAg ICAgICB2YXIgY2FjaGVkID0ga2FuZGlkYXRlbkZ1ZXIobGV0dGVyKTsKICAgICAgICAgICAgICAg ICAgICBwYW5lbC5pbm5lckhUTUwgPSBrYW5kaWRhdGVuUGFuZWxIdG1sKGNhY2hlZC5saXN0ZSwg ZGF0dW0sIGxldHRlciwgY2FjaGVkLmdydXBwZSk7CiAgICAgICAgICAgICAgICAgICAgcGFuZWwu Y2xhc3NMaXN0LnJlbW92ZSgndmVyc3RlY2t0Jyk7CiAgICAgICAgICAgICAgICAgICAgdG9nZ2xl LnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7CiAgICAgICAgICAgICAgICAg ICAgdG9nZ2xlLmNsYXNzTGlzdC5hZGQoJ2JrLWthbmRpZGF0ZW4tdG9nZ2xlLW9mZmVuJyk7CiAg ICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRWwpIGxhYmVsRWwudGV4dENvbnRlbnQgPSAnS2Fu ZGlkYXRlbiBhdXNibGVuZGVuJzsKICAgICAgICAgICAgICAgICAgICBpZiAocGZlaWxFbCkgcGZl aWxFbC50ZXh0Q29udGVudCA9ICfilrQnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgICAgICAgICBwYW5lbC5jbGFzc0xpc3QuYWRkKCd2ZXJzdGVja3QnKTsKICAgICAgICAg ICAgICAgICAgICBwYW5lbC5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgICAgICAgICB0b2dn bGUuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICAg ICAgICAgdG9nZ2xlLmNsYXNzTGlzdC5yZW1vdmUoJ2JrLWthbmRpZGF0ZW4tdG9nZ2xlLW9mZmVu Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsRWwpIGxhYmVsRWwudGV4dENvbnRlbnQg PSAnS2FuZGlkYXRlbiBhbnNjaHJlaWJlbic7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBmZWls RWwpIHBmZWlsRWwudGV4dENvbnRlbnQgPSAn4pa+JzsKICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgc2VuZEJ0biA9 IGV2LnRhcmdldC5jbG9zZXN0KCcuYmsta2FuZGlkYXRlbi1zZW5kZW4nKTsKICAgICAgICAgICAg aWYgKHNlbmRCdG4pIHsKICAgICAgICAgICAgICAgIHZhciBzbCA9IHNlbmRCdG4uZ2V0QXR0cmli dXRlKCdkYXRhLXNjaGljaHQtbGV0dGVyJyk7CiAgICAgICAgICAgICAgICB2YXIgcDIgPSBtb2Rh bEtvZXJwZXIucXVlcnlTZWxlY3RvcignLmJrLWthbmRpZGF0ZW4tcGFuZWxbZGF0YS1zY2hpY2h0 LWxldHRlcj0iJyArIHNsICsgJyJdJyk7CiAgICAgICAgICAgICAgICBpZiAoIXAyKSByZXR1cm47 CiAgICAgICAgICAgICAgICB2YXIgYXVzZ2V3YWVobHQgPSBbXTsKICAgICAgICAgICAgICAgIHAy LnF1ZXJ5U2VsZWN0b3JBbGwoJy5iay1rYW5kaWRhdGVuLWNoaycpLmZvckVhY2goZnVuY3Rpb24o YykgewogICAgICAgICAgICAgICAgICAgIGlmICghYy5jaGVja2VkKSByZXR1cm47CiAgICAgICAg ICAgICAgICAgICAgYXVzZ2V3YWVobHQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGlk OiAgICAgIGMuZ2V0QXR0cmlidXRlKCdkYXRhLXBpZCcpLAogICAgICAgICAgICAgICAgICAgICAg ICBlbWFpbDogICBjLmdldEF0dHJpYnV0ZSgnZGF0YS1lbWFpbCcpLAogICAgICAgICAgICAgICAg ICAgICAgICBuYW1lOiAgICBjLmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyksCiAgICAgICAgICAg ICAgICAgICAgICAgIHZvcm5hbWU6IGMuZ2V0QXR0cmlidXRlKCdkYXRhLXZvcm5hbWUnKSwKICAg ICAgICAgICAgICAgICAgICAgICAgdW1kaXM6ICAgYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdW1kaXMn KSA9PT0gJzEnCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAg ICAgICAgICAgICAgIGlmICghYXVzZ2V3YWVobHQubGVuZ3RoKSB7IHRvYXN0KCdLZWluZSBQZXJz b24gbWFya2llcnQnLCAnd2FybnVuZycpOyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHNhbW1l bEFuZnJhZ2VNYWlsT2VmZm5lbihhdXNnZXdhZWhsdCwgZGF0dW0sIHNsKTsKICAgICAgICAgICAg ICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8vIFNhbW1l bC1NYWlsIGF1cyBkZW0gQXVzaGlsZmUtQmxvY2s6IE1laHJmYWNoLUF1c3dhaGwgcGVyIENoZWNr Ym94ICsKICAgIC8vIGVpbiAiQWxsZSBtYXJraWVyZW4iLVRvZ2dsZSArIE1haWwtQnV0dG9uLiBF aW56ZWwtS2xpY2sgYXVmIGVpbmUKICAgIC8vIFplaWxlIHNldHp0IG51ciBkaWUgQ2hlY2tib3gg ZGllc2VyIFBlcnNvbiAoYWxsZSBhbmRlcmVuIGF1cykgdW5kCiAgICAvLyBvZWZmbmV0IHNvZm9y dCBkaWUgTWFpbCDigJQgZGFzIGlzdCBkZXIgc2NobmVsbGUgV2VnIGZ1ZXIgIm51ciBkaWVzZQog ICAgLy8gZWluZSBQZXJzb24gYW5zY2hyZWliZW4iLgogICAgdmFyIGF1c2hpbGZlRWwgPSBkb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCcuYmstZGV0YWlsLWF1c2hpbGZlJyk7CiAgICBpZiAoYXVzaGls ZmVFbCkgewogICAgICAgIHZhciBhbGxlQ2hrID0gYXVzaGlsZmVFbC5xdWVyeVNlbGVjdG9yKCcj YmstYXVzaGlsZmUtYWxsZScpOwogICAgICAgIHZhciBtYWlsQnRuID0gYXVzaGlsZmVFbC5xdWVy eVNlbGVjdG9yKCcjYmstYXVzaGlsZmUtbWFpbCcpOwogICAgICAgIGZ1bmN0aW9uIGdldFplaWxl bigpIHsgcmV0dXJuIGF1c2hpbGZlRWwucXVlcnlTZWxlY3RvckFsbCgnLmJrLWRldGFpbC1hdXNo aWxmZS16ZWlsZScpOyB9CiAgICAgICAgZnVuY3Rpb24gZ2V0Q2hlY2tib3hlbigpIHsgcmV0dXJu IGF1c2hpbGZlRWwucXVlcnlTZWxlY3RvckFsbCgnLmJrLWF1c2hpbGZlLWNoazpub3QoOmRpc2Fi bGVkKScpOyB9CiAgICAgICAgaWYgKGFsbGVDaGspIHsKICAgICAgICAgICAgYWxsZUNoay5hZGRF dmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGdldENo ZWNrYm94ZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgYy5jaGVja2VkID0gYWxsZUNoay5jaGVj a2VkOyB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIC8vIEtsaWNrIGF1ZiBk ZW4gcGVyc29lbmxpY2hlbiBCcmllZi1CdXR0b24gZWluZXIgWmVpbGU6IG51ciBkaWVzZQogICAg ICAgIC8vIFBlcnNvbiBtYXJraWVyZW4sIGFsbGUgYW5kZXJlbiBkZW1hcmtpZXJlbiwgTWFpbCB2 b3JiZXJlaXRlbi4KICAgICAgICBhdXNoaWxmZUVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg ZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgdmFyIGJ0biA9IGV2LnRhcmdldC5jbG9zZXN0KCdb ZGF0YS1ha3Rpb249ImJrLW1haWwtemVpbGUiXScpOwogICAgICAgICAgICBpZiAoIWJ0bikgcmV0 dXJuOwogICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB2YXIgcGlk ID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1waWQnKTsKICAgICAgICAgICAgZ2V0Q2hlY2tib3hl bigpLmZvckVhY2goZnVuY3Rpb24oYykgeyBjLmNoZWNrZWQgPSBjLmdldEF0dHJpYnV0ZSgnZGF0 YS1waWQnKSA9PT0gcGlkOyB9KTsKICAgICAgICAgICAgaWYgKGFsbGVDaGspIGFsbGVDaGsuY2hl Y2tlZCA9IGZhbHNlOwogICAgICAgICAgICBzYW1tZWxNYWlsVm9yYmVyZWl0ZW4oKTsKICAgICAg ICB9KTsKICAgICAgICBpZiAobWFpbEJ0bikgbWFpbEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGlj aycsIHNhbW1lbE1haWxWb3JiZXJlaXRlbik7CiAgICAgICAgZnVuY3Rpb24gc2FtbWVsTWFpbFZv cmJlcmVpdGVuKCkgewogICAgICAgICAgICB2YXIgYXVzZ2V3YWVobHQgPSBbXTsKICAgICAgICAg ICAgZ2V0Q2hlY2tib3hlbigpLmZvckVhY2goZnVuY3Rpb24oYykgewogICAgICAgICAgICAgICAg aWYgKCFjLmNoZWNrZWQpIHJldHVybjsKICAgICAgICAgICAgICAgIGF1c2dld2FlaGx0LnB1c2go ewogICAgICAgICAgICAgICAgICAgIGlkOiBjLmdldEF0dHJpYnV0ZSgnZGF0YS1waWQnKSwKICAg ICAgICAgICAgICAgICAgICBlbWFpbDogYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1haWwnKSwKICAg ICAgICAgICAgICAgICAgICBuYW1lOiBjLmdldEF0dHJpYnV0ZSgnZGF0YS1uYW1lJyksCiAgICAg ICAgICAgICAgICAgICAgdm9ybmFtZTogYy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdm9ybmFtZScpCiAg ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICghYXVzZ2V3 YWVobHQubGVuZ3RoKSB7IHRvYXN0KCdLZWluZSBQZXJzb24gbWFya2llcnQnLCAnd2FybnVuZycp OyByZXR1cm47IH0KICAgICAgICAgICAgdmFyIGRlZml6aXQgPSBtYWlsQnRuID8gbWFpbEJ0bi5n ZXRBdHRyaWJ1dGUoJ2RhdGEtZGVmaXppdCcpIDogJ0YnOwogICAgICAgICAgICBzYW1tZWxBbmZy YWdlTWFpbE9lZmZuZW4oYXVzZ2V3YWVobHQsIGRhdHVtLCBkZWZpeml0KTsKICAgICAgICB9CiAg ICB9Cn0KCi8vIFJlbmRlcnQgZGFzIEthbmRpZGF0ZW4tUGFuZWwgcHJvIHVudGVyYmVzZXR6dGUg U2NoaWNodCBpbSBUYWctRGV0YWlsLgovLyBMaXN0ZSBkZXIgREdMLXF1YWxpZml6aWVydGVuIFBl cnNvbmVuIG1pdCBDaGVja2JveGVuICsgQW5zY2hyZWliZW4tQnV0dG9uLgovLyBXZW5uIGRpZSBM aXN0ZSBsZWVyIGlzdCwgd2lyZCBlaW4gSGlud2Vpcy1UZXh0IGFuZ2V6ZWlndC4KZnVuY3Rpb24g a2FuZGlkYXRlblplaWxlSHRtbChwLCBjb2RlLCB1bWRpc3BvbmllcmJhcikgewogICAgdmFyIGhh dE1haWwgPSAhIXAuZW1haWw7CiAgICB2YXIgZGlzID0gaGF0TWFpbCA/ICcnIDogJyBkaXNhYmxl ZCB0aXRsZT0iS2VpbmUgRS1NYWlsLUFkcmVzc2UgaGludGVybGVndCInOwogICAgdmFyIGNscyA9 ICdiay1rYW5kaWRhdGVuLXplaWxlJyArIChoYXRNYWlsID8gJycgOiAnIGJrLWthbmRpZGF0ZW4t a2Vpbi1tYWlsJykgKwogICAgICAgICAgICAgICh1bWRpc3BvbmllcmJhciA/ICcgYmsta2FuZGlk YXRlbi16ZWlsZS11bWRpcycgOiAnJyk7CiAgICB2YXIgZnVsbE5hbWUgPSAoKHAudm9ybmFtZSB8 fCAnJykgKyAnICcgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgdmFyIG1ldGFQYXJ0cyA9 IFtdOwogICAgaWYgKHAuZnVua3Rpb24pIG1ldGFQYXJ0cy5wdXNoKGVzY2FwZUhUTUwocC5mdW5r dGlvbikpOwogICAgaWYgKHAuZ3J1cHBlKSAgIG1ldGFQYXJ0cy5wdXNoKCdHcnVwcGUgJyArIGVz Y2FwZUhUTUwocC5ncnVwcGUpKTsKICAgIHZhciBtZXRhSHRtbCA9IG1ldGFQYXJ0cy5qb2luKCcg wrcgJyk7CiAgICAvLyBDb2RlLUJhZGdlIG51ciBmdWVyIFVtZGlzLUJsb2NrIHNpbm52b2xsICh6 ZWlndCBiaXNoZXJpZ2UgV0RGL0ZCUC0KICAgIC8vIEZ1bmt0aW9uIGFuLCBkaWUgZHVyY2ggZGll IFVtc2V0enVuZyBuZXUgenUgYmVzZXR6ZW4gd2FlcmUpLiBCZWkKICAgIC8vIGZyZWllbiBQZXJz b25lbiBpc3QgZGVyIENvZGUgaW1tZXIgbGVlciDigJQgZGllIFNwYWx0ZSBoYXQgZGFubiBudXIK ICAgIC8vIGVpbiAi4oCUIiBnZXplaWd0IHVuZCBkYXMgTGF5b3V0IGdlc3ByZW5ndC4KICAgIHZh ciBjb2RlQmFkZ2UgPSAodW1kaXNwb25pZXJiYXIgJiYgY29kZSAmJiBjb2RlICE9PSAnJykKICAg ICAgICA/ICc8c3BhbiBjbGFzcz0iYmsta2FuZGlkYXRlbi1jb2RlIiB0aXRsZT0iQWt0dWVsbCBl aW5nZXBsYW50ZSBGdW5rdGlvbiDigJQgbXVzcyBiZWkgVW1zZXR6dW5nIG5ldSBiZXNldHp0IHdl cmRlbiI+JyArIGVzY2FwZUhUTUwoY29kZSkgKyAnPC9zcGFuPicKICAgICAgICA6ICcnOwogICAg dmFyIGtlaW5NYWlsSGlud2VpcyA9IGhhdE1haWwKICAgICAgICA/ICcnCiAgICAgICAgOiAnPHNw YW4gY2xhc3M9ImJrLWthbmRpZGF0ZW4td2FybiIgdGl0bGU9IktlaW5lIEUtTWFpbC1BZHJlc3Nl IGhpbnRlcmxlZ3Qg4oCUIFBlcnNvbiBrYW5uIG5pY2h0IGFuZ2VzY2hyaWViZW4gd2VyZGVuIj7i mqA8L3NwYW4+JzsKICAgIHJldHVybiAnPGxpIGNsYXNzPSInICsgY2xzICsgJyI+JyArCiAgICAg ICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImJrLWthbmRpZGF0ZW4tY2hrIicgKwog ICAgICAgICAgICAnIGRhdGEtcGlkPSInICsgZXNjYXBlQXR0cihTdHJpbmcocC5pZCkpICsgJyIn ICsKICAgICAgICAgICAgJyBkYXRhLWVtYWlsPSInICsgZXNjYXBlQXR0cihwLmVtYWlsIHx8ICcn KSArICciJyArCiAgICAgICAgICAgICcgZGF0YS1uYW1lPSInICsgZXNjYXBlQXR0cihwLm5hbWUg fHwgJycpICsgJyInICsKICAgICAgICAgICAgJyBkYXRhLXZvcm5hbWU9IicgKyBlc2NhcGVBdHRy KHAudm9ybmFtZSB8fCAnJykgKyAnIicgKwogICAgICAgICAgICAnIGRhdGEtdW1kaXM9IicgKyAo dW1kaXNwb25pZXJiYXIgPyAnMScgOiAnMCcpICsgJyInICsKICAgICAgICAgICAgKGhhdE1haWwg PyAnIGNoZWNrZWQnIDogJycpICsgZGlzICsgJz4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmst a2FuZGlkYXRlbi10ZXh0Ij4nICsKICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImJrLWthbmRpZGF0 ZW4tbmFtZSI+JyArIGVzY2FwZUhUTUwoZnVsbE5hbWUpICsga2Vpbk1haWxIaW53ZWlzICsgJzwv ZGl2PicgKwogICAgICAgICAgICAobWV0YUh0bWwgPyAnPGRpdiBjbGFzcz0iYmsta2FuZGlkYXRl bi1tZXRhIj4nICsgbWV0YUh0bWwgKyAnPC9kaXY+JyA6ICcnKSArCiAgICAgICAgJzwvZGl2Picg KwogICAgICAgIGNvZGVCYWRnZSArCiAgICAnPC9saT4nOwp9CgpmdW5jdGlvbiBrYW5kaWRhdGVu UGFuZWxIdG1sKGthbmRpZGF0ZW4sIGRhdHVtLCBzY2hpY2h0TGV0dGVyLCBkaWVuc3RncnVwcGUp IHsKICAgIHZhciBncnBJbmZvID0gZGllbnN0Z3J1cHBlID8gKCcgKERpZW5zdGdydXBwZSAnICsg ZXNjYXBlSFRNTChkaWVuc3RncnVwcGUpICsgJyknKSA6ICcgKGFsbGUgRGllbnN0Z3J1cHBlbiDi gJQgU2NoaWNodCBha3R1ZWxsIHVuYmVzZXR6dCknOwogICAgdmFyIGZyZWkgPSAoa2FuZGlkYXRl biAmJiBrYW5kaWRhdGVuLmZyZWkpIHx8IFtdOwogICAgdmFyIHVtZGlzID0gKGthbmRpZGF0ZW4g JiYga2FuZGlkYXRlbi51bWRpc3BvbmllcmJhcikgfHwgW107CiAgICBpZiAoZnJlaS5sZW5ndGgg KyB1bWRpcy5sZW5ndGggPT09IDApIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImJrLWth bmRpZGF0ZW4tbGVlciI+S2VpbmUgVkkzLURHTC1xdWFsaWZpemllcnRlbiBLYW5kaWRhdGVuIHZl cmbDvGdiYXInICsgZ3JwSW5mbyArICcuPC9kaXY+JzsKICAgIH0KICAgIHZhciBodG1sID0gJyc7 CiAgICBpZiAoZnJlaS5sZW5ndGgpIHsKICAgICAgICB2YXIgZnJlaVplaWxlbiA9IGZyZWkubWFw KGZ1bmN0aW9uKHApIHsKICAgICAgICAgICAgdmFyIGUgPSAoWi5wbGFudW5nLmVpbnRyYWVnZSB8 fCB7fSlbZGF0dW1dIHx8IHt9OwogICAgICAgICAgICB2YXIgdyA9IFN0cmluZyhlW1N0cmluZyhw LmlkKV0gfHwgJycpOwogICAgICAgICAgICByZXR1cm4ga2FuZGlkYXRlblplaWxlSHRtbChwLCB3 LCBmYWxzZSk7CiAgICAgICAgfSkuam9pbignJyk7CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFz cz0iYmsta2FuZGlkYXRlbi1oaW53ZWlzIj5GcmVpIGFtIFRhZyDigJQgVkkzLURHTC1xdWFsaWZp emllcnQnICsgZ3JwSW5mbyArICc6PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPHVsIGNsYXNz PSJiay1rYW5kaWRhdGVuLWxpc3RlIj4nICsgZnJlaVplaWxlbiArICc8L3VsPic7CiAgICB9CiAg ICBpZiAodW1kaXMubGVuZ3RoKSB7CiAgICAgICAgdmFyIHVtZGlzWmVpbGVuID0gdW1kaXMubWFw KGZ1bmN0aW9uKHUpIHsKICAgICAgICAgICAgcmV0dXJuIGthbmRpZGF0ZW5aZWlsZUh0bWwodS5w ZXJzb24sIHUub3JpZ2luYWxDb2RlLCB0cnVlKTsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAg ICBodG1sICs9ICc8ZGl2IGNsYXNzPSJiay1rYW5kaWRhdGVuLWhpbndlaXMgYmsta2FuZGlkYXRl bi1oaW53ZWlzLXVtZGlzIj4nICsKICAgICAgICAgICAgICAgICAgICAnQXVzIFdERi9GQlAgdW1k aXNwb25pZXJiYXIg4oCUIFZJMy1ER0wtcXVhbGlmaXppZXJ0LCBha3R1ZWxsIGluIGRlcnNlbGJl biBTY2hpY2h0IGVpbmdlcGxhbnQ6JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0iYmsta2FuZGlkYXRlbi13YXJudW5nIj4nICsKICAgICAg ICAgICAgICAgICAgICAnV2VubiBlaW5lIGRpZXNlciBQZXJzb25lbiBkaWUgREdMLUZ1bmt0aW9u IMO8YmVybmltbXQsIG11c3MgaWhyZSBiaXNoZXJpZ2UgRnVua3Rpb24gKFdERi9GQlApICcgKwog ICAgICAgICAgICAgICAgICAgICdkdXJjaCBlaW5lIGFuZGVyZSBQZXJzb24gZXJzZXR6dCB3ZXJk ZW4uIEZvbGdlLVBsYW51bmcgaW0gQXVnZSBiZWhhbHRlbi4nICsKICAgICAgICAgICAgICAgICc8 L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImJrLWthbmRpZGF0ZW4tbGlzdGUi PicgKyB1bWRpc1plaWxlbiArICc8L3VsPic7CiAgICB9CiAgICByZXR1cm4gaHRtbCArCiAgICAg ICAgJzxkaXYgY2xhc3M9ImJrLWthbmRpZGF0ZW4tYWt0aW9uZW4iPicgKwogICAgICAgICAgICAn PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWluIGJr LWthbmRpZGF0ZW4tc2VuZGVuIiBkYXRhLXNjaGljaHQtbGV0dGVyPSInICsgc2NoaWNodExldHRl ciArICciPicgKwogICAgICAgICAgICAgICAgJ01haWwgYW4gbWFya2llcnRlIEthbmRpZGF0ZW4n ICsKICAgICAgICAgICAgJzwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwp9CgpmdW5jdGlv biBhdXNoaWxmZUxpc3RlSHRtbChwZXJzb25lbiwgZGF0dW0sIGRlZml6aXRTY2hpY2h0KSB7CiAg ICB2YXIgaHRtbCA9ICc8dWwgY2xhc3M9ImJrLWRldGFpbC1hdXNoaWxmZS1saXN0ZSI+JzsKICAg IHBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZhciBoYXRNYWlsID0gISFw LmVtYWlsOwogICAgICAgIHZhciBwaWQgPSBTdHJpbmcocC5pZCk7CiAgICAgICAgdmFyIGRpcyA9 IGhhdE1haWwgPyAnJyA6ICcgZGlzYWJsZWQgdGl0bGU9IktlaW5lIEUtTWFpbC1BZHJlc3NlIGhp bnRlcmxlZ3QiJzsKICAgICAgICB2YXIgY2xzRXh0cmEgPSBoYXRNYWlsID8gJycgOiAnIGJrLWRl dGFpbC1hdXNoaWxmZS1rZWluLW1haWwnOwogICAgICAgIGh0bWwgKz0gJzxsaSBjbGFzcz0iYmst ZGV0YWlsLWF1c2hpbGZlLXplaWxlJyArIGNsc0V4dHJhICsgJyI+JyArCiAgICAgICAgICAgICc8 aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJiay1hdXNoaWxmZS1jaGsiIGRhdGEtcGlkPSIn ICsgZXNjYXBlQXR0cihwaWQpICsgJyInICsKICAgICAgICAgICAgICAgICcgZGF0YS1lbWFpbD0i JyArIGVzY2FwZUF0dHIocC5lbWFpbCB8fCAnJykgKyAnIicgKwogICAgICAgICAgICAgICAgJyBk YXRhLW5hbWU9IicgKyBlc2NhcGVBdHRyKHAubmFtZSkgKyAnIicgKwogICAgICAgICAgICAgICAg JyBkYXRhLXZvcm5hbWU9IicgKyBlc2NhcGVBdHRyKHAudm9ybmFtZSkgKyAnIicgKwogICAgICAg ICAgICAgICAgKGhhdE1haWwgPyAnIGNoZWNrZWQnIDogJycpICsgZGlzICsgJz4nICsKICAgICAg ICAgICAgJzxzcGFuIGNsYXNzPSJiay1kZXRhaWwtYXVzaGlsZmUtbmFtZSI+JyArIGVzY2FwZUhU TUwocC5uYW1lKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYmstZGV0 YWlsLWF1c2hpbGZlLWNvZGUiPicgKyBlc2NhcGVIVE1MKHAud2VydCkgKyAnPC9zcGFuPicgKwog ICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImJrLWRldGFpbC1hdXNoaWxmZS1ncnAiPicgKyBlc2Nh cGVIVE1MKHAuZ3J1cHBlKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8c3BhbiBjbGFzcz0i YmstZGV0YWlsLWF1c2hpbGZlLWtvbW0iPicgKyBlc2NhcGVIVE1MKHAua29tbWVudGFyKSArICc8 L3NwYW4+JyArCiAgICAgICAgICAgIChoYXRNYWlsCiAgICAgICAgICAgICAgICA/ICc8YnV0dG9u IHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2VrIGJ0bi1rbGVpbiBiay1kZXRhaWwtYXVz aGlsZmUtbWFpbGJ0biIgZGF0YS1ha3Rpb249ImJrLW1haWwtemVpbGUiIGRhdGEtcGlkPSInICsg ZXNjYXBlQXR0cihwaWQpICsgJyIgdGl0bGU9IlBlcnPDtm5saWNoZSBNYWlsIGFuICcgKyBlc2Nh cGVBdHRyKHAubmFtZSkgKyAnICgnICsgZXNjYXBlQXR0cihwLmVtYWlsKSArICcpIj5QZXJzw7Zu bGljaDwvYnV0dG9uPicKICAgICAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJiay1kZXRhaWwt YXVzaGlsZmUta2Vpbm1haWwiPuKAlCBrZWluZSBFLU1haWwg4oCUPC9zcGFuPicpICsKICAgICAg ICAgICAgJzwvbGk+JzsKICAgIH0pOwogICAgaHRtbCArPSAnPC91bD4nOwogICAgcmV0dXJuIGh0 bWw7Cn0KCi8vIFNhbW1lbC1BbmZyYWdlLU1haWw6IFdlbm4gbnVyIGVpbmUgUGVyc29uIGF1c2dl d2FlaGx0IGlzdCwgd2lyZCBkaWUKLy8gTWFpbCBtaXQgcGVyc29lbmxpY2hlciBBbnJlZGUgKFZv cm5hbWUpIHVuZCBUbzogYW4gZGllc2UgUGVyc29uIGFsbGVpbgovLyB2b3JiZXJlaXRldC4gQmVp IG1laHJlcmVuIEVtcGZhZW5nZXJuOiBUbzogbGVlciwgQkNDOiBhbGxlLCBBbnJlZGUKLy8gIkhh bGxvIHp1c2FtbWVuLCIuIFZvcmxhZ2UgYmVzZXR6dW5nc0FuZnJhZ2Ugd2lyZCBpbiBiZWlkZW4g RmFlbGxlbgovLyBnZW51dHp0LCBtaXQgZGVuc2VsYmVuIFZhcmlhYmxlbiB3aWUgZGllIGFsdGUg cGVyc29lbmxpY2hlIFZhcmlhbnRlLgpmdW5jdGlvbiBzYW1tZWxBbmZyYWdlTWFpbE9lZmZuZW4o cGVyc29uZW4sIGRhdHVtLCBzY2hpY2h0TGV0dGVyKSB7CiAgICBpZiAoIXBlcnNvbmVuIHx8ICFw ZXJzb25lbi5sZW5ndGgpIHJldHVybjsKICAgIHZhciBzY2hpY2h0TmFtZSA9IHsgRjogJ0Zyw7xo JywgUzogJ1Nww6R0JywgTjogJ05hY2h0JyB9W3NjaGljaHRMZXR0ZXJdIHx8IHNjaGljaHRMZXR0 ZXI7CiAgICB2YXIgaXN0ID0gZnVlaHJ1bmdzWmFlaGxlbihkYXR1bSwgc2NoaWNodExldHRlcik7 CiAgICB2YXIgc29sbCA9IDI7CiAgICB2YXIgZGVmaXppdCA9IE1hdGgubWF4KDAsIHNvbGwgLSBp c3QpOwogICAgdmFyIHd0ID0gWydTb25udGFnJywnTW9udGFnJywnRGllbnN0YWcnLCdNaXR0d29j aCcsJ0Rvbm5lcnN0YWcnLCdGcmVpdGFnJywnU2Ftc3RhZyddW25ldyBEYXRlKGRhdHVtICsgJ1Qw MDowMDowMCcpLmdldERheSgpXTsKCiAgICB2YXIgZWluemVsID0gcGVyc29uZW4ubGVuZ3RoID09 PSAxOwogICAgdmFyIGN0eCA9IHsKICAgICAgICBkYXR1bTogICAgICAgICBkYXR1bUZvcm1hdERF KGRhdHVtKSwKICAgICAgICB3b2NoZW50YWc6ICAgICB3dCwKICAgICAgICBzY2hpY2h0OiAgICAg ICBzY2hpY2h0TmFtZSwKICAgICAgICBzY2hpY2h0X2t1cno6ICBzY2hpY2h0TGV0dGVyLAogICAg ICAgIGlzdDogICAgICAgICAgIGlzdCwKICAgICAgICBzb2xsOiAgICAgICAgICBzb2xsLAogICAg ICAgIGRlZml6aXQ6ICAgICAgIGRlZml6aXQsCiAgICAgICAgYWJzZW5kZXJfbmFtZTogYWJzZW5k ZXJOYW1lRXJtaXR0ZWxuKCksCiAgICAgICAgLy8gU2FtbWVsLU1haWw6IGxlZXJlciBWb3JuYW1l IHd1ZXJkZSAiSGFsbG8gLCIgZXJnZWJlbi4gInp1c2FtbWVuIgogICAgICAgIC8vIGZ1ZWxsdCBk aWUgQW5yZWRlIHNpbm52b2xsIGZ1ZXIgTWVocmZhY2gtRW1wZmFlbmdlci4KICAgICAgICBlbXBm YWVuZ2VyX3Zvcm5hbWU6IGVpbnplbCA/IChwZXJzb25lblswXS52b3JuYW1lIHx8IHBlcnNvbmVu WzBdLm5hbWUpIDogJ3p1c2FtbWVuJywKICAgICAgICBlbXBmYWVuZ2VyX25hbWU6ICAgIGVpbnpl bCA/IHBlcnNvbmVuWzBdLm5hbWUgOiAnJwogICAgfTsKCiAgICAvLyBad2VpIGdldHJlbm50ZSBW b3JsYWdlbiBqZSBuYWNoIFBlcnNvbmVuemFobDogJ2Jlc2V0enVuZ3NBbmZyYWdlX2VpbnplbG4n CiAgICAvLyBiZWkgZ2VuYXUgZWluZW0gRW1wZmFlbmdlciAoRHUtU2luZ3VsYXIpLCAnYmVzZXR6 dW5nc0FuZnJhZ2UnIGJlaQogICAgLy8gbWVocmVyZW4gKFBsdXJhbCAvICJIYWxsbyB6dXNhbW1l biIpLiBCZWlkZSBzaW5kIGltIEFkbWluIHVudGVyCiAgICAvLyBFLU1haWwtVm9ybGFnZW4gZnJl aSBlZGl0aWVyYmFyOyBhdXMgZGVtIFRvZ2dsZSAnZW1wZmFlbmdlckltQmNjJyBkZXIKICAgIC8v IGpld2VpbGlnZW4gVm9ybGFnZSB3aXJkIGFiZ2VsZWl0ZXQsIG9iIGRpZSBBZHJlc3NlbiBpbnMg QW4tIG9kZXIKICAgIC8vIEJDQy1GZWxkIHdhbmRlcm4uCiAgICB2YXIgdm9ybGFnZW5LZXkgPSBl aW56ZWwgPyAnYmVzZXR6dW5nc0FuZnJhZ2VfZWluemVsbicgOiAnYmVzZXR6dW5nc0FuZnJhZ2Un OwoKICAgIC8vIEZhbGxiYWNrLUJvZHkgKGVpbmdlYmF1dGUgRHUtRm9ybSksIGZhbGxzIGRpZSBW b3JsYWdlIG5pY2h0IGdlem9nZW4KICAgIC8vIHdlcmRlbiBrYW5uIOKAlCB3aXJkIGdsZWljaCBh dWNoIGZ1ZXIgZGVuIGZlaGxlbmRlbi1Wb3JsYWdlLVBmYWQgZ2VudXR6dC4KICAgIGZ1bmN0aW9u IGZhbGxiYWNrQmF1ZW4oKSB7CiAgICAgICAgdmFyIGJldHJlZmZGYiA9ICdBdXNoaWxmZSAnICsg c2NoaWNodE5hbWUgKyAnc2NoaWNodCAnICsgZGF0dW1Gb3JtYXRERShkYXR1bSk7CiAgICAgICAg dmFyIGFucmVkZSA9IGVpbnplbAogICAgICAgICAgICA/ICdIYWxsbycgKyAocGVyc29uZW5bMF0u dm9ybmFtZSA/ICcgJyArIHBlcnNvbmVuWzBdLnZvcm5hbWUgOiAnJykgKyAnLCcKICAgICAgICAg ICAgOiAnSGFsbG8genVzYW1tZW4sJzsKICAgICAgICB2YXIgdGV4dEZiID0gYW5yZWRlICsgJ1xu XG4nICsKICAgICAgICAgICAgJ2bDvHIgZGllICcgKyBzY2hpY2h0TmFtZSArICdzY2hpY2h0IGFt ICcgKyBkYXR1bUZvcm1hdERFKGRhdHVtKSArCiAgICAgICAgICAgICcgKCcgKyB3dCArICcpIHNp bmQgYWt0dWVsbCBudXIgJyArIGlzdCArICcgdm9uICcgKyBzb2xsICsKICAgICAgICAgICAgJyBG w7xocnVuZ3NrcsOkZnRlbiBlaW5nZXBsYW50LiAnICsKICAgICAgICAgICAgKGVpbnplbAogICAg ICAgICAgICAgICAgPyAnV8O8cmRlc3QgRHUgYW4gZGVtIFRhZyBhdXNoZWxmZW4ga8O2bm5lbj8n CiAgICAgICAgICAgICAgICA6ICdLw7ZubnRlIGplbWFuZCB2b24gRXVjaCBhbiBkZW0gVGFnIGF1 c2hlbGZlbj8nKSArCiAgICAgICAgICAgICdcblxuVmllbGUgR3LDvMOfZVxuJyArIGFic2VuZGVy TmFtZUVybWl0dGVsbigpOwogICAgICAgIHJldHVybiB7IGJldHJlZmY6IGJldHJlZmZGYiwgdGV4 dDogdGV4dEZiIH07CiAgICB9CgogICAgdmFyIGJldHJlZmYsIHRleHQ7CiAgICB2YXIgdm9ybGFn ZSA9IG51bGw7CiAgICBpZiAoYmVzZXR6dW5nSG9va3MuZW1haWxWb3JsYWdlbkhvbGVuICYmIGJl c2V0enVuZ0hvb2tzLmVtYWlsVm9ybGFnZUJlZnVlbGxlbikgewogICAgICAgIHZhciBhbGxlVm9y bGFnZW4gPSBiZXNldHp1bmdIb29rcy5lbWFpbFZvcmxhZ2VuSG9sZW4oKSB8fCB7fTsKICAgICAg ICB2b3JsYWdlID0gYWxsZVZvcmxhZ2VuW3ZvcmxhZ2VuS2V5XSB8fCBudWxsOwogICAgICAgIC8v IEJhY2t3YXJkcy1Db21wYXQ6IHdlbm4gZGllIEVpbnplbG4tVmFyaWFudGUgaW4gZGVyIEluc3Rh bGxhdGlvbgogICAgICAgIC8vIG5vY2ggZmVobHQgKEFkbWluIGhhdCBzaWUgei5CLiBuaWUgZ2Vw ZmxlZ3QpLCBmYWVsbHQgZGVyIENvZGUgYXVmCiAgICAgICAgLy8gZGllIFNhbW1lbC1Wb3JsYWdl IHp1cnVlY2sg4oCUIGJlc3NlciBhbHMgbGVlcmUgTWFpbC4KICAgICAgICBpZiAoIXZvcmxhZ2Ug JiYgZWluemVsKSB2b3JsYWdlID0gYWxsZVZvcmxhZ2VuWydiZXNldHp1bmdzQW5mcmFnZSddIHx8 IG51bGw7CiAgICB9CiAgICBpZiAodm9ybGFnZSAmJiAodm9ybGFnZS5iZXRyZWZmIHx8IHZvcmxh Z2UudGV4dCkpIHsKICAgICAgICBiZXRyZWZmID0gYmVzZXR6dW5nSG9va3MuZW1haWxWb3JsYWdl QmVmdWVsbGVuKHZvcmxhZ2UuYmV0cmVmZiB8fCAnJywgY3R4KTsKICAgICAgICB0ZXh0ICAgID0g YmVzZXR6dW5nSG9va3MuZW1haWxWb3JsYWdlQmVmdWVsbGVuKHZvcmxhZ2UudGV4dCAgICB8fCAn JywgY3R4KTsKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGZiID0gZmFsbGJhY2tCYXVlbigpOwog ICAgICAgIGJldHJlZmYgPSBmYi5iZXRyZWZmOwogICAgICAgIHRleHQgICAgPSBmYi50ZXh0Owog ICAgfQoKICAgIC8vIFdlbm4gdW1kaXNwb25pZXJiYXJlIFBlcnNvbmVuICg9IGFrdHVlbGwgaW4g V0RGL0ZCUCBkZXIgZ2xlaWNoZW4KICAgIC8vIFNjaGljaHQgZWluZ2VwbGFudCkgdW50ZXIgZGVu IEVtcGZhZW5nZXJuIHNpbmQsIGVpbmVuIEhpbndlaXMgYW5zCiAgICAvLyBNYWlsLUVuZGUgYW5o YWVuZ2VuIOKAlCBkYW1pdCBkaWUgYW5nZXNjaHJpZWJlbmUgUGVyc29uIHdlaXNzLCBkYXNzCiAg ICAvLyBzaWUgbmljaHQgImVpbmZhY2ggc28iIGVpbnNwcmluZ2VuIGthbm4sIHNvbmRlcm4gaWhy ZSBiaXNoZXJpZ2UKICAgIC8vIEZ1bmt0aW9uIG5ldSBiZXNldHp0IHdlcmRlbiBtdXNzLgogICAg dmFyIGhhdFVtZGlzID0gcGVyc29uZW4uc29tZShmdW5jdGlvbihwKSB7IHJldHVybiBwLnVtZGlz OyB9KTsKICAgIGlmIChoYXRVbWRpcykgewogICAgICAgIHRleHQgKz0gJ1xuXG5IaW53ZWlzOiBF aW5pZ2UgZGVyIGFuZ2VzY2hyaWViZW5lbiBQZXJzb25lbiBzaW5kIGFrdHVlbGwgJyArCiAgICAg ICAgICAgICdhbHMgV0RGIG9kZXIgRkJQIGluIGRlcnNlbGJlbiBTY2hpY2h0IGVpbmdlcGxhbnQu IFdlciDDvGJlcm5pbW10LCAnICsKICAgICAgICAgICAgJ3NvbGx0ZSBtaXIga3VyeiBCZXNjaGVp ZCBnZWJlbiDigJQgZGllIGJpc2hlcmlnZSBGdW5rdGlvbiBtdXNzIGRhbm4gJyArCiAgICAgICAg ICAgICdkdXJjaCBlaW5lIGFuZGVyZSBQZXJzb24gYmVzZXR6dCB3ZXJkZW4uJzsKICAgIH0KCiAg ICAvLyBNYWlsdG8tQmF1OiBFbXBmYWVuZ2VyLUZlbGQgKEFuIHZzLiBCQ0MpIHdpcmQgYXVzIGRl bSBWb3JsYWdlbi0KICAgIC8vIFRvZ2dsZSAnZW1wZmFlbmdlckltQmNjJyBiZXN0aW1tdC4gRGVm YXVsdC1Mb2dpayB3ZW5uIGRpZSBWb3JsYWdlCiAgICAvLyBkZW4gVG9nZ2xlIG5pY2h0IHNldHp0 OiBFaW56ZWwtQWRyZXNzYXQgLT4gQW4gKEJDQyBpc3QgYmVpIDEgUGVyc29uCiAgICAvLyBzaW5u bG9zKSwgU2FtbWVsIC0+IEJDQyAoRGF0ZW5zY2h1dHopLgogICAgdmFyIGVtYWlscyA9IHBlcnNv bmVuLm1hcChmdW5jdGlvbihwKSB7IHJldHVybiBwLmVtYWlsOyB9KS5maWx0ZXIoQm9vbGVhbik7 CiAgICB2YXIgYmNjVm9yZ2FiZSA9IHZvcmxhZ2UgJiYgdm9ybGFnZS5lbXBmYWVuZ2VySW1CY2Mg IT0gbnVsbAogICAgICAgID8gISF2b3JsYWdlLmVtcGZhZW5nZXJJbUJjYwogICAgICAgIDogIWVp bnplbDsgICAvLyBGYWxsYmFjayBvaG5lIFZvcmxhZ2U6IEVpbnplbD1BbiwgU2FtbWVsPUJDQwog ICAgdmFyIHVybDsKICAgIGlmIChlbWFpbHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdXJsID0g J21haWx0bzonOwogICAgfSBlbHNlIGlmIChiY2NWb3JnYWJlKSB7CiAgICAgICAgdXJsID0gJ21h aWx0bzo/YmNjPScgKyBlbmNvZGVVUklDb21wb25lbnQoZW1haWxzLmpvaW4oJywnKSk7CiAgICB9 IGVsc2UgewogICAgICAgIHVybCA9ICdtYWlsdG86JyArIGVuY29kZVVSSUNvbXBvbmVudChlbWFp bHMuam9pbignLCcpKTsKICAgIH0KICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA+PSAwID8g JyYnIDogJz8nKSArCiAgICAgICAgJ3N1YmplY3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudChiZXRy ZWZmKSArCiAgICAgICAgJyZib2R5PScgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCk7CiAgICB3 aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDsKfQoK ### FILE: js/core_api.js | 1087 Ly8gPT09IGNvcmUvYXBpLmpzID09PQovLyBGZXRjaC1XcmFwcGVyIGZ1ZXIgZGllIFZJMy1KU09O LUFQSS4KCmV4cG9ydCBmdW5jdGlvbiBhcGkocGZhZCwgb3B0KSB7CiAgICByZXR1cm4gZmV0Y2go cGZhZCwgb3B0IHx8IHt9KS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICBpZiAoIXIub2spIHRo cm93IG5ldyBFcnJvcignSFRUUCAnICsgci5zdGF0dXMpOwogICAgICAgIHJldHVybiByLmpzb24o KTsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gYXBpUG9zdChwZmFkLCBkYXRlbikgewogICAg cmV0dXJuIGFwaShwZmFkLCB7IG1ldGhvZDogJ1BPU1QnLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5 cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0ZW4pIH0p Owp9CgpleHBvcnQgZnVuY3Rpb24gYXBpUHV0KHBmYWQsIGRhdGVuKSB7CiAgICByZXR1cm4gYXBp KHBmYWQsIHsgbWV0aG9kOiAnUFVUJywgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxp Y2F0aW9uL2pzb24nIH0sIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGVuKSB9KTsKfQoKZXhwb3J0 IGZ1bmN0aW9uIGFwaURlbGV0ZShwZmFkKSB7CiAgICByZXR1cm4gYXBpKHBmYWQsIHsgbWV0aG9k OiAnREVMRVRFJyB9KTsKfQoKLy8gU3RhdHVzICsgQm9keSB6dXJ1ZWNrZ2ViZW4gc3RhdHQgenUg d2VyZmVuIOKAlCBmdWVyIEVuZHBvaW50cywgZGVyZW4KLy8gTm9uLTJ4eC1BbnR3b3J0ZW4gKHou Qi4gNDIzID0gbG9ja2VkLCA0MDkgPSBLb25mbGlrdCkgRGF0ZW4gZW50aGFsdGVuLAovLyBkaWUg ZGVyIEF1ZnJ1ZmVyIGJyYXVjaHQuCmV4cG9ydCBmdW5jdGlvbiBhcGlTYWZlKHBmYWQsIG9wdCkg ewogICAgcmV0dXJuIGZldGNoKHBmYWQsIG9wdCB8fCB7fSkudGhlbihmdW5jdGlvbihyKSB7CiAg ICAgICAgcmV0dXJuIHIuanNvbigpLnRoZW4oZnVuY3Rpb24oYm9keSkgeyByZXR1cm4geyBzdGF0 dXM6IHIuc3RhdHVzLCBib2R5OiBib2R5IH07IH0pCiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlv bigpIHsgcmV0dXJuIHsgc3RhdHVzOiByLnN0YXR1cywgYm9keTogbnVsbCB9OyB9KTsKICAgIH0p Owp9Cg== ### FILE: js/core_datenLaden.js | 7203 Ly8gPT09IGNvcmUvZGF0ZW5MYWRlbi5qcyA9PT0KLy8gUGVyc29uZW4tQXVmYmF1LCBBZG1pbi1M aXN0ZW4tTm9ybWFsaXNpZXJ1bmcsICJIZXV0ZSItQmxvY2ssCi8vIEhlYXJ0YmVhdC1Xb3JrZXIg KyBJbmFrdGl2aXRhZXRzLVRpbWVyLgovLwovLyBkYXRlbkxhZGVuKCkgdW5kIGFkbWluSG90UmVs b2FkKCkgYmxlaWJlbiB6dW5hZWNoc3QgaW4gYXBwLmpzLCB3ZWlsCi8vIHNpZSBDcm9zcy1Nb2R1 bC1GdW5rdGlvbmVuICh0YWdlRXJ6ZXVnZW4vdGFnSW5mb3NCZXJlY2huZW4gYXVzCi8vIGdyaWQv cmVuZGVyLCBiZXplaWNobnVuZ2VuQW53ZW5kZW4vYWRtaW5SZW5kZXJuIGF1cyBhZG1pbi9hZG1p bikKLy8gcnVmZW4sIGRpZSBlcnN0IGluIHNwYWV0ZXJlbiBQaGFzZW4gZXh0cmFoaWVydCB3ZXJk ZW4uCi8vCi8vIEhvb2tzOiBoZWFydGJlYXRTdGFydGVuIG11c3MgYWRtaW5Ib3RSZWxvYWQgdHJp Z2dlcm4sIHdlbm4gZGVyCi8vIFdvcmtlciBlaW5lICdhZG1pbi1nZWFlbmRlcnQnLU5hY2hyaWNo dCBlcmhhZWx0LiBXaXJkIHVlYmVyCi8vIGRhdGVuTGFkZW5Ib29rcyByZWluZ2VoYWVuZ3QuCgpp bXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKCi8vID09PT09IEhvb2tzID09PT09 CgpleHBvcnQgdmFyIGRhdGVuTGFkZW5Ib29rcyA9IHsKICAgIGFkbWluSG90UmVsb2FkOiBudWxs LAogICAgcGxhbnVuZ0hvdFJlbG9hZDogbnVsbAp9OwoKLy8gPT09PT0gQWRtaW4tTGlzdGVuLU5v cm1hbGlzaWVydW5nID09PT09CgovLyBMaXN0ZS1GZWxkZXIgaW4gYWRtaW4uanNvbiwgZGllIHVu dGVyIFBTIDUuMSBkdXJjaCBDb252ZXJ0RnJvbS0vQ29udmVydFRvLUpzb24KLy8gdmVyc2VoZW50 bGljaCBhdWYgRWluemVsLU9iamVrdCBlbnRwYWNrdCB3ZXJkZW4ga29lbm5lbi4gQmVpbSBMYWRl biBpbiBBcnJheQovLyB6dXJ1ZWNrZnVlaHJlbiwgZGFtaXQgZm9yRWFjaC9maWx0ZXIgbmljaHQg YXVmIGRpZSBOYXNlIGZhbGxlbi4KZXhwb3J0IHZhciBBRE1JTl9MSVNUX0ZFTERFUiA9IFsnZmVp ZXJ0YWdlJywnZmVyaWVuJywnc29uZGVydGVybWluZScsJ3NjaGljaHRjb2RlcycsJ2dydXBwZW4n LCdzdGFuZG9ydGUnLCdmdW5rdGlvbmVuJywnZGllbnN0Z3JhZGUnLCdzdXBlclVzZXInLCdmYWNo YXVmc2ljaHQnLCdkaXJla3Rpb25zbGVpdHVuZycsJ2Z1ZWhydW5nc3N0ZWxsZScsJ3NjaGljaHRm b2xnZW4nLCdyb2xsZW4nLCdtaWtyb3RlYW1zJywnc3RhdGlzdGlrS2FjaGVsbicsJ3N0YXRpc3Rp a0xheW91dCddOwoKZXhwb3J0IGZ1bmN0aW9uIGFkbWluTGlzdGVuTm9ybWFsaXNpZXJlbihhZG0p IHsKICAgIGlmICghYWRtIHx8IHR5cGVvZiBhZG0gIT09ICdvYmplY3QnKSByZXR1cm4gYWRtOwog ICAgQURNSU5fTElTVF9GRUxERVIuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgdmFyIHYg PSBhZG1ba107CiAgICAgICAgaWYgKHYgPT0gbnVsbCkgeyBhZG1ba10gPSBbXTsgcmV0dXJuOyB9 CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHJldHVybjsKICAgICAgICAvLyBQUy1FaW56 ZWwtT2JqZWt0IC0+IGluIGVpbmVsZW1lbnRpZ2VzIEFycmF5IHBhY2tlbgogICAgICAgIGlmICh0 eXBlb2YgdiA9PT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgLy8gU29uZGVyZmFsbDogT2JqZWt0 IG1pdCBudW1lcmlzY2hlbiBLZXlzICgwLDEsMiwuLi4pIC0+IFdlcnRlIHNhbW1lbG4KICAgICAg ICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2KTsKICAgICAgICAgICAgdmFyIG51bWVyaXNj aCA9IGtleXMubGVuZ3RoID4gMCAmJiBrZXlzLmV2ZXJ5KGZ1bmN0aW9uKGspIHsgcmV0dXJuIC9e XGQrJC8udGVzdChrKTsgfSk7CiAgICAgICAgICAgIGFkbVtrXSA9IG51bWVyaXNjaAogICAgICAg ICAgICAgICAgPyBrZXlzLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gcGFyc2VJbnQoYSwxMCkt cGFyc2VJbnQoYiwxMCk7fSkubWFwKGZ1bmN0aW9uKGkpeyByZXR1cm4gdltpXTsgfSkKICAgICAg ICAgICAgICAgIDogW3ZdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFkbVtrXSA9IFtd OwogICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIGFkbTsKfQoKLy8gPT09PT0gUGVyc29uZW4t QXVmYmF1ID09PT09CgovLyBTb3J0aWVydCBaLnBlcnNvbmVuIHByaW1hZXIgbmFjaCBHcnVwcGVu LVJlaWhlbmZvbGdlIGF1cyBhZG1pbi5ncnVwcGVuLAovLyBzZWt1bmRhZXIgbmFjaCBwb3NpdGlv biBpbm5lcmhhbGIgZGVyIEdydXBwZS4gU29uc3Qgd2VyZGVuIEdydXBwZW4gaW4gZGVyCi8vIFBs YW50YWZlbCBtZWhyZmFjaCBnZXRyZW5udCwgd2VubiBkaWUgcG9zaXRpb24tUmVpaGVuZm9sZ2Ug c2llIHplcnJlaXNzdC4KZXhwb3J0IGZ1bmN0aW9uIHBlcnNvbmVuTmV1QXVmYmF1ZW4oKSB7CiAg ICB2YXIgZ3J1cHBlblJhbmcgPSB7fTsKICAgIChaLmFkbWluICYmIFouYWRtaW4uZ3J1cHBlbiB8 fCBbXSkuZm9yRWFjaChmdW5jdGlvbihnLCBpKSB7CiAgICAgICAgaWYgKGcgJiYgZy5uYW1lKSBn cnVwcGVuUmFuZ1tnLm5hbWVdID0gaTsKICAgIH0pOwogICAgLy8gRnVua3Rpb25zLVdoaXRlbGlz dCBmdWVyIGRpZSBQbGFudW5nc2Fuc2ljaHQ6IEZ1bmt0aW9uZW4sIGRpZSBpbQogICAgLy8gQWRt aW4gYXVmICJJbiBQbGFudW5nIHNpY2h0YmFyID0gbmVpbiIgZ2VzZXR6dCBzaW5kLCB3ZXJkZW4g YXVzCiAgICAvLyBkZXIgUGxhbnRhZmVsIGF1c2dlYmxlbmRldCAoei5CLiBEaWVuc3RzdGVsbGVu bGVpdHVuZykuIFBlcnNvbmVuCiAgICAvLyBtaXQgc29sY2hlciBGdW5rdGlvbiBibGVpYmVuIGlu IGRlciBQZXJzb25hbHZlcndhbHR1bmcgYmVzdGVoZW4uCiAgICB2YXIgdmVyc3RlY2t0ZUZ1bmt0 aW9uZW4gPSB7fTsKICAgIChaLmFkbWluICYmIFouYWRtaW4uZnVua3Rpb25lbiB8fCBbXSkuZm9y RWFjaChmdW5jdGlvbihmKSB7CiAgICAgICAgaWYgKGYgJiYgZi5jb2RlICYmIGYuaW5QbGFudW5n ID09PSBmYWxzZSkgdmVyc3RlY2t0ZUZ1bmt0aW9uZW5bZi5jb2RlXSA9IHRydWU7CiAgICB9KTsK ICAgIC8vIEdsZWljaGUgTG9naWsgZnVlciBEaWVuc3RncnVwcGVuOiBncnVwcGUuaW5QbGFudW5n ID09PSBmYWxzZSBibGVuZGV0CiAgICAvLyBkaWUga29tcGxldHRlIEdydXBwZSAoYWxsZSBQZXJz b25lbiBkYXJpbikgYXVzIFBsYW51bmcsIFdvY2hlbnBsYW4KICAgIC8vIHVuZCBQZXJzb2VubGlj aGVtIFBsYW4gYXVzLiBQZXJzb25lbiBibGVpYmVuIHdlaXRlciBpbiBkZXIgUGVyc29uYWwtCiAg ICAvLyB2ZXJ3YWx0dW5nIHBmbGVnYmFyIHVuZCB0YXVjaGVuIGluIGRlciBTdGF0aXN0aWsgYXVm LiBGZWhsdCBkYXMgRmVsZAogICAgLy8gKEFsdGRhdGVuKSwgd2lyZCBkaWUgR3J1cHBlIHdpZSBn ZXdvaG50IGFuZ2V6ZWlndC4KICAgIHZhciB2ZXJzdGVja3RlR3J1cHBlbiA9IHt9OwogICAgKFou YWRtaW4gJiYgWi5hZG1pbi5ncnVwcGVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGcpIHsKICAg ICAgICBpZiAoZyAmJiBnLm5hbWUgJiYgZy5pblBsYW51bmcgPT09IGZhbHNlKSB2ZXJzdGVja3Rl R3J1cHBlbltnLm5hbWVdID0gdHJ1ZTsKICAgIH0pOwogICAgWi5wZXJzb25lbiA9ICgoWi5wbGFu dW5nICYmIFoucGxhbnVuZy5wZXJzb25lbikgfHwgW10pCiAgICAgICAgLmZpbHRlcihmdW5jdGlv bihwKSB7CiAgICAgICAgICAgIGlmICghKHAuYWt0aXYgfHwgWi51bWdlc2V0enRlRWluYmxlbmRl bikpIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgLy8gUHJvLVBlcnNvbiBhdXMgZGVyIFBsYW51 bmcgYXVzZ2VibGVuZGV0IChhbmFsb2cgR3J1cHBlbi9GdW5rdGlvbmVuCiAgICAgICAgICAgIC8v IGluUGxhbnVuZykuIEdyZWlmdCB1bmFiaGFlbmdpZyB2b20gYWt0aXYvdW1nZXNldHp0LVN0YXR1 cy4KICAgICAgICAgICAgaWYgKHAuaW5QbGFudW5nID09PSBmYWxzZSAmJiAhWi51bWdlc2V0enRl RWluYmxlbmRlbikgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICBpZiAocC5mdW5rdGlvbiAmJiB2 ZXJzdGVja3RlRnVua3Rpb25lbltwLmZ1bmt0aW9uXSkgcmV0dXJuIGZhbHNlOwogICAgICAgICAg ICBpZiAocC5ncnVwcGUgICAmJiB2ZXJzdGVja3RlR3J1cHBlbltwLmdydXBwZV0pICAgICByZXR1 cm4gZmFsc2U7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0pCiAgICAgICAgLnNv cnQoZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICB2YXIgckEgPSAoYS5ncnVwcGUgaW4gZ3J1 cHBlblJhbmcpID8gZ3J1cHBlblJhbmdbYS5ncnVwcGVdIDogOTk5OwogICAgICAgICAgICB2YXIg ckIgPSAoYi5ncnVwcGUgaW4gZ3J1cHBlblJhbmcpID8gZ3J1cHBlblJhbmdbYi5ncnVwcGVdIDog OTk5OwogICAgICAgICAgICBpZiAockEgIT09IHJCKSByZXR1cm4gckEgLSByQjsKICAgICAgICAg ICAgcmV0dXJuIChhLnBvc2l0aW9uIHx8IDk5OSkgLSAoYi5wb3NpdGlvbiB8fCA5OTkpOwogICAg ICAgIH0pOwp9CgovLyA9PT09PSBIZXV0ZS1CbG9jayAobGlua2UgS29wZnNwYWx0ZSkgPT09PT0K Ci8vIERhdHVtL1dvY2hlbnRhZyBpbiBkZXIgbGlua2VuIEtvcGZzcGFsdGUgKHVlYmVyICJTdGFl cmtlIERHTCBpbiBWSSAzIikuCmV4cG9ydCBmdW5jdGlvbiBoZXV0ZUJsb2NrQWt0dWFsaXNpZXJl bigpIHsKICAgIHZhciBkID0gbmV3IERhdGUoKTsKICAgIHZhciB3TmFtZW4gPSBbJ1Nvbm50YWcn LCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0YWcnLCdT YW1zdGFnJ107CiAgICB2YXIgdGFnID0gKGQuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgOiAnJykgKyBk LmdldERhdGUoKTsKICAgIHZhciBtb24gPSAoKGQuZ2V0TW9udGgoKSArIDEpIDwgMTAgPyAnMCcg OiAnJykgKyAoZC5nZXRNb250aCgpICsgMSk7CiAgICB2YXIgZWxEYXQgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgna2wtaGV1dGUtZGF0dW0nKTsKICAgIHZhciBlbFd0ZyA9IGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdrbC1oZXV0ZS13dGFnJyk7CiAgICBpZiAoZWxEYXQpIGVsRGF0LnRleHRD b250ZW50ID0gdGFnICsgJy4nICsgbW9uICsgJy4nICsgZC5nZXRGdWxsWWVhcigpOwogICAgaWYg KGVsV3RnKSBlbFd0Zy50ZXh0Q29udGVudCA9IHdOYW1lbltkLmdldERheSgpXTsKfQoKLy8gPT09 PT0gSGVhcnRiZWF0LVdvcmtlciA9PT09PQoKLy8gV2F0Y2hkb2ctU3RyYXRlZ2llIHN0YXR0IGV4 cGxpeml0ZW0gc2VuZEJlYWNvbignL2FwaS9zaHV0ZG93bicpOgovLyAtIGJlZm9yZXVubG9hZC9w YWdlaGlkZSBmZXVlcm4gYmVpIEY1L1JlZnJlc2ggZWJlbmZhbGxzIHVuZCB3dWVyZGVuCi8vICAg ZGVuIFNlcnZlciBiZWltIE5ldWxhZGVuIHRvZXRlbi4KLy8gLSBzdGF0dGRlc3NlbiB1ZWJlcm5p bW10IGRlciAzMC1zLUhlYXJ0YmVhdC1XYXRjaGRvZzogc29sYW5nZSBkZXIKLy8gICBXb3JrZXIg VGlja3Mgc2VuZGV0LCBsYWV1ZnQgZGVyIFNlcnZlci4gRWNodGVyIFRhYi1DbG9zZSBzdG9wcHQK Ly8gICBkaWUgVGlja3MsIFNlcnZlciBiZWVuZGV0IHNpY2ggbmFjaCAzMCBzIHZvbiBhbGxlaW4u CmV4cG9ydCBmdW5jdGlvbiBoZWFydGJlYXRTdGFydGVuKCkgewogICAgdHJ5IHsKICAgICAgICBa LmhlYXJ0YmVhdFdvcmtlciA9IG5ldyBXb3JrZXIoJ2hlYXJ0YmVhdC13b3JrZXIuanMnKTsKICAg ICAgICBaLmhlYXJ0YmVhdFdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldikgewogICAgICAg ICAgICAvLyBEZXIgV29ya2VyIG1lbGRldCwgd2VubiBzaWNoIGFkbWluLmpzb24gc2VydmVyc2Vp dGlnCiAgICAgICAgICAgIC8vIGdlYWVuZGVydCBoYXQgKGFuZGVyZXIgU1UgaGF0IHdhcyBnZXNw ZWljaGVydCkuIENsaWVudAogICAgICAgICAgICAvLyBsYWVkdCBBZG1pbi1EYXRlbiArIFJlY2h0 ZSBuZXUgdW5kIHJlbmRlcnQgZGllIE9iZXJmbGFlY2hlCiAgICAgICAgICAgIC8vIHBhc3NlbmQg bmV1IC0gUm9sbGVud2VjaHNlbCBvaG5lIEY1LgogICAgICAgICAgICBpZiAoZXYuZGF0YSAmJiBl di5kYXRhLnR5cCA9PT0gJ2FkbWluLWdlYWVuZGVydCcpIHsKICAgICAgICAgICAgICAgIGlmIChk YXRlbkxhZGVuSG9va3MuYWRtaW5Ib3RSZWxvYWQpIGRhdGVuTGFkZW5Ib29rcy5hZG1pbkhvdFJl bG9hZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIHBsYW51bmdWZXJzaW9uIGRlY2t0 IHYuYS4gZWRpdFJlY2h0ZS9zZWhlbi1BZW5kZXJ1bmdlbiBkZXIKICAgICAgICAgICAgLy8gZWln ZW5lbiBQZXJzb24gYWIgKENoZXJyeS1QaWNrIDFhZWZlMjYgQnVnICMzKS4gTGl2ZS1TeW5jCiAg ICAgICAgICAgIC8vIHVlYmVyIC9hcGkvcGxhbnVuZy9jaGFuZ2VzIGt1ZW1tZXJ0IHNpY2ggdW0g WmVsbC0vS29tbWVudGFyLQogICAgICAgICAgICAvLyBVcGRhdGVzIHNlcGFyYXQg4oCUIGhpZXIg Z2VodCBlcyBudXIgdW0gUmVjaHRlLSB1bmQKICAgICAgICAgICAgLy8gU2ljaHRiYXJrZWl0cy1S ZWZyZXNoLgogICAgICAgICAgICBpZiAoZXYuZGF0YSAmJiBldi5kYXRhLnR5cCA9PT0gJ3BsYW51 bmctZ2VhZW5kZXJ0JykgewogICAgICAgICAgICAgICAgaWYgKGRhdGVuTGFkZW5Ib29rcy5wbGFu dW5nSG90UmVsb2FkKSBkYXRlbkxhZGVuSG9va3MucGxhbnVuZ0hvdFJlbG9hZCgpOwogICAgICAg ICAgICB9CiAgICAgICAgfTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNp YmlsaXR5Y2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZG9jdW1lbnQuaGlk ZGVuICYmIFouaGVhcnRiZWF0V29ya2VyKSBaLmhlYXJ0YmVhdFdvcmtlci5wb3N0TWVzc2FnZSgn c2ljaHRiYXInKTsKICAgICAgICB9KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAvLyBXb3Jr ZXIgbmljaHQgdmVyZnVlZ2JhciAtIEZhbGxiYWNrIGF1ZiBNYWluLVRocmVhZC1zZXRJbnRlcnZh bC4KICAgICAgICAvLyBBY2h0dW5nOiBNYWluLVRocmVhZC1UaW1lciB3ZXJkZW4gaW0gSGludGVy Z3J1bmQtVGFiIGdlZHJvc3NlbHQsCiAgICAgICAgLy8gZGVyIEZhbGxiYWNrIGlzdCBhbHNvIHNj aHdhZWNoZXIsIGFiZXIgYmVzc2VyIGFscyBuaWNodHMuCiAgICAgICAgWi5oZWFydGJlYXRGYWxs YmFjayA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBmZXRjaCgnL2FwaS9o ZWFydGJlYXQnLCB7IG1ldGhvZDogJ1BPU1QnIH0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7CiAgICAg ICAgfSwgNTAwMCk7CiAgICB9Cn0K ### FILE: js/core_permissions.js | 21770 Ly8gPT09IGNvcmUvcGVybWlzc2lvbnMuanMgPT09Ci8vIFJvbGxlbi1Nb2RlbGwsIFRhYi1TaWNo dGJhcmtlaXQsIEltcGVyc29uYXRpb24gKFNVLVRlc3RhbnNpY2h0KSwKLy8gVmVyYmluZGxpY2hr ZWl0cy1GZW5zdGVyLgovLwovLyBSb2xsZW46IFN1cGVyVXNlciA+IEZhY2hhdWZzaWNodCA+IFJl Z3VsYWVyLgovLyBaLnJlY2h0ZSBzcGllZ2VsdCBkYXMgL2FwaS9pbmZvLVJlY2h0ZS1PYmpla3Q7 IGJlcmVjaG5lRmFjaGF1ZnNpY2h0UmVjaHRlLwovLyBiZXJlY2huZVJlZ3VsYWVyUmVjaHRlIHNp bXVsaWVyZW4gZXMgZnVlciBkaWUgSW1wZXJzb25hdGlvbi4KLy8KLy8gSG9va3M6IGltcGVyc29u YXRlQW53ZW5kZW4gcnVmdCBSZW5kZXItRnVua3Rpb25lbiBhdXMgYW5kZXJlbiBNb2R1bGVuCi8v IChBZG1pbi9HcmlkL1N0YXRpc3Rpay9CZXNldHp1bmcpLiBEaWUgd2VyZGVuIHVlYmVyIHBlcm1p c3Npb25Ib29rcwovLyByZWluZ2VoYWVuZ3QsIHdlaWwgRVNNLUltcG9ydHMgZWluZW4gWnlrbHVz IG9kZXIgbm9jaCBuaWNodCBleHRyYWhpZXJ0ZQovLyBTeW1ib2xlIGJlZGV1dGVuIHd1ZXJkZW4u CgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKCi8vID09PT09IEhvb2tzICh2 b24gYXBwLmpzIGdlc2V0enQ7IG51bGwgPSBBdWZydWZlciB1ZWJlcnNwcmluZ3QgZGVuIEF1ZnJ1 ZikgPT09PT0KCmV4cG9ydCB2YXIgcGVybWlzc2lvbkhvb2tzID0gewogICAgYWRtaW5SZW5kZXJu OiBudWxsLAogICAga29wZlJlbmRlcm46IG51bGwsCiAgICBzdGF0aXN0aWtSZW5kZXJuOiBudWxs LAogICAgYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm46IG51bGwsCiAgICAvLyBHcmlkIGtvbXBs ZXR0IG5ldSB6ZWljaG5lbiDigJQgbm9ldGlnIG5hY2ggZWluZW0gUmVjaHRlLVdlY2hzZWwKICAg IC8vIChJbXBlcnNvbmF0aW9uKSwgZGFtaXQgZGllIFplbGwtU3BlcnJlbiAoZ3JpZC16ZWxsZS1n ZXNwZXJydCkgZGVuCiAgICAvLyBuZXVlbiBFZGl0LUtvbnRleHQgd2lkZXJzcGllZ2Vsbi4KICAg IGdyaWRSZW5kZXJuOiBudWxsLAogICAgLy8gSG9vayBmdWVyIEFuc2ljaHQtV2VjaHNlbCAoZ3Jp ZFJlbmRlci1Nb2R1bCksIGRhbWl0IEltcGVyc29uYXRpb24tU3RhcnQKICAgIC8vIGRlbiBVc2Vy IGF1ZiBkaWUgUGxhbnVuZ3MtQW5zaWNodCBzcHJpbmdlbiBsYXNzZW4ga2Fubi4KICAgIGFuc2lj aHRXZWNoc2VsbjogbnVsbAp9OwoKLy8gPT09PT0gVGFiLVNpY2h0YmFya2VpdCAoVG9wLUxldmVs KSA9PT09PQoKLy8gU3VwZXJVc2VyIHNpZWh0IGltbWVyIGFsbGVzLiBGYWNoYXVmc2ljaHQgbnVy IGRhcywgd2FzIGluCi8vIGFkbWluLmZhY2hhdWZzaWNodFtdLnNlaGVuey4uLn0gYXVmIHRydWUg c3RlaHQuIFJlZ3VsYWVyZSBVc2VyIHNlaGVuCi8vIG5pY2h0cyBkYXZvbiAtLSBzaWUgYmVoYWx0 ZW4gbnVyIFBsYW51bmcvV29jaGVucGxhbi9QZXJzLiBQbGFuLgoKZXhwb3J0IGZ1bmN0aW9uIGRh cmZBZG1pblRhYigpIHsgcmV0dXJuICEhKFoucmVjaHRlICYmIChaLnJlY2h0ZS5pc3RTdXBlclVz ZXIgfHwgKFoucmVjaHRlLmlzdEZhY2hhdWZzaWNodCAmJiBaLnJlY2h0ZS5zZWhlbi5hZG1pbmlz dHJhdGlvbikpKTsgfQpleHBvcnQgZnVuY3Rpb24gZGFyZlN0YXRpc3RpaygpIHsgcmV0dXJuICEh KFoucmVjaHRlICYmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIgfHwgKFoucmVjaHRlLmlzdEZhY2hh dWZzaWNodCAmJiBaLnJlY2h0ZS5zZWhlbi5zdGF0aXN0aWspKSk7IH0KZXhwb3J0IGZ1bmN0aW9u IGRhcmZMb2didWNoKCkgICB7IHJldHVybiAhIShaLnJlY2h0ZSAmJiAoWi5yZWNodGUuaXN0U3Vw ZXJVc2VyIHx8IChaLnJlY2h0ZS5pc3RGYWNoYXVmc2ljaHQgJiYgWi5yZWNodGUuc2VoZW4ubG9n YnVjaCkpKTsgfQoKLy8gR3JhbnVsYXJlIFN1Yi1TaWNodGJhcmtlaXQgKEZpbmRpbmcgQy45IC8g U3BlYyBGLjIpOgovLyBTdXBlclVzZXIgb2RlciBNYXAgPT09IG51bGwgIC0+IGFsbGVzIGVybGF1 YnQgKFdpbGRjYXJkKQovLyBNYXAgPT09IHt9ICAgICAgICAgICAgICAgICAgIC0+IG5pY2h0cyBl cmxhdWJ0IChUYWIgbmljaHQgZnJlaWdlZ2ViZW4pCi8vIE1hcFtrZXldID09PSBmYWxzZSAgICAg ICAgICAgLT4gZXhwbGl6aXQgdmVyYm9yZ2VuCi8vIE1hcFtrZXldID09PSB0cnVlIC8gbmljaHQg aW4gLT4gZXJsYXVidCAoRGVmYXVsdCBpc3Qgc2VoZW4sIE5lZ2F0aXYtTGlzdGUpCmV4cG9ydCBm dW5jdGlvbiBkYXJmQWRtaW5TdWJ0YWIobmFtZSkgewogICAgaWYgKCFaLnJlY2h0ZSkgcmV0dXJu IGZhbHNlOwogICAgaWYgKFoucmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuIHRydWU7CiAgICBp ZiAoIVoucmVjaHRlLnNlaGVuLmFkbWluaXN0cmF0aW9uKSByZXR1cm4gZmFsc2U7CiAgICB2YXIg bSA9IFoucmVjaHRlLmFkbWluU3VidGFiczsKICAgIGlmIChtID09PSBudWxsIHx8IG0gPT09IHVu ZGVmaW5lZCkgcmV0dXJuIHRydWU7CiAgICAvLyBOZWdhdGl2LUxpc3RlOiBudXIgZXhwbGl6aXQg e2tleTpmYWxzZX0gdmVyc3RlY2t0LiBMZWVyZSBNYXAgPSBrZWluZQogICAgLy8gVmVyc3RlY2tl ciA9IGFsbGVzIHNpY2h0YmFyIChrb25zaXN0ZW50IHp1IGZhY2hhdWZzaWNodFN1YlNpY2h0TGFi ZWwsCiAgICAvLyBkYXMge30gYWxzICJBbGxlIChTdGFuZGFyZCkiIGFuemVpZ3QpLgogICAgaWYg KG5hbWUgaW4gbSkgcmV0dXJuICEhbVtuYW1lXTsKICAgIHJldHVybiB0cnVlOwp9CgpleHBvcnQg ZnVuY3Rpb24gZGFyZlN0YXRpc3Rpa1N1YihuYW1lKSB7CiAgICBpZiAoIVoucmVjaHRlKSByZXR1 cm4gZmFsc2U7CiAgICBpZiAoWi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm4gdHJ1ZTsKICAg IGlmICghWi5yZWNodGUuc2VoZW4uc3RhdGlzdGlrKSByZXR1cm4gZmFsc2U7CiAgICB2YXIgbSA9 IFoucmVjaHRlLnN0YXRpc3Rpa0JlcmVpY2hlOwogICAgaWYgKG0gPT09IG51bGwgfHwgbSA9PT0g dW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTsKICAgIGlmIChuYW1lIGluIG0pIHJldHVybiAhIW1bbmFt ZV07CiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gPT09PT0gUmVjaHRlLU9iamVrdCBhdXMgL2FwaS9p bmZvIGFibGVpdGVuID09PT09CgovLyBTcGllZ2VsdCBkYXMgL2FwaS9pbmZvLVJlY2h0ZS1PYmpl a3QgMToxIGluIGRhcyBGb3JtYXQsIG1pdCBkZW0gWi5yZWNodGUKLy8gaW0gQ2xpZW50IGFyYmVp dGV0LiBFaW56aWdlciBIZWxwZXIsIGRhbWl0IGRhdGVuTGFkZW4oKSB1bmQKLy8gYWRtaW5Ib3RS ZWxvYWQoKS9wbGFudW5nSG90UmVsb2FkKCkgbmljaHQgYXVzZWluYW5kZXJkcmlmdGVuLgpleHBv cnQgZnVuY3Rpb24gcmVjaHRlQXVzSW5mbyhpbmZvKSB7CiAgICByZXR1cm4gewogICAgICAgIHJv bGxlOiAgICAgICAgICAgICAgICAgICBpbmZvLnJvbGxlIHx8ICdyZWd1bGFlcicsCiAgICAgICAg aXN0U3VwZXJVc2VyOiAgICAgICAgICAgICEhaW5mby5pc3RTdXBlclVzZXIsCiAgICAgICAgaXN0 RmFjaGF1ZnNpY2h0OiAgICAgICAgICEhaW5mby5pc3RGYWNoYXVmc2ljaHQsCiAgICAgICAgLy8g R2VzYW10dmVyYW50d29ydGxpY2g6IFNVIGltbWVyLCBGYWNoYXVmc2ljaHQgcGVyIEFkbWluLUZs YWcuCiAgICAgICAgLy8gU3RldWVydCBkZW4gSGVhZGVyLVRhYiAiUHJ1ZWZ1bmciLgogICAgICAg IGlzdEdlc2FtdHZlcmFudHdvcnRsaWNoOiAhIWluZm8uaXN0R2VzYW10dmVyYW50d29ydGxpY2gs CiAgICAgICAgc2VoZW46ICAgICAgICAgICAgICAgICAgIGluZm8uc2VoZW4gfHwgeyBhZG1pbmlz dHJhdGlvbjogZmFsc2UsIHN0YXRpc3RpazogZmFsc2UsIGxvZ2J1Y2g6IGZhbHNlLCBiYWNrdXBz OiBmYWxzZSB9LAogICAgICAgIC8vIEdyYW51bGFyZSBTdWItU2ljaHRiYXJrZWl0IChTcGVjIEYu Mik6IG51bGwgPSBTdXBlclVzZXItCiAgICAgICAgLy8gV2lsZGNhcmQgKGFsbGVzIGVybGF1YnQp LCB7fSA9IG5pY2h0cyBlcmxhdWJ0LCBzb25zdCBNYXAKICAgICAgICAvLyA8c3VidGFifGJlcmVp Y2g+OiBib29sLiBEZWZhdWx0OiBuaWNodCBpbiBNYXAgPSBlcmxhdWJ0CiAgICAgICAgLy8gKEtv bmZpZ3VyYXRpb24gaXN0IE5lZ2F0aXYtTGlzdGUpLgogICAgICAgIGFkbWluU3VidGFiczogICAg ICAgICAgICBpbmZvLmFkbWluU3VidGFicyAhPT0gdW5kZWZpbmVkID8gaW5mby5hZG1pblN1YnRh YnMgOiBudWxsLAogICAgICAgIHN0YXRpc3Rpa0JlcmVpY2hlOiAgICAgICBpbmZvLnN0YXRpc3Rp a0JlcmVpY2hlICE9PSB1bmRlZmluZWQgPyBpbmZvLnN0YXRpc3Rpa0JlcmVpY2hlIDogbnVsbCwK ICAgICAgICAvLyBlZGl0aWVyZW4gPT09IG51bGwgaGVpc3N0ICJXaWxkY2FyZCIgKFN1cGVyVXNl ciBkYXJmIGFsbGVzKS4KICAgICAgICAvLyBTb25zdCBrb25rcmV0ZSBMaXN0ZW4gdm9uIFBlcnNv bmVuLUlkcywgRGllbnN0Z3J1cHBlbi1LdWVyemVsbiwgU3RhbmRvcnRlbi4KICAgICAgICBlZGl0 aWVyZW46ICAgICAgICAgICAgICAgaW5mby5lZGl0aWVyZW4sCiAgICAgICAgbWVpbmVQZXJzb25J ZDogICAgICAgICAgIGluZm8ubWVpbmVQZXJzb25JZAogICAgfTsKfQoKLy8gPT09PT0gUmVjaHRl LU9iamVrdC1CdWlsZGVyIChmdWVyIEltcGVyc29uYXRpb24pID09PT09CgovLyBCZXJlY2huZXQg Wi5yZWNodGUgZnVlciBlaW5lIGdlZ2ViZW5lIEZhY2hhdWZzaWNodC1Lb25maWcsIGFscyB3YWVy ZQovLyBkaWVzZSBQZXJzb24gZWluZ2Vsb2dndC4gU3BpZWdlbCBkZXIgR2V0LVJlY2h0ZS1Mb2dp ayBpbSBTZXJ2ZXIuCmV4cG9ydCBmdW5jdGlvbiBiZXJlY2huZUZhY2hhdWZzaWNodFJlY2h0ZShm YSkgewogICAgdmFyIHNlaGVuID0gZmEuc2VoZW4gfHwge307CiAgICB2YXIgYWRtaW5NYXAgPSBu dWxsOwogICAgaWYgKHNlaGVuLmFkbWluaXN0cmF0aW9uICYmIGZhLmFkbWluU2ljaHRiYXJrZWl0 KSB7CiAgICAgICAgYWRtaW5NYXAgPSB7fTsKICAgICAgICBPYmplY3Qua2V5cyhmYS5hZG1pblNp Y2h0YmFya2VpdCkuZm9yRWFjaChmdW5jdGlvbihrKSB7IGFkbWluTWFwW2tdID0gISFmYS5hZG1p blNpY2h0YmFya2VpdFtrXTsgfSk7CiAgICB9IGVsc2UgaWYgKCFzZWhlbi5hZG1pbmlzdHJhdGlv bikgewogICAgICAgIGFkbWluTWFwID0ge307CiAgICB9CiAgICB2YXIgc3RhdGlzdGlrTWFwID0g bnVsbDsKICAgIGlmIChzZWhlbi5zdGF0aXN0aWsgJiYgZmEuc3RhdGlzdGlrU2ljaHRiYXJrZWl0 KSB7CiAgICAgICAgc3RhdGlzdGlrTWFwID0ge307CiAgICAgICAgT2JqZWN0LmtleXMoZmEuc3Rh dGlzdGlrU2ljaHRiYXJrZWl0KS5mb3JFYWNoKGZ1bmN0aW9uKGspIHsgc3RhdGlzdGlrTWFwW2td ID0gISFmYS5zdGF0aXN0aWtTaWNodGJhcmtlaXRba107IH0pOwogICAgfSBlbHNlIGlmICghc2Vo ZW4uc3RhdGlzdGlrKSB7CiAgICAgICAgc3RhdGlzdGlrTWFwID0ge307CiAgICB9CiAgICByZXR1 cm4gewogICAgICAgIHJvbGxlOiAnZmFjaGF1ZnNpY2h0JywKICAgICAgICBpc3RTdXBlclVzZXI6 IGZhbHNlLAogICAgICAgIGlzdEZhY2hhdWZzaWNodDogdHJ1ZSwKICAgICAgICBpc3RHZXNhbXR2 ZXJhbnR3b3J0bGljaDogISFmYS5nZXNhbXR2ZXJhbnR3b3J0bGljaCwKICAgICAgICBzZWhlbjog ewogICAgICAgICAgICBhZG1pbmlzdHJhdGlvbjogISFzZWhlbi5hZG1pbmlzdHJhdGlvbiwKICAg ICAgICAgICAgc3RhdGlzdGlrOiAgICAgICEhc2VoZW4uc3RhdGlzdGlrLAogICAgICAgICAgICBs b2didWNoOiAgICAgICAgISFzZWhlbi5sb2didWNoLAogICAgICAgICAgICBiYWNrdXBzOiAgICAg ICAgISFzZWhlbi5iYWNrdXBzCiAgICAgICAgfSwKICAgICAgICBhZG1pblN1YnRhYnM6ICAgICAg YWRtaW5NYXAsCiAgICAgICAgc3RhdGlzdGlrQmVyZWljaGU6IHN0YXRpc3Rpa01hcCwKICAgICAg ICBlZGl0aWVyZW46ICAgICAgICAgZmEuZWRpdGllcmVuIHx8IHsgcGVyc29uZW5JZHM6IFtdLCBk aWVuc3RncnVwcGVuOiBbXSwgc3RhbmRvcnRlOiBbXSB9LAogICAgICAgIG1laW5lUGVyc29uSWQ6 ICAgICBudWxsCiAgICB9Owp9CgpleHBvcnQgZnVuY3Rpb24gYmVyZWNobmVSZWd1bGFlclJlY2h0 ZSgpIHsKICAgIHJldHVybiB7CiAgICAgICAgcm9sbGU6ICdyZWd1bGFlcicsCiAgICAgICAgaXN0 U3VwZXJVc2VyOiBmYWxzZSwKICAgICAgICBpc3RGYWNoYXVmc2ljaHQ6IGZhbHNlLAogICAgICAg IGlzdEdlc2FtdHZlcmFudHdvcnRsaWNoOiBmYWxzZSwKICAgICAgICBzZWhlbjogeyBhZG1pbmlz dHJhdGlvbjogZmFsc2UsIHN0YXRpc3RpazogZmFsc2UsIGxvZ2J1Y2g6IGZhbHNlLCBiYWNrdXBz OiBmYWxzZSB9LAogICAgICAgIGFkbWluU3VidGFiczoge30sCiAgICAgICAgc3RhdGlzdGlrQmVy ZWljaGU6IHt9LAogICAgICAgIGVkaXRpZXJlbjogeyBwZXJzb25lbklkczogW10sIGRpZW5zdGdy dXBwZW46IFtdLCBzdGFuZG9ydGU6IFtdIH0sCiAgICAgICAgbWVpbmVQZXJzb25JZDogbnVsbAog ICAgfTsKfQoKLy8gV2VidCBkaWUgZ2xvYmFsZW4gU3RhbmRhcmRyZWNodGUgKGdlZ2Vuc2VpdGln ZSBQbGFudW5nIGplIERpZW5zdGdydXBwZS8KLy8gU3RhbmRvcnQpIGFkZGl0aXYgaW4gZWluIGVk aXRpZXJlbi1PYmpla3QgZWluIOKAlCBTcGllZ2VsIGRlciBTZXJ2ZXItTG9naWsgaW4KLy8gYmVy ZWNobmVfcmVjaHRlLiBLbG9udCwgdW0gZGllIEFkbWluLUNvbmZpZyBuaWNodCB6dSBtdXRpZXJl bi4gV2lyZCBpbiBkZXIKLy8gU1UtVGVzdGFuc2ljaHQgKEltcGVyc29uYXRpb24pIGdlbnV0enQ7 IGltIEVjaHRiZXRyaWViIGxpZWZlcnQgZGVyIFNlcnZlcgovLyBlZGl0aWVyZW4gYmVyZWl0cyBh bmdlcmVpY2hlcnQuCmZ1bmN0aW9uIF9zdGFuZGFyZFJlY2h0ZUVpbndlYmVuKGVkaXRpZXJlbiwg cGVyc29uKSB7CiAgICBpZiAoIWVkaXRpZXJlbiB8fCAhcGVyc29uKSByZXR1cm4gZWRpdGllcmVu OwogICAgdmFyIHNyID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdGFuZGFyZFJlY2h0ZSkgfHwge307 CiAgICB2YXIgZ2cgPSBzci5nZWdlbnNlaXRpZ0dydXBwZW4gfHwgW107CiAgICB2YXIgZ3MgPSBz ci5nZWdlbnNlaXRpZ1N0YW5kb3J0ZSB8fCBbXTsKICAgIHZhciBkZyA9IChlZGl0aWVyZW4uZGll bnN0Z3J1cHBlbiB8fCBbXSkuc2xpY2UoKTsKICAgIHZhciBzbyA9IChlZGl0aWVyZW4uc3RhbmRv cnRlIHx8IFtdKS5zbGljZSgpOwogICAgaWYgKHBlcnNvbi5ncnVwcGUgJiYgZ2cuaW5kZXhPZihw ZXJzb24uZ3J1cHBlKSA+PSAwICYmIGRnLmluZGV4T2YocGVyc29uLmdydXBwZSkgPCAwKSBkZy5w dXNoKHBlcnNvbi5ncnVwcGUpOwogICAgaWYgKHBlcnNvbi5vZSAmJiBncy5pbmRleE9mKHBlcnNv bi5vZSkgPj0gMCAmJiBzby5pbmRleE9mKHBlcnNvbi5vZSkgPCAwKSBzby5wdXNoKHBlcnNvbi5v ZSk7CiAgICByZXR1cm4geyBwZXJzb25lbklkczogKGVkaXRpZXJlbi5wZXJzb25lbklkcyB8fCBb XSkuc2xpY2UoKSwgZGllbnN0Z3J1cHBlbjogZGcsIHN0YW5kb3J0ZTogc28gfTsKfQoKLy8gQmVy ZWNobmV0IFoucmVjaHRlIGZ1ZXIgZWluZSBrb25rcmV0ZSBQZXJzb24sIGFscyB3YWVyZSBzaWUg ZWluZ2Vsb2dndC4KLy8gU3RlaHQgZGllIFBlcnNvbiBpbiBkZXIgRmFjaGF1ZnNpY2h0LUxpc3Rl IChNYXRjaCB1ZWJlciBud0tlbm51bmcsIHNvbnN0Ci8vIE5hbWUpLCBlcmJ0IHNpZSBkZXJlbiBS ZWNodGUg4oCUIHNvbnN0IGlzdCBzaWUgcmVndWxhZXJlciBFbmRhbndlbmRlci4gSW4KLy8gYmVp ZGVuIEZhZWxsZW4gd2lyZCBtZWluZVBlcnNvbklkIGdlc2V0enQsIGRhbWl0IGRpZSBaZWxsLUVk aXQtTG9naWsKLy8gKGVpZ2VuZSBaZWlsZSArIE1pa3JvdGVhbSkgaW4gZGVyIFRlc3RhbnNpY2h0 IGtvcnJla3QgZ3JlaWZ0LgpleHBvcnQgZnVuY3Rpb24gYmVyZWNobmVQZXJzb25SZWNodGUocGVy c29uKSB7CiAgICBpZiAoIXBlcnNvbikgcmV0dXJuIGJlcmVjaG5lUmVndWxhZXJSZWNodGUoKTsK ICAgIHZhciBudyA9IChwZXJzb24ubndLZW5udW5nIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2Uo KTsKICAgIHZhciBubSA9IChwZXJzb24ubmFtZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7 CiAgICB2YXIgZmEgPSAoWi5hZG1pbiAmJiBaLmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSkuZmlu ZChmdW5jdGlvbihmKSB7CiAgICAgICAgdmFyIGZudyA9IChmLm53S2VubnVuZyB8fCAnJykudHJp bSgpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgaWYgKG53ICYmIGZudyAmJiBmbncgPT09IG53KSBy ZXR1cm4gdHJ1ZTsKICAgICAgICByZXR1cm4gISFubSAmJiAoZi5uYW1lIHx8ICcnKS50cmltKCku dG9Mb3dlckNhc2UoKSA9PT0gbm07CiAgICB9KTsKICAgIHZhciByID0gZmEgPyBiZXJlY2huZUZh Y2hhdWZzaWNodFJlY2h0ZShmYSkgOiBiZXJlY2huZVJlZ3VsYWVyUmVjaHRlKCk7CiAgICByLm1l aW5lUGVyc29uSWQgPSBwZXJzb24uaWQ7CiAgICByLmVkaXRpZXJlbiA9IF9zdGFuZGFyZFJlY2h0 ZUVpbndlYmVuKHIuZWRpdGllcmVuLCBwZXJzb24pOwogICAgcmV0dXJuIHI7Cn0KCi8vID09PT09 IEltcGVyc29uYXRpb24tTW9kZSAoU1UtVGVzdGFuc2ljaHQpID09PT09Ci8vCi8vIFN1cGVyVXNl ciBrYW5uIHNpY2ggZGllIE9iZXJmbGFlY2hlIHNvIGFuemVpZ2VuIGxhc3Nlbiwgd2llIGVpbmUg YW5kZXJlCi8vIFJvbGxlIHNpZSBzaWVodCAoRmFjaGF1ZnNpY2h0IG5hY2ggaWhyZXIgU2ljaHRi YXJrZWl0cy1Lb25maWd1cmF0aW9uLAovLyBvZGVyIHJlZ3VsYWVyZXIgRW5kYW53ZW5kZXIpLiBS ZWluIGNsaWVudHNlaXRpZyDigJQgWi5yZWNodGUgd2lyZAovLyB0ZW1wb3JhZXIgdW1nZXNjaHJp ZWJlbjsgYmVpbSBadXJ1ZWNrc2NoYWx0ZW4ga29tbXQgZGVyIE9yaWdpbmFsc3RhbmQKLy8gYXVz IHJlY2h0ZU9yaWdpbmFsIHp1cnVlY2suIERlciBTZXJ2ZXIgd2Vpc3MgbmljaHRzIGRhdm9uLCBi bGVpYnQgU1UuCgp2YXIgcmVjaHRlT3JpZ2luYWwgPSBudWxsOwovLyBCZWltIFN0YXJ0IGVpbmVy IEltcGVyc29uYXRpb24gZ2VtZXJrdGVyIEhlYWRlci1UYWIgKyBBZG1pbi1TdWItVGFiLAovLyBk YW1pdCBpbXBlcnNvbmF0ZUVuZCgpIGRlbiB2b3JpZ2VuIFN0YW5kIHdpZWRlcmhlcnN0ZWxsdCBz dGF0dCBlaW5mYWNoCi8vIGF1ZiAiZGVyIGVyc3RlIGVybGF1YnRlIiB6dXJ1ZWNrenVmYWxsZW4g KENoZXJyeS1QaWNrIGRhNDNjMjEgKyA5YWY5Njg0KS4KdmFyIGFuc2ljaHRWb3JJbXBlcnNvbmF0 aW9uID0gbnVsbDsKdmFyIGFkbWluU3VidGFiVm9ySW1wZXJzb25hdGlvbiA9IG51bGw7Ci8vIEJl aW0gUGVyc29uLVRlc3Qgd2lyZCBaLm1laW5lUGVyc29uSWQgdGVtcG9yYWVyIGF1ZiBkaWUgZ2V0 ZXN0ZXRlIFBlcnNvbgovLyB1bWdlYm9nZW4gKHNvbnN0IGdyZWlmdCBkaWUgImVpZ2VuZSBaZWls ZSArIE1pa3JvdGVhbSItRWRpdC1Mb2dpayB3ZWl0ZXIKLy8gYXVmIGRpZSBTVS1QZXJzb24pLiBI aWVyIGRlciBPcmlnaW5hbC1XZXJ0IGZ1ZXIgaW1wZXJzb25hdGVFbmQuCnZhciBtZWluZVBlcnNv bklkVm9ySW1wZXJzb25hdGlvbiA9IG51bGw7CgovLyBFeGlzdGllcnQgZWluIGdlc3BlaWNoZXJ0 ZXIgT3JpZ2luYWwtUmVjaHRlLVNuYXBzaG90PyBXaXJkIHZvbQovLyBhZG1pbkhvdFJlbG9hZCAo aW4gYXBwLmpzKSBnZWJyYXVjaHQ6IHdhZWhyZW5kIGVpbmVyIEltcGVyc29uYXRpb24KLy8gc29s bCBrZWluIEhvdC1SZWxvYWQgZGFzIFoucmVjaHRlLVNwaWVsZmVsZCB1bXNvcnRpZXJlbi4KZXhw b3J0IGZ1bmN0aW9uIGltcGVyc29uYXRpb25Ba3RpdigpIHsgcmV0dXJuIHJlY2h0ZU9yaWdpbmFs ICE9PSBudWxsOyB9CgpleHBvcnQgZnVuY3Rpb24gaW1wZXJzb25hdGVBbndlbmRlbihsYWJlbFRl eHQpIHsKICAgIGlmIChsYWJlbFRleHQpIGltcGVyc29uYXRlQmFubmVyWmVpZ2VuKGxhYmVsVGV4 dCk7CiAgICBlbHNlIGltcGVyc29uYXRlQmFubmVyVmVyc3RlY2tlbigpOwogICAgbmF2U2ljaHRi YXJrZWl0QW53ZW5kZW4oKTsKICAgIGFkbWluU3VidGFiRmlsdGVyQW53ZW5kZW4oKTsKICAgIC8v IE9iZXJmbGFlY2hlIGZ1ZXIgZGVuIG5ldWVuIEtvbnRleHQgbmV1IHJlbmRlcm4uIGFkbWluUmVu ZGVybgogICAgLy8gbGFldWZ0IGFsbGUgQWRtaW4tU3ViLVJlbmRlcmVyIChQZXJzb25hbCwgR3J1 cHBlbiwgRmVpZXJ0YWdlLAogICAgLy8g4oCmLCBTdXBlclVzZXIsIEZhY2hhdWZzaWNodCkg4oCU IGRhbWl0IGRlciBTVS1vbmx5LUhpbndlaXMgaW4KICAgIC8vICJSZWNodGUgJiBTaWNodGJhcmtl aXQiIGJlaW0gWnVydWVja3NjaGFsdGVuIHZlcnNjaHdpbmRldAogICAgLy8gdW5kIEdhbGVja2lz IFNpY2h0IGJlaW0gRWluc2NoYWx0ZW4ga29ycmVrdCBlaW5nZXNjaHJhZW5rdAogICAgLy8gZXJz Y2hlaW50IChLZWluLVp1Z3JpZmYtQmxvY2tlcikuCiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmFk bWluUmVuZGVybikgcGVybWlzc2lvbkhvb2tzLmFkbWluUmVuZGVybigpOwogICAgaWYgKHBlcm1p c3Npb25Ib29rcy5rb3BmUmVuZGVybikgcGVybWlzc2lvbkhvb2tzLmtvcGZSZW5kZXJuKCk7CiAg ICBpZiAocGVybWlzc2lvbkhvb2tzLnN0YXRpc3Rpa1JlbmRlcm4pIHBlcm1pc3Npb25Ib29rcy5z dGF0aXN0aWtSZW5kZXJuKCk7CiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmJlc2V0enVuZ3Nrb250 cm9sbGVSZW5kZXJuKSBwZXJtaXNzaW9uSG9va3MuYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm4o KTsKICAgIC8vIEdyaWQgbmV1IHplaWNobmVuLCBkYW1pdCBkaWUgWmVsbC1TcGVycmVuIHp1bSBu ZXVlbiBSZWNodGUtS29udGV4dCBwYXNzZW4uCiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmdyaWRS ZW5kZXJuKSBwZXJtaXNzaW9uSG9va3MuZ3JpZFJlbmRlcm4oKTsKfQoKZnVuY3Rpb24gX2ltcGVy c29uYXRpb25TdGF0ZVNpY2hlcm4oKSB7CiAgICB2YXIgbmF2QWt0aXYgPSBkb2N1bWVudC5xdWVy eVNlbGVjdG9yKCcubmF2LWJ0bi5ha3RpdicpOwogICAgdmFyIGFkbWluQWt0aXYgPSBkb2N1bWVu dC5xdWVyeVNlbGVjdG9yKCcuYWRtaW4tbmF2LWJ0bi5ha3RpdicpOwogICAgYW5zaWNodFZvcklt cGVyc29uYXRpb24gPSBuYXZBa3RpdiA/IG5hdkFrdGl2LmdldEF0dHJpYnV0ZSgnZGF0YS1hbnNp Y2h0JykgOiBudWxsOwogICAgYWRtaW5TdWJ0YWJWb3JJbXBlcnNvbmF0aW9uID0gYWRtaW5Ba3Rp diA/IGFkbWluQWt0aXYuZ2V0QXR0cmlidXRlKCdkYXRhLWFkbWluLXRhYicpIDogbnVsbDsKICAg IG1laW5lUGVyc29uSWRWb3JJbXBlcnNvbmF0aW9uID0gWi5tZWluZVBlcnNvbklkOwp9CgpmdW5j dGlvbiBfYXVmUGxhbnVuZ3NhbnNpY2h0U3ByaW5nZW4oKSB7CiAgICAvLyBEYW1pdCBkZXIgU1Ug c29mb3J0IHNpZWh0LCB3YXMgZGllIGltcGVyc29uaWVydGUgUGVyc29uIGltIEdyaWQgc2llaHQu CiAgICBpZiAocGVybWlzc2lvbkhvb2tzLmFuc2ljaHRXZWNoc2VsbikgcGVybWlzc2lvbkhvb2tz LmFuc2ljaHRXZWNoc2VsbigncGxhbnVuZycpOwp9CgpleHBvcnQgZnVuY3Rpb24gaW1wZXJzb25h dGVTdGFydChpZHgpIHsKICAgIGlmICghcmVjaHRlT3JpZ2luYWwgJiYgIVoucmVjaHRlLmlzdFN1 cGVyVXNlcikgcmV0dXJuOwogICAgdmFyIGZhID0gKFouYWRtaW4uZmFjaGF1ZnNpY2h0IHx8IFtd KVtpZHhdOwogICAgaWYgKCFmYSkgcmV0dXJuOwogICAgaWYgKCFyZWNodGVPcmlnaW5hbCkgewog ICAgICAgIHJlY2h0ZU9yaWdpbmFsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShaLnJlY2h0 ZSkpOwogICAgICAgIF9pbXBlcnNvbmF0aW9uU3RhdGVTaWNoZXJuKCk7CiAgICB9CiAgICBaLnJl Y2h0ZSA9IGJlcmVjaG5lRmFjaGF1ZnNpY2h0UmVjaHRlKGZhKTsKICAgIGltcGVyc29uYXRlQW53 ZW5kZW4oJ0ZhY2hhdWZzaWNodDogJyArIChmYS5uYW1lIHx8ICcob2huZSBOYW1lKScpKTsKICAg IF9hdWZQbGFudW5nc2Fuc2ljaHRTcHJpbmdlbigpOwp9CgpleHBvcnQgZnVuY3Rpb24gaW1wZXJz b25hdGVSZWd1bGFlcigpIHsKICAgIGlmICghcmVjaHRlT3JpZ2luYWwgJiYgIVoucmVjaHRlLmlz dFN1cGVyVXNlcikgcmV0dXJuOwogICAgaWYgKCFyZWNodGVPcmlnaW5hbCkgewogICAgICAgIHJl Y2h0ZU9yaWdpbmFsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShaLnJlY2h0ZSkpOwogICAg ICAgIF9pbXBlcnNvbmF0aW9uU3RhdGVTaWNoZXJuKCk7CiAgICB9CiAgICBaLnJlY2h0ZSA9IGJl cmVjaG5lUmVndWxhZXJSZWNodGUoKTsKICAgIGltcGVyc29uYXRlQW53ZW5kZW4oJ1JlZ3Vsw6Ry ZXIgRW5kYW53ZW5kZXIgKG9obmUgUmVjaHRlKScpOwogICAgX2F1ZlBsYW51bmdzYW5zaWNodFNw cmluZ2VuKCk7Cn0KCi8vIFRlc3RhbnNpY2h0IGFscyBlaW5lIGtvbmtyZXRlIFBlcnNvbiAoYXVz IGRlciBQZXJzb25hbC1MaXN0ZSkuIFNldHp0Ci8vIHp1c2FldHpsaWNoIFoubWVpbmVQZXJzb25J ZCwgZGFtaXQgImVpZ2VuZSBaZWlsZSArIE1pa3JvdGVhbSIgaW0gR3JpZAovLyBnZW5hdSBkYXMg emVpZ3QsIHdhcyBkaWVzZSBQZXJzb24gZWRpdGllcmVuIGRhcmYuCmV4cG9ydCBmdW5jdGlvbiBp bXBlcnNvbmF0ZVBlcnNvbihwZXJzb25JZCkgewogICAgaWYgKCFyZWNodGVPcmlnaW5hbCAmJiAh Wi5yZWNodGUuaXN0U3VwZXJVc2VyKSByZXR1cm47CiAgICB2YXIgcCA9IChaLnBlcnNvbmVuIHx8 IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIFN0cmluZyh4LmlkKSA9PT0gU3RyaW5nKHBl cnNvbklkKTsgfSk7CiAgICBpZiAoIXApIHJldHVybjsKICAgIGlmICghcmVjaHRlT3JpZ2luYWwp IHsKICAgICAgICByZWNodGVPcmlnaW5hbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5y ZWNodGUpKTsKICAgICAgICBfaW1wZXJzb25hdGlvblN0YXRlU2ljaGVybigpOwogICAgfQogICAg Wi5yZWNodGUgPSBiZXJlY2huZVBlcnNvblJlY2h0ZShwKTsKICAgIFoubWVpbmVQZXJzb25JZCA9 IHAuaWQ7CiAgICB2YXIgbGFiZWwgPSAocC5uYW1lIHx8ICcob2huZSBOYW1lKScpICsgKHAudm9y bmFtZSA/ICcgJyArIHAudm9ybmFtZSA6ICcnKSArIChwLmdydXBwZSA/ICcgWycgKyBwLmdydXBw ZSArICddJyA6ICcnKTsKICAgIGltcGVyc29uYXRlQW53ZW5kZW4oJ1BlcnNvbjogJyArIGxhYmVs KTsKICAgIF9hdWZQbGFudW5nc2Fuc2ljaHRTcHJpbmdlbigpOwp9CgpleHBvcnQgZnVuY3Rpb24g aW1wZXJzb25hdGVFbmQoKSB7CiAgICBpZiAoIXJlY2h0ZU9yaWdpbmFsKSByZXR1cm47CiAgICBa LnJlY2h0ZSA9IHJlY2h0ZU9yaWdpbmFsOwogICAgcmVjaHRlT3JpZ2luYWwgPSBudWxsOwogICAg Ly8gRmFsbHMgZWluZSBQZXJzb24gZ2V0ZXN0ZXQgd3VyZGU6IFoubWVpbmVQZXJzb25JZCB6dXJ1 ZWNrc3RlbGxlbi4KICAgIFoubWVpbmVQZXJzb25JZCA9IG1laW5lUGVyc29uSWRWb3JJbXBlcnNv bmF0aW9uOwogICAgbWVpbmVQZXJzb25JZFZvckltcGVyc29uYXRpb24gPSBudWxsOwogICAgLy8g R2xlaWNoZW4gUmVuZGVyLVBmYWQgd2llIGJlaW0gU3RhcnQg4oCUIGRhbWl0IGFsbGUgQWRtaW4t U3ViLQogICAgLy8gQmVyZWljaGUgKHouQi4gIlJlY2h0ZSAmIFNpY2h0YmFya2VpdCIpIGlocmVu IFNVLW9ubHktQmxvY2tlcgogICAgLy8gd2llZGVyIGFiYmF1ZW4uCiAgICBpbXBlcnNvbmF0ZUFu d2VuZGVuKG51bGwpOwogICAgLy8gVm9yaGVyaWdlbiBIZWFkZXItVGFiIHJlc3RhdXJpZXJlbiAo c29uc3QgYmxlaWJ0IGRlciBVc2VyIGF1ZiBkZXIKICAgIC8vIFBsYW51bmdzLUFuc2ljaHQgaGFl bmdlbiwgYXVmIGRpZSB3aXIgYmVpbSBTdGFydCBnZXNwcnVuZ2VuIHNpbmQpLgogICAgaWYgKGFu c2ljaHRWb3JJbXBlcnNvbmF0aW9uICYmIHBlcm1pc3Npb25Ib29rcy5hbnNpY2h0V2VjaHNlbG4p IHsKICAgICAgICBwZXJtaXNzaW9uSG9va3MuYW5zaWNodFdlY2hzZWxuKGFuc2ljaHRWb3JJbXBl cnNvbmF0aW9uKTsKICAgIH0KICAgIGFuc2ljaHRWb3JJbXBlcnNvbmF0aW9uID0gbnVsbDsKICAg IC8vIFZvcmhlcmlnZW4gQWRtaW4tU3ViLVRhYiB3aWVkZXIgYWt0aXZpZXJlbi4gYWRtaW5TdWJ0 YWJGaWx0ZXJBbndlbmRlbgogICAgLy8gaGF0IG9iZW4gaW4gaW1wZXJzb25hdGVBbndlbmRlbigp IGJlcmVpdHMgYWxsZSBCdXR0b25zIHNpY2h0YmFyIGdlbWFjaHQsCiAgICAvLyBhbHNvIGthbm4g ZGVyIEtsaWNrIGpldHp0IHdpZWRlciBkdXJjaGxhdWZlbi4KICAgIGlmIChhZG1pblN1YnRhYlZv ckltcGVyc29uYXRpb24pIHsKICAgICAgICB2YXIgYnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv cignLmFkbWluLW5hdi1idG5bZGF0YS1hZG1pbi10YWI9IicgKyBhZG1pblN1YnRhYlZvckltcGVy c29uYXRpb24gKyAnIl0nKTsKICAgICAgICBpZiAoYnRuKSBidG4uY2xpY2soKTsKICAgIH0KICAg IGFkbWluU3VidGFiVm9ySW1wZXJzb25hdGlvbiA9IG51bGw7Cn0KCmV4cG9ydCBmdW5jdGlvbiBp bXBlcnNvbmF0ZUJhbm5lclplaWdlbihsYWJlbCkgewogICAgdmFyIGIgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnaW1wZXJzb25hdGUtYmFubmVyJyk7CiAgICBpZiAoIWIpIHsKICAgICAgICBi ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgYi5pZCA9ICdpbXBlcnNv bmF0ZS1iYW5uZXInOwogICAgICAgIGIuY2xhc3NOYW1lID0gJ2ltcGVyc29uYXRlLWJhbm5lcic7 CiAgICAgICAgYi5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9ImltcC1pY29uIj7wn5GBPC9zcGFu PjxzcGFuIGNsYXNzPSJpbXAtdGV4dCI+PC9zcGFuPicgKwogICAgICAgICAgICAnPGJ1dHRvbiBj bGFzcz0iYnRuIGJ0bi1rbGVpbiIgaWQ9ImltcC1idG4tenVydWVjayIgdHlwZT0iYnV0dG9uIj5a dXLDvGNrIHp1ciBTVS1TaWNodDwvYnV0dG9uPic7CiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNl cnRCZWZvcmUoYiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKICAgICAgICBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaW1wLWJ0bi16dXJ1ZWNrJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn LCBpbXBlcnNvbmF0ZUVuZCk7CiAgICB9CiAgICBiLnF1ZXJ5U2VsZWN0b3IoJy5pbXAtdGV4dCcp LnRleHRDb250ZW50ID0gJ1Rlc3RhbnNpY2h0IOKAlCAnICsgbGFiZWw7CiAgICBiLnN0eWxlLmRp c3BsYXkgPSAnJzsKfQoKZXhwb3J0IGZ1bmN0aW9uIGltcGVyc29uYXRlQmFubmVyVmVyc3RlY2tl bigpIHsKICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltcGVyc29uYXRlLWJh bm5lcicpOwogICAgaWYgKGIpIGIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKfQoKLy8gPT09PT0g U3ViLVNpY2h0YmFya2VpdHMtRmlsdGVyIChBZG1pbikgPT09PT0KLy8KLy8gVmVyc3RlY2t0IGRp ZWplbmlnZW4gU3ViLVRhYi1CdXR0b25zICsgQ29udGFpbmVyLCBmdWVyIGRpZSBkZXIgYWt0dWVs bGUKLy8gVXNlciBrZWluZSBCZXJlY2h0aWd1bmcgaGF0LiBTdXBlclVzZXIgc2llaHQgaW1tZXIg YWxsZXMuCi8vIFNpY2hlcmhlaXRza3JpdGlzY2hlIFRhYnMgKHN1cGVydXNlciwgZmFjaGF1ZnNp Y2h0LCBzaWNodGJhcmtlaXQpIGJsZWliZW4KLy8gaGFydGtvZGllcnQgU1Utb25seSDigJQgZGll IEdyYW51bGFyLU1hcCBrYW5uIHNpZSBuaWNodCBmcmVpc2NoYWx0ZW4uCgp2YXIgQURNSU5fU1VC VEFCU19OSUVNQUxTX0ZVRVJfRkFDSEFVRlNJQ0hUID0gWydzdXBlcnVzZXInLCAnZmFjaGF1ZnNp Y2h0JywgJ3NpY2h0YmFya2VpdCcsICdmZWF0dXJlcycsICd0ZXN0ZGF0ZW4nLCAnaGlud2Vpc2Ut cHJvdG9rb2xsJywgJ21pdHRlaWx1bmdlbicsICdzdGF0aXN0aWstbGF5b3V0JywgJ3N0YW5kYXJk cmVjaHRlJ107CgpleHBvcnQgZnVuY3Rpb24gYWRtaW5TdWJ0YWJGaWx0ZXJBbndlbmRlbigpIHsK ICAgIGlmICghWi5yZWNodGUpIHJldHVybjsKICAgIGlmIChaLnJlY2h0ZS5pc3RTdXBlclVzZXIp IHsKICAgICAgICAvLyBTVTogYWxsZSB3aWVkZXIgc2ljaHRiYXIgbWFjaGVuICh3aWNodGlnIG5h Y2ggSW1wZXJzb25hdGlvbi1FbmRlKQogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo Jy5hZG1pbi1uYXYtYnRuJykuZm9yRWFjaChmdW5jdGlvbihidG4pIHsgYnRuLnN0eWxlLmRpc3Bs YXkgPSAnJzsgfSk7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkbWluLW5h di1ncnVwcGUnKS5mb3JFYWNoKGZ1bmN0aW9uKGcpIHsgZy5zdHlsZS5kaXNwbGF5ID0gJyc7IH0p OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBlcnN0ZXJFcmxhdWJ0ZXIgPSBudWxsOwog ICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkbWluLW5hdi1idG4nKS5mb3JFYWNoKGZ1 bmN0aW9uKGJ0bikgewogICAgICAgIHZhciBuYW1lID0gYnRuLmdldEF0dHJpYnV0ZSgnZGF0YS1h ZG1pbi10YWInKTsKICAgICAgICB2YXIgZXJsYXVidCA9IGRhcmZBZG1pblN1YnRhYihuYW1lKSAm JiBBRE1JTl9TVUJUQUJTX05JRU1BTFNfRlVFUl9GQUNIQVVGU0lDSFQuaW5kZXhPZihuYW1lKSA8 IDA7CiAgICAgICAgYnRuLnN0eWxlLmRpc3BsYXkgPSBlcmxhdWJ0ID8gJycgOiAnbm9uZSc7CiAg ICAgICAgaWYgKCFlcmxhdWJ0KSB7CiAgICAgICAgICAgIHZhciB0YWIgPSBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnYWRtaW4tdGFiLScgKyBuYW1lKTsKICAgICAgICAgICAgaWYgKHRhYikgdGFi LmNsYXNzTGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAgIH0gZWxzZSBpZiAoIWVyc3RlckVy bGF1YnRlcikgewogICAgICAgICAgICBlcnN0ZXJFcmxhdWJ0ZXIgPSBidG47CiAgICAgICAgfQog ICAgfSk7CiAgICAvLyBHcnVwcGVuLUhlYWRlciAoU2lkZWJhci1DbHVzdGVyKSBhdXRvLWhpZGVu LCB3ZW5uIGFsbGUgQnV0dG9ucyBpbgogICAgLy8gZGVyIEdydXBwZSB2ZXJzdGVja3Qgc2luZCDi gJQgc29uc3QgYmxlaWJ0IGVpbmUgVWViZXJzY2hyaWZ0IG9obmUKICAgIC8vIEluaGFsdCBzdGVo ZW4uCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWRtaW4tbmF2LWdydXBwZScpLmZv ckVhY2goZnVuY3Rpb24oZ3J1cHBlKSB7CiAgICAgICAgdmFyIGhhdFNpY2h0YmFyID0gZmFsc2U7 CiAgICAgICAgZ3J1cHBlLnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZG1pbi1uYXYtYnRuJykuZm9yRWFj aChmdW5jdGlvbihiKSB7CiAgICAgICAgICAgIGlmIChiLnN0eWxlLmRpc3BsYXkgIT09ICdub25l JykgaGF0U2ljaHRiYXIgPSB0cnVlOwogICAgICAgIH0pOwogICAgICAgIGdydXBwZS5zdHlsZS5k aXNwbGF5ID0gaGF0U2ljaHRiYXIgPyAnJyA6ICdub25lJzsKICAgIH0pOwogICAgLy8gRmFsbHMg YWt0dWVsbCBha3RpdmVyIFN1Yi1UYWIgdmVyc3RlY2t0IHd1cmRlOiB6dW0gZXJzdGVuIGVybGF1 YnRlbiBzcHJpbmdlbgogICAgdmFyIGFrdGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFk bWluLW5hdi1idG4uYWt0aXYnKTsKICAgIGlmIChha3RpdiAmJiBha3Rpdi5zdHlsZS5kaXNwbGF5 ID09PSAnbm9uZScgJiYgZXJzdGVyRXJsYXVidGVyKSBlcnN0ZXJFcmxhdWJ0ZXIuY2xpY2soKTsK fQoKLy8gPT09PT0gRWRpdC1CZXJlY2h0aWd1bmcgcHJvIFplbGxlID09PT09CgovLyBMaWVmZXJ0 IGFsbGUgUGVyc29uLUlEcywgZGllIG1pdCBkZW0gYWt0dWVsbGVuIFVzZXIgaW4gbWluZGVzdGVu cwovLyBlaW5lbSBNaWtyb3RlYW0gc2l0emVuLiBXaXJkIGluIGRhcmZaZWxsZUVkaXRpZXJlbiBi ZW51dHp0IOKAlCBqZWRlcgovLyBVc2VyIGRhcmYgc2VpbiBNaWtyb3RlYW0gbWl0LXBsYW5lbiAo VXNlci1XdW5zY2ggMjAyNi0wNS0yMykuCmV4cG9ydCBmdW5jdGlvbiBtZWluZU1pa3JvdGVhbVBl cnNvbklkcygpIHsKICAgIGlmICghWi5tZWluZVBlcnNvbklkIHx8ICFaLmFkbWluIHx8ICFaLmFk bWluLm1pa3JvdGVhbXMpIHJldHVybiBbXTsKICAgIHZhciBtZWluZSA9IE51bWJlcihaLm1laW5l UGVyc29uSWQpOwogICAgdmFyIGlkcyA9IFtdOwogICAgWi5hZG1pbi5taWtyb3RlYW1zLmZvckVh Y2goZnVuY3Rpb24odCkgewogICAgICAgIGlmICghdCB8fCAhdC5wZXJzb25JZHMgfHwgdC5wZXJz b25JZHMuaW5kZXhPZihtZWluZSkgPCAwKSByZXR1cm47CiAgICAgICAgdC5wZXJzb25JZHMuZm9y RWFjaChmdW5jdGlvbihwaWQpIHsKICAgICAgICAgICAgaWYgKGlkcy5pbmRleE9mKHBpZCkgPCAw KSBpZHMucHVzaChwaWQpOwogICAgICAgIH0pOwogICAgfSk7CiAgICByZXR1cm4gaWRzOwp9Cgov LyBQcnVlZnQsIG9iIGRlciBha3R1ZWxsZSBCZW51dHplciBlaW5lIGJlc3RpbW10ZSBaZWxsZSBl ZGl0aWVyZW4gZGFyZi4KLy8gU3VwZXJVc2VyOiBpbW1lci4gU29uc3QgZWlnZW5lIFplaWxlICsg TWlrcm90ZWFtLU1pdGdsaWVkZXIgKyBrb25maWd1cmllcnRlCi8vIExpc3RlbiAocGVyc29uZW5J ZHMgLyBkaWVuc3RncnVwcGVuIC8gc3RhbmRvcnRlIGF1cyBaLnJlY2h0ZS5lZGl0aWVyZW4pLgpl eHBvcnQgZnVuY3Rpb24gZGFyZlplbGxlRWRpdGllcmVuKHBlcnNvbklkKSB7CiAgICBpZiAoIVou cmVjaHRlKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoWi5yZWNodGUuZWRpdGllcmVuID09PSBudWxs IHx8IFoucmVjaHRlLmVkaXRpZXJlbiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTsgLy8gU3Vw ZXJVc2VyCiAgICBpZiAoWi5tZWluZVBlcnNvbklkICE9IG51bGwgJiYgU3RyaW5nKFoubWVpbmVQ ZXJzb25JZCkgPT09IFN0cmluZyhwZXJzb25JZCkpIHJldHVybiB0cnVlOwogICAgdmFyIHAgPSBa LnBlcnNvbmVuLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4gU3RyaW5nKHguaWQpID09PSBTdHJp bmcocGVyc29uSWQpOyB9KTsKICAgIGlmICghcCkgcmV0dXJuIGZhbHNlOwogICAgLy8gTWlrcm90 ZWFtOiBhbGxlIE1pdGdsaWVkZXIgZWluZXMgVGVhbXMgZHVlcmZlbiBkYXMgVGVhbSBnZW1laW5z YW0gcGxhbmVuLgogICAgaWYgKG1laW5lTWlrcm90ZWFtUGVyc29uSWRzKCkuaW5kZXhPZihOdW1i ZXIocC5pZCkpID49IDApIHJldHVybiB0cnVlOwogICAgdmFyIGVkID0gWi5yZWNodGUuZWRpdGll cmVuOwogICAgaWYgKChlZC5wZXJzb25lbklkcyB8fCBbXSkuaW5kZXhPZihOdW1iZXIocC5pZCkp ID49IDApIHJldHVybiB0cnVlOwogICAgaWYgKHAuZ3J1cHBlICYmIChlZC5kaWVuc3RncnVwcGVu IHx8IFtdKS5pbmRleE9mKHAuZ3J1cHBlKSA+PSAwKSByZXR1cm4gdHJ1ZTsKICAgIGlmIChwLm9l ICYmIChlZC5zdGFuZG9ydGUgfHwgW10pLmluZGV4T2YocC5vZSkgPj0gMCkgcmV0dXJuIHRydWU7 CiAgICByZXR1cm4gZmFsc2U7Cn0KCi8vID09PT09IEhlYWRlci1UYWItU2ljaHRiYXJrZWl0IChB ZG1pbi9TdGF0aXN0aWsvTG9nYnVjaC9CZXNldHp1bmcpID09PT09CgpleHBvcnQgZnVuY3Rpb24g bmF2U2ljaHRiYXJrZWl0QW53ZW5kZW4oKSB7CiAgICB2YXIgbmF2ID0gewogICAgICAgICduYXYt YWRtaW4nOiAgICAgICAgZGFyZkFkbWluVGFiKCksCiAgICAgICAgJ25hdi1zdGF0aXN0aWsnOiAg ICBkYXJmU3RhdGlzdGlrKCksCiAgICAgICAgJ25hdi1sb2didWNoJzogICAgICBkYXJmTG9nYnVj aCgpLAogICAgICAgICduYXYtYmVzZXR6dW5nJzogICAgISEoWi5yZWNodGUgJiYgWi5yZWNodGUu aXN0R2VzYW10dmVyYW50d29ydGxpY2gpCiAgICB9OwogICAgT2JqZWN0LmtleXMobmF2KS5mb3JF YWNoKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoaWQpOwogICAgICAgIGlmIChlbCkgZWwuc3R5bGUuZGlzcGxheSA9IG5hdltpZF0gPyAnJyA6 ICdub25lJzsKICAgIH0pOwoKICAgIC8vIFVYLUF1ZGl0IFNwcmludCAxLjMgKDIwMjYtMDUtMjkp OiBEZWZlbnNlLWluLURlcHRoLiBTZXJ2ZXIgZ2F0ZWQKICAgIC8vIGFsbGUgRGF0ZW4tRW5kcG9p bnRzLCBhYmVyIGRhcyBIVE1MLVNrZWxldHQgZGVyIEFkbWluLS9TdGF0aXN0aWstLwogICAgLy8g TG9nYnVjaC0vQmVzZXR6dW5nLVNla3Rpb25lbiBsaWVndCBpbSBET00gdW5kIGthbm4gei5CLiBi ZWkKICAgIC8vIGxhbmdzYW0tbGFkZW5kZW4gUmVjaHRlbiBrdXJ6IGF1ZmJsaXR6ZW4gb2RlciBw ZXIgRGV2VG9vbHMtCiAgICAvLyB2ZXJzdGVja3QtS2xhc3NlIGVudGZlcm50IHNpY2h0YmFyIHdl cmRlbi4gV2lyIHNldHplbiAudmVyc3RlY2t0CiAgICAvLyB1bmQgYXJpYS1oaWRkZW4genVzYWV0 emxpY2ggenVyIE5hdi1WZXJzdGVja3VuZy4KICAgIHZhciBhbnNpY2h0ZW4gPSB7CiAgICAgICAg J2Fuc2ljaHQtYWRtaW4nOiAgICAgIG5hdlsnbmF2LWFkbWluJ10sCiAgICAgICAgJ2Fuc2ljaHQt c3RhdGlzdGlrJzogIG5hdlsnbmF2LXN0YXRpc3RpayddLAogICAgICAgICdhbnNpY2h0LWxvZ2J1 Y2gnOiAgICBuYXZbJ25hdi1sb2didWNoJ10sCiAgICAgICAgJ2Fuc2ljaHQtYmVzZXR6dW5nJzog IG5hdlsnbmF2LWJlc2V0enVuZyddCiAgICB9OwogICAgdmFyIGFrdHVlbGxlVmVyc3RlY2t0ID0g ZmFsc2U7CiAgICBPYmplY3Qua2V5cyhhbnNpY2h0ZW4pLmZvckVhY2goZnVuY3Rpb24oaWQpIHsK ICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICAgICAgaWYg KCFlbCkgcmV0dXJuOwogICAgICAgIGlmICghYW5zaWNodGVuW2lkXSkgewogICAgICAgICAgICB2 YXIgd2FyU2ljaHRiYXIgPSAhZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCd2ZXJzdGVja3QnKTsKICAg ICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7CiAgICAgICAgICAgIGVsLnNl dEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpOwogICAgICAgICAgICBpZiAod2FyU2lj aHRiYXIpIGFrdHVlbGxlVmVyc3RlY2t0ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7CiAgICAgICAgfQogICAgfSk7 CiAgICAvLyBFZGdlLUNhc2U6IFBlcm1pc3Npb24gd3VyZGUgbGl2ZSBlbnR6b2dlbiB3YWVocmVu ZCBVc2VyIGF1ZiBkZXIKICAgIC8vIGpldHp0IHZlcmJvdGVuZW4gQW5zaWNodCBzdGVodC4gRmFs bGJhY2sgYXVmIFBsYW51bmcsIHNvbnN0IHNpZWh0CiAgICAvLyBlciBsZWVyZW4gQmlsZHNjaGly bS4KICAgIGlmIChha3R1ZWxsZVZlcnN0ZWNrdCkgewogICAgICAgIHZhciBwbGFudW5nID0gZG9j dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc2ljaHQtcGxhbnVuZycpOwogICAgICAgIGlmIChwbGFu dW5nKSBwbGFudW5nLmNsYXNzTGlzdC5yZW1vdmUoJ3ZlcnN0ZWNrdCcpOwogICAgfQp9CgovLyA9 PT09PSBWZXJiaW5kbGljaGtlaXRzZmVuc3RlciAoMTQgVGFnZSkgPT09PT0KCi8vIFRydWUsIHdl bm4gZGFzIERhdHVtIGlubmVyaGFsYiBkZXIgbmFlY2hzdGVuIDE0IFRhZ2UgKGlua2wuIGhldXRl KSBsaWVndC4KLy8gQWVuZGVydW5nZW4gaW4gZGllc2VtIEZlbnN0ZXIgc2luZCAidmVyYmluZGxp Y2giIOKAlCBBdWZydWVja2VyIGJla29tbWVuCi8vIGRhbm4gZGVuIFZlcmFudHdvcnR1bmdzLVVl YmVyZ2FuZy1NYWlsLURpYWxvZyAoc2llaGUgZ3JpZC9lZGl0b3IuanMpLgpleHBvcnQgZnVuY3Rp b24gZGF0dW1JblZlcmJpbmRsaWNoa2VpdChkYXR1bSkgewogICAgdmFyIHRlaWxlID0gZGF0dW0u c3BsaXQoJy0nKTsKICAgIGlmICh0ZWlsZS5sZW5ndGggIT09IDMpIHJldHVybiBmYWxzZTsKICAg IHZhciB6aWVsID0gbmV3IERhdGUoK3RlaWxlWzBdLCArdGVpbGVbMV0gLSAxLCArdGVpbGVbMl0p OwogICAgdmFyIGhldXRlID0gbmV3IERhdGUoKTsKICAgIGhldXRlLnNldEhvdXJzKDAsIDAsIDAs IDApOwogICAgdmFyIHRhZ2UgPSBNYXRoLnJvdW5kKCh6aWVsIC0gaGV1dGUpIC8gKDEwMDAgKiA2 MCAqIDYwICogMjQpKTsKICAgIHJldHVybiB0YWdlID49IDAgJiYgdGFnZSA8PSAxNDsKfQo= ### FILE: js/core_state.js | 1412 Ly8gPT09IGNvcmUvc3RhdGUuanMgPT09Ci8vIEdsb2JhbGVyIEFud2VuZHVuZ3MtWnVzdGFuZCBa IGRlciBWSTMtREdMLVBsYW51bmcuCi8vCi8vIFNjaHJlaWItWnVncmlmZiBwcm8gRmVsZCBpc3Qg aW4gZG9jcy9NT0RVTF9LQVJURS5tZCBkb2t1bWVudGllcnQKLy8gKExlc2UtWnVncmlmZiB1ZWJl cmFsbCwgU2NocmVpYi1adWdyaWZmIGxva2FsaXNpZXJ0KS4KCmV4cG9ydCB2YXIgWiA9IHsKICAg IGFkbWluOiBudWxsLAogICAgcGxhbnVuZzogbnVsbCwKICAgIHBlcnNvbmVuOiBbXSwKICAgIHRh Z2U6IFtdLAogICAgdGFnSW5mb3M6IHt9LAogICAgY29kZU1hcDoge30sCiAgICBncnVwcGVuTWFw OiB7fSwKICAgIGJlbnV0emVyOiAnJywKICAgIGhldXRlU3RyOiAnJywKICAgIC8vIERhdGVuLUNh Y2hlIGZ1ZXIgZGllIFN0YXRpc3RpayAoc2llaGUganMvc3RhdGlzdGlrLmpzKS4KICAgIHN0YXRp c3RpazogbnVsbCwKICAgIHVtZ2VzZXR6dGVFaW5ibGVuZGVuOiBmYWxzZSwKICAgIC8vIFp1Z2V3 aWVzZW4gaW4gZGF0ZW5MYWRlbigpIC8gaW1wZXJzb25hdGUqLUZ1bmt0aW9uZW46CiAgICByZWNo dGU6IG51bGwsCiAgICBtZWluZVBlcnNvbklkOiBudWxsLAogICAgLy8gWnVnZXdpZXNlbiB2b20g TW9kYWwtU3lzdGVtICh1aS9kaWFsb2cuanMsIFBoYXNlIDIpOgogICAgbW9kYWxEaXJ0eTogZmFs c2UsCiAgICBtb2RhbE9uU3BlaWNoZXJuOiBudWxsLAogICAgbW9kYWxTcGVpY2hlckZ1c3NIdG1s OiBudWxsLAogICAgbW9kYWxLZXk6IG51bGwsCiAgICAvLyBadWdld2llc2VuIHZvbSBIZWFydGJl YXQtV29ya2VyIChjb3JlL2RhdGVuTGFkZW4uanMsIFBoYXNlIDMpOgogICAgaGVhcnRiZWF0V29y a2VyOiBudWxsLAogICAgaGVhcnRiZWF0RmFsbGJhY2s6IG51bGwsCiAgICAvLyBMaXZlLVN5bmMg KFBoYXNlOiBTeW5jLVdvcmtlciwgc3luYy9zeW5jLWNsaWVudC5qcyk6CiAgICBzeW5jV29ya2Vy OiBudWxsLAogICAgbGFzdFN5bmNUczogJycsCiAgICBsYXN0U3luY1NlcTogbnVsbCwgICAgICAg ICAgICAgICAvLyBtb25vdG9uZSBTZXF1ZW56bnVtbWVyID0gcmFjZS1mcmVpZXIgTGl2ZS1TeW5j LUN1cnNvcgogICAgZnJlbWRlTG9ja3M6IHt9LCAgICAgICAgICAgICAgICAgLy8ga2V5ID0gIjxk YXR1bT58PHBlcnNvbklkPiIgLT4gTG9jay1PYmpla3QKICAgIHplbGxMb2NrOiB7IHRva2VuOiBu dWxsLCBkYXR1bTogJycsIHBlcnNvbklkOiAnJywgaGJUaW1lcjogbnVsbCB9LAogICAgLy8gSGlu d2Vpcy1TeXN0ZW0gKHNlcnZlci1zZWl0aWcgaW4gZGF0YS9oaW53ZWlzZS5qc29uIGdlZnVlaHJ0 LCB2b20KICAgIC8vIFN5bmMtV29ya2VyIGdlcG9sbHQpLiBOdXIgZnVlciBTVSArIEdlc2FtdHZl cmFudHdvcnRsaWNoZSBiZWZ1ZWxsdC4KICAgIGhpbndlaXNlOiBbXQp9Owo= ### FILE: js/core_util.js | 12046 Ly8gPT09IGNvcmUvdXRpbC5qcyA9PT0KLy8gRGF0dW0tLCBIVE1MLSB1bmQgUGVyc29uLUhlbHBl ciBzb3dpZSBTdGFtbS1Lb25zdGFudGVuCi8vIChGdW5rdGlvbmVuLCBEaWVuc3RncmFkZSkuCgpp bXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKCi8vID09PT09IFBlcnNvbi1JRC1L b252ZW50aW9uID09PT09CgovLyBLYW5vbmlzY2hlciBTdHJpbmctS2V5IGZ1ZXIgUGVyc29uLUlE cyBpbiBaLnBsYW51bmcuZWludHJhZWdlIHVuZAovLyBaLnBsYW51bmcua29tbWVudGFyZSAoYmVp ZGVzIHtkYXR1bToge3BpZDogLi4ufX0tRGljdHMpLiBKU09OLU9iamVjdC1LZXlzCi8vIHNpbmQg aW1tZXIgU3RyaW5ncyDigJQgd2VyIG1pdCBOdW1iZXItS2V5cyBhcmJlaXRldCwga3JpZWd0IHp3 YXIgaW1wbGl6aXQKLy8gU3RyaW5nLUtvbnZlcnRpZXJ1bmcsIGFiZXIgPT09IGF1ZiB6d2VpIFBl cnNvbi1JRHMgKHouQi4gcC5pZCBJbnQgdnMuCi8vIG0uemllbElkIFN0cmluZykgc2NobGFlZ3Qg ZmVobC4gS29udmVudGlvbjogdWViZXJhbGwgd28gZWluZSBwZXJzb25JZCB6dQovLyBlaW5lbSBM b29rdXAgb2RlciBWZXJnbGVpY2ggd2lyZCwgZHVyY2ggcGlkS2V5KCkgc2NoaWNrZW4uCi8vIEVp bmdlYmF1dCBpbiBTcHJpbnQgMiDigJQgRGF0ZW5tb2RlbGwtS29uc2lzdGVueiAoMjAyNi0wNS0y OCkuCmV4cG9ydCBmdW5jdGlvbiBwaWRLZXkoaWQpIHsKICAgIHJldHVybiBpZCA9PSBudWxsID8g JycgOiBTdHJpbmcoaWQpOwp9CgovLyA9PT09PSBSZW5kZXItRXJyb3ItV3JhcHBlciAoVVgtQXVk aXQgU3ByaW50IDEuMiwgMjAyNi0wNS0yOSkgPT09PT0KLy8KLy8gQ0xBVURFLm1kLUtvbnZlbnRp b246IFJlbmRlci1GdW5rdGlvbmVuIHdyYXBwZW4gKyBGZWhsZXJib3ggaW0gQ29udGFpbmVyCi8v IHN0YXR0IGxlZXJlciBUYWIuIExpZWZlcnQgZWluZSBzaWNodGJhcmUgRmVobGVyYm94IGluIGRl biBDb250YWluZXIgdW5kCi8vIGxvZ2d0IGRpZSBFeGNlcHRpb24gaW4gZGllIERldlRvb2xzLUNv bnNvbGUsIGRhbWl0IEJ1Z3MgbmljaHQgc3R1bW0gaW4KLy8gZWluZW0gYmxhbmtlbiBUYWIgdmVy c2Nod2luZGVuLgpleHBvcnQgZnVuY3Rpb24gcmVuZGVyRXJyb3JCb3goY29udGFpbmVyLCBmZWhs ZXIsIG1vZHVsbmFtZSkgewogICAgaWYgKCFjb250YWluZXIpIHJldHVybjsKICAgIHRyeSB7IGNv bnNvbGUuZXJyb3IoJ1tyZW5kZXI6JyArIG1vZHVsbmFtZSArICddJywgZmVobGVyKTsgfSBjYXRj aCAoXykge30KICAgIHZhciBtc2cgPSAoZmVobGVyICYmIGZlaGxlci5tZXNzYWdlKSA/IGZlaGxl ci5tZXNzYWdlIDogU3RyaW5nKGZlaGxlcik7CiAgICBjb250YWluZXIuaW5uZXJIVE1MID0KICAg ICAgICAnPGRpdiBjbGFzcz0icmVuZGVyLWZlaGxlci1ib3giIHJvbGU9ImFsZXJ0IiBhcmlhLWxp dmU9InBvbGl0ZSI+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJyZW5kZXItZmVobGVyLWlj b24iIGFyaWEtaGlkZGVuPSJ0cnVlIj7imqDvuI88L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9InJlbmRlci1mZWhsZXItdGV4dCI+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFz cz0icmVuZGVyLWZlaGxlci10aXRlbCI+QW56ZWlnZS1GZWhsZXIgaW4g4oCeJyArIGVzY2FwZUhU TUwobW9kdWxuYW1lIHx8ICc/JykgKyAnIjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYg Y2xhc3M9InJlbmRlci1mZWhsZXItZGV0YWlsIj4nICsgZXNjYXBlSFRNTChtc2cpICsgJzwvZGl2 PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InJlbmRlci1mZWhsZXItaGludCI+Qml0 dGUgU2VpdGUgbmV1IGxhZGVuLiBEZXRhaWxzIHN0ZWhlbiBpbiBkZXIgRGV2VG9vbHMtQ29uc29s ZSAoRjEyKS48L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICc8L2Rpdj4n Owp9CgovLyA9PT09PSBIVE1ML1N0cmluZy1Fc2NhcGluZyA9PT09PQoKZXhwb3J0IGZ1bmN0aW9u IGVzY2FwZUhUTUwoc3RyKSB7CiAgICBpZiAoc3RyID09IG51bGwgfHwgc3RyID09PSAnJykgcmV0 dXJuICcnOwogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAg ZGl2LnRleHRDb250ZW50ID0gU3RyaW5nKHN0cik7CiAgICByZXR1cm4gZGl2LmlubmVySFRNTDsK fQoKZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUF0dHIoc3RyKSB7CiAgICBpZiAoc3RyID09IG51bGwg fHwgc3RyID09PSAnJykgcmV0dXJuICcnOwogICAgcmV0dXJuIFN0cmluZyhzdHIpLnJlcGxhY2Uo LyYvZywgJyZhbXA7JykucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJiMz OTsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpOwp9CgovLyA9 PT09PSBEYXR1bSA9PT09PQoKZXhwb3J0IGZ1bmN0aW9uIGRhdHVtU3RyKGQpIHsKICAgIHZhciBt ID0gZC5nZXRNb250aCgpICsgMSwgdCA9IGQuZ2V0RGF0ZSgpOwogICAgcmV0dXJuIGQuZ2V0RnVs bFllYXIoKSArICctJyArIChtIDwgMTAgPyAnMCcgOiAnJykgKyBtICsgJy0nICsgKHQgPCAxMCA/ ICcwJyA6ICcnKSArIHQ7Cn0KCmV4cG9ydCBmdW5jdGlvbiBkYXR1bUZvcm1hdERFKHN0cikgewog ICAgaWYgKCFzdHIpIHJldHVybiAnJzsKICAgIHZhciB0ZWlsZSA9IHN0ci5zcGxpdCgnLScpOwog ICAgcmV0dXJuIHRlaWxlWzJdICsgJy4nICsgdGVpbGVbMV0gKyAnLicgKyB0ZWlsZVswXTsKfQoK ZXhwb3J0IGZ1bmN0aW9uIGRhdHVtS3VyekRFKGQpIHsKICAgIHZhciB0ID0gZC5nZXREYXRlKCks IG0gPSBkLmdldE1vbnRoKCkgKyAxOwogICAgcmV0dXJuICh0IDwgMTAgPyAnMCcgOiAnJykgKyB0 ICsgJy4nICsgKG0gPCAxMCA/ICcwJyA6ICcnKSArIG0gKyAnLic7Cn0KCmV4cG9ydCBmdW5jdGlv biB3b2NoZW50YWdLdXJ6KGQpIHsKICAgIHZhciBuID0gWydTbycsJ01vJywnRGknLCdNaScsJ0Rv JywnRnInLCdTYSddOwogICAgcmV0dXJuIG5bZC5nZXREYXkoKV07Cn0KCmV4cG9ydCBmdW5jdGlv biBpc3RXb2NoZW5lbmRlKGQpIHsgdmFyIHQgPSBkLmdldERheSgpOyByZXR1cm4gdCA9PT0gMCB8 fCB0ID09PSA2OyB9CgovLyBIZXV0aWdlIFNjaGljaHQgKEYvUy9OKSBlaW5lciBQZXJzb24gYXVz IGRlciBTdGFuZG9ydC1TY2hpY2h0Zm9sZ2UgYWJsZWl0ZW4uCi8vIFN0YW5kb3J0IGhhdCBzY2hp Y2h0Zm9sZ2VbZGF0dW1dID0gei5CLiAiQUJDIiAoR3J1cHBlIEE9RiwgQj1TLCBDPU4pIG9kZXIK Ly8gIkJDQSIgKEI9RiwgQz1TLCBBPU4pIG9kZXIgIkNBQiIuIFdlbm4gZGVyIEdydXBwZW4tQ29k ZSBuaWNodCBpbiBkZXIKLy8gUGVybXV0YXRpb24gc3RlaHQgKHouQi4gV0QvV0wvVkQpIG9kZXIg ZGVyIFN0YW5kb3J0IGVpbiBQb29sIG9obmUKLy8gU2NoaWNodGZvbGdlIGlzdCwgZ2lidCdzIGtl aW5lIGVpbmRldXRpZ2UgU2NoaWNodCDigJQgUnVlY2tnYWJlIG51bGwuCi8vIFdpY2h0aWc6IGln bm9yaWVydCBkZW4gVGFnZXNlaW50cmFnIOKAlCBsaWVmZXJ0IGRpZSBSb3RhdGlvbnMtU2NoaWNo dCBhdWNoCi8vIGZ1ZXIgd2ZyL2Rmci1UYWdlICh3YXMgc2llIHJlZ3VsYWVyIGFyYmVpdGVuIFdV RVJERU4pLgpleHBvcnQgZnVuY3Rpb24gcGVyc29uU2NoaWNodEFtKHBlcnNvbiwgZGF0dW0pIHsK ICAgIGlmICghcGVyc29uIHx8ICFwZXJzb24uZ3J1cHBlIHx8ICFwZXJzb24ub2UpIHJldHVybiBu dWxsOwogICAgdmFyIHN0YW5kb3J0ID0gKFouYWRtaW4uc3RhbmRvcnRlIHx8IFtdKS5maW5kKGZ1 bmN0aW9uKHMpIHsgcmV0dXJuIChzLmt1ZXJ6ZWwgfHwgJycpID09PSBwZXJzb24ub2U7IH0pOwog ICAgaWYgKCFzdGFuZG9ydCB8fCBzdGFuZG9ydC5pc3RQb29sKSByZXR1cm4gbnVsbDsKICAgIHZh ciBwZXJtID0gKHN0YW5kb3J0LnNjaGljaHRmb2xnZSB8fCB7fSlbZGF0dW1dOwogICAgaWYgKCFw ZXJtIHx8IHR5cGVvZiBwZXJtICE9PSAnc3RyaW5nJyB8fCBwZXJtLmxlbmd0aCAhPT0gMykgcmV0 dXJuIG51bGw7CiAgICB2YXIgcG9zID0gcGVybS5pbmRleE9mKHBlcnNvbi5ncnVwcGUpOwogICAg aWYgKHBvcyA8IDApIHJldHVybiBudWxsOwogICAgcmV0dXJuIFsnRicsICdTJywgJ04nXVtwb3Nd Owp9CgovLyA9PT09PSBTdGFtbS1Lb25zdGFudGVuID09PT09CgovLyBTdGFtbS1GdW5rdGlvbmVu IGVpbmVyIFBlcnNvbi4gRGVyIFJhbmcgYmVzdGltbXQgZGllIFJlaWhlbmZvbGdlIGluIGRlcgov LyAiYWt0aXZlbiBGdWVocnVuZyIgZWluZXIgU2NoaWNodDogREdMICgwKSA+IFdERiAoMSkgPiAz LiBQZXJzb24gKDIpID4KLy8gV2FjaGxlaXR1bmcvR3J1cHBlbmZ1ZWhydW5nICgzKS4gR2xlaWNo ZSBSYW5nd2VydGUgc2luZCBnbGVpY2h3ZXJ0aWcKLy8gKERHTC9ER0xpbiwgV0RGL1dERmluLCAz LiBNYW5uLzMuIEZyYXUpIHVuZCB3ZXJkZW4gaW5uZXJoYWxiIGR1cmNoIGRpZQovLyByb2hlIHBv c2l0aW9uLVphaGwgc29ydGllcnQuCi8vCi8vIEFiIDIwMjYtMDUtMTkgc2luZCBGVU5LVElPTkVO IHVuZCBESUVOU1RHUkFERSBrZWluZSByZWluZW4gQ29kZS0KLy8gS29uc3RhbnRlbiBtZWhyLCBz b25kZXJuIERFRkFVTFRTLCBkaWUgZGVyIEFkbWluIGluIEFkbWluIC0+IEJlemVpY2gtCi8vIG51 bmdlbiAmIExpc3RlbiB1ZWJlcnNjaHJlaWJlbiBrYW5uLiBMaXZlLVdlcnRlIGxpZWdlbiBpbgov LyBaLmFkbWluLmZ1bmt0aW9uZW4gYnp3LiBaLmFkbWluLmRpZW5zdGdyYWRlLiBGYWxscyBkaWUg YWRtaW4uanNvbgovLyBrZWluIGVpZ2VuZXMgRmVsZCB0cmFlZ3QgKHouQi4gZnJpc2NoZSBJbnN0 YWxsYXRpb24pLCBncmVpZnQgZGVyCi8vIERlZmF1bHQgYXVzIGRpZXNlciBEYXRlaS4KLy8gUHJv IEZ1bmt0aW9uOiBjb2RlLCByYW5nLCBvcHRpb25hbCBpblBsYW51bmcgKERlZmF1bHQgdHJ1ZSku IFdlbm4KLy8gaW5QbGFudW5nPWZhbHNlLCB3ZXJkZW4gUGVyc29uZW4gbWl0IGRpZXNlciBGdW5r dGlvbiBuaWNodCBpbiBkZXIKLy8gUGxhbnVuZ3NhbnNpY2h0IC8gV29jaGVucGxhbiAvIFBlcnMu IFBsYW4gYXVzZ2V3aWVzZW4g4oCUIHNpZSBibGVpYmVuCi8vIGluIGRlciBQZXJzb25hbHZlcndh bHR1bmcgcGZsZWdiYXIuCmV4cG9ydCB2YXIgRlVOS1RJT05FTl9ERUZBVUxUID0gWwogICAgeyBj b2RlOiAnTC9EaXJWJywgICAgICAgICByYW5nOiAtMiwgaW5QbGFudW5nOiBmYWxzZSB9LAogICAg eyBjb2RlOiAnTC9WSTMnLCAgICAgICAgICByYW5nOiAtMSwgaW5QbGFudW5nOiBmYWxzZSB9LAog ICAgeyBjb2RlOiAnREdMJywgICAgICAgICAgICByYW5nOiAwIH0sCiAgICB7IGNvZGU6ICdER0xp bicsICAgICAgICAgIHJhbmc6IDAgfSwKICAgIHsgY29kZTogJ1dERicsICAgICAgICAgICAgcmFu ZzogMSB9LAogICAgeyBjb2RlOiAnV0RGaW4nLCAgICAgICAgICByYW5nOiAxIH0sCiAgICB7IGNv ZGU6ICczLiBNYW5uJywgICAgICAgIHJhbmc6IDIgfSwKICAgIHsgY29kZTogJzMuIEZyYXUnLCAg ICAgICAgcmFuZzogMiB9LAogICAgeyBjb2RlOiAnV2FjaGxlaXR1bmcnLCAgICByYW5nOiAzIH0s CiAgICB7IGNvZGU6ICdHcnVwcGVuZsO8aHJ1bmcnLCByYW5nOiAzIH0KXTsKCi8vIEhlbHBlcjog bGllZmVydCB0cnVlLCB3ZW5uIGVpbmUgRnVua3Rpb24gaW4gZGVyIFBsYW50YWZlbCBhbmdlemVp Z3QKLy8gd2VyZGVuIGRhcmYuIERlZmF1bHQgdHJ1ZSAodW5iZWthbm50ZSBGdW5rdGlvbiAvIGtl aW4gRWludHJhZykuCmV4cG9ydCBmdW5jdGlvbiBmdW5rdGlvbkluUGxhbnVuZyhjb2RlKSB7CiAg ICBpZiAoIWNvZGUpIHJldHVybiB0cnVlOwogICAgdmFyIGxpc3RlID0gZ2V0RnVua3Rpb25lbigp OwogICAgdmFyIGYgPSBsaXN0ZS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguY29kZSA9PT0g Y29kZTsgfSk7CiAgICBpZiAoIWYpIHJldHVybiB0cnVlOwogICAgcmV0dXJuIGYuaW5QbGFudW5n ICE9PSBmYWxzZTsKfQoKLy8gUmVsZXZhbnRlIERpZW5zdGdyYWRlIGJlaSBWSTMgKFBPSyBiaXMg TFBEaW4sIGpld2VpbHMgbS93KS4gUmVpaGVuZm9sZ2UKLy8gQUJTVEVJR0VORCBpbSBSYW5nIChM UERpbiB6dWVyc3QpLCBqZXdlaWxzIG1hc2t1bGluZSB1bmQgZmVtaW5pbmUgRm9ybQovLyB6dXNh bW1lbiBncnVwcGllcnQuIFBISyogPSBBMTIgKHp3aXNjaGVuIFBISyBBMTEgdW5kIEVQSEsgQTEz KS4KLy8gUEQgPSBQb2xpemVpZGlyZWt0b3IvaW4gKEExNSksIExQRGluID0gTGVpdGVuZGUgUG9s aXplaWRpcmVrdG9yaW4gKEExNikuCmV4cG9ydCB2YXIgRElFTlNUR1JBREVfREVGQVVMVCA9IFsn TFBEaW4nLCAnUEQnLCAiRVBISydpbiIsICdFUEhLJywgIlBISyonaW4iLCAnUEhLKicsICJQSEsn aW4iLCAnUEhLJywgIlBPSydpbiIsICdQT0snXTsKCi8vIEhlbHBlcjogbGllZmVydCBkaWUgYWt0 dWVsbCBrb25maWd1cmllcnRlIExpc3RlLCBtaXQgRGVmYXVsdCBhbHMgRmFsbGJhY2suCi8vIEF1 ZnJ1ZmVyIGJlbnV0emVuIElNTUVSIGRpZXNlIEZ1bmt0aW9uZW4gc3RhdHQgZGVyIERFRkFVTFQt S29uc3RhbnRlbi4KZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bmt0aW9uZW4oKSB7CiAgICB2YXIgZiA9 IFouYWRtaW4gJiYgWi5hZG1pbi5mdW5rdGlvbmVuOwogICAgaWYgKEFycmF5LmlzQXJyYXkoZikg JiYgZi5sZW5ndGgpIHJldHVybiBmOwogICAgcmV0dXJuIEZVTktUSU9ORU5fREVGQVVMVDsKfQpl eHBvcnQgZnVuY3Rpb24gZ2V0RGllbnN0Z3JhZGUoKSB7CiAgICB2YXIgZCA9IFouYWRtaW4gJiYg Wi5hZG1pbi5kaWVuc3RncmFkZTsKICAgIGlmIChBcnJheS5pc0FycmF5KGQpICYmIGQubGVuZ3Ro KSByZXR1cm4gZDsKICAgIHJldHVybiBESUVOU1RHUkFERV9ERUZBVUxUOwp9CgpleHBvcnQgZnVu Y3Rpb24gZnVua3Rpb25zUmFuZyhjb2RlKSB7CiAgICB2YXIgZiA9IGdldEZ1bmt0aW9uZW4oKS5m aW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguY29kZSA9PT0gY29kZTsgfSk7CiAgICByZXR1cm4g ZiA/IGYucmFuZyA6IDk5Owp9CgoKLy8gPT09PT0gUHJvZmlsYmlsZGVyIChBdmF0YXJlKSA9PT09 PQovLwovLyBTcGVpY2hlci1QZmFkIHNlcnZlcnNlaXRpZzogVkkzL2RhdGEvYXZhdGFycy88aWQ+ LmpwZwovLyBQZXJzb24tRGF0ZW5zYXR6IGZ1ZWhydCBhdmF0YXJUcyAobXMtVGltZXN0YW1wKTog d2lyIGhhZW5nZW4gZGFzIGFuCi8vIGRpZSBVUkwgYWxzIENhY2hlLUJ1c3Rlci4gT2huZSBhdmF0 YXJUcyAtPiBrZWluIEJpbGQgLT4gSW5pdGlhbGVuLQovLyBGYWxsYmFjayBtaXQgc3RhYmlsZXIg RmFyYmUgKEhhc2ggYXVzIFBlcnNvbklkIG1vZHVsbyBGYXJiLVBhbGV0dGUpLgoKZXhwb3J0IGZ1 bmN0aW9uIGF2YXRhclVybChwKSB7CiAgICBpZiAoIXAgfHwgIXAuYXZhdGFyVHMpIHJldHVybiAn JzsKICAgIHJldHVybiAnL2RhdGEvYXZhdGFycy8nICsgcC5pZCArICcuanBnP3RzPScgKyBwLmF2 YXRhclRzOwp9CgpleHBvcnQgZnVuY3Rpb24gYXZhdGFySW5pdGlhbGVuKHApIHsKICAgIGlmICgh cCkgcmV0dXJuICc/JzsKICAgIHZhciB2ID0gKHAudm9ybmFtZSB8fCAnJykudHJpbSgpOwogICAg dmFyIG4gPSAocC5uYW1lIHx8ICcnKS50cmltKCk7CiAgICB2YXIgaSA9ICcnOwogICAgaWYgKHYp IGkgKz0gdi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsKICAgIGlmIChuKSBpICs9IG4uY2hhckF0 KDApLnRvVXBwZXJDYXNlKCk7CiAgICByZXR1cm4gaSB8fCAnPyc7Cn0KCi8vIEVpbmhlaXRsaWNo ZSBBbnRocmF6aXQtRmFyYmUgZnVlciBhbGxlIEluaXRpYWxlbi1BdmF0YXJlIOKAlCB1bmlmb3Jt ZXMKLy8gRGVzaWduIHN0YXR0IGJ1bnRlciBIYXNoLVBhbGV0dGUgKFVzZXItRmVlZGJhY2sgMjAy Ni0wNS0yMykuCnZhciBBVkFUQVJfRkFSQkVfREVGQVVMVCA9ICcjM0EzRjQ3JzsKCmV4cG9ydCBm dW5jdGlvbiBhdmF0YXJLcmVpc0h0bWwocCwgZ3JvZXNzZSkgewogICAgaWYgKCFwKSByZXR1cm4g Jyc7CiAgICB2YXIgc2l6ZSA9IGdyb2Vzc2UgfHwgMjY7CiAgICB2YXIgdXJsID0gYXZhdGFyVXJs KHApOwogICAgLy8gUm91bmRlZCBzcXVhcmUgKGJvcmRlci1yYWRpdXMgbmljaHQgNTAlLCBzb25k ZXJuIHByb3BvcnRpb25hbCB6dXIKICAgIC8vIEdyb2Vzc2Ug4oCUIGdsZWljaGVyIHZpc3VlbGxl ciBTdGlsIGJlaSBrbGVpbmVuIHVuZCBncm9zc2VuIEF2YXRhcmVuKS4KICAgIHZhciByYWRpdXMg PSBNYXRoLm1heCgzLCBNYXRoLnJvdW5kKHNpemUgKiAwLjE4KSk7CiAgICB2YXIgc3R5bGUgPSAn d2lkdGg6JyArIHNpemUgKyAncHg7aGVpZ2h0OicgKyBzaXplICsgJ3B4O2ZvbnQtc2l6ZTonICsg TWF0aC5yb3VuZChzaXplICogMC40MikgKyAncHg7Ym9yZGVyLXJhZGl1czonICsgcmFkaXVzICsg J3B4JzsKICAgIGlmICh1cmwpIHsKICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSJ2aTMtYXZh dGFyIHZpMy1hdmF0YXItYmlsZCIgc3R5bGU9IicgKyBzdHlsZSArICc7YmFja2dyb3VuZC1pbWFn ZTp1cmwoXCcnICsgZXNjYXBlQXR0cih1cmwpICsgJ1wnKSI+PC9zcGFuPic7CiAgICB9CiAgICBy ZXR1cm4gJzxzcGFuIGNsYXNzPSJ2aTMtYXZhdGFyIHZpMy1hdmF0YXItaW5pdGlhbGVuIiBzdHls ZT0iJyArIHN0eWxlICsgJztiYWNrZ3JvdW5kOicgKyBBVkFUQVJfRkFSQkVfREVGQVVMVCArICci PicgKyBlc2NhcGVIVE1MKGF2YXRhckluaXRpYWxlbihwKSkgKyAnPC9zcGFuPic7Cn0KCi8vID09 PT09IFBlcnNvbi1BbnplaWdlID09PT09CgovLyBBbnplaWdlLU5hbWUgZWluZXIgUGVyc29uIChE aWVuc3RncmFkICsgVm9ybmFtZSArIE5hY2huYW1lKS4KZXhwb3J0IGZ1bmN0aW9uIF9wZXJzb25B bnplaWdlKHApIHsKICAgIGlmICghcCkgcmV0dXJuICfigJQnOwogICAgdmFyIHZvbGwgPSAoKHAu dm9ybmFtZSB8fCAnJykgKyAnICcgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgpOwogICAgcmV0dXJu IHAuZGllbnN0Z3JhZCA/IHAuZGllbnN0Z3JhZCArICcgJyArIHZvbGwgOiB2b2xsOwp9CgovLyBX YW5kZWx0IGVpbmUgTlctS2VubnVuZyB3aWUgIlBPTElaRUlcbncwNTU4MDEiIG9kZXIgIm53MDU1 ODAxIiBpbiBkZW4KLy8gS2xhcm5hbWVuICgiU2FiaW5lIFJhdWRzenVzIikgdW0sIGluZGVtIFou cGVyc29uZW4gKyBBZG1pbi1MaXN0ZW4gbmFjaAovLyBwYXNzZW5kZXIgbndLZW5udW5nIGR1cmNo c3VjaHQgd2VyZGVuLiBGYWxsYmFjazogZGllIEtlbm51bmcgc2VsYnN0Ci8vIChvaG5lIERvbWFp bi1QcmVmaXgsIGRhbWl0IGRlciBUb2FzdCBuaWNodCBzbyB0ZWNobmlzY2ggd2lya3QpLgpleHBv cnQgZnVuY3Rpb24gYW56ZWlnZU5hbWVGdWVyS2VubnVuZyhrZW5udW5nKSB7CiAgICBpZiAoIWtl bm51bmcpIHJldHVybiAnJzsKICAgIHZhciBrID0gU3RyaW5nKGtlbm51bmcpLnRvTG93ZXJDYXNl KCk7CiAgICB2YXIga0t1cnogPSBrLmluZGV4T2YoJ1xcJykgPj0gMCA/IGsuc3BsaXQoJ1xcJyku cG9wKCkgOiBrOwogICAgZnVuY3Rpb24gbWF0Y2goZWludHJhZ0tlbm51bmcpIHsKICAgICAgICBp ZiAoIWVpbnRyYWdLZW5udW5nKSByZXR1cm4gZmFsc2U7CiAgICAgICAgdmFyIGUgPSBTdHJpbmco ZWludHJhZ0tlbm51bmcpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgcmV0dXJuIGUgPT09IGsgfHwg ZSA9PT0ga0t1cnogfHwgay5lbmRzV2l0aCgnXFwnICsgZSkgfHwga0t1cnogPT09IGU7CiAgICB9 CiAgICB2YXIgcCA9IChaLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJu IG1hdGNoKHgubndLZW5udW5nKTsgfSk7CiAgICBpZiAocCkgewogICAgICAgIHZhciB2b2xsID0g KChwLnZvcm5hbWUgfHwgJycpICsgJyAnICsgKHAubmFtZSB8fCAnJykpLnRyaW0oKTsKICAgICAg ICBpZiAodm9sbCkgcmV0dXJuIHZvbGw7CiAgICB9CiAgICB2YXIgZmEgPSAoWi5hZG1pbiAmJiBa LmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBtYXRj aCh4Lm53S2VubnVuZyk7IH0pOwogICAgaWYgKGZhICYmIGZhLm5hbWUpIHJldHVybiBmYS5uYW1l OwogICAgdmFyIHN1ID0gKFouYWRtaW4gJiYgWi5hZG1pbi5zdXBlclVzZXIgfHwgW10pLmZpbmQo ZnVuY3Rpb24oeCkgeyByZXR1cm4gbWF0Y2goeC5ud0tlbm51bmcpOyB9KTsKICAgIGlmIChzdSAm JiBzdS5uYW1lKSByZXR1cm4gc3UubmFtZTsKICAgIHJldHVybiBrS3VyeiB8fCBTdHJpbmcoa2Vu bnVuZyk7Cn0KCi8vIEUtTWFpbC1BZHJlc3NlIGRlcyBlaW5nZWxvZ2d0ZW4gUGxhbmVuZGVuIChm dWVyIENDIGJlaSBWZXJhbnR3b3J0dW5ncy1NYWlscykuCi8vIEJldm9yenVndCBkaWUgenVnZW9y ZG5ldGUgUGxhbi1QZXJzb24sIHNvbnN0IE1hdGNoIHVlYmVyIGRpZSBOVy1LZW5udW5nIGluCi8v IFBlcnNvbmVuIC8gRmFjaGF1ZnNpY2h0IC8gU3VwZXJVc2VyLiAnJyB3ZW5uIG5pY2h0cyBoaW50 ZXJsZWd0LgpleHBvcnQgZnVuY3Rpb24gYXVzbG9lc2VyRW1haWxFcm1pdHRlbG4oKSB7CiAgICBp ZiAoWi5tZWluZVBlcnNvbklkICE9IG51bGwpIHsKICAgICAgICB2YXIgbXAgPSAoWi5wZXJzb25l biB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBTdHJpbmcoeC5pZCkgPT09IFN0cmlu ZyhaLm1laW5lUGVyc29uSWQpOyB9KTsKICAgICAgICBpZiAobXAgJiYgbXAuZW1haWwpIHJldHVy biBtcC5lbWFpbDsKICAgIH0KICAgIHZhciBiID0gKFouYmVudXR6ZXIgfHwgJycpLnRvTG93ZXJD YXNlKCk7CiAgICB2YXIgYkt1cnogPSBiLnNwbGl0KCdcXCcpLnBvcCgpOwogICAgZnVuY3Rpb24g bWF0Y2goaykgeyBpZiAoIWspIHJldHVybiBmYWxzZTsgayA9IFN0cmluZyhrKS50b0xvd2VyQ2Fz ZSgpOyByZXR1cm4gayA9PT0gYiB8fCBrID09PSBiS3VyeiB8fCBiLmVuZHNXaXRoKCdcXCcgKyBr KTsgfQogICAgdmFyIHAgPSAoWi5wZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJl dHVybiBtYXRjaCh4Lm53S2VubnVuZykgJiYgeC5lbWFpbDsgfSk7CiAgICBpZiAocCkgcmV0dXJu IHAuZW1haWw7CiAgICB2YXIgZmEgPSAoWi5hZG1pbiAmJiBaLmFkbWluLmZhY2hhdWZzaWNodCB8 fCBbXSkuZmluZChmdW5jdGlvbih4KSB7IHJldHVybiBtYXRjaCh4Lm53S2VubnVuZykgJiYgeC5l bWFpbDsgfSk7CiAgICBpZiAoZmEpIHJldHVybiBmYS5lbWFpbDsKICAgIHZhciBzdSA9IChaLmFk bWluICYmIFouYWRtaW4uc3VwZXJVc2VyIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJu IG1hdGNoKHgubndLZW5udW5nKSAmJiB4LmVtYWlsOyB9KTsKICAgIGlmIChzdSkgcmV0dXJuIHN1 LmVtYWlsOwogICAgcmV0dXJuICcnOwp9CgovLyBGaW5kZXQgZGVuIEFkbWluLUxpc3Rlbi1FaW50 cmFnIChGYWNoYXVmc2ljaHQgb2RlciBTdXBlclVzZXIpLCBkZXIgenVyCi8vIGFrdHVlbGxlbiBO Vy1LZW5udW5nIHBhc3N0IOKAlCBmdWVyIEFic2VuZGVyLU5hbWUgaW4gZGVyIGdlbmVyaWVydGVu IE1haWwuCmV4cG9ydCBmdW5jdGlvbiBhYnNlbmRlck5hbWVFcm1pdHRlbG4oKSB7CiAgICB2YXIg YiA9IChaLmJlbnV0emVyIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGJLdXJ6ID0gYi5z cGxpdCgnXFwnKS5wb3AoKTsKICAgIGZ1bmN0aW9uIG1hdGNoS2VubnVuZyhrKSB7CiAgICAgICAg aWYgKCFrKSByZXR1cm4gZmFsc2U7CiAgICAgICAgayA9IGsudG9Mb3dlckNhc2UoKTsKICAgICAg ICByZXR1cm4gayA9PT0gYiB8fCBrID09PSBiS3VyeiB8fCBiLmVuZHNXaXRoKCdcXCcgKyBrKTsK ICAgIH0KICAgIHZhciBmYSA9IG51bGw7CiAgICAoWi5hZG1pbi5mYWNoYXVmc2ljaHQgfHwgW10p LmZvckVhY2goZnVuY3Rpb24oZikgeyBpZiAobWF0Y2hLZW5udW5nKGYubndLZW5udW5nKSkgZmEg PSBmOyB9KTsKICAgIGlmIChmYSAmJiBmYS5uYW1lKSByZXR1cm4gZmEubmFtZTsKICAgIHZhciBz dSA9IG51bGw7CiAgICAoWi5hZG1pbi5zdXBlclVzZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24o cykgeyBpZiAobWF0Y2hLZW5udW5nKHMubndLZW5udW5nKSkgc3UgPSBzOyB9KTsKICAgIGlmIChz dSAmJiBzdS5uYW1lKSByZXR1cm4gc3UubmFtZTsKICAgIHJldHVybiBaLmJlbnV0emVyIHx8ICdW STMgREdMLVBsYW51bmcnOwp9Cg== ### FILE: js/email_vorlagen.js | 41671 Ly8gPT09IGVtYWlsL2VtYWlsLXZvcmxhZ2VuLmpzID09PQovLyBTdGFuZDogMjAyNi0wNS0xNAov LyBWSTMtc3BlemlmaXNjaDogRS1NYWlsLVZvcmxhZ2VuIChEZWZhdWx0cyArIGFkbWluLmpzb24t T3ZlcnJpZGUpIHVuZAovLyBtYWlsdG86LUF1dG8tVHJpZ2dlci1EaXNwYXRjaGVyIGZ1ZXIgS3Jh bmttZWxkdW5nLCBJZGVudGl0YWV0cy0vUm9sbGVuLQovLyBBZW5kZXJ1bmcsIEJhY2t1cC1XaWVk ZXJoZXJzdGVsbHVuZywgUGxhbnVuZ3MtUmVzZXQsIERlZml6aXQtQnJpZWZpbmcsCi8vIFZlcmFu dHdvcnR1bmdzLVVlYmVyZ2FuZywgQmVzZXR6dW5ncy1BbmZyYWdlLiBWZXJzYW5kOiBhdXNzY2hs aWVzc2xpY2gKLy8gbWFpbHRvOjsgZGVyIFVzZXIgcHJ1ZWZ0IGRpZSBNYWlsIGluIE91dGxvb2sg dW5kIHNlbmRldCBtYW51ZWxsLgovLwovLyBIb29rczogaHRtbEF1c0ZlbGQgKFBoYXNlIDgg4oCU IGFkbWluLUhlbHBlciwgZGVyIERlZmF1bHQtUGxhaW50ZXh0IHp1Ci8vIEhUTUwga29udmVydGll cnQgYmVpbSBNb2RhbC1PcGVuKS4KCmltcG9ydCB7IFogfSBmcm9tICcuL2NvcmVfc3RhdGUuanMn OwppbXBvcnQgeyBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBhYnNlbmRlck5hbWVFcm1pdHRlbG4g fSBmcm9tICcuL2NvcmVfdXRpbC5qcyc7CmltcG9ydCB7IHRvYXN0LCBtb2RhbFplaWdlbiwgbW9k YWxTY2hsaWVzc2VuLCBlbnR3dXJmTG9lc2NoZW4gfSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7Cmlt cG9ydCB7IHNhbml0aXplUmljaEh0bWwsIHJ0ZUluaXQgfSBmcm9tICcuL3VpX3J0ZS5qcyc7Cmlt cG9ydCB7IGFwaVB1dCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwoKLy8gPT09PT0gSG9va3MgPT09 PT0KCmV4cG9ydCB2YXIgZW1haWxIb29rcyA9IHsKICAgIGh0bWxBdXNGZWxkOiBudWxsICAvLyBQ aGFzZSA4OiBrb252ZXJ0aWVydCBQbGFpbi1UZXh0LUZlbGQgenUgSFRNTCBmdWVyIGRlbiBSVEUt RWRpdG9yCn07CgovLyA9PT09PSBLb25zdGFudGVuID09PT09CgovLyBEZWZhdWx0LVRlbXBsYXRl LCBkYXMgZ3JlaWZ0IHdlbm4gaW4gYWRtaW4uanNvbiBub2NoIG5pY2h0cyBlaW5nZXRyYWdlbiBp c3QuCi8vIFZhcmlhYmxlbiBzaWVoZSBIaW53ZWlzdGV4dCBpbSBBZG1pbi1UYWIgYnp3LiBlbWFp bFZvcmxhZ2VCZWZ1ZWxsZW4oKS4KLy8gQWxsZSBWb3JsYWdlbi1UZXh0ZSBzaW5kIGluIGRlciBE dS1Gb3JtIGZvcm11bGllcnQg4oCUIGtvbGxlZ2lhbCwKLy8gZnJldW5kbGljaCwgcHJvZmVzc2lv bmVsbC4gTWFpbHRvOi1CdWlsZGVyIGZ1ZXIgZGllIFNhbW1lbC1WYXJpYW50ZQovLyAoc2FtbWVs QW5mcmFnZU1haWxPZWZmbmVuIGluIGJlc2V0enVuZy5qcykgcHJ1ZWZ0LCBvYiBudXIgZWluCi8v IEVtcGZhZW5nZXIgYXVzZ2V3YWVobHQgaXN0IHVuZCBlcnNldHp0ICdIYWxsbyB6dXNhbW1lbicg aW1wbGl6aXQKLy8gZHVyY2ggJ0hhbGxvIHtlbXBmYWVuZ2VyX3Zvcm5hbWV9JyB2aWEgQ29udGV4 dC1WYXJpYWJsZS4KZXhwb3J0IHZhciBFTUFJTF9WT1JMQUdFTl9ERUZBVUxUID0gewogICAgLy8g U2FtbWVsLUFuZnJhZ2UgKG1laHJlcmUgS2FuZGlkYXRlbiBnbGVpY2h6ZWl0aWcpOiBQbHVyYWwt QW5yZWRlLAogICAgLy8gRW1wZmFlbmdlciBhbHMgQkNDIChEYXRlbnNjaHV0ejogYW5kZXJlIEFk cmVzc2F0ZW4gbmljaHQgc2ljaHRiYXIpLgogICAgLy8gV2lyZCBiZW51dHp0LCB3ZW5uIGF1cyBk ZW0gVGFnLURldGFpbCBtZWhyZXJlIFBlcnNvbmVuIG1hcmtpZXJ0CiAgICAvLyB3ZXJkZW4g4oCU IFNpbmd1bGFyLVZhcmlhbnRlICdiZXNldHp1bmdzQW5mcmFnZV9laW56ZWxuJyBzaWVoZSB1bnRl bi4KICAgIGJlc2V0enVuZ3NBbmZyYWdlOiB7CiAgICAgICAgYmV0cmVmZjogJ0F1c2hpbGZlIGdl c3VjaHQ6IHtzY2hpY2h0fXNjaGljaHQgYW0ge2RhdHVtfSAoe2lzdH0ve3NvbGx9KScsCiAgICAg ICAgdGV4dDogJ0hhbGxvIHp1c2FtbWVuLFxuXG4nICsKICAgICAgICAgICAgICAnYW0ge2RhdHVt fSAoe3dvY2hlbnRhZ30pIGlzdCBkaWUge3NjaGljaHR9c2NoaWNodCBha3R1ZWxsIHVudGVyYmVz ZXR6dCDigJQgbnVyIHtpc3R9IHZvbiB7c29sbH0gRsO8aHJ1bmdza3LDpGZ0ZW4gZWluZ2VwbGFu dC5cblxuJyArCiAgICAgICAgICAgICAgJ0lociBoYWJ0IGFuIGRlbSBUYWcgamV3ZWlscyBkaWVu c3RmcmVpIG9kZXIgd2FjaGZyZWkgZWluZ2V0cmFnZW4uIE1hZyBqZW1hbmQgdm9uIEV1Y2ggbm9j aCBlaW5tYWwgc2NoYXVlbiwgb2IgZXIgb2RlciBzaWUgYW4gZGVtIFRhZyBhdXNoZWxmZW4ga8O2 bm50ZT8gSWNoIHdlacOfLCBkYXMgaXN0IGt1cnpmcmlzdGlnIOKAlCB3ZW5uIGVzIGJlaSBuaWVt YW5kZW0gcGFzc3QsIGlzdCBkYXMgYXVjaCBpbiBPcmRudW5nLCBkYW5uIGZyYWdlIGljaCB3ZWl0 ZXIuXG5cbicgKwogICAgICAgICAgICAgICdCZWkgRnJhZ2VuIG9kZXIga3VyemVtIFRlbGVmb25h dDogbWVsZGV0IGV1Y2ggZWluZmFjaC5cblxuJyArCiAgICAgICAgICAgICAgJ0RhbmtlIHVuZCB2 aWVsZSBHcsO8w59lXG4nICsKICAgICAgICAgICAgICAne2Fic2VuZGVyX25hbWV9JywKICAgICAg ICBlbXBmYWVuZ2VySW1CY2M6IHRydWUKICAgIH0sCiAgICAvLyBFaW56ZWwtQW5mcmFnZSAoZ2Vu YXUgZWluIEthbmRpZGF0IG1hcmtpZXJ0KTogcGVyc29lbmxpY2hlIER1LUZvcm0KICAgIC8vIHVu ZCBTaW5ndWxhci1BbnNwcmFjaGUsIEVtcGZhZW5nZXIgZGlyZWt0IGltIEFuLUZlbGQgKGtlaW4g R3J1bmQKICAgIC8vIGZ1ZXIgQkNDLCB3ZWlsIG51ciBlaW5lIFBlcnNvbikuCiAgICBiZXNldHp1 bmdzQW5mcmFnZV9laW56ZWxuOiB7CiAgICAgICAgYmV0cmVmZjogJ0F1c2hpbGZlIGdlc3VjaHQ6 IHtzY2hpY2h0fXNjaGljaHQgYW0ge2RhdHVtfScsCiAgICAgICAgdGV4dDogJ0hhbGxvIHtlbXBm YWVuZ2VyX3Zvcm5hbWV9LFxuXG4nICsKICAgICAgICAgICAgICAnYW0ge2RhdHVtfSAoe3dvY2hl bnRhZ30pIGlzdCBkaWUge3NjaGljaHR9c2NoaWNodCBha3R1ZWxsIHVudGVyYmVzZXR6dCDigJQg bnVyIHtpc3R9IHZvbiB7c29sbH0gRsO8aHJ1bmdza3LDpGZ0ZW4gZWluZ2VwbGFudC5cblxuJyAr CiAgICAgICAgICAgICAgJ0R1IGhhc3QgYW4gZGVtIFRhZyBkaWVuc3RmcmVpIG9kZXIgd2FjaGZy ZWkgZWluZ2V0cmFnZW4uIE1hZ3N0IER1IG5vY2ggZWlubWFsIHNjaGF1ZW4sIG9iIER1IGFuIGRl bSBUYWcgYXVzaGVsZmVuIGvDtm5udGVzdD8gSWNoIHdlacOfLCBkYXMgaXN0IGt1cnpmcmlzdGln IOKAlCB3ZW5uIGVzIGJlaSBEaXIgbmljaHQgcGFzc3QsIGlzdCBkYXMgdsO2bGxpZyBpbiBPcmRu dW5nLCBkYW5uIGZyYWdlIGljaCB3ZWl0ZXIuXG5cbicgKwogICAgICAgICAgICAgICdXZW5uIER1 IEZyYWdlbiBoYXN0IG9kZXIga3VyeiB0ZWxlZm9uaWVyZW4gbcO2Y2h0ZXN0LCBtZWxkZSBEaWNo IGVpbmZhY2guXG5cbicgKwogICAgICAgICAgICAgICdEYW5rZSB1bmQgdmllbGUgR3LDvMOfZVxu JyArCiAgICAgICAgICAgICAgJ3thYnNlbmRlcl9uYW1lfScsCiAgICAgICAgZW1wZmFlbmdlcklt QmNjOiBmYWxzZQogICAgfSwKICAgIC8vIEVJTkUgU2FtbWVsLU1haWwgYmVpIGplZGVtIFZlcmFu dHdvcnR1bmdzd2VjaHNlbCBpbm5lcmhhbGIgZGVzIDE0LVRhZ2UtCiAgICAvLyBWZXJiaW5kbGlj aGtlaXRzZmVuc3RlcnMuIEluZm9ybWllcnQgaW4gRUlORVIgTWFpbCBBTExFIEJldHJvZmZlbmVu OiB3ZXIKICAgIC8vIG5ldSBpbiBkaWUgVG9wLTItRnVlaHJ1bmcgYXVmcnVlY2t0IFVORCB3ZXIg ZGFkdXJjaCBoZXJhdXNmYWVsbHQgKHVuZAogICAgLy8gZmxleGlibGVyIHBsYW5lbiBrYW5uKS4g RGllIGVpbnplbG5lbiBCZXdlZ3VuZ2VuIHN0ZWhlbiBhbHMgZ2VuZXJpZXJ0ZXIKICAgIC8vIEJs b2NrIGltIFBsYXR6aGFsdGVyIHt3ZWNoc2VsX2Jsb2NrfS4gQmV3dXNzdCBFSU5FIE1haWwgYW4g YWxsZSBzdGF0dAogICAgLy8gbWVocmVyZXIgRWluemVsLU1haWxzIOKAlCBzbyBtdXNzIGRlciBQ bGFuZW5kZSBudXIgZWlubWFsIGtsaWNrZW4uCiAgICB2ZXJhbnR3b3J0dW5nc1VlYmVyZ2FuZzog ewogICAgICAgIGJldHJlZmY6ICdWZXJhbnR3b3J0dW5nc3dlY2hzZWw6IHtzY2hpY2h0fXNjaGlj aHQgYW0ge2RhdHVtfScsCiAgICAgICAgdGV4dDogJ0hhbGxvLFxuXG4nICsKICAgICAgICAgICAg ICAnZHVyY2ggZWluZSBQbGFudW5nc8OkbmRlcnVuZyBhbSB7ZGF0dW19ICh7d29jaGVudGFnfSkg w6RuZGVydCBzaWNoIGRpZSBGw7xocnVuZ3MtVmVyYW50d29ydHVuZyBkZXIge3NjaGljaHR9c2No aWNodDpcblxuJyArCiAgICAgICAgICAgICAgJ3t3ZWNoc2VsX2Jsb2NrfVxuXG4nICsKICAgICAg ICAgICAgICAnRGllIMOEbmRlcnVuZyBsaWVndCBpbm5lcmhhbGIgZGVzIDE0LVRhZ2UtVmVyYmlu ZGxpY2hrZWl0c2ZlbnN0ZXJzIOKAlCBiaXR0ZSBrdXJ6IHByw7xmZW4sIG9iIGFsbGVzIHBhc3N0 LCBvZGVyIGVpbmUga3VyemUgUsO8Y2ttZWxkdW5nIGdlYmVuLlxuXG4nICsKICAgICAgICAgICAg ICAnVmllbGUgR3LDvMOfZVxuJyArCiAgICAgICAgICAgICAgJ3thYnNlbmRlcl9uYW1lfScsCiAg ICAgICAgY2NBbmRlcmVyRGdsOiB0cnVlLAogICAgICAgIGJjY0dlc2FtdHZlcmFudHdvcnRsaWNo OiB0cnVlLAogICAgICAgIGNjQXVzbG9lc2VyOiB0cnVlCiAgICB9LAogICAgLy8gU1UtIG9kZXIg R2VzYW10dmVyYW50d29ydGxpY2gtU3RhdHVzIGhhdCBzaWNoIGdlYWVuZGVydCAocmVpbi9yYXVz KS4KICAgIC8vIFdpcmQgdm9tIFNlcnZlciBiZWkgL2FwaS9hZG1pbi9zdXBlcnVzZXIgYnp3LiAv YXBpL2FkbWluL2ZhY2hhdWZzaWNodAogICAgLy8gaW0gUmVzcG9uc2UgYWxzIF9icmF1Y2h0X21h aWx0byBhbmdlemVpZ3Q7IENsaWVudCBvZWZmbmV0IGRpZSBPdXRsb29rLQogICAgLy8gVm9ybGFn ZS4gSW0gR2VnZW5zYXR6IHp1IHZlcmFudHdvcnR1bmdzVWViZXJnYW5nIGlzdCBkYXMgS0VJTgog ICAgLy8gU2NoaWNodGJldHJpZWItRXJlaWduaXMsIHNvbmRlcm4gZWluIGFkbWluaXN0cmF0aXZl ciBSb2xsZW4tV2VjaHNlbC4KICAgIHJvbGxlX3ZlcmFudHdvcnR1bmc6IHsKICAgICAgICBiZXRy ZWZmOiAne3JvbGxlfToge25hbWV9IHtyaWNodHVuZ192ZXJifScsCiAgICAgICAgdGV4dDogJ0hh bGxvIHtuYW1lfSxcblxuJyArCiAgICAgICAgICAgICAgJ2R1IHd1cmRlc3Qge3JpY2h0dW5nX3Zl cmJ9OlxuXG4nICsKICAgICAgICAgICAgICAnICBSb2xsZTogICAge3JvbGxlfVxuJyArCiAgICAg ICAgICAgICAgJyAgV2lya3NhbTogIGFiIHNvZm9ydFxuXG4nICsKICAgICAgICAgICAgICAnQmVp IFLDvGNrZnJhZ2VuIG1lbGRlIGRpY2ggYmVpbSBHZXNhbXR2ZXJhbnR3b3J0bGljaGVuIG9kZXIg ZWluZW0gU3VwZXJVc2VyLlxuXG4nICsKICAgICAgICAgICAgICAnVmllbGUgR3LDvMOfZVxuJyAr CiAgICAgICAgICAgICAgJ3thYnNlbmRlcl9uYW1lfScKICAgIH0sCiAgICAvLyBBdXRvLVRyaWdn ZXItVm9ybGFnZW4g4oCUIHdlcmRlbiBiZWltIHBhc3NlbmRlbiBTYXZlLUNhbGxiYWNrCiAgICAv LyAoU2NoaWNodC1FZGl0L1BlcnNvbi1TYXZlL0JhY2t1cC1SZXN0b3JlL1Jlc2V0L1NVK0ZBLURp ZmYpIHZvbQogICAgLy8gRnJvbnRlbmQtRGlzcGF0Y2hlciBtYWlsVHJpZ2dlckZldWVybigpIGFs cyBtYWlsdG86LVBvcHVwIGF1ZmdlcnVmZW4uCiAgICAvLyBFbXBmYWVuZ2VybGlzdGUgcHJvIFRy aWdnZXIgaW4gYWRtaW4uZW1haWxUcmlnZ2VyLjx0eXA+LmVtcGZhZW5nZXIuCiAgICAvLyBWb3Js YWdlbi1IVE1MIHdpcmQgYmVpbSBWZXJzYW5kIHZpYSBodG1sWnVQbGFpblRleHQoKSBpbiBLbGFy dGV4dAogICAgLy8gdW1nZXdhbmRlbHQgKG1haWx0bzoga2FubiBrZWluZSBIVE1MLU1haWxzKS4K ICAgIGtyYW5rbWVsZHVuZzogewogICAgICAgIGJldHJlZmY6ICdLcmFua21lbGR1bmc6IHtwZXJz b25fbmFtZX0gYW0ge2RhdHVtfSAoe3NjaGljaHR9KScsCiAgICAgICAgdGV4dDogJzxwPkhhbGxv LDwvcD4nICsKICAgICAgICAgICAgICAnPHA+ZsO8ciB7cGVyc29uX25hbWV9IGlzdCBlaW5lIEty YW5rbWVsZHVuZyBlaW5nZXRyYWdlbiB3b3JkZW46PC9wPjx1bD4nICsKICAgICAgICAgICAgICAn PGxpPjxzdHJvbmc+RGF0dW06PC9zdHJvbmc+IHtkYXR1bX0gKHt3b2NoZW50YWd9KTwvbGk+JyAr CiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPlNjaGljaHQ6PC9zdHJvbmc+IHtzY2hpY2h0fTwv bGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkNvZGU6PC9zdHJvbmc+IHtjb2RlfTwv bGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkVpbmdldHJhZ2VuIHZvbjo8L3N0cm9u Zz4ge2F1c2zDtnNlcn08L2xpPicgKwogICAgICAgICAgICAgICc8L3VsPjxwPkJpdHRlIGVpbm1h bCBzY2hhdWVuLCBvYiBFcnNhdHogb3JnYW5pc2llcnQgd2VyZGVuIG11c3MuIERhbmtlITwvcD4n CiAgICB9LAogICAgaWRlbnRpdGFldF9nZWFlbmRlcnQ6IHsKICAgICAgICBiZXRyZWZmOiAnSWRl bnRpdMOkdHMtRGF0ZW4gZ2XDpG5kZXJ0OiB7cGVyc29uX25hbWV9JywKICAgICAgICB0ZXh0OiAn PHA+SGFsbG8sPC9wPicgKwogICAgICAgICAgICAgICc8cD5mb2xnZW5kZSBJZGVudGl0w6R0cy1E YXRlbiB3dXJkZW4gZ2XDpG5kZXJ0OjwvcD48dWw+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ry b25nPlBlcnNvbjo8L3N0cm9uZz4ge3BlcnNvbl9uYW1lfTwvbGk+JyArCiAgICAgICAgICAgICAg JzxsaT48c3Ryb25nPkdlw6RuZGVydGVzIEZlbGQ6PC9zdHJvbmc+IHtmZWxkfTwvbGk+JyArCiAg ICAgICAgICAgICAgJzxsaT48c3Ryb25nPlZvcmhlcjo8L3N0cm9uZz4ge2FsdGVyX3dlcnR9PC9s aT4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+TmFjaGhlcjo8L3N0cm9uZz4ge25ldWVy X3dlcnR9PC9saT4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+R2XDpG5kZXJ0IHZvbjo8 L3N0cm9uZz4ge2F1c2zDtnNlcn08L2xpPicgKwogICAgICAgICAgICAgICc8L3VsPjxwPkZhbGxz IGRpZXNlIMOEbmRlcnVuZyBuaWNodCBkdXJjaCBkaWNoIG9kZXIgbWl0IGRlaW5lbSBXaXNzZW4g ZXJmb2xndCBpc3QsIG1lbGRlIGRpY2ggYml0dGUgdW1nZWhlbmQgYmVpIGVpbmVtIFN1cGVyVXNl ci48L3A+JwogICAgfSwKICAgIHJvbGxlX2dlYWVuZGVydDogewogICAgICAgIGJldHJlZmY6ICdS b2xsZW4tU3RhdHVzIGdlw6RuZGVydDoge3BlcnNvbl9uYW1lfSDihpIge25ldWVfcm9sbGV9JywK ICAgICAgICB0ZXh0OiAnPHA+SGFsbG8sPC9wPicgKwogICAgICAgICAgICAgICc8cD5kZXIgUm9s bGVuLVN0YXR1cyB3dXJkZSBnZcOkbmRlcnQ6PC9wPjx1bD4nICsKICAgICAgICAgICAgICAnPGxp PjxzdHJvbmc+UGVyc29uOjwvc3Ryb25nPiB7cGVyc29uX25hbWV9PC9saT4nICsKICAgICAgICAg ICAgICAnPGxpPjxzdHJvbmc+Um9sbGU6PC9zdHJvbmc+IHtyb2xsZV90eXB9PC9saT4nICsKICAg ICAgICAgICAgICAnPGxpPjxzdHJvbmc+QWt0aW9uOjwvc3Ryb25nPiB7YWt0aW9ufTwvbGk+JyAr CiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkdlw6RuZGVydCB2b246PC9zdHJvbmc+IHthdXNs w7ZzZXJ9PC9saT4nICsKICAgICAgICAgICAgICAnPC91bD48cD5OdXIgenUgZGVpbmVyIEluZm9y bWF0aW9uIOKAlCBiZWkgRnJhZ2VuIGVpbmZhY2ggbWVsZGVuLjwvcD4nCiAgICB9LAogICAgYmFj a3VwX3dpZWRlcmhlcmdlc3RlbGx0OiB7CiAgICAgICAgYmV0cmVmZjogJ0JhY2t1cCB3aWVkZXJo ZXJnZXN0ZWxsdDoge2RhdGVpbmFtZX0nLAogICAgICAgIHRleHQ6ICc8cD5IYWxsbyw8L3A+JyAr CiAgICAgICAgICAgICAgJzxwPmVpbiBCYWNrdXAgd3VyZGUgd2llZGVyaGVyZ2VzdGVsbHQ6PC9w Pjx1bD4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+UXVlbGwtRGF0ZWk6PC9zdHJvbmc+ IHtkYXRlaW5hbWV9PC9saT4nICsKICAgICAgICAgICAgICAnPGxpPjxzdHJvbmc+SW5oYWx0Ojwv c3Ryb25nPiB7aW5oYWx0fTwvbGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPlNpY2hl cnVuZyBkZXIgdm9yaGVyaWdlbiBEYXRlbjo8L3N0cm9uZz4ge3NpY2hlcnVuZ308L2xpPicgKwog ICAgICAgICAgICAgICc8bGk+PHN0cm9uZz5XaWVkZXJoZXJnZXN0ZWxsdCB2b246PC9zdHJvbmc+ IHthdXNsw7ZzZXJ9PC9saT4nICsKICAgICAgICAgICAgICAnPC91bD48cD5OdXIgenVyIEluZm9y bWF0aW9uLjwvcD4nCiAgICB9LAogICAgcGxhbnVuZ19yZXNldDogewogICAgICAgIGJldHJlZmY6 ICdQbGFudW5nIHp1csO8Y2tnZXNldHp0JywKICAgICAgICB0ZXh0OiAnPHA+SGFsbG8sPC9wPicg KwogICAgICAgICAgICAgICc8cD5kaWUgZ2VzYW10ZSBQbGFudW5nIHd1cmRlIHp1csO8Y2tnZXNl dHp0OjwvcD48dWw+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ryb25nPkF1dG8tQmFja3VwIHZv cmFiOjwvc3Ryb25nPiB7c2ljaGVydW5nfTwvbGk+JyArCiAgICAgICAgICAgICAgJzxsaT48c3Ry b25nPlp1csO8Y2tnZXNldHp0IHZvbjo8L3N0cm9uZz4ge2F1c2zDtnNlcn08L2xpPicgKwogICAg ICAgICAgICAgICc8L3VsPjxwPkJlaSBCZWRhcmYga8O2bm5lbiB3aXIgZGFzIEF1dG8tQmFja3Vw IGplZGVyemVpdCB3aWVkZXIgZWluc3BpZWxlbi48L3A+JwogICAgfSwKICAgIGRlZml6aXRfYnJp ZWZpbmc6IHsKICAgICAgICBiZXRyZWZmOiAnVMOkZ2xpY2hlcyBEZWZpeml0LUJyaWVmaW5nOiB7 ZGVmaXppdF9hbnphaGx9IFRhZyhlKSBtaXQgVW50ZXJiZXNldHp1bmcnLAogICAgICAgIHRleHQ6 ICc8cD5IYWxsbyw8L3A+JyArCiAgICAgICAgICAgICAgJzxwPlN0YW5kIGhldXRlIG1vcmdlbiDi gJQgRsO8aHJ1bmdzLVVudGVyYmVzZXR6dW5nZW4gaW4gZGVuIG7DpGNoc3RlbiA0IFdvY2hlbjo8 L3A+JyArCiAgICAgICAgICAgICAgJzxwPjxzdHJvbmc+e2RlZml6aXRfYW56YWhsfTwvc3Ryb25n PiB2b24ge2dlc2FtdF9hbnphaGx9IFRhZ2VuIHNpbmQgbmljaHQgdm9sbHN0w6RuZGlnIGJlc2V0 enQuPC9wPicgKwogICAgICAgICAgICAgICc8cD57ZGVmaXppdF9saXN0ZV9odG1sfTwvcD4nICsK ICAgICAgICAgICAgICAnPHA+RGV0YWlscyBmaW5kZXN0IGR1IGltIFRhYiA8ZW0+UHLDvGZ1bmc8 L2VtPi4gQmVpIFLDvGNrZnJhZ2VuIGVpbmZhY2ggbWVsZGVuLjwvcD4nCiAgICB9Cn07CgovLyBN ZXRhLURhdGVuIGRlciBFLU1haWwtU3plbmFyaWVuIOKAlCBzdGV1ZXJ0IEthcnRlbi1MaXN0ZSwg TW9kYWwtVmFyaWFibGVuLCBUb2dnbGVzLgpleHBvcnQgdmFyIEVNQUlMX1ZBUklBQkxFTl9CRVND SFJFSUJVTkcgPSB7CiAgICBkYXR1bTogICAgICAgICAgICdEYXR1bSAoei5CLiAxNC4wNS4yMDI2 KScsCiAgICB3b2NoZW50YWc6ICAgICAgICdXb2NoZW50YWcgKE1vbnRhZywgRGllbnN0YWcsIC4u LiknLAogICAgc2NoaWNodDogICAgICAgICAnRnLDvGgsIFNww6R0IG9kZXIgTmFjaHQnLAogICAg c2NoaWNodF9rdXJ6OiAgICAnRiwgUyBvZGVyIE4nLAogICAgaXN0OiAgICAgICAgICAgICAnQWt0 dWVsbCBiZXNldHp0ZSBGw7xocnVuZ3NrcsOkZnRlJywKICAgIHNvbGw6ICAgICAgICAgICAgJ0Vy Zm9yZGVybGljaGUgRsO8aHJ1bmdza3LDpGZ0ZSAoZmVzdCAyKScsCiAgICBkZWZpeml0OiAgICAg ICAgICdGZWhsZW5kZSBBbnphaGwgKHNvbGwg4oiSIGlzdCknLAogICAgYWJzZW5kZXJfbmFtZTog ICAnTmFtZSBkZXMgR2VzYW10dmVyYW50d29ydGxpY2hlbicsCiAgICB3ZWNoc2VsX2Jsb2NrOiAg ICdBdXRvbWF0aXNjaCBlcnpldWd0ZSBMaXN0ZSBhbGxlciBCZXdlZ3VuZ2VuICh3ZXIgYXVmcsO8 Y2t0LCB3ZXIgaGVyYXVzZsOkbGx0KSDigJQgamUgZWluZSBaZWlsZSBwcm8gUGVyc29uJywKICAg IG5hbWU6ICAgICAgICAgICAgJ05hbWUgZGVyIGJldHJvZmZlbmVuIFBlcnNvbicsCiAgICBwZXJz b25fbmFtZTogICAgICdWb3ItIHVuZCBOYWNobmFtZSBkZXIgYmV0cm9mZmVuZW4gUGVyc29uJywK ICAgIGNvZGU6ICAgICAgICAgICAgJ1NjaGljaHRjb2RlICh6LkIuIGtyLCBLdXIpJywKICAgICdh dXNsw7ZzZXInOiAgICAgJ05XLUtlbm51bmcgZGVyIFBlcnNvbiwgZGllIGRpZSBBa3Rpb24gYXVz Z2Vsw7ZzdCBoYXQnLAogICAgZmVsZDogICAgICAgICAgICAnR2XDpG5kZXJ0ZXMgRmVsZCAoei5C LiBud0tlbm51bmcsIGVtYWlsKScsCiAgICBhbHRlcl93ZXJ0OiAgICAgICdXZXJ0IHZvciBkZXIg w4RuZGVydW5nJywKICAgIG5ldWVyX3dlcnQ6ICAgICAgJ1dlcnQgbmFjaCBkZXIgw4RuZGVydW5n JywKICAgIHJvbGxlX3R5cDogICAgICAgJ1N1cGVyVXNlciBvZGVyIEZhY2hhdWZzaWNodCcsCiAg ICBha3Rpb246ICAgICAgICAgICdoaW56dWdlZsO8Z3Qgb2RlciBlbnRmZXJudCcsCiAgICBuZXVl X3JvbGxlOiAgICAgICdOZXVlIFJvbGxlbi1CZXplaWNobnVuZycsCiAgICByb2xsZTogICAgICAg ICAgICdTdXBlclVzZXIgb2RlciBHZXNhbXR2ZXJhbnR3b3J0bGljaCcsCiAgICBuYW1lOiAgICAg ICAgICAgICdOYW1lIGRlciBiZXRyb2ZmZW5lbiBQZXJzb24nLAogICAgcmljaHR1bmc6ICAgICAg ICAncmVpbiBvZGVyIHJhdXMnLAogICAgcmljaHR1bmdfdmVyYjogICAn4oCeenVtIFggZXJuYW5u dCIgYnp3LiDigJ5hdXMgZGVyIFJvbGxlIFggZW50bGFzc2VuIicsCiAgICBkYXRlaW5hbWU6ICAg ICAgICdCYWNrdXAtRGF0ZWluYW1lJywKICAgIGluaGFsdDogICAgICAgICAgJ0JhY2t1cC1Jbmhh bHQgKHBsYW51bmcsIGFkbWluIG9kZXIgYmVpZGVzKScsCiAgICBzaWNoZXJ1bmc6ICAgICAgICdB dXRvLUJhY2t1cCB2b3IgZGVyIEFrdGlvbicsCiAgICBkZWZpeml0X2FuemFobDogICdBbnphaGwg VGFnZSBtaXQgRGVmaXppdCcsCiAgICBnZXNhbXRfYW56YWhsOiAgICdBbnphaGwgVGFnZSBpbSBI b3Jpem9udCAoMjgpJywKICAgIGRlZml6aXRfbGlzdGVfaHRtbDogJ0hUTUwtTGlzdGUgZGVyIERl Zml6aXQtVGFnZSAodm9yYmVyZWl0ZXQpJwp9OwoKLy8gVmVyZnVlZ2JhcmUgRW1wZmFlbmdlci1U YWdzIG1pdCBVc2VyLWZyZXVuZGxpY2hlbiBMYWJlbHMuCmV4cG9ydCB2YXIgRU1QRkFFTkdFUl9P UFRJT05FTiA9IFsKICAgIHsga2V5OiAnYmV0cm9mZmVuZV9wZXJzb24nLCAgICAgICAgIGxhYmVs OiAnQmV0cm9mZmVuZSBQZXJzb24gc2VsYnN0JyB9LAogICAgeyBrZXk6ICd3YWNobGVpdHVuZ19w ZXJzb24nLCAgICAgICAgbGFiZWw6ICdXYWNobGVpdHVuZyBkZXIgYmV0cm9mZmVuZW4gUGVyc29u IChHcnVwcGUgV0wsIGdsZWljaGVyIFN0YW5kb3J0KScgfSwKICAgIHsga2V5OiAnZGdsX3NjaGlj aHQnLCAgICAgICAgICAgICAgIGxhYmVsOiAnREdMcyBkZXIgYmV0cm9mZmVuZW4gU2NoaWNodCAo b2huZSBkaWUgaGFuZGVsbmRlIFBlcnNvbiknIH0sCiAgICB7IGtleTogJ2dlc2FtdHZlcmFudHdv cnRsaWNoJywgICAgICBsYWJlbDogJ0FsbGUgR2VzYW10dmVyYW50d29ydGxpY2hlbiAoRmFjaGF1 ZnNpY2h0IG1pdCBGbGFnKScgfSwKICAgIHsga2V5OiAnc3VwZXJ1c2VyJywgICAgICAgICAgICAg ICAgIGxhYmVsOiAnQWxsZSBTdXBlclVzZXInIH0sCiAgICB7IGtleTogJ2RpZW5zdF93YWNoX2Zy ZWlfaW5fc2NoaWNodCcsIGxhYmVsOiAnRGllbnN0LS93YWNoZnJlaWUgUGVyc29uZW4gYW0gVGFn IChmw7xyIEJlc2V0enVuZ3MtQW5mcmFnZW4pJyB9Cl07CgovLyBtb2R1czogJ21haWx0bycgPSBv ZWZmbmV0IHdlaXRlcmhpbiBPdXRsb29rIChWZXJhbnR3b3J0dW5ncy1VZWJlcmdhZW5nZSwKLy8g QmVzZXR6dW5ncy1BbmZyYWdlbiwgRGVmaXppdC1CcmllZmluZykuICdoaW53ZWlzJyA9IEluLUFw cC1CYW5uZXIvTW9kYWwsCi8vIGtlaW4gT3V0bG9vayAoS3JhbmttZWxkdW5nLCBJZGVudGl0YWV0 LCBCYWNrdXAsIFJlc2V0LCBSb2xsZSBvaG5lCi8vIFZlcmFudHdvcnR1bmdzLVdlY2hzZWwpLiBB ZW5kZXJ1bmcgaW4gUGhhc2UgNSAoMjAyNi0wNS0yMCkuCmV4cG9ydCB2YXIgRU1BSUxfVk9STEFH RU5fTUVUQSA9IHsKICAgIGJlc2V0enVuZ3NBbmZyYWdlOiB7CiAgICAgICAgdGl0ZWw6ICdCZXNl dHp1bmdzLUFuZnJhZ2UgKFNhbW1lbCwgUGx1cmFsKScsCiAgICAgICAgYmVzY2hyZWlidW5nOiAn V2lyZCB2ZXJ3ZW5kZXQsIHdlbm4gaW0gVGFnLURldGFpbCBtZWhyZXJlIEthbmRpZGF0ZW4gZ2Vt ZWluc2FtIGFuZ2VzY2hyaWViZW4gd2VyZGVuLiBTdGFuZGFyZG3DpMOfaWcgUGx1cmFsLUFucmVk ZSAo4oCeSGFsbG8genVzYW1tZW4sIOKApklociBoYWJ04oCmIikuIEVtcGbDpG5nZXJmZWxkIGtv bmZpZ3VyaWVyYmFyIChEZWZhdWx0IEJDQzogQWRyZXNzYXRlbiBzZWhlbiBzaWNoIG5pY2h0IGdl Z2Vuc2VpdGlnKS4gVmVyc2FuZDogbWFpbHRvOiAobWFudWVsbGUgUHLDvGZ1bmcgaW0gTWFpbHBy b2dyYW1tKS4nLAogICAgICAgIGljb246ICdBbmZyYWdlJywKICAgICAgICBmYXJiZTogJ3dhcm51 bmcnLAogICAgICAgIG1vZHVzOiAnbWFpbHRvJywKICAgICAgICB2YXJpYWJsZW46IFsnZGF0dW0n LCAnd29jaGVudGFnJywgJ3NjaGljaHQnLCAnc2NoaWNodF9rdXJ6JywgJ2lzdCcsICdzb2xsJywg J2RlZml6aXQnLCAnYWJzZW5kZXJfbmFtZSddLAogICAgICAgIHRvZ2dsZXM6IFsKICAgICAgICAg ICAgeyBrZXk6ICdlbXBmYWVuZ2VySW1CY2MnLCBsYWJlbDogJ0VtcGbDpG5nZXIgaW0gQkNDLUZl bGQgKERhdGVuc2NodXR6OiBhbmRlcmUgQWRyZXNzYXRlbiBzaW5kIHVuc2ljaHRiYXIpLiBXZW5u IGF1c2dlc2NoYWx0ZXQ6IGFsbGUgc3RlaGVuIGltIEFuLUZlbGQgdW5kIHNlaGVuIHNpY2ggZ2Vn ZW5zZWl0aWcuJyB9CiAgICAgICAgXQogICAgfSwKICAgIGJlc2V0enVuZ3NBbmZyYWdlX2Vpbnpl bG46IHsKICAgICAgICB0aXRlbDogJ0Jlc2V0enVuZ3MtQW5mcmFnZSAoRWluemVsLCBwZXJzw7Zu bGljaGVzIER1KScsCiAgICAgICAgYmVzY2hyZWlidW5nOiAnV2lyZCB2ZXJ3ZW5kZXQsIHdlbm4g aW0gVGFnLURldGFpbCBudXIgRUlOIEthbmRpZGF0IG1hcmtpZXJ0IGlzdCDigJQgcGVyc8O2bmxp Y2hlIER1LUFucmVkZSBtaXQgVm9ybmFtZW4sIFNpbmd1bGFyLUZvcm11bGllcnVuZy4gU3RhbmRh cmRtw6TDn2lnIEVtcGbDpG5nZXIgaW0gQW4tRmVsZCAoQkNDIGlzdCBiZWkgZWluZXIgUGVyc29u IHNpbm5sb3MsIGthbm4gYWJlciBiZWkgQmVkYXJmIHVtZ2VzdGVsbHQgd2VyZGVuKS4nLAogICAg ICAgIGljb246ICdFaW56ZWwnLAogICAgICAgIGZhcmJlOiAnd2FybnVuZycsCiAgICAgICAgbW9k dXM6ICdtYWlsdG8nLAogICAgICAgIHZhcmlhYmxlbjogWydkYXR1bScsICd3b2NoZW50YWcnLCAn c2NoaWNodCcsICdzY2hpY2h0X2t1cnonLCAnaXN0JywgJ3NvbGwnLCAnZGVmaXppdCcsICdhYnNl bmRlcl9uYW1lJywgJ2VtcGZhZW5nZXJfdm9ybmFtZScsICdlbXBmYWVuZ2VyX25hbWUnXSwKICAg ICAgICB0b2dnbGVzOiBbCiAgICAgICAgICAgIHsga2V5OiAnZW1wZmFlbmdlckltQmNjJywgbGFi ZWw6ICdFbXBmw6RuZ2VyIGltIEJDQy1GZWxkIChzdGF0dCBpbSBBbi1GZWxkKS4gQmVpIG51ciBl aW5lciBQZXJzb24gbm9ybWFsZXJ3ZWlzZSBuaWNodCBzaW5udm9sbCDigJQgU3RhbmRhcmQ6IGF1 cy4nIH0KICAgICAgICBdCiAgICB9LAogICAgdmVyYW50d29ydHVuZ3NVZWJlcmdhbmc6IHsKICAg ICAgICB0aXRlbDogJ1ZlcmFudHdvcnR1bmdzd2VjaHNlbCAoU2NoaWNodCkg4oCUIGVpbmUgU2Ft bWVsLU1haWwnLAogICAgICAgIGJlc2NocmVpYnVuZzogJ0VJTkUgTWFpbCBiZWkgamVkZW0gVmVy YW50d29ydHVuZ3N3ZWNoc2VsIGlubmVyaGFsYiBkZXMgMTQtVGFnZS1WZXJiaW5kbGljaGtlaXRz ZmVuc3RlcnMuIEluZm9ybWllcnQgaW4gZWluZXIgZWluemlnZW4gTWFpbCBBTExFIEJldHJvZmZl bmVuIGF1ZiBlaW5tYWw6IHdlciBuZXUgaW4gZGllIEbDvGhydW5ncy1WZXJhbnR3b3J0dW5nIGF1 ZnLDvGNrdCBVTkQgd2VyIGRhZHVyY2ggaGVyYXVzZsOkbGx0ICh1bmQgZmxleGlibGVyIHBsYW5l biBrYW5uKS4gRGllIGVpbnplbG5lbiBCZXdlZ3VuZ2VuIGVyc2NoZWluZW4gYXV0b21hdGlzY2gg aW0gUGxhdHpoYWx0ZXIge3dlY2hzZWxfYmxvY2t9LiBFbXBmw6RuZ2VyIChBbi1GZWxkKSBzaW5k IGFsbGUgQmV0cm9mZmVuZW4gYXVzc2VyIGRlbSBQbGFuZW5kZW4gc2VsYnN0LiBWZXJzYW5kOiBt YWlsdG86LicsCiAgICAgICAgaWNvbjogJ1dlY2hzZWwnLAogICAgICAgIGZhcmJlOiAnYWt6ZW50 JywKICAgICAgICBtb2R1czogJ21haWx0bycsCiAgICAgICAgdmFyaWFibGVuOiBbJ2RhdHVtJywg J3dvY2hlbnRhZycsICdzY2hpY2h0JywgJ3NjaGljaHRfa3VyeicsICdhYnNlbmRlcl9uYW1lJywg J3dlY2hzZWxfYmxvY2snXSwKICAgICAgICB0b2dnbGVzOiBbCiAgICAgICAgICAgIHsga2V5OiAn Y2NBbmRlcmVyRGdsJywgICAgICAgICAgIGxhYmVsOiAnQ0M6IHp3ZWl0ZSBGw7xocnVuZ3NrcmFm dCBkZXIgU2NoaWNodCAoZmFsbHMgdm9yaGFuZGVuICsgRS1NYWlsIGhpbnRlcmxlZ3QpJyB9LAog ICAgICAgICAgICB7IGtleTogJ2JjY0dlc2FtdHZlcmFudHdvcnRsaWNoJywgbGFiZWw6ICdCQ0M6 IEdlc2FtdHZlcmFudHdvcnRsaWNoZXIgKGltbWVyIG51ciBhbHMgQkNDLCBudXIgenVyIEtlbm50 bmlzKScgfSwKICAgICAgICAgICAgeyBrZXk6ICdjY0F1c2xvZXNlcicsICAgICAgICAgICAgbGFi ZWw6ICdDQzogZGVyIGVpbmdlbG9nZ3RlIFBsYW5lbmRlLCBkZXIgZGllIMOEbmRlcnVuZyBhdXNn ZWzDtnN0IGhhdCcgfQogICAgICAgIF0KICAgIH0sCiAgICByb2xsZV92ZXJhbnR3b3J0dW5nOiB7 CiAgICAgICAgdGl0ZWw6ICdWZXJhbnR3b3J0dW5nc8O8YmVyZ2FuZyAoUm9sbGUpJywKICAgICAg ICBiZXNjaHJlaWJ1bmc6ICdtYWlsdG86LVBvcHVwIHdlbm4gamVtYW5kIHp1bSBTdXBlclVzZXIg b2RlciBHZXNhbXR2ZXJhbnR3b3J0bGljaGVuIGVybmFubnQgb2RlciBhYmdlbMO2c3Qgd2lyZC4g U2VydmVyLWdldHJpZ2dlcnQgw7xiZXIgZGFzIF9icmF1Y2h0X21haWx0by1GZWxkIGluIGRlciBS ZXNwb25zZS4nLAogICAgICAgIGljb246ICdSb2xsZScsCiAgICAgICAgZmFyYmU6ICdha3plbnQn LAogICAgICAgIG1vZHVzOiAnbWFpbHRvJywKICAgICAgICBhdXRvVHJpZ2dlcjogdHJ1ZSwKICAg ICAgICB2YXJpYWJsZW46IFsncm9sbGUnLCAnbmFtZScsICdyaWNodHVuZycsICdyaWNodHVuZ192 ZXJiJywgJ2Fic2VuZGVyX25hbWUnXSwKICAgICAgICBkZWZhdWx0RW1wZmFlbmdlcjogWydiZXRy b2ZmZW5lX3BlcnNvbicsICdzdXBlcnVzZXInLCAnZ2VzYW10dmVyYW50d29ydGxpY2gnXSwKICAg ICAgICB0b2dnbGVzOiBbXQogICAgfSwKICAgIGtyYW5rbWVsZHVuZzogewogICAgICAgIHRpdGVs OiAnS3JhbmttZWxkdW5nJywKICAgICAgICBiZXNjaHJlaWJ1bmc6ICdJbi1BcHAtSGlud2VpcyAo QmFubmVyICsgTW9kYWwpIHdlbm4gZGVyIENvZGUg4oCea3IiIG9kZXIg4oCeS3VyIiBpbiBlaW5l IFplbGxlIGVpbmdldHJhZ2VuIHdpcmQuIEVtcGbDpG5nZXI6IFN1cGVyVXNlciArIEdlc2FtdHZl cmFudHdvcnRsaWNoZS4nLAogICAgICAgIGljb246ICdLcmFuaycsIGZhcmJlOiAnd2FybnVuZycs IGF1dG9UcmlnZ2VyOiB0cnVlLAogICAgICAgIG1vZHVzOiAnaGlud2VpcycsCiAgICAgICAgdmFy aWFibGVuOiBbJ3BlcnNvbl9uYW1lJywgJ2RhdHVtJywgJ3dvY2hlbnRhZycsICdzY2hpY2h0Jywg J3NjaGljaHRfa3VyeicsICdjb2RlJywgJ2F1c2zDtnNlciddLAogICAgICAgIGRlZmF1bHRFbXBm YWVuZ2VyOiBbJ3dhY2hsZWl0dW5nX3BlcnNvbicsICdkZ2xfc2NoaWNodCddLAogICAgICAgIHRv Z2dsZXM6IFtdCiAgICB9LAogICAgaWRlbnRpdGFldF9nZWFlbmRlcnQ6IHsKICAgICAgICB0aXRl bDogJ0lkZW50aXTDpHRzLURhdGVuIGdlw6RuZGVydCAoQXVkaXQpJywKICAgICAgICBiZXNjaHJl aWJ1bmc6ICdJbi1BcHAtSGlud2VpcyAoQmFubmVyICsgTW9kYWwpIHdlbm4gTlctS2VubnVuZyBv ZGVyIEUtTWFpbC1BZHJlc3NlIGVpbmVyIFBlcnNvbiBnZcOkbmRlcnQgd2lyZC4gRW1wZsOkbmdl cjogU3VwZXJVc2VyICsgR2VzYW10dmVyYW50d29ydGxpY2hlLicsCiAgICAgICAgaWNvbjogJ0lk ZW50aXTDpHQnLCBmYXJiZTogJ2FremVudCcsIGF1dG9UcmlnZ2VyOiB0cnVlLAogICAgICAgIG1v ZHVzOiAnaGlud2VpcycsCiAgICAgICAgdmFyaWFibGVuOiBbJ3BlcnNvbl9uYW1lJywgJ2ZlbGQn LCAnYWx0ZXJfd2VydCcsICduZXVlcl93ZXJ0JywgJ2F1c2zDtnNlciddLAogICAgICAgIGRlZmF1 bHRFbXBmYWVuZ2VyOiBbJ2JldHJvZmZlbmVfcGVyc29uJywgJ3N1cGVydXNlciddLAogICAgICAg IHRvZ2dsZXM6IFtdCiAgICB9LAogICAgcm9sbGVfZ2VhZW5kZXJ0OiB7CiAgICAgICAgdGl0ZWw6 ICdSb2xsZW4tU3RhdHVzIGdlw6RuZGVydCAoQXVkaXQpJywKICAgICAgICBiZXNjaHJlaWJ1bmc6 ICdJbi1BcHAtSGlud2VpcyBiZWkgRmFjaGF1ZnNpY2h0LcOEbmRlcnVuZ2VuIG9obmUgR2VzYW10 dmVyYW50d29ydGxpY2gtV2VjaHNlbCAoei5CLiBTZWhlbi1GbGFnLURpZmYpLiBTVS0gdW5kIEdl c2FtdHZlcmFudHdvcnRsaWNoLVdlY2hzZWwgbGF1ZmVuIMO8YmVyIHJvbGxlX3ZlcmFudHdvcnR1 bmcuJywKICAgICAgICBpY29uOiAnUm9sbGUnLCBmYXJiZTogJ2FremVudCcsIGF1dG9UcmlnZ2Vy OiB0cnVlLAogICAgICAgIG1vZHVzOiAnaGlud2VpcycsCiAgICAgICAgdmFyaWFibGVuOiBbJ3Bl cnNvbl9uYW1lJywgJ3JvbGxlX3R5cCcsICdha3Rpb24nLCAnbmV1ZV9yb2xsZScsICdhdXNsw7Zz ZXInXSwKICAgICAgICBkZWZhdWx0RW1wZmFlbmdlcjogWydiZXRyb2ZmZW5lX3BlcnNvbicsICdz dXBlcnVzZXInXSwKICAgICAgICB0b2dnbGVzOiBbXQogICAgfSwKICAgIGJhY2t1cF93aWVkZXJo ZXJnZXN0ZWxsdDogewogICAgICAgIHRpdGVsOiAnQmFja3VwIHdpZWRlcmhlcmdlc3RlbGx0IChB dWRpdCknLAogICAgICAgIGJlc2NocmVpYnVuZzogJ0luLUFwcC1IaW53ZWlzIHdlbm4gZWluIEJh Y2t1cC1TdGFuZCB3aWVkZXJoZXJnZXN0ZWxsdCB3aXJkLicsCiAgICAgICAgaWNvbjogJ0JhY2t1 cCcsIGZhcmJlOiAnYWt6ZW50JywgYXV0b1RyaWdnZXI6IHRydWUsCiAgICAgICAgbW9kdXM6ICdo aW53ZWlzJywKICAgICAgICB2YXJpYWJsZW46IFsnZGF0ZWluYW1lJywgJ2luaGFsdCcsICdzaWNo ZXJ1bmcnLCAnYXVzbMO2c2VyJ10sCiAgICAgICAgZGVmYXVsdEVtcGZhZW5nZXI6IFsnc3VwZXJ1 c2VyJ10sCiAgICAgICAgdG9nZ2xlczogW10KICAgIH0sCiAgICBwbGFudW5nX3Jlc2V0OiB7CiAg ICAgICAgdGl0ZWw6ICdQbGFudW5nIHp1csO8Y2tnZXNldHp0IChBdWRpdCknLAogICAgICAgIGJl c2NocmVpYnVuZzogJ0luLUFwcC1IaW53ZWlzIHdlbm4gZGllIFBsYW51bmcga29tcGxldHQgenVy w7xja2dlc2V0enQgd2lyZC4nLAogICAgICAgIGljb246ICdSZXNldCcsIGZhcmJlOiAnd2FybnVu ZycsIGF1dG9UcmlnZ2VyOiB0cnVlLAogICAgICAgIG1vZHVzOiAnaGlud2VpcycsCiAgICAgICAg dmFyaWFibGVuOiBbJ3NpY2hlcnVuZycsICdhdXNsw7ZzZXInXSwKICAgICAgICBkZWZhdWx0RW1w ZmFlbmdlcjogWydzdXBlcnVzZXInXSwKICAgICAgICB0b2dnbGVzOiBbXQogICAgfSwKICAgIGRl Zml6aXRfYnJpZWZpbmc6IHsKICAgICAgICB0aXRlbDogJ0RlZml6aXQtQnJpZWZpbmcnLAogICAg ICAgIGJlc2NocmVpYnVuZzogJ01hbnVlbGwgcGVyIEJ1dHRvbiBpbSBQcsO8ZnVuZ3MtVGFiIGF1 c2dlbMO2c3Qg4oCUIMO2ZmZuZXQgZWluIG1haWx0bzotUG9wdXAgbWl0IMOcYmVyc2ljaHQgZGVy IEbDvGhydW5ncy1VbnRlcmJlc2V0enVuZ2VuIGluIGRlbiBuw6RjaHN0ZW4gNCBXb2NoZW4uJywK ICAgICAgICBpY29uOiAnRGVmaXppdCcsIGZhcmJlOiAnYWt6ZW50JywgYXV0b1RyaWdnZXI6IHRy dWUsCiAgICAgICAgbW9kdXM6ICdtYWlsdG8nLAogICAgICAgIHZhcmlhYmxlbjogWydkZWZpeml0 X2FuemFobCcsICdnZXNhbXRfYW56YWhsJywgJ2RlZml6aXRfbGlzdGVfaHRtbCddLAogICAgICAg IGRlZmF1bHRFbXBmYWVuZ2VyOiBbJ2dlc2FtdHZlcmFudHdvcnRsaWNoJ10sCiAgICAgICAgdG9n Z2xlczogW10KICAgIH0KfTsKCi8vID09PT09IFZvcmxhZ2VuIGhvbGVuIC8gcmVuZGVybiAvIGJl YXJiZWl0ZW4gPT09PT0KCi8vIExpZWZlcnQgcHJvIFZvcmxhZ2VuLUtleSAoYWxsZSBhdXMgRU1B SUxfVk9STEFHRU5fTUVUQSkgZGFzIGdlbWVyZ2V0ZQovLyBPYmpla3QgYXVzIGFkbWluLmVtYWls Vm9ybGFnZW4gKyBEZWZhdWx0cy4gUm9idXN0IGF1Y2ggZnVlciBLZXlzLCBkaWUKLy8gbmljaHQg aW4gREVGQVVMVFMgc3RlaGVuIChyZXR1cm50IGRhbm4gbGVlcmVzIE9iamVrdCkuCmV4cG9ydCBm dW5jdGlvbiBlbWFpbFZvcmxhZ2VuSG9sZW4oKSB7CiAgICB2YXIgZ2VzcGVpY2hlcnQgPSBaLmFk bWluLmVtYWlsVm9ybGFnZW4gfHwge307CiAgICB2YXIgZXJnZWJuaXMgPSB7fTsKICAgIE9iamVj dC5rZXlzKEVNQUlMX1ZPUkxBR0VOX01FVEEpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAg ICAgdmFyIGRlZiA9IEVNQUlMX1ZPUkxBR0VOX0RFRkFVTFRba2V5XSB8fCB7IGJldHJlZmY6ICcn LCB0ZXh0OiAnJyB9OwogICAgICAgIHZhciBnID0gZ2VzcGVpY2hlcnRba2V5XSB8fCB7fTsKICAg ICAgICB2YXIgb3V0ID0ge307CiAgICAgICAgLy8gQWxsZSBEZWZhdWx0LUZlbGRlciBkdXJjaHNj aGxlaWZlbgogICAgICAgIE9iamVjdC5rZXlzKGRlZikuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAg ICAgICAgICAgIG91dFtrXSA9IChrIGluIGcgJiYgZ1trXSAhPT0gJycgJiYgZ1trXSAhPSBudWxs KSA/IGdba10gOiBkZWZba107CiAgICAgICAgfSk7CiAgICAgICAgLy8gUGx1cyBhbGxlIGV2ZW50 dWVsbGVuIFRvZ2dsZS1GZWxkZXIgYXVzIGRlbSBnZXNwZWljaGVydGVuIFN0YW5kCiAgICAgICAg T2JqZWN0LmtleXMoZykuZm9yRWFjaChmdW5jdGlvbihrKSB7CiAgICAgICAgICAgIGlmICghKGsg aW4gb3V0KSkgb3V0W2tdID0gZ1trXTsKICAgICAgICB9KTsKICAgICAgICBlcmdlYm5pc1trZXld ID0gb3V0OwogICAgfSk7CiAgICByZXR1cm4gZXJnZWJuaXM7Cn0KCmV4cG9ydCBmdW5jdGlvbiBl bWFpbFZvcmxhZ2VuUmVuZGVybigpIHsKICAgIHZhciBjb250ID0gZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2VtYWlsdm9ybGFnZW4taW5oYWx0Jyk7CiAgICBpZiAoIWNvbnQpIHJldHVybjsKICAg IHZhciB2ID0gZW1haWxWb3JsYWdlbkhvbGVuKCk7CiAgICAvLyBTcGxpdCBuYWNoIHZlcnN0ZWNr dC1GbGFnLiBWaXNpYmxlLVZvcmxhZ2VuIGVyc2NoZWluZW4gYWxzIGdyb3NzZQogICAgLy8gS2Fy dGVuIGluIGRlciBQcmltYWVyYW5zaWNodCwgSGlkZGVuIGxhbmRlbiBrb21wYWt0IHVudGVuIGFs cwogICAgLy8gUGlsbGVuIG1pdCAiZWluYmxlbmRlbiItQnV0dG9uLiBWZXJzdGVja3QtRmxhZyBs ZWJ0IGluCiAgICAvLyBhZG1pbi5qc29uLmVtYWlsVm9ybGFnZW5ba2V5XS52ZXJzdGVja3QuCiAg ICB2YXIgc2ljaHRiYXIgPSBbXSwgdmVyc3RlY2t0ID0gW107CiAgICBPYmplY3Qua2V5cyhFTUFJ TF9WT1JMQUdFTl9NRVRBKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkgewogICAgICAgIGlmICh2W2tl eV0gJiYgdltrZXldLnZlcnN0ZWNrdCkgdmVyc3RlY2t0LnB1c2goa2V5KTsKICAgICAgICBlbHNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpY2h0YmFyLnB1c2goa2V5KTsKICAgIH0pOwoK ICAgIHZhciBodG1sID0gJzxkaXYgY2xhc3M9ImVtYWlsdm9ybGFnZW4ta2FydGVuIj4nOwogICAg c2ljaHRiYXIuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICB2YXIgbWV0YSA9IEVNQUlM X1ZPUkxBR0VOX01FVEFba2V5XTsKICAgICAgICB2YXIgdm9ybGFnZSA9IHZba2V5XTsKICAgICAg ICB2YXIgcHJldmlldyA9ICh2b3JsYWdlLnRleHQgfHwgJycpLnJlcGxhY2UoL1xzKy9nLCAnICcp LnNsaWNlKDAsIDE0MCk7CiAgICAgICAgaWYgKCh2b3JsYWdlLnRleHQgfHwgJycpLmxlbmd0aCA+ IDE0MCkgcHJldmlldyArPSAn4oCmJzsKICAgICAgICAvLyByb2xlPWJ1dHRvbiBzdGF0dCA8YnV0 dG9uPjogZGllIEthcnRlIGVudGhhZWx0IHNlbGJzdCBlaW5lbgogICAgICAgIC8vIEF1c2JsZW5k ZW4tPGJ1dHRvbj4sIHVuZCBlaW4gPGJ1dHRvbj4gaW0gPGJ1dHRvbj4gaXN0IHVuZ3VlbHRpZ2Vz CiAgICAgICAgLy8gSFRNTCAoZGVyIEJyb3dzZXIgemVycmVpc3N0IGRlbiBET00tQmF1bSkuIEtl eWJvYXJkLUFrdGl2aWVydW5nCiAgICAgICAgLy8gKEVudGVyL1NwYWNlKSBoYWVuZ3QgYW0gQ29u dGFpbmVyLUtleWRvd24tSGFuZGxlciBpbiBhcHAuanMuCiAgICAgICAgaHRtbCArPSAnPGRpdiBj bGFzcz0iZW1haWx2b3JsYWdlLWthcnRlIiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIiBkYXRh LXZvcmxhZ2U9IicgKyBlc2NhcGVBdHRyKGtleSkgKyAnIj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImV2ay1pY29uIGV2ay1pY29uLScgKyBlc2NhcGVBdHRyKG1ldGEuZmFyYmUpICsgJyI+ JyArIGVzY2FwZUhUTUwobWV0YS5pY29uKSArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxkaXYg Y2xhc3M9ImV2ay1pbmhhbHQiPicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImV2ay10 aXRlbCI+JyArIGVzY2FwZUhUTUwobWV0YS50aXRlbCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAg ICAgICAnPGRpdiBjbGFzcz0iZXZrLWJlc2NocmVpYnVuZyI+JyArIGVzY2FwZUhUTUwobWV0YS5i ZXNjaHJlaWJ1bmcpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImV2 ay1iZXRyZWZmIiB0aXRsZT0iQmV0cmVmZiI+PHNwYW4gY2xhc3M9ImV2ay1sYWJlbCI+QmV0cmVm Zjo8L3NwYW4+ICcgKyBlc2NhcGVIVE1MKHZvcmxhZ2UuYmV0cmVmZiB8fCAnKGxlZXIpJykgKyAn PC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZrLXByZXZpZXciIHRpdGxl PSJCZWdpbm4gZGVzIEFuc2NocmVpYmVucyI+JyArIGVzY2FwZUhUTUwocHJldmlldyB8fCAnKGxl ZXIpJykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgJzxk aXYgY2xhc3M9ImV2ay1ha3Rpb24iPkJlYXJiZWl0ZW4g4oaSPC9kaXY+JyArCiAgICAgICAgICAg IC8vIEF1c2JsZW5kZW4tS25vcGYgKGtsZWluLCBvYmVuIHJlY2h0czsgbnVyIGJlaSBIb3ZlciBz aWNodGJhcikuCiAgICAgICAgICAgIC8vIHN0b3BQcm9wYWdhdGlvbiBpbSBDbGljay1IYW5kbGVy IHZlcmhpbmRlcnQgZGFzIE9lZmZuZW4gZGVzCiAgICAgICAgICAgIC8vIEJlYXJiZWl0ZW4tTW9k YWxzLCB3ZW5uIG51ciBhdXNnZWJsZW5kZXQgd2VyZGVuIHNvbGwuCiAgICAgICAgICAgICc8YnV0 dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV2ay1oaWRlLWJ0biIgZGF0YS1ha3Rpb249ImV2LWhp ZGUiIGRhdGEtdm9ybGFnZT0iJyArIGVzY2FwZUF0dHIoa2V5KSArICciIHRpdGxlPSJWb3JsYWdl IGF1cyBkZXIgVWViZXJzaWNodCBhdXNibGVuZGVuIChrYW5uIHVudGVuIHdpZWRlciBlaW5nZWJs ZW5kZXQgd2VyZGVuKSI+QXVzYmxlbmRlbjwvYnV0dG9uPicgKwogICAgICAgICc8L2Rpdj4nOwog ICAgfSk7CiAgICBodG1sICs9ICc8L2Rpdj4nOwoKICAgIGlmICh2ZXJzdGVja3QubGVuZ3RoKSB7 CiAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZW1haWx2b3JsYWdlbi12ZXJzdGVja3QiPicg KwogICAgICAgICAgICAnPGRpdiBjbGFzcz0iZW1haWx2b3JsYWdlbi12ZXJzdGVja3Qta29wZiI+ JyArCiAgICAgICAgICAgICAgICAnPHNwYW4+VmVyc3RlY2t0ZSBWb3JsYWdlbiAoJyArIHZlcnN0 ZWNrdC5sZW5ndGggKyAnKTwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0i Zm9udC13ZWlnaHQ6NDAwIj7igJQgcGVyIEtsaWNrIHdpZWRlciBlaW5ibGVuZGVuPC9zcGFuPicg KwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJlbWFpbHZv cmxhZ2VuLXZlcnN0ZWNrdC1saXN0ZSI+JzsKICAgICAgICB2ZXJzdGVja3QuZm9yRWFjaChmdW5j dGlvbihrZXkpIHsKICAgICAgICAgICAgdmFyIG1ldGEgPSBFTUFJTF9WT1JMQUdFTl9NRVRBW2tl eV07CiAgICAgICAgICAgIGh0bWwgKz0gJzxzcGFuIGNsYXNzPSJldmstdmVyc3RlY2t0LXBpbGxl Ij4nICsKICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjE0cHgiPicgKyBl c2NhcGVIVE1MKG1ldGEuaWNvbikgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPSJldmstdmVyc3RlY2t0LXRpdGVsIj4nICsgZXNjYXBlSFRNTChtZXRhLnRpdGVsKSAr ICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNz PSJldmstc2hvdy1idG4iIGRhdGEtYWt0aW9uPSJldi1zaG93IiBkYXRhLXZvcmxhZ2U9IicgKyBl c2NhcGVBdHRyKGtleSkgKyAnIiB0aXRsZT0iVm9ybGFnZSB3aWVkZXIgaW4gZGVyIFByaW1hZXJh bnNpY2h0IHplaWdlbiI+ZWluYmxlbmRlbjwvYnV0dG9uPicgKwogICAgICAgICAgICAnPC9zcGFu Pic7CiAgICAgICAgfSk7CiAgICAgICAgaHRtbCArPSAnPC9kaXY+PC9kaXY+JzsKICAgIH0KICAg IGNvbnQuaW5uZXJIVE1MID0gaHRtbDsKfQoKLy8gRWRpdG9yLU1vZGFsIHBybyBWb3JsYWdlLiBM aW5rZSBTcGFsdGU6IEJldHJlZmYgKyBUZXh0YXJlYSArIFRvZ2dsZXMuCi8vIFJlY2h0ZSBTcGFs dGU6IFZhcmlhYmxlbi1JbnNlcnQtQnV0dG9ucy4gS2xpY2sgYXVmIFZhcmlhYmxlIGZ1ZWd0Ci8v IHtuYW1lfSBhbiBDdXJzb3ItUG9zaXRpb24gaW0genVsZXR6dCBmb2t1c3NpZXJ0ZW4gRmVsZCBl aW4uCmV4cG9ydCBmdW5jdGlvbiBlbWFpbFZvcmxhZ2VCZWFyYmVpdGVuTW9kYWwoa2V5KSB7CiAg ICB2YXIgbWV0YSA9IEVNQUlMX1ZPUkxBR0VOX01FVEFba2V5XTsKICAgIGlmICghbWV0YSkgcmV0 dXJuOwogICAgdmFyIHYgPSBlbWFpbFZvcmxhZ2VuSG9sZW4oKVtrZXldOwoKICAgIHZhciB2YXJp YWJsZW5CdG5zID0gbWV0YS52YXJpYWJsZW4ubWFwKGZ1bmN0aW9uKHZhck5hbWUpIHsKICAgICAg ICB2YXIgYmVzY2hyID0gRU1BSUxfVkFSSUFCTEVOX0JFU0NIUkVJQlVOR1t2YXJOYW1lXSB8fCAn JzsKICAgICAgICByZXR1cm4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZXZtLXZhci1i dG4iIGRhdGEtdmFyPSInICsgZXNjYXBlQXR0cih2YXJOYW1lKSArICciIHRpdGxlPSInICsgZXNj YXBlQXR0cignVmFyaWFibGUgZWluZsO8Z2VuOiB7JyArIHZhck5hbWUgKyAnfSDigJQgJyArIGJl c2NocikgKyAnIj4nICsKICAgICAgICAgICAgJzxjb2RlIGNsYXNzPSJldm0tdmFyLW5hbWUiPnsn ICsgZXNjYXBlSFRNTCh2YXJOYW1lKSArICd9PC9jb2RlPicgKwogICAgICAgICAgICAnPHNwYW4g Y2xhc3M9ImV2bS12YXItYmVzY2hyIj4nICsgZXNjYXBlSFRNTChiZXNjaHIpICsgJzwvc3Bhbj4n ICsKICAgICAgICAnPC9idXR0b24+JzsKICAgIH0pLmpvaW4oJycpOwoKICAgIHZhciB0b2dnbGVz SHRtbCA9IG1ldGEudG9nZ2xlcy5sZW5ndGgKICAgICAgICA/ICc8ZGl2IGNsYXNzPSJldm0tdG9n Z2xlcyI+JyArCiAgICAgICAgICAgIG1ldGEudG9nZ2xlcy5tYXAoZnVuY3Rpb24odCkgewogICAg ICAgICAgICAgICAgdmFyIGNoZWNrZWQgPSAhIXZbdC5rZXldOwogICAgICAgICAgICAgICAgcmV0 dXJuICc8bGFiZWwgY2xhc3M9ImV2bS10b2dnbGUiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9 ImV2bS10b2dnbGUtJyArIGVzY2FwZUF0dHIodC5rZXkpICsgJyInICsgKGNoZWNrZWQgPyAnIGNo ZWNrZWQnIDogJycpICsgJz48c3Bhbj4nICsgZXNjYXBlSFRNTCh0LmxhYmVsKSArICc8L3NwYW4+ PC9sYWJlbD4nOwogICAgICAgICAgICB9KS5qb2luKCcnKSArCiAgICAgICAgICAnPC9kaXY+Jwog ICAgICAgIDogJyc7CgogICAgdmFyIHRyaWdnZXJIdG1sID0gJyc7CiAgICBpZiAobWV0YS5hdXRv VHJpZ2dlcikgewogICAgICAgIHZhciB0cmlnZ2VyQ2ZnID0gKChaLmFkbWluICYmIFouYWRtaW4u ZW1haWxUcmlnZ2VyKSB8fCB7fSlba2V5XSB8fCB7fTsKICAgICAgICB2YXIgYWt0aXYgPSAhIXRy aWdnZXJDZmcuYWt0aXY7CiAgICAgICAgdmFyIGFrdGl2ZUVtcGYgPSB0cmlnZ2VyQ2ZnLmVtcGZh ZW5nZXIgfHwgbWV0YS5kZWZhdWx0RW1wZmFlbmdlciB8fCBbXTsKICAgICAgICB2YXIgZW1wZkh0 bWwgPSBFTVBGQUVOR0VSX09QVElPTkVOLm1hcChmdW5jdGlvbihvcHQpIHsKICAgICAgICAgICAg dmFyIGNoZWNrZWQgPSBha3RpdmVFbXBmLmluZGV4T2Yob3B0LmtleSkgPj0gMDsKICAgICAgICAg ICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImV2bS1lbXBmLXplaWxlIj4nICsKICAgICAgICAgICAg ICAgICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJldm0tZW1wZi1jaGsiIGRhdGEta2V5 PSInICsgZXNjYXBlQXR0cihvcHQua2V5KSArICciJyArIChjaGVja2VkID8gJyBjaGVja2VkJyA6 ICcnKSArICc+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4+JyArIGVzY2FwZUhUTUwob3B0Lmxh YmVsKSArICc8L3NwYW4+JyArCiAgICAgICAgICAgICc8L2xhYmVsPic7CiAgICAgICAgfSkuam9p bignJyk7CiAgICAgICAgaWYgKG1ldGEubW9kdXMgPT09ICdoaW53ZWlzJykgewogICAgICAgICAg ICAvLyBQaGFzZSA1ICgyMDI2LTA1LTIwKToga2VpbiBtYWlsdG8sIHNvbmRlcm4gSW4tQXBwLUJh bm5lcitNb2RhbAogICAgICAgICAgICAvLyBmdWVyIFNVICsgR2VzYW10dmVyYW50d29ydGxpY2hl LiBBa3Rpdi1Ub2dnbGUgZW50ZmFlbGx0OiBkZXIKICAgICAgICAgICAgLy8gU2VydmVyIGVyemV1 Z3QgZGVuIEhpbndlaXMgYmVpIGplZGVtIEVyZWlnbmlzLgogICAgICAgICAgICB0cmlnZ2VySHRt bCA9CiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZtLXRyaWdnZXItYmxvY2siPicgKwog ICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJldm0tdHJpZ2dlci10aXRlbCI+SW4tQXBw LUhpbndlaXM8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPHAgY2xhc3M9ImV2bS1oaW53 ZWlzIiBzdHlsZT0ibWFyZ2luOjAiPkJlaW0gRWludHJpdHQgZGVzIEVyZWlnbmlzc2VzIHdpcmQg ZWluIEhpbndlaXMgaW0gQmFubmVyIHVuZCBpbSBIaW53ZWlzLU1vZGFsIGZ1ZXIgU3VwZXJVc2Vy ICsgR2VzYW10dmVyYW50d29ydGxpY2hlIGFuZ2V6ZWlndC4gS2VpbiBPdXRsb29rLVBvcHVwLiBE aWVzZSBWb3JsYWdlIHdpcmQgbmljaHQgdmVyc2VuZGV0OyBzaWUgZGllbnQgbnVyIGFscyBCZXNj aHJlaWJ1bmcgZGVzIEVyZWlnbmlzc2VzLjwvcD4nICsKICAgICAgICAgICAgICAgICc8L2Rpdj4n OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRyaWdnZXJIdG1sID0KICAgICAgICAgICAg ICAgICc8ZGl2IGNsYXNzPSJldm0tdHJpZ2dlci1ibG9jayI+JyArCiAgICAgICAgICAgICAgICAg ICAgJzxkaXYgY2xhc3M9ImV2bS10cmlnZ2VyLXRpdGVsIj5tYWlsdG86LUF1dG8tVHJpZ2dlcjwv ZGl2PicgKwogICAgICAgICAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9ImV2bS10cmlnZ2VyLWFr dGl2Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIg aWQ9ImV2bS10cmlnLWFrdGl2IicgKyAoYWt0aXYgPyAnIGNoZWNrZWQnIDogJycpICsgJz4nICsK ICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPlRyaWdnZXIgYWt0aXZpZXJlbiAow7ZmZm5l dCBPdXRsb29rIG1pdCB2b3JhdXNnZWbDvGxsdGVyIE1haWwsIHdlbm4gZGFzIEVyZWlnbmlzIGVp bnRyaXR0KTwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9sYWJlbD4nICsKICAgICAg ICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJldm0tbGFiZWwiIHN0eWxlPSJtYXJnaW4tdG9w OjhweCI+RW1wZsOkbmdlciAod2VyZGVuIGFscyBCQ0Mgdm9yYXVzZ2Vmw7xsbHQpPC9sYWJlbD4n ICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZtLWVtcGYtbGlzdGUiPicgKyBl bXBmSHRtbCArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPHNtYWxsIGNsYXNzPSJl dm0taGlud2VpcyI+S2VpbiBhdXRvbWF0aXNjaGVyIFZlcnNhbmQuIEJlaW0gRWludHJpdHQgZGVz IEVyZWlnbmlzc2VzIMO2ZmZuZXQgc2ljaCBkYXMgU3RhbmRhcmQtTWFpbHByb2dyYW1tIG1pdCBF bXBmw6RuZ2VybiwgQmV0cmVmZiB1bmQgVGV4dCB2b3JhdXNnZWbDvGxsdDsgZHUgcHLDvGZzdCBk aWUgTWFpbCB1bmQgdmVyc2NoaWNrc3Qgc2llIG1hbnVlbGwuPC9zbWFsbD4nICsKICAgICAgICAg ICAgICAgICc8L2Rpdj4nOwogICAgICAgIH0KICAgIH0KCiAgICB2YXIgcnRlVG9vbGJhciA9CiAg ICAgICAgJzxkaXYgY2xhc3M9InJ0ZS10b29sYmFyIj4nICsKICAgICAgICAgICAgJzxidXR0b24g dHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImJvbGQiIHRpdGxlPSJGZXR0 IChDdHJsK0IpIj48c3Ryb25nPkI8L3N0cm9uZz48L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxi dXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Iml0YWxpYyIgdGl0 bGU9Ikt1cnNpdiAoQ3RybCtJKSI+PGVtPkk8L2VtPjwvYnV0dG9uPicgKwogICAgICAgICAgICAn PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0idW5kZXJsaW5l IiB0aXRsZT0iVW50ZXJzdHJpY2hlbiAoQ3RybCtVKSI+PHU+VTwvdT48L2J1dHRvbj4nICsKICAg ICAgICAgICAgJzxzcGFuIGNsYXNzPSJydGUtc2VwIj48L3NwYW4+JyArCiAgICAgICAgICAgICc8 YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InJ0ZS1idG4iIGRhdGEtY21kPSJpbnNlcnRVbm9y ZGVyZWRMaXN0IiB0aXRsZT0iQXVmesOkaGx1bmciPuKAojwvYnV0dG9uPicgKwogICAgICAgICAg ICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJydGUtYnRuIiBkYXRhLWNtZD0iaW5zZXJ0 T3JkZXJlZExpc3QiIHRpdGxlPSJOdW1tZXJpZXJ0Ij4xLjwvYnV0dG9uPicgKwogICAgICAgICAg ICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bhbj4nICsKICAgICAgICAgICAgJzxidXR0b24g dHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9Im91dGRlbnQiIHRpdGxlPSJB dXNyw7xja2VuIj7ih6Q8L2J1dHRvbj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0icnRlLWJ0biIgZGF0YS1jbWQ9ImluZGVudCIgdGl0bGU9IkVpbnLDvGNrZW4i PuKHpTwvYnV0dG9uPicgKwogICAgICAgICAgICAnPHNwYW4gY2xhc3M9InJ0ZS1zZXAiPjwvc3Bh bj4nICsKICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icnRlLWJ0biIg ZGF0YS1jbWQ9InJlbW92ZUZvcm1hdCIgdGl0bGU9IkZvcm1hdGllcnVuZyBlbnRmZXJuZW4iPkzD tnNjaGVuPC9idXR0b24+JyArCiAgICAgICAgJzwvZGl2Pic7CgogICAgdmFyIHRleHRIdG1sID0g ZW1haWxIb29rcy5odG1sQXVzRmVsZCA/IGVtYWlsSG9va3MuaHRtbEF1c0ZlbGQodi50ZXh0IHx8 ICcnKSA6ICh2LnRleHQgfHwgJycpOwoKICAgIHZhciBrb2VycGVyID0KICAgICAgICAnPHAgY2xh c3M9ImV2bS1iZXNjaHJlaWJ1bmciPicgKyBlc2NhcGVIVE1MKG1ldGEuYmVzY2hyZWlidW5nKSAr ICc8L3A+JyArCiAgICAgICAgJzxkaXYgY2xhc3M9ImV2bS1ncmlkIj4nICsKICAgICAgICAgICAg JzxkaXYgY2xhc3M9ImV2bS1mb3JtIj4nICsKICAgICAgICAgICAgICAgICc8bGFiZWwgY2xhc3M9 ImV2bS1sYWJlbCIgZm9yPSJldm0tYmV0cmVmZiI+QmV0cmVmZjwvbGFiZWw+JyArCiAgICAgICAg ICAgICAgICAnPGlucHV0IHR5cGU9InRleHQiIGlkPSJldm0tYmV0cmVmZiIgY2xhc3M9ImZvcm0t aW5wdXQgZXZtLWJldHJlZmYtaW5wdXQiIHZhbHVlPSInICsgZXNjYXBlQXR0cih2LmJldHJlZmYg fHwgJycpICsgJyIgcGxhY2Vob2xkZXI9IkJldHJlZmYgZGVyIEUtTWFpbCDigKYiPicgKwogICAg ICAgICAgICAgICAgJzxsYWJlbCBjbGFzcz0iZXZtLWxhYmVsIiBzdHlsZT0ibWFyZ2luLXRvcDox NHB4Ij5BbnNjaHJlaWJlbjwvbGFiZWw+JyArCiAgICAgICAgICAgICAgICBydGVUb29sYmFyICsK ICAgICAgICAgICAgICAgICc8ZGl2IGlkPSJldm0tdGV4dCIgY2xhc3M9InJ0ZS1lZGl0b3IgZXZt LXRleHQtcnRlIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiIGRhdGEt cGxhY2Vob2xkZXI9Ikd1dGVuIFRhZyDigKYiPicgKyB0ZXh0SHRtbCArICc8L2Rpdj4nICsKICAg ICAgICAgICAgICAgICc8c21hbGwgY2xhc3M9ImV2bS1oaW53ZWlzIj5Gb3JtYXRpZXJ1bmcgKGZl dHQva3Vyc2l2L0xpc3RlbikgaXN0IG3DtmdsaWNoOyBiZWltIG1haWx0by1WZXJzYW5kIHdpcmQg c2llIGluIHJlaW5lbiBUZXh0IHVtZ2V3YW5kZWx0LCBkZXIgZGFubiBpbiBPdXRsb29rIGVyc2No ZWludC4gVmFyaWFibGVuIHdpZSA8Y29kZT57ZGF0dW19PC9jb2RlPiB3ZXJkZW4gYmVpbSDDlmZm bmVuIGRlcyBQb3B1cHMgYXV0b21hdGlzY2ggZXJzZXR6dC48L3NtYWxsPicgKwogICAgICAgICAg ICAgICAgdG9nZ2xlc0h0bWwgKwogICAgICAgICAgICAgICAgdHJpZ2dlckh0bWwgKwogICAgICAg ICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJldm0tdmFycyI+JyArCiAg ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZXZtLXZhcnMtdGl0ZWwiPlZhcmlhYmxlbiBlaW5m w7xnZW48L2Rpdj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJldm0tdmFycy1oaW53 ZWlzIj5LbGljayBhdWYgZWluZSBWYXJpYWJsZSBmw7xndCBzaWUgYW4gZGVyIEN1cnNvci1Qb3Np dGlvbiBlaW4gKGltIGFrdHVlbGwgYWt0aXZlbiBGZWxkIOKAlCBCZXRyZWZmIG9kZXIgQW5zY2hy ZWliZW4pLjwvZGl2PicgKwogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImV2bS12YXJzLWxp c3RlIj4nICsgdmFyaWFibGVuQnRucyArICc8L2Rpdj4nICsKICAgICAgICAgICAgJzwvZGl2Picg KwogICAgICAgICc8L2Rpdj4nOwoKICAgIHZhciBmdXNzID0gJzxidXR0b24gY2xhc3M9ImJ0biIg aWQ9ImV2bS1hYmJyZWNoZW4iIHR5cGU9ImJ1dHRvbiI+QWJicmVjaGVuPC9idXR0b24+JyArCiAg ICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hZXIiIGlkPSJkbGctc3Bl aWNoZXJuIiB0eXBlPSJidXR0b24iPlNwZWljaGVybjwvYnV0dG9uPic7CgogICAgLy8gQXV0by1T YXZlIChQYWtldC1DLCAyMDI2LTA1LTI5KTogYmVpbSBTY2hsaWVzc2VuIHdpcmQgYXV0b21hdGlz Y2gKICAgIC8vIGdlc3BlaWNoZXJ0LiBVc2VyLVByYWVmZXJlbnogZnVlciBhbGxlIGdyb2Vzc2Vy ZW4gRWRpdC1Nb2RhbHMuCiAgICBtb2RhbFplaWdlbihtZXRhLnRpdGVsICsgJyBiZWFyYmVpdGVu Jywga29lcnBlciwgZnVzcywgZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gMSkgVm9ybGFnZSAoYmV0 cmVmZiArIHRleHQgKyB0b2dnbGVzKSBzcGVpY2hlcm4KICAgICAgICB2YXIgcGF5bG9hZCA9IFou YWRtaW4uZW1haWxWb3JsYWdlbiA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5hZG1pbi5l bWFpbFZvcmxhZ2VuKSkgOiB7fTsKICAgICAgICB2YXIgcnRlRWwgPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZXZtLXRleHQnKTsKICAgICAgICBwYXlsb2FkW2tleV0gPSB7CiAgICAgICAgICAg IGJldHJlZmY6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldm0tYmV0cmVmZicpLnZhbHVlLAog ICAgICAgICAgICB0ZXh0OiAgICBzYW5pdGl6ZVJpY2hIdG1sKHJ0ZUVsID8gcnRlRWwuaW5uZXJI VE1MIDogJycpCiAgICAgICAgfTsKICAgICAgICBtZXRhLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlv bih0KSB7CiAgICAgICAgICAgIHBheWxvYWRba2V5XVt0LmtleV0gPSBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnZXZtLXRvZ2dsZS0nICsgdC5rZXkpLmNoZWNrZWQ7CiAgICAgICAgfSk7CgogICAg ICAgIC8vIDIpIEJlaSBtYWlsdG8tYXV0b1RyaWdnZXIgenVzYWV0emxpY2ggVHJpZ2dlci1Lb25m aWcgKGFrdGl2ICsgZW1wZmFlbmdlcikKICAgICAgICAvLyBzcGVpY2hlcm4uIEhpbndlaXMtVHJp Z2dlciBoYWJlbiBrZWluIGFrdGl2LVRvZ2dsZSAoU2VydmVyIGVudHNjaGVpZGV0KSwKICAgICAg ICAvLyBkYWhlciBrZWluIFNhdmUtUGF5bG9hZC4KICAgICAgICB2YXIgdHJpZ2dlclBheWxvYWQg PSBudWxsOwogICAgICAgIGlmIChtZXRhLmF1dG9UcmlnZ2VyICYmIG1ldGEubW9kdXMgIT09ICdo aW53ZWlzJykgewogICAgICAgICAgICB2YXIgdHJpZ0FsbGUgPSBaLmFkbWluLmVtYWlsVHJpZ2dl ciA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoWi5hZG1pbi5lbWFpbFRyaWdnZXIpKSA6IHt9 OwogICAgICAgICAgICB2YXIgYWt0aXZFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldm0t dHJpZy1ha3RpdicpOwogICAgICAgICAgICB2YXIgZW1wZkNoa3MgPSBkb2N1bWVudC5xdWVyeVNl bGVjdG9yQWxsKCcuZXZtLWVtcGYtY2hrJyk7CiAgICAgICAgICAgIHZhciBlbXBmID0gW107CiAg ICAgICAgICAgIGVtcGZDaGtzLmZvckVhY2goZnVuY3Rpb24oYykgeyBpZiAoYy5jaGVja2VkKSBl bXBmLnB1c2goYy5nZXRBdHRyaWJ1dGUoJ2RhdGEta2V5JykpOyB9KTsKICAgICAgICAgICAgdHJp Z0FsbGVba2V5XSA9IHsKICAgICAgICAgICAgICAgIGFrdGl2OiAgICAgIGFrdGl2RWwgPyBha3Rp dkVsLmNoZWNrZWQgOiBmYWxzZSwKICAgICAgICAgICAgICAgIGVtcGZhZW5nZXI6IGVtcGYKICAg ICAgICAgICAgfTsKICAgICAgICAgICAgdHJpZ2dlclBheWxvYWQgPSB0cmlnQWxsZTsKICAgICAg ICB9CgogICAgICAgIC8vIEVyc3QgVm9ybGFnZW4tU2F2ZSwgZGFubiAob3B0aW9uYWwpIFRyaWdn ZXItU2F2ZSBzZXF1ZW56aWVsbAogICAgICAgIGFwaVB1dCgnL2FwaS9hZG1pbi9lbWFpbHZvcmxh Z2VuJywgcGF5bG9hZCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgWi5hZG1pbi5lbWFp bFZvcmxhZ2VuID0gcGF5bG9hZDsKICAgICAgICAgICAgaWYgKHRyaWdnZXJQYXlsb2FkKSB7CiAg ICAgICAgICAgICAgICByZXR1cm4gYXBpUHV0KCcvYXBpL2FkbWluL2VtYWlsdHJpZ2dlcicsIHRy aWdnZXJQYXlsb2FkKS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIFouYWRt aW4uZW1haWxUcmlnZ2VyID0gdHJpZ2dlclBheWxvYWQ7CiAgICAgICAgICAgICAgICB9KTsKICAg ICAgICAgICAgfQogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGVudHd1 cmZMb2VzY2hlbignZW1haWxfJyArIGtleSk7CiAgICAgICAgICAgIG1vZGFsU2NobGllc3Nlbih0 cnVlKTsKICAgICAgICAgICAgZW1haWxWb3JsYWdlblJlbmRlcm4oKTsKICAgICAgICAgICAgdG9h c3QobWV0YS50aXRlbCArICcgZ2VzcGVpY2hlcnQnLCAnZXJmb2xnJyk7CiAgICAgICAgfSkuY2F0 Y2goZnVuY3Rpb24oZSkgeyB0b2FzdCgnRmVobGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7 IH0pOwogICAgfSwgJ2VtYWlsXycgKyBrZXksIHsgYXV0b1NhdmU6IHRydWUgfSk7CgogICAgLy8g TW9kYWwgdmVyZ3JvZXNzZXJuIChTdGFuZGFyZCA2MjBweCB3YXIgenUgZW5nIOKAlCBVc2VyLVd1 bnNjaCkKICAgIHZhciBtb2RhbEluaGFsdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2Rh bC1vdmVybGF5IC5tb2RhbC1pbmhhbHQnKTsKICAgIGlmIChtb2RhbEluaGFsdCkgbW9kYWxJbmhh bHQuY2xhc3NMaXN0LmFkZCgnbW9kYWwtaW5oYWx0LWdyb3NzJyk7CgogICAgLy8gUlRFIGF1ZiBk YXMgY29udGVudGVkaXRhYmxlLUZlbGQgaGFlbmdlbgogICAgdmFyIHJ0ZUVkaXRvciA9IGRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdldm0tdGV4dCcpOwogICAgaWYgKHJ0ZUVkaXRvcikgcnRlSW5p dChydGVFZGl0b3IpOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldm0tYWJicmVjaGVu JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2Vu KCk7IH0pOwoKICAgIC8vIFRyYWNraW5nIHdlbGNoZXMgRmVsZCB6dWxldHp0IGZva3Vzc2llcnQg d2FyIChCZXRyZWZmIHZzLiBBbnNjaHJlaWJlbikuCiAgICAvLyBCZWltIEtsaWNrIGF1ZiBWYXJp YWJsZSB3aXJkIGRvcnQgZWluZ2VmdWVndC4KICAgIHZhciBsZXR6dGVzRmVsZCA9IHJ0ZUVkaXRv ciB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXZtLWJldHJlZmYnKTsKICAgIHZhciBiZXRy ZWZmRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXZtLWJldHJlZmYnKTsKICAgIGlmIChi ZXRyZWZmRWwpIGJldHJlZmZFbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIGZ1bmN0aW9uKCkg eyBsZXR6dGVzRmVsZCA9IGJldHJlZmZFbDsgfSk7CiAgICBpZiAocnRlRWRpdG9yKSAgcnRlRWRp dG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgZnVuY3Rpb24oKSB7IGxldHp0ZXNGZWxkID0g cnRlRWRpdG9yOyB9KTsKICAgIGlmIChydGVFZGl0b3IpIHJ0ZUVkaXRvci5mb2N1cygpOwoKICAg IC8vIFZhcmlhYmxlbi1JbnNlcnQtQnV0dG9ucy4gV0lDSFRJRzogbW91c2Vkb3duLnByZXZlbnRE ZWZhdWx0KCkgaGFlbHQKICAgIC8vIGRlbiBDdXJzb3ItRm9rdXMgaW0gWmllbC1GZWxkLCBzb25z dCB2ZXJsaWVydCBjb250ZW50ZWRpdGFibGUgZGllCiAgICAvLyBDdXJzb3ItUG9zaXRpb24gYmV2 b3IgZXhlY0NvbW1hbmQgZ3JlaWZ0LgogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV2 bS12YXItYnRuJykuZm9yRWFjaChmdW5jdGlvbihidG4pIHsKICAgICAgICBidG4uYWRkRXZlbnRM aXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24oZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH0p OwogICAgICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAg ICAgICAgICB2YXIgdmFyTmFtZSA9IGJ0bi5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFyJyk7CiAgICAg ICAgICAgIHZhciB0b2tlbiA9ICd7JyArIHZhck5hbWUgKyAnfSc7CiAgICAgICAgICAgIHZhciB6 aWVsID0gbGV0enRlc0ZlbGQ7CiAgICAgICAgICAgIGlmICghemllbCkgcmV0dXJuOwogICAgICAg ICAgICBpZiAoemllbC50YWdOYW1lID09PSAnSU5QVVQnIHx8IHppZWwudGFnTmFtZSA9PT0gJ1RF WFRBUkVBJykgewogICAgICAgICAgICAgICAgdmFyIHMgPSB6aWVsLnNlbGVjdGlvblN0YXJ0IHx8 IDA7CiAgICAgICAgICAgICAgICB2YXIgZTIgPSB6aWVsLnNlbGVjdGlvbkVuZCB8fCAwOwogICAg ICAgICAgICAgICAgemllbC52YWx1ZSA9IHppZWwudmFsdWUuc2xpY2UoMCwgcykgKyB0b2tlbiAr IHppZWwudmFsdWUuc2xpY2UoZTIpOwogICAgICAgICAgICAgICAgemllbC5zZWxlY3Rpb25TdGFy dCA9IHppZWwuc2VsZWN0aW9uRW5kID0gcyArIHRva2VuLmxlbmd0aDsKICAgICAgICAgICAgICAg IHppZWwuZm9jdXMoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGNv bnRlbnRlZGl0YWJsZTogYW4gQ3Vyc29yLVBvc2l0aW9uIGVpbmZ1ZWdlbgogICAgICAgICAgICAg ICAgemllbC5mb2N1cygpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2lu c2VydFRleHQnLCBmYWxzZSwgdG9rZW4pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFoubW9k YWxEaXJ0eSA9IHRydWU7CiAgICAgICAgfSk7CiAgICB9KTsKfQoKLy8gPT09PT0gVm9ybGFnZW4t RW5naW5lIChiZWZ1ZWxsZW4gKyBFbXBmYWVuZ2VyLVJlc29sdmUgKyBUcmlnZ2VyLURpc3BhdGNo KSA9PT09PQoKLy8gV2FuZGVsdCBzYW5pdGllcnRlcyBNaW5pLUhUTUwgaW4gUGxhaW4tVGV4dCBm dWVyIG1haWx0bzotVmVyc2FuZC4KLy8gQmFja3dhcmRzLWNvbXBhdDogYWx0ZSBQbGFpbi1Wb3Js YWdlbiAobWl0IFxuKSBnZWhlbiB1bnZlcmFlbmRlcnQgZHVyY2guCmV4cG9ydCBmdW5jdGlvbiBo dG1sWnVQbGFpblRleHQoaHRtbCkgewogICAgaWYgKCFodG1sKSByZXR1cm4gJyc7CiAgICB2YXIg cyA9IFN0cmluZyhodG1sKTsKICAgIGlmICghLzxcLz8oYnxzdHJvbmd8aXxlbXx1fHVsfG9sfGxp fHB8YnJ8ZGl2fHNwYW58YXxoXGR8YmxvY2txdW90ZSlcYi9pLnRlc3QocykpIHJldHVybiBzOwog ICAgcyA9IHMKICAgICAgICAucmVwbGFjZSgvPGJyXHMqXC8/Pi9naSwgJ1xuJykKICAgICAgICAu cmVwbGFjZSgvPFwvKHB8ZGl2fGhcZHxsaXxibG9ja3F1b3RlKT4vZ2ksICdcbicpCiAgICAgICAg LnJlcGxhY2UoLzxsaVtePl0qPi9naSwgJyogJykKICAgICAgICAucmVwbGFjZSgvPFwvPyhwfGRp dnxoXGR8dWx8b2x8YnxzdHJvbmd8aXxlbXx1fHNwYW58YXxibG9ja3F1b3RlKVtePl0qPi9naSwg JycpCiAgICAgICAgLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpCiAgICAgICAgLnJlcGxhY2UoLyZh bXA7L2csICcmJykKICAgICAgICAucmVwbGFjZSgvJmx0Oy9nLCAnPCcpCiAgICAgICAgLnJlcGxh Y2UoLyZndDsvZywgJz4nKQogICAgICAgIC5yZXBsYWNlKC8mcXVvdDsvZywgJyInKQogICAgICAg IC5yZXBsYWNlKC8mIzM5Oy9nLCAiJyIpCiAgICAgICAgLnJlcGxhY2UoL1xuezMsfS9nLCAnXG5c bicpOwogICAgcmV0dXJuIHMudHJpbSgpOwp9CgovLyBFcnNldHp0IHt2YXJpYWJsZX0tUGxhdHpo YWx0ZXIgaW0gU3RyaW5nIGR1cmNoIGRpZSBrb25rcmV0ZW4gV2VydGUuCi8vIEtvbnZlcnRpZXJ0 IEhUTUwtVm9ybGFnZW4gKG5ldWVyIFJURS1FZGl0b3IpIGF1dG9tYXRpc2NoIHp1IFBsYWluLVRl eHQKLy8gZnVlciBkZW4gbWFpbHRvOi1WZXJzYW5kLiBjdHgtT2JqZWt0OiB7ZGF0dW0sIHdvY2hl bnRhZywgc2NoaWNodCwgLi4ufQpleHBvcnQgZnVuY3Rpb24gZW1haWxWb3JsYWdlQmVmdWVsbGVu KHZvcmxhZ2UsIGN0eCkgewogICAgdmFyIHBsYWluID0gaHRtbFp1UGxhaW5UZXh0KHZvcmxhZ2Up OwogICAgcmV0dXJuIHBsYWluLnJlcGxhY2UoL1x7KFx3KylcfS9nLCBmdW5jdGlvbihfLCBrKSB7 CiAgICAgICAgcmV0dXJuIChjdHggJiYgayBpbiBjdHgpID8gU3RyaW5nKGN0eFtrXSkgOiAoJ3sn ICsgayArICd9Jyk7CiAgICB9KTsKfQoKLy8gTG9lc3Qgc3ltYm9saXNjaGUgRW1wZmFlbmdlci1U YWdzICh6LkIuICdzdXBlcnVzZXInLCAnd2FjaGxlaXR1bmdfcGVyc29uJykKLy8gaW4ga29ua3Jl dGUgRS1NYWlsLUFkcmVzc2VuIGF1Zi4gY3R4IGthbm4gJ3BlcnNvbl9pZCcsICdkYXR1bScsCi8v ICdzY2hpY2h0X2t1cnonIGVudGhhbHRlbiwgZGFtaXQgdGFnLXNwZXppZmlzY2hlIEJlenVlZ2Ug ZnVua3Rpb25pZXJlbi4KLy8gUmV0dXJuOiBBcnJheSB2b24gU3RyaW5ncyAoZWluZGV1dGlnZSBB ZHJlc3NlbiwgTG93ZXJjYXNlLWRlZHVwbGl6aWVydCkuCi8vIEF1ZGl0LVBoYXNlIEMuMSAoMjAy Ni0wNS0yMSk6IG5pY2h0IG1laHIgZXhwb3J0aWVydCwgbnVyIGludGVybiBpbgovLyBtYWlsVHJp Z2dlckZldWVybiBnZW51dHp0LiBEZXIgZnJ1ZWhlciBpbiBhcHAuanMgZ2VmdWVocnRlIEltcG9y dCB3dXJkZQovLyBlbnRmZXJudCDigJQga2VpbmUgZXh0ZXJuZW4gS29uc3VtZW50ZW4uCmZ1bmN0 aW9uIGVtYWlsRW1wZmFlbmdlclJlc29sdmUodGFncywgY3R4KSB7CiAgICBpZiAoIXRhZ3MgfHwg IXRhZ3MubGVuZ3RoKSByZXR1cm4gW107CiAgICB2YXIgcGVyc29uZW4gPSAoWi5wbGFudW5nICYm IFoucGxhbnVuZy5wZXJzb25lbikgfHwgW107CiAgICB2YXIgYnlJZCA9IHt9OwogICAgcGVyc29u ZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7IGJ5SWRbU3RyaW5nKHAuaWQpXSA9IHA7IH0pOwogICAg dmFyIG91dCA9IHt9OwogICAgZnVuY3Rpb24gYWRkKHApIHsKICAgICAgICBpZiAoIXApIHJldHVy bjsKICAgICAgICB2YXIgZW0gPSBTdHJpbmcocC5lbWFpbCB8fCAnJykudHJpbSgpOwogICAgICAg IGlmICghZW0gfHwgZW0uaW5kZXhPZignQCcpIDwgMCkgcmV0dXJuOwogICAgICAgIG91dFtlbS50 b0xvd2VyQ2FzZSgpXSA9IGVtOwogICAgfQogICAgdmFyIHppZWxQZXJzb24gPSBjdHggJiYgY3R4 LnBlcnNvbl9pZCAhPSBudWxsID8gYnlJZFtTdHJpbmcoY3R4LnBlcnNvbl9pZCldIDogbnVsbDsK ICAgIHRhZ3MuZm9yRWFjaChmdW5jdGlvbih0YWcpIHsKICAgICAgICBpZiAodGFnID09PSAnYmV0 cm9mZmVuZV9wZXJzb24nKSB7CiAgICAgICAgICAgIGlmICh6aWVsUGVyc29uKSBhZGQoemllbFBl cnNvbik7CiAgICAgICAgfSBlbHNlIGlmICh0YWcgPT09ICd3YWNobGVpdHVuZ19wZXJzb24nKSB7 CiAgICAgICAgICAgIHZhciBvZSA9IHppZWxQZXJzb24gJiYgemllbFBlcnNvbi5vZTsKICAgICAg ICAgICAgcGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgICAgICAgICBpZiAo IXAuYWt0aXYgfHwgcC5ncnVwcGUgIT09ICdXTCcpIHJldHVybjsKICAgICAgICAgICAgICAgIGlm IChvZSAmJiBwLm9lICYmIHAub2UgIT09IG9lKSByZXR1cm47CiAgICAgICAgICAgICAgICBhZGQo cCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAodGFnID09PSAnZ2VzYW10dmVy YW50d29ydGxpY2gnKSB7CiAgICAgICAgICAgIChaLmFkbWluLmZhY2hhdWZzaWNodCB8fCBbXSku Zm9yRWFjaChmdW5jdGlvbihmYSkgewogICAgICAgICAgICAgICAgaWYgKCFmYS5nZXNhbXR2ZXJh bnR3b3J0bGljaCkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKGZhLmVtYWlsKSB7IG91dFtT dHJpbmcoZmEuZW1haWwpLnRvTG93ZXJDYXNlKCldID0gZmEuZW1haWw7IHJldHVybjsgfQogICAg ICAgICAgICAgICAgdmFyIHAgPSBwZXJzb25lbi5maW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuICh4 Lm53S2VubnVuZyB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gU3RyaW5nKGZhLm53S2VubnVuZyB8 fCAnJykudG9Mb3dlckNhc2UoKTsgfSk7CiAgICAgICAgICAgICAgICBhZGQocCk7CiAgICAgICAg ICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAodGFnID09PSAnc3VwZXJ1c2VyJykgewogICAgICAg ICAgICAoWi5hZG1pbi5zdXBlclVzZXIgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oc3UpIHsKICAg ICAgICAgICAgICAgIHZhciBwID0gcGVyc29uZW4uZmluZChmdW5jdGlvbih4KSB7IHJldHVybiAo eC5ud0tlbm51bmcgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IFN0cmluZyhzdS5ud0tlbm51bmcg fHwgJycpLnRvTG93ZXJDYXNlKCk7IH0pOwogICAgICAgICAgICAgICAgYWRkKHApOwogICAgICAg ICAgICB9KTsKICAgICAgICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2RnbF9zY2hpY2h0JykgewogICAg ICAgICAgICBpZiAoY3R4ICYmIGN0eC5kYXR1bSAmJiBjdHguc2NoaWNodF9rdXJ6ICYmIFoucGxh bnVuZy5laW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgIHZhciB0YWdfZWludHJhZWdlID0gWi5w bGFudW5nLmVpbnRyYWVnZVtjdHguZGF0dW1dIHx8IHt9OwogICAgICAgICAgICAgICAgdmFyIHpp ZWxDb2RlcyA9IFtjdHguc2NoaWNodF9rdXJ6ICsgJy1ER0wnLCBjdHguc2NoaWNodF9rdXJ6ICsg Jy1XREYnLCBjdHguc2NoaWNodF9rdXJ6ICsgJy1GQlAnXTsKICAgICAgICAgICAgICAgIE9iamVj dC5rZXlzKHRhZ19laW50cmFlZ2UpLmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAgICAg ICAgICAgICAgaWYgKFN0cmluZyhwaWQpID09PSBTdHJpbmcoY3R4LnBlcnNvbl9pZCkpIHJldHVy bjsKICAgICAgICAgICAgICAgICAgICBpZiAoemllbENvZGVzLmluZGV4T2YodGFnX2VpbnRyYWVn ZVtwaWRdKSA+PSAwKSBhZGQoYnlJZFtwaWRdKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAg ICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh0YWcgPT09ICdkaWVuc3Rfd2FjaF9mcmVpX2luX3Nj aGljaHQnKSB7CiAgICAgICAgICAgIGlmIChjdHggJiYgY3R4LmRhdHVtICYmIFoucGxhbnVuZy5l aW50cmFlZ2UpIHsKICAgICAgICAgICAgICAgIHZhciB0ZSA9IFoucGxhbnVuZy5laW50cmFlZ2Vb Y3R4LmRhdHVtXSB8fCB7fTsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRlKS5mb3JFYWNo KGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0ZVtwaWRdID09PSAnZGZy JyB8fCB0ZVtwaWRdID09PSAnd2ZyJykgYWRkKGJ5SWRbcGlkXSk7CiAgICAgICAgICAgICAgICB9 KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIE9iamVjdC5rZXlz KG91dCkubWFwKGZ1bmN0aW9uKGspIHsgcmV0dXJuIG91dFtrXTsgfSk7Cn0KCi8vIFplbnRyYWxl ciBtYWlsdG86LVRyaWdnZXItRGlzcGF0Y2hlci4KLy8gb3B0Lm1hbnVlbGwgPSB0cnVlIGJlaSB2 b20gTnV0emVyIGFrdGl2IGFuZ2VrbGlja3RlbiBNYWlscyAoei5CLiBEZWZpeml0LQovLyBCcmll ZmluZy1CdXR0b24gaW0gUHJ1ZWZ1bmdzLVRhYikuIEluIGRlbSBGYWxsIGlnbm9yaWVyZW4gd2ly IGRlbgovLyBhZG1pbi1rb25maWd1cmllcnRlbiBjZmcuYWt0aXYtU3RhdHVzIHVuZCBmYWxsZW4g ZnVlciBFbXBmYWVuZ2VyIGF1ZgovLyBtZXRhLmRlZmF1bHRFbXBmYWVuZ2VyIHp1cnVlY2ssIHdl bm4gZGVyIEFkbWluLVRhYiBub2NoIG5pY2h0IGFuZ2VmYXNzdAovLyB3dXJkZS4gRGFzIHZlcmhp bmRlcnQgInN0aWxsZSIgS2xpY2tzLCBiZWkgZGVuZW4gc2ljaCBuaWNodHMgb2VmZm5ldC4KLy8g QXV0by1UcmlnZ2VyIChLcmFua21lbGR1bmcgdS5hLikgYmxlaWJlbiB3aWUgYmlzaGVyOiBudXIg ZmV1ZXJuLCB3ZW5uCi8vIGRlciBBZG1pbiBzaWUgZXhwbGl6aXQgYWt0aXZpZXJ0IGhhdC4KZXhw b3J0IGZ1bmN0aW9uIG1haWxUcmlnZ2VyRmV1ZXJuKHRyaWdnZXJUeXAsIGN0eCwgb3B0KSB7CiAg ICBvcHQgPSBvcHQgfHwge307CiAgICB2YXIgY2ZnID0gKChaLmFkbWluICYmIFouYWRtaW4uZW1h aWxUcmlnZ2VyKSB8fCB7fSlbdHJpZ2dlclR5cF0gfHwgbnVsbDsKICAgIHZhciBtZXRhID0gRU1B SUxfVk9STEFHRU5fTUVUQVt0cmlnZ2VyVHlwXTsKICAgIGlmICghbWV0YSkgcmV0dXJuIGZhbHNl OwogICAgLy8gSGlud2Vpcy1UcmlnZ2VyIChQaGFzZSA1LCAyMDI2LTA1LTIwKTogZGVyIFNlcnZl ciBoYXQgZGVuIEhpbndlaXMKICAgIC8vIGJlcmVpdHMgaW4gZGF0YS9oaW53ZWlzZS5qc29uIGdl c2NocmllYmVuIOKAlCBrZWluIE91dGxvb2stUG9wdXAuCiAgICAvLyBCYW5uZXIgKyBCYWRnZSBl cnNjaGVpbmVuIGJlaW0gbmFlY2hzdGVuIFN5bmMtV29ya2VyLVRpY2suCiAgICBpZiAobWV0YS5t b2R1cyA9PT0gJ2hpbndlaXMnKSByZXR1cm4gZmFsc2U7CiAgICBpZiAoIW9wdC5tYW51ZWxsKSB7 CiAgICAgICAgaWYgKCFjZmcgfHwgIWNmZy5ha3RpdikgcmV0dXJuIGZhbHNlOwogICAgfQogICAg dmFyIHRhZ3MgPSAoY2ZnICYmIGNmZy5lbXBmYWVuZ2VyICYmIGNmZy5lbXBmYWVuZ2VyLmxlbmd0 aCkKICAgICAgICA/IGNmZy5lbXBmYWVuZ2VyCiAgICAgICAgOiAobWV0YS5kZWZhdWx0RW1wZmFl bmdlciB8fCBbXSk7CiAgICB2YXIgdm9ybGFnZSA9IGVtYWlsVm9ybGFnZW5Ib2xlbigpW3RyaWdn ZXJUeXBdOwogICAgaWYgKCF2b3JsYWdlKSByZXR1cm4gZmFsc2U7CiAgICB2YXIgZW1wZmFlbmdl ciA9IGVtYWlsRW1wZmFlbmdlclJlc29sdmUodGFncywgY3R4IHx8IHt9KTsKICAgIGlmICghZW1w ZmFlbmdlci5sZW5ndGgpIHsKICAgICAgICB0b2FzdCgnTWFpbCDigJ4nICsgbWV0YS50aXRlbCAr ICciOiBrZWluZSBFbXBmw6RuZ2VyIG1pdCBFLU1haWwtQWRyZXNzZSBnZWZ1bmRlbiAoR2VzYW10 dmVyYW50d29ydGxpY2hlL3IgaW4gYWRtaW4uZmFjaGF1ZnNpY2h0IHBmbGVnZW4/KScsICd3YXJu dW5nJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyIGJldHJlZmYgPSBlbWFp bFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS5iZXRyZWZmIHx8ICcnLCBjdHggfHwge30pOwogICAg dmFyIHRleHQgICAgPSBlbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS50ZXh0ICAgIHx8ICcn LCBjdHggfHwge30pOwogICAgdmFyIHVybCA9ICdtYWlsdG86P2JjYz0nICsgZW5jb2RlVVJJQ29t cG9uZW50KGVtcGZhZW5nZXIuam9pbignLCcpKSArCiAgICAgICAgICAgICAgJyZzdWJqZWN0PScg KyBlbmNvZGVVUklDb21wb25lbnQoYmV0cmVmZikgKwogICAgICAgICAgICAgICcmYm9keT0nICAg ICsgZW5jb2RlVVJJQ29tcG9uZW50KHRleHQpOwogICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1 cmw7CiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gU2VydmVyLWdldHJpZ2dlcnRlcyBtYWlsdG86IGJl aSBTVS0gb2RlciBHZXNhbXR2ZXJhbnR3b3J0bGljaC1XZWNoc2VsCi8vIGxpZWZlcnQgZGVyIFNl cnZlciBpbSBSZXNwb25zZS1Cb2R5IGBfYnJhdWNodF9tYWlsdG8gPSB7IHRyaWdnZXIsIGRpZmZz IH1gLgovLyBQcm8gRGlmZiAocmVpbi9yYXVzLCByb2xsZSwgbmFtZSkgd2lyZCBlaW4gZWlnZW5l cyBtYWlsdG8tUG9wdXAgZ2VvZWZmbmV0LgovLyBXaXJkIHZvbiBhZG1pbl9yb2xsZW4uanMgZGly ZWt0IG5hY2ggZGVtIFNhdmUgYXVmZ2VydWZlbi4KZXhwb3J0IGZ1bmN0aW9uIHZlcmFudHdvcnR1 bmdzTWFpbHRvRmV1ZXJuKGJyYXVjaHRNYWlsdG8pIHsKICAgIGlmICghYnJhdWNodE1haWx0byB8 fCAhYnJhdWNodE1haWx0by5kaWZmcyB8fCAhYnJhdWNodE1haWx0by5kaWZmcy5sZW5ndGgpIHJl dHVybiBmYWxzZTsKICAgIHZhciB0cmlnZ2VyID0gYnJhdWNodE1haWx0by50cmlnZ2VyIHx8ICdy b2xsZV92ZXJhbnR3b3J0dW5nJzsKICAgIGJyYXVjaHRNYWlsdG8uZGlmZnMuZm9yRWFjaChmdW5j dGlvbihkKSB7CiAgICAgICAgdmFyIHJpY2h0dW5nVmVyYiA9IChkLnJpY2h0dW5nID09PSAncmVp bicpCiAgICAgICAgICAgID8gKCd6dW0gJyArIGQucm9sbGUgKyAnIGVybmFubnQnKQogICAgICAg ICAgICA6ICgnYXVzIGRlciBSb2xsZSAnICsgZC5yb2xsZSArICcgZW50bGFzc2VuJyk7CiAgICAg ICAgbWFpbFRyaWdnZXJGZXVlcm4odHJpZ2dlciwgewogICAgICAgICAgICByb2xsZTogICAgICAg ICAgZC5yb2xsZSwKICAgICAgICAgICAgbmFtZTogICAgICAgICAgIGQubmFtZSB8fCBkLm53S2Vu bnVuZyB8fCAnJywKICAgICAgICAgICAgcmljaHR1bmc6ICAgICAgIGQucmljaHR1bmcsCiAgICAg ICAgICAgIHJpY2h0dW5nX3ZlcmI6ICByaWNodHVuZ1ZlcmIsCiAgICAgICAgICAgICdhdXNsw7Zz ZXInOiAgICBhYnNlbmRlck5hbWVFcm1pdHRlbG4oKSwKICAgICAgICAgICAgYWJzZW5kZXJfbmFt ZTogIGFic2VuZGVyTmFtZUVybWl0dGVsbigpCiAgICAgICAgfSwgeyBtYW51ZWxsOiB0cnVlIH0p OwogICAgfSk7CiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gcm9sbGVEaWZmVHJpZ2dlcm4gZW50ZmFl bGx0IHNlaXQgUGhhc2UgNSAoMjAyNi0wNS0yMCk6IFNVLSB1bmQKLy8gR2VzYW10dmVyYW50d29y dGxpY2gtV2VjaHNlbCB3ZXJkZW4gdm9tIFNlcnZlciB1ZWJlciBkYXMKLy8gX2JyYXVjaHRfbWFp bHRvLUZlbGQgaW0gUmVzcG9uc2Ugc2lnbmFsaXNpZXJ0IChzaWVoZQovLyB2ZXJhbnR3b3J0dW5n c01haWx0b0ZldWVybiBvYmVuKS4gRkEtU2VoZW4tRmxhZy1BZW5kZXJ1bmdlbiB3ZXJkZW4KLy8g dm9tIFNlcnZlciBpbiBkYXRhL2hpbndlaXNlLmpzb24gYWxzIEluLUFwcC1IaW53ZWlzIGVyemV1 Z3QuCg== ### FILE: js/export_plan.js | 20784 Ly8gPT09IGV4cG9ydF9wbGFuLmpzID09PQovLyBEaWVuc3RwbGFuLUV4cG9ydCAoQWRtaW4tVGFi IOKAnkV4Y2VsLUV4cG9ydCIpLiBFcnpldWd0IGNsaWVudHNlaXRpZyBhdXMgZGVuCi8vIGJlcmVp dHMgZ2VsYWRlbmVuIERhdGVuIChaLnBsYW51bmcuZWludHJhZWdlLCBaLnBlcnNvbmVuLCBaLnRh Z0luZm9zKSBlaW5lCi8vIGtvbmZpZ3VyaWVyYmFyZSBUYWJlbGxlOgovLwovLyAgIE5hbWUgfCBE aWVuc3RncnVwcGUgfCBEYXR1bSB8IE1vbmF0IHwgVGFnIHwgV29jaGVudGFnIHwgS1cgfCBTY2hp Y2h0IHwgS2xhcnRleHQKLy8KLy8gRGFydW50ZXIgZm9sZ3QgZWluZSB6d2VpdGUgSW5mb2JveCDi gJ5IaW53ZWlzZSB6dSBUYWdlbiBtaXQgQmVzb25kZXJoZWl0ZW4iCi8vIChGZWllcnRhZ2UgLyBG ZXJpZW4gLyBTb25kZXJ0ZXJtaW5lIOKAlCBhbHNvIGdlbmF1IGRpZSBpbSBQbGFuLUhlYWRlciBl cmthbm50ZW4KLy8gSGlud2Vpc2UpIGZ1ZXIgZGVuIGV4cG9ydGllcnRlbiBaZWl0cmF1bS4KLy8K Ly8gVW1mYW5nIGVpbnN0ZWxsYmFyOiBnYW56ZXMgUGxhbnVuZ3NqYWhyIHwgS2FsZW5kZXJ3b2No ZW4gKHZvbuKAk2JpcykgfAovLyBEYXR1bSAodm9u4oCTYmlzKTsgUGVyc29uZW5rcmVpczogYWxs ZSB8IERpZW5zdGdydXBwZW4gfCBlaW56ZWxuZSBQZXJzb25lbgovLyAoPSBpbmRpdmlkdWVsbGVy IEV4cG9ydCkuIEZvcm1hdDogZm9ybWF0aWVydGVzIFhMU1ggKFNoZWV0SlMsIGxva2FsKSBvZGVy IENTVgovLyAoVVRGLTggQk9NLCBTZW1pa29sb24g4oCUIEV4Y2VsLURFLXRhdWdsaWNoKS4gS2Vp bmUgU2VydmVyLUFlbmRlcnVuZyBub2V0aWcuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0 YXRlLmpzJzsKaW1wb3J0IHsgZXNjYXBlSFRNTCwgZXNjYXBlQXR0ciwgZGF0dW1TdHIsIGRhdHVt Rm9ybWF0REUsIHBpZEtleSB9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgdG9hc3Qg fSBmcm9tICcuL3VpX2RpYWxvZy5qcyc7Cgp2YXIgTU9OQVRFID0gWydKYW51YXInLCAnRmVicnVh cicsICdNw6RyeicsICdBcHJpbCcsICdNYWknLCAnSnVuaScsICdKdWxpJywgJ0F1Z3VzdCcsICdT ZXB0ZW1iZXInLCAnT2t0b2JlcicsICdOb3ZlbWJlcicsICdEZXplbWJlciddOwp2YXIgV1QgICAg ID0gWydTbycsICdNbycsICdEaScsICdNaScsICdEbycsICdGcicsICdTYSddOwp2YXIgU1BBTFRF TiA9IFsnTmFtZScsICdEaWVuc3RncnVwcGUnLCAnRGF0dW0nLCAnTW9uYXQnLCAnVGFnJywgJ1dv Y2hlbnRhZycsICdLVycsICdTY2hpY2h0JywgJ1NjaGljaHQgKEtsYXJ0ZXh0KSddOwp2YXIgSElO V0VJU19TUEFMVEVOID0gWydEYXR1bScsICdXb2NoZW50YWcnLCAnVHlwJywgJ0JlemVpY2hudW5n JywgJ0Jlc2NocmVpYnVuZyddOwoKZnVuY3Rpb24gX2RhcmYoKSB7CiAgICByZXR1cm4gISEoWi5y ZWNodGUgJiYgKFoucmVjaHRlLmlzdFN1cGVyVXNlciB8fCAoWi5yZWNodGUuc2VoZW4gJiYgWi5y ZWNodGUuc2VoZW4uYWRtaW5pc3RyYXRpb24pKSk7Cn0KCi8vID09PT09IEthbGVuZGVyLUhlbGZl ciA9PT09PQoKLy8gSVNPLUthbGVuZGVyd29jaGUgKE1vLWJhc2llcnQpIOKAlCBzcGllZ2VsdCBz dGF0aXN0aWtfZW5naW5lLl9pc29LVy4KZnVuY3Rpb24gX2lzb0tXKGQpIHsKICAgIHZhciB0ID0g bmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTsKICAg IHZhciB0YWcgPSAodC5nZXREYXkoKSArIDYpICUgNzsKICAgIHQuc2V0RGF0ZSh0LmdldERhdGUo KSAtIHRhZyArIDMpOwogICAgdmFyIGphaHJTdGFydCA9IG5ldyBEYXRlKHQuZ2V0RnVsbFllYXIo KSwgMCwgNCk7CiAgICB2YXIga3cgPSAxICsgTWF0aC5yb3VuZCgoKHQgLSBqYWhyU3RhcnQpIC8g ODY0MDAwMDAgLSAzICsgKChqYWhyU3RhcnQuZ2V0RGF5KCkgKyA2KSAlIDcpKSAvIDcpOwogICAg cmV0dXJuIHsgamFocjogdC5nZXRGdWxsWWVhcigpLCBrdzoga3cgfTsKfQovLyBNb250YWcgZGVy IElTTy1LYWxlbmRlcndvY2hlIChXb2NoZSAxID0gZGllIG1pdCBkZW0gNC4gSmFudWFyKS4KZnVu Y3Rpb24gX2lzb1dvY2hlbk1vbnRhZyhqYWhyLCB3b2NoZSkgewogICAgdmFyIGphbjQgPSBuZXcg RGF0ZShqYWhyLCAwLCA0KTsKICAgIHZhciB0YWcgPSAoamFuNC5nZXREYXkoKSArIDYpICUgNzsK ICAgIHZhciB3MSA9IG5ldyBEYXRlKGphbjQuZ2V0RnVsbFllYXIoKSwgamFuNC5nZXRNb250aCgp LCBqYW40LmdldERhdGUoKSAtIHRhZyk7CiAgICByZXR1cm4gbmV3IERhdGUodzEuZ2V0RnVsbFll YXIoKSwgdzEuZ2V0TW9udGgoKSwgdzEuZ2V0RGF0ZSgpICsgKHdvY2hlIC0gMSkgKiA3KTsKfQov LyAnWVlZWS1Xd3cnIChXZXJ0IGVpbmVzIDxpbnB1dCB0eXBlPSJ3ZWVrIj4pIC0+IHsgdm9uOkRh dGUsIGJpczpEYXRlLCBqYWhyLCBrdyB9LgpmdW5jdGlvbiBfa3dHcmVuemVuKHdrU3RyKSB7CiAg ICB2YXIgbSA9IC9eKFxkezR9KS1XKFxkezEsMn0pJC8uZXhlYyh3a1N0ciB8fCAnJyk7CiAgICBp ZiAoIW0pIHJldHVybiBudWxsOwogICAgdmFyIGphaHIgPSBwYXJzZUludChtWzFdLCAxMCksIGt3 ID0gcGFyc2VJbnQobVsyXSwgMTApOwogICAgdmFyIG1vID0gX2lzb1dvY2hlbk1vbnRhZyhqYWhy LCBrdyk7CiAgICB2YXIgc28gPSBuZXcgRGF0ZShtby5nZXRGdWxsWWVhcigpLCBtby5nZXRNb250 aCgpLCBtby5nZXREYXRlKCkgKyA2KTsKICAgIHJldHVybiB7IHZvbjogbW8sIGJpczogc28sIGph aHI6IGphaHIsIGt3OiBrdyB9Owp9CgovLyA9PT09PSBTdGFtbWRhdGVuLUhlbGZlciA9PT09PQoK ZnVuY3Rpb24gX2dydXBwZUxhYmVsKG5hbWUpIHsKICAgIHZhciBnbSA9IFouZ3J1cHBlbk1hcCAm JiBaLmdydXBwZW5NYXBbbmFtZV07CiAgICBpZiAoZ20gJiYgZ20uYmV6ZWljaG51bmcpIHJldHVy biBnbS5iZXplaWNobnVuZzsKICAgIHZhciBnID0gKFouYWRtaW4uZ3J1cHBlbiB8fCBbXSkuZmls dGVyKGZ1bmN0aW9uKHgpeyByZXR1cm4geC5uYW1lID09PSBuYW1lOyB9KVswXTsKICAgIHJldHVy biBnID8gKGcuYmV6ZWljaG51bmcgfHwgZy5uYW1lKSA6IChuYW1lIHx8ICcnKTsKfQpmdW5jdGlv biBfY29kZUJlemVpY2hudW5nKGNvZGUpIHsKICAgIHZhciBjID0gKFouYWRtaW4uc2NoaWNodGNv ZGVzIHx8IFtdKS5maWx0ZXIoZnVuY3Rpb24oeCl7IHJldHVybiB4LmNvZGUgPT09IGNvZGU7IH0p WzBdOwogICAgcmV0dXJuIGMgPyAoYy5iZXplaWNobnVuZyB8fCBjLmNvZGUpIDogY29kZTsKfQpm dW5jdGlvbiBfcGVyc29uTmFtZShwKSB7CiAgICByZXR1cm4gKHAubmFtZSB8fCAnJykgKyAocC52 b3JuYW1lID8gKCcsICcgKyBwLnZvcm5hbWUpIDogJycpOwp9Ci8vIEhUTUwgKFNvbmRlcnRlcm1p bi1UZXh0IGlzdCBhZG1pbi1zYW5pdGlzaWVydCkgLT4gcmVpbmVyIFRleHQgZnVlciBkZW4gRXhw b3J0LgpmdW5jdGlvbiBfc3RyaXBIdG1sKHMpIHsKICAgIGlmICghcykgcmV0dXJuICcnOwogICAg dmFyIGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGQuaW5uZXJIVE1MID0g czsKICAgIHJldHVybiAoZC50ZXh0Q29udGVudCB8fCBkLmlubmVyVGV4dCB8fCAnJykucmVwbGFj ZSgvXHMrL2csICcgJykudHJpbSgpOwp9CgovLyA9PT09PSBGb3JtdWxhci1MZXNlbiA9PT09PQoK ZnVuY3Rpb24gX3ZhbChpZCkgeyB2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsg cmV0dXJuIGUgPyBlLnZhbHVlIDogJyc7IH0KZnVuY3Rpb24gX2NoayhpZCkgeyB2YXIgZSA9IGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsgcmV0dXJuICEhKGUgJiYgZS5jaGVja2VkKTsgfQpm dW5jdGlvbiBfY2hlY2tlZChncnApIHsKICAgIHZhciBvdXQgPSBbXTsKICAgIGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3JBbGwoJyNleHBvcnQtaW5oYWx0IFtkYXRhLWV4cD0iJyArIGdycCArICciXTpj aGVja2VkJykuZm9yRWFjaChmdW5jdGlvbihjKXsgb3V0LnB1c2goYy52YWx1ZSk7IH0pOwogICAg cmV0dXJuIG91dDsKfQoKLy8gWmVpdHJhdW0gYXVzIGRlbSBGb3JtdWxhciAtPiB7IHZvbjpEYXRl LCBiaXM6RGF0ZSwgbGFiZWwgfSBvZGVyIG51bGwuCmZ1bmN0aW9uIF96ZWl0cmF1bSgpIHsKICAg IHZhciBtb2R1cyA9IF92YWwoJ2V4cC16ZWl0bW9kdXMnKSB8fCAnamFocic7CiAgICBpZiAobW9k dXMgPT09ICdqYWhyJykgewogICAgICAgIHZhciBqID0gKFouYWRtaW4gJiYgWi5hZG1pbi5qYWhy KSB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICAgICAgcmV0dXJuIHsgdm9uOiBuZXcg RGF0ZShqLCAwLCAxKSwgYmlzOiBuZXcgRGF0ZShqLCAxMSwgMzEpLCBsYWJlbDogJ1BsYW51bmdz amFociAnICsgaiB9OwogICAgfQogICAgaWYgKG1vZHVzID09PSAna3cnKSB7CiAgICAgICAgdmFy IHYgPSBfa3dHcmVuemVuKF92YWwoJ2V4cC1rdy12b24nKSksIGIgPSBfa3dHcmVuemVuKF92YWwo J2V4cC1rdy1iaXMnKSk7CiAgICAgICAgaWYgKCF2ICYmICFiKSByZXR1cm4gbnVsbDsKICAgICAg ICBpZiAoIXYpIHYgPSBiOwogICAgICAgIGlmICghYikgYiA9IHY7CiAgICAgICAgLy8gRmFsbHMg YmlzIHZvciB2b24gbGllZ3QsIHRhdXNjaGVuLgogICAgICAgIHZhciB2b24gPSB2LnZvbiwgYmlz ID0gYi5iaXM7CiAgICAgICAgaWYgKHZvbiA+IGJpcykgeyB2YXIgdCA9IHZvbjsgdm9uID0gYi52 b247IGJpcyA9IHYuYmlzOyB9CiAgICAgICAgdmFyIGxhYiA9ICh2Lmt3ID09PSBiLmt3ICYmIHYu amFociA9PT0gYi5qYWhyKQogICAgICAgICAgICA/ICgnS1cgJyArIHYua3cgKyAnIC8gJyArIHYu amFocikKICAgICAgICAgICAgOiAoJ0tXICcgKyB2Lmt3ICsgJ+KAkycgKyBiLmt3ICsgJyAvICcg KyAodi5qYWhyID09PSBiLmphaHIgPyB2LmphaHIgOiAodi5qYWhyICsgJ+KAkycgKyBiLmphaHIp KSk7CiAgICAgICAgcmV0dXJuIHsgdm9uOiB2b24sIGJpczogYmlzLCBsYWJlbDogbGFiIH07CiAg ICB9CiAgICAvLyBkYXR1bQogICAgdmFyIGR2ID0gX3ZhbCgnZXhwLWRhdHVtLXZvbicpLCBkYiA9 IF92YWwoJ2V4cC1kYXR1bS1iaXMnKTsKICAgIGlmICghZHYgJiYgIWRiKSByZXR1cm4gbnVsbDsK ICAgIHZhciBkVm9uID0gZHYgPyBuZXcgRGF0ZShkdiArICdUMDA6MDA6MDAnKSA6IG5ldyBEYXRl KGRiICsgJ1QwMDowMDowMCcpOwogICAgdmFyIGRCaXMgPSBkYiA/IG5ldyBEYXRlKGRiICsgJ1Qw MDowMDowMCcpIDogbmV3IERhdGUoZHYgKyAnVDAwOjAwOjAwJyk7CiAgICBpZiAoZFZvbiA+IGRC aXMpIHsgdmFyIHR0ID0gZFZvbjsgZFZvbiA9IGRCaXM7IGRCaXMgPSB0dDsgfQogICAgcmV0dXJu IHsgdm9uOiBkVm9uLCBiaXM6IGRCaXMsIGxhYmVsOiBkYXR1bUZvcm1hdERFKGRhdHVtU3RyKGRW b24pKSArICcg4oCTICcgKyBkYXR1bUZvcm1hdERFKGRhdHVtU3RyKGRCaXMpKSB9Owp9CgovLyBQ ZXJzb25lbmtyZWlzIGF1cyBkZW0gRm9ybXVsYXIgLT4geyBsaXN0ZTpbcGVyc29uXSwgbGFiZWwg fS4KZnVuY3Rpb24gX3BlcnNvbmVuS3JlaXMoKSB7CiAgICB2YXIgbW9kdXMgPSBfdmFsKCdleHAt d2VybW9kdXMnKSB8fCAnYWxsZSc7CiAgICB2YXIgYWxsZSA9IChaLnBlcnNvbmVuIHx8IFtdKS5z bGljZSgpOwogICAgaWYgKG1vZHVzID09PSAnZ3J1cHBlJykgewogICAgICAgIHZhciBzZWwgPSBf Y2hlY2tlZCgnZ3JwJyk7CiAgICAgICAgaWYgKCFzZWwubGVuZ3RoKSByZXR1cm4geyBsaXN0ZTog YWxsZSwgbGFiZWw6ICdBbGxlIChrZWluZSBHcnVwcGUgZ2V3w6RobHQpJyB9OwogICAgICAgIHZh ciBsaXN0ZSA9IGFsbGUuZmlsdGVyKGZ1bmN0aW9uKHApeyByZXR1cm4gc2VsLmluZGV4T2YocC5n cnVwcGUpID49IDA7IH0pOwogICAgICAgIHJldHVybiB7IGxpc3RlOiBsaXN0ZSwgbGFiZWw6ICdE aWVuc3RncnVwcGVuOiAnICsgc2VsLm1hcChfZ3J1cHBlTGFiZWwpLmpvaW4oJywgJykgfTsKICAg IH0KICAgIGlmIChtb2R1cyA9PT0gJ3BlcnNvbicpIHsKICAgICAgICB2YXIgc2VsUCA9IF9jaGVj a2VkKCdwZXJzb24nKTsKICAgICAgICBpZiAoIXNlbFAubGVuZ3RoKSByZXR1cm4geyBsaXN0ZTog YWxsZSwgbGFiZWw6ICdBbGxlIChrZWluZSBQZXJzb24gZ2V3w6RobHQpJyB9OwogICAgICAgIHZh ciBscCA9IGFsbGUuZmlsdGVyKGZ1bmN0aW9uKHApeyByZXR1cm4gc2VsUC5pbmRleE9mKFN0cmlu ZyhwLmlkKSkgPj0gMDsgfSk7CiAgICAgICAgdmFyIG5hbWVuID0gbHAubWFwKF9wZXJzb25OYW1l KTsKICAgICAgICByZXR1cm4geyBsaXN0ZTogbHAsIGxhYmVsOiAobHAubGVuZ3RoID09PSAxID8g J0VpbnplbHBlcnNvbjogJyA6IChscC5sZW5ndGggKyAnIFBlcnNvbmVuOiAnKSkgKyBuYW1lbi5z bGljZSgwLCAzKS5qb2luKCc7ICcpICsgKG5hbWVuLmxlbmd0aCA+IDMgPyAnIOKApicgOiAnJykg fTsKICAgIH0KICAgIHJldHVybiB7IGxpc3RlOiBhbGxlLCBsYWJlbDogJ0FsbGUgUGVyc29uZW4n IH07Cn0KCi8vID09PT09IERhdGVuc2FtbWx1bmcgPT09PT0KCmZ1bmN0aW9uIF9zYW1tZWxuKCkg ewogICAgdmFyIHpyID0gX3plaXRyYXVtKCk7CiAgICBpZiAoIXpyKSByZXR1cm4geyBmZWhsZXI6 ICdCaXR0ZSBlaW5lbiBnw7xsdGlnZW4gWmVpdHJhdW0gd8OkaGxlbi4nIH07CiAgICB2YXIgcGsg PSBfcGVyc29uZW5LcmVpcygpOwogICAgdmFyIGVpbnRyID0gKFoucGxhbnVuZyAmJiBaLnBsYW51 bmcuZWludHJhZWdlKSB8fCB7fTsKICAgIHZhciB0YWdJbmZvcyA9IFoudGFnSW5mb3MgfHwge307 CgogICAgdmFyIHJvd3MgPSBbXSwgaGlud2Vpc2UgPSBbXSwgc2VlbkggPSB7fTsKICAgIHZhciBk ID0gbmV3IERhdGUoenIudm9uLmdldEZ1bGxZZWFyKCksIHpyLnZvbi5nZXRNb250aCgpLCB6ci52 b24uZ2V0RGF0ZSgpKTsKICAgIHZhciBlbmRlID0gbmV3IERhdGUoenIuYmlzLmdldEZ1bGxZZWFy KCksIHpyLmJpcy5nZXRNb250aCgpLCB6ci5iaXMuZ2V0RGF0ZSgpKTsKICAgIHZhciBzY2h1dHog PSAwOwogICAgd2hpbGUgKGQgPD0gZW5kZSAmJiBzY2h1dHogPCAxMDAwKSB7CiAgICAgICAgdmFy IGtleSA9IGRhdHVtU3RyKGQpOwogICAgICAgIHZhciB0YWcgPSBlaW50cltrZXldIHx8IHt9Owog ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGsubGlzdGUubGVuZ3RoOyBpKyspIHsKICAgICAg ICAgICAgdmFyIHAgPSBway5saXN0ZVtpXTsKICAgICAgICAgICAgdmFyIGNvZGUgPSB0YWdbcGlk S2V5KHAuaWQpXTsKICAgICAgICAgICAgaWYgKCFjb2RlKSBjb250aW51ZTsKICAgICAgICAgICAg cm93cy5wdXNoKHsgcDogcCwgZGF0dW06IGtleSwgZDogbmV3IERhdGUoZC5nZXRUaW1lKCkpLCBj b2RlOiBjb2RlIH0pOwogICAgICAgIH0KICAgICAgICBpZiAoIXNlZW5IW2tleV0pIHsKICAgICAg ICAgICAgc2Vlbkhba2V5XSA9IHRydWU7CiAgICAgICAgICAgIHZhciBpbmZvID0gdGFnSW5mb3Nb a2V5XTsKICAgICAgICAgICAgaWYgKGluZm8pIHsKICAgICAgICAgICAgICAgIGlmIChpbmZvLnR5 cCA9PT0gJ2ZlaWVydGFnJykgewogICAgICAgICAgICAgICAgICAgIHZhciBrYXRadXNhdHogPSAo aW5mby5rYXRlZ29yaWUgJiYgaW5mby5rYXRlZ29yaWUgIT09ICdnZXNldHpsaWNoJykgPyAoJyAo JyArIGluZm8ua2F0ZWdvcmllICsgJyknKSA6ICcnOwogICAgICAgICAgICAgICAgICAgIGhpbndl aXNlLnB1c2goeyBkYXR1bToga2V5LCB0eXA6ICdGZWllcnRhZycsIHRpdGVsOiAoaW5mby5uYW1l IHx8ICcnKSArIGthdFp1c2F0eiwgdGV4dDogaW5mby5rdXJ6YmVzY2hyZWlidW5nIHx8ICcnIH0p OwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cCA9PT0gJ2ZlcmllbicpIHsKICAg ICAgICAgICAgICAgICAgICBoaW53ZWlzZS5wdXNoKHsgZGF0dW06IGtleSwgdHlwOiAnRmVyaWVu JywgdGl0ZWw6IGluZm8ubmFtZSB8fCAnJywgdGV4dDogJycgfSk7CiAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICBpZiAoaW5mby5zb25kZXIpIHsKICAgICAgICAgICAgICAgICAgICB2 YXIgcyA9IGluZm8uc29uZGVyOwogICAgICAgICAgICAgICAgICAgIGhpbndlaXNlLnB1c2goeyBk YXR1bToga2V5LCB0eXA6IChzLnR5cCA9PT0gJ3dhcm51bmcnID8gJ1NvbmRlcnRlcm1pbiAoV2Fy bnVuZyknIDogJ1NvbmRlcnRlcm1pbicpLCB0aXRlbDogcy50aXRlbCB8fCAnJywgdGV4dDogX3N0 cmlwSHRtbChzLnRleHQgfHwgJycpIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 CiAgICAgICAgfQogICAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpOyBzY2h1dHorKzsK ICAgIH0KCiAgICAvLyBTb3J0aWVydW5nOiBlcnN0IFBlcnNvbmVuLVJlaWhlbmZvbGdlIChHcnVw cGUvUG9zaXRpb24gYXVzIFoucGVyc29uZW4pLAogICAgLy8gZGFubiBjaHJvbm9sb2dpc2NoIOKA lCBzbyBsaWVzdCBzaWNoIGVpbiBFaW56ZWxwbGFuIGFtIFN0dWVjay4KICAgIHZhciBwT3JkZXIg PSB7fTsKICAgIChaLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBpZHgpeyBw T3JkZXJbcHAuaWRdID0gaWR4OyB9KTsKICAgIHJvd3Muc29ydChmdW5jdGlvbihhLCBiKSB7CiAg ICAgICAgdmFyIHBhID0gcE9yZGVyW2EucC5pZF0sIHBiID0gcE9yZGVyW2IucC5pZF07CiAgICAg ICAgaWYgKHBhICE9PSBwYikgcmV0dXJuIChwYSA9PSBudWxsID8gMWU5IDogcGEpIC0gKHBiID09 IG51bGwgPyAxZTkgOiBwYik7CiAgICAgICAgcmV0dXJuIGEuZGF0dW0gPCBiLmRhdHVtID8gLTEg OiAoYS5kYXR1bSA+IGIuZGF0dW0gPyAxIDogMCk7CiAgICB9KTsKICAgIGhpbndlaXNlLnNvcnQo ZnVuY3Rpb24oYSwgYil7IHJldHVybiBhLmRhdHVtIDwgYi5kYXR1bSA/IC0xIDogKGEuZGF0dW0g PiBiLmRhdHVtID8gMSA6IDApOyB9KTsKCiAgICByZXR1cm4geyB6cjogenIsIHdlckxhYmVsOiBw ay5sYWJlbCwgcGVyc29uZW46IHBrLmxpc3RlLCByb3dzOiByb3dzLCBoaW53ZWlzZTogaGlud2Vp c2UgfTsKfQoKZnVuY3Rpb24gX21ldGFaZWlsZShkYXRlbikgewogICAgdmFyIGpldHp0ID0gbmV3 IERhdGUoKTsKICAgIHZhciBwYWQgPSBmdW5jdGlvbihuKXsgcmV0dXJuIChuIDwgMTAgPyAnMCcg OiAnJykgKyBuOyB9OwogICAgcmV0dXJuICdaZWl0cmF1bTogJyArIGRhdGVuLnpyLmxhYmVsICsK ICAgICAgICAnICDigKIgIFBlcnNvbmVua3JlaXM6ICcgKyBkYXRlbi53ZXJMYWJlbCArCiAgICAg ICAgJyAg4oCiICAnICsgZGF0ZW4ucm93cy5sZW5ndGggKyAnIEVpbnRyw6RnZScgKwogICAgICAg ICcgIOKAoiAgZXJzdGVsbHQgJyArIHBhZChqZXR6dC5nZXREYXRlKCkpICsgJy4nICsgcGFkKGpl dHp0LmdldE1vbnRoKCkgKyAxKSArICcuJyArIGpldHp0LmdldEZ1bGxZZWFyKCkgKwogICAgICAg ICcgJyArIHBhZChqZXR6dC5nZXRIb3VycygpKSArICc6JyArIHBhZChqZXR6dC5nZXRNaW51dGVz KCkpOwp9CmZ1bmN0aW9uIF9kYXRlblplaWxlKHIpIHsKICAgIHZhciBpc28gPSBfaXNvS1coci5k KTsKICAgIHJldHVybiBbX3BlcnNvbk5hbWUoci5wKSwgX2dydXBwZUxhYmVsKHIucC5ncnVwcGUp LCBkYXR1bUZvcm1hdERFKHIuZGF0dW0pLCBNT05BVEVbci5kLmdldE1vbnRoKCldLAogICAgICAg ICAgICByLmQuZ2V0RGF0ZSgpLCBXVFtyLmQuZ2V0RGF5KCldLCBpc28ua3csIHIuY29kZSwgX2Nv ZGVCZXplaWNobnVuZyhyLmNvZGUpXTsKfQpmdW5jdGlvbiBfaGlud2Vpc1plaWxlKGgpIHsKICAg IHZhciBkZCA9IG5ldyBEYXRlKGguZGF0dW0gKyAnVDAwOjAwOjAwJyk7CiAgICByZXR1cm4gW2Rh dHVtRm9ybWF0REUoaC5kYXR1bSksIFdUW2RkLmdldERheSgpXSwgaC50eXAsIGgudGl0ZWwsIGgu dGV4dF07Cn0KZnVuY3Rpb24gX2RhdGVpQmFzaXMoZGF0ZW4pIHsKICAgIHZhciBqZXR6dCA9IG5l dyBEYXRlKCk7CiAgICB2YXIgcGFkID0gZnVuY3Rpb24obil7IHJldHVybiAobiA8IDEwID8gJzAn IDogJycpICsgbjsgfTsKICAgIHZhciBzdGFtcCA9IGpldHp0LmdldEZ1bGxZZWFyKCkgKyBwYWQo amV0enQuZ2V0TW9udGgoKSArIDEpICsgcGFkKGpldHp0LmdldERhdGUoKSkgKyAnLScgKyBwYWQo amV0enQuZ2V0SG91cnMoKSkgKyBwYWQoamV0enQuZ2V0TWludXRlcygpKTsKICAgIHJldHVybiAn VkkzLURpZW5zdHBsYW5fJyArIHN0YW1wOwp9CgovLyA9PT09PSBYTFNYLUVyemV1Z3VuZyAoZm9y bWF0aWVydCkgPT09PT0KCmZ1bmN0aW9uIF9leHBvcnRYbHN4KGRhdGVuLCBtaXRIaW53ZWlzZSkg ewogICAgaWYgKHR5cGVvZiBYTFNYID09PSAndW5kZWZpbmVkJykgeyB0b2FzdCgnRXhjZWwtQmli bGlvdGhlayBuaWNodCBnZWxhZGVuIOKAlCBiaXR0ZSBTZWl0ZSBuZXUgbGFkZW4uJywgJ2ZlaGxl cicpOyByZXR1cm47IH0KICAgIHZhciBhb2EgPSBbXTsKICAgIGFvYS5wdXNoKFsnRGllbnN0cGxh bi1FeHBvcnQg4oCUIFZJMyBER0wtUGxhbnVuZyddKTsKICAgIGFvYS5wdXNoKFtfbWV0YVplaWxl KGRhdGVuKV0pOwogICAgYW9hLnB1c2goW10pOwogICAgdmFyIGhlYWRlclIgPSBhb2EubGVuZ3Ro OyAgICAgICAgICAgICAgICAgLy8gMC1iYXNpZXJ0OiBaZWlsZSBkZXIgU3BhbHRlbmtvZXBmZQog ICAgYW9hLnB1c2goU1BBTFRFTi5zbGljZSgpKTsKICAgIGRhdGVuLnJvd3MuZm9yRWFjaChmdW5j dGlvbihyKXsgYW9hLnB1c2goX2RhdGVuWmVpbGUocikpOyB9KTsKICAgIHZhciBkYXRlbkVuZGVS ID0gYW9hLmxlbmd0aCAtIDE7ICAgICAgICAgIC8vIGxldHp0ZSBEYXRlbnplaWxlICgwLWJhc2ll cnQpCgogICAgaWYgKG1pdEhpbndlaXNlICYmIGRhdGVuLmhpbndlaXNlLmxlbmd0aCkgewogICAg ICAgIGFvYS5wdXNoKFtdKTsgYW9hLnB1c2goW10pOwogICAgICAgIGFvYS5wdXNoKFsnSGlud2Vp c2UgenUgVGFnZW4gbWl0IEJlc29uZGVyaGVpdGVuIChGZWllcnRhZ2UsIEZlcmllbiwgU29uZGVy dGVybWluZSknXSk7CiAgICAgICAgdmFyIGhpbndIZWFkZXJSID0gYW9hLmxlbmd0aDsKICAgICAg ICBhb2EucHVzaChISU5XRUlTX1NQQUxURU4uc2xpY2UoKSk7CiAgICAgICAgZGF0ZW4uaGlud2Vp c2UuZm9yRWFjaChmdW5jdGlvbihoKXsgYW9hLnB1c2goX2hpbndlaXNaZWlsZShoKSk7IH0pOwog ICAgICAgIHZhciB3czAgPSBYTFNYLnV0aWxzLmFvYV90b19zaGVldChhb2EpOwogICAgICAgIHdz MFsnIW1lcmdlcyddID0gWwogICAgICAgICAgICB7IHM6IHsgcjogMCwgYzogMCB9LCBlOiB7IHI6 IDAsIGM6IFNQQUxURU4ubGVuZ3RoIC0gMSB9IH0sCiAgICAgICAgICAgIHsgczogeyByOiAxLCBj OiAwIH0sIGU6IHsgcjogMSwgYzogU1BBTFRFTi5sZW5ndGggLSAxIH0gfSwKICAgICAgICAgICAg eyBzOiB7IHI6IGhpbndIZWFkZXJSIC0gMSwgYzogMCB9LCBlOiB7IHI6IGhpbndIZWFkZXJSIC0g MSwgYzogU1BBTFRFTi5sZW5ndGggLSAxIH0gfQogICAgICAgIF07CiAgICAgICAgX2ZpbmlzaFdz KHdzMCwgaGVhZGVyUiwgZGF0ZW5FbmRlUik7CiAgICAgICAgX2Rvd25sb2FkKHdzMCwgZGF0ZW4p OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciB3cyA9IFhMU1gudXRpbHMuYW9hX3RvX3No ZWV0KGFvYSk7CiAgICB3c1snIW1lcmdlcyddID0gWwogICAgICAgIHsgczogeyByOiAwLCBjOiAw IH0sIGU6IHsgcjogMCwgYzogU1BBTFRFTi5sZW5ndGggLSAxIH0gfSwKICAgICAgICB7IHM6IHsg cjogMSwgYzogMCB9LCBlOiB7IHI6IDEsIGM6IFNQQUxURU4ubGVuZ3RoIC0gMSB9IH0KICAgIF07 CiAgICBfZmluaXNoV3Mod3MsIGhlYWRlclIsIGRhdGVuRW5kZVIpOwogICAgX2Rvd25sb2FkKHdz LCBkYXRlbik7Cn0KZnVuY3Rpb24gX2ZpbmlzaFdzKHdzLCBoZWFkZXJSLCBkYXRlbkVuZGVSKSB7 CiAgICB3c1snIWNvbHMnXSA9IFsgeyB3Y2g6IDI2IH0sIHsgd2NoOiAyMCB9LCB7IHdjaDogMTIg fSwgeyB3Y2g6IDExIH0sIHsgd2NoOiA1IH0sIHsgd2NoOiAxMCB9LCB7IHdjaDogNSB9LCB7IHdj aDogMTIgfSwgeyB3Y2g6IDI4IH0gXTsKICAgIC8vIEF1dG8tRmlsdGVyIE5VUiB1ZWJlciBkZXIg SGF1cHR0YWJlbGxlIChLb3BmemVpbGUgKyBEYXRlbnplaWxlbikuCiAgICBpZiAoZGF0ZW5FbmRl UiA+PSBoZWFkZXJSKSB7CiAgICAgICAgd3NbJyFhdXRvZmlsdGVyJ10gPSB7IHJlZjogWExTWC51 dGlscy5lbmNvZGVfcmFuZ2UoeyBzOiB7IHI6IGhlYWRlclIsIGM6IDAgfSwgZTogeyByOiBkYXRl bkVuZGVSLCBjOiBTUEFMVEVOLmxlbmd0aCAtIDEgfSB9KSB9OwogICAgfQp9CmZ1bmN0aW9uIF9k b3dubG9hZCh3cywgZGF0ZW4pIHsKICAgIHZhciB3YiA9IFhMU1gudXRpbHMuYm9va19uZXcoKTsK ICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCAnRGllbnN0cGxhbicpOwog ICAgWExTWC53cml0ZUZpbGUod2IsIF9kYXRlaUJhc2lzKGRhdGVuKSArICcueGxzeCcpOwp9Cgov LyA9PT09PSBDU1YtRXJ6ZXVndW5nID09PT09CgpmdW5jdGlvbiBfY3N2RmVsZCh2KSB7CiAgICB2 ID0gKHYgPT0gbnVsbCA/ICcnIDogU3RyaW5nKHYpKTsKICAgIGlmICgvWyI7XG5ccl0vLnRlc3Qo dikpIHJldHVybiAnIicgKyB2LnJlcGxhY2UoLyIvZywgJyIiJykgKyAnIic7CiAgICByZXR1cm4g djsKfQpmdW5jdGlvbiBfY3N2WmVpbGUoYXJyKSB7IHJldHVybiBhcnIubWFwKF9jc3ZGZWxkKS5q b2luKCc7Jyk7IH0KCmZ1bmN0aW9uIF9leHBvcnRDc3YoZGF0ZW4sIG1pdEhpbndlaXNlKSB7CiAg ICB2YXIgbGluZXMgPSBbXTsKICAgIGxpbmVzLnB1c2goX2NzdkZlbGQoJ0RpZW5zdHBsYW4tRXhw b3J0IOKAlCBWSTMgREdMLVBsYW51bmcnKSk7CiAgICBsaW5lcy5wdXNoKF9jc3ZGZWxkKF9tZXRh WmVpbGUoZGF0ZW4pKSk7CiAgICBsaW5lcy5wdXNoKCcnKTsKICAgIGxpbmVzLnB1c2goX2Nzdlpl aWxlKFNQQUxURU4pKTsKICAgIGRhdGVuLnJvd3MuZm9yRWFjaChmdW5jdGlvbihyKXsgbGluZXMu cHVzaChfY3N2WmVpbGUoX2RhdGVuWmVpbGUocikpKTsgfSk7CiAgICBpZiAobWl0SGlud2Vpc2Ug JiYgZGF0ZW4uaGlud2Vpc2UubGVuZ3RoKSB7CiAgICAgICAgbGluZXMucHVzaCgnJyk7IGxpbmVz LnB1c2goJycpOwogICAgICAgIGxpbmVzLnB1c2goX2NzdkZlbGQoJ0hpbndlaXNlIHp1IFRhZ2Vu IG1pdCBCZXNvbmRlcmhlaXRlbiAoRmVpZXJ0YWdlLCBGZXJpZW4sIFNvbmRlcnRlcm1pbmUpJykp OwogICAgICAgIGxpbmVzLnB1c2goX2NzdlplaWxlKEhJTldFSVNfU1BBTFRFTikpOwogICAgICAg IGRhdGVuLmhpbndlaXNlLmZvckVhY2goZnVuY3Rpb24oaCl7IGxpbmVzLnB1c2goX2NzdlplaWxl KF9oaW53ZWlzWmVpbGUoaCkpKTsgfSk7CiAgICB9CiAgICB2YXIgY3N2ID0gU3RyaW5nLmZyb21D aGFyQ29kZSgweEZFRkYpICsgbGluZXMuam9pbignXHJcbicpOyAgIC8vIEJPTSAtPiBFeGNlbC1E RSBlcmtlbm50IFVURi04CiAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtjc3ZdLCB7IHR5cGU6ICd0 ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycgfSk7CiAgICB2YXIgdXJsID0gVVJMLmNyZWF0ZU9iamVj dFVSTChibG9iKTsKICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAg YS5ocmVmID0gdXJsOyBhLmRvd25sb2FkID0gX2RhdGVpQmFzaXMoZGF0ZW4pICsgJy5jc3YnOwog ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsgYS5jbGljaygpOyBkb2N1bWVudC5ib2R5 LnJlbW92ZUNoaWxkKGEpOwogICAgc2V0VGltZW91dChmdW5jdGlvbigpeyBVUkwucmV2b2tlT2Jq ZWN0VVJMKHVybCk7IH0sIDE1MDApOwp9CgovLyA9PT09PSBVSSA9PT09PQoKZXhwb3J0IGZ1bmN0 aW9uIGV4cG9ydFJlbmRlcm4oKSB7CiAgICB2YXIgY29udCA9IGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdleHBvcnQtaW5oYWx0Jyk7CiAgICBpZiAoIWNvbnQpIHJldHVybjsKICAgIGlmICghX2Rh cmYoKSkgewogICAgICAgIGNvbnQuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9ImFkbWluLWVtcHR5 Ij48ZGl2IGNsYXNzPSJhZG1pbi1lbXB0eS10ZXh0Ij5OdXIgU3VwZXJVc2VyIHVuZCBCZXJlY2h0 aWd0ZSBtaXQgQWRtaW5pc3RyYXRpb25zLVp1Z3JpZmYgZMO8cmZlbiBleHBvcnRpZXJlbi48L2Rp dj48L2Rpdj4nOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnQuaW5uZXJIVE1MID0gX2Zv cm1IdG1sKCk7CiAgICBfdmVyZHJhaHRlbihjb250KTsKICAgIF96ZWl0U2ljaHRiYXJrZWl0KCk7 CiAgICBfd2VyU2ljaHRiYXJrZWl0KCk7CiAgICBfdm9yc2NoYXVBa3R1YWxpc2llcmVuKCk7Cn0K CmZ1bmN0aW9uIF9ncnBDaGlwcygpIHsKICAgIHJldHVybiAoWi5hZG1pbi5ncnVwcGVuIHx8IFtd KS5tYXAoZnVuY3Rpb24oZyl7CiAgICAgICAgcmV0dXJuICc8bGFiZWwgY2xhc3M9ImJsZC1jaGlw Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtZXhwPSJncnAiIHZhbHVlPSInICsgZXNjYXBl QXR0cihnLm5hbWUpICsgJyI+PHNwYW4+JyArIGVzY2FwZUhUTUwoZy5iZXplaWNobnVuZyB8fCBn Lm5hbWUpICsgJzwvc3Bhbj48L2xhYmVsPic7CiAgICB9KS5qb2luKCcnKTsKfQpmdW5jdGlvbiBf cGVyc29uQ2hpcHMoKSB7CiAgICB2YXIgYnlHcnAgPSB7fTsKICAgIChaLnBlcnNvbmVuIHx8IFtd KS5mb3JFYWNoKGZ1bmN0aW9uKHApeyB2YXIgZyA9IHAuZ3J1cHBlIHx8ICfigJQnOyAoYnlHcnBb Z10gfHwgKGJ5R3JwW2ddID0gW10pKS5wdXNoKHApOyB9KTsKICAgIHZhciBvcmRlciA9IChaLmFk bWluLmdydXBwZW4gfHwgW10pLm1hcChmdW5jdGlvbihnKXsgcmV0dXJuIGcubmFtZTsgfSk7CiAg ICB2YXIgbmFtZW4gPSBvcmRlci5maWx0ZXIoZnVuY3Rpb24obil7IHJldHVybiBieUdycFtuXTsg fSkuY29uY2F0KE9iamVjdC5rZXlzKGJ5R3JwKS5maWx0ZXIoZnVuY3Rpb24obil7IHJldHVybiBv cmRlci5pbmRleE9mKG4pIDwgMDsgfSkpOwogICAgcmV0dXJuIG5hbWVuLm1hcChmdW5jdGlvbihn bil7CiAgICAgICAgdmFyIGxldXRlID0gYnlHcnBbZ25dLnNsaWNlKCkuc29ydChmdW5jdGlvbihh LCBiKXsgcmV0dXJuIChhLm5hbWUgfHwgJycpLmxvY2FsZUNvbXBhcmUoYi5uYW1lIHx8ICcnLCAn ZGUnKTsgfSk7CiAgICAgICAgdmFyIGNoaXBzID0gbGV1dGUubWFwKGZ1bmN0aW9uKHApewogICAg ICAgICAgICByZXR1cm4gJzxsYWJlbCBjbGFzcz0iYmxkLWNoaXAiPjxpbnB1dCB0eXBlPSJjaGVj a2JveCIgZGF0YS1leHA9InBlcnNvbiIgdmFsdWU9IicgKyBlc2NhcGVBdHRyKFN0cmluZyhwLmlk KSkgKyAnIj48c3Bhbj4nICsgZXNjYXBlSFRNTChfcGVyc29uTmFtZShwKSkgKyAnPC9zcGFuPjwv bGFiZWw+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9 ImJsZC1wZXJzLWdycCI+PGRpdiBjbGFzcz0iYmxkLXBlcnMtZ3JwLWtvcGYiPjxzcGFuPicgKyBl c2NhcGVIVE1MKF9ncnVwcGVMYWJlbChnbikpICsgJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJi bGQtY2hpcHMiPicgKyBjaGlwcyArICc8L2Rpdj48L2Rpdj4nOwogICAgfSkuam9pbignJyk7Cn0K CmZ1bmN0aW9uIF9mb3JtSHRtbCgpIHsKICAgIHZhciBqID0gKFouYWRtaW4gJiYgWi5hZG1pbi5q YWhyKSB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICByZXR1cm4gJycgKwogICAgJzxk aXYgY2xhc3M9ImV4cC1mb3JtIj4nICsKICAgICc8ZGl2IGNsYXNzPSJibGQtZmVsZCI+PHNwYW4g Y2xhc3M9ImJsZC1mZWxkLXRpdGVsIj5VbWZhbmcgKFplaXRyYXVtKTwvc3Bhbj4nICsKICAgICAg ICAnPHNlbGVjdCBpZD0iZXhwLXplaXRtb2R1cyIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwogICAg ICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iamFociI+R2FuemVzIFBsYW51bmdzamFociAoJyArIGog KyAnKTwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0ia3ciPkthbGVuZGVy d29jaGVuICh2b27igJNiaXMpPC9vcHRpb24+JyArCiAgICAgICAgICAgICc8b3B0aW9uIHZhbHVl PSJkYXR1bSI+RGF0dW0gKHZvbuKAk2Jpcyk8L29wdGlvbj4nICsKICAgICAgICAnPC9zZWxlY3Q+ PC9kaXY+JyArCiAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZlbGQtMiIgZGF0YS16ZWl0 PSJrdyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0iYmxk LW1pbmkiPlZvbiBLVzxpbnB1dCBpZD0iZXhwLWt3LXZvbiIgY2xhc3M9ImZvcm0taW5wdXQiIHR5 cGU9IndlZWsiPjwvbGFiZWw+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0iYmxkLW1pbmkiPkJp cyBLVzxpbnB1dCBpZD0iZXhwLWt3LWJpcyIgY2xhc3M9ImZvcm0taW5wdXQiIHR5cGU9IndlZWsi PjwvbGFiZWw+PC9kaXY+JyArCiAgICAnPGRpdiBjbGFzcz0iYmxkLWZlbGQgYmxkLWZlbGQtMiIg ZGF0YS16ZWl0PSJkYXR1bSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+JyArCiAgICAgICAgJzxsYWJl bCBjbGFzcz0iYmxkLW1pbmkiPlZvbjxpbnB1dCBpZD0iZXhwLWRhdHVtLXZvbiIgY2xhc3M9ImZv cm0taW5wdXQiIHR5cGU9ImRhdGUiPjwvbGFiZWw+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0i YmxkLW1pbmkiPkJpczxpbnB1dCBpZD0iZXhwLWRhdHVtLWJpcyIgY2xhc3M9ImZvcm0taW5wdXQi IHR5cGU9ImRhdGUiPjwvbGFiZWw+PC9kaXY+JyArCgogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxk Ij48c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwiPlBlcnNvbmVua3JlaXM8L3NwYW4+JyArCiAg ICAgICAgJzxzZWxlY3QgaWQ9ImV4cC13ZXJtb2R1cyIgY2xhc3M9ImZvcm0taW5wdXQiPicgKwog ICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iYWxsZSI+QWxsZSBQZXJzb25lbjwvb3B0aW9uPicg KwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0iZ3J1cHBlIj5CZXN0aW1tdGUgRGllbnN0Z3J1 cHBlbjwvb3B0aW9uPicgKwogICAgICAgICAgICAnPG9wdGlvbiB2YWx1ZT0icGVyc29uIj5FaW56 ZWxuZSBQZXJzb25lbiAoaW5kaXZpZHVlbGxlciBFeHBvcnQpPC9vcHRpb24+JyArCiAgICAgICAg Jzwvc2VsZWN0PjwvZGl2PicgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIiBkYXRhLXdlcj0i Z3J1cHBlIiBzdHlsZT0iZGlzcGxheTpub25lIj48c3BhbiBjbGFzcz0iYmxkLWZlbGQtdGl0ZWwi PkRpZW5zdGdydXBwZW4gd8OkaGxlbjwvc3Bhbj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxk LWNoaXBzIj4nICsgX2dycENoaXBzKCkgKyAnPC9kaXY+PC9kaXY+JyArCiAgICAnPGRldGFpbHMg Y2xhc3M9ImJsZC1zZWt0aW9uIiBkYXRhLXdlcj0icGVyc29uIiBzdHlsZT0iZGlzcGxheTpub25l Ij48c3VtbWFyeT5QZXJzb25lbiB3w6RobGVuICgnICsgKFoucGVyc29uZW4gfHwgW10pLmxlbmd0 aCArICcpPC9zdW1tYXJ5PicgKwogICAgICAgICc8cCBjbGFzcz0iYmxkLXBlcnMtaGlud2VpcyI+ TmljaHRzIGdld8OkaGx0ID0gYWxsZS4gTWVocmVyZSBQZXJzb25lbiBmw7xyIGVpbmVuIFNhbW1l bC1FaW56ZWxleHBvcnQgbWFya2llcmVuLjwvcD4nICsKICAgICAgICBfcGVyc29uQ2hpcHMoKSAr ICc8L2RldGFpbHM+JyArCgogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIj48c3BhbiBjbGFzcz0i YmxkLWZlbGQtdGl0ZWwiPkZvcm1hdDwvc3Bhbj4nICsKICAgICAgICAnPGRpdiBjbGFzcz0iYmxk LXRvZ2dsZXMiPicgKwogICAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJibGQtdG9nZ2xlIj48aW5w dXQgdHlwZT0icmFkaW8iIG5hbWU9ImV4cC1mb3JtYXQiIGlkPSJleHAtZm10LXhsc3giIHZhbHVl PSJ4bHN4IiBjaGVja2VkPiBYTFNYIChmb3JtYXRpZXJ0KTwvbGFiZWw+JyArCiAgICAgICAgICAg ICc8bGFiZWwgY2xhc3M9ImJsZC10b2dnbGUiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZXhw LWZvcm1hdCIgdmFsdWU9ImNzdiI+IENTViAoRXhjZWwvU2VtaWtvbG9uKTwvbGFiZWw+JyArCiAg ICAgICAgJzwvZGl2PjwvZGl2PicgKwogICAgJzxkaXYgY2xhc3M9ImJsZC1mZWxkIj48ZGl2IGNs YXNzPSJibGQtdG9nZ2xlcyI+JyArCiAgICAgICAgJzxsYWJlbCBjbGFzcz0iYmxkLXRvZ2dsZSI+ PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iZXhwLW1pdC1oaW53ZWlzZSIgY2hlY2tlZD4gSW5m b2JveCDigJ5IaW53ZWlzZSB6dSBUYWdlbiBtaXQgQmVzb25kZXJoZWl0ZW4iIHVudGVyaGFsYiBh bmjDpG5nZW48L2xhYmVsPicgKwogICAgICAgICc8L2Rpdj48L2Rpdj4nICsKCiAgICAnPGRpdiBj bGFzcz0iYmxkLWFrdGlvbmVuIiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4Ij4nICsKICAgICAgICAn PGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1wcmltYWVyIiB0eXBlPSJidXR0b24iIGlkPSJleHAtc3Rh cnRlbiI+4qSTIEV4cG9ydGllcmVuPC9idXR0b24+JyArCiAgICAgICAgJzxzcGFuIGlkPSJleHAt dm9yc2NoYXUiIGNsYXNzPSJibGQtcGVycy1oaW53ZWlzIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTJw eCI+PC9zcGFuPicgKwogICAgJzwvZGl2PicgKwogICAgJzwvZGl2Pic7Cn0KCmZ1bmN0aW9uIF96 ZWl0U2ljaHRiYXJrZWl0KCkgewogICAgdmFyIG1vZHVzID0gX3ZhbCgnZXhwLXplaXRtb2R1cycp IHx8ICdqYWhyJzsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyNleHBvcnQtaW5oYWx0 IFtkYXRhLXplaXRdJykuZm9yRWFjaChmdW5jdGlvbihlbCl7CiAgICAgICAgZWwuc3R5bGUuZGlz cGxheSA9IChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtemVpdCcpID09PSBtb2R1cykgPyAnJyA6ICdu b25lJzsKICAgIH0pOwp9CmZ1bmN0aW9uIF93ZXJTaWNodGJhcmtlaXQoKSB7CiAgICB2YXIgbW9k dXMgPSBfdmFsKCdleHAtd2VybW9kdXMnKSB8fCAnYWxsZSc7CiAgICBkb2N1bWVudC5xdWVyeVNl bGVjdG9yQWxsKCcjZXhwb3J0LWluaGFsdCBbZGF0YS13ZXJdJykuZm9yRWFjaChmdW5jdGlvbihl bCl7CiAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9IChlbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd2Vy JykgPT09IG1vZHVzKSA/ICcnIDogJ25vbmUnOwogICAgfSk7Cn0KZnVuY3Rpb24gX3ZvcnNjaGF1 QWt0dWFsaXNpZXJlbigpIHsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl eHAtdm9yc2NoYXUnKTsKICAgIGlmICghZWwpIHJldHVybjsKICAgIHZhciBkYXRlbiA9IF9zYW1t ZWxuKCk7CiAgICBpZiAoZGF0ZW4uZmVobGVyKSB7IGVsLnRleHRDb250ZW50ID0gZGF0ZW4uZmVo bGVyOyByZXR1cm47IH0KICAgIGVsLnRleHRDb250ZW50ID0gJ1ZvcnNjaGF1OiAnICsgZGF0ZW4u cm93cy5sZW5ndGggKyAnIEVpbnRyw6RnZScKICAgICAgICArICcg4oCiICcgKyBkYXRlbi5wZXJz b25lbi5sZW5ndGggKyAnIFBlcnNvbmVuJwogICAgICAgICsgJyDigKIgJyArIGRhdGVuLmhpbndl aXNlLmxlbmd0aCArICcgSGlud2Vpcy1FaW50csOkZ2UgKEZlaWVydGFnL0Zlcmllbi9Tb25kZXJ0 ZXJtaW4pJzsKfQoKZnVuY3Rpb24gX3ZlcmRyYWh0ZW4oY29udCkgewogICAgY29udC5hZGRFdmVu dExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHQgPSBlLnRhcmdl dDsKICAgICAgICBpZiAodC5pZCA9PT0gJ2V4cC16ZWl0bW9kdXMnKSBfemVpdFNpY2h0YmFya2Vp dCgpOwogICAgICAgIGlmICh0LmlkID09PSAnZXhwLXdlcm1vZHVzJykgX3dlclNpY2h0YmFya2Vp dCgpOwogICAgICAgIF92b3JzY2hhdUFrdHVhbGlzaWVyZW4oKTsKICAgIH0pOwogICAgY29udC5h ZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgaWQgPSBl LnRhcmdldCAmJiBlLnRhcmdldC5pZDsKICAgICAgICBpZiAoaWQgPT09ICdleHAta3ctdm9uJyB8 fCBpZCA9PT0gJ2V4cC1rdy1iaXMnIHx8IGlkID09PSAnZXhwLWRhdHVtLXZvbicgfHwgaWQgPT09 ICdleHAtZGF0dW0tYmlzJykgX3ZvcnNjaGF1QWt0dWFsaXNpZXJlbigpOwogICAgfSk7CiAgICB2 YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cC1zdGFydGVuJyk7CiAgICBpZiAo YnRuKSBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBfZXhwb3J0U3RhcnRlbik7Cn0KCmZ1 bmN0aW9uIF9leHBvcnRTdGFydGVuKCkgewogICAgdmFyIGRhdGVuID0gX3NhbW1lbG4oKTsKICAg IGlmIChkYXRlbi5mZWhsZXIpIHsgdG9hc3QoZGF0ZW4uZmVobGVyLCAnd2FybnVuZycpOyByZXR1 cm47IH0KICAgIGlmICghZGF0ZW4ucm93cy5sZW5ndGgpIHsgdG9hc3QoJ0tlaW5lIEVpbnRyw6Rn ZSBpbSBnZXfDpGhsdGVuIFVtZmFuZyDigJQgbmljaHRzIHp1IGV4cG9ydGllcmVuLicsICd3YXJu dW5nJyk7IHJldHVybjsgfQogICAgdmFyIG1pdEhpbndlaXNlID0gX2NoaygnZXhwLW1pdC1oaW53 ZWlzZScpOwogICAgdmFyIGZtdCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZXhwb3J0LWlu aGFsdCBpbnB1dFtuYW1lPSJleHAtZm9ybWF0Il06Y2hlY2tlZCcpIHx8IHt9KS52YWx1ZSB8fCAn eGxzeCc7CiAgICB0cnkgewogICAgICAgIGlmIChmbXQgPT09ICdjc3YnKSBfZXhwb3J0Q3N2KGRh dGVuLCBtaXRIaW53ZWlzZSk7CiAgICAgICAgZWxzZSBfZXhwb3J0WGxzeChkYXRlbiwgbWl0SGlu d2Vpc2UpOwogICAgICAgIHRvYXN0KCdFeHBvcnQgZXJzdGVsbHQ6ICcgKyBkYXRlbi5yb3dzLmxl bmd0aCArICcgRWludHLDpGdlJyArIChtaXRIaW53ZWlzZSA/ICcgKyAnICsgZGF0ZW4uaGlud2Vp c2UubGVuZ3RoICsgJyBIaW53ZWlzLUVpbnRyw6RnZScgOiAnJyksICdlcmZvbGcnKTsKICAgIH0g Y2F0Y2ggKGUpIHsKICAgICAgICB0cnkgeyBjb25zb2xlLmVycm9yKCdbZXhwb3J0XScsIGUpOyB9 IGNhdGNoIChfKSB7fQogICAgICAgIHRvYXN0KCdFeHBvcnQgZmVobGdlc2NobGFnZW46ICcgKyAo ZS5tZXNzYWdlIHx8IGUpLCAnZmVobGVyJyk7CiAgICB9Cn0K ### FILE: js/feiertage_de.js | 3209 Ly8gPT09IGZlaWVydGFnZV9kZS5qcyA9PT0KLy8gRGV0ZXJtaW5pc3Rpc2NoZXIgS2F0YWxvZyBk ZXIgZ2VzZXR6bGljaGVuIEZlaWVydGFnZSBpbiBEZXV0c2NobGFuZCAoYnVuZGVzLQovLyB3ZWl0 KSB1bmQgTm9yZHJoZWluLVdlc3RmYWxlbiDigJQgcHJvIEphaHIgYmVyZWNobmV0LCBvaG5lIEFi aGFlbmdpZ2tlaXQgdm9uCi8vIGFkbWluLmpzb24uIEJld2VnbGljaCBGZXN0ZSAoS2FyZnJlaXRh ZywgT3N0ZXJtb250YWcsIENocmlzdGkgSGltbWVsZmFocnQsCi8vIFBmaW5nc3Rtb250YWcsIEZy b25sZWljaG5hbSkgbGVpdGVuIHNpY2ggdm9tIE9zdGVyc29ubnRhZyBhYiAoR2F1c3MvQW5vbnlt ZQovLyBHcmVnb3JpYW5pc2NoZSBPc3RlcmZvcm1lbCkuIEdlbnV0enQgdm9tIFN0YXRpc3Rpay1C dWlsZGVyLy1FbmdpbmUsIHVtCi8vIERpZW5zdGUgbmFjaCDigJ5idW5kZXN3ZWl0IiB2cy4g4oCe TlJXLXNwZXppZmlzY2giIGF1Znp1c2NobHVlc3NlbG4uCi8vCi8vIFF1ZWxsZSBkZXIgS2xhc3Np ZmlrYXRpb246IGdlc2V0emxpY2hlIEZlaWVydGFnZSBOUlcgKDExIFN0dWVjaykg4oCUIGRhdm9u IHNpbmQKLy8gRnJvbmxlaWNobmFtIHVuZCBBbGxlcmhlaWxpZ2VuIE5SVy1zcGV6aWZpc2NoLCBk aWUgdWVicmlnZW4gOSBidW5kZXN3ZWl0LgovLyBIZWlsaWdhYmVuZC9TaWx2ZXN0ZXIgc2luZCBL RUlORSBnZXNldHpsaWNoZW4gRmVpZXJ0YWdlIHVuZCBkYWhlciBoaWVyCi8vIGJld3Vzc3Qgbmlj aHQgZW50aGFsdGVuIChhZG1pbi5qc29uIGZ1ZWhydCBzaWUgc2VwYXJhdCAtPiBUeXAg4oCec29u c3RpZ2UiKS4KCmltcG9ydCB7IGRhdHVtU3RyIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwoKLy8g T3N0ZXJzb25udGFnIChHcmVnb3JpYW5pc2NoKSBwZXIgQW5vbnltZS1HcmVnb3JpYW5pc2NoZS1P c3RlcmZvcm1lbC4KZnVuY3Rpb24gX29zdGVybihqYWhyKSB7CiAgICB2YXIgYSA9IGphaHIgJSAx OTsKICAgIHZhciBiID0gTWF0aC5mbG9vcihqYWhyIC8gMTAwKTsKICAgIHZhciBjID0gamFociAl IDEwMDsKICAgIHZhciBkID0gTWF0aC5mbG9vcihiIC8gNCk7CiAgICB2YXIgZSA9IGIgJSA0Owog ICAgdmFyIGYgPSBNYXRoLmZsb29yKChiICsgOCkgLyAyNSk7CiAgICB2YXIgZyA9IE1hdGguZmxv b3IoKGIgLSBmICsgMSkgLyAzKTsKICAgIHZhciBoID0gKDE5ICogYSArIGIgLSBkIC0gZyArIDE1 KSAlIDMwOwogICAgdmFyIGkgPSBNYXRoLmZsb29yKGMgLyA0KTsKICAgIHZhciBrID0gYyAlIDQ7 CiAgICB2YXIgbCA9ICgzMiArIDIgKiBlICsgMiAqIGkgLSBoIC0gaykgJSA3OwogICAgdmFyIG0g PSBNYXRoLmZsb29yKChhICsgMTEgKiBoICsgMjIgKiBsKSAvIDQ1MSk7CiAgICB2YXIgbW9uYXQg PSBNYXRoLmZsb29yKChoICsgbCAtIDcgKiBtICsgMTE0KSAvIDMxKTsgICAvLyAzID0gTWFlcnos IDQgPSBBcHJpbAogICAgdmFyIHRhZyA9ICgoaCArIGwgLSA3ICogbSArIDExNCkgJSAzMSkgKyAx OwogICAgcmV0dXJuIG5ldyBEYXRlKGphaHIsIG1vbmF0IC0gMSwgdGFnKTsKfQoKZnVuY3Rpb24g X3BsdXMoZCwgbikgewogICAgdmFyIHIgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSk7CiAgICByLnNl dERhdGUoci5nZXREYXRlKCkgKyBuKTsKICAgIHJldHVybiByOwp9Cgp2YXIgX2NhY2hlID0ge307 CgovLyBMaWVmZXJ0IGVpbmUgTWFwIHsgJ1lZWVktTU0tREQnOiB7IG5hbWUsIHR5cCB9IH0gZnVl ciBlaW4gSmFoci4KLy8gdHlwIOKIiCAnYnVuZGVzd2VpdCcgfCAnbnJ3Jy4KZXhwb3J0IGZ1bmN0 aW9uIGZlaWVydGFnZUZ1ZXJKYWhyKGphaHIpIHsKICAgIGphaHIgPSBwYXJzZUludChqYWhyLCAx MCk7CiAgICBpZiAoIWphaHIpIHJldHVybiB7fTsKICAgIGlmIChfY2FjaGVbamFocl0pIHJldHVy biBfY2FjaGVbamFocl07CiAgICB2YXIgbyA9IF9vc3Rlcm4oamFocik7CiAgICB2YXIgbWFwID0g e307CiAgICBmdW5jdGlvbiBhZGQoZGF0dW0sIG5hbWUsIHR5cCkgeyBtYXBbZGF0dW1dID0geyBu YW1lOiBuYW1lLCB0eXA6IHR5cCB9OyB9CgogICAgYWRkKGphaHIgKyAnLTAxLTAxJywgICAgICAg ICAgJ05ldWphaHInLCAgICAgICAgICAgICAgICAgICAgJ2J1bmRlc3dlaXQnKTsKICAgIGFkZChk YXR1bVN0cihfcGx1cyhvLCAtMikpLCAgICdLYXJmcmVpdGFnJywgICAgICAgICAgICAgICAgICdi dW5kZXN3ZWl0Jyk7CiAgICBhZGQoZGF0dW1TdHIoX3BsdXMobywgIDEpKSwgICAnT3N0ZXJtb250 YWcnLCAgICAgICAgICAgICAgICAnYnVuZGVzd2VpdCcpOwogICAgYWRkKGphaHIgKyAnLTA1LTAx JywgICAgICAgICAgJ1RhZyBkZXIgQXJiZWl0JywgICAgICAgICAgICAgJ2J1bmRlc3dlaXQnKTsK ICAgIGFkZChkYXR1bVN0cihfcGx1cyhvLCAzOSkpLCAgICdDaHJpc3RpIEhpbW1lbGZhaHJ0Jywg ICAgICAgICdidW5kZXN3ZWl0Jyk7CiAgICBhZGQoZGF0dW1TdHIoX3BsdXMobywgNTApKSwgICAn UGZpbmdzdG1vbnRhZycsICAgICAgICAgICAgICAnYnVuZGVzd2VpdCcpOwogICAgYWRkKGRhdHVt U3RyKF9wbHVzKG8sIDYwKSksICAgJ0Zyb25sZWljaG5hbScsICAgICAgICAgICAgICAgJ25ydycp OyAgICAgICAgICAvLyBOUlctc3BlemlmaXNjaAogICAgYWRkKGphaHIgKyAnLTEwLTAzJywgICAg ICAgICAgJ1RhZyBkZXIgRGV1dHNjaGVuIEVpbmhlaXQnLCAgJ2J1bmRlc3dlaXQnKTsKICAgIGFk ZChqYWhyICsgJy0xMS0wMScsICAgICAgICAgICdBbGxlcmhlaWxpZ2VuJywgICAgICAgICAgICAg ICducncnKTsgICAgICAgICAgLy8gTlJXLXNwZXppZmlzY2gKICAgIGFkZChqYWhyICsgJy0xMi0y NScsICAgICAgICAgICcxLiBXZWlobmFjaHRzdGFnJywgICAgICAgICAgICdidW5kZXN3ZWl0Jyk7 CiAgICBhZGQoamFociArICctMTItMjYnLCAgICAgICAgICAnMi4gV2VpaG5hY2h0c3RhZycsICAg ICAgICAgICAnYnVuZGVzd2VpdCcpOwoKICAgIF9jYWNoZVtqYWhyXSA9IG1hcDsKICAgIHJldHVy biBtYXA7Cn0KCi8vIEluZm8genUgZWluZW0ga29ua3JldGVuIERhdHVtICgnWVlZWS1NTS1ERCcp IG9kZXIgbnVsbC4KZXhwb3J0IGZ1bmN0aW9uIGZlaWVydGFnSW5mbyhkYXR1bSkgewogICAgaWYg KCFkYXR1bSB8fCBkYXR1bS5sZW5ndGggPCA0KSByZXR1cm4gbnVsbDsKICAgIHZhciBtYXAgPSBm ZWllcnRhZ2VGdWVySmFocihkYXR1bS5zdWJzdHJpbmcoMCwgNCkpOwogICAgcmV0dXJuIG1hcFtk YXR1bV0gfHwgbnVsbDsKfQo= ### FILE: js/grid_editor.js | 40851 Ly8gPT09IGdyaWQvZWRpdG9yLmpzID09PQovLyBTdGFuZDogMjAyNi0wNS0xNAovLyBaZWxsLUVk aXRvciAoU2NoaWNodC1BdXN3YWhsICsgS29tbWVudGFyKSBpbmtsLiBSdWhlemVpdC1QcnVlZnVu ZywKLy8gRnVlaHJ1bmdzLUxvZ2lrIChER0wvV0RGL0ZCUC1aYWVobHVuZykgdW5kIFZlcmFudHdv cnR1bmdzLVVlYmVyZ2FuZy0KLy8gTWFpbC1EaWFsb2cgaW0gMTQtVGFnZS1WZXJiaW5kbGljaGtl aXRzZmVuc3Rlci4KLy8KLy8gSG9va3M6IGZlYXR1cmVJc3RBa3RpdiAoUGhhc2UgOCksIHNvbmRl ckZ1ZXJEYXR1bS9zb25kZXJXYXJuTW9kYWxaZWlnZW4KLy8gKFNvbmRlcnRlcm1pbmUgaW4gUGhh c2UgOCksIGlzdENvZGVBa3RpdiAoUGhhc2UgOCksIGVtYWlsVm9ybGFnZW5Ib2xlbi8KLy8gZW1h aWxWb3JsYWdlQmVmdWVsbGVuL21haWxUcmlnZ2VyRmV1ZXJuIChQaGFzZSA3KSwgYmVzZXR6dW5n c2tvbnRyb2xsZVJlbmRlcm4KLy8gKFBoYXNlIDYpLgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29y ZV9zdGF0ZS5qcyc7CmltcG9ydCB7CiAgICBlc2NhcGVIVE1MLCBlc2NhcGVBdHRyLCBkYXR1bVN0 ciwgZGF0dW1Gb3JtYXRERSwKICAgIGZ1bmt0aW9uc1JhbmcsIF9wZXJzb25BbnplaWdlLCBhYnNl bmRlck5hbWVFcm1pdHRlbG4sCiAgICBhbnplaWdlTmFtZUZ1ZXJLZW5udW5nLCBhdXNsb2VzZXJF bWFpbEVybWl0dGVsbgp9IGZyb20gJy4vY29yZV91dGlsLmpzJzsKaW1wb3J0IHsgZGFyZlplbGxl RWRpdGllcmVuLCBkYXR1bUluVmVyYmluZGxpY2hrZWl0IH0gZnJvbSAnLi9jb3JlX3Blcm1pc3Np b25zLmpzJzsKaW1wb3J0IHsgYXBpUG9zdCB9IGZyb20gJy4vY29yZV9hcGkuanMnOwppbXBvcnQg eyB0b2FzdCwgYmVzdGFldGlnZW4sIG1vZGFsWmVpZ2VuLCBtb2RhbFNjaGxpZXNzZW4gfSBmcm9t ICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7IHN0YWVya2VCZXJlY2huZW4sIHplbGxlVmlzdWVs bEFrdHVhbGlzaWVyZW4gfSBmcm9tICcuL2dyaWRfcmVuZGVyLmpzJzsKaW1wb3J0IHsKICAgIGtv bW1lbnRhckxhZGVuLCBrb21tZW50YXJFaW50cmFnLCBrb21tZW50YXJNZXRhVGV4dCwgaW50ZXJh Y3Rpb25Ib29rcywKICAgIGZ1ZWxsSGFuZGxlWmVpZ2VuLCBmdWVsbEhhbmRsZVZlcnN0ZWNrZW4s CiAgICBrb21tZW50YXJMaXN0ZSwga29tbWVudGFyTG9lc2NoZW4sIGRhcmZLb21tZW50YXJMb2Vz Y2hlbgp9IGZyb20gJy4vZ3JpZF9pbnRlcmFjdGlvbi5qcyc7CmltcG9ydCB7CiAgICBsb2NrWmVs bGVBY3F1aXJlLCBsb2NrWmVsbGVGb3JjZSwgbG9ja1plbGxlUmVsZWFzZSwKICAgIGxvY2tIZWFy dGJlYXRTdGFydGVuLCBsb2NrSGVhcnRiZWF0U3RvcHBlbgp9IGZyb20gJy4vc3luYy5qcyc7Cgov LyA9PT09PSBIb29rcyA9PT09PQoKZXhwb3J0IHZhciBlZGl0b3JIb29rcyA9IHsKICAgIGZlYXR1 cmVJc3RBa3RpdjogbnVsbCwKICAgIHNvbmRlckZ1ZXJEYXR1bTogbnVsbCwKICAgIHNvbmRlcldh cm5Nb2RhbFplaWdlbjogbnVsbCwKICAgIGlzdENvZGVBa3RpdjogbnVsbCwKICAgIGVtYWlsVm9y bGFnZW5Ib2xlbjogbnVsbCwKICAgIGVtYWlsVm9ybGFnZUJlZnVlbGxlbjogbnVsbCwKICAgIG1h aWxUcmlnZ2VyRmV1ZXJuOiBudWxsLAogICAgYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm46IG51 bGwsCiAgICBiZXNldHp1bmdza29udHJvbGxlVGFnVXBkYXRlbjogbnVsbAp9OwoKLy8gPT09PT0g S29uc3RhbnRlbiA9PT09PQoKLy8gU29sbC1CZXNldHp1bmcgcHJvIFNjaGljaHQ6IDIgRnVlaHJ1 bmdza3JhZWZ0ZSAoMS4gKyAyLiBWZXJhbnR3b3J0dW5nKS4KLy8gQWxsZSBkYXJ1ZWJlciBoaW5h dXMgZWluZ2V0cmFnZW5lbiBER0xzIHNpbmQgUmVzZXJ2ZS4KZXhwb3J0IHZhciBGVUVIUlVOR19T T0xMID0gMjsKCi8vIFNjaGljaHR6ZWl0ZW4tTW9kZWxsIChTdHVuZGVuIGFiIFRhZ2Vzc3RhcnQp LiAzMCA9IG5hZWNoc3RlciBUYWcgMDY6MDAuCnZhciBzY2hpY2h0WmVpdGVuID0gewogICAgJ0Yn OiB7IHN0YXJ0OiA2LCBlbmRlOiAxNCB9LAogICAgJ1MnOiB7IHN0YXJ0OiAxNCwgZW5kZTogMjIg fSwKICAgICdOJzogeyBzdGFydDogMjIsIGVuZGU6IDMwIH0KfTsKCi8vID09PT09IEZ1ZWhydW5n cy1Mb2dpayA9PT09PQoKLy8gTGllZmVydCAnRicgLyAnUycgLyAnTicsIHdlbm4gd2VydCBlaW5l IEZ1ZWhydW5nc3NjaGljaHQgaXN0LCBzb25zdCBudWxsLgovLyBFcyB6YWVobHQgYXVzc2NobGll c3NsaWNoIGRpZSBSb2xsZSBER0wg4oCUIFdERi9GQlAgc2luZCBrZWluZSBGdWVocnVuZy4KZXhw b3J0IGZ1bmN0aW9uIGZ1ZWhydW5nc1NjaGljaHQod2VydCkgewogICAgaWYgKCF3ZXJ0IHx8IHdl cnQubGVuZ3RoIDwgNSkgcmV0dXJuIG51bGw7CiAgICB2YXIgcHJlZml4ID0gd2VydC5jaGFyQXQo MCk7CiAgICBpZiAocHJlZml4ICE9PSAnRicgJiYgcHJlZml4ICE9PSAnUycgJiYgcHJlZml4ICE9 PSAnTicpIHJldHVybiBudWxsOwogICAgaWYgKHdlcnQuc3Vic3RyaW5nKDIsIDUpID09PSAnREdM JykgcmV0dXJuIHByZWZpeDsKICAgIHJldHVybiBudWxsOwp9CgpleHBvcnQgZnVuY3Rpb24gZnVl aHJ1bmdzWmFlaGxlbihkYXR1bSwgc2NoaWNodCkgewogICAgLy8gRGVja3VuZ3NnbGVpY2ggbWl0 IHN0YWVya2VCZXJlY2huZW4oKSDigJQgZ2xlaWNoZSBaZWxsZSwgZ2xlaWNoZSBaYWhsLgogICAg dmFyIHN0ID0gc3RhZXJrZUJlcmVjaG5lbihkYXR1bSk7CiAgICBpZiAoc2NoaWNodCA9PT0gJ0Yn KSByZXR1cm4gc3QuZjsKICAgIGlmIChzY2hpY2h0ID09PSAnUycpIHJldHVybiBzdC5zOwogICAg aWYgKHNjaGljaHQgPT09ICdOJykgcmV0dXJuIHN0Lm47CiAgICByZXR1cm4gMDsKfQoKLy8gTGll ZmVydCBhbGxlIGFrdGl2ZW4gREdMcyBmdWVyIERhdHVtICsgU2NoaWNodCAoRi9TL04pLCBzb3J0 aWVydCBwcmltYWVyCi8vIG5hY2ggU3RhbW0tRnVua3Rpb25zLVJhbmcgKERHTCA+IFdERiA+IDMu IFBlcnNvbiA+IFdhY2hsZWl0dW5nL0dydXBwZW4tCi8vIGZ1ZWhydW5nKSwgc2VrdW5kYWVyIG5h Y2ggcm9oZXIgcG9zaXRpb24uIFswXSA9IDEuIFZlcmFudHdvcnR1bmcsCi8vIFsxXSA9IDIuIFZl cmFudHdvcnR1bmcsIFsyXSsgPSB3ZWl0ZXJlIChSZXNlcnZlKS4KZXhwb3J0IGZ1bmN0aW9uIGRn bHNJblNjaGljaHQoZGF0dW0sIHNjaGljaHRMZXR0ZXIpIHsKICAgIHZhciBlID0gKFoucGxhbnVu Zy5laW50cmFlZ2UgfHwge30pW2RhdHVtXSB8fCB7fTsKICAgIHZhciBrYW5kaWRhdGVuID0gW107 CiAgICAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHApIHsKICAg ICAgICBpZiAoIXAuYWt0aXYpIHJldHVybjsKICAgICAgICB2YXIgdyA9IGVbU3RyaW5nKHAuaWQp XSB8fCAnJzsKICAgICAgICBpZiAoZnVlaHJ1bmdzU2NoaWNodCh3KSA9PT0gc2NoaWNodExldHRl cikga2FuZGlkYXRlbi5wdXNoKHApOwogICAgfSk7CiAgICBrYW5kaWRhdGVuLnNvcnQoZnVuY3Rp b24oYSwgYikgewogICAgICAgIHZhciByQSA9IGZ1bmt0aW9uc1JhbmcoYS5mdW5rdGlvbik7CiAg ICAgICAgdmFyIHJCID0gZnVua3Rpb25zUmFuZyhiLmZ1bmt0aW9uKTsKICAgICAgICBpZiAockEg IT09IHJCKSByZXR1cm4gckEgLSByQjsKICAgICAgICByZXR1cm4gKGEucG9zaXRpb24gfHwgOTk5 KSAtIChiLnBvc2l0aW9uIHx8IDk5OSk7CiAgICB9KTsKICAgIHJldHVybiBrYW5kaWRhdGVuOwp9 CgpleHBvcnQgZnVuY3Rpb24gYWt0aXZlRnVlaHJ1bmcoZGF0dW0sIHNjaGljaHRMZXR0ZXIpIHsK ICAgIHJldHVybiBkZ2xzSW5TY2hpY2h0KGRhdHVtLCBzY2hpY2h0TGV0dGVyKS5zbGljZSgwLCBG VUVIUlVOR19TT0xMKTsKfQoKLy8gVkkzLURHTC1RdWFsaWZpemllcnVuZzogZGFzIEZsYWcgZWxE Z2xRdWFsaWZpemllcnQgaXN0IHNlaXQgMjAyNi0wNS0yMwovLyBmdWVyIGFsbGUgUGVyc29uZW4g cGZsZWdiYXIgKGF1Y2ggQXQtREdML1dERi9OZXV6dWdhZW5nZSBtdWVzc2VuCi8vIGV4cGxpeml0 IHF1YWxpZml6aWVydCB3ZXJkZW4sIHdlbm4gZGFzIGdld3VlbnNjaHQgaXN0KS4gRmFsbGJhY2sg ZnVlcgovLyBCZXN0YW5kOiBGdW5rdGlvbiBER0wvREdMaW4gZ2lsdCB3ZWl0ZXJoaW4gaW1wbGl6 aXQgYWxzIHF1YWxpZml6aWVydCwKLy8gZGFtaXQga2VpbiBNaWdyYXRpb25zLVBmbGljaHRkdXJj aGxhdWYgbm9ldGlnIGlzdC4KZXhwb3J0IGZ1bmN0aW9uIGlzdERnbFF1YWxpZml6aWVydChwKSB7 CiAgICBpZiAoIXApIHJldHVybiBmYWxzZTsKICAgIGlmIChwLmVsRGdsUXVhbGlmaXppZXJ0ID09 PSB0cnVlKSByZXR1cm4gdHJ1ZTsKICAgIHZhciBmID0gU3RyaW5nKHAuZnVua3Rpb24gfHwgJycp OwogICAgaWYgKGYgPT09ICdER0wnIHx8IGYgPT09ICdER0xpbicpIHJldHVybiB0cnVlOwogICAg cmV0dXJuIGZhbHNlOwp9CgovLyBMaWVmZXJ0IHRydWUsIHdlbm4gZGllIFBlcnNvbiBHZXNhbXR2 ZXJhbnR3b3J0bGljaCBpc3QuIEdlc2FtdHZlcmFudHdvcnRsaWNoZQovLyBrb21tZW4gYXVzIGRl ciBEaWVuc3RzdGVsbGVubGVpdHVuZyB1bmQgbmVobWVuIGRpZSBER0wtRnVua3Rpb24gbmljaHQg bWVocgovLyBzZWxic3Qgd2FociDigJQgZGFoZXIgYXVzIFNjaGljaHQtQmVzZXR6dW5ncy1LYW5k aWRhdGVuIGF1c2dlc2NobG9zc2VuLgpleHBvcnQgZnVuY3Rpb24gaXN0R2VzYW10dmVyYW50d29y dGxpY2gocCkgewogICAgaWYgKCFwIHx8ICFwLm53S2VubnVuZykgcmV0dXJuIGZhbHNlOwogICAg dmFyIHBrID0gU3RyaW5nKHAubndLZW5udW5nKS50b0xvd2VyQ2FzZSgpOwogICAgdmFyIGZhcyA9 IChaLmFkbWluICYmIFouYWRtaW4uZmFjaGF1ZnNpY2h0KSB8fCBbXTsKICAgIGZvciAodmFyIGkg PSAwOyBpIDwgZmFzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGZhID0gZmFzW2ldOwogICAg ICAgIGlmIChmYSAmJiBmYS5nZXNhbXR2ZXJhbnR3b3J0bGljaCAmJiBTdHJpbmcoZmEubndLZW5u dW5nIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSBwaykgcmV0dXJuIHRydWU7CiAgICB9CiAgICBy ZXR1cm4gZmFsc2U7Cn0KCi8vIEUtTWFpbCBkZXMgR2VzYW10dmVyYW50d29ydGxpY2hlbiBhdXMg YWRtaW4uZmFjaGF1ZnNpY2h0LiBGYWxsYmFjayB1ZWJlcgovLyBkaWUgTlctS2VubnVuZyBhdWYg ZGVuIHBhc3NlbmRlbiBQZXJzb25lbi1FaW50cmFnLgpleHBvcnQgZnVuY3Rpb24gZ2VzYW10dmVy YW50d29ydGxpY2hFbWFpbCgpIHsKICAgIHZhciBmYSA9IChaLmFkbWluLmZhY2hhdWZzaWNodCB8 fCBbXSkuZmluZChmdW5jdGlvbihmKSB7IHJldHVybiBmLmdlc2FtdHZlcmFudHdvcnRsaWNoOyB9 KTsKICAgIGlmICghZmEpIHJldHVybiAnJzsKICAgIGlmIChmYS5lbWFpbCkgcmV0dXJuIGZhLmVt YWlsOwogICAgaWYgKGZhLm53S2VubnVuZykgewogICAgICAgIHZhciBwID0gKFoucGxhbnVuZy5w ZXJzb25lbiB8fCBbXSkuZmluZChmdW5jdGlvbih4KSB7CiAgICAgICAgICAgIHJldHVybiAoeC5u d0tlbm51bmcgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IGZhLm53S2VubnVuZy50b0xvd2VyQ2Fz ZSgpOwogICAgICAgIH0pOwogICAgICAgIGlmIChwICYmIHAuZW1haWwpIHJldHVybiBwLmVtYWls OwogICAgfQogICAgcmV0dXJuICcnOwp9CgovLyA9PT09PSBWZXJhbnR3b3J0dW5ncy1XZWNoc2Vs IChFSU5FIFNhbW1lbC1NYWlsKSA9PT09PQovLwovLyBFaW5lIFBsYW51bmdzYWVuZGVydW5nIGlu IGRlciAxNC1UYWdlLVZlcmJpbmRsaWNoa2VpdCBrYW5uIG1laHJlcmUgUGVyc29uZW4KLy8gYmV0 cmVmZmVuOiB3ZXIgaW4gZGllIFRvcC0yLUZ1ZWhydW5nIGF1ZnJ1ZWNrdCBVTkQgd2VyIGRhZHVy Y2ggaGVyYXVzZmFlbGx0LgovLyBGcnVlaGVyIG9lZmZuZXRlIGRhcyBwcm8gUGVyc29uIGVpbmVu IGVpZ2VuZW4gRGlhbG9nICsgZWluZSBlaWdlbmUgTWFpbCDigJQKLy8genUgdmllbGUgU2Nocml0 dGUsIGRlciBVc2VyIHN0aWVnIGF1cy4gSmV0enQ6IEVJTkUgQmVzdGFldGlndW5nLCBFSU5FIE1h aWwKLy8gYW4gQUxMRSBCZXRyb2ZmZW5lbiAoQW4tRmVsZCksIG1pdCBlaW5lbSBnZW5lcmllcnRl biBXZWNoc2VsLUJsb2NrIGltIFRleHQuCi8vCi8vIHdlY2hzZWwgPSB7Ci8vICAgZGF0dW0sICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFlZWVktTU0tREQKLy8gICBwcmltYWVyU2NoaWNo dCwgICAgICAgICAgICAgICAgICAgLy8gRi9TL04g4oCUIGZ1ZXIgQmV0cmVmZgovLyAgIGVpbnRy YWVnZTogWyB7YXJ0OidhdWYnfCdmcmVpJywgc2NoaWNodExldHRlciwgcGVyc29uLCBzdHVmZSwg Z2VnZW59IF0sCi8vICAgZW1wZmFlbmdlcjogWyB7ZW1haWwsIHBlcnNvbn0gXSwgIC8vIEFuLUZl bGQgKGRlZHVwZSk6IEF1ZnJ1ZWNrZXIgYXVzc2VyCi8vICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vICAgU2VsYnN0cGxhbmVyICsgVmVyZHJhZW5ndGUsIG1pdCBNYWlsCi8v ICAgY2NQYXJ0bmVyRW1haWxzOiBbIC4uLiBdICAgICAgICAgIC8vIHp3ZWl0ZSBGdWVocnVuZ3Nr cmFmdCBqZSBTY2hpY2h0Ci8vIH0KCi8vIEJhdXQgZGllIEtsYXJ0ZXh0LVplaWxlbiBkZXMgV2Vj aHNlbC1CbG9ja3MgKGZ1ZXIgRGlhbG9nICsgTWFpbC1Cb2R5KS4KZnVuY3Rpb24gd2VjaHNlbFRl eHRaZWlsZW4od2VjaHNlbCkgewogICAgdmFyIHNjaGljaHROYW1lID0geyBGOiAnRnLDvGgnLCBT OiAnU3DDpHQnLCBOOiAnTmFjaHQnIH07CiAgICByZXR1cm4gd2VjaHNlbC5laW50cmFlZ2UubWFw KGZ1bmN0aW9uKGUpIHsKICAgICAgICB2YXIgc24gPSAoc2NoaWNodE5hbWVbZS5zY2hpY2h0TGV0 dGVyXSB8fCBlLnNjaGljaHRMZXR0ZXIpICsgJ3NjaGljaHQnOwogICAgICAgIHZhciBzdHVmZVRl eHQgPSBlLnN0dWZlID09PSAxID8gJzEuIFZlcmFudHdvcnR1bmcnIDogJzIuIFZlcmFudHdvcnR1 bmcnOwogICAgICAgIGlmIChlLmFydCA9PT0gJ2F1ZicpIHsKICAgICAgICAgICAgcmV0dXJuICfi gKIgJyArIF9wZXJzb25BbnplaWdlKGUucGVyc29uKSArICcgcsO8Y2t0IGluIGRpZSAnICsgc3R1 ZmVUZXh0ICsgJyBkZXIgJyArIHNuICsgJyBuYWNoJyArCiAgICAgICAgICAgICAgICAgICAoZS5n ZWdlbiA/ICcgKGbDvHIgJyArIF9wZXJzb25BbnplaWdlKGUuZ2VnZW4pICsgJyknIDogJycpICsg Jy4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJ+KAoiAnICsgX3BlcnNvbkFuemVpZ2UoZS5w ZXJzb24pICsgJyBpc3QgYXVzIGRlciAnICsgc3R1ZmVUZXh0ICsgJyBkZXIgJyArIHNuICsKICAg ICAgICAgICAgICAgJyBoZXJhdXMgdW5kIHBsYW50IGFiIGpldHp0IGZsZXhpYmxlcicgKwogICAg ICAgICAgICAgICAoZS5nZWdlbiA/ICcgKMO8YmVybm9tbWVuIGhhdCAnICsgX3BlcnNvbkFuemVp Z2UoZS5nZWdlbikgKyAnKScgOiAnJykgKyAnLic7CiAgICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9u IHZlcmFudHdvcnR1bmdzV2VjaHNlbERpYWxvZ1plaWdlbih3ZWNoc2VsLCBvbkZlcnRpZykgewog ICAgdmFyIGZlcnRpZyA9IGZ1bmN0aW9uKCkgeyBpZiAodHlwZW9mIG9uRmVydGlnID09PSAnZnVu Y3Rpb24nKSBvbkZlcnRpZygpOyB9OwogICAgaWYgKCF3ZWNoc2VsIHx8ICF3ZWNoc2VsLmVtcGZh ZW5nZXIgfHwgIXdlY2hzZWwuZW1wZmFlbmdlci5sZW5ndGgpIHsgZmVydGlnKCk7IHJldHVybjsg fQoKICAgIHZhciB6ZWlsZW4gPSB3ZWNoc2VsVGV4dFplaWxlbih3ZWNoc2VsKTsKICAgIHZhciBu YW1lbiA9IHdlY2hzZWwuZW1wZmFlbmdlci5tYXAoZnVuY3Rpb24oZSkgeyByZXR1cm4gX3BlcnNv bkFuemVpZ2UoZS5wZXJzb24pOyB9KTsKICAgIHZhciBpbmZvID0gJ0R1cmNoIGRlaW5lIFBsYW51 bmdzw6RuZGVydW5nIGFtICcgKyBkYXR1bUZvcm1hdERFKHdlY2hzZWwuZGF0dW0pICsKICAgICAg ICAnIMOkbmRlcnQgc2ljaCBkaWUgRsO8aHJ1bmdzLVZlcmFudHdvcnR1bmc6XG5cbicgKyB6ZWls ZW4uam9pbignXG4nKSArICdcblxuJyArCiAgICAgICAgJ0VzIHdpcmQgRUlORSBFLU1haWwgYW4g YWxsZSBCZXRyb2ZmZW5lbiBnZcO2ZmZuZXQ6XG4nICsgbmFtZW4uam9pbignLCAnKSArICcuJzsK ICAgIHZhciBrb2VycGVyID0gJzxkaXYgc3R5bGU9IndoaXRlLXNwYWNlOnByZS1saW5lO2xpbmUt aGVpZ2h0OjEuNTtwYWRkaW5nOjhweCAwIj4nICsgZXNjYXBlSFRNTChpbmZvKSArICc8L2Rpdj4n OwogICAgdmFyIGZ1c3MgPSAnPGJ1dHRvbiBjbGFzcz0iYnRuIiBpZD0idnctbmVpbiIgdHlwZT0i YnV0dG9uIj5OaWNodCBiZW5hY2hyaWNodGlnZW48L2J1dHRvbj4nICsKICAgICAgICAgICAgICAg JzxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFlciIgaWQ9InZ3LWphIiB0eXBlPSJidXR0b24i PkUtTWFpbCDDtmZmbmVuPC9idXR0b24+JzsKICAgIG1vZGFsWmVpZ2VuKCdWZXJhbnR3b3J0dW5n c3dlY2hzZWwg4oCUICcgKyB3ZWNoc2VsLmVtcGZhZW5nZXIubGVuZ3RoICsgJyBQZXJzb24oZW4p IGluZm9ybWllcmVuJywKICAgICAgICBrb2VycGVyLCBmdXNzLCBudWxsLCBudWxsLCB7IHJlaW5l ckRpYWxvZzogdHJ1ZSB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2dy1uZWluJyku YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsgbW9kYWxTY2hsaWVzc2VuKCk7 IGZlcnRpZygpOyB9KTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2dy1qYScpLmFkZEV2 ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmVyYW50d29ydHVuZ3NX ZWNoc2VsRW1haWxPZWZmbmVuKHdlY2hzZWwpOwogICAgICAgIG1vZGFsU2NobGllc3NlbigpOyBm ZXJ0aWcoKTsKICAgIH0pOwp9CgpleHBvcnQgZnVuY3Rpb24gdmVyYW50d29ydHVuZ3NXZWNoc2Vs RW1haWxPZWZmbmVuKHdlY2hzZWwpIHsKICAgIGlmICghZWRpdG9ySG9va3MuZW1haWxWb3JsYWdl bkhvbGVuIHx8ICFlZGl0b3JIb29rcy5lbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4pIHJldHVybjsKICAg IGlmICghd2VjaHNlbCB8fCAhd2VjaHNlbC5lbXBmYWVuZ2VyIHx8ICF3ZWNoc2VsLmVtcGZhZW5n ZXIubGVuZ3RoKSByZXR1cm47CiAgICB2YXIgdm9ybGFnZSA9IGVkaXRvckhvb2tzLmVtYWlsVm9y bGFnZW5Ib2xlbigpLnZlcmFudHdvcnR1bmdzVWViZXJnYW5nOwogICAgaWYgKCF2b3JsYWdlKSBy ZXR1cm47CgogICAgLy8gQW4tRmVsZDogYWxsZSBCZXRyb2ZmZW5lbiBtaXQgRS1NYWlsIChkZWR1 cGUsIGxvd2VyY2FzZS1WZXJnbGVpY2gpCiAgICB2YXIgdG9MaXN0ZSA9IFtdOwogICAgdmFyIHNl ZW4gPSB7fTsKICAgIHdlY2hzZWwuZW1wZmFlbmdlci5mb3JFYWNoKGZ1bmN0aW9uKGUpIHsKICAg ICAgICB2YXIgbWFpbCA9IChlLmVtYWlsIHx8ICcnKS50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlm IChtYWlsICYmICFzZWVuW21haWxdKSB7IHNlZW5bbWFpbF0gPSB0cnVlOyB0b0xpc3RlLnB1c2go ZS5lbWFpbCk7IH0KICAgIH0pOwogICAgaWYgKCF0b0xpc3RlLmxlbmd0aCkgewogICAgICAgIHRv YXN0KCdGw7xyIGRpZSBiZXRyb2ZmZW5lbiBQZXJzb25lbiBpc3Qga2VpbmUgRS1NYWlsLUFkcmVz c2UgaGludGVybGVndCDigJQgYml0dGUgenVlcnN0IHBmbGVnZW4uJywgJ3dhcm51bmcnKTsKICAg ICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHNjaGljaHROYW1lID0geyBGOiAnRnLDvGgnLCBT OiAnU3DDpHQnLCBOOiAnTmFjaHQnIH1bd2VjaHNlbC5wcmltYWVyU2NoaWNodF0gfHwgd2VjaHNl bC5wcmltYWVyU2NoaWNodDsKICAgIHZhciBjdHggPSB7CiAgICAgICAgZGF0dW06ICAgICAgICAg ZGF0dW1Gb3JtYXRERSh3ZWNoc2VsLmRhdHVtKSwKICAgICAgICB3b2NoZW50YWc6ICAgICBbJ1Nv bm50YWcnLCdNb250YWcnLCdEaWVuc3RhZycsJ01pdHR3b2NoJywnRG9ubmVyc3RhZycsJ0ZyZWl0 YWcnLCdTYW1zdGFnJ11bbmV3IERhdGUod2VjaHNlbC5kYXR1bSArICdUMDA6MDA6MDAnKS5nZXRE YXkoKV0sCiAgICAgICAgc2NoaWNodDogICAgICAgc2NoaWNodE5hbWUsCiAgICAgICAgc2NoaWNo dF9rdXJ6OiAgd2VjaHNlbC5wcmltYWVyU2NoaWNodCwKICAgICAgICB3ZWNoc2VsX2Jsb2NrOiB3 ZWNoc2VsVGV4dFplaWxlbih3ZWNoc2VsKS5qb2luKCdcbicpLAogICAgICAgIGFic2VuZGVyX25h bWU6IGFic2VuZGVyTmFtZUVybWl0dGVsbigpCiAgICB9OwogICAgdmFyIGJldHJlZmYgPSBlZGl0 b3JIb29rcy5lbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS5iZXRyZWZmLCBjdHgpOwogICAg dmFyIHRleHQgICAgPSBlZGl0b3JIb29rcy5lbWFpbFZvcmxhZ2VCZWZ1ZWxsZW4odm9ybGFnZS50 ZXh0LCBjdHgpOwoKICAgIC8vIENDOiB6d2VpdGUgRnVlaHJ1bmdza3JhZnQgKG9wdGlvbmFsKSAr IEF1c2xvZXNlciAob3B0aW9uYWwpLiBOaWUgZG9wcGVsdAogICAgLy8genUgamVtYW5kZW0sIGRl ciBzY2hvbiBpbSBBbi1GZWxkIHN0ZWh0LgogICAgdmFyIGNjID0gW107IHZhciBjY1NlZW4gPSB7 fTsKICAgIGZ1bmN0aW9uIGNjQWRkKG1haWwpIHsKICAgICAgICBpZiAoIW1haWwpIHJldHVybjsK ICAgICAgICB2YXIgbSA9IG1haWwudG9Mb3dlckNhc2UoKTsKICAgICAgICBpZiAoc2VlblttXSB8 fCBjY1NlZW5bbV0pIHJldHVybjsKICAgICAgICBjY1NlZW5bbV0gPSB0cnVlOyBjYy5wdXNoKG1h aWwpOwogICAgfQogICAgaWYgKHZvcmxhZ2UuY2NBbmRlcmVyRGdsKSAod2VjaHNlbC5jY1BhcnRu ZXJFbWFpbHMgfHwgW10pLmZvckVhY2goY2NBZGQpOwogICAgaWYgKHZvcmxhZ2UuY2NBdXNsb2Vz ZXIpIGNjQWRkKGF1c2xvZXNlckVtYWlsRXJtaXR0ZWxuKCkpOwoKICAgIHZhciB1cmwgPSAnbWFp bHRvOicgKyBlbmNvZGVVUklDb21wb25lbnQodG9MaXN0ZS5qb2luKCcsJykpICsKICAgICAgICAg ICAgICAnP3N1YmplY3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudChiZXRyZWZmKSArCiAgICAgICAg ICAgICAgJyZib2R5PScgICAgKyBlbmNvZGVVUklDb21wb25lbnQodGV4dCk7CiAgICBpZiAoY2Mu bGVuZ3RoKSB1cmwgKz0gJyZjYz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGNjLmpvaW4oJywnKSk7 CiAgICBpZiAodm9ybGFnZS5iY2NHZXNhbXR2ZXJhbnR3b3J0bGljaCkgewogICAgICAgIHZhciBn dkVtYWlsID0gZ2VzYW10dmVyYW50d29ydGxpY2hFbWFpbCgpOwogICAgICAgIGlmIChndkVtYWls KSB1cmwgKz0gJyZiY2M9JyArIGVuY29kZVVSSUNvbXBvbmVudChndkVtYWlsKTsKICAgIH0KICAg IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsOwp9CgovLyA9PT09PSBVbnRlcmJlc2V0enVuZ3Mt UHJ1ZWZ1bmcgKHZvciBkZW0gU3BlaWNoZXJuKSA9PT09PQoKLy8gUHLDvGZ0IG9iIGRpZSBnZXBs YW50ZSDDhG5kZXJ1bmcgZWluZSBVbnRlcmJlc2V0enVuZyBhdXNsb2VzdC4KLy8gUnVlY2tnYWJl OiAnRicvJ1MnLydOJyB3ZW5uIGphLCBzb25zdCBudWxsLgpleHBvcnQgZnVuY3Rpb24gZnVlaHJ1 bmdzVW50ZXJiZXNldHp1bmdQcnVlZmVuKGRhdHVtLCBhbHRlcldlcnQsIG5ldWVyV2VydCkgewog ICAgaWYgKCFkYXR1bUluVmVyYmluZGxpY2hrZWl0KGRhdHVtKSkgcmV0dXJuIG51bGw7CiAgICB2 YXIgYWx0ZVNjaGljaHQgPSBmdWVocnVuZ3NTY2hpY2h0KGFsdGVyV2VydCk7CiAgICB2YXIgbmV1 ZVNjaGljaHQgPSBmdWVocnVuZ3NTY2hpY2h0KG5ldWVyV2VydCk7CiAgICBpZiAoIWFsdGVTY2hp Y2h0KSByZXR1cm4gbnVsbDsgICAgICAgICAgICAgICAgIC8vIHdhciBuaWUgRnVlaHJ1bmdzc2No aWNodAogICAgaWYgKGFsdGVTY2hpY2h0ID09PSBuZXVlU2NoaWNodCkgcmV0dXJuIG51bGw7ICAv LyBTY2hpY2h0IGJsZWlidCwgbnVyIFJvbGxlIGFuZGVycyAoRi1ER0wgLT4gRi1XREYpCiAgICAv LyBEaWUgYWx0ZVNjaGljaHQgdmVybGllcnQgZHVyY2ggZGllc2UgQWVuZGVydW5nIGVpbmUgRnVl aHJ1bmdza3JhZnQuCiAgICB2YXIgYWt0dWVsbCA9IGZ1ZWhydW5nc1phZWhsZW4oZGF0dW0sIGFs dGVTY2hpY2h0KTsKICAgIGlmIChha3R1ZWxsIC0gMSA8IDIpIHJldHVybiBhbHRlU2NoaWNodDsK ICAgIHJldHVybiBudWxsOwp9CgovLyA9PT09PSBaZWxsLUVkaXRvciA9PT09PQoKLy8gTW9kdWwt cHJpdmF0ZSBFZGl0b3ItU3RhdGUtVmFyLiBadWdyaWZmIGF1cyBpbnRlcmFjdGlvbi5qcyAoZmFs bHMgbm9ldGlnKQovLyB1ZWJlciBlZGl0b3JBa3RpdigpLUdldHRlciAoc2llaGUgdW50ZW4pLgp2 YXIgZWRpdG9yID0geyBha3RpdjogZmFsc2UsIGRhdHVtOiAnJywgcGVyc29uSWQ6ICcnIH07Cgpl eHBvcnQgZnVuY3Rpb24gZWRpdG9yQWt0aXYoKSB7IHJldHVybiBlZGl0b3IuYWt0aXY7IH0KZXhw b3J0IGZ1bmN0aW9uIGVkaXRvckRhdHVtKCkgeyByZXR1cm4gZWRpdG9yLmRhdHVtOyB9CmV4cG9y dCBmdW5jdGlvbiBlZGl0b3JQZXJzb25JZCgpIHsgcmV0dXJuIGVkaXRvci5wZXJzb25JZDsgfQoK Ly8gUmVuZGVydCBkaWUgS29tbWVudGFyLVZlcmxhdWZzbGlzdGUgaW0gRWRpdG9yIChvYmVyaGFs YiBkZXMgRWluZ2FiZWZlbGRzKS4KLy8gUmVpaGVuZm9sZ2U6IG5ldWVzdGUgb2Jlbi4gUHJvIEVp bnRyYWcgZWluZSBUZXh0LVplbGxlICsgTWV0YS1aZWlsZSAoQXV0b3IgKwovLyBaZWl0c3RlbXBl bCk7IGZ1ZXIgQmVyZWNodGlndGUgKFNVL0dlc2FtdHZlcmFudHdvcnRsaWNoKSB6dXNhZXR6bGlj aCBlaW4KLy8gTG9lc2NoLUljb24uIFdpcmQgbmFjaCBFZGl0b3ItT3BlbiwgSGluenVmdWVnZW4g dW5kIExvZXNjaGVuIGF1ZmdlcnVmZW4sCi8vIGRhbWl0IGRpZSBBbnplaWdlIGxpdmUgbWl0d2Fu ZGVydC4KZXhwb3J0IGZ1bmN0aW9uIGVkaXRvcktvbW1lbnRhclZlcmxhdWZSZW5kZXJuKCkgewog ICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvci1rb21tZW50YXItdmVy bGF1ZicpOwogICAgaWYgKCFlbCkgcmV0dXJuOwogICAgaWYgKCFlZGl0b3IuYWt0aXYpIHsgZWwu aW5uZXJIVE1MID0gJyc7IHJldHVybjsgfQogICAgdmFyIGxpc3RlID0ga29tbWVudGFyTGlzdGUo a29tbWVudGFyRWludHJhZyhlZGl0b3IuZGF0dW0sIGVkaXRvci5wZXJzb25JZCkpOwogICAgaWYg KGxpc3RlLmxlbmd0aCA9PT0gMCkgewogICAgICAgIGVsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNz PSJla3YtbGVlciI+Tm9jaCBrZWluZSBLb21tZW50YXJlPC9kaXY+JzsKICAgICAgICByZXR1cm47 CiAgICB9CiAgICB2YXIgZGFyZkxvZXNjaGVuID0gZGFyZktvbW1lbnRhckxvZXNjaGVuKCk7CiAg ICAvLyBOZXVlc3RlIG9iZW4g4oCUIFNlcnZlciBzcGVpY2hlcnQgY2hyb25vbG9naXNjaCAoYWx0 IC0+IG5ldSksIHdpciBkcmVoZW4KICAgIC8vIGZ1ZXIgZGllIEFuemVpZ2UgdW0uIEl0ZXJhdGlv biBydWVja3dhZXJ0cyBvaG5lIHJldmVyc2UoKSwgZGFtaXQgZGFzCiAgICAvLyBPcmlnaW5hbC1B cnJheSBuaWNodCBtdXRpZXJ0IHdpcmQuCiAgICB2YXIgaHRtbCA9ICcnOwogICAgZm9yICh2YXIg aSA9IGxpc3RlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgdmFyIGsgPSBsaXN0 ZVtpXTsKICAgICAgICB2YXIgdGV4dCA9IGVzY2FwZUhUTUwoay50ZXh0IHx8ICcnKS5yZXBsYWNl KC9cbi9nLCAnPGJyPicpOwogICAgICAgIHZhciBkdCA9ICcnOwogICAgICAgIGlmIChrLmdlYWVu ZGVydEFtKSB7CiAgICAgICAgICAgIHZhciBkID0gbmV3IERhdGUoay5nZWFlbmRlcnRBbSk7CiAg ICAgICAgICAgIGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSB7CiAgICAgICAgICAgICAgICB2YXIg cGFkID0gZnVuY3Rpb24obikgeyByZXR1cm4gKG4gPCAxMCA/ICcwJyA6ICcnKSArIG47IH07CiAg ICAgICAgICAgICAgICBkdCA9IHBhZChkLmdldERhdGUoKSkgKyAnLicgKyBwYWQoZC5nZXRNb250 aCgpICsgMSkgKyAnLicgKyBkLmdldEZ1bGxZZWFyKCkgKwogICAgICAgICAgICAgICAgICAgICAn ICcgKyBwYWQoZC5nZXRIb3VycygpKSArICc6JyArIHBhZChkLmdldE1pbnV0ZXMoKSk7CiAgICAg ICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHJvaCA9IGsuZ2VhZW5kZXJ0Vm9uIHx8ICcn OwogICAgICAgIHZhciBuYW1lID0gcm9oID8gYW56ZWlnZU5hbWVGdWVyS2VubnVuZyhyb2gpIDog Jyc7CiAgICAgICAgdmFyIHZlcmZhc3NlciA9IG5hbWUgJiYgbmFtZS50b0xvd2VyQ2FzZSgpICE9 PSByb2gudG9Mb3dlckNhc2UoKS5zcGxpdCgnXFwnKS5wb3AoKSA/IG5hbWUgOiByb2g7CiAgICAg ICAgdmFyIGxvZXNjaEJ0biA9IGRhcmZMb2VzY2hlbiAmJiBrLmlkICYmIGsuaWQuaW5kZXhPZign a19sZWdhY3knKSAhPT0gMAogICAgICAgICAgICA/ICc8YnV0dG9uIGNsYXNzPSJla3YtbG9lc2No ZW4iIHRpdGxlPSJEaWVzZW4gS29tbWVudGFyIGzDtnNjaGVuIiBkYXRhLWlkPSInICsgZXNjYXBl QXR0cihrLmlkKSArICciPuKclTwvYnV0dG9uPicKICAgICAgICAgICAgOiAnJzsKICAgICAgICBo dG1sICs9ICc8ZGl2IGNsYXNzPSJla3YtZWludHJhZyI+JyArCiAgICAgICAgICAgICAgICAgICAg JzxkaXYgY2xhc3M9ImVrdi10ZXh0Ij4nICsgdGV4dCArICc8L2Rpdj4nICsKICAgICAgICAgICAg ICAgICAgICAnPGRpdiBjbGFzcz0iZWt2LW1ldGEiPicgKwogICAgICAgICAgICAgICAgICAgICAg ICAodmVyZmFzc2VyID8gJzxzcGFuIGNsYXNzPSJla3YtbWV0YS1hdXRvciI+JyArIGVzY2FwZUhU TUwodmVyZmFzc2VyKSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAg ICh2ZXJmYXNzZXIgJiYgZHQgPyAnIMK3ICcgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAg ICAoZHQgPyAnPHNwYW4gY2xhc3M9ImVrdi1tZXRhLXplaXQiPicgKyBlc2NhcGVIVE1MKGR0KSAr ICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAgICAgICAgICAgICAgIGxvZXNjaEJ0biArCiAg ICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAg ICB9CiAgICBlbC5pbm5lckhUTUwgPSBodG1sOwp9CgoKLy8gUnVoZXplaXRlbi1IZWxwZXIKCmV4 cG9ydCBmdW5jdGlvbiBuYWNoYmFyRGF0dW0oZFN0ciwgb2Zmc2V0KSB7CiAgICB2YXIgZCA9IG5l dyBEYXRlKGRTdHIgKyAnVDEyOjAwOjAwJyk7CiAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgKyBv ZmZzZXQpOwogICAgcmV0dXJuIGRhdHVtU3RyKGQpOwp9CgpleHBvcnQgZnVuY3Rpb24gc2NoaWNo dFR5cCh3ZXJ0KSB7CiAgICBpZiAoIXdlcnQpIHJldHVybiBudWxsOwogICAgdmFyIGMgPSB3ZXJ0 LmNoYXJBdCgwKTsKICAgIGlmIChjID09PSAnRicgfHwgYyA9PT0gJ1MnIHx8IGMgPT09ICdOJykg ewogICAgICAgIGlmICh3ZXJ0LmluZGV4T2YoJ0RHTCcpICE9PSAtMSB8fCB3ZXJ0LmluZGV4T2Yo J1dERicpICE9PSAtMSB8fCB3ZXJ0LmluZGV4T2YoJ0ZCUCcpICE9PSAtMSkgcmV0dXJuIGM7CiAg ICB9CiAgICByZXR1cm4gbnVsbDsKfQoKLy8gSGlsZnNmb3JtYXR0ZXI6IFN0dW5kZW4tWmFobCBp biBISDpNTS4gJSAyNCBmdWVyIE5hY2h0c2NoaWNodGVuLAovLyBkZXJlbiBlbmRlID4gMjQgKHou Qi4gMDYgKyAyNCA9IDMwIGZ1ZXIgImVuZGV0IGFtIEZvbGdldGFnIDA2OjAwIikuCmZ1bmN0aW9u IF9oaG1tKGgpIHsKICAgIHZhciBuID0gKChoICUgMjQpICsgMjQpICUgMjQ7CiAgICB2YXIgaGgg PSBNYXRoLmZsb29yKG4pOwogICAgdmFyIG1tID0gTWF0aC5yb3VuZCgobiAtIGhoKSAqIDYwKTsK ICAgIHJldHVybiAoaGggPCAxMCA/ICcwJyA6ICcnKSArIGhoICsgJzonICsgKG1tIDwgMTAgPyAn MCcgOiAnJykgKyBtbTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHJ1aGV6ZWl0UHJ1ZWZlbihkYXR1bSwg cGlkLCBuZXVlcldlcnQpIHsKICAgIHZhciBuZXVlclR5cCA9IHNjaGljaHRUeXAobmV1ZXJXZXJ0 KTsKICAgIGlmICghbmV1ZXJUeXApIHJldHVybiBudWxsOwogICAgdmFyIG5ldWVaZWl0ID0gc2No aWNodFplaXRlbltuZXVlclR5cF07CiAgICB2YXIgd2FybnVuZ2VuID0gW107CgogICAgLy8gVm9y dGFnIHByw7xmZW46IEVuZGUgVm9ydGFnIOKGkiBTdGFydCBuZXVlciBTY2hpY2h0CiAgICAvLyBV WC1BdWRpdCBTcHJpbnQgMi43ICgyMDI2LTA1LTI5KTogV2FybnVuZyBlbnRoYWVsdCBqZXR6dCBk aWUga29ua3JldGVuCiAgICAvLyBVaHJ6ZWl0ZW4gKEVuZHplaXQgVm9ydGFnICsgU3RhcnR6ZWl0 IGFrdHVlbGxlIFNjaGljaHQpLCBkYW1pdCBkZXIgVXNlcgogICAgLy8gZGlyZWt0IHZlcnN0ZWh0 IFdPIGRhcyBEZWZpeml0IGxpZWd0IOKAlCBuaWNodCBudXIgZGllIFN0dW5kZW4tWmFobC4KICAg IHZhciB2b3J0YWcgPSBuYWNoYmFyRGF0dW0oZGF0dW0sIC0xKTsKICAgIHZhciB2b3JXZXJ0ID0g KChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVt2b3J0YWddIHx8IHt9KVtwaWRdIHx8ICcnOwog ICAgdmFyIHZvclR5cCA9IHNjaGljaHRUeXAodm9yV2VydCk7CiAgICBpZiAodm9yVHlwKSB7CiAg ICAgICAgdmFyIHZvclplaXQgPSBzY2hpY2h0WmVpdGVuW3ZvclR5cF07CiAgICAgICAgdmFyIHJ1 aGUgPSAobmV1ZVplaXQuc3RhcnQgKyAyNCkgLSB2b3JaZWl0LmVuZGU7CiAgICAgICAgaWYgKHJ1 aGUgPCAxMSkgewogICAgICAgICAgICB3YXJudW5nZW4ucHVzaCgnTnVyICcgKyBydWhlICsgJ2gg UnVoZXplaXQ6ICcgKyB2b3JXZXJ0ICsgJyBlbmRldCAnICsgX2hobW0odm9yWmVpdC5lbmRlKSAr CiAgICAgICAgICAgICAgICAgICAgICAgICAgICcg4oaSIG5ldWUgU2NoaWNodCBzdGFydGV0ICcg KyBfaGhtbShuZXVlWmVpdC5zdGFydCkgKyAnIChtaW4uIDExaCknKTsKICAgICAgICB9CiAgICB9 CgogICAgLy8gRm9sZ2V0YWcgcHLDvGZlbjogRW5kZSBuZXVlIFNjaGljaHQg4oaSIFN0YXJ0IEZv bGdldGFnCiAgICB2YXIgZm9sZ2V0YWcgPSBuYWNoYmFyRGF0dW0oZGF0dW0sIDEpOwogICAgdmFy IGZvbGdlV2VydCA9ICgoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZm9sZ2V0YWddIHx8IHt9 KVtwaWRdIHx8ICcnOwogICAgdmFyIGZvbGdlVHlwID0gc2NoaWNodFR5cChmb2xnZVdlcnQpOwog ICAgaWYgKGZvbGdlVHlwKSB7CiAgICAgICAgdmFyIGZvbGdlWmVpdCA9IHNjaGljaHRaZWl0ZW5b Zm9sZ2VUeXBdOwogICAgICAgIHZhciBydWhlRm9sZ2UgPSAoZm9sZ2VaZWl0LnN0YXJ0ICsgMjQp IC0gbmV1ZVplaXQuZW5kZTsKICAgICAgICBpZiAocnVoZUZvbGdlIDwgMTEpIHsKICAgICAgICAg ICAgd2FybnVuZ2VuLnB1c2goJ051ciAnICsgcnVoZUZvbGdlICsgJ2ggUnVoZXplaXQ6IG5ldWUg U2NoaWNodCBlbmRldCAnICsgX2hobW0obmV1ZVplaXQuZW5kZSkgKwogICAgICAgICAgICAgICAg ICAgICAgICAgICAnIOKGkiAnICsgZm9sZ2VXZXJ0ICsgJyBhbSBGb2xnZXRhZyBzdGFydGV0ICcg KyBfaGhtbShmb2xnZVplaXQuc3RhcnQpICsgJyAobWluLiAxMWgpJyk7CiAgICAgICAgfQogICAg fQoKICAgIHJldHVybiB3YXJudW5nZW4ubGVuZ3RoID4gMCA/IHdhcm51bmdlbiA6IG51bGw7Cn0K CmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JPZWZmbmVuKHplbGxlLCBzb25kZXJPaywgZnJlbWRPaykg ewogICAgdmFyIGRhdHVtID0gemVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLWRhdHVtJyk7CiAgICB2 YXIgcGlkID0gemVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBlcnNvbicpOwogICAgaWYgKCFkYXR1 bSB8fCAhcGlkKSByZXR1cm47CgogICAgLy8gU2Nob24gb2ZmZW4gZnVlciBnZW5hdSBkaWVzZSBa ZWxsZT8gTmljaHRzIHR1biAoRG9wcGVsLUFjcXVpcmUgdmVybWVpZGVuKS4KICAgIGlmIChlZGl0 b3IuYWt0aXYgJiYgZWRpdG9yLmRhdHVtID09PSBkYXR1bSAmJiBTdHJpbmcoZWRpdG9yLnBlcnNv bklkKSA9PT0gU3RyaW5nKHBpZCkpIHJldHVybjsKICAgIC8vIEVkaXRvciBmdWVyIGVpbmUgQU5E RVJFIFplbGxlIG9mZmVuPyBFcnN0IHNhdWJlciBzY2hsaWVzc2VuICsgYWx0ZW4gTG9jawogICAg Ly8gZnJlaWdlYmVuLCBCRVZPUiB3aXIgZGllIG5ldWUgWmVsbGUgc3BlcnJlbi4gU29uc3Qgd2ly ZCBaLnplbGxMb2NrLnRva2VuCiAgICAvLyB1ZWJlcnNjaHJpZWJlbiB1bmQgZGVyIGFsdGUgU2Vy dmVyLUxvY2sgYmxlaWJ0IGFscyBHZWlzdGVyLVNwZXJyZSBoYWVuZ2VuCiAgICAvLyAoZGVyIEhh dXB0Z3J1bmQgZnVlciAiU2FiaW5lIHNhaCA1IGdlc3BlcnJ0ZSBaZWxsZW4sIGRpZSBuaWUgZnJl aWdlZ2ViZW4KICAgIC8vIHd1cmRlbiIpLiBOdXIgYmVpIHNvbmRlck9rL2ZyZW1kT2stUmVrdXJz aW9uIGlzdCBkZXIgRWRpdG9yIG9obmVoaW4genUuCiAgICBpZiAoZWRpdG9yLmFrdGl2KSBlZGl0 b3JTY2hsaWVzc2VuKCk7CgogICAgLy8gVW1nZXNldHp0ZSBQZXJzb25lbiBzaW5kIG51ciB6dXIg UmVjaGVyY2hlIGVpbmdlYmxlbmRldCDigJQgbmljaHQgZWRpdGllcmVuCiAgICB2YXIgemVsbGVw ZXJzb24gPSAoWi5wbGFudW5nLnBlcnNvbmVuIHx8IFtdKS5maW5kKGZ1bmN0aW9uKHApIHsgcmV0 dXJuIFN0cmluZyhwLmlkKSA9PT0gU3RyaW5nKHBpZCk7IH0pOwogICAgaWYgKHplbGxlcGVyc29u ICYmICF6ZWxsZXBlcnNvbi5ha3RpdikgewogICAgICAgIHRvYXN0KCdVbWdlc2V0enRlIFBlcnNv biDigJQgbnVyIHp1ciBSZWNoZXJjaGUsIG5pY2h0IGVkaXRpZXJiYXInLCAnd2FybnVuZycpOwog ICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBSZWNodGUtUHJ1ZWZ1bmc6IGVpZ2VuZSBaZWls ZSArIGtvbmZpZ3VyaWVydGUgUmVjaHRlLCBTdXBlclVzZXIgaW1tZXIuCiAgICAvLyBHZXNwZXJy dGUgWmVsbGVuIHNpbmQgaW0gR3JpZCBzY2hvbiB2aXN1ZWxsIG1hcmtpZXJ0IChncmlkLXplbGxl LWdlc3BlcnJ0KS4KICAgIGlmICghZGFyZlplbGxlRWRpdGllcmVuKHBpZCkpIHsKICAgICAgICB0 b2FzdCgnS2VpbmUgQmVyZWNodGlndW5nLCBkaWVzZSBaZWxsZSB6dSBiZWFyYmVpdGVuJywgJ3dh cm51bmcnKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gU29uZGVydGVybWluLVdhcm5o aW53ZWlzIHZvciBQbGFudW5nCiAgICBpZiAoIXNvbmRlck9rICYmIGVkaXRvckhvb2tzLnNvbmRl ckZ1ZXJEYXR1bSAmJiBlZGl0b3JIb29rcy5zb25kZXJXYXJuTW9kYWxaZWlnZW4pIHsKICAgICAg ICB2YXIgc29uZGVyID0gZWRpdG9ySG9va3Muc29uZGVyRnVlckRhdHVtKGRhdHVtKTsKICAgICAg ICBpZiAoc29uZGVyICYmIChzb25kZXIud2Fybk1vZHVzIHx8ICdpbW1lcicpICE9PSAnYXVzJykg ewogICAgICAgICAgICB2YXIgd20gPSBzb25kZXIud2Fybk1vZHVzIHx8ICdpbW1lcic7CiAgICAg ICAgICAgIC8vIEVpbm1hbGlnOiBwcm8gVGVybWluLUlEIChaZWl0cmF1bS1UZXJtaW4gbmljaHQg amVkZW4gVGFnIGVybmV1dCB3YXJuZW4pCiAgICAgICAgICAgIHZhciBrZXkgPSAnc29uZGVyX3Nl ZW5fJyArIChzb25kZXIuaWQgfHwgc29uZGVyLmRhdHVtKSArICdfJyArIChaLmJlbnV0emVyIHx8 ICcnKTsKICAgICAgICAgICAgdmFyIGVpbm1hbEdlc2VoZW4gPSB3bSA9PT0gJ2Vpbm1hbGlnJyAm JiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpOwogICAgICAgICAgICBpZiAoIWVpbm1hbEdlc2Vo ZW4pIHsKICAgICAgICAgICAgICAgIGVkaXRvckhvb2tzLnNvbmRlcldhcm5Nb2RhbFplaWdlbihz b25kZXIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh3bSA9PT0gJ2Vpbm1h bGlnJykgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCAnMScpOwogICAgICAgICAgICAgICAgICAg IGVkaXRvck9lZmZuZW4oemVsbGUsIHRydWUsIGZyZW1kT2spOwogICAgICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cgog ICAgLy8gV2FybnVuZyB3ZW5uIG1hbiBkaWUgU2NoaWNodCBlaW5lciBhbmRlcmVuIFBlcnNvbiDD pG5kZXJ0CiAgICBpZiAoIWZyZW1kT2sgJiYgZWRpdG9ySG9va3MuZmVhdHVyZUlzdEFrdGl2ICYm IGVkaXRvckhvb2tzLmZlYXR1cmVJc3RBa3RpdignZnJlbWRBZW5kZXJ1bmdXYXJudW5nJykgJiYg Wi5tZWluZVBlcnNvbklkICYmIHBpZCAhPT0gWi5tZWluZVBlcnNvbklkKSB7CiAgICAgICAgdmFy IHBlcnNvbiA9IFoucGVyc29uZW4uZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBTdHJpbmcocC5p ZCkgPT09IHBpZDsgfSk7CiAgICAgICAgdmFyIGFuemVpZ2VOYW1lID0gcGVyc29uID8gKChwZXJz b24udm9ybmFtZSA/IHBlcnNvbi52b3JuYW1lICsgJyAnIDogJycpICsgcGVyc29uLm5hbWUpIDog J1BlcnNvbiAnICsgcGlkOwogICAgICAgIGJlc3RhZXRpZ2VuKCdEdSDDpG5kZXJzdCBnZXJhZGUg ZGllIFNjaGljaHQgdm9uICcgKyBhbnplaWdlTmFtZSArICcuXG5CaXN0IGR1IGRpciBzaWNoZXI/ JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGVkaXRvck9lZmZuZW4oemVsbGUsIHRydWUsIHRy dWUpOwogICAgICAgIH0sIHsgdGl0ZWw6ICdGcmVtZC3DhG5kZXJ1bmcnLCBqYVRleHQ6ICdUcm90 emRlbSDDpG5kZXJuJyB9KTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUGVzc2ltaXN0 aWMgTG9jayBhbmZvcmRlcm4sIGJldm9yIGRlciBFZGl0b3Igc2ljaHRiYXIgd2lyZC4KICAgIC8v IDIwMCAtPiBUb2tlbiBtZXJrZW4sIEhlYXJ0YmVhdCBzdGFydGVuLCB3ZWl0ZXIgdW50ZW4gb2Vm Zm5lbi4KICAgIC8vIDQyMyArIG5pY2h0LWthbm5Gb3JjZSAtPiBFZGl0b3IgYmxlaWJ0IHp1LCBU b2FzdC4KICAgIC8vIDQyMyArIGthbm5Gb3JjZSAtPiBCZXN0YWV0aWd1bmdzLU1vZGFsICJFZGl0 LUxvY2sgdWViZXJuZWhtZW4/Ii4KICAgIGxvY2taZWxsZUFjcXVpcmUoZGF0dW0sIHBpZCkudGhl bihmdW5jdGlvbihyZXMpIHsKICAgICAgICBpZiAocmVzLnN0YXR1cyA9PT0gMjAwICYmIHJlcy5i b2R5ICYmIHJlcy5ib2R5LnRva2VuKSB7CiAgICAgICAgICAgIFouemVsbExvY2sudG9rZW4gPSBy ZXMuYm9keS50b2tlbjsKICAgICAgICAgICAgWi56ZWxsTG9jay5kYXR1bSA9IGRhdHVtOwogICAg ICAgICAgICBaLnplbGxMb2NrLnBlcnNvbklkID0gcGlkOwogICAgICAgICAgICBsb2NrSGVhcnRi ZWF0U3RhcnRlbihyZXMuYm9keS50b2tlbik7CiAgICAgICAgICAgIGVkaXRvclZpc3VlbGxPZWZm bmVuKHplbGxlLCBkYXR1bSwgcGlkKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAg ICAgICBpZiAocmVzLnN0YXR1cyA9PT0gNDIzICYmIHJlcy5ib2R5KSB7CiAgICAgICAgICAgIHZh ciBiID0gcmVzLmJvZHk7CiAgICAgICAgICAgIGlmIChiLmthbm5Gb3JjZSkgewogICAgICAgICAg ICAgICAgYmVzdGFldGlnZW4oCiAgICAgICAgICAgICAgICAgICAgKGIuc3BlcnJlciB8fCAnSmVt YW5kJykgKyAnIGJlYXJiZWl0ZXQgZGllc2UgWmVsbGUgZ2VyYWRlLlxuRWRpdC1Mb2NrIHVlYmVy bmVobWVuPycsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIGxvY2taZWxsZUZvcmNlKGRhdHVtLCBwaWQpLnRoZW4oZnVuY3Rpb24ocjIpIHsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMi5zdGF0dXMgPT09IDIwMCAmJiByMi5i b2R5ICYmIHIyLmJvZHkudG9rZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBa LnplbGxMb2NrLnRva2VuID0gcjIuYm9keS50b2tlbjsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaLnplbGxMb2NrLmRhdHVtID0gZGF0dW07CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWi56ZWxsTG9jay5wZXJzb25JZCA9IHBpZDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsb2NrSGVhcnRiZWF0U3RhcnRlbihyMi5ib2R5LnRva2VuKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JWaXN1ZWxsT2VmZm5lbih6ZWxsZSwgZGF0dW0s IHBpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvYXN0KCdGb3JjZS1Mb2NrIGZlaGxnZXNjaGxhZ2VuLicsICdm ZWhsZXInKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7IHRp dGVsOiAnRWRpdC1Mb2NrIHVlYmVybmVobWVuJywgamFUZXh0OiAnw5xiZXJuZWhtZW4nIH0KICAg ICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0b2Fz dChiLm1lbGR1bmcgfHwgJ1dpcmQgZ2VyYWRlIGJlYXJiZWl0ZXQuJywgJ3dhcm51bmcnKTsKICAg ICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRvYXN0KCdM b2NrLUFuZm9yZGVydW5nIGZlaGxnZXNjaGxhZ2VuLicsICdmZWhsZXInKTsKICAgIH0pOwp9Cgov LyBFaWdlbnRsaWNoZXMgdmlzdWVsbGVzIE9lZmZuZW4g4oCUIGdldHJlbm50IHZvbiBlZGl0b3JP ZWZmbmVuLCBkYW1pdCBkZXIKLy8gTG9jay1BY3F1aXJlLUZsb3cgb2JlbiBkZW4gcmVzdGxpY2hl biBDb2RlIGxhenkgYXVmcnVmZW4ga2Fubi4KZnVuY3Rpb24gZWRpdG9yVmlzdWVsbE9lZmZuZW4o emVsbGUsIGRhdHVtLCBwaWQpIHsKICAgIGVkaXRvci5ha3RpdiA9IHRydWU7IGVkaXRvci5kYXR1 bSA9IGRhdHVtOyBlZGl0b3IucGVyc29uSWQgPSBwaWQ7CgogICAgdmFyIGVsID0gZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJ3plbGwtZWRpdG9yJyk7CiAgICB2YXIgc2VsID0gZG9jdW1lbnQuZ2V0 RWxlbWVudEJ5SWQoJ2VkaXRvci1hdXN3YWhsJyk7CiAgICAvLyBJc3QtV2VydCBhdXMgZGVtIFN0 YXRlIGxlc2VuLCBOSUNIVCBhdXMgemVsbGUudGl0bGU6IGRlciBUaXRlbCBrYW5uIGVpbgogICAg Ly8gQW56ZWlnZS1TdWZmaXggdHJhZ2VuICh6LkIuICIgW1ZFUkFOVFdPUlRMSUNIXSIgYmVpbSAx LiB2ZXJhbnR3b3J0bGljaGVuCiAgICAvLyBER0wpLCB3b2R1cmNoIGtlaW4gPG9wdGlvbj4gbWF0 Y2h0ZSB1bmQgZGFzIERyb3Bkb3duIGZhZWxzY2hsaWNoIGF1ZgogICAgLy8gIihsZWVyKSIgc3Rh bmQg4oCUIGdlbmF1IGJlaSBkZXIgaGFldWZpZ3N0ZW4gREdMLVplbGxlLgogICAgdmFyIGFrdFdl cnQgPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5laW50cmFlZ2UgJiYgWi5wbGFudW5nLmVpbnRy YWVnZVtkYXR1bV0gJiYgWi5wbGFudW5nLmVpbnRyYWVnZVtkYXR1bV1bcGlkXSkgfHwgJyc7Cgog ICAgdmFyIGh0bWwgPSAnPG9wdGlvbiB2YWx1ZT0iIj4obGVlcik8L29wdGlvbj4nOwogICAgLy8g TnVyIGFrdGl2ZSBDb2RlcyB6dXIgTmV1LUVpbmdhYmUgYW5iaWV0ZW4uIERlciBha3R1ZWxsIGdl c2V0enRlIFdlcnQKICAgIC8vIHdpcmQgYXVjaCBkYW5uIGdlemVpZ3Qgd2VubiBzZWluIENvZGUg aW56d2lzY2hlbiBkZWFrdGl2aWVydCB3dXJkZQogICAgLy8gKHNvbnN0IGdpbmdlIGRpZSBJbmZv IGluIGRlciBaZWxsZSB2ZXJsb3JlbikuCiAgICAoWi5hZG1pbi5zY2hpY2h0Y29kZXMgfHwgW10p LmZvckVhY2goZnVuY3Rpb24oc2MpIHsKICAgICAgICB2YXIgYWt0aXYgPSAhZWRpdG9ySG9va3Mu aXN0Q29kZUFrdGl2IHx8IGVkaXRvckhvb2tzLmlzdENvZGVBa3RpdihzYyk7CiAgICAgICAgaWYg KCFha3RpdiAmJiBzYy5jb2RlICE9PSBha3RXZXJ0KSByZXR1cm47CiAgICAgICAgdmFyIHMgPSBh a3RXZXJ0ID09PSBzYy5jb2RlID8gJyBzZWxlY3RlZCcgOiAnJzsKICAgICAgICB2YXIgc3VmZml4 ID0gIWFrdGl2ID8gJyAoaW5ha3RpdiknIDogJyc7CiAgICAgICAgaHRtbCArPSAnPG9wdGlvbiB2 YWx1ZT0iJyArIGVzY2FwZUF0dHIoc2MuY29kZSkgKyAnIicgKyBzICsgJz4nICsgZXNjYXBlSFRN TChzYy5jb2RlKSArICcg4oCUICcgKyBlc2NhcGVIVE1MKHNjLmJlemVpY2hudW5nKSArIHN1ZmZp eCArICc8L29wdGlvbj4nOwogICAgfSk7CiAgICBzZWwuaW5uZXJIVE1MID0gaHRtbDsKCiAgICAv LyBLb21tZW50YXItVmVybGF1ZiByZW5kZXJuLCBFaW5nYWJlZmVsZCBpbW1lciBsZWVyIChqZWRl IEVpbmdhYmUgaGFlbmd0CiAgICAvLyBlaW5lbiBuZXVlbiBLb21tZW50YXIgYW4gZGllIExpc3Rl IGFuIHN0YXR0IHp1IHVlYmVyc2NocmVpYmVuKS4KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk KCdlZGl0b3Ita29tbWVudGFyLWlucHV0JykudmFsdWUgPSAnJzsKICAgIGVkaXRvcktvbW1lbnRh clZlcmxhdWZSZW5kZXJuKCk7CgogICAgLy8gRXhjZWwtYWVobmxpY2ggZGlyZWt0IFJFQ0hUUyBu ZWJlbiBkZXIgWmVsbGUsIG9iZW4gYnVlbmRpZy4gI3plbGwtZWRpdG9yCiAgICAvLyBpc3QgcG9z aXRpb246Zml4ZWQgLT4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCktVmlld3BvcnQtS29vcmRpbmF0 ZW4gcGFzc2VuCiAgICAvLyAxOjEgKGZydWVoZXIgcG9zaXRpb246YWJzb2x1dGUgLT4gZGVyIE9m ZnNldC1QYXJlbnQgdW50ZXIgZGVyIEtvcGZsZWlzdGUKICAgIC8vIHNjaG9iIGRlbiBFZGl0b3Ig fjIgWmVsbGVuIHp1IHRpZWYpLiBHcm9iZSBFZGl0b3ItTWFzc2UgZnVlciBkYXMKICAgIC8vIFZp ZXdwb3J0LUNsYW1waW5nOyB3ZW5uIHJlY2h0cyBrZWluIFBsYXR6IGlzdCwgbmFjaCBsaW5rcyBr bGFwcGVuLgogICAgdmFyIEVXID0gMjUwLCBFSCA9IDMyMDsKICAgIHZhciByZWN0ID0gemVsbGUu Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgbGVmdCA9IHJlY3QucmlnaHQgKyAyOwog ICAgaWYgKGxlZnQgKyBFVyA+IHdpbmRvdy5pbm5lcldpZHRoIC0gNCkgbGVmdCA9IE1hdGgubWF4 KDQsIHJlY3QubGVmdCAtIEVXIC0gMik7CiAgICB2YXIgdG9wID0gcmVjdC50b3A7CiAgICBpZiAo dG9wICsgRUggPiB3aW5kb3cuaW5uZXJIZWlnaHQgLSA0KSB0b3AgPSBNYXRoLm1heCg0LCB3aW5k b3cuaW5uZXJIZWlnaHQgLSBFSCAtIDQpOwogICAgZWwuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgn OwogICAgZWwuc3R5bGUudG9wID0gdG9wICsgJ3B4JzsKICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUo J3ZlcnN0ZWNrdCcpOwogICAgc2VsLmZvY3VzKCk7Cn0KCmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JT Y2hsaWVzc2VuKG9obmVSZWxlYXNlKSB7CiAgICBlZGl0b3IuYWt0aXYgPSBmYWxzZTsKICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd6ZWxsLWVkaXRvcicpLmNsYXNzTGlzdC5hZGQoJ3ZlcnN0 ZWNrdCcpOwogICAgbG9ja0hlYXJ0YmVhdFN0b3BwZW4oKTsKICAgIC8vIG9obmVSZWxlYXNlPXRy dWUgd2VubiBkZXIgU2VydmVyIHVucyBtaXRnZXRlaWx0IGhhdCwgZGFzcyB1bnNlciBMb2NrCiAg ICAvLyBzY2hvbiB3ZWcgaXN0ICh6LkIuIEZhY2hhdWZzaWNodCBoYXQgcGVyIEZvcmNlIHVlYmVy bm9tbWVuKS4KICAgIGlmICghb2huZVJlbGVhc2UgJiYgWi56ZWxsTG9jayAmJiBaLnplbGxMb2Nr LnRva2VuKSB7CiAgICAgICAgbG9ja1plbGxlUmVsZWFzZShaLnplbGxMb2NrLnRva2VuKTsKICAg IH0KICAgIFouemVsbExvY2sudG9rZW4gPSBudWxsOwogICAgWi56ZWxsTG9jay5kYXR1bSA9ICcn OwogICAgWi56ZWxsTG9jay5wZXJzb25JZCA9ICcnOwp9CgpleHBvcnQgZnVuY3Rpb24gZWRpdG9y QXVzd2FobCh3ZXJ0KSB7CiAgICBpZiAoIWVkaXRvci5ha3RpdikgcmV0dXJuOwogICAgdmFyIGRh dHVtID0gZWRpdG9yLmRhdHVtLCBwaWQgPSBlZGl0b3IucGVyc29uSWQ7CiAgICAvLyBRdWl0dGll cnRlIEZ1ZWhydW5nc2tyYWZ0LVVudGVyYmVzZXR6dW5nIHdpcmQgYmVpbSBTcGVpY2hlcm4gc2Vy dmVyc2VpdGlnIG1pdHByb3Rva29sbGllcnQKICAgIHZhciB1bnRlcmJlc2V0enVuZ1NjaGljaHQg PSBudWxsOwoKICAgIGZ1bmN0aW9uIGZvcnRzZXR6ZW4oKSB7CiAgICAgICAgZWRpdG9yU2NobGll c3NlbigpOwoKICAgICAgICBpZiAoIVoucGxhbnVuZy5laW50cmFlZ2UpIFoucGxhbnVuZy5laW50 cmFlZ2UgPSB7fTsKICAgICAgICBpZiAoIVoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dKSBaLnBs YW51bmcuZWludHJhZWdlW2RhdHVtXSA9IHt9OwogICAgICAgIC8vIFdlcnQgbWVya2VuIGRlbiBk ZXIgQ2xpZW50IGFscyAiYWx0IiBhbm5pbW10IOKAlCBmdWVyIE9wdGltaXN0aWMtQ29uY3VycmVu Y3kKICAgICAgICB2YXIgZXJ3YXJ0ZXQgPSBaLnBsYW51bmcuZWludHJhZWdlW2RhdHVtXVtwaWRd IHx8ICcnOwoKICAgICAgICAvLyBTbmFwc2hvdCBkZXIgYWt0aXZlbiBGdWVocnVuZyAoVG9wLTIg REdMcykgcHJvIGJldHJvZmZlbmVyIFNjaGljaHQKICAgICAgICAvLyBWT1IgZGVyIG9wdGltaXN0 aXNjaGVuIFVlYmVyc2NocmVpYnVuZy4gTmFjaCBlcmZvbGdyZWljaGVtIFNwZWljaGVybgogICAg ICAgIC8vIHZlcmdsZWljaGVuIHdpciwgd2VyIG5ldSBpbiBkaWUgVG9wLTIgYXVmcnVlY2t0IOKA lCBwcm8gQXVmcnVlY2tlcgogICAgICAgIC8vIGdyZWlmdCBkZXIgVmVyYW50d29ydHVuZ3MtVWVi ZXJnYW5nLURpYWxvZyAoMTQtVGFnZS1GZW5zdGVyKS4KICAgICAgICB2YXIgc0FsdCA9IGZ1ZWhy dW5nc1NjaGljaHQoZXJ3YXJ0ZXQpOwogICAgICAgIHZhciBzTmV1ID0gZnVlaHJ1bmdzU2NoaWNo dCh3ZXJ0KTsKICAgICAgICB2YXIgZnVlaHJ1bmdWb3JoZXIgPSB7fTsKICAgICAgICBpZiAoc0Fs dCkgICAgICAgICAgICAgICAgICBmdWVocnVuZ1ZvcmhlcltzQWx0XSA9IGFrdGl2ZUZ1ZWhydW5n KGRhdHVtLCBzQWx0KTsKICAgICAgICBpZiAoc05ldSAmJiBzTmV1ICE9PSBzQWx0KSBmdWVocnVu Z1ZvcmhlcltzTmV1XSA9IGFrdGl2ZUZ1ZWhydW5nKGRhdHVtLCBzTmV1KTsKCiAgICAgICAgaWYg KHdlcnQpIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF0gPSB3ZXJ0OwogICAgICAgIGVs c2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF07CgogICAgICAgIHplbGxl VmlzdWVsbEFrdHVhbGlzaWVyZW4oZGF0dW0sIHBpZCwgd2VydCk7CgogICAgICAgIC8vIE9wdGlt aXN0aXNjaCBzb2ZvcnQgZGVuIEZ1ZWxsLUdyaWZmIGFuemVpZ2VuIOKAlCBuaWNodCBlcnN0IG5h Y2gKICAgICAgICAvLyBTZXJ2ZXItQW50d29ydC4gQXVmIGxhbmdzYW1lbiBOZXR6d2Vyay1TaGFy ZXMgc3BhcnQgZGFzIHNwdWVyYmFyCiAgICAgICAgLy8gd2Focmdlbm9tbWVuZSBMYXRlbnouIEJl aSBTZXJ2ZXItRmVobGVyL0tvbmZsaWt0IGJsZW5kZW4gd2lyIGRlbgogICAgICAgIC8vIEdyaWZm IGluIGRlbiBqZXdlaWxpZ2VuIFp3ZWlnIHdpZWRlciBhdXMgKHNpZWhlIHVudGVuKS4KICAgICAg ICBmdWVsbEhhbmRsZVplaWdlbih7IGRhdHVtOiBkYXR1bSwgcGlkOiBwaWQsIHdlcnQ6IHdlcnQg fSk7CgogICAgICAgIC8vIFZPUlpJRUhFTiB2b3IgZGFzIGZldGNoOiBWZXJhbnR3b3J0dW5ncy1V ZWJlcmdhbmctTW9kYWwgc29mb3J0CiAgICAgICAgLy8gemVpZ2VuLCBzb2JhbGQgZGllIG9wdGlt aXN0aXNjaGUgQWVuZGVydW5nIGluIFoucGxhbnVuZy5laW50cmFlZ2UKICAgICAgICAvLyBzdGVo dC4gQXVmIGRlbSBCZWhvZXJkZW4tUEMgKGk1LTg1MDAsIE9mZmljZSBpbSBIaW50ZXJncnVuZCkK ICAgICAgICAvLyBzaW5kIGRpZSAxMDAtNTAwIG1zIFNlcnZlci1Sb3VuZHRyaXAgZGVyIGdyb2Vz c3RlIHZlcmJsZWliZW5kZQogICAgICAgIC8vIExhZy1GYWt0b3Ig4oCUIGRlciBVc2VyIHNvbGwg ZGllIEtvbnNlcXVlbnogc2VpbmVyIEFrdGlvbiBkaXJla3QKICAgICAgICAvLyBzZWhlbiwgbmlj aHQgZXJzdCBuYWNoIGRlbSBOZXR6d2Vyay1Ib3AuIEJlaSA0MDkvRXJyb3Igcm9sbGVuCiAgICAg ICAgLy8gd2lyIGRlbiBNb2RhbCB1bnRlbiB6dXNhbW1lbiBtaXQgZGVyIEFlbmRlcnVuZyB6dXJ1 ZWNrLgogICAgICAgIHZhciBvcHRpbWlzdGlzY2hlck1vZGFsR2V6ZWlndCA9IGZhbHNlOwogICAg ICAgIC8vICJFaW5nZXNwcnVuZ2VuIi1TdGF0aXN0aWstRXZlbnRzIHdlcmRlbiBoaWVyIG51ciBH RVNBTU1FTFQgdW5kIGVyc3QKICAgICAgICAvLyBpbSBFcmZvbGdzLVp3ZWlnIGRlcyBaZWxsLVBl cnNpc3RzIGFiZ2VzZXR6dC4gRnJ1ZWhlciBmZXVlcnRlbiBzaWUKICAgICAgICAvLyBWT1IgZGVt IGZldGNoIOKAlCBiZWkgZWluZW0gNDA5IChLb25mbGlrdC9VbnRlcmJlc2V0enVuZykgd3VyZGUg ZGllCiAgICAgICAgLy8gWmVsbGUgenVydWVja2dlcm9sbHQsIGRhcyBMb2didWNoLUV2ZW50ICJh dWZnZXJ1ZWNrdCIgYmxpZWIgYWJlcgogICAgICAgIC8vIHN0ZWhlbiB1bmQgZGllIFN0YXRpc3Rp ayB6YWVobHRlIGVpbmVuIEVpbnNwcmluZ2VyLCBkZW4gZXMgbmllIGdhYi4KICAgICAgICB2YXIg YXVmcnVlY2tlckV2ZW50cyA9IFtdOwogICAgICAgIC8vIFZlcmFudHdvcnR1bmdzLUJlbmFjaHJp Y2h0aWd1bmdlbiB3ZXJkZW4genUgRUlORVIgU2FtbWVsLU1haWwKICAgICAgICAvLyBnZWJ1ZW5k ZWx0OiBlaW4gRGlhbG9nLCBlaW5lIE1haWwgYW4gQUxMRSBCZXRyb2ZmZW5lbiAoQXVmcnVlY2tl cgogICAgICAgIC8vIGF1c3NlciBTZWxic3RwbGFuZXIgKyBWZXJkcmFlbmd0ZSkuIEZydWVoZXI6 IHBybyBQZXJzb24gZWluIGVpZ2VuZXIKICAgICAgICAvLyBEaWFsb2cgKyBlaW5lIGVpZ2VuZSBN YWlsIC0+IHp1IHZpZWxlIFNjaHJpdHRlLCBkZXIgVXNlciBzdGllZyBhdXMuCiAgICAgICAgdmFy IHdlY2hzZWwgPSB7IGRhdHVtOiBkYXR1bSwgcHJpbWFlclNjaGljaHQ6IG51bGwsIGVpbnRyYWVn ZTogW10sIGVtcGZhZW5nZXI6IFtdLCBjY1BhcnRuZXJFbWFpbHM6IFtdIH07CiAgICAgICAgdmFy IGVtcGZTZWVuID0ge307CiAgICAgICAgZnVuY3Rpb24gd2VjaHNlbEVtcGZhZW5nZXIocGVyc29u KSB7CiAgICAgICAgICAgIGlmICghcGVyc29uKSByZXR1cm47CiAgICAgICAgICAgIHZhciBtID0g KHBlcnNvbi5lbWFpbCB8fCAnJykudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgLy8gT2huZSBF LU1haWwtQWRyZXNzZSBrZWluIEFuLUVtcGZhZW5nZXIgKGltIEJsb2NrIGVyc2NoZWludCBkaWUK ICAgICAgICAgICAgLy8gUGVyc29uIHRyb3R6ZGVtLCBudXIgYWxzIEtvbnRleHQgZnVlciBkaWUg YW5kZXJlbikuCiAgICAgICAgICAgIGlmICghbSB8fCBlbXBmU2VlblttXSkgcmV0dXJuOwogICAg ICAgICAgICBlbXBmU2VlblttXSA9IHRydWU7CiAgICAgICAgICAgIHdlY2hzZWwuZW1wZmFlbmdl ci5wdXNoKHsgZW1haWw6IHBlcnNvbi5lbWFpbCwgcGVyc29uOiBwZXJzb24gfSk7CiAgICAgICAg fQogICAgICAgIGlmIChkYXR1bUluVmVyYmluZGxpY2hrZWl0KGRhdHVtKSkgewogICAgICAgICAg ICBPYmplY3Qua2V5cyhmdWVocnVuZ1ZvcmhlcikuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAg ICAgICAgICAgICB2YXIgdm9yaGVyICA9IGZ1ZWhydW5nVm9yaGVyW3NdOwogICAgICAgICAgICAg ICAgdmFyIG5hY2hoZXIgPSBha3RpdmVGdWVocnVuZyhkYXR1bSwgcyk7CiAgICAgICAgICAgICAg ICB2YXIgdm9yaGVySWRzICA9IHZvcmhlci5tYXAoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5pZDsg fSk7CiAgICAgICAgICAgICAgICB2YXIgbmFjaGhlcklkcyA9IG5hY2hoZXIubWFwKGZ1bmN0aW9u KHApIHsgcmV0dXJuIHAuaWQ7IH0pOwogICAgICAgICAgICAgICAgdmFyIGF1ZnJ1ZWNrZXIgPSBu YWNoaGVyLmZpbHRlcihmdW5jdGlvbihwKSB7IHJldHVybiB2b3JoZXJJZHMuaW5kZXhPZihwLmlk KSA8IDA7IH0pOwogICAgICAgICAgICAgICAgdmFyIGF1c2dlc2NoaWVkZW4gPSB2b3JoZXIuZmls dGVyKGZ1bmN0aW9uKHApIHsgcmV0dXJuIG5hY2hoZXJJZHMuaW5kZXhPZihwLmlkKSA8IDA7IH0p OwogICAgICAgICAgICAgICAgaWYgKChhdWZydWVja2VyLmxlbmd0aCB8fCBhdXNnZXNjaGllZGVu Lmxlbmd0aCkgJiYgIXdlY2hzZWwucHJpbWFlclNjaGljaHQpIHdlY2hzZWwucHJpbWFlclNjaGlj aHQgPSBzOwogICAgICAgICAgICAgICAgYXVmcnVlY2tlci5mb3JFYWNoKGZ1bmN0aW9uKG5ldWVy KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHN0dWZlID0gKG5hY2hoZXJbMF0gJiYgbmFjaGhl clswXS5pZCA9PT0gbmV1ZXIuaWQpID8gMSA6IDI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBh cnRuZXIgPSBuYWNoaGVyLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5pZCAhPT0gbmV1ZXIu aWQ7IH0pIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFsdGVyICAgPSBhdXNnZXNj aGllZGVuWzBdIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgLy8gQXVmcnVlY2stQmV3ZWd1 bmcgc3RlaHQgSU1NRVIgaW0gQmxvY2sgKGF1Y2ggYmVpIFNlbGJzdC0KICAgICAgICAgICAgICAg ICAgICAvLyBwbGFudW5nKSDigJQgZGFtaXQgUGFydG5lci9WZXJkcmFlbmd0ZSBzZWhlbiwgd2Vy IHVlYmVybmltbXQuCiAgICAgICAgICAgICAgICAgICAgd2VjaHNlbC5laW50cmFlZ2UucHVzaCh7 IGFydDogJ2F1ZicsIHNjaGljaHRMZXR0ZXI6IHMsIHBlcnNvbjogbmV1ZXIsIHN0dWZlOiBzdHVm ZSwgZ2VnZW46IGFsdGVyIH0pOwogICAgICAgICAgICAgICAgICAgIC8vIFNlbGJzdHBsYW51bmc6 IHBsYW50IHNpY2ggZGVyIGVpbmdlbG9nZ3RlIE51dHplciBTRUxCU1QgaW4KICAgICAgICAgICAg ICAgICAgICAvLyBkaWUgVmVyYW50d29ydHVuZywgYmVrb21tdCBlciBLRUlORSBNYWlsIGFuIHNp Y2ggc2VsYnN0IOKAlAogICAgICAgICAgICAgICAgICAgIC8vIGVyIGhhdCBlcyBqYSBnZXJhZGUg Z2V0YW4uIFZlcmRyYWVuZ3RlIHdlcmRlbiAodW50ZW4pIGltbWVyCiAgICAgICAgICAgICAgICAg ICAgLy8gaW5mb3JtaWVydC4KICAgICAgICAgICAgICAgICAgICB2YXIgc2VsYnN0Z2VwbGFudCA9 IChaLm1laW5lUGVyc29uSWQgIT0gbnVsbCAmJiBTdHJpbmcobmV1ZXIuaWQpID09PSBTdHJpbmco Wi5tZWluZVBlcnNvbklkKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxic3RnZXBsYW50 KSB3ZWNoc2VsRW1wZmFlbmdlcihuZXVlcik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnRu ZXIgJiYgcGFydG5lci5lbWFpbCAmJiB3ZWNoc2VsLmNjUGFydG5lckVtYWlscy5pbmRleE9mKHBh cnRuZXIuZW1haWwpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICB3ZWNoc2VsLmNjUGFy dG5lckVtYWlscy5wdXNoKHBhcnRuZXIuZW1haWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICAgICAvLyBTdGF0aXN0aWstQ2FwdHVyZSAoU2NoaWNodHZlcnRlaWx1bmcg LT4gIkVpbmdlc3BydW5nZW4iKToKICAgICAgICAgICAgICAgICAgICAvLyBKZWRlciBBdWZydWVj a2VyIGluIGRlciBWZXJiaW5kbGljaGtlaXQgaXN0IGVpbiAiRWluLQogICAgICAgICAgICAgICAg ICAgIC8vIHNwcmluZ2VyIi4gUGVyc2lzdGllcmVuIHdpciBhc3luY2hyb24gaW0gTG9nYnVjaCwg ZGFtaXQKICAgICAgICAgICAgICAgICAgICAvLyBkZXIgU2VydmVyLUFnZ3JlZ2F0IGRpZSBaYWhs IHBybyBQZXJzb24gemFlaGxlbiBrYW5uLgogICAgICAgICAgICAgICAgICAgIHZhciB2b3JXZXJ0 ID0gKG5ldWVyLmlkID09PSBwaWQpID8gZXJ3YXJ0ZXQgOiAoCiAgICAgICAgICAgICAgICAgICAg ICAgICgoWi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZGF0dW1dIHx8IHt9KVtTdHJpbmcobmV1 ZXIuaWQpXSB8fCAnJwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAg YXVmcnVlY2tlckV2ZW50cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uSWQ6 IG5ldWVyLmlkLAogICAgICAgICAgICAgICAgICAgICAgICBkYXR1bTogZGF0dW0sCiAgICAgICAg ICAgICAgICAgICAgICAgIHNjaGljaHQ6IHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0dWZl OiBzdHVmZSwKICAgICAgICAgICAgICAgICAgICAgICAgdm9yaGVyV2VydDogdm9yV2VydCwKICAg ICAgICAgICAgICAgICAgICAgICAgYXVzbG9lc2VyUGVyc29uSWQ6IHBpZAogICAgICAgICAgICAg ICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvLyBWZXJkcmFl bmd0ZSAoYXVzIGRlciBUb3AtMiBnZWZhbGxlbikgd2VyZGVuIGZsZXhpYmxlciAtPiBpbW1lcgog ICAgICAgICAgICAgICAgLy8gbWl0IGluIGRpZSBTYW1tZWwtTWFpbC4gbmFjaGZvbGdlciA9IHdl ciBkaWUgVmVyYW50d29ydHVuZwogICAgICAgICAgICAgICAgLy8gdWViZXJub21tZW4gaGF0IChB dWZydWVja2VyLCBzb25zdCBuZXVlIE5yLiAxKS4KICAgICAgICAgICAgICAgIGF1c2dlc2NoaWVk ZW4uZm9yRWFjaChmdW5jdGlvbih3ZWcpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc3R1ZmVX ZWcgPSAodm9yaGVyWzBdICYmIHZvcmhlclswXS5pZCA9PT0gd2VnLmlkKSA/IDEgOiAyOwogICAg ICAgICAgICAgICAgICAgIHZhciBuYWNoZm9sZ2VyID0gYXVmcnVlY2tlclswXSB8fCBuYWNoaGVy WzBdIHx8IG51bGw7CiAgICAgICAgICAgICAgICAgICAgd2VjaHNlbC5laW50cmFlZ2UucHVzaCh7 IGFydDogJ2ZyZWknLCBzY2hpY2h0TGV0dGVyOiBzLCBwZXJzb246IHdlZywgc3R1ZmU6IHN0dWZl V2VnLCBnZWdlbjogbmFjaGZvbGdlciB9KTsKICAgICAgICAgICAgICAgICAgICB3ZWNoc2VsRW1w ZmFlbmdlcih3ZWcpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAg IH0KICAgICAgICBpZiAoIXdlY2hzZWwucHJpbWFlclNjaGljaHQpIHdlY2hzZWwucHJpbWFlclNj aGljaHQgPSAnRic7CiAgICAgICAgb3B0aW1pc3Rpc2NoZXJNb2RhbEdlemVpZ3QgPSB3ZWNoc2Vs LmVtcGZhZW5nZXIubGVuZ3RoID4gMDsKICAgICAgICBpZiAob3B0aW1pc3Rpc2NoZXJNb2RhbEdl emVpZ3QpIHZlcmFudHdvcnR1bmdzV2VjaHNlbERpYWxvZ1plaWdlbih3ZWNoc2VsKTsKCiAgICAg ICAgLy8gTmljaHQgYXBpUG9zdCBiZW51dHplbiDigJQgd2lyIG11ZXNzZW4gNDA5IHNlcGFyYXQg YmVoYW5kZWxuCiAgICAgICAgZmV0Y2goJy9hcGkvcGxhbnVuZy96ZWxsZScsIHsKICAgICAgICAg ICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6 ICdhcHBsaWNhdGlvbi9qc29uJyB9LAogICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7 CiAgICAgICAgICAgICAgICBkYXR1bTogZGF0dW0sIHBlcnNvbklkOiBwaWQsIHdlcnQ6IHdlcnQs IGVyd2FydGV0ZXJBbHRlcldlcnQ6IGVyd2FydGV0LAogICAgICAgICAgICAgICAgdW50ZXJiZXNl dHp1bmdTY2hpY2h0OiB1bnRlcmJlc2V0enVuZ1NjaGljaHQKICAgICAgICAgICAgfSkKICAgICAg ICB9KS50aGVuKGZ1bmN0aW9uKHIpIHsKICAgICAgICAgICAgcmV0dXJuIHIuanNvbigpLnRoZW4o ZnVuY3Rpb24oYm9keSkgeyByZXR1cm4geyBzdGF0dXM6IHIuc3RhdHVzLCBib2R5OiBib2R5IH07 IH0pOwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24ocmVzKSB7CiAgICAgICAgICAgIGlmIChyZXMu c3RhdHVzID09PSA0MDkgJiYgcmVzLmJvZHkgJiYgcmVzLmJvZHkua29uZmxpa3RUeXAgPT09ICd1 bnRlcmJlc2V0enVuZycpIHsKICAgICAgICAgICAgICAgIC8vIFNlcnZlciBoYXQgZWluZSBGdWVo cnVuZ3MtVW50ZXJiZXNldHp1bmcgYW5oYW5kIGRlcyBBS1RVRUxMRU4KICAgICAgICAgICAgICAg IC8vIHBsYW51bmcuanNvbi1TdGFuZHMgZXJrYW5udCwgb2J3b2hsIGRlciBDbGllbnQgc2llIG5p Y2h0IGdld2FybnQKICAgICAgICAgICAgICAgIC8vIGhhdCAodHlwaXNjaDogZWluIGFuZGVyZXIg VXNlciBoYXQgemVpdGdsZWljaCBnZXNwZWljaGVydCkuCiAgICAgICAgICAgICAgICAvLyBMb2th bGUgQWVuZGVydW5nIHp1cnVlY2tyb2xsZW4gdW5kIEJlc3RhZXRpZ3VuZ3MtRGlhbG9nIHplaWdl bi4KICAgICAgICAgICAgICAgIHZhciBzTGV0dGVyID0gcmVzLmJvZHkuc2NoaWNodDsKICAgICAg ICAgICAgICAgIHZhciBzTmFtZSA9IHsgRjogJ0Zyw7xoc2NoaWNodCcsIFM6ICdTcMOkdHNjaGlj aHQnLCBOOiAnTmFjaHRzY2hpY2h0JyB9W3NMZXR0ZXJdIHx8IHNMZXR0ZXI7CiAgICAgICAgICAg ICAgICB2YXIgYWt0dWVsbENvdW50ID0gcmVzLmJvZHkuYWt0dWVsbENvdW50IHx8IDA7CiAgICAg ICAgICAgICAgICAvLyBMb2thbGUgb3B0aW1pc3Rpc2NoZSBBZW5kZXJ1bmcgcnVlY2tnYWVuZ2ln IOKAlCB3aXIgemVpZ2VuIHdpZWRlciBkZW4gQXVzZ2FuZ3N6dXN0YW5kCiAgICAgICAgICAgICAg ICBpZiAoZXJ3YXJ0ZXQpIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF0gPSBlcndhcnRl dDsKICAgICAgICAgICAgICAgIGVsc2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1d W3BpZF07CiAgICAgICAgICAgICAgICB6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuKGRhdHVtLCBw aWQsIGVyd2FydGV0KTsKICAgICAgICAgICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigpOwog ICAgICAgICAgICAgICAgLy8gT3B0aW1pc3Rpc2NoIGdlemVpZ3RlbiBWZXJhbnR3b3J0dW5ncy1N b2RhbCBzY2hsaWVzc2VuLAogICAgICAgICAgICAgICAgLy8gYmV2b3Igd2lyIGRlbiBVbnRlcmJl c2V0enVuZ3MtQ29uZmlybS1EaWFsb2cgc3RhY2tlbgogICAgICAgICAgICAgICAgaWYgKG9wdGlt aXN0aXNjaGVyTW9kYWxHZXplaWd0KSB7IG1vZGFsU2NobGllc3Nlbih0cnVlKTsgfQogICAgICAg ICAgICAgICAgdmFyIHR4dCA9ICdMYXV0IGFrdHVlbGxlbSBTZXJ2ZXItU3RhbmQgc2luZCBudXIg bm9jaCAnICsgYWt0dWVsbENvdW50ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnIEbDvGhy dW5nc2tyw6RmdGUgZsO8ciBkaWUgJyArIHNOYW1lICsgJyBhbSAnICsgZGF0dW1Gb3JtYXRERShk YXR1bSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICcgZWluZ2VwbGFudCAoamVtYW5kIGFu ZGVyZXMgaGF0IHp3aXNjaGVuemVpdGxpY2ggZ2VzcGVpY2hlcnQpLlxuJyArCiAgICAgICAgICAg ICAgICAgICAgICAgICAgJ05hY2ggZGllc2VyIMOEbmRlcnVuZyBhdWYgIicgKyAod2VydCB8fCAn ZnJlaScpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBibGVpYmVuIG51ciBub2NoICcg KyAoYWt0dWVsbENvdW50IC0gMSkgKyAnIOKAlCBNaW5kZXN0YmVzZXR6dW5nIHNpbmQgMi5cblxu JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Ryb3R6ZGVtIHNwZWljaGVybj8nOwogICAg ICAgICAgICAgICAgYmVzdGFldGlnZW4odHh0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg ICAgICB1bnRlcmJlc2V0enVuZ1NjaGljaHQgPSBzTGV0dGVyOwogICAgICAgICAgICAgICAgICAg IGZvcnRzZXR6ZW4oKTsgLy8gcmV0cnkgbWl0IGdlc2V0enRlbSBGbGFnIC0+IFNlcnZlciB1ZWJl cnNwcmluZ3QgZGVuIENoZWNrCiAgICAgICAgICAgICAgICB9LCB7IHRpdGVsOiAnVW50ZXJiZXNl dHp1bmcgYmVzdMOkdGlnZW4nLCBqYVRleHQ6ICdUcm90emRlbSBzcGVpY2hlcm4nIH0pOwogICAg ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChyZXMuc3Rh dHVzID09PSA0MDkpIHsKICAgICAgICAgICAgICAgIC8vIEtsYXNzaXNjaGVyIE9wdGltaXN0aWMt Q29uY3VycmVuY3ktS29uZmxpa3QKICAgICAgICAgICAgICAgIHZhciBha3R1ZWxsID0gcmVzLmJv ZHkuYWt0dWVsbGVyV2VydCB8fCAnJzsKICAgICAgICAgICAgICAgIGlmIChha3R1ZWxsKSBaLnBs YW51bmcuZWludHJhZWdlW2RhdHVtXVtwaWRdID0gYWt0dWVsbDsKICAgICAgICAgICAgICAgIGVs c2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZGF0dW1dW3BpZF07CiAgICAgICAgICAgICAg ICB6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuKGRhdHVtLCBwaWQsIGFrdHVlbGwpOwogICAgICAg ICAgICAgICAgZnVlbGxIYW5kbGVWZXJzdGVja2VuKCk7CiAgICAgICAgICAgICAgICBpZiAob3B0 aW1pc3Rpc2NoZXJNb2RhbEdlemVpZ3QpIHsgbW9kYWxTY2hsaWVzc2VuKHRydWUpOyB9CiAgICAg ICAgICAgICAgICB0b2FzdCgnS29uZmxpa3Q6IERpZXNlIFplbGxlIHd1cmRlIGluendpc2NoZW4g dm9uIGplbWFuZCBhbmRlcmVtIGF1ZiAiJyArIChha3R1ZWxsIHx8ICdsZWVyJykgKyAnIiBnZXNl dHp0LiBEZWluZSDDhG5kZXJ1bmcgd3VyZGUgbmljaHQgw7xiZXJub21tZW4uJywgJ3dhcm51bmcn KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAo cmVzLnN0YXR1cyA+PSA0MDApIHsKICAgICAgICAgICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tl bigpOwogICAgICAgICAgICAgICAgaWYgKG9wdGltaXN0aXNjaGVyTW9kYWxHZXplaWd0KSB7IG1v ZGFsU2NobGllc3Nlbih0cnVlKTsgfQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJl cy5ib2R5LmZlaGxlciB8fCAoJ0hUVFAgJyArIHJlcy5zdGF0dXMpKTsKICAgICAgICAgICAgfQog ICAgICAgICAgICB0b2FzdCgnR2VzcGVpY2hlcnQnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgIC8v IEZ1ZWxsLUdyaWZmIGJlcmVpdHMgb3B0aW1pc3Rpc2NoIGVpbmdlYmxlbmRldCDigJQgaGllciBu aWNodHMgbWVociB6dSB0dW4uCiAgICAgICAgICAgIC8vIFZlcmFudHdvcnR1bmdzLU1vZGFsIHd1 cmRlIGJlcmVpdHMgVk9SIGRlbSBmZXRjaCBvcHRpbWlzdGlzY2gKICAgICAgICAgICAgLy8gZ2V6 ZWlndCAoc2llaGUgb2Jlbikg4oCUIGtlaW4gUmUtWmVpZ2VuIGhpZXIgbm9ldGlnLgoKICAgICAg ICAgICAgLy8gSkVUWlQgKG5hY2ggZXJmb2xncmVpY2hlbSBQZXJzaXN0KSBkaWUgIkVpbmdlc3By dW5nZW4iLUV2ZW50cyBpbnMKICAgICAgICAgICAgLy8gTG9nYnVjaC9TdGF0aXN0aWsgc2NocmVp YmVuIOKAlCBuaWUgYmVpIDQwOS9GZWhsZXIgKGtlaW4gUGhhbnRvbSkuCiAgICAgICAgICAgIGF1 ZnJ1ZWNrZXJFdmVudHMuZm9yRWFjaChmdW5jdGlvbihldikgewogICAgICAgICAgICAgICAgYXBp UG9zdCgnL2FwaS92ZXJhbnR3b3J0dW5nL2F1ZmdlcnVlY2t0JywgZXYpLmNhdGNoKGZ1bmN0aW9u KCkgeyAvKiBzaWxlbnQgKi8gfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gRm9s Z2UtQWt0aW9uZW4gKFRvYXN0cywgS3JhbmttZWxkdW5ncy1UcmlnZ2VyLCBMaXZlLVJlcmVuZGVy IGRlcgogICAgICAgICAgICAvLyBCZXNldHp1bmdza29udHJvbGxlKSBkZWZlcnJlbiB3aXIgaW4g ZGVuIG5hZWNoc3RlbiBUaWNrLiBEYW1pdAogICAgICAgICAgICAvLyBoYXQgZGVyIEJyb3dzZXIg WmVpdCwgZGVuIFZlcmFudHdvcnR1bmdzLU1vZGFsIHp1IHJlbmRlcm4sIGJldm9yCiAgICAgICAg ICAgIC8vIHRldXJlIEJlcmVjaG51bmdlbiBkZW4gSlMtVGhyZWFkIGJsb2NraWVyZW4uCiAgICAg ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAvLyBLcmFua21l bGR1bmcgKGtyL0t1cikgZXJ6ZXVndCBzZWl0IFBoYXNlIDQgKDIwMjYtMDUtMjApIGVpbmVuCiAg ICAgICAgICAgICAgICAvLyBTZXJ2ZXItc2VpdGlnZW4gSW4tQXBwLUhpbndlaXMgc3RhdHQgZWlu ZXMgbWFpbHRvLVBvcHVwcy4gRGVyCiAgICAgICAgICAgICAgICAvLyBDbGllbnQgbXVzcyBuaWNo dHMgbWVociB0dW4g4oCUIEJhbm5lcitCYWRnZSBlcnNjaGVpbmVuIGJlaW0KICAgICAgICAgICAg ICAgIC8vIG5hZWNoc3RlbiBTeW5jLVdvcmtlci1UaWNrIGZ1ZXIgU1UgKyBHZXNhbXR2ZXJhbnR3 b3J0bGljaGUuCgogICAgICAgICAgICAgICAgdmFyIHN0ID0gc3RhZXJrZUJlcmVjaG5lbihkYXR1 bSk7CiAgICAgICAgICAgICAgICBpZiAoIXN0Lm9rKSB7CiAgICAgICAgICAgICAgICAgICAgdmFy IGRlZml6aXQgPSBbXTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3QuZiA8IDIpIGRlZml6aXQu cHVzaCgnRnLDvGggKCcgKyBzdC5mICsgJy8yKScpOwogICAgICAgICAgICAgICAgICAgIGlmIChz dC5zIDwgMikgZGVmaXppdC5wdXNoKCdTcMOkdCAoJyArIHN0LnMgKyAnLzIpJyk7CiAgICAgICAg ICAgICAgICAgICAgaWYgKHN0Lm4gPCAyKSBkZWZpeml0LnB1c2goJ05hY2h0ICgnICsgc3QubiAr ICcvMiknKTsKICAgICAgICAgICAgICAgICAgICB0b2FzdCgnVW50ZXJiZXNldHp0IGFtICcgKyBk YXR1bUZvcm1hdERFKGRhdHVtKSArICc6ICcgKyBkZWZpeml0LmpvaW4oJywgJyksICd3YXJudW5n Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBMaXZlLVJlZnJlc2ggZGVy IEJlc2V0enVuZ3Nrb250cm9sbGUsIGZhbGxzIHNpY2h0YmFyLiBTb25zdAogICAgICAgICAgICAg ICAgLy8gcmVhZ2llcnQgZGllIEFuemVpZ2UgZXJzdCBiZWltIG5hZWNoc3RlbiBUYWItV2VjaHNl bC4KICAgICAgICAgICAgICAgIC8vIERlbHRhLVVwZGF0ZSBzdGF0dCB2b2xsZXIgUmVuZGVyOiBu dXIgZGllIEVJTkUgYmV0cm9mZmVuZQogICAgICAgICAgICAgICAgLy8gS2FsZW5kZXItS2FjaGVs ICsgZGllIDMgS1BJLVphaGxlbiB3ZXJkZW4gZ2VwYXRjaHQg4oCUIHNwYXJ0CiAgICAgICAgICAg ICAgICAvLyAzMC0xMDAgbXMgcHJvIEVkaXQgYXVmIGRlbSBCZWhvZXJkZW4tUEMuCiAgICAgICAg ICAgICAgICB2YXIgYmtFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbnNpY2h0LWJlc2V0 enVuZycpOwogICAgICAgICAgICAgICAgaWYgKGJrRWwgJiYgIWJrRWwuY2xhc3NMaXN0LmNvbnRh aW5zKCd2ZXJzdGVja3QnKSAmJiBaLnJlY2h0ZSAmJiBaLnJlY2h0ZS5pc3RHZXNhbXR2ZXJhbnR3 b3J0bGljaCkgewogICAgICAgICAgICAgICAgICAgIGlmIChlZGl0b3JIb29rcy5iZXNldHp1bmdz a29udHJvbGxlVGFnVXBkYXRlbikgZWRpdG9ySG9va3MuYmVzZXR6dW5nc2tvbnRyb2xsZVRhZ1Vw ZGF0ZW4oZGF0dW0pOwogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVkaXRvckhvb2tzLmJl c2V0enVuZ3Nrb250cm9sbGVSZW5kZXJuKSBlZGl0b3JIb29rcy5iZXNldHp1bmdza29udHJvbGxl UmVuZGVybigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LCAwKTsKICAgICAgICB9 KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigp OwogICAgICAgICAgICBpZiAob3B0aW1pc3Rpc2NoZXJNb2RhbEdlemVpZ3QpIHsgbW9kYWxTY2hs aWVzc2VuKHRydWUpOyB9CiAgICAgICAgICAgIHRvYXN0KCdGZWhsZXI6ICcgKyBlLm1lc3NhZ2Us ICdmZWhsZXInKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBSdWhlemVpdGVuLVByw7xmdW5n IFZPUiBkZW0gU3BlaWNoZXJuCiAgICBpZiAod2VydCAmJiBlZGl0b3JIb29rcy5mZWF0dXJlSXN0 QWt0aXYgJiYgZWRpdG9ySG9va3MuZmVhdHVyZUlzdEFrdGl2KCdydWhlemVpdFBydWVmdW5nJykp IHsKICAgICAgICB2YXIgcnVoZVdhcm4gPSBydWhlemVpdFBydWVmZW4oZGF0dW0sIHBpZCwgd2Vy dCk7CiAgICAgICAgaWYgKHJ1aGVXYXJuKSB7CiAgICAgICAgICAgIHZhciBwZXJzb24gPSBaLnBl cnNvbmVuLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gU3RyaW5nKHAuaWQpID09PSBwaWQ7IH0p OwogICAgICAgICAgICB2YXIgbmFtZSA9IHBlcnNvbiA/IHBlcnNvbi5uYW1lIDogJ1BlcnNvbiAn ICsgcGlkOwogICAgICAgICAgICBiZXN0YWV0aWdlbignUnVoZXplaXQtV2FybnVuZyBmw7xyICcg KyBuYW1lICsgJzpcblxuJyArIHJ1aGVXYXJuLmpvaW4oJ1xuJykgKyAnXG5cblRyb3R6ZGVtIHp1 d2Vpc2VuPycsIHBydWVmZUZ1ZWhydW5nc1VuZFNwZWljaGVybiwgeyB0aXRlbDogJ1J1aGV6ZWl0 LVdhcm51bmcnLCBqYVRleHQ6ICdUcm90emRlbSB6dXdlaXNlbicgfSk7CiAgICAgICAgICAgIHJl dHVybjsKICAgICAgICB9CiAgICB9CgogICAgcHJ1ZWZlRnVlaHJ1bmdzVW5kU3BlaWNoZXJuKCk7 CgogICAgZnVuY3Rpb24gcHJ1ZWZlRnVlaHJ1bmdzVW5kU3BlaWNoZXJuKCkgewogICAgICAgIC8v IEZ1ZWhydW5nc2tyYWZ0LVVudGVyYmVzZXR6dW5nIHBydWVmZW4KICAgICAgICB2YXIgYWx0ZXJX ZXJ0ID0gKChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkYXR1bV0gfHwge30pW3BpZF0gfHwg Jyc7CiAgICAgICAgdmFyIHNjaGljaHQgPSBmdWVocnVuZ3NVbnRlcmJlc2V0enVuZ1BydWVmZW4o ZGF0dW0sIGFsdGVyV2VydCwgd2VydCk7CiAgICAgICAgaWYgKCFzY2hpY2h0KSB7IGZvcnRzZXR6 ZW4oKTsgcmV0dXJuOyB9CgogICAgICAgIHZhciBzY2hpY2h0TmFtZSA9IHsgRjogJ0Zyw7xoc2No aWNodCcsIFM6ICdTcMOkdHNjaGljaHQnLCBOOiAnTmFjaHRzY2hpY2h0JyB9W3NjaGljaHRdOwog ICAgICAgIHZhciBha3R1ZWxsID0gZnVlaHJ1bmdzWmFlaGxlbihkYXR1bSwgc2NoaWNodCk7CiAg ICAgICAgdmFyIGRhbmFjaCA9IGFrdHVlbGwgLSAxOwogICAgICAgIHZhciBuZXVlcldlcnRUeHQg PSB3ZXJ0IHx8ICdmcmVpJzsKICAgICAgICB2YXIgdHh0ID0gJ0FrdHVlbGwgc2luZCAnICsgYWt0 dWVsbCArICcgRsO8aHJ1bmdza3LDpGZ0ZSBmw7xyIGRpZSAnICsgc2NoaWNodE5hbWUgKwogICAg ICAgICAgICAgICAgICAnIGFtICcgKyBkYXR1bUZvcm1hdERFKGRhdHVtKSArICcgZWluZ2VwbGFu dC5cbicgKwogICAgICAgICAgICAgICAgICAnTmFjaCBkaWVzZXIgw4RuZGVydW5nIGF1ZiAiJyAr IG5ldWVyV2VydFR4dCArICciIGJsZWliZW4gbnVyIG5vY2ggJyArIGRhbmFjaCArICcg4oCUICcg KwogICAgICAgICAgICAgICAgICAnTWluZGVzdGJlc2V0enVuZyBzaW5kIDIuXG5cbicgKwogICAg ICAgICAgICAgICAgICAnVHJvdHpkZW0gc3BlaWNoZXJuPyc7CiAgICAgICAgdW50ZXJiZXNldHp1 bmdTY2hpY2h0ID0gc2NoaWNodDsKICAgICAgICBiZXN0YWV0aWdlbih0eHQsIGZvcnRzZXR6ZW4s IHsgdGl0ZWw6ICdVbnRlcmJlc2V0enVuZyBiZXN0w6R0aWdlbicsIGphVGV4dDogJ1Ryb3R6ZGVt IHNwZWljaGVybicgfSk7CiAgICB9Cn0KCi8vIEJyaWRnZTogaW50ZXJhY3Rpb24uanMgYnJhdWNo dCBmdWVocnVuZ3NaYWVobGVuLCBrYW5uIGVzIGFiZXIgd2VnZW4KLy8gWnlrbHVzIG5pY2h0IGRp cmVrdCBpbXBvcnRpZXJlbi4gV2lyIHNldHplbiBlcyBhbHMgSG9vay4KaW50ZXJhY3Rpb25Ib29r cy5mdWVocnVuZ3NaYWVobGVuID0gZnVlaHJ1bmdzWmFlaGxlbjsK ### FILE: js/grid_interaction.js | 35893 Ly8gPT09IGdyaWQvaW50ZXJhY3Rpb24uanMgPT09Ci8vIEtvbW1lbnRhcmUgKExlc2VuL1NjaHJl aWJlbi9BbnplaWdlbiBpbSBHcmlkKSwgVW50ZXJiZXNldHp1bmdzLUFuYWx5c2UgKwovLyBXYXJu dW5nLCAienVtIERhdHVtIHNjcm9sbGVuIi4gVkkzIGhhdCBrZWluZSBGTEQtU2VsZWt0aW9uL0tv bnRleHRtZW51LwovLyBEcmFnJkRyb3AtTG9naWsg4oCUIGRhaGVyIHNjaGxhbmtlciBhbHMgZGVy IEZMRC1QZW5kYW50LgoKaW1wb3J0IHsgWiB9IGZyb20gJy4vY29yZV9zdGF0ZS5qcyc7CmltcG9y dCB7IGRhdHVtU3RyLCBkYXR1bUZvcm1hdERFLCBlc2NhcGVIVE1MLCBhbnplaWdlTmFtZUZ1ZXJL ZW5udW5nIH0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwppbXBvcnQgeyB0b2FzdCB9IGZyb20gJy4v dWlfZGlhbG9nLmpzJzsKaW1wb3J0IHsgYXBpLCBhcGlQb3N0IH0gZnJvbSAnLi9jb3JlX2FwaS5q cyc7CmltcG9ydCB7IGRhcmZaZWxsZUVkaXRpZXJlbiB9IGZyb20gJy4vY29yZV9wZXJtaXNzaW9u cy5qcyc7CmltcG9ydCB7IGRhdGVuR3JpZFJlbmRlcm4sIGtvcGZSZW5kZXJuLCB6ZWxsZVZpc3Vl bGxBa3R1YWxpc2llcmVuIH0gZnJvbSAnLi9ncmlkX3JlbmRlci5qcyc7CgovLyA9PT09PSBIb29r cyA9PT09PQoKZXhwb3J0IHZhciBpbnRlcmFjdGlvbkhvb2tzID0gewogICAgZmVhdHVyZUlzdEFr dGl2OiBudWxsLAogICAgZnVlaHJ1bmdzWmFlaGxlbjogbnVsbCAgIC8vIHdpcmQgdm9uIGdyaWQv ZWRpdG9yLmpzIGJlZGllbnQgKHppcmt1bGFlcmUgVmVybWVpZHVuZykKfTsKCi8vID09PT09IEtv bnN0YW50ZW4gPT09PT0KCmV4cG9ydCB2YXIgQktfSE9SSVpPTlRfVEFHRSA9IDI4OwoKLy8gPT09 PT0gV2FjaGxlaXR1bmctSWRlbnRpdGFldCA9PT09PQoKLy8gSXN0IGRlciBha3R1ZWxsZSBVc2Vy IFdhY2hsZWl0dW5nPyBXYWNobGVpdHVuZyA9IEdydXBwZSBXTCBpbiBkZW4gUGVyc29uZW4tRGF0 ZW4KLy8gdW5kIGluIGFkbWluLmpzb24uZ3J1cHBlbi4gZnVlaHJ1bmdzWmFlaGxlbigpIHBydWVm dCBkaWUgZ2xlaWNoZSBLb252ZW50aW9uLgpleHBvcnQgZnVuY3Rpb24gaXN0V2FjaGxlaXR1bmdB a3R1ZWxsZXJVc2VyKCkgewogICAgaWYgKCFaLm1laW5lUGVyc29uSWQpIHJldHVybiBmYWxzZTsK ICAgIHZhciBwID0gbnVsbDsKICAgIChaLnBsYW51bmcucGVyc29uZW4gfHwgW10pLmZvckVhY2go ZnVuY3Rpb24ocHApIHsKICAgICAgICBpZiAoU3RyaW5nKHBwLmlkKSA9PT0gU3RyaW5nKFoubWVp bmVQZXJzb25JZCkpIHAgPSBwcDsKICAgIH0pOwogICAgcmV0dXJuICEhKHAgJiYgcC5ncnVwcGUg PT09ICdXTCcpOwp9CgovLyA9PT09PSBVbnRlcmJlc2V0enVuZ3MtQW5hbHlzZSA9PT09PQoKLy8g RHVyY2hzdWNodCBkaWUga29tbWVuZGVuIE4gVGFnZSBhYiBoZXV0ZSBuYWNoIEZ1ZWhydW5ncy1V bnRlcmJlc2V0enVuZy4KLy8gVkkzLVJlZ2VsOiBwcm8gU2NoaWNodCAoRi9TL04pIG1pbmRlc3Rl bnMgMiBGdWVocnVuZ3NrcmFlZnRlIChER0wvV0RGL0ZCUCwKLy8gb2huZSBHcnVwcGUgTC9XTCku Ci8vIFJ1ZWNrZ2FiZTogc29ydGllcnRlIExpc3RlIHZvbiB7IGRhdHVtLCBmZWhsdDogJ0YgMS8y LCBTIDAvMicgfS4KZXhwb3J0IGZ1bmN0aW9uIHVudGVyYmVzZXR6dW5nQW5hbHlzZVZpMyh0YWdl SG9yaXpvbnQpIHsKICAgIGlmICghaW50ZXJhY3Rpb25Ib29rcy5mdWVocnVuZ3NaYWVobGVuKSBy ZXR1cm4gW107CiAgICB2YXIgaGV1dGUgPSBuZXcgRGF0ZSgpOyBoZXV0ZS5zZXRIb3VycygwLDAs MCwwKTsKICAgIHZhciBwcm9ibGVtZSA9IFtdOwogICAgKFoudGFnZSB8fCBbXSkuZm9yRWFjaChm dW5jdGlvbihkKSB7CiAgICAgICAgaWYgKGQgPCBoZXV0ZSkgcmV0dXJuOwogICAgICAgIHZhciBk aWZmID0gTWF0aC5mbG9vcigoZCAtIGhldXRlKSAvIDg2NDAwMDAwKTsKICAgICAgICBpZiAoZGlm ZiA+PSB0YWdlSG9yaXpvbnQpIHJldHVybjsKICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3RyKGQp OwogICAgICAgIHZhciBmRiA9IGludGVyYWN0aW9uSG9va3MuZnVlaHJ1bmdzWmFlaGxlbihkU3Ry LCAnRicpOwogICAgICAgIHZhciBmUyA9IGludGVyYWN0aW9uSG9va3MuZnVlaHJ1bmdzWmFlaGxl bihkU3RyLCAnUycpOwogICAgICAgIHZhciBmTiA9IGludGVyYWN0aW9uSG9va3MuZnVlaHJ1bmdz WmFlaGxlbihkU3RyLCAnTicpOwogICAgICAgIHZhciBmZWhsdCA9IFtdOwogICAgICAgIGlmIChm RiA8IDIpIGZlaGx0LnB1c2goJ0YgJyArIGZGICsgJy8yJyk7CiAgICAgICAgaWYgKGZTIDwgMikg ZmVobHQucHVzaCgnUyAnICsgZlMgKyAnLzInKTsKICAgICAgICBpZiAoZk4gPCAyKSBmZWhsdC5w dXNoKCdOICcgKyBmTiArICcvMicpOwogICAgICAgIGlmIChmZWhsdC5sZW5ndGggPiAwKSBwcm9i bGVtZS5wdXNoKHsgZGF0dW06IGRTdHIsIGZlaGx0OiBmZWhsdC5qb2luKCcsICcpIH0pOwogICAg fSk7CiAgICByZXR1cm4gcHJvYmxlbWU7Cn0KCmV4cG9ydCBmdW5jdGlvbiB6dURhdHVtU2Nyb2xs ZW4oZFN0cikgewogICAgdmFyIHplbGxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RhdHVt LXplaWxlLXRhZyAua2QtemVsbGVbZGF0YS1kYXR1bT0iJyArIGRTdHIgKyAnIl0nKTsKICAgIHZh ciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dyaWQtc2Nyb2xsLWNvbnRhaW5lcicpOwog ICAgaWYgKCF6ZWxsZSB8fCAhYykgcmV0dXJuOwogICAgdmFyIHIgPSB6ZWxsZS5nZXRCb3VuZGlu Z0NsaWVudFJlY3QoKSwgY3IgPSBjLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgLy8gU21v b3RoLVNjcm9sbCBzdGF0dCBhYnJ1cHRlbSBTcHJ1bmcgKFF1aWNrLVdpbiAyMDI2LTA1LTI5KS4g QXVmIGdyb3NzZW4KICAgIC8vIEdyaWRzIGZ1ZWhsdCBzaWNoIGRpZSBhbmltaWVydGUgQmV3ZWd1 bmcgZGV1dGxpY2ggd2VuaWdlciBydWNrZWxuZCBhbgogICAgLy8gdW5kIGRlciBVc2VyIGJlaGFl bHQgZGllIE9yaWVudGllcnVuZyBiZWltIFNwYWx0ZW4tU3BydW5nLgogICAgdmFyIHppZWxMZWZ0 ID0gYy5zY3JvbGxMZWZ0ICsgKHIubGVmdCAtIGNyLmxlZnQgLSBjci53aWR0aCAvIDMpOwogICAg aWYgKHR5cGVvZiBjLnNjcm9sbFRvID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgYy5zY3JvbGxU byh7IGxlZnQ6IHppZWxMZWZ0LCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7CiAgICB9IGVsc2Ugewog ICAgICAgIGMuc2Nyb2xsTGVmdCA9IHppZWxMZWZ0OwogICAgfQp9CgpleHBvcnQgZnVuY3Rpb24g dW50ZXJiZXNldHp1bmdXYXJudW5nWmVpZ2VuKCkgewogICAgaWYgKCFpbnRlcmFjdGlvbkhvb2tz LmZlYXR1cmVJc3RBa3RpdiB8fCAhaW50ZXJhY3Rpb25Ib29rcy5mZWF0dXJlSXN0QWt0aXYoJ3Vu dGVyYmVzZXR6dW5nV2FybnVuZycpKSByZXR1cm47CiAgICAvLyBXYXJudW5nIGdpbHQgZnVlciBl Y2h0ZSBXYWNobGVpdHVuZyAoR3J1cHBlIEwpIG9kZXIgU3VwZXJVc2VyIGltIFRlc3QtS29udGV4 dC4KICAgIC8vIEZhY2hhdWZzaWNodC1HZXNhbXR2ZXJhbnR3b3J0bGljaGUgYmVrb21tZW4gc3Rh dHRkZXNzZW4gZGVuIEhlYWRlci1UYWIKICAgIC8vICJCZXNldHp1bmdza29udHJvbGxlIiBtaXQg ZGF1ZXJoYWZ0ZXIgVWViZXJzaWNodC4KICAgIGlmICghaXN0V2FjaGxlaXR1bmdBa3R1ZWxsZXJV c2VyKCkgJiYgIVoucmVjaHRlLmlzdFN1cGVyVXNlcikgcmV0dXJuOwogICAgdmFyIHByb2JsZW1l ID0gdW50ZXJiZXNldHp1bmdBbmFseXNlVmkzKDI4KTsKICAgIGlmIChwcm9ibGVtZS5sZW5ndGgg PT09IDApIHJldHVybjsKICAgIHZhciBlcnN0ZXIgPSBwcm9ibGVtZVswXTsKICAgIHZhciB0eHQg PSBwcm9ibGVtZS5sZW5ndGggKyAocHJvYmxlbWUubGVuZ3RoID09PSAxID8gJyBUYWcnIDogJyBU YWdlJykgKwogICAgICAgICAgICAgICcgbWl0IEbDvGhydW5ncy1VbnRlcmJlc2V0enVuZyBpbiBk ZW4gbsOkY2hzdGVuIDQgV29jaGVuLiBFcnN0ZXI6ICcgKwogICAgICAgICAgICAgIGRhdHVtRm9y bWF0REUoZXJzdGVyLmRhdHVtKSArICcgKCcgKyBlcnN0ZXIuZmVobHQgKyAnKS4gS2xpY2sgZsO8 ciBTcHJ1bmcgenVtIFRhZy4nOwogICAgdG9hc3QodHh0LCAnd2FybnVuZycsIHsKICAgICAgICBk YXVlcjogMTAwMDAsCiAgICAgICAgb25DbGljazogZnVuY3Rpb24oKSB7IHp1RGF0dW1TY3JvbGxl bihlcnN0ZXIuZGF0dW0pOyB9CiAgICB9KTsKfQoKLy8gPT09PT0gS29tbWVudGFyZSA9PT09PQov LwovLyBTcGVpY2hlcmZvcm1hdCBpbiBwbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3BlcnNvbklk XTogYWIgMjAyNi0wNCBhbHMKLy8gT2JqZWt0IHsgdGV4dCwgZ2VhZW5kZXJ0QW0gKElTTyksIGdl YWVuZGVydFZvbiB9LiBBbHRlIERhdGVuIGFscyByZWluZQovLyBTdHJpbmdzIHdlcmRlbiB3ZWl0 ZXJoaW4gYWt6ZXB0aWVydDsgYmVpbSBuYWVjaHN0ZW4gU3BlaWNoZXJuIHdpcmQKLy8gYXV0b21h dGlzY2ggYXVmIGRhcyBuZXVlIFNjaGVtYSBtaWdyaWVydC4KCmV4cG9ydCBmdW5jdGlvbiBrb21t ZW50YXJFaW50cmFnKGRhdHVtLCBwZXJzb25JZCkgewogICAgcmV0dXJuICgoWi5wbGFudW5nLmtv bW1lbnRhcmUgfHwge30pW2RhdHVtXSB8fCB7fSlbU3RyaW5nKHBlcnNvbklkKV07Cn0KCi8vIExv ZXNjaC1SZWNodCBpbSBDbGllbnQgKHp1ciBVSS1TdGV1ZXJ1bmcg4oCUIGRpZSBmaW5hbGUgUHJ1 ZWZ1bmcgcGFzc2llcnQKLy8gaW0gU2VydmVyKS4gU3VwZXJVc2VyIHVuZCBGYWNoYXVmc2ljaHQg bWl0IEdlc2FtdHZlcmFudHdvcnRsaWNoLUZsYWcuCmV4cG9ydCBmdW5jdGlvbiBkYXJmS29tbWVu dGFyTG9lc2NoZW4oKSB7CiAgICB2YXIgciA9IFoucmVjaHRlIHx8IHt9OwogICAgcmV0dXJuICEh KHIuaXN0U3VwZXJVc2VyIHx8IHIuaXN0R2VzYW10dmVyYW50d29ydGxpY2gpOwp9CgovLyBMaWVm ZXJ0IElNTUVSIGVpbiBBcnJheSB2b24geyBpZCwgdGV4dCwgZ2VhZW5kZXJ0QW0sIGdlYWVuZGVy dFZvbiB9IOKAlAovLyBtaWdyaWVydCBkaWUgZHJlaSBBbHQtRm9ybWF0ZSB0cmFuc3BhcmVudDoK Ly8gICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgIC0+IFt7IGlkOiAna19sZWdhY3lfKics IHRleHQsIHRzOm51bGwgfV0KLy8gICB7IHRleHQsIGdlYWVuZGVydEFtLCAuLi4gfSAgIC0+IFtl aW4gRWxlbWVudF0KLy8gICBbey4uLn0sey4uLn1dICAgICAgICAgICAgICAgIC0+IGRpcmVrdCB6 dXJ1ZWNrCi8vIFJlaWhlbmZvbGdlIGlzdCBjaHJvbm9sb2dpc2NoIChhZWx0ZXN0ZSB6dWVyc3Qp LCBzbyB3aWUgZGVyIFNlcnZlciBzcGVpY2hlcnQuCi8vIERlZmVuc2l2ZS1IaW53ZWlzIChTcHJp bnQgNyDigJQgMjAyNi0wNS0yOSwgRmluZGluZyAxNCk6Ci8vIE1hc3MtTWlncmF0aW9uIChzY3Jp cHRzL21pZ3JhdGVfa29tbWVudGFyZS5weSkgaGF0IGFsbGUgQmVzdGFlbmRlIGlucwovLyBBcnJh eS1TY2hlbWEgdWViZXJmdWVocnQuIEFsdC1Gb3JtYXRlIChTdHJpbmcsIFNpbmdsZS1PYmplY3Qt b2huZS1BcnJheSkKLy8gU09MTFRFTiBuaWNodCBtZWhyIGltIExpdmUtU3lzdGVtIGF1ZnRhdWNo ZW4uIFdlbm4gZG9jaCAoei5CLiBuYWNoIFJlc3RvcmUKLy8gYXVzIGFsdGVtIEJhY2t1cCk6IHdp cmQgZWlubWFsaWcgcHJvIFNlc3Npb24gdmlhIGNvbnNvbGUud2FybiBwcm90b2tvbGxpZXJ0Lgov LyBEaWUgQnJhbmNoZXMgYmxlaWJlbiBha3RpdiwgZGFtaXQgZWluIFJlc3RvcmUgZGllIEFuemVp Z2UgbmljaHQgemVyc3RvZXJ0IOKAlAovLyBhYmVyIGRlciBXYXJuLUxvZyBtYWNodCBrbGFyLCBk YXNzIG5hY2gtbWlncmllcnQgd2VyZGVuIHNvbGx0ZS4KdmFyIF9MRUdBQ1lfV0FSTl9HRVNFSEVO ID0gZmFsc2U7CmZ1bmN0aW9uIF9sZWdhY3lXYXJuKHR5cCkgewogICAgaWYgKF9MRUdBQ1lfV0FS Tl9HRVNFSEVOKSByZXR1cm47CiAgICBfTEVHQUNZX1dBUk5fR0VTRUhFTiA9IHRydWU7CiAgICBp ZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2FybikgewogICAg ICAgIGNvbnNvbGUud2FybignW1ZJM10gS29tbWVudGFyIGltIEFsdC1Gb3JtYXQgZ2VmdW5kZW4g KCcgKyB0eXAgKyAnKS4gJyArCiAgICAgICAgICAgICdXYWhyc2NoZWlubGljaCBhdXMgYWx0ZW0g QmFja3VwLVJlc3RvcmUuIEJpdHRlIGVpbm1hbGlnICcgKwogICAgICAgICAgICAnc2NyaXB0cy9t aWdyYXRlX2tvbW1lbnRhcmUucHkgbGF1ZmVuIGxhc3Nlbi4nKTsKICAgIH0KfQoKZXhwb3J0IGZ1 bmN0aW9uIGtvbW1lbnRhckxpc3RlKGspIHsKICAgIGlmICghaykgcmV0dXJuIFtdOwogICAgaWYg KHR5cGVvZiBrID09PSAnc3RyaW5nJykgewogICAgICAgIGlmICghay50cmltKCkpIHJldHVybiBb XTsKICAgICAgICBfbGVnYWN5V2FybignU3RyaW5nJyk7CiAgICAgICAgcmV0dXJuIFt7IGlkOiAn a19sZWdhY3knLCB0ZXh0OiBrLCBnZWFlbmRlcnRBbTogbnVsbCwgZ2VhZW5kZXJ0Vm9uOiBudWxs IH1dOwogICAgfQogICAgaWYgKEFycmF5LmlzQXJyYXkoaykpIHsKICAgICAgICByZXR1cm4gay5m aWx0ZXIoZnVuY3Rpb24oZSkgeyByZXR1cm4gZSAmJiAoZS50ZXh0IHx8ICcnKS50b1N0cmluZygp LnRyaW0oKTsgfSk7CiAgICB9CiAgICBpZiAoay50ZXh0KSB7CiAgICAgICAgX2xlZ2FjeVdhcm4o J1NpbmdsZS1PYmplY3QnKTsKICAgICAgICByZXR1cm4gW3sKICAgICAgICAgICAgaWQ6ICAgICAg ICAgICBrLmlkIHx8ICdrX2xlZ2FjeScsCiAgICAgICAgICAgIHRleHQ6ICAgICAgICAgay50ZXh0 LAogICAgICAgICAgICBnZWFlbmRlcnRBbTogIGsuZ2VhZW5kZXJ0QW0gfHwgbnVsbCwKICAgICAg ICAgICAgZ2VhZW5kZXJ0Vm9uOiBrLmdlYWVuZGVydFZvbiB8fCBudWxsCiAgICAgICAgfV07CiAg ICB9CiAgICByZXR1cm4gW107Cn0KCmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJBbnphaGwoaykg ewogICAgcmV0dXJuIGtvbW1lbnRhckxpc3RlKGspLmxlbmd0aDsKfQoKLy8gQmFja3dhcmRzLUNv bXBhdDogbGllZmVydCBkZW4gVEVYVCBkZXMganVlbmdzdGVuIEtvbW1lbnRhcnMgKG9kZXIgbGVl cikuCi8vIEJlc3RlaGVuZGUgQXVmcnVmZXIgKFdvY2hlbnBsYW4sIEJlc2V0enVuZykgYmVrb21t ZW4gZGFtaXQgd2VpdGVyaGluIGRlbgovLyAiYWt0dWVsbGVuIiBLb21tZW50YXIg4oCUIGZ1ZXIg ZGllIExpc3RlIGdpYnQgZXMga29tbWVudGFyTGlzdGUoKS4KZXhwb3J0IGZ1bmN0aW9uIGtvbW1l bnRhclRleHQoaykgewogICAgdmFyIGxpc3RlID0ga29tbWVudGFyTGlzdGUoayk7CiAgICBpZiAo bGlzdGUubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7CiAgICByZXR1cm4gbGlzdGVbbGlzdGUubGVu Z3RoIC0gMV0udGV4dCB8fCAnJzsKfQoKLy8gQmFja3dhcmRzLUNvbXBhdDogTWV0YSBkZXMganVl bmdzdGVuIEtvbW1lbnRhcnMuCmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJNZXRhKGspIHsKICAg IHZhciBsaXN0ZSA9IGtvbW1lbnRhckxpc3RlKGspOwogICAgaWYgKGxpc3RlLmxlbmd0aCA9PT0g MCkgcmV0dXJuIHsgdGV4dDogJycsIGdlYWVuZGVydEFtOiBudWxsLCBnZWFlbmRlcnRWb246IG51 bGwgfTsKICAgIHZhciBsZXR6dGVyID0gbGlzdGVbbGlzdGUubGVuZ3RoIC0gMV07CiAgICByZXR1 cm4gewogICAgICAgIHRleHQ6ICAgICAgICAgbGV0enRlci50ZXh0IHx8ICcnLAogICAgICAgIGdl YWVuZGVydEFtOiAgbGV0enRlci5nZWFlbmRlcnRBbSB8fCBudWxsLAogICAgICAgIGdlYWVuZGVy dFZvbjogbGV0enRlci5nZWFlbmRlcnRWb24gfHwgbnVsbAogICAgfTsKfQoKLy8gS29tcGFrdGUg TWV0YS1aZWlsZSBmdWVyIGRlbiBFZGl0b3I6ICJadWxldHp0IGdlYWVuZGVydDogMjIuMDQuMjAy NiAxOTo0MyDCtyBOVzEyMzQ1NiIKLy8gTGVlcmVyIFN0cmluZywgd2VubiBrZWluIERhdHVtc3N0 ZW1wZWwgdm9ybGllZ3QgKHouQi4gTWlncmF0aW9uIGF1cyBhbHRlbQovLyBTdHJpbmctRm9ybWF0 LCBkb3J0IGdpYnQgZXMga2VpbmUgSGlzdG9yaWUpLgpleHBvcnQgZnVuY3Rpb24ga29tbWVudGFy TWV0YVRleHQoaykgewogICAgaWYgKCFrIHx8IHR5cGVvZiBrID09PSAnc3RyaW5nJykgcmV0dXJu ICcnOwogICAgdmFyIG0gPSBrb21tZW50YXJNZXRhKGspOwogICAgaWYgKCFtLmdlYWVuZGVydEFt KSByZXR1cm4gJyc7CiAgICB2YXIgZCA9IG5ldyBEYXRlKG0uZ2VhZW5kZXJ0QW0pOwogICAgaWYg KGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuICcnOwogICAgdmFyIHBhZCA9IGZ1bmN0aW9uKG4p IHsgcmV0dXJuIChuIDwgMTAgPyAnMCcgOiAnJykgKyBuOyB9OwogICAgdmFyIGR0ID0gcGFkKGQu Z2V0RGF0ZSgpKSArICcuJyArIHBhZChkLmdldE1vbnRoKCkgKyAxKSArICcuJyArIGQuZ2V0RnVs bFllYXIoKSArCiAgICAgICAgICAgICAnICcgKyBwYWQoZC5nZXRIb3VycygpKSArICc6JyArIHBh ZChkLmdldE1pbnV0ZXMoKSk7CiAgICB2YXIgcyA9ICdadWxldHp0IGdlw6RuZGVydDogJyArIGR0 OwogICAgaWYgKG0uZ2VhZW5kZXJ0Vm9uKSBzICs9ICcgwrcgJyArIG0uZ2VhZW5kZXJ0Vm9uOwog ICAgcmV0dXJuIHM7Cn0KCi8vIExpZWZlcnQgZGVuIFRvb2x0aXAtU3VmZml4IGlua2wuIERhdHVt c3N0ZW1wZWwsIGZhbGxzIHZvcmhhbmRlbi4KLy8gV2lyZCBoZXV0ZSBudXIgbm9jaCB2b20gV29j aGVucGxhbi9Mb2didWNoIGdlbnV0enQg4oCUIGltIEhhdXB0LUdyaWQga29tbXQKLy8gZGFzIEhU TUwtUG9wb3ZlciAoa29tbWVudGFyUG9wb3ZlclplaWdlbikgenVtIEVpbnNhdHosIGRhcyBkZW4g VGV4dAovLyBzdHJ1a3R1cmllcnQgcmVuZGVydCBzdGF0dCBpaG4gaW4gZGFzIHRpdGxlLUF0dHJp YnV0IHp1IGtsYXRzY2hlbi4KZXhwb3J0IGZ1bmN0aW9uIGtvbW1lbnRhclRvb2x0aXAoaykgewog ICAgaWYgKCFrKSByZXR1cm4gJyc7CiAgICB2YXIgbSA9IGtvbW1lbnRhck1ldGEoayk7CiAgICBp ZiAoIW0udGV4dCkgcmV0dXJuICcnOwogICAgdmFyIHN1ZmZpeCA9ICcnOwogICAgaWYgKG0uZ2Vh ZW5kZXJ0QW0pIHsKICAgICAgICAvLyBJU08gLT4gIjIyLjA0LjIwMjYgMTk6NDMiIChsb2thbGUg RGFyc3RlbGx1bmcgb2huZSBTZWt1bmRlbikKICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKG0uZ2Vh ZW5kZXJ0QW0pOwogICAgICAgIGlmICghaXNOYU4oZC5nZXRUaW1lKCkpKSB7CiAgICAgICAgICAg IHZhciBwYWQgPSBmdW5jdGlvbihuKSB7IHJldHVybiAobiA8IDEwID8gJzAnIDogJycpICsgbjsg fTsKICAgICAgICAgICAgdmFyIGR0ID0gcGFkKGQuZ2V0RGF0ZSgpKSArICcuJyArIHBhZChkLmdl dE1vbnRoKCkgKyAxKSArICcuJyArIGQuZ2V0RnVsbFllYXIoKSArCiAgICAgICAgICAgICAgICAg ICAgICcgJyArIHBhZChkLmdldEhvdXJzKCkpICsgJzonICsgcGFkKGQuZ2V0TWludXRlcygpKTsK ICAgICAgICAgICAgc3VmZml4ID0gJyAoenVsZXR6dCBnZcOkbmRlcnQgYW0gJyArIGR0OwogICAg ICAgICAgICBpZiAobS5nZWFlbmRlcnRWb24pIHN1ZmZpeCArPSAnIGR1cmNoICcgKyBtLmdlYWVu ZGVydFZvbjsKICAgICAgICAgICAgc3VmZml4ICs9ICcpJzsKICAgICAgICB9CiAgICB9CiAgICBy ZXR1cm4gJ0tvbW1lbnRhcjogJyArIG0udGV4dCArIHN1ZmZpeDsKfQoKLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQovLyBLb21tZW50YXItUG9wb3ZlciAoSFRNTC1WYXJpYW50ZSBkZXMgZnJ1ZWhlcmVu IG5hdGl2ZSB0aXRsZS1TdWZmaXhlcykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTdHJ1a3R1 cmllcnRlcyBQb3BvdmVyIHN0YXR0IGVpbnplaWxpZ2VyIEJyb3dzZXItVG9vbHRpcC4gSG92ZXIg b2VmZm5ldAovLyBuYWNoIDI1MCBtcywgTW91c2UtTGVhdmUgc2NobGllc3N0IG5hY2ggMTUwIG1z IChnaWJ0IGRlbSBVc2VyIFplaXQsIHVlYmVyCi8vIGRhcyBQb3BvdmVyIHp1IGJld2VnZW4pLiBD b250YWluZXIgbGllZ3QgZmVzdCBpbiBpbmRleC5odG1sICgjdmkzLQovLyBrb21tZW50YXItcG9w b3ZlciksIHdpcmQgaGllciBudXIgYmVmdWVsbHQgKyBwb3NpdGlvbmllcnQuCi8vCi8vIFZlcmZh c3NlciB3aXJkIHVlYmVyIGFuemVpZ2VOYW1lRnVlcktlbm51bmcoKSBhdXMgY29yZV91dGlsIHp1 IGVpbmVtCi8vIGxlc2JhcmVuIE5hbWVuIGF1ZmdlbG9lc3QuIEJsZWlidCBkaWUgQXVmbG9lc3Vu ZyBsZWVyICh6LkIuIEV4Y2VsLUltcG9ydC0KLy8gTWFya2VyIHN0YXR0IE5XLUtlbm51bmcpLCB6 ZWlnZW4gd2lyIGRlbiBSb2h3ZXJ0LgoKdmFyIGtwX3plaWdlVGltZXIgPSBudWxsOwp2YXIga3Bf dmVyc3RlY2tUaW1lciA9IG51bGw7CgpmdW5jdGlvbiBrcF9mb3JtYXREYXR1bVplaXQoaXNvKSB7 CiAgICBpZiAoIWlzbykgcmV0dXJuICcnOwogICAgdmFyIGQgPSBuZXcgRGF0ZShpc28pOwogICAg aWYgKGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuICcnOwogICAgdmFyIHBhZCA9IGZ1bmN0aW9u KG4pIHsgcmV0dXJuIChuIDwgMTAgPyAnMCcgOiAnJykgKyBuOyB9OwogICAgcmV0dXJuIHBhZChk LmdldERhdGUoKSkgKyAnLicgKyBwYWQoZC5nZXRNb250aCgpICsgMSkgKyAnLicgKyBkLmdldEZ1 bGxZZWFyKCkgKwogICAgICAgICAgICcgwrcgJyArIHBhZChkLmdldEhvdXJzKCkpICsgJzonICsg cGFkKGQuZ2V0TWludXRlcygpKTsKfQoKZnVuY3Rpb24ga3BfZWludHJhZ0h0bWwoZWludHJhZykg ewogICAgaWYgKCFlaW50cmFnKSByZXR1cm4gJyc7CiAgICB2YXIgdGV4dCA9IGVzY2FwZUhUTUwo ZWludHJhZy50ZXh0IHx8ICcnKS5yZXBsYWNlKC9cbi9nLCAnPGJyPicpOwogICAgdmFyIGR0ID0g a3BfZm9ybWF0RGF0dW1aZWl0KGVpbnRyYWcuZ2VhZW5kZXJ0QW0pOwogICAgdmFyIHJvaFZlcmZh c3NlciA9IGVpbnRyYWcuZ2VhZW5kZXJ0Vm9uIHx8ICcnOwogICAgdmFyIG5hbWVBdWZnZWxvZXN0 ID0gcm9oVmVyZmFzc2VyID8gYW56ZWlnZU5hbWVGdWVyS2VubnVuZyhyb2hWZXJmYXNzZXIpIDog Jyc7CiAgICAvLyBXZW5uIEF1ZmxvZXN1bmcgPT0gUm9od2VydCAoa0t1cnotRmFsbGJhY2spLCBu aWNodCBkb3BwZWx0IHplaWdlbi4KICAgIHZhciB2ZXJmYXNzZXJBbnogPSBuYW1lQXVmZ2Vsb2Vz dCAmJiBuYW1lQXVmZ2Vsb2VzdC50b0xvd2VyQ2FzZSgpICE9PSByb2hWZXJmYXNzZXIudG9Mb3dl ckNhc2UoKS5zcGxpdCgnXFwnKS5wb3AoKQogICAgICAgID8gbmFtZUF1ZmdlbG9lc3QKICAgICAg ICA6IHJvaFZlcmZhc3NlcjsKICAgIHZhciBtZXRhID0gJyc7CiAgICBpZiAodmVyZmFzc2VyQW56 IHx8IGR0KSB7CiAgICAgICAgbWV0YSA9ICc8ZGl2IGNsYXNzPSJrcC1laW50cmFnLW1ldGEiPicg KwogICAgICAgICAgICAgICAgICAgICh2ZXJmYXNzZXJBbnogPyAnPHNwYW4gY2xhc3M9ImtwLWVp bnRyYWctYXV0b3IiIHRpdGxlPSInICsgZXNjYXBlSFRNTChyb2hWZXJmYXNzZXIpICsgJyI+JyAr IGVzY2FwZUhUTUwodmVyZmFzc2VyQW56KSArICc8L3NwYW4+JyA6ICcnKSArCiAgICAgICAgICAg ICAgICAgICAgKHZlcmZhc3NlckFueiAmJiBkdCA/ICc8c3BhbiBjbGFzcz0ia3AtZWludHJhZy10 cmVubmVyIj7Ctzwvc3Bhbj4nIDogJycpICsKICAgICAgICAgICAgICAgICAgICAoZHQgPyAnPHNw YW4gY2xhc3M9ImtwLWVpbnRyYWctemVpdCI+JyArIGVzY2FwZUhUTUwoZHQpICsgJzwvc3Bhbj4n IDogJycpICsKICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgfQogICAgcmV0dXJuICc8ZGl2 IGNsYXNzPSJrcC1laW50cmFnIj4nICsKICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJrcC1l aW50cmFnLXRleHQiPicgKyB0ZXh0ICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgbWV0YSAr CiAgICAgICAgICAgICc8L2Rpdj4nOwp9CgpmdW5jdGlvbiBrcF9odG1sKGRhdHVtLCBrKSB7CiAg ICB2YXIgbGlzdGUgPSBrb21tZW50YXJMaXN0ZShrKTsKICAgIGlmIChsaXN0ZS5sZW5ndGggPT09 IDApIHJldHVybiAnJzsKICAgIHZhciBkRGUgPSBkYXR1bUZvcm1hdERFKGRhdHVtKTsKICAgIHZh ciBuID0gbGlzdGUubGVuZ3RoOwogICAgdmFyIHRpdGVsID0gbiA9PT0gMSA/ICdLb21tZW50YXIn IDogJ0tvbW1lbnRhcmUgKCcgKyBuICsgJyknOwogICAgLy8gTmV1ZXN0ZSB6dWVyc3Qg4oCUIFNl cnZlciBzcGVpY2hlcnQgY2hyb25vbG9naXNjaCAoYWx0IC0+IG5ldSkuCiAgICB2YXIgYm9keSA9 ICcnOwogICAgZm9yICh2YXIgaSA9IGxpc3RlLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAg ICAgICAgYm9keSArPSBrcF9laW50cmFnSHRtbChsaXN0ZVtpXSk7CiAgICB9CiAgICByZXR1cm4g JzxkaXYgY2xhc3M9ImtwLWtvcGYiPicgKwogICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJr cC1rb3BmLXRpdGVsIj4nICsgZXNjYXBlSFRNTCh0aXRlbCkgKyAnPC9zcGFuPicgKwogICAgICAg ICAgICAgICAgJzxzcGFuIGNsYXNzPSJrcC1rb3BmLWRhdHVtIj4nICsgZXNjYXBlSFRNTChkRGUp ICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAnPGRpdiBj bGFzcz0ia3AtYm9keSBrcC1ib2R5LXN0YWNrIj4nICsgYm9keSArICc8L2Rpdj4nOwp9CgpmdW5j dGlvbiBrcF9wb3NpdGlvbmllcmVuKHBvcCwgYW5rZXIpIHsKICAgIHZhciBhciA9IGFua2VyLmdl dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHZ3ID0gd2luZG93LmlubmVyV2lkdGg7CiAg ICB2YXIgdmggPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICBwb3AuY2xhc3NMaXN0LnJlbW92ZSgn dmVyc3RlY2t0Jyk7CiAgICBwb3Auc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFy IHB3ID0gcG9wLm9mZnNldFdpZHRoOwogICAgdmFyIHBoID0gcG9wLm9mZnNldEhlaWdodDsKICAg IHZhciByYW5kID0gNjsKICAgIC8vIEJldm9yenVndCB1bnRlciBkZXIgWmVsbGUsIHNvbnN0IGRh cnVlYmVyLgogICAgdmFyIHRvcCA9IGFyLmJvdHRvbSArIHJhbmQ7CiAgICBpZiAodG9wICsgcGgg PiB2aCAtIDYpIHRvcCA9IGFyLnRvcCAtIHBoIC0gcmFuZDsKICAgIGlmICh0b3AgPCA2KSB0b3Ag PSA2OwogICAgLy8gSG9yaXpvbnRhbCBhbiBkZXIgbGlua2VuIFplbGxrYW50ZSBhdXNyaWNodGVu LCBhYmVyIG5pY2h0IHVlYmVyIGRlbgogICAgLy8gVmlld3BvcnQtUmFuZCByYWdlbiBsYXNzZW4u CiAgICB2YXIgbGVmdCA9IGFyLmxlZnQ7CiAgICBpZiAobGVmdCArIHB3ID4gdncgLSA2KSBsZWZ0 ID0gdncgLSBwdyAtIDY7CiAgICBpZiAobGVmdCA8IDYpIGxlZnQgPSA2OwogICAgcG9wLnN0eWxl LmxlZnQgPSBNYXRoLnJvdW5kKGxlZnQpICsgJ3B4JzsKICAgIHBvcC5zdHlsZS50b3AgID0gTWF0 aC5yb3VuZCh0b3ApICArICdweCc7CiAgICBwb3Auc3R5bGUudmlzaWJpbGl0eSA9ICcnOwp9Cgpl eHBvcnQgZnVuY3Rpb24ga29tbWVudGFyUG9wb3ZlclplaWdlbih6ZWxsZSkgewogICAgaWYgKCF6 ZWxsZSB8fCAhemVsbGUuY2xhc3NMaXN0IHx8ICF6ZWxsZS5jbGFzc0xpc3QuY29udGFpbnMoJ2hh dC1rb21tZW50YXInKSkgcmV0dXJuOwogICAgaWYgKGtwX3ZlcnN0ZWNrVGltZXIpIHsgY2xlYXJU aW1lb3V0KGtwX3ZlcnN0ZWNrVGltZXIpOyBrcF92ZXJzdGVja1RpbWVyID0gbnVsbDsgfQogICAg aWYgKGtwX3plaWdlVGltZXIpICAgIHsgY2xlYXJUaW1lb3V0KGtwX3plaWdlVGltZXIpOyBrcF96 ZWlnZVRpbWVyID0gbnVsbDsgfQogICAga3BfemVpZ2VUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rp b24oKSB7CiAgICAgICAga3BfemVpZ2VUaW1lciA9IG51bGw7CiAgICAgICAgdmFyIGRhdHVtID0g emVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLWRhdHVtJyk7CiAgICAgICAgdmFyIHBpZCAgID0gemVs bGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBlcnNvbicpOwogICAgICAgIGlmICghZGF0dW0gfHwgIXBp ZCkgcmV0dXJuOwogICAgICAgIHZhciBrID0ga29tbWVudGFyRWludHJhZyhkYXR1bSwgcGlkKTsK ICAgICAgICBpZiAoIWsgfHwgIWtvbW1lbnRhclRleHQoaykpIHJldHVybjsKICAgICAgICB2YXIg cG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpMy1rb21tZW50YXItcG9wb3ZlcicpOwog ICAgICAgIGlmICghcG9wKSByZXR1cm47CiAgICAgICAgcG9wLmlubmVySFRNTCA9IGtwX2h0bWwo ZGF0dW0sIGspOwogICAgICAgIHBvcC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNl Jyk7CiAgICAgICAga3BfcG9zaXRpb25pZXJlbihwb3AsIHplbGxlKTsKICAgIH0sIDI1MCk7Cn0K CmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJQb3BvdmVyVmVyc3RlY2tlbigpIHsKICAgIGlmIChr cF96ZWlnZVRpbWVyKSAgICB7IGNsZWFyVGltZW91dChrcF96ZWlnZVRpbWVyKTsga3BfemVpZ2VU aW1lciA9IG51bGw7IH0KICAgIGlmIChrcF92ZXJzdGVja1RpbWVyKSBjbGVhclRpbWVvdXQoa3Bf dmVyc3RlY2tUaW1lcik7CiAgICBrcF92ZXJzdGVja1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlv bigpIHsKICAgICAgICB2YXIgcG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpMy1rb21t ZW50YXItcG9wb3ZlcicpOwogICAgICAgIGlmIChwb3ApIHsKICAgICAgICAgICAgcG9wLmNsYXNz TGlzdC5hZGQoJ3ZlcnN0ZWNrdCcpOwogICAgICAgICAgICBwb3Auc2V0QXR0cmlidXRlKCdhcmlh LWhpZGRlbicsICd0cnVlJyk7CiAgICAgICAgfQogICAgfSwgMTUwKTsKfQoKLy8gV2lyZCB2b20g UG9wb3ZlciBzZWxic3QgKG1vdXNlZW50ZXIpIGdlcnVmZW4sIGRhbWl0IGVzIG9mZmVuIGJsZWli dAovLyBzb2xhbmdlIGRlciBVc2VyIG1pdCBkZXIgTWF1cyBkcnVlYmVyIGlzdC4KZXhwb3J0IGZ1 bmN0aW9uIGtvbW1lbnRhclBvcG92ZXJGZXN0aGFsdGVuKCkgewogICAgaWYgKGtwX3ZlcnN0ZWNr VGltZXIpIHsgY2xlYXJUaW1lb3V0KGtwX3ZlcnN0ZWNrVGltZXIpOyBrcF92ZXJzdGVja1RpbWVy ID0gbnVsbDsgfQp9CgpleHBvcnQgZnVuY3Rpb24ga29tbWVudGFyTGFkZW4oZGF0dW0sIHBlcnNv bklkKSB7CiAgICByZXR1cm4ga29tbWVudGFyVGV4dChrb21tZW50YXJFaW50cmFnKGRhdHVtLCBw ZXJzb25JZCkpOwp9CgovLyBIYWVuZ3QgZWluZW4gbmV1ZW4gS29tbWVudGFyIGFuLiBFcnNhdHog ZnVlciBkYXMgZnJ1ZWhlciB1ZWJlcnNjaHJlaWJlbmRlCi8vIGtvbW1lbnRhclNwZWljaGVybigp IOKAlCBhbHRlIEF1ZnJ1ZmVyLCBkaWUgZWluZW4gbGVlcmVuIFRleHQgdWViZXJnZWJlbiwKLy8g ZXJoYWx0ZW4gamV0enQgbnVyIGVpbiBuby1vcCAoTG9lc2NoZW4gZ2VodCB1ZWJlciBrb21tZW50 YXJMb2VzY2hlbikuCi8vIENhbGxiYWNrIGVyaGFlbHQgZGllIG5ldSB2ZXJnZWJlbmUgS29tbWVu dGFyLUlELCBzb2JhbGQgZGVyIFNlcnZlciBiZXN0YWV0aWd0LgpleHBvcnQgZnVuY3Rpb24ga29t bWVudGFySGluenVmdWVnZW4oZGF0dW0sIHBlcnNvbklkLCB0ZXh0LCBvbkZlcnRpZykgewogICAg dGV4dCA9ICh0ZXh0IHx8ICcnKS50cmltKCk7CiAgICBpZiAoIXRleHQpIHsKICAgICAgICBpZiAo dHlwZW9mIG9uRmVydGlnID09PSAnZnVuY3Rpb24nKSBvbkZlcnRpZyhudWxsKTsKICAgICAgICBy ZXR1cm47CiAgICB9CiAgICBpZiAoIVoucGxhbnVuZy5rb21tZW50YXJlKSBaLnBsYW51bmcua29t bWVudGFyZSA9IHt9OwogICAgaWYgKCFaLnBsYW51bmcua29tbWVudGFyZVtkYXR1bV0pIFoucGxh bnVuZy5rb21tZW50YXJlW2RhdHVtXSA9IHt9OwogICAgdmFyIHBpZFN0ciA9IFN0cmluZyhwZXJz b25JZCk7CiAgICAvLyBPcHRpbWlzdGlzY2ggbG9rYWwgYW5oYWVuZ2VuIOKAlCB0ZW1wb3JhZXJl IElELCB3aXJkIGR1cmNoIFNlcnZlci1JRCBlcnNldHp0LgogICAgdmFyIHRlbXBJZCA9ICdrX2xv a2FsXycgKyBEYXRlLm5vdygpICsgJ18nICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTk5 OTkpOwogICAgdmFyIGxpc3RlID0ga29tbWVudGFyTGlzdGUoWi5wbGFudW5nLmtvbW1lbnRhcmVb ZGF0dW1dW3BpZFN0cl0pLnNsaWNlKCk7CiAgICBsaXN0ZS5wdXNoKHsKICAgICAgICBpZDogICAg ICAgICAgIHRlbXBJZCwKICAgICAgICB0ZXh0OiAgICAgICAgIHRleHQsCiAgICAgICAgZ2VhZW5k ZXJ0QW06ICBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksCiAgICAgICAgZ2VhZW5kZXJ0Vm9uOiBa LmJlbnV0emVyIHx8ICcnCiAgICB9KTsKICAgIFoucGxhbnVuZy5rb21tZW50YXJlW2RhdHVtXVtw aWRTdHJdID0gbGlzdGU7CiAgICB2YXIgeiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncmlk LXplbGxlW2RhdGEtZGF0dW09IicgKyBkYXR1bSArICciXVtkYXRhLXBlcnNvbj0iJyArIHBpZFN0 ciArICciXScpOwogICAgaWYgKHopIHouY2xhc3NMaXN0LmFkZCgnaGF0LWtvbW1lbnRhcicpOwoK ICAgIGFwaVBvc3QoJy9hcGkvcGxhbnVuZy9rb21tZW50YXInLCB7IGRhdHVtOiBkYXR1bSwgcGVy c29uSWQ6IHBlcnNvbklkLCB0ZXh0OiB0ZXh0IH0pCiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVz KSB7CiAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmtvbW1lbnRhcklkKSB7CiAgICAgICAgICAg ICAgICAvLyBTZXJ2ZXItU3RhbmQgdWViZXJuZWhtZW46IElEICsgU2VydmVyLVplaXRzdGVtcGVs IGVyc2V0emVuCiAgICAgICAgICAgICAgICAvLyBkZW4gb3B0aW1pc3Rpc2NoZW4gRWludHJhZyAo Z2xlaWNoZXIgVGV4dCwgbmV1ZXJlIFdlcnRlKS4KICAgICAgICAgICAgICAgIHZhciBha3R1ZWxs ID0ga29tbWVudGFyTGlzdGUoWi5wbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3BpZFN0cl0pLnNs aWNlKCk7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gYWt0dWVsbC5sZW5ndGggLSAxOyBp ID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgICAgIGlmIChha3R1ZWxsW2ldLmlkID09PSB0 ZW1wSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWt0dWVsbFtpXSA9IHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlkOiAgICAgICAgICAgcmVzLmtvbW1lbnRhcklkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGV4dDogICAgICAgICB0ZXh0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2VhZW5kZXJ0QW06ICByZXMuZ2VhZW5kZXJ0QW0gfHwgYWt0dWVsbFtpXS5n ZWFlbmRlcnRBbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlYWVuZGVydFZvbjogcmVz LmdlYWVuZGVydFZvbiB8fCBha3R1ZWxsW2ldLmdlYWVuZGVydFZvbgogICAgICAgICAgICAgICAg ICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg ICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBaLnBsYW51bmcua29tbWVu dGFyZVtkYXR1bV1bcGlkU3RyXSA9IGFrdHVlbGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg dG9hc3QoJ0tvbW1lbnRhciBoaW56dWdlZsO8Z3QnLCAnZXJmb2xnJyk7CiAgICAgICAgICAgIGlm ICh0eXBlb2Ygb25GZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKHJlcyAmJiByZXMua29t bWVudGFySWQgfHwgbnVsbCk7CiAgICAgICAgfSkKICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZSkg ewogICAgICAgICAgICAvLyBPcHRpbWlzdGlzY2hlbiBFaW50cmFnIHp1cnVlY2tuZWhtZW4sIGRh bWl0IGxva2FsZXIgU3RhbmQgbmljaHQKICAgICAgICAgICAgLy8gZGF1ZXJoYWZ0IG1pdCBlaW5l bSBuaWNodC1wZXJzaXN0aWVydGVuIEtvbW1lbnRhciBsZWJ0LgogICAgICAgICAgICB2YXIgYWt0 dWVsbCA9IGtvbW1lbnRhckxpc3RlKFoucGxhbnVuZy5rb21tZW50YXJlW2RhdHVtXVtwaWRTdHJd KQogICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbihrKSB7IHJldHVybiBrLmlkICE9PSB0 ZW1wSWQ7IH0pOwogICAgICAgICAgICBpZiAoYWt0dWVsbC5sZW5ndGgpIHsKICAgICAgICAgICAg ICAgIFoucGxhbnVuZy5rb21tZW50YXJlW2RhdHVtXVtwaWRTdHJdID0gYWt0dWVsbDsKICAgICAg ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSBaLnBsYW51bmcua29tbWVudGFy ZVtkYXR1bV1bcGlkU3RyXTsKICAgICAgICAgICAgICAgIGlmICh6KSB6LmNsYXNzTGlzdC5yZW1v dmUoJ2hhdC1rb21tZW50YXInKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0b2FzdCgnRmVo bGVyOiAnICsgZS5tZXNzYWdlLCAnZmVobGVyJyk7CiAgICAgICAgICAgIGlmICh0eXBlb2Ygb25G ZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKG51bGwpOwogICAgICAgIH0pOwp9CgovLyBM b2VzY2h0IGVpbmVuIGVpbnplbG5lbiBLb21tZW50YXIgYXVzIGRlciBMaXN0ZS4gQmVyZWNodGln dW5nIHdpcmQKLy8gc2VydmVyc2VpdGlnIGdlZ2VuIGlzdFN1cGVyVXNlciArIGlzdEdlc2FtdHZl cmFudHdvcnRsaWNoIGdlcHJ1ZWZ0IOKAlAovLyBoaWVyIG51ciBvcHRpbWlzdGlzY2hlIGxva2Fs ZSBFbnRmZXJudW5nIG1pdCBSb2xsYmFjayBiZWkgRmVobGVyLgpleHBvcnQgZnVuY3Rpb24ga29t bWVudGFyTG9lc2NoZW4oZGF0dW0sIHBlcnNvbklkLCBrb21tZW50YXJJZCwgb25GZXJ0aWcpIHsK ICAgIHZhciBwaWRTdHIgPSBTdHJpbmcocGVyc29uSWQpOwogICAgdmFyIHZvcmggPSBaLnBsYW51 bmcua29tbWVudGFyZSAmJiBaLnBsYW51bmcua29tbWVudGFyZVtkYXR1bV0gJiYgWi5wbGFudW5n LmtvbW1lbnRhcmVbZGF0dW1dW3BpZFN0cl07CiAgICB2YXIgbGlzdGVWb3JoZXIgPSBrb21tZW50 YXJMaXN0ZSh2b3JoKTsKICAgIHZhciBsaXN0ZU5hY2hoZXIgPSBsaXN0ZVZvcmhlci5maWx0ZXIo ZnVuY3Rpb24oaykgeyByZXR1cm4gay5pZCAhPT0ga29tbWVudGFySWQ7IH0pOwogICAgaWYgKGxp c3RlTmFjaGhlci5sZW5ndGggPT09IGxpc3RlVm9yaGVyLmxlbmd0aCkgewogICAgICAgIHRvYXN0 KCdLb21tZW50YXIgbG9rYWwgbmljaHQgZ2VmdW5kZW4nLCAnd2FybnVuZycpOwogICAgICAgIGlm ICh0eXBlb2Ygb25GZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKGZhbHNlKTsKICAgICAg ICByZXR1cm47CiAgICB9CiAgICAvLyBPcHRpbWlzdGlzY2ggbG9rYWwgZW50ZmVybmVuCiAgICBp ZiAobGlzdGVOYWNoaGVyLmxlbmd0aCkgewogICAgICAgIFoucGxhbnVuZy5rb21tZW50YXJlW2Rh dHVtXVtwaWRTdHJdID0gbGlzdGVOYWNoaGVyOwogICAgfSBlbHNlIHsKICAgICAgICBkZWxldGUg Wi5wbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dW3BpZFN0cl07CiAgICAgICAgdmFyIHogPSBkb2N1 bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgZGF0dW0gKyAn Il1bZGF0YS1wZXJzb249IicgKyBwaWRTdHIgKyAnIl0nKTsKICAgICAgICBpZiAoeikgei5jbGFz c0xpc3QucmVtb3ZlKCdoYXQta29tbWVudGFyJyk7CiAgICB9CiAgICAvLyBERUxFVEUgbWl0IEJv ZHkg4oCUIGFwaURlbGV0ZSBpbSBjb3JlX2FwaSBoYXQga2VpbmVuIEJvZHktUGFyYW1ldGVyLAog ICAgLy8gZGFoZXIgZGlyZWt0ZXIgYXBpKCktQXVmcnVmLgogICAgYXBpKCcvYXBpL3BsYW51bmcv a29tbWVudGFyJywgewogICAgICAgIG1ldGhvZDogICdERUxFVEUnLAogICAgICAgIGhlYWRlcnM6 IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LAogICAgICAgIGJvZHk6ICAg IEpTT04uc3RyaW5naWZ5KHsgZGF0dW06IGRhdHVtLCBwZXJzb25JZDogcGVyc29uSWQsIGtvbW1l bnRhcklkOiBrb21tZW50YXJJZCB9KQogICAgfSkKICAgICAgICAudGhlbihmdW5jdGlvbigpIHsK ICAgICAgICAgICAgdG9hc3QoJ0tvbW1lbnRhciBnZWzDtnNjaHQnLCAnZXJmb2xnJyk7CiAgICAg ICAgICAgIGlmICh0eXBlb2Ygb25GZXJ0aWcgPT09ICdmdW5jdGlvbicpIG9uRmVydGlnKHRydWUp OwogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgLy8g Um9sbGJhY2sKICAgICAgICAgICAgWi5wbGFudW5nLmtvbW1lbnRhcmVbZGF0dW1dID0gWi5wbGFu dW5nLmtvbW1lbnRhcmVbZGF0dW1dIHx8IHt9OwogICAgICAgICAgICBaLnBsYW51bmcua29tbWVu dGFyZVtkYXR1bV1bcGlkU3RyXSA9IGxpc3RlVm9yaGVyOwogICAgICAgICAgICB2YXIgejIgPSBk b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgZGF0dW0g KyAnIl1bZGF0YS1wZXJzb249IicgKyBwaWRTdHIgKyAnIl0nKTsKICAgICAgICAgICAgaWYgKHoy KSB6Mi5jbGFzc0xpc3QuYWRkKCdoYXQta29tbWVudGFyJyk7CiAgICAgICAgICAgIHRvYXN0KCdM w7ZzY2hlbiBmZWhsZ2VzY2hsYWdlbjogJyArIGUubWVzc2FnZSwgJ2ZlaGxlcicpOwogICAgICAg ICAgICBpZiAodHlwZW9mIG9uRmVydGlnID09PSAnZnVuY3Rpb24nKSBvbkZlcnRpZyhmYWxzZSk7 CiAgICAgICAgfSk7Cn0KCi8vIExlZ2FjeS1XcmFwcGVyOiBmYWVsbHQgYXVmIEhpbnp1ZnVlZ2Vu IC8gTG9lc2NoZW4tYWxsZXIgenVydWVjay4gTnVyIGZ1ZXIKLy8gQXVmcnVmZXIsIGRpZSBub2No IG5pY2h0IGF1ZiBkaWUgbmV1ZW4gRnVua3Rpb25lbiB1bWdlc3RlbGx0IHNpbmQgKHouQi4KLy8g YWx0ZSBCdWxrLU9wZXJhdGlvbmVuKS4gTmV1ZXIgQ29kZSBudXR6dCBrb21tZW50YXJIaW56dWZ1 ZWdlbiBkaXJla3QuCmV4cG9ydCBmdW5jdGlvbiBrb21tZW50YXJTcGVpY2hlcm4oZGF0dW0sIHBl cnNvbklkLCB0ZXh0KSB7CiAgICB0ZXh0ID0gKHRleHQgfHwgJycpLnRyaW0oKTsKICAgIGlmICh0 ZXh0KSB7CiAgICAgICAga29tbWVudGFySGluenVmdWVnZW4oZGF0dW0sIHBlcnNvbklkLCB0ZXh0 KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gTGVlcmVyIFRleHQgdm9tIExlZ2FjeS1FZGl0b3Ig aGVpc3N0OiBhbGxlcyBsb2VzY2hlbi4gV2lyIGxvZXNjaGVuCiAgICAgICAgLy8gZGVuIGp1ZW5n c3RlbiBLb21tZW50YXIgKGRpZSBBdXN3aXJrdW5nIGlzdCBkaWUgZ2xlaWNoZSB3aWUgZnJ1ZWhl ciwKICAgICAgICAvLyB3ZW5uIG51ciBlaW5lciBleGlzdGllcnQ7IGJlaSBtZWhyZXJlbiBibGVp YnQgZGVyIFZlcmxhdWYgZXJoYWx0ZW4pLgogICAgICAgIHZhciBsaXN0ZSA9IGtvbW1lbnRhckxp c3RlKGtvbW1lbnRhckVpbnRyYWcoZGF0dW0sIHBlcnNvbklkKSk7CiAgICAgICAgaWYgKGxpc3Rl Lmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAgIGtvbW1lbnRhckxvZXNjaGVuKGRhdHVtLCBw ZXJzb25JZCwgbGlzdGVbbGlzdGUubGVuZ3RoIC0gMV0uaWQpOwogICAgfQp9CgpleHBvcnQgZnVu Y3Rpb24ga29tbWVudGFyZUltR3JpZEFuemVpZ2VuKCkgewogICAgdmFyIGtvbW1lbnRhcmUgPSBa LnBsYW51bmcua29tbWVudGFyZSB8fCB7fTsKICAgIE9iamVjdC5rZXlzKGtvbW1lbnRhcmUpLmZv ckVhY2goZnVuY3Rpb24oZGF0dW0pIHsKICAgICAgICB2YXIgdGFnS29tbSA9IGtvbW1lbnRhcmVb ZGF0dW1dOwogICAgICAgIE9iamVjdC5rZXlzKHRhZ0tvbW0pLmZvckVhY2goZnVuY3Rpb24ocGlk KSB7CiAgICAgICAgICAgIHZhciBhbnphaGwgPSBrb21tZW50YXJBbnphaGwodGFnS29tbVtwaWRd KTsKICAgICAgICAgICAgaWYgKGFuemFobCA9PT0gMCkgcmV0dXJuOwogICAgICAgICAgICB2YXIg eiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncmlkLXplbGxlW2RhdGEtZGF0dW09IicgKyBk YXR1bSArICciXVtkYXRhLXBlcnNvbj0iJyArIHBpZCArICciXScpOwogICAgICAgICAgICBpZiAo IXopIHJldHVybjsKICAgICAgICAgICAgei5jbGFzc0xpc3QuYWRkKCdoYXQta29tbWVudGFyJyk7 CiAgICAgICAgICAgIC8vIENvdW50ZXItQXR0cmlidXQgc3RldWVydCBkZW4gTXVsdGktS29tbWVu dGFyLUluZGlrYXRvciBpbSBDU1MKICAgICAgICAgICAgLy8gKGRhdGEta29tbWVudGFyLWFuemFo bD0yLi5OIC0+IHp1c2FldHpsaWNoZXMgQmFkZ2UgbWl0IFphaGwpLgogICAgICAgICAgICAvLyBC ZWkgMSBLb21tZW50YXIgYmxlaWJ0IG51ciBkZXIgc2NobGljaHRlIEVjay1EcmVpZWNrLU1hcmtl ci4KICAgICAgICAgICAgaWYgKGFuemFobCA+IDEpIHsKICAgICAgICAgICAgICAgIHouc2V0QXR0 cmlidXRlKCdkYXRhLWtvbW1lbnRhci1hbnphaGwnLCBTdHJpbmcoYW56YWhsKSk7CiAgICAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB6LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1rb21t ZW50YXItYW56YWhsJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gS2VpbiB0aXRsZS1T dWZmaXggbWVociDigJQgZGFzIEhUTUwtUG9wb3ZlciAoa29tbWVudGFyUG9wb3ZlclplaWdlbikK ICAgICAgICAgICAgLy8gcmVuZGVydCBiZWltIEhvdmVyIGRlbiB2b2xsc3RhZW5kaWdlbiBJbmhh bHQuIE5hdGl2ZSB0aXRsZSBibGVpYnQKICAgICAgICAgICAgLy8gZGFtaXQgZnVlciBTY2hpY2h0 Y29kZS9Mb2NrL1ZlcmZ1ZWdiYXJrZWl0IHJlc2VydmllcnQuCiAgICAgICAgfSk7CiAgICB9KTsK fQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGSUxMLUhBTkRMRSAoRXhjZWwtYWVobmxpY2hl ciBGdWVsbC1HcmlmZiBmdWVyIFBsYW5ndW5ncy1aZWxsZW4pCi8vCi8vIE5hY2ggZGVtIFNwZWlj aGVybiBlaW5lcyBTY2hpY2h0d2VydHMgZXJzY2hlaW50IHVudGVuIHJlY2h0cyBhbiBkZXIKLy8g UXVlbGwtWmVsbGUgZWluIGtsZWluZXMgYmxhdWVzIFF1YWRyYXQuIE1pdCBnZWRydWVja3RlciBN YXVzdGFzdGUgbmFjaAovLyByZWNodHMgb2RlciBsaW5rcyB6aWVoZW4gLT4gZGVyIFdlcnQgd2ly ZCBhdWYgZGllIHVlYmVyc3RyaWNoZW5lbiBUYWdlCi8vIGRlcnNlbGJlbiBQZXJzb24gdWViZXJ0 cmFnZW4gKGdlbmF1IHdpZSBkYXMgRXhjZWwtRnVlbGxrYWVzdGNoZW4pLgovLwovLyBQZXJtaXNz aW9uLUNoZWNrIGplIFppZWwtWmVsbGUgdWViZXIgZGFyZlplbGxlRWRpdGllcmVuIC0tIGdlc3Bl cnJ0ZQovLyBaZWxsZW4gd2VyZGVuIHVlYmVyc3BydW5nZW4sIG5pY2h0IGdlZnVlbGx0LiBEaWUg ZWlnZW50bGljaGUgU2NocmVpYi0KLy8gb3BlcmF0aW9uIGxhZXVmdCBhbHMgZWluIGVpbnppZ2Vy IEJ1bGstUE9TVCBhbiAvYXBpL3BsYW51bmcvemVsbGVuLWJ1bGsKLy8gLS0gZWluIEhUVFAtUm91 bmR0cmlwICsgZWluIERhdGVpLVNjaHJlaWJ2b3JnYW5nIGZ1ZXIgZGVuIGdhbnplbiBEcmFnLgov LyBPcHRpbWlzdGlzY2hlcyBsb2thbGVzIFVwZGF0ZSArIFJvbGxiYWNrIGJlaSBTZXJ2ZXItRmVo bGVyIG9kZXIgcGVyLQovLyBaZWxsZS1QZXJtaXNzaW9uLUFibGVobnVuZy4KLy8gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQoKdmFyIGZ1ZWxsID0geyBxdWVsbGU6IG51bGwsIGFrdGl2OiBmYWxzZSwgemll bGU6IFtdIH07CgovLyBTcHJpbnQgRC0xICgyMDI2LTA1LTI5KTogRWlubWFsaWdlciBEaXNjb3Zl cnktSGludCBmdWVyIGRlbiBGaWxsLUhhbmRsZS4KLy8gVXNlciB3aXNzZW4gb2Z0IG5pY2h0LCBk YXNzIGRhcyBrbGVpbmUgUXVhZHJhdCB1bnRlbiByZWNodHMgaW4gZGVyIGFrdGl2ZW4KLy8gWmVs bGUgRXhjZWwtYWVobmxpY2hlIERyYWctRmlsbC1GdW5rdGlvbmFsaXRhZXQgYmlldGV0LiBCZWlt IGVyc3RlbiBNYWwKLy8gemVpZ2VuIHdpciBlaW5lbiBUaXBwLVRvYXN0LCBkYW5hY2ggbmllIHdp ZWRlciAobG9jYWxTdG9yYWdlLUZsYWcpLgovLyAudjI6IFRpcHAtVGV4dCB3dXJkZSBrb3JyaWdp ZXJ0IChudXIgbGlua3MvcmVjaHRzKSDigJQgS2V5IGdlYnVtcHQsIGRhbWl0IGRlcgovLyBuZXVl IEhpbndlaXMgYXVjaCBOdXR6ZXJuLCBkaWUgZGVuIGFsdGVuIGdlc2VoZW4gaGFiZW4sIGVpbm1h bGlnIGVyc2NoZWludC4KdmFyIEZJTExfSElOVF9MU19LRVkgPSAndmkzLmZpbGxIYW5kbGVIaW50 R2VzZWhlbi52Mic7CmZ1bmN0aW9uIGZ1ZWxsSGludEVpbm1hbGlnWmVpZ2VuKCkgewogICAgdHJ5 IHsKICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oRklMTF9ISU5UX0xTX0tFWSkgPT09 ICcxJykgcmV0dXJuOwogICAgICAgIHRvYXN0KCdUaXBwOiBEYXMga2xlaW5lIFF1YWRyYXQgdW50 ZW4gcmVjaHRzIGluIGRlciBaZWxsZSBrYW5uc3QgZHUgbmFjaCBsaW5rcyBvZGVyIHJlY2h0cyB6 aWVoZW4g4oCUIGRlciBXZXJ0IHdpcmQgYXVmIGFsbGUgWmVsbGVuIGluIGRlcnNlbGJlbiBaZWls ZSB1ZWJlcnRyYWdlbi4gKE51ciBpbm5lcmhhbGIgZGVyIGVpZ2VuZW4gWmVpbGUsIGtlaW4gQXVz ZnVlbGxlbiBuYWNoIG9iZW4vdW50ZW4uKScsICdpbmZvJywgeyBkYXVlcjogMTAwMDAgfSk7CiAg ICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oRklMTF9ISU5UX0xTX0tFWSwgJzEnKTsKICAgIH0g Y2F0Y2ggKF8pIHsgLyogbG9jYWxTdG9yYWdlIGthbm4gYmxvY2tpZXJ0IHNlaW4sIGRhbm4gZWJl biBrZWluIEhpbnQgKi8gfQp9CgpleHBvcnQgZnVuY3Rpb24gZnVlbGxIYW5kbGVaZWlnZW4ocXVl bGxlKSB7CiAgICAvLyBxdWVsbGUgPSB7IGRhdHVtLCBwaWQsIHdlcnQgfQogICAgZnVlbGxIYW5k bGVWZXJzdGVja2VuKCk7CiAgICBmdWVsbC5xdWVsbGUgPSBxdWVsbGU7CiAgICBmdWVsbEhpbnRF aW5tYWxpZ1plaWdlbigpOwogICAgLy8gSGF1cHQtU2VsZWt0b3IgKHplaWxlLWdlYnVuZGVuKSAr IEZhbGxiYWNrICh6ZWxsZSBkaXJla3QpIOKAlCBaZWxsZW4KICAgIC8vIHRyYWdlbiBzb3dvaGwg ZGF0YS1kYXR1bSBhbHMgYXVjaCBkYXRhLXBlcnNvbiwgZGVyIEZhbGxiYWNrIGdyZWlmdAogICAg Ly8gZmFsbHMgZGllIGdyaWQtemVpbGUtV3JhcHBlci1TdHJ1a3R1ciBzaWNoIGFlbmRlcnQuCiAg ICB2YXIgcXVlbGxaZWxsZSA9CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2dyaWQt ZGF0ZW4gLmdyaWQtemVpbGVbZGF0YS1wZXJzb24taWQ9IicgKyBxdWVsbGUucGlkICsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICciXSAuZ3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsg cXVlbGxlLmRhdHVtICsgJyJdJykgfHwKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcu Z3JpZC16ZWxsZVtkYXRhLWRhdHVtPSInICsgcXVlbGxlLmRhdHVtICsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICciXVtkYXRhLXBlcnNvbj0iJyArIHF1ZWxsZS5waWQgKyAnIl0nKTsK ICAgIGlmICghcXVlbGxaZWxsZSkgcmV0dXJuOwogICAgcXVlbGxaZWxsZS5jbGFzc0xpc3QuYWRk KCdncmlkLXplbGxlLWZpbGwtc291cmNlJyk7CiAgICB2YXIgaCA9IGRvY3VtZW50LmdldEVsZW1l bnRCeUlkKCdmaWxsLWhhbmRsZScpOwogICAgaWYgKCFoKSB7CiAgICAgICAgaCA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGguaWQgPSAnZmlsbC1oYW5kbGUnOwogICAg ICAgIGgudGl0bGUgPSAnWmllaGVuLCB1bSBkZW4gV2VydCBhdWYgd2VpdGVyZSBUYWdlIGluIGRp ZXNlciBaZWlsZSB6dSDDvGJlcnRyYWdlbic7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD aGlsZChoKTsKICAgICAgICBoLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1ZWxsU3Rh cnQpOwogICAgfQogICAgLy8gSGFuZGxlIHZvbGxzdGFlbmRpZyBJTk5FUkhBTEIgZGVyIFplbGxl IGluIGRlciB1bnRlcmVuIHJlY2h0ZW4gRWNrZQogICAgLy8gcGxhdHppZXJlbiAoOHg4cHggSWNv biArIDFweCBSYW5kIHp1bSBaZWxscmFuZCkuIFdlcnRlIG11ZXNzZW4gbWl0CiAgICAvLyBDU1Mt R3JvZXNzZSAjZmlsbC1oYW5kbGUgaW4gc3R5bGUuY3NzIHp1c2FtbWVucGFzc2VuLgogICAgdmFy IHIgPSBxdWVsbFplbGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgaC5zdHlsZS5sZWZ0 ID0gKHIucmlnaHQgLSA5KSArICdweCc7CiAgICBoLnN0eWxlLnRvcCAgPSAoci5ib3R0b20gLSA5 KSArICdweCc7CiAgICBoLnN0eWxlLmRpc3BsYXkgPSAnJzsKfQoKLy8gQW5rZXJwdW5rdCBmdWVy IGRlbiBTaW5nbGUtQ2xpY2sgYXVmIGVpbmUgWmVsbGU6IGxpZXN0IGRhdHVtL3BpZC93ZXJ0Ci8v IGRpcmVrdCBhdXMgZGVtIERPTS1FbGVtZW50IHVuZCBwb3NpdGlvbmllcnQgZGFzIEhhbmRsZSBk b3J0LiBTbwovLyBlcnNjaGVpbnQgZGFzIFF1YWRyYXQgZGF1ZXJoYWZ0IGFuIGRlciB6dWxldHp0 IGFrdGl2aWVydGVuIFplbGxlIOKAlAovLyBhbmFsb2cgenVyICJha3RpdmVuIFplbGxlIiBpbiBF eGNlbC4KZXhwb3J0IGZ1bmN0aW9uIGZ1ZWxsSGFuZGxlQW5aZWxsZSh6ZWxsZSkgewogICAgaWYg KCF6ZWxsZSB8fCAhemVsbGUuY2xhc3NMaXN0IHx8ICF6ZWxsZS5jbGFzc0xpc3QuY29udGFpbnMo J2dyaWQtemVsbGUnKSkgcmV0dXJuOwogICAgdmFyIGRhdHVtID0gemVsbGUuZ2V0QXR0cmlidXRl KCdkYXRhLWRhdHVtJyk7CiAgICB2YXIgcGlkID0gemVsbGUuZ2V0QXR0cmlidXRlKCdkYXRhLXBl cnNvbicpOwogICAgaWYgKCFkYXR1bSB8fCAhcGlkKSByZXR1cm47CiAgICB2YXIgd2VydCA9ICgo Wi5wbGFudW5nLmVpbnRyYWVnZSB8fCB7fSlbZGF0dW1dIHx8IHt9KVtwaWRdIHx8ICcnOwogICAg ZnVlbGxIYW5kbGVaZWlnZW4oeyBkYXR1bTogZGF0dW0sIHBpZDogcGlkLCB3ZXJ0OiB3ZXJ0IH0p Owp9CgpleHBvcnQgZnVuY3Rpb24gZnVlbGxIYW5kbGVWZXJzdGVja2VuKCkgewogICAgdmFyIGgg PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsbC1oYW5kbGUnKTsKICAgIGlmIChoKSBoLnN0 eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3Jp ZC16ZWxsZS1maWxsLXRhcmdldCwuZ3JpZC16ZWxsZS1maWxsLXNvdXJjZScpCiAgICAgICAgLmZv ckVhY2goZnVuY3Rpb24oZWwpIHsgZWwuY2xhc3NMaXN0LnJlbW92ZSgnZ3JpZC16ZWxsZS1maWxs LXRhcmdldCcsJ2dyaWQtemVsbGUtZmlsbC1zb3VyY2UnKTsgfSk7CiAgICBmdWVsbC5xdWVsbGUg PSBudWxsOwogICAgZnVlbGwuYWt0aXYgPSBmYWxzZTsKICAgIGZ1ZWxsLnppZWxlID0gW107Cn0K Ci8vIEV4dGVybmVyIExlc2UtSGVscGVyOiBsYWV1ZnQgZ2VyYWRlIGVpbiBEcmFnLVZvcmdhbmc/ IFdpcmQgdm9tIEhvdmVyLQovLyBIYW5kbGVyIGluIGFwcC5qcyBnZXBydWVmdCwgZGFtaXQgZGFz IFZlcmxhc3NlbiBkZXMgR3JpZCB3YWVocmVuZCBlaW5lcwovLyBEcmFncyBuaWNodCBkYXMgSGFu ZGxlIHZlcnN0ZWNrdCB1bmQgZGVuIERyYWcgYWJicmljaHQuCmV4cG9ydCBmdW5jdGlvbiBmdWVs bElzdEFrdGl2KCkgeyByZXR1cm4gZnVlbGwuYWt0aXY7IH0KCmZ1bmN0aW9uIGZ1ZWxsU3RhcnQo ZSkgewogICAgaWYgKCFmdWVsbC5xdWVsbGUpIHJldHVybjsKICAgIGUucHJldmVudERlZmF1bHQo KTsKICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICBmdWVsbC5ha3RpdiA9IHRydWU7CiAgICBm dWVsbC56aWVsZSA9IFtdOwogICAgLy8gV2FlaHJlbmQgZGVzIERyYWdzIEhhbmRsZSBkdXJjaGts aWNrYmFyIG1hY2hlbiDigJQgc29uc3QgbGllZmVydAogICAgLy8gZWxlbWVudEZyb21Qb2ludCBk YXMgSGFuZGxlIHN0YXR0IGRpZSBaZWxsZSBkYXJ1bnRlciwgdW5kIGRlciBEcmFnCiAgICAvLyB2 ZXJmZWhsdCBkYXMgWmllbC4KICAgIHZhciBoID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zp bGwtaGFuZGxlJyk7CiAgICBpZiAoaCkgaC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOwog ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVlbGxNb3ZlKTsKICAg IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBmdWVsbEVuZCk7CiAgICBkb2N1 bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdjcm9zc2hhaXInOwp9CgpmdW5jdGlvbiBmdWVsbE1v dmUoZSkgewogICAgaWYgKCFmdWVsbC5ha3RpdikgcmV0dXJuOwogICAgdmFyIHppZWwgPSBkb2N1 bWVudC5lbGVtZW50RnJvbVBvaW50KGUuY2xpZW50WCwgZS5jbGllbnRZKTsKICAgIGlmICghemll bCkgcmV0dXJuOwogICAgLy8gRGVmZW5zaXZlOiBmYWxscyBhdXMgaXJnZW5kZWluZW0gR3J1bmQg ZGFzIEhhbmRsZSBkb2NoIGltIFdlZyBpc3QKICAgIGlmICh6aWVsLmlkID09PSAnZmlsbC1oYW5k bGUnKSByZXR1cm47CiAgICB2YXIgemVsbGUgPSB6aWVsLmNsb3Nlc3QgJiYgemllbC5jbG9zZXN0 KCcuZ3JpZC16ZWxsZScpOwogICAgaWYgKCF6ZWxsZSkgcmV0dXJuOwogICAgLy8gTlVSIGhvcml6 b250YWwgaW4gZGVyIEVJR0VORU4gWmVpbGU6IGRlciBDdXJzb3IgYmVzdGltbXQgYWxsZWluIGRp ZQogICAgLy8gU1BBTFRFIChEYXR1bSk7IGRpZSBaZWlsZSAoUGVyc29uKSBibGVpYnQgSU1NRVIg ZGllIFF1ZWxsLVplaWxlLiBEYW1pdAogICAgLy8gZ2lidCBlcyBrZWluIEVyd2VpdGVybiBuYWNo IG9iZW4vdW50ZW4g4oCUIGF1Y2ggd2VubiBkZXIgQ3Vyc29yIHZlcnRpa2FsCiAgICAvLyBhYmRy aWZ0ZXQsIGZvbGd0IGRlciBGaWxsIG51ciBkZXIgU3BhbHRlIGluIGRlciBBdXNnYW5nc3plaWxl ICh3aWUgZGVyCiAgICAvLyBFeGNlbC1GaWxsLUdyaWZmLCBoaWVyIGJld3Vzc3QgYXVmIGRpZSBl aW5lIFplaWxlIGJlc2NocmFlbmt0KS4KICAgIHZhciBkYXR1bSA9IHplbGxlLmdldEF0dHJpYnV0 ZSgnZGF0YS1kYXR1bScpOwogICAgaWYgKCFkYXR1bSkgcmV0dXJuOwogICAgdmFyIGlTdGFydCA9 IC0xLCBpRW5kID0gLTE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IFoudGFnZS5sZW5ndGg7IGkr KykgewogICAgICAgIHZhciBkcyA9IGRhdHVtU3RyKFoudGFnZVtpXSk7CiAgICAgICAgaWYgKGRz ID09PSBmdWVsbC5xdWVsbGUuZGF0dW0pIGlTdGFydCA9IGk7CiAgICAgICAgaWYgKGRzID09PSBk YXR1bSkgaUVuZCA9IGk7CiAgICB9CiAgICBpZiAoaVN0YXJ0IDwgMCB8fCBpRW5kIDwgMCkgcmV0 dXJuOwogICAgdmFyIGxvID0gTWF0aC5taW4oaVN0YXJ0LCBpRW5kKSwgaGkgPSBNYXRoLm1heChp U3RhcnQsIGlFbmQpOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdyaWQtemVsbGUt ZmlsbC10YXJnZXQnKQogICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7IGVsLmNsYXNzTGlz dC5yZW1vdmUoJ2dyaWQtemVsbGUtZmlsbC10YXJnZXQnKTsgfSk7CiAgICB2YXIgemllbGUgPSBb XTsKICAgIGlmIChkYXJmWmVsbGVFZGl0aWVyZW4oZnVlbGwucXVlbGxlLnBpZCkpIHsKICAgICAg ICBmb3IgKHZhciBqID0gbG87IGogPD0gaGk7IGorKykgewogICAgICAgICAgICB2YXIgZFN0ciA9 IGRhdHVtU3RyKFoudGFnZVtqXSk7CiAgICAgICAgICAgIGlmIChkU3RyID09PSBmdWVsbC5xdWVs bGUuZGF0dW0pIGNvbnRpbnVlOwogICAgICAgICAgICB2YXIgeiA9IGRvY3VtZW50LnF1ZXJ5U2Vs ZWN0b3IoCiAgICAgICAgICAgICAgICAnI2dyaWQtZGF0ZW4gLmdyaWQtemVpbGVbZGF0YS1wZXJz b24taWQ9IicgKyBmdWVsbC5xdWVsbGUucGlkICsKICAgICAgICAgICAgICAgICciXSAuZ3JpZC16 ZWxsZVtkYXRhLWRhdHVtPSInICsgZFN0ciArICciXScKICAgICAgICAgICAgKTsKICAgICAgICAg ICAgaWYgKCF6KSBjb250aW51ZTsKICAgICAgICAgICAgei5jbGFzc0xpc3QuYWRkKCdncmlkLXpl bGxlLWZpbGwtdGFyZ2V0Jyk7CiAgICAgICAgICAgIHppZWxlLnB1c2goZFN0cik7CiAgICAgICAg fQogICAgfQogICAgZnVlbGwuemllbGUgPSB6aWVsZTsKfQoKZnVuY3Rpb24gZnVlbGxFbmQoKSB7 CiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdWVsbE1vdmUp OwogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGZ1ZWxsRW5kKTsK ICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJyc7CiAgICB2YXIgaCA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdmaWxsLWhhbmRsZScpOwogICAgaWYgKGgpIGguc3R5bGUucG9pbnRl ckV2ZW50cyA9ICcnOwogICAgaWYgKCFmdWVsbC5ha3RpdikgcmV0dXJuOwogICAgZnVlbGwuYWt0 aXYgPSBmYWxzZTsKICAgIHZhciB6aWVsZSA9IGZ1ZWxsLnppZWxlLnNsaWNlKCk7CiAgICB2YXIg cXVlbGxlID0gZnVlbGwucXVlbGxlOwogICAgaWYgKCFxdWVsbGUgfHwgIXppZWxlLmxlbmd0aCkg ewogICAgICAgIGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigpOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIHZhciB3ZXJ0ID0gcXVlbGxlLndlcnQ7CiAgICB2YXIgcGlkID0gcXVlbGxlLnBpZDsKICAg IGZ1ZWxsSGFuZGxlVmVyc3RlY2tlbigpOwogICAgaWYgKCFaLnBsYW51bmcuZWludHJhZWdlKSBa LnBsYW51bmcuZWludHJhZWdlID0ge307CgogICAgLy8gT3B0aW1pc3Rpc2NoZXMgbG9rYWxlcyBV cGRhdGUg4oCUIFVJIHJlYWdpZXJ0IHNvZm9ydCwgb2huZSBhdWYgZGVuCiAgICAvLyBTZXJ2ZXIg enUgd2FydGVuLiBCYWNrdXAgZGVyIHZvcmlnZW4gV2VydGUgZnVlciBSb2xsYmFjayBiZWkgRmVo bGVyLgogICAgdmFyIHJvbGxiYWNrID0ge307CiAgICB2YXIgcGF5bG9hZCA9IHppZWxlLm1hcChm dW5jdGlvbihkU3RyKSB7CiAgICAgICAgaWYgKCFaLnBsYW51bmcuZWludHJhZWdlW2RTdHJdKSBa LnBsYW51bmcuZWludHJhZWdlW2RTdHJdID0ge307CiAgICAgICAgcm9sbGJhY2tbZFN0cl0gPSBa LnBsYW51bmcuZWludHJhZWdlW2RTdHJdW3BpZF0gfHwgJyc7CiAgICAgICAgaWYgKHdlcnQpIFou cGxhbnVuZy5laW50cmFlZ2VbZFN0cl1bcGlkXSA9IHdlcnQ7CiAgICAgICAgZWxzZSBkZWxldGUg Wi5wbGFudW5nLmVpbnRyYWVnZVtkU3RyXVtwaWRdOwogICAgICAgIHJldHVybiB7IGRhdHVtOiBk U3RyLCBwZXJzb25JZDogcGlkLCB3ZXJ0OiB3ZXJ0IH07CiAgICB9KTsKICAgIC8vIElua3JlbWVu dGVsbCBzdGF0dCBWb2xsLVJlbmRlcjogbnVyIGRpZSBOIGdlZnVlbGx0ZW4gWmVsbGVuIHBhdGNo ZW4KICAgIC8vICh6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuIGFrdHVhbGlzaWVydCBwcm8gVGFn IGF1Y2ggREdMLVNjaHJhZmZ1ciArCiAgICAvLyBTdGFlcmtlLVplbGxlKS4gU3BhcnQgYXVmIGRl bSBCZWhvZXJkZW4tUEMgZGVuIH4xOC4wMDAtS25vdGVuLVJlYnVpbGQKICAgIC8vIG5hY2ggamVk ZW0gRHJhZyDigJQgZGVyIGZydWVoZXIgZGVyIGdyb2Vzc3RlIHNwdWVyYmFyZSBSdWNrbGVyIHdh ci4gRGllCiAgICAvLyBzZWx0ZW5lbiBSZWplY3QtL0ZlaGxlci1ad2VpZ2UgdW50ZW4gcmVuZGVy biBiZXd1c3N0IHdlaXRlcmhpbiB2b2xsCiAgICAvLyAoZWluZmFjaGVyICsgc2ljaGVyZXIgUm9s bGJhY2sgYmVpIFBlcm1pc3Npb24tL05ldHp3ZXJrLUZlaGxlcm4pLgogICAgcGF5bG9hZC5mb3JF YWNoKGZ1bmN0aW9uKHApIHsgemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbihwLmRhdHVtLCBwLnBl cnNvbklkLCBwLndlcnQpOyB9KTsKCiAgICAvLyBFaW4gZWluemlnZXIgSFRUUC1Sb3VuZHRyaXAg 4oCUIGRlciBTZXJ2ZXIgc2NocmVpYnQgZGllIERhdGVpIG51cgogICAgLy8gZWlubWFsLCBzdGF0 dCBOLW1hbCBzZXF1ZW56aWVsbC4KICAgIGFwaVBvc3QoJy9hcGkvcGxhbnVuZy96ZWxsZW4tYnVs aycsIHsgZWludHJhZWdlOiBwYXlsb2FkIH0pLnRoZW4oZnVuY3Rpb24ocmVzKSB7CiAgICAgICAg dmFyIG9rID0gKHJlcyAmJiByZXMub2sgIT0gbnVsbCkgPyByZXMub2sgOiBwYXlsb2FkLmxlbmd0 aDsKICAgICAgICB2YXIgYWJnZWxlaG50ID0gKHJlcyAmJiByZXMuYWJnZWxlaG50KSB8fCBbXTsK ICAgICAgICBpZiAoYWJnZWxlaG50Lmxlbmd0aCkgewogICAgICAgICAgICAvLyBTZXJ2ZXIgaGF0 IFBlcm1pc3Npb24tQ2hlY2sgamUgWmVsbGUuIFdhcyBhYmdlbGVobnQgd3VyZGUsCiAgICAgICAg ICAgIC8vIHJvbGxlbiB3aXIgbG9rYWwgc29mb3J0IHp1cnVlY2sg4oCUIHNvbnN0IHdlaWNodCBV SSB2b24gREIgYWIuCiAgICAgICAgICAgIGFiZ2VsZWhudC5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsK ICAgICAgICAgICAgICAgIHZhciBhbHQgPSByb2xsYmFja1tkLmRhdHVtXTsKICAgICAgICAgICAg ICAgIGlmICghWi5wbGFudW5nLmVpbnRyYWVnZVtkLmRhdHVtXSkgWi5wbGFudW5nLmVpbnRyYWVn ZVtkLmRhdHVtXSA9IHt9OwogICAgICAgICAgICAgICAgaWYgKGFsdCkgWi5wbGFudW5nLmVpbnRy YWVnZVtkLmRhdHVtXVtwaWRdID0gYWx0OwogICAgICAgICAgICAgICAgZWxzZSBkZWxldGUgWi5w bGFudW5nLmVpbnRyYWVnZVtkLmRhdHVtXVtwaWRdOwogICAgICAgICAgICB9KTsKICAgICAgICAg ICAgZGF0ZW5HcmlkUmVuZGVybigpOwogICAgICAgICAgICBrb3BmUmVuZGVybigpOwogICAgICAg ICAgICB0b2FzdCgnV2VydCBpbiAnICsgb2sgKyAnIFRhZycgKyAob2sgIT09IDEgPyAnZW4nIDog JycpICsgJyDDvGJlcnRyYWdlbiwgJyArCiAgICAgICAgICAgICAgICAgIGFiZ2VsZWhudC5sZW5n dGggKyAnIGFiZ2VsZWhudCAoa2VpbmUgQmVyZWNodGlndW5nKScsICd3YXJudW5nJyk7CiAgICAg ICAgICAgIC8vIFJlc3luYyAoU3ByaW50IDIg4oCUIERhdGVubW9kZWxsLUtvbnNpc3RlbnogMjAy Ni0wNS0yOCk6CiAgICAgICAgICAgIC8vIExva2FsZXIgUm9sbGJhY2sgbnV0enQgZGVuIFpXSVND SEVOR0VTUEVJQ0hFUlRFTiBXZXJ0IHZvbiB2b3IKICAgICAgICAgICAgLy8gZGVtIEJ1bGstU2No cmVpYi4gV2VubiB3YWVocmVuZGRlc3NlbiBqZW1hbmQgYW5kZXJlcyB2aWEgU3luYwogICAgICAg ICAgICAvLyBkaWVzZSBaZWxsZSB2ZXJhZW5kZXJ0IGhhdCAob2RlciBkZXIgU2VydmVyLVBlcm1p c3Npb24tV2VjaHNlbAogICAgICAgICAgICAvLyBGYWt0IHdhciksIHplaWd0IGRlciBSb2xsYmFj ayBlaW5lbiB2ZXJhbHRldGVuIFN0YW5kLiBXaXIgaG9sZW4KICAgICAgICAgICAgLy8gZGllIFNl cnZlci1XYWhyaGVpdCBuYWNoIHVuZCBtZXJnZW4gTlVSIGRpZSBhYmdlbGVobnRlbiBEYXR1bXMt CiAgICAgICAgICAgIC8vIEJ1Y2tldHMsIGRhbWl0IGFuZGVyZSBsb2thbGUgQWVuZGVydW5nZW4g dW5hbmdldGFzdGV0IGJsZWliZW4uCiAgICAgICAgICAgIGFwaSgnL2FwaS9wbGFudW5nJykudGhl bihmdW5jdGlvbihzZXJ2ZXJTdGFuZCkgewogICAgICAgICAgICAgICAgaWYgKCFzZXJ2ZXJTdGFu ZCB8fCAhc2VydmVyU3RhbmQuZWludHJhZWdlKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIg YWVuZGVydW5nZW4gPSAwOwogICAgICAgICAgICAgICAgYWJnZWxlaG50LmZvckVhY2goZnVuY3Rp b24oZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJXZXJ0ID0gKHNlcnZlclN0YW5k LmVpbnRyYWVnZVtkLmRhdHVtXSB8fCB7fSlbcGlkXTsKICAgICAgICAgICAgICAgICAgICB2YXIg bG9rYWxXZXJ0ICA9IChaLnBsYW51bmcuZWludHJhZWdlW2QuZGF0dW1dIHx8IHt9KVtwaWRdOwog ICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXJXZXJ0ICE9PSBsb2thbFdlcnQpIHsKICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCFaLnBsYW51bmcuZWludHJhZWdlW2QuZGF0dW1dKSBaLnBs YW51bmcuZWludHJhZWdlW2QuZGF0dW1dID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIGlm IChzZXJ2ZXJXZXJ0KSBaLnBsYW51bmcuZWludHJhZWdlW2QuZGF0dW1dW3BpZF0gPSBzZXJ2ZXJX ZXJ0OwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRlbGV0ZSBaLnBsYW51bmcuZWludHJh ZWdlW2QuZGF0dW1dW3BpZF07CiAgICAgICAgICAgICAgICAgICAgICAgIGFlbmRlcnVuZ2VuKys7 CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg ICBpZiAoYWVuZGVydW5nZW4pIHsgZGF0ZW5HcmlkUmVuZGVybigpOyBrb3BmUmVuZGVybigpOyB9 CiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKCkgeyAvKiBzdGlsbGVyIEZlaGxlciDigJQg U3luYy1Xb3JrZXIgZmFlbmd0J3MgYmVpbSBuYWVjaHN0ZW4gVGljayAqLyB9KTsKICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICB0b2FzdCh3ZXJ0CiAgICAgICAgICAgICAgICA/ICdXZXJ0IOKA nicgKyB3ZXJ0ICsgJyIgaW4gJyArIG9rICsgJyBUYWcnICsgKG9rICE9PSAxID8gJ2VuJyA6ICcn KSArICcgw7xiZXJ0cmFnZW4nCiAgICAgICAgICAgICAgICA6ICdXZXJ0IGluICcgKyBvayArICcg VGFnJyArIChvayAhPT0gMSA/ICdlbicgOiAnJykgKyAnIGdlbGVlcnQnLAogICAgICAgICAgICAg ICAgJ2VyZm9sZycpOwogICAgICAgIH0KICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycikgewogICAg ICAgIC8vIEJlaSBOZXR6d2Vyay0vU2VydmVyLUZlaGxlciBrb21wbGV0dCB6dXJ1ZWNrc2V0emVu LgogICAgICAgIHppZWxlLmZvckVhY2goZnVuY3Rpb24oZFN0cikgewogICAgICAgICAgICB2YXIg YWx0ID0gcm9sbGJhY2tbZFN0cl07CiAgICAgICAgICAgIGlmICghWi5wbGFudW5nLmVpbnRyYWVn ZVtkU3RyXSkgWi5wbGFudW5nLmVpbnRyYWVnZVtkU3RyXSA9IHt9OwogICAgICAgICAgICBpZiAo YWx0KSBaLnBsYW51bmcuZWludHJhZWdlW2RTdHJdW3BpZF0gPSBhbHQ7CiAgICAgICAgICAgIGVs c2UgZGVsZXRlIFoucGxhbnVuZy5laW50cmFlZ2VbZFN0cl1bcGlkXTsKICAgICAgICB9KTsKICAg ICAgICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICB0 b2FzdCgnQnVsay1GZWhsZXI6ICcgKyBlcnIubWVzc2FnZSArICcg4oCUIEFlbmRlcnVuZ2VuIHp1 cnVlY2tnZW5vbW1lbicsICdmZWhsZXInKTsKICAgIH0pOwp9CgovLyBHbG9iYWxlIExpc3RlbmVy IOKAlCBlaW5tYWwgYmVpbSBBcHAtSW5pdCBhdWZydWZlbi4KLy8gS2xpY2sgYXVzc2VyaGFsYiB2 b24gR3JpZCArIEVkaXRvciArIEhhbmRsZSBibGVuZGV0IGRlbiBHcmlmZiBhdXMsCi8vIFNjcm9s bGVuIGViZW5zbyAoUG9zaXRpb24gd2FlcmUgc29uc3QgZmFsc2NoKS4KZXhwb3J0IGZ1bmN0aW9u IGZ1ZWxsSW5pdCgpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVu Y3Rpb24oZSkgewogICAgICAgIGlmIChlLnRhcmdldC5pZCA9PT0gJ2ZpbGwtaGFuZGxlJykgcmV0 dXJuOwogICAgICAgIGlmIChlLnRhcmdldC5jbG9zZXN0ICYmIGUudGFyZ2V0LmNsb3Nlc3QoJyNn cmlkLWRhdGVuJykpIHJldHVybjsKICAgICAgICBpZiAoZS50YXJnZXQuY2xvc2VzdCAmJiBlLnRh cmdldC5jbG9zZXN0KCcjemVsbC1lZGl0b3InKSkgcmV0dXJuOwogICAgICAgIGZ1ZWxsSGFuZGxl VmVyc3RlY2tlbigpOwogICAgfSk7CiAgICB2YXIgZ3JpZFNjcm9sbCA9IGRvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCdncmlkLXNjcm9sbC1jb250YWluZXInKTsKICAgIGlmIChncmlkU2Nyb2xsKSB7 CiAgICAgICAgZ3JpZFNjcm9sbC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigp IHsKICAgICAgICAgICAgaWYgKGZ1ZWxsLnF1ZWxsZSAmJiAhZnVlbGwuYWt0aXYpIGZ1ZWxsSGFu ZGxlVmVyc3RlY2tlbigpOwogICAgICAgIH0pOwogICAgfQogICAgLy8gRVNDIGJyaWNodCBlaW5l biBsYXVmZW5kZW4gRHJhZyBhYi4KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRv d24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBmdWVs bC5ha3RpdikgewogICAgICAgICAgICBmdWVsbC5ha3RpdiA9IGZhbHNlOwogICAgICAgICAgICBk b2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdWVsbE1vdmUpOwogICAg ICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVlbGxFbmQp OwogICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICcnOwogICAgICAgICAg ICB2YXIgaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxsLWhhbmRsZScpOwogICAgICAg ICAgICBpZiAoaCkgaC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJyc7CiAgICAgICAgICAgIGZ1ZWxs SGFuZGxlVmVyc3RlY2tlbigpOwogICAgICAgIH0KICAgIH0pOwp9Cg== ### FILE: js/grid_render.js | 37064 Ly8gPT09IGdyaWQvcmVuZGVyLmpzID09PQovLyBTdGFuZDogMjAyNi0wNS0xNAovLyBHcmlkLUF1 ZmJhdSwgSGVhZGVyIChEYXR1bS9Xb2NoZW50YWcvQW5sYXNzL0V2ZW50cy9TdMOkcmtlL1NjaGlj aHRmb2xnZSksCi8vIFNjaHJhZmZ1cmVuLCBTdMOkcmtlLUJlcmVjaG51bmcsIE5hdmlnYXRpb24v QW5zaWNodHMtV2VjaHNlbCwgU2Nyb2xsLVN5bmMuCi8vCi8vIEhvb2tzOiBlaW5pZ2UgQXVmcnVm ZSBnZWhlbiBhdWYgRnVua3Rpb25lbiwgZGllIG5vY2ggaW4gYXBwLmpzIGxpZWdlbgovLyBvZGVy IGVyc3QgaW4gc3BhZXRlcmVuIFBoYXNlbiBleHRyYWhpZXJ0IHdlcmRlbiAoZmVhdHVyZUlzdEFr dGl2LAovLyBiZXosIHNvbmRlclRpdGVsQXVzVGV4dCwga29tbWVudGFyZUltR3JpZEFuemVpZ2Vu LCBiZXNldHp1bmdzLS9hZG1pbi0vCi8vIHN0YXRzLS93b2NoZW5wbGFuLS9wZXJzcGxhbi0vbG9n YnVjaC1SZW5kZXJlcikuIERpZXNlIHdlcmRlbiB1ZWJlcgovLyByZW5kZXJIb29rcyByZWluZ2Vo YWVuZ3QuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0YXRlLmpzJzsKaW1wb3J0IHsKICAg IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsCiAgICBkYXR1bVN0ciwgZGF0dW1Gb3JtYXRERSwgZGF0 dW1LdXJ6REUsIHdvY2hlbnRhZ0t1cnosIGlzdFdvY2hlbmVuZGUsCiAgICBhdmF0YXJLcmVpc0h0 bWwsIHJlbmRlckVycm9yQm94Cn0gZnJvbSAnLi9jb3JlX3V0aWwuanMnOwppbXBvcnQgewogICAg ZGFyZkFkbWluVGFiLCBkYXJmU3RhdGlzdGlrLCBkYXJmTG9nYnVjaCwgZGFyZlplbGxlRWRpdGll cmVuCn0gZnJvbSAnLi9jb3JlX3Blcm1pc3Npb25zLmpzJzsKaW1wb3J0IHsgdG9hc3QgfSBmcm9t ICcuL3VpX2RpYWxvZy5qcyc7CmltcG9ydCB7IGhldXRlQmxvY2tBa3R1YWxpc2llcmVuIH0gZnJv bSAnLi9jb3JlX2RhdGVuTGFkZW4uanMnOwoKLy8gPT09PT0gSG9va3MgPT09PT0KCmV4cG9ydCB2 YXIgcmVuZGVySG9va3MgPSB7CiAgICBmZWF0dXJlSXN0QWt0aXY6IG51bGwsCiAgICBzb25kZXJU aXRlbEF1c1RleHQ6IG51bGwsCiAgICBiZXNldHp1bmdzVGFiRmFyYmVBa3R1YWxpc2llcmVuOiBu dWxsLAogICAga29tbWVudGFyZUltR3JpZEFuemVpZ2VuOiBudWxsLAogICAgYmV6OiBudWxsLAog ICAgd3BSZW5kZXJuOiBudWxsLAogICAgcHBSZW5kZXJuOiBudWxsLAogICAgbG9nYnVjaExhZGVu OiBudWxsLAogICAgc3RhdGlzdGlrTGFkZW46IG51bGwsCiAgICBhZG1pblJlbmRlcm46IG51bGws CiAgICBiZXNldHp1bmdza29udHJvbGxlUmVuZGVybjogbnVsbAp9OwoKLy8gPT09PT0gUGVyZm9y bWFuY2UtTWVzc3VuZyAoU3ByaW50IDZiIDIwMjYtMDUtMjksIEZpbmRpbmcgMjApID09PT09Ci8v Ci8vIE9wdC1JbiB1ZWJlciBgd2luZG93LlZJM19QRVJGID0gdHJ1ZWAuIFNhbW1lbHQgcHJvIFJl bmRlci1BdWZydWYKLy8gRGF1ZXIgKyBGdW5rdGlvbnNuYW1lIGluIGVpbmVtIFJpbmctQnVmZmVy IChtYXggMTAwIEVpbnRyYWVnZSkuCi8vIEF1c3dlcnR1bmcgaW0gQnJvd3NlciB2aWEgYHdpbmRv dy5WSTNfUEVSRl9SRVBPUlQoKWAgLT4gY29uc29sZS50YWJsZQovLyBtaXQgQWdncmVnYXQgcHJv IEZ1bmt0aW9uIChBbnphaGwsIE1pbi9NYXgvQXZnLW1zKS4KLy8KLy8gV2VubiBkaWUgRmxhZyBu aWNodCBha3RpdiBpc3Q6IGBwZXJmTWFyaygpYC9gcGVyZk1lYXN1cmUoKWAgc2luZCBuby1vcHMu Ci8vIERhbWl0IGtlaW4gRGVmYXVsdC1PdmVyaGVhZCBpbSBQcm9kdWt0aXYtQmV0cmllYiAoUG9s aXplaS1QQ3MpLgovLwovLyBBdWRpdC1CZWZ1bmQtMjAtSGludGVyZ3J1bmQ6IEJlZnVuZCB3YXIg bWFudWVsbGUgU2NoYWV0enVuZyBvaG5lCi8vIGluc3RydW1lbnRpZXJ0ZSBNZXNzdW5nLiBWb3Ig d2VpdGVyZW4gUmVuZGVyLVJlZmFjdG9ycyBicmF1Y2hlbiB3aXIKLy8gZWNodGUgWmFobGVuLCBk YW1pdCB3aXIgbmljaHQgZGVuIGZhbHNjaGVuIFBmYWQgb3B0aW1pZXJlbi4KCnZhciBfUEVSRl9Q VUZGRVIgPSBbXTsKdmFyIF9QRVJGX01BWCA9IDEwMDsKCmZ1bmN0aW9uIHBlcmZBa3RpdigpIHsK ICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVkkzX1BF UkYgPT09IHRydWU7Cn0KCmZ1bmN0aW9uIHBlcmZNYXJrKG5hbWUpIHsKICAgIGlmICghcGVyZkFr dGl2KCkpIHJldHVybiBudWxsOwogICAgdHJ5IHsgcGVyZm9ybWFuY2UubWFyayhuYW1lICsgJzpz dGFydCcpOyB9IGNhdGNoIChlKSB7fQogICAgcmV0dXJuIG5hbWU7Cn0KCmZ1bmN0aW9uIHBlcmZN ZWFzdXJlKG5hbWUsIHN0YXJ0VHMpIHsKICAgIGlmICghcGVyZkFrdGl2KCkgfHwgIW5hbWUpIHJl dHVybjsKICAgIHRyeSB7CiAgICAgICAgcGVyZm9ybWFuY2UubWFyayhuYW1lICsgJzplbmQnKTsK ICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKG5hbWUsIG5hbWUgKyAnOnN0YXJ0JywgbmFtZSAr ICc6ZW5kJyk7CiAgICAgICAgdmFyIGVudHJpZXMgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlO YW1lKG5hbWUsICdtZWFzdXJlJyk7CiAgICAgICAgdmFyIGxldHp0ZSA9IGVudHJpZXNbZW50cmll cy5sZW5ndGggLSAxXTsKICAgICAgICBpZiAobGV0enRlKSB7CiAgICAgICAgICAgIF9QRVJGX1BV RkZFUi5wdXNoKHsgbmFtZTogbmFtZSwgbXM6IE1hdGgucm91bmQobGV0enRlLmR1cmF0aW9uICog MTAwKSAvIDEwMCwgdHM6IERhdGUubm93KCkgfSk7CiAgICAgICAgICAgIGlmIChfUEVSRl9QVUZG RVIubGVuZ3RoID4gX1BFUkZfTUFYKSBfUEVSRl9QVUZGRVIuc2hpZnQoKTsKICAgICAgICB9CiAg ICAgICAgLy8gTWFya3MgYXVmcmFldW1lbiwgc29uc3QgZnJpc3N0IGVzIFNwZWljaGVyCiAgICAg ICAgcGVyZm9ybWFuY2UuY2xlYXJNYXJrcyhuYW1lICsgJzpzdGFydCcpOwogICAgICAgIHBlcmZv cm1hbmNlLmNsZWFyTWFya3MobmFtZSArICc6ZW5kJyk7CiAgICAgICAgcGVyZm9ybWFuY2UuY2xl YXJNZWFzdXJlcyhuYW1lKTsKICAgIH0gY2F0Y2ggKGUpIHt9Cn0KCi8vIFdpcmQgdmlhIE1vZHVs LUluaXQgYW0gd2luZG93LU9iamVrdCByZWdpc3RyaWVydCAoc2llaGUgdW50ZW4pLgpmdW5jdGlv biBwZXJmUmVwb3J0KCkgewogICAgaWYgKF9QRVJGX1BVRkZFUi5sZW5ndGggPT09IDApIHsKICAg ICAgICBjb25zb2xlLmxvZygnVkkzX1BFUkY6IGtlaW5lIE1lc3NkYXRlbiDigJQgdm9yaGVyIHdp bmRvdy5WSTNfUEVSRiA9IHRydWUgc2V0emVuIHVuZCBkaWUgQXBwIGJlbnV0emVuLicpOwogICAg ICAgIHJldHVybjsKICAgIH0KICAgIHZhciBuYWNoTmFtZSA9IHt9OwogICAgX1BFUkZfUFVGRkVS LmZvckVhY2goZnVuY3Rpb24oZSkgewogICAgICAgIGlmICghbmFjaE5hbWVbZS5uYW1lXSkgbmFj aE5hbWVbZS5uYW1lXSA9IFtdOwogICAgICAgIG5hY2hOYW1lW2UubmFtZV0ucHVzaChlLm1zKTsK ICAgIH0pOwogICAgdmFyIHJvd3MgPSBPYmplY3Qua2V5cyhuYWNoTmFtZSkubWFwKGZ1bmN0aW9u KG5hbWUpIHsKICAgICAgICB2YXIgbCA9IG5hY2hOYW1lW25hbWVdOwogICAgICAgIHZhciBzdW0g PSBsLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICsgYjsgfSwgMCk7CiAgICAgICAg cmV0dXJuIHsKICAgICAgICAgICAgRnVua3Rpb246IG5hbWUsCiAgICAgICAgICAgIEF1ZnJ1ZmU6 ICBsLmxlbmd0aCwKICAgICAgICAgICAgJ01pbiBtcyc6IE1hdGgubWluLmFwcGx5KG51bGwsIGwp LAogICAgICAgICAgICAnTWF4IG1zJzogTWF0aC5tYXguYXBwbHkobnVsbCwgbCksCiAgICAgICAg ICAgICdBdmcgbXMnOiBNYXRoLnJvdW5kKChzdW0gLyBsLmxlbmd0aCkgKiAxMDApIC8gMTAwLAog ICAgICAgICAgICAnU3VtIG1zJzogTWF0aC5yb3VuZChzdW0gKiAxMDApIC8gMTAwCiAgICAgICAg fTsKICAgIH0pOwogICAgY29uc29sZS50YWJsZShyb3dzKTsKfQoKaWYgKHR5cGVvZiB3aW5kb3cg IT09ICd1bmRlZmluZWQnKSB7CiAgICB3aW5kb3cuVkkzX1BFUkZfUkVQT1JUID0gcGVyZlJlcG9y dDsKICAgIHdpbmRvdy5WSTNfUEVSRl9SRVNFVCA9IGZ1bmN0aW9uKCkgeyBfUEVSRl9QVUZGRVIu bGVuZ3RoID0gMDsgfTsKfQoKLy8gRGVmYXVsdC1JY29ucyBwcm8gRmVpZXJ0YWdzLUthdGVnb3Jp ZS4gV2lyZCBnZXpvZ2VuLCB3ZW5uIGRlciBlaW56ZWxuZQovLyBFaW50cmFnIGtlaW4gZWlnZW5l cyBpY29uLUZlbGQgc2V0enQuIFBybyBFaW50cmFnIHVlYmVyc2NocmVpYmJhciBpbQovLyBBZG1p biAtPiBGZWllcnRhZ2UgKFBpY2tlciBhbmFsb2cgenUgU29uZGVydGVybWluZW4pLgpleHBvcnQg dmFyIEtBVEVHT1JJRV9JQ09OX0RFRkFVTFQgPSB7CiAgICBnZXNldHpsaWNoOiAn8J+Pm++4jycs CiAgICBqdWVkaXNjaDogJ+KcoScsCiAgICBtdXNsaW1pc2NoOiAn4piqJywKICAgIHR1ZXJraXNj aDogJ/Cfh7nwn4e3Jwp9OwoKLy8gPT09PT0gVGFnZS1BdWZiYXUgJiBUYWctSW5mb3MgPT09PT0K CmV4cG9ydCBmdW5jdGlvbiB0YWdlRXJ6ZXVnZW4oKSB7CiAgICB2YXIgamFociA9IFouYWRtaW4u amFociB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7CiAgICBaLnRhZ2UgPSBbXTsKICAgIC8v IFBsYW51bmdzYmVyZWljaDogMS4gSmFudWFyIGRlcyBQbGFudW5nc2phaHJlcyBiaXMgZWluc2No bGllc3NsaWNoIDMxLiBKYW51YXIgZGVzIEZvbGdlamFocmVzLgogICAgLy8gRGVyIEJ1ZmZlci1N b25hdCBlcmxhdWJ0IFZvcnBsYW51bmcgZGVzIEZvbGdlamFocmVzIGJpcyB6dW0gSmFocmVzd2Vj aHNlbC1Lbm9wZi4KICAgIHZhciBkID0gbmV3IERhdGUoamFociwgMCwgMSk7CiAgICB2YXIgZW5k ZSA9IG5ldyBEYXRlKGphaHIgKyAxLCAxLCAxKTsgLy8gMS4gRmVicnVhciBGb2xnZWphaHIgPSBl eGtsdXNpdmUgT2JlcmdyZW56ZQogICAgd2hpbGUgKGQgPCBlbmRlKSB7IFoudGFnZS5wdXNoKG5l dyBEYXRlKGQpKTsgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgMSk7IH0KfQoKLy8gTGV0enRlciBT b25udGFnIGVpbmVzIE1vbmF0cyDigJQgQmVyZWNobnVuZyBkZXIgRFNULVdlY2hzZWx0YWdlIGlu IGRlciBFVQovLyAoTWFlcno6IFZvcndhZXJ0cyArMWgsIE9rdG9iZXI6IFJ1ZWNrd2FlcnRzIC0x aCwgamV3ZWlscyBsZXR6dGVyIFNvbm50YWcpLgovLyBtb25hdCBpc3QgMC1pbmRleGVkICgyID0g TWFlcnosIDkgPSBPa3RvYmVyKS4KZnVuY3Rpb24gX2xldHp0ZXJTb25udGFnSW1Nb25hdChqYWhy LCBtb25hdCkgewogICAgdmFyIGQgPSBuZXcgRGF0ZShqYWhyLCBtb25hdCArIDEsIDApOyAgLy8g bGV0enRlciBUYWcgZGVzIE1vbmF0cwogICAgdmFyIHRhZyA9IGQuZ2V0RGF5KCk7CiAgICBpZiAo dGFnICE9PSAwKSBkLnNldERhdGUoZC5nZXREYXRlKCkgLSB0YWcpOwogICAgcmV0dXJuIGRhdHVt U3RyKGQpOwp9CgpleHBvcnQgZnVuY3Rpb24gdGFnSW5mb3NCZXJlY2huZW4oKSB7CiAgICBaLnRh Z0luZm9zID0ge307CiAgICAvLyBTb25kZXJ0ZXJtaW5lIGdnZi4gbWl0IElEIG5hY2hyw7xzdGVu IChCQyBmw7xyIEFsdGRhdGVuKSB1bmQgYXVmIGFsbGUgVGFnZSBkZXMgWmVpdHJhdW1zIG1hcHBl bgogICAgdmFyIHNvbmRlck1hcCA9IHt9OwogICAgKFouYWRtaW4uc29uZGVydGVybWluZSB8fCBb XSkuZm9yRWFjaChmdW5jdGlvbihzKSB7CiAgICAgICAgaWYgKCFzLmlkKSBzLmlkID0gJ3N0Xycg KyAocy5kYXR1bSB8fCAneCcpICsgJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vi c3RyKDIsIDYpOwogICAgICAgIHZhciB2b24gPSBzLmRhdHVtLCBiaXMgPSBzLmRhdHVtQmlzIHx8 IHMuZGF0dW07CiAgICAgICAgaWYgKCF2b24pIHJldHVybjsKICAgICAgICB2YXIgZCA9IG5ldyBE YXRlKHZvbiArICdUMDA6MDA6MDAnKSwgYiA9IG5ldyBEYXRlKGJpcyArICdUMDA6MDA6MDAnKTsK ICAgICAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpIHx8IGlzTmFOKGIuZ2V0VGltZSgpKSB8fCBi IDwgZCkgeyBzb25kZXJNYXBbdm9uXSA9IHM7IHJldHVybjsgfQogICAgICAgIHdoaWxlIChkIDw9 IGIpIHsgc29uZGVyTWFwW2RhdHVtU3RyKGQpXSA9IHM7IGQuc2V0RGF0ZShkLmdldERhdGUoKSAr IDEpOyB9CiAgICB9KTsKCiAgICBaLnRhZ2UuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAg dmFyIGtleSA9IGRhdHVtU3RyKGQpOwogICAgICAgIFoudGFnSW5mb3Nba2V5XSA9IHsgdHlwOiAn bm9ybWFsJywgbmFtZTogJycsIGdlYnVydHN0YWdlOiBbXSB9OwogICAgICAgIGlmIChpc3RXb2No ZW5lbmRlKGQpKSBaLnRhZ0luZm9zW2tleV0udHlwID0gJ3dvY2hlbmVuZGUnOwogICAgfSk7Cgog ICAgKFouYWRtaW4uZmVyaWVuIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKICAgICAgICB2 YXIgZCA9IG5ldyBEYXRlKGYudm9uICsgJ1QwMDowMDowMCcpOwogICAgICAgIHZhciBiaXMgPSBu ZXcgRGF0ZShmLmJpcyArICdUMDA6MDA6MDAnKTsKICAgICAgICB3aGlsZSAoZCA8PSBiaXMpIHsK ICAgICAgICAgICAgdmFyIGtleSA9IGRhdHVtU3RyKGQpOwogICAgICAgICAgICBpZiAoWi50YWdJ bmZvc1trZXldICYmIFoudGFnSW5mb3Nba2V5XS50eXAgPT09ICdub3JtYWwnKSB7CiAgICAgICAg ICAgICAgICBaLnRhZ0luZm9zW2tleV0udHlwID0gJ2Zlcmllbic7CiAgICAgICAgICAgICAgICBa LnRhZ0luZm9zW2tleV0ubmFtZSA9IGYubmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBk LnNldERhdGUoZC5nZXREYXRlKCkgKyAxKTsKICAgICAgICB9CiAgICB9KTsKCiAgICAoWi5hZG1p bi5mZWllcnRhZ2UgfHwgW10pLmZvckVhY2goZnVuY3Rpb24oZikgewogICAgICAgIC8vIGFrdGl2 ID09PSBmYWxzZSB1ZWJlcnNwcmluZ2VuOyBmZWhsZW5kZXMgRmVsZCA9IGFrdGl2IChCYWNrd2Fy ZHMtQ29tcGF0CiAgICAgICAgLy8gbWl0IGFsdGVtIFNjaGVtYSB7ZGF0dW0sIG5hbWUsIHdpY2h0 aWd9IG9obmUgYWt0aXYva2F0ZWdvcmllKS4KICAgICAgICBpZiAoZi5ha3RpdiA9PT0gZmFsc2Up IHJldHVybjsKICAgICAgICBpZiAoWi50YWdJbmZvc1tmLmRhdHVtXSkgewogICAgICAgICAgICBa LnRhZ0luZm9zW2YuZGF0dW1dLnR5cCA9ICdmZWllcnRhZyc7CiAgICAgICAgICAgIFoudGFnSW5m b3NbZi5kYXR1bV0ubmFtZSA9IGYuYmV6ZWljaG51bmcgfHwgZi5uYW1lIHx8ICcnOwogICAgICAg ICAgICBaLnRhZ0luZm9zW2YuZGF0dW1dLndpY2h0aWcgPSAhIWYud2ljaHRpZzsKICAgICAgICAg ICAgWi50YWdJbmZvc1tmLmRhdHVtXS5rYXRlZ29yaWUgPSBmLmthdGVnb3JpZSB8fCAnZ2VzZXR6 bGljaCc7CiAgICAgICAgICAgIFoudGFnSW5mb3NbZi5kYXR1bV0uaWNvbiA9IGYuaWNvbiB8fCAn JzsKICAgICAgICAgICAgWi50YWdJbmZvc1tmLmRhdHVtXS5rdXJ6YmVzY2hyZWlidW5nID0gZi5r dXJ6YmVzY2hyZWlidW5nIHx8ICcnOwogICAgICAgICAgICBaLnRhZ0luZm9zW2YuZGF0dW1dLmlu Zm9VcmwgPSBmLmluZm9VcmwgfHwgJyc7CiAgICAgICAgfQogICAgfSk7CgogICAgLy8gR2VidXJ0 c3RhZ2UgcHJvIFRhZyAoYXVmIE1vbmF0LVRhZyBkZXMgUGxhbnVuZ3NqYWhyZXMgKyBCdWZmZXIt SmFudWFyIGRlcyBGb2xnZWphaHJlcyBtYXBwZW4pCiAgICB2YXIgcGxhbkphaHIgPSBaLmFkbWlu LmphaHIgfHwgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpOwogICAgKFoucGxhbnVuZy5wZXJzb25l biB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAgaWYgKCFwLmdlYnVydHNkYXR1 bSB8fCAhcC5ha3RpdikgcmV0dXJuOwogICAgICAgIHZhciB0ZWlsZSA9IHAuZ2VidXJ0c2RhdHVt LnNwbGl0KCctJyk7CiAgICAgICAgaWYgKHRlaWxlLmxlbmd0aCAhPT0gMykgcmV0dXJuOwogICAg ICAgIHZhciBuYW1lID0gKHAudm9ybmFtZSA/IHAudm9ybmFtZSArICcgJyA6ICcnKSArIHAubmFt ZTsKICAgICAgICB2YXIgamFockFsdCA9IHBhcnNlSW50KHRlaWxlWzBdLCAxMCkgfHwgbnVsbDsK ICAgICAgICBbcGxhbkphaHIsIHBsYW5KYWhyICsgMV0uZm9yRWFjaChmdW5jdGlvbihqKSB7CiAg ICAgICAgICAgIHZhciBrZXkgPSBqICsgJy0nICsgdGVpbGVbMV0gKyAnLScgKyB0ZWlsZVsyXTsK ICAgICAgICAgICAgaWYgKFoudGFnSW5mb3Nba2V5XSkgewogICAgICAgICAgICAgICAgWi50YWdJ bmZvc1trZXldLmdlYnVydHN0YWdlLnB1c2goeyBpZDogcC5pZCwgbmFtZTogbmFtZSwgamFocjog amFockFsdCB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgT2JqZWN0 LmtleXMoc29uZGVyTWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICBpZiAoWi50YWdJ bmZvc1tkXSkgewogICAgICAgICAgICBaLnRhZ0luZm9zW2RdLnNvbmRlciA9IHNvbmRlck1hcFtk XTsKICAgICAgICB9CiAgICB9KTsKCiAgICAvLyBEU1QtTWFya2llcnVuZyAoUGFrZXQtQiBRdWlj ay1XaW4sIDIwMjYtMDUtMjkpOiBsZXR6dGVyIFNvbm50YWcgaW0KICAgIC8vIE1hZXJ6ID0gVm9y d2FlcnRzLVdlY2hzZWwgKDAyOjAwIC0+IDAzOjAwKSwgbGV0enRlciBTb25udGFnIGltIE9rdG9i ZXIKICAgIC8vID0gUnVlY2t3YWVydHMtV2VjaHNlbCAoMDM6MDAgLT4gMDI6MDApLiBGdWVyIGFs bGUgSmFocmUgZGllIGluCiAgICAvLyBaLnRhZ0luZm9zIHZvcmtvbW1lbiBrb2VubmVuIOKAlCB0 eXBpc2NoIFBsYW4tSmFociArIEZvbGdlamFoci4KICAgIFtwbGFuSmFociwgcGxhbkphaHIgKyAx XS5mb3JFYWNoKGZ1bmN0aW9uKGopIHsKICAgICAgICB2YXIgZHN0RnJ1ZWggID0gX2xldHp0ZXJT b25udGFnSW1Nb25hdChqLCAyKTsKICAgICAgICB2YXIgZHN0SGVyYnN0ID0gX2xldHp0ZXJTb25u dGFnSW1Nb25hdChqLCA5KTsKICAgICAgICBpZiAoWi50YWdJbmZvc1tkc3RGcnVlaF0pICBaLnRh Z0luZm9zW2RzdEZydWVoXS5kc3QgPSAndm9yJzsKICAgICAgICBpZiAoWi50YWdJbmZvc1tkc3RI ZXJic3RdKSBaLnRhZ0luZm9zW2RzdEhlcmJzdF0uZHN0ID0gJ3p1cnVlY2snOwogICAgfSk7Cn0K Ci8vID09PT09IFN0w6Rya2UgJiBTY2hyYWZmdXIgPT09PT0KCmV4cG9ydCBmdW5jdGlvbiBzdGFl cmtlQmVyZWNobmVuKGRTdHIpIHsKICAgIHZhciBlID0gKFoucGxhbnVuZy5laW50cmFlZ2UgfHwg e30pW2RTdHJdIHx8IHt9OwogICAgdmFyIGYgPSAwLCBzID0gMCwgbiA9IDA7CiAgICBaLnBlcnNv bmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIGlmICghcC5ha3RpdikgcmV0dXJuOyAv LyBVbWdlc2V0enRlIHrDpGhsZW4gbmljaHQgenVyIFN0w6Rya2UKICAgICAgICB2YXIgdyA9IGVb U3RyaW5nKHAuaWQpXSB8fCAnJzsKICAgICAgICBpZiAody5zdWJzdHJpbmcoMCwgNSkgPT09ICdG LURHTCcpIGYrKzsKICAgICAgICBpZiAody5zdWJzdHJpbmcoMCwgNSkgPT09ICdTLURHTCcpIHMr KzsKICAgICAgICBpZiAody5zdWJzdHJpbmcoMCwgNSkgPT09ICdOLURHTCcpIG4rKzsKICAgIH0p OwogICAgcmV0dXJuIHsgZjogZiwgczogcywgbjogbiwgb2s6IGYgPj0gMiAmJiBzID49IDIgJiYg biA+PSAyLCB0ZXh0OiBmICsgJ3wnICsgcyArICd8JyArIG4gfTsKfQoKZXhwb3J0IGZ1bmN0aW9u IHNjaHJhZmZ1ckJlcmVjaG5lbihkU3RyKSB7CiAgICB2YXIgZSA9IChaLnBsYW51bmcuZWludHJh ZWdlIHx8IHt9KVtkU3RyXSB8fCB7fTsKICAgIHZhciBzY2hpY2h0ZW4gPSB7IEY6IFtdLCBTOiBb XSwgTjogW10gfTsKICAgIFoucGVyc29uZW4uZm9yRWFjaChmdW5jdGlvbihwKSB7CiAgICAgICAg aWYgKCFwLmFrdGl2KSByZXR1cm47IC8vIFVtZ2VzZXR6dGUgbmljaHQgYWxzIFZlcmFudHdvcnRs aWNoZSBtYXJraWVyZW4KICAgICAgICB2YXIgdyA9IGVbU3RyaW5nKHAuaWQpXSB8fCAnJzsKICAg ICAgICBpZiAody5pbmRleE9mKCdER0wnKSA9PT0gLTEpIHJldHVybjsKICAgICAgICB2YXIgcHJl Zml4ID0gdy5jaGFyQXQoMCk7CiAgICAgICAgaWYgKHNjaGljaHRlbltwcmVmaXhdKSBzY2hpY2h0 ZW5bcHJlZml4XS5wdXNoKHsgaWQ6IHAuaWQsIHBvczogcC5wb3NpdGlvbiB8fCA5OTkgfSk7CiAg ICB9KTsKICAgIHZhciBlcmcgPSB7fTsKICAgIFsnRicsJ1MnLCdOJ10uZm9yRWFjaChmdW5jdGlv bihwcikgewogICAgICAgIHZhciBsID0gc2NoaWNodGVuW3ByXS5zb3J0KGZ1bmN0aW9uKGEsIGIp IHsgcmV0dXJuIGEucG9zIC0gYi5wb3M7IH0pOwogICAgICAgIGlmIChsLmxlbmd0aCA+IDApIGVy Z1tsWzBdLmlkXSA9IHByICsgJzEnOwogICAgICAgIGlmIChsLmxlbmd0aCA+IDEpIGVyZ1tsWzFd LmlkXSA9IHByICsgJzInOwogICAgfSk7CiAgICByZXR1cm4gZXJnOwp9CgovLyA9PT09PSBQbGFu dW5nIHJlbmRlcm4gPT09PT0KCmV4cG9ydCBmdW5jdGlvbiBncmlkUmVuZGVybigpIHsKICAgIC8v IFVYLUF1ZGl0IFNwcmludCAxLjI6IFRyeS1DYXRjaC1Iw7xsbGUsIGRhbWl0IGVpbiBSZW5kZXIt RmVobGVyIG5pY2h0CiAgICAvLyBkaWUgZ2FuemUgUGxhbnVuZ3NhbnNpY2h0IGJsYW5rIGzDpHNz dC4gQmVpIEV4Y2VwdGlvbiB3aXJkIGVpbmUKICAgIC8vIEZlaGxlcmJveCBpbiBkZW4gQW5zaWNo dC1Db250YWluZXIgZ2VyZW5kZXJ0LgogICAgdHJ5IHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnYW56ZWlnZS1qYWhyJykudGV4dENvbnRlbnQgPSBaLmFkbWluLmphaHIgfHwgJyc7 CiAgICAgICAgaGV1dGVCbG9ja0FrdHVhbGlzaWVyZW4oKTsKCiAgICAgICAgLy8gSGVhZGVyLUJh ZGdlOiBlY2h0ZW4gTmFtZW4gYXVzIHBsYW51bmcucGVyc29uZW4gYW56ZWlnZW4gKHBlciBud0tl bm51bmcgZ2VtYXRjaGVkKSwKICAgICAgICAvLyBzb25zdCBGYWxsYmFjayBhdWYgZGllIE5XLUtl bm51bmcuIFRvb2x0aXAgemVpZ3QgYmVpZGVzLgogICAgICAgIHZhciBiYWRnZSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCdiZW51dHplci1hbnplaWdlJyk7CiAgICAgICAgdmFyIGFuemVpZ2Ug PSBaLmJlbnV0emVyOwogICAgICAgIGlmIChaLm1laW5lUGVyc29uSWQpIHsKICAgICAgICAgICAg dmFyIHAgPSBaLnBlcnNvbmVuLmZpbmQoZnVuY3Rpb24oeCkgeyByZXR1cm4gU3RyaW5nKHguaWQp ID09PSBTdHJpbmcoWi5tZWluZVBlcnNvbklkKTsgfSk7CiAgICAgICAgICAgIGlmIChwKSB7CiAg ICAgICAgICAgICAgICBhbnplaWdlID0gKChwLnZvcm5hbWUgPyBwLnZvcm5hbWUgKyAnICcgOiAn JykgKyAocC5uYW1lIHx8ICcnKSkudHJpbSgpIHx8IFouYmVudXR6ZXI7CiAgICAgICAgICAgIH0K ICAgICAgICB9CiAgICAgICAgYmFkZ2UudGV4dENvbnRlbnQgPSBhbnplaWdlOwogICAgICAgIGJh ZGdlLnRpdGxlID0gWi5iZW51dHplciArIChaLm1laW5lUGVyc29uSWQgPyAnIOKAlCBlcmthbm50 IGFscyAiJyArIGFuemVpZ2UgKyAnIicgOiAnIOKAlCBrZWluZSB6dWdlb3JkbmV0ZSBQZXJzb24n KTsKCiAgICAgICAga29wZlJlbmRlcm4oKTsKICAgICAgICBuYW1lblJlbmRlcm4oKTsKICAgICAg ICBkYXRlbkdyaWRSZW5kZXJuKCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgcmVuZGVyRXJy b3JCb3goZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc2ljaHQtcGxhbnVuZycpLCBlLCAnUGxh bnVuZycpOwogICAgfQp9CgovLyA9PT09PSBLb3BmYmVyZWljaCAoRGF0dW0sIFdvY2hlbnRhZywg RmVyaWVuLCBTdMOkcmtlLCBTY2hpY2h0Zm9sZ2UpID09PT09CgpleHBvcnQgZnVuY3Rpb24ga29w ZlJlbmRlcm4oKSB7CiAgICB2YXIgX3BlcmZUYWcgPSBwZXJmTWFyaygna29wZlJlbmRlcm4nKTsK ICAgIHZhciBzdGFuZG9ydGUgPSAoWi5hZG1pbi5zdGFuZG9ydGUgfHwgW10pOwogICAgLy8gRmVh dHVyZS1DaGVja3MgKyBTdGFtbS1XZXJ0ZSBlaW5tYWwgdm9yIGRlciBUYWdlcy1TY2hsZWlmZSwg c3RhdHQKICAgIC8vIHNpZSBwcm8gVGFnIGluIGRlciBmb3JFYWNoIGVybmV1dCBhdWZ6dWxvZXNl biAoMzY1eCBmZWF0dXJlSXN0QWt0aXYKICAgIC8vIGlzdCB0ZXVlcjsgcmVuZGVySG9va3MtUHJv cGVydHktTG9va3VwIGF1Y2gpLgogICAgdmFyIGZpYSA9IHJlbmRlckhvb2tzLmZlYXR1cmVJc3RB a3RpdjsKICAgIHZhciBzZkFrdGl2ICAgICAgICAgPSAhIShmaWEgJiYgZmlhKCdzY2hpY2h0Zm9s Z2VuJykpOwogICAgdmFyIHN0YWVya2VBa3RpdiAgICA9ICEhKGZpYSAmJiBmaWEoJ3N0YWVya2VB bnplaWdlJykpOwogICAgdmFyIHdpY2h0aWdVSSAgICAgICA9ICEhKGZpYSAmJiBmaWEoJ3NvbmRl cnRlcm1pbmVXaWNodGlnJykpOwogICAgdmFyIGZlaWVydGFnQmV0b25lbiA9ICFmaWEgPyB0cnVl IDogISFmaWEoJ2ZlaWVydGFnZVdpY2h0aWdCZXRvbmVuJyk7CiAgICB2YXIgYWt0SmFociAgICAg ICAgID0gWi5hZG1pbi5qYWhyIHx8IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTsKICAgIHZhciBp c3RTVSAgICAgICAgICAgPSAhIShaLnJlY2h0ZSAmJiBaLnJlY2h0ZS5pc3RTdXBlclVzZXIpOwog ICAgdmFyIHNvbmRlclRpdGVsSG9vayA9IHJlbmRlckhvb2tzLnNvbmRlclRpdGVsQXVzVGV4dDsK CiAgICAvLyBMaW5rZSBTZWl0ZTogU2NoaWNodGZvbGdlLUxhYmVscwogICAgdmFyIHNmTGlua3NI dG1sID0gJyc7CiAgICBpZiAoc2ZBa3RpdiAmJiBzdGFuZG9ydGUubGVuZ3RoID4gMCkgewogICAg ICAgIHN0YW5kb3J0ZS5mb3JFYWNoKGZ1bmN0aW9uKHNvLCBpZHgpIHsKICAgICAgICAgICAgdmFy IGxhYmVsTCA9ICcnLCBsYWJlbFIgPSBzby5uYW1lIHx8ICcnOwogICAgICAgICAgICBpZiAoaWR4 ID09PSAwKSB7IGxhYmVsTCA9ICdTY2hpY2h0JzsgfQogICAgICAgICAgICBlbHNlIGlmIChpZHgg PT09IDEpIHsgbGFiZWxMID0gJ2ZvbGdlJzsgfQogICAgICAgICAgICBzZkxpbmtzSHRtbCArPSAn PGRpdiBjbGFzcz0ia29wZi16ZWlsZSBrei1zY2hpY2h0Zm9sZ2UnICsgKGlkeCA9PT0gMCA/ICcg a3otc2YtZXJzdGUnIDogJycpICsgJyI+JyArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9 ImtsLWxhYmVsIj4nICsgZXNjYXBlSFRNTChsYWJlbEwpICsgJzwvc3Bhbj4nICsKICAgICAgICAg ICAgICAgICc8c3BhbiBjbGFzcz0ia2wtd2VydCI+JyArIGVzY2FwZUhUTUwobGFiZWxSKSArICc8 L3NwYW4+PC9kaXY+JzsKICAgICAgICB9KTsKICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdzY2hpY2h0Zm9sZ2UtbGlua3MnKS5pbm5lckhUTUwgPSBzZkxpbmtzSHRtbDsKCiAgICAv LyBSZWNodGUgU2VpdGU6IERhdHVtc3plaWxlbgogICAgdmFyIHRhZ0h0bWwgPSAnJywgd3RIdG1s ID0gJycsIGFubGFzc0h0bWwgPSAnJywgc3RhZXJrZUh0bWwgPSAnJzsKICAgIHZhciBzZlplaWxl biA9IFtdOwogICAgc3RhbmRvcnRlLmZvckVhY2goZnVuY3Rpb24oKSB7IHNmWmVpbGVuLnB1c2go JycpOyB9KTsKCiAgICBaLnRhZ2UuZm9yRWFjaChmdW5jdGlvbihkKSB7CiAgICAgICAgdmFyIGRT dHIgPSBkYXR1bVN0cihkKTsKICAgICAgICB2YXIgaW5mbyA9IFoudGFnSW5mb3NbZFN0cl0gfHwg eyB0eXA6ICdub3JtYWwnLCBnZWJ1cnRzdGFnZTogW10gfTsKICAgICAgICB2YXIgaXN0SGV1dGUg PSBkU3RyID09PSBaLmhldXRlU3RyOwogICAgICAgIHZhciB3ZSA9IGlzdFdvY2hlbmVuZGUoZCk7 CgogICAgICAgIC8vIFJlaWNoaGFsdGlnZXIgVG9vbHRpcDogRmVpZXJ0YWcsIEZlcmllbiwgU29u ZGVydGVybWluLCBHZWJ1cnRzdGFnZQogICAgICAgIHZhciB0aXRsZVRlaWxlID0gW107CiAgICAg ICAgaWYgKGluZm8ubmFtZSkgdGl0bGVUZWlsZS5wdXNoKGluZm8udHlwID09PSAnZmVpZXJ0YWcn ID8gJ/CfjokgJyArIGluZm8ubmFtZSA6IGluZm8ubmFtZSk7CiAgICAgICAgaWYgKGluZm8uc29u ZGVyKSB7CiAgICAgICAgICAgIHZhciBzVGl0ZWwgPSBpbmZvLnNvbmRlci50aXRlbCB8fCAoc29u ZGVyVGl0ZWxIb29rICYmIHNvbmRlclRpdGVsSG9vayhpbmZvLnNvbmRlci50ZXh0KSkgfHwgJyc7 CiAgICAgICAgICAgIHRpdGxlVGVpbGUucHVzaCgoaW5mby5zb25kZXIudHlwID09PSAnd2FybnVu ZycgPyAn4pqgICcgOiAn4oS5ICcpICsgc1RpdGVsKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlu Zm8uZ2VidXJ0c3RhZ2UgJiYgaW5mby5nZWJ1cnRzdGFnZS5sZW5ndGgpIHsKICAgICAgICAgICAg dmFyIGdiID0gaW5mby5nZWJ1cnRzdGFnZS5tYXAoZnVuY3Rpb24oZykgewogICAgICAgICAgICAg ICAgdmFyIGFsdGVyID0gZy5qYWhyID8gJyAoJyArIChha3RKYWhyIC0gZy5qYWhyKSArICcpJyA6 ICcnOwogICAgICAgICAgICAgICAgcmV0dXJuIGcubmFtZSArIGFsdGVyOwogICAgICAgICAgICB9 KS5qb2luKCcsICcpOwogICAgICAgICAgICB0aXRsZVRlaWxlLnB1c2goJ/CfjoIgR2VidXJ0c3Rh ZzogJyArIGdiKTsKICAgICAgICB9CiAgICAgICAgdmFyIHRpdGxlID0gdGl0bGVUZWlsZS5qb2lu KCdcbicpOwoKICAgICAgICAvLyBUYWdlc3R5cC1LbGFzc2UgZsO8ciBLb3BmCiAgICAgICAgdmFy IGtvcGZDbHMgPSAnJzsKICAgICAgICBpZiAoaXN0SGV1dGUpIGtvcGZDbHMgPSAnIGtkLWhldXRl JzsKICAgICAgICBlbHNlIGlmIChpbmZvLnR5cCA9PT0gJ2ZlaWVydGFnJykga29wZkNscyA9ICcg a2QtZmVpZXJ0YWctYmcnICsgKChpbmZvLndpY2h0aWcgJiYgZmVpZXJ0YWdCZXRvbmVuKSA/ICcg a2QtZmVpZXJ0YWctd2ljaHRpZycgOiAnJyk7CiAgICAgICAgZWxzZSBpZiAod2UpIGtvcGZDbHMg PSAnIGtkLXdvY2hlbmVuZGUnOwogICAgICAgIGlmIChpbmZvLnNvbmRlcikga29wZkNscyArPSAn IGtkLXNvbmRlcnRhZy0nICsgKGluZm8uc29uZGVyLnR5cCB8fCAnaGlud2VpcycpOwoKICAgICAg ICAvLyBaZWlsZSAxOiBEYXR1bSAoZGQubW0uKSDigJQgQmFkZ2VzIHNpbmQgamV0enQgaW4gZGVu IHNlcGFyYXRlbgogICAgICAgIC8vIEFubGFzcy0gdW5kIEV2ZW50cy1aZWlsZW4gKEZpbmRpbmdz IEMuMTIvQy4xMykuIERhdHVtcy1aZWxsZQogICAgICAgIC8vIGJsZWlidCBzY2hsYW5rLgogICAg ICAgIHRhZ0h0bWwgKz0gJzxkaXYgY2xhc3M9ImtkLXplbGxlJyArIGtvcGZDbHMgKyAnIiB0aXRs ZT0iJyArIGVzY2FwZUF0dHIodGl0bGUpICsgJyIgZGF0YS1kYXR1bT0iJyArIGRTdHIgKyAnIj4n ICsKICAgICAgICAgICAgZGF0dW1LdXJ6REUoZCkgKyAnPC9kaXY+JzsKCiAgICAgICAgLy8gWmVp bGUgMjogV29jaGVudGFnCiAgICAgICAgd3RIdG1sICs9ICc8ZGl2IGNsYXNzPSJrZC16ZWxsZScg KyBrb3BmQ2xzICsgJyI+JyArIHdvY2hlbnRhZ0t1cnooZCkgKyAnPC9kaXY+JzsKCiAgICAgICAg Ly8gWmVpbGUgMzogS29tYmluaWVydGUgSWNvbi1aZWlsZSDigJQgRmVpZXJ0YWctSWNvbiArIFNv bmRlcnRlcm1pbi1JY29uCiAgICAgICAgLy8gKyBHZWJ1cnRzdGFncy1JY29uIG5lYmVuZWluYW5k ZXIgaW4gZWluZXIgWmVsbGUuIEtsaWNrIGF1ZiBkYXMKICAgICAgICAvLyBGZWllcnRhZy1JY29u IG9lZmZuZXQgZGFzIERldGFpbC1Nb2RhbCAoQmV6ZWljaG51bmcgKyBCZXNjaHJlaWJ1bmcgKwog ICAgICAgIC8vIFdpa2lwZWRpYS1MaW5rKTsgS2xpY2sgYXVmIGRhcyBTb25kZXJ0ZXJtaW4tSWNv biBvZWZmbmV0IGRhcwogICAgICAgIC8vIEhpbndlaXMtTW9kYWwuIEZlcmllbiB3ZXJkZW4gbmFj aCBkZXIgTG9vcCBhbHMgaG9yaXpvbnRhbGUgUmFuZ2UtQmFyCiAgICAgICAgLy8gZGFydWViZXIg Z2VsZWd0IOKAlCBkaWUgQmFyIGJsZWlidCBmdWVyIG1laHJ0YWVnaWdlIFNpY2h0YmFya2VpdC4K ICAgICAgICB2YXIgYW5sYXNzQ2xzID0gJycsIGFubGFzc1RpdGxlID0gJyc7CiAgICAgICAgdmFy IGljb25zSW5uZXIgPSAnJzsKICAgICAgICB2YXIgZXZlbnRzVGl0bGVUZWlsZSA9IFtdOwogICAg ICAgIGlmIChpbmZvLnR5cCA9PT0gJ2ZlaWVydGFnJykgewogICAgICAgICAgICB2YXIgZnRJY29u ID0gaW5mby5pY29uIHx8IEtBVEVHT1JJRV9JQ09OX0RFRkFVTFRbaW5mby5rYXRlZ29yaWVdIHx8 IEtBVEVHT1JJRV9JQ09OX0RFRkFVTFQuZ2VzZXR6bGljaDsKICAgICAgICAgICAgYW5sYXNzQ2xz ID0gJyBrZC1hbmxhc3MtZmVpZXJ0YWcga2QtYW5sYXNzLWZlaWVydGFnLScgKyAoaW5mby5rYXRl Z29yaWUgfHwgJ2dlc2V0emxpY2gnKSArCiAgICAgICAgICAgICAgICAgICAgICAgICgoaW5mby53 aWNodGlnICYmIGZlaWVydGFnQmV0b25lbikgPyAnIGtkLWZlaWVydGFnLXdpY2h0aWcnIDogJycp OwogICAgICAgICAgICBhbmxhc3NUaXRsZSA9IGluZm8ubmFtZSB8fCAnJzsKICAgICAgICAgICAg aWNvbnNJbm5lciArPSAnPHNwYW4gY2xhc3M9ImtkLWFubGFzcy1pY29uIiB0aXRsZT0iJyArIGVz Y2FwZUF0dHIoaW5mby5uYW1lIHx8ICcnKSArICciPicgKyBlc2NhcGVIVE1MKGZ0SWNvbikgKyAn PC9zcGFuPic7CiAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cCA9PT0gJ2ZlcmllbicpIHsKICAg ICAgICAgICAgYW5sYXNzQ2xzID0gJyBrZC1hbmxhc3MtZmVyaWVuJzsKICAgICAgICAgICAgYW5s YXNzVGl0bGUgPSBpbmZvLm5hbWUgfHwgJyc7CiAgICAgICAgfQogICAgICAgIGlmIChpbmZvLnNv bmRlcikgewogICAgICAgICAgICB2YXIgc0ljb24gPSBpbmZvLnNvbmRlci5pY29uIHx8IChpbmZv LnNvbmRlci50eXAgPT09ICd3YXJudW5nJyA/ICfimqAnIDogJ+KEuScpOwogICAgICAgICAgICB2 YXIgc1RpdGVsVGV4dCA9IGluZm8uc29uZGVyLnRpdGVsIHx8IChzb25kZXJUaXRlbEhvb2sgJiYg c29uZGVyVGl0ZWxIb29rKGluZm8uc29uZGVyLnRleHQpKSB8fCAnJzsKICAgICAgICAgICAgLy8g IndpY2h0aWciLUZsYWcgKENoZXJyeS1QaWNrIDg0ZmIwZjcpOiBleHBsaXppdCB1ZWJlciBkYXMg bmV1ZQogICAgICAgICAgICAvLyBgd2ljaHRpZ2AtUHJvcGVydHkgZ2VzZXR6dCwgb2RlciBiYWNr d2FyZHMtY29tcGF0IHVlYmVyIGRhcyBhbHRlCiAgICAgICAgICAgIC8vIGB0eXA6J3dhcm51bmcn YC4gQ1NTLUtsYXNzZSB3aXJkIG51ciBhbmdlaGFlbmd0LCB3ZW5uIGRlciBUb2dnbGUKICAgICAg ICAgICAgLy8gYGZlYXR1cmVzLnNvbmRlcnRlcm1pbmVXaWNodGlnYCBha3RpdiBpc3Qg4oCUIHNv IGJsZWlidCBkYXMKICAgICAgICAgICAgLy8gU3RhbmRhcmQtVmVyaGFsdGVuIHVudmVyYWVuZGVy dCwgc29sYW5nZSBBZG1pbiBkZW4gU2NoYWx0ZXIgbmljaHQKICAgICAgICAgICAgLy8gdW1sZWd0 LgogICAgICAgICAgICB2YXIgaXN0V2ljaHRpZyA9ICEhaW5mby5zb25kZXIud2ljaHRpZyB8fCBp bmZvLnNvbmRlci50eXAgPT09ICd3YXJudW5nJzsKICAgICAgICAgICAgdmFyIHdpY2h0aWdDbHMg PSAoaXN0V2ljaHRpZyAmJiB3aWNodGlnVUkpID8gJyBrZC1ldmVudC13aWNodGlnJyA6ICcnOwog ICAgICAgICAgICB2YXIgc0NscyA9ICdrZC1ldmVudC1pY29uIGtkLWV2ZW50LXNvbmRlciBrZC1l dmVudC0nICsgKGluZm8uc29uZGVyLnR5cCB8fCAnaGlud2VpcycpICsgd2ljaHRpZ0NsczsKICAg ICAgICAgICAgaWNvbnNJbm5lciArPSAnPHNwYW4gY2xhc3M9IicgKyBzQ2xzICsgJyIgZGF0YS1z b25kZXItZGF0dW09IicgKyBlc2NhcGVBdHRyKGluZm8uc29uZGVyLmRhdHVtKSArICciIHRpdGxl PSInICsgZXNjYXBlQXR0cihzVGl0ZWxUZXh0KSArICciPicgKyBlc2NhcGVIVE1MKHNJY29uKSAr ICc8L3NwYW4+JzsKICAgICAgICAgICAgZXZlbnRzVGl0bGVUZWlsZS5wdXNoKHNUaXRlbFRleHQp OwogICAgICAgIH0KICAgICAgICBpZiAoaW5mby5nZWJ1cnRzdGFnZSAmJiBpbmZvLmdlYnVydHN0 YWdlLmxlbmd0aCkgewogICAgICAgICAgICB2YXIgZ2JOYW1lbiA9IGluZm8uZ2VidXJ0c3RhZ2Uu bWFwKGZ1bmN0aW9uKGcpIHsKICAgICAgICAgICAgICAgIHZhciBhbHRlciA9IGcuamFociA/ICcg KCcgKyAoYWt0SmFociAtIGcuamFocikgKyAnKScgOiAnJzsKICAgICAgICAgICAgICAgIHJldHVy biBnLm5hbWUgKyBhbHRlcjsKICAgICAgICAgICAgfSkuam9pbignLCAnKTsKICAgICAgICAgICAg aWNvbnNJbm5lciArPSAnPHNwYW4gY2xhc3M9ImtkLWV2ZW50LWljb24ga2QtZXZlbnQtZ2VidXJ0 c3RhZyIgdGl0bGU9IvCfjoIgR2VidXJ0c3RhZzogJyArIGVzY2FwZUF0dHIoZ2JOYW1lbikgKyAn Ij7wn46CPC9zcGFuPic7CiAgICAgICAgICAgIGV2ZW50c1RpdGxlVGVpbGUucHVzaCgnR2VidXJ0 c3RhZzogJyArIGdiTmFtZW4pOwogICAgICAgIH0KICAgICAgICBpZiAoaW5mby5kc3QpIHsKICAg ICAgICAgICAgLy8gWmVpdHVtc3RlbGx1bmc6IGtsZWluZXMgSWNvbiBtaXQgZXJrbGFlcmVuZGVt IFRvb2x0aXAuIFVzZXIgd2lyZAogICAgICAgICAgICAvLyBzbyBpbSBWb3JhdXMgYXVmIFNjaGlj aHRlbiBtaXQgdmVyYWVuZGVydGVyIERhdWVyIGF1Zm1lcmtzYW0uCiAgICAgICAgICAgIHZhciBk c3RUaXRlbCA9IGluZm8uZHN0ID09PSAndm9yJwogICAgICAgICAgICAgICAgPyAnWmVpdHVtc3Rl bGx1bmc6IFNvbW1lcnplaXQgYmVnaW5udCDigJQgVWhyIHdpcmQgdW0gMDI6MDAgYXVmIDAzOjAw IHZvcmdlc3RlbGx0IChTY2hpY2h0ZW4gMWgga3VlcnplciknCiAgICAgICAgICAgICAgICA6ICda ZWl0dW1zdGVsbHVuZzogV2ludGVyemVpdCBiZWdpbm50IOKAlCBVaHIgd2lyZCB1bSAwMzowMCBh dWYgMDI6MDAgenVydWVja2dlc3RlbGx0IChTY2hpY2h0ZW4gMWggbGFlbmdlciknOwogICAgICAg ICAgICBpY29uc0lubmVyICs9ICc8c3BhbiBjbGFzcz0ia2QtZXZlbnQtaWNvbiBrZC1ldmVudC1k c3QiIHRpdGxlPSInICsgZXNjYXBlQXR0cihkc3RUaXRlbCkgKyAnIj7wn5WQPC9zcGFuPic7CiAg ICAgICAgICAgIGV2ZW50c1RpdGxlVGVpbGUucHVzaChkc3RUaXRlbCk7CiAgICAgICAgfQogICAg ICAgIHZhciB6ZWxsZVRpdGxlID0gYW5sYXNzVGl0bGUgPyBhbmxhc3NUaXRsZSArIChldmVudHNU aXRsZVRlaWxlLmxlbmd0aCA/ICdcbicgKyBldmVudHNUaXRsZVRlaWxlLmpvaW4oJ1xuJykgOiAn JykgOiBldmVudHNUaXRsZVRlaWxlLmpvaW4oJ1xuJyk7CiAgICAgICAgdmFyIHplbGxlQ2xzRXh0 cmEgPSAoaW5mby5zb25kZXIgfHwgaXN0U1UgPyAnIGtkLWV2ZW50cy1rbGlja2JhcicgOiAnJyk7 CiAgICAgICAgYW5sYXNzSHRtbCArPSAnPGRpdiBjbGFzcz0ia2QtemVsbGUnICsgYW5sYXNzQ2xz ICsgemVsbGVDbHNFeHRyYSArICciIHRpdGxlPSInICsgZXNjYXBlQXR0cih6ZWxsZVRpdGxlKSAr ICciIGRhdGEtZGF0dW09IicgKyBkU3RyICsgJyI+JyArIGljb25zSW5uZXIgKyAnPC9kaXY+JzsK CiAgICAgICAgLy8gWmVpbGUgNDogU3TDpHJrZSAobnVyIHdlbm4gRmVhdHVyZS1Ub2dnbGUgc3Rh ZXJrZUFuemVpZ2UgYWt0aXYg4oCUIEZpbmRpbmcgQy4xNSkKICAgICAgICBpZiAoc3RhZXJrZUFr dGl2KSB7CiAgICAgICAgICAgIHZhciBzdCA9IHN0YWVya2VCZXJlY2huZW4oZFN0cik7CiAgICAg ICAgICAgIHN0YWVya2VIdG1sICs9ICc8ZGl2IGNsYXNzPSJrZC16ZWxsZSAnICsgKHN0Lm9rID8g J3N0YWVya2Utb2snIDogJ3N0YWVya2Utd2FybnVuZycpICsgJyIgdGl0bGU9IkY6JyArIHN0LmYg KyAnIFM6JyArIHN0LnMgKyAnIE46JyArIHN0Lm4gKyAnIj4nICsgc3QudGV4dCArICc8L2Rpdj4n OwogICAgICAgIH0KCiAgICAgICAgLy8gU2NoaWNodGZvbGdlLVplaWxlbgogICAgICAgIHN0YW5k b3J0ZS5mb3JFYWNoKGZ1bmN0aW9uKHNvLCBpZHgpIHsKICAgICAgICAgICAgdmFyIHNmOwogICAg ICAgICAgICBpZiAoc28uaXN0UG9vbCkgc2YgPSAnUG9vbCc7CiAgICAgICAgICAgIGVsc2Ugc2Yg PSAoc28uc2NoaWNodGZvbGdlIHx8IHt9KVtkU3RyXSB8fCAnJzsKICAgICAgICAgICAgdmFyIHNm Q2xzID0gJyc7CiAgICAgICAgICAgIGlmIChpbmZvLnR5cCA9PT0gJ2ZlaWVydGFnJykgc2ZDbHMg PSAnIGtkLWZlaWVydGFnLWJnJzsKICAgICAgICAgICAgZWxzZSBpZiAod2UpIHNmQ2xzID0gJyBr ZC13b2NoZW5lbmRlJzsKICAgICAgICAgICAgaWYgKHNmICYmICFzby5pc3RQb29sKSBzZkNscyAr PSAnIHNmLScgKyBzZi50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICBpZiAoc28uaXN0UG9vbCkg c2ZDbHMgKz0gJyBzZi1wb29sJzsKICAgICAgICAgICAgc2ZaZWlsZW5baWR4XSArPSAnPGRpdiBj bGFzcz0ia2QtemVsbGUnICsgc2ZDbHMgKyAnIj4nICsgZXNjYXBlSFRNTChzZikgKyAnPC9kaXY+ JzsKICAgICAgICB9KTsKICAgIH0pOwoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXR1 bS16ZWlsZS10YWcnKS5pbm5lckhUTUwgPSB0YWdIdG1sOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2RhdHVtLXplaWxlLXdvY2hlbnRhZycpLmlubmVySFRNTCA9IHd0SHRtbDsKICAgIC8v IEZlcmllbi1SYW5nZS1PdmVybGF5OiB6dXNhbW1lbmhhZW5nZW5kZSBGZXJpZW4tVGFnZSBpbiBa LnRhZ2UKICAgIC8vIHdlcmRlbiBhbHMgaG9yaXpvbnRhbGUgQmFyIGdlcmVuZGVydCwgYWJzb2x1 dCBwb3NpdGlvbmllcnQgdWViZXIKICAgIC8vIGRlbiBwZXItVGFnLVplbGxlbi4gU3RhcnQgPSBJ bmRleCBkZXMgZXJzdGVuIEZlcmllbi1UYWdlcywKICAgIC8vIEJyZWl0ZSA9IEFuemFobF9UYWdl ICogWmVsbGVuLUJyZWl0ZS4gTmFtZSB3aXJkIGVpbm1hbCB6ZW50cmllcnQuCiAgICB2YXIgZmVy aWVuQmFyc0h0bWwgPSAnJzsKICAgIHZhciB6ZWxsZUJyZWl0ZVB4ID0gcGFyc2VJbnQoZ2V0Q29t cHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0t emVsbGUtYnJlaXRlJyksIDEwKSB8fCA2MjsKICAgIHZhciByYW5nZVN0YXJ0ID0gLTEsIHJhbmdl TmFtZSA9ICcnOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gWi50YWdlLmxlbmd0aDsgaSsrKSB7 CiAgICAgICAgdmFyIGRLZXkgPSAoaSA8IFoudGFnZS5sZW5ndGgpID8gZGF0dW1TdHIoWi50YWdl W2ldKSA6IG51bGw7CiAgICAgICAgdmFyIGluZm8yID0gZEtleSA/IChaLnRhZ0luZm9zW2RLZXld IHx8IHt9KSA6IHt9OwogICAgICAgIHZhciBpc3RGZXJpZW4gPSBpbmZvMi50eXAgPT09ICdmZXJp ZW4nOwogICAgICAgIHZhciBuYW1lID0gaXN0RmVyaWVuID8gKGluZm8yLm5hbWUgfHwgJycpIDog Jyc7CiAgICAgICAgaWYgKGlzdEZlcmllbiAmJiByYW5nZVN0YXJ0IDwgMCkgewogICAgICAgICAg ICAvLyBuZXVlIFJhbmdlIHN0YXJ0ZXQKICAgICAgICAgICAgcmFuZ2VTdGFydCA9IGk7IHJhbmdl TmFtZSA9IG5hbWU7CiAgICAgICAgfSBlbHNlIGlmIChyYW5nZVN0YXJ0ID49IDAgJiYgKCFpc3RG ZXJpZW4gfHwgbmFtZSAhPT0gcmFuZ2VOYW1lKSkgewogICAgICAgICAgICAvLyBSYW5nZSBlbmRl dCBoaWVyIChvZGVyIE5hbWUgd2VjaHNlbHQpCiAgICAgICAgICAgIHZhciBsYWVuZ2UgPSBpIC0g cmFuZ2VTdGFydDsKICAgICAgICAgICAgdmFyIGxlZnRQeCA9IHJhbmdlU3RhcnQgKiB6ZWxsZUJy ZWl0ZVB4OwogICAgICAgICAgICB2YXIgd2lkdGhQeCA9IGxhZW5nZSAqIHplbGxlQnJlaXRlUHg7 CiAgICAgICAgICAgIC8vIFBybyBXb2NoZW5lbmQtVGFnIGlubmVyaGFsYiBkZXIgUmFuZ2UgZWlu ZW4gZGV6ZW50ZW4gTWFya2VyCiAgICAgICAgICAgIC8vIGVpbnNldHplbiwgZGFtaXQgU2EvU28g aW4gZGVyIEZlcmllbi1CYXIgd2VpdGVyaGluIGVya2VubmJhcgogICAgICAgICAgICAvLyBibGVp YmVuIChzb25zdCB3ZXJkZW4gc2llIHZvbiBkZXIgQmFyIHVlYmVybWFsdCkuCiAgICAgICAgICAg IHZhciB3ZU1hcmtlcnMgPSAnJzsKICAgICAgICAgICAgZm9yICh2YXIgdyA9IHJhbmdlU3RhcnQ7 IHcgPCByYW5nZVN0YXJ0ICsgbGFlbmdlOyB3KyspIHsKICAgICAgICAgICAgICAgIGlmIChpc3RX b2NoZW5lbmRlKFoudGFnZVt3XSkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgd2VMZWZ0ID0g KHcgLSByYW5nZVN0YXJ0KSAqIHplbGxlQnJlaXRlUHg7CiAgICAgICAgICAgICAgICAgICAgd2VN YXJrZXJzICs9ICc8c3BhbiBjbGFzcz0ia2QtZmVyaWVuLWJhci13ZSIgc3R5bGU9ImxlZnQ6JyAr IHdlTGVmdCArICdweDt3aWR0aDonICsgemVsbGVCcmVpdGVQeCArICdweCI+PC9zcGFuPic7CiAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmVyaWVuQmFyc0h0bWwg Kz0gJzxkaXYgY2xhc3M9ImtkLWZlcmllbi1iYXIiIHN0eWxlPSJsZWZ0OicgKyBsZWZ0UHggKyAn cHg7d2lkdGg6JyArIHdpZHRoUHggKyAncHgiIHRpdGxlPSInICsgZXNjYXBlQXR0cihyYW5nZU5h bWUpICsgJyI+JyArCiAgICAgICAgICAgICAgICB3ZU1hcmtlcnMgKwogICAgICAgICAgICAgICAg JzxzcGFuIGNsYXNzPSJrZC1mZXJpZW4tYmFyLXRleHQiPicgKyBlc2NhcGVIVE1MKHJhbmdlTmFt ZSkgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAgcmFuZ2VT dGFydCA9IGlzdEZlcmllbiA/IGkgOiAtMTsKICAgICAgICAgICAgcmFuZ2VOYW1lID0gaXN0RmVy aWVuID8gbmFtZSA6ICcnOwogICAgICAgIH0KICAgIH0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRC eUlkKCdkYXR1bS16ZWlsZS1hbmxhc3MnKS5pbm5lckhUTUwgPSBhbmxhc3NIdG1sICsgZmVyaWVu QmFyc0h0bWw7CiAgICB2YXIgc3RhZXJrZUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0 YWVya2UtemVpbGUnKTsKICAgIHN0YWVya2VFbC5pbm5lckhUTUwgPSBzdGFlcmtlSHRtbDsKICAg IC8vIENvbnRhaW5lciBhdXNibGVuZGVuIHdlbm4gVG9nZ2xlIGF1cywgZGFtaXQgYXVjaCBIb2Vo ZSB3ZWdmYWVsbHQKICAgIHN0YWVya2VFbC5zdHlsZS5kaXNwbGF5ID0gc3RhZXJrZUFrdGl2ID8g JycgOiAnbm9uZSc7CgogICAgdmFyIHNmUmVjaHRzSHRtbCA9ICcnOwogICAgaWYgKHNmQWt0aXYp IHsKICAgICAgICBzZlplaWxlbi5mb3JFYWNoKGZ1bmN0aW9uKHopIHsKICAgICAgICAgICAgc2ZS ZWNodHNIdG1sICs9ICc8ZGl2IGNsYXNzPSJrb3BmLWRhdGVuLXplaWxlIj4nICsgeiArICc8L2Rp dj4nOwogICAgICAgIH0pOwogICAgfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjaGlj aHRmb2xnZS1yZWNodHMnKS5pbm5lckhUTUwgPSBzZlJlY2h0c0h0bWw7CiAgICAvLyBUYWItRmFl cmJ1bmcgUHJ1ZWZ1bmcgbmFjaCBqZWRlbSBIZWFkZXItUmUtUmVuZGVyIGFrdHVhbGlzaWVyZW4g 4oCUCiAgICAvLyBqZWRlIFNjaGljaHQtQWVuZGVydW5nIHRyaWdnZXJ0IGtvcGZSZW5kZXJuLCBh bHNvIGJsZWlidCBkaWUgRmFlcmJ1bmcKICAgIC8vIGltbWVyIGF1ZiBkZW0gU3RhbmQgZGVyIGFr dHVlbGxlbiBEYXRlbi4KICAgIGlmIChyZW5kZXJIb29rcy5iZXNldHp1bmdzVGFiRmFyYmVBa3R1 YWxpc2llcmVuKSByZW5kZXJIb29rcy5iZXNldHp1bmdzVGFiRmFyYmVBa3R1YWxpc2llcmVuKCk7 CiAgICBwZXJmTWVhc3VyZShfcGVyZlRhZyk7Cn0KCi8vID09PT09IE5hbWVuc3NwYWx0ZSA9PT09 PQoKZXhwb3J0IGZ1bmN0aW9uIG5hbWVuUmVuZGVybigpIHsKICAgIHZhciBfcGVyZlRhZyA9IHBl cmZNYXJrKCduYW1lblJlbmRlcm4nKTsKICAgIHZhciBodG1sID0gJyc7CiAgICB2YXIgbGV0enRl R3J1cHBlID0gbnVsbDsKCiAgICBaLnBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAg ICAgIHZhciBnID0gcC5ncnVwcGUgfHwgJz8nOwoKICAgICAgICAvLyBHcnVwcGVudHJlbm56ZWls ZSBlaW5mw7xnZW4KICAgICAgICBpZiAoZyAhPT0gbGV0enRlR3J1cHBlKSB7CiAgICAgICAgICAg IGlmIChsZXR6dGVHcnVwcGUgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHZhciBnTGFiZWwg PSAoWi5ncnVwcGVuTWFwW2ddICYmIFouZ3J1cHBlbk1hcFtnXS5iZXplaWNobnVuZykgfHwgZzsK ICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9Im5hbWVuLXRyZW5uZXIiPi0tLSAn ICsgZXNjYXBlSFRNTChnTGFiZWwpICsgJyAtLS08L2Rpdj4nOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGxldHp0ZUdydXBwZSA9IGc7CiAgICAgICAgfQoKICAgICAgICB2YXIgZ3JDbHMgPSAn Z3ItJyArIGcuY2hhckF0KDApOwogICAgICAgIHZhciB1bWdDbHMgPSAhcC5ha3RpdiA/ICcgbmFt ZW4temVpbGUtdW1nZXNldHp0JyA6ICcnOwogICAgICAgIHZhciBuYW1lQW56ZWlnZSA9IChwLmRp ZW5zdGdyYWQgPyBwLmRpZW5zdGdyYWQgKyAnICcgOiAnJykgKyBwLm5hbWU7CiAgICAgICAgaHRt bCArPSAnPGRpdiBjbGFzcz0ibmFtZW4temVpbGUnICsgdW1nQ2xzICsgJyIgZGF0YS1wZXJzb24t aWQ9IicgKyBwLmlkICsgJyIgdGl0bGU9IicgKwogICAgICAgICAgICAocC5ha3RpdiA/ICcnIDog J1VtZ2VzZXR6dCDigJQgbnVyIHp1ciBSZWNoZXJjaGUgZWluZ2VibGVuZGV0JykgKyAnIj4nICsK ICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im56LW5hbWUiPicgKwogICAgICAgICAgICAgICAgYXZh dGFyS3JlaXNIdG1sKHAsIDIwKSArCiAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9Im56LW5h bWUtdGV4dCI+JyArIGVzY2FwZUhUTUwobmFtZUFuemVpZ2UpICsgKHAuYWt0aXYgPyAnJyA6ICcg 4oCgJykgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICc8 ZGl2IGNsYXNzPSJuei1vZSI+JyArIGVzY2FwZUhUTUwocC5vZSB8fCAnJykgKyAnPC9kaXY+JyAr CiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJuei1ncnVwcGUgJyArIGdyQ2xzICsgJyI+JyArIGVz Y2FwZUhUTUwoZykgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJuei1kbnIi IHRpdGxlPSJUZWxlZm9uIj4nICsgZXNjYXBlSFRNTChwLnRlbGVmb24gfHwgJycpICsgJzwvZGl2 PicgKwogICAgICAgICAgICAnPGRpdiBjbGFzcz0ibnotcmFuZyIgdGl0bGU9IkRpZW5zdHJhbmci PicgKyAocC5wb3NpdGlvbiAhPSBudWxsID8gcC5wb3NpdGlvbiA6ICcnKSArICc8L2Rpdj4nICsK ICAgICAgICAnPC9kaXY+JzsKICAgIH0pOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25h bWVuLWxpc3RlJykuaW5uZXJIVE1MID0gaHRtbDsKICAgIHBlcmZNZWFzdXJlKF9wZXJmVGFnKTsK fQoKLy8gPT09PT0gRGF0ZW5ncmlkID09PT09CgovLyBNYXBwdCBlaW5lbiBTY2hyYWZmdXItQ29k ZSB3aWUgIkYxIi8iUzIiLyJOMSIgYXVmIGRpZSB6dWdlaG9lcmlnZSBDU1MtS2xhc3NlLgpmdW5j dGlvbiBzY2hyYWZmdXJLbGFzc2UobSkgewogICAgaWYgKCFtKSByZXR1cm4gJyc7CiAgICB2YXIg cHIgPSBtLmNoYXJBdCgwKSwgcmcgPSBtLmNoYXJBdCgxKTsKICAgIGlmIChwciA9PT0gJ0YnKSBy ZXR1cm4gcmcgPT09ICcxJyA/ICdzY2hyYWZmdXItZnJ1ZWgnIDogJ3NjaHJhZmZ1ci1mcnVlaC0y JzsKICAgIGlmIChwciA9PT0gJ1MnKSByZXR1cm4gcmcgPT09ICcxJyA/ICdzY2hyYWZmdXItc3Bh ZXQnIDogJ3NjaHJhZmZ1ci1zcGFldC0yJzsKICAgIGlmIChwciA9PT0gJ04nKSByZXR1cm4gcmcg PT09ICcxJyA/ICdzY2hyYWZmdXItbmFjaHQnIDogJ3NjaHJhZmZ1ci1uYWNodC0yJzsKICAgIHJl dHVybiAnJzsKfQoKZXhwb3J0IGZ1bmN0aW9uIGRhdGVuR3JpZFJlbmRlcm4oKSB7CiAgICB2YXIg X3BlcmZUYWcgPSBwZXJmTWFyaygnZGF0ZW5HcmlkUmVuZGVybicpOwogICAgLy8gU2NocmFmZnVy ZW4gdm9yYWIgcHJvIFRhZyBiZXJlY2huZW4sIGRhbWl0IHNpZSBpbmxpbmUgaW4gZGVuIEhUTUwt U3RyaW5nCiAgICAvLyBrb2VubmVuIOKAlCBzcGFydCBoaW50ZXJoZXIgfjIyMDAgRE9NLVF1ZXJp ZXMgKHNpZWhlIHNjaHJhZmZ1ckJlcmVjaG5lbgogICAgLy8gKyBIb3QtUGF0aC1BdWRpdCkuIE1h cDogeyAiZGF0dW18cGlkIjogIkYxIiB8ICJTMiIgfCDigKYgfQogICAgdmFyIHNjaHJNYXAgPSB7 fTsKICAgIFoudGFnZS5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKICAgICAgICB2YXIgZFN0ciA9IGRh dHVtU3RyKGQpOwogICAgICAgIHZhciBzY2hyID0gc2NocmFmZnVyQmVyZWNobmVuKGRTdHIpOwog ICAgICAgIE9iamVjdC5rZXlzKHNjaHIpLmZvckVhY2goZnVuY3Rpb24ocGlkKSB7CiAgICAgICAg ICAgIHNjaHJNYXBbZFN0ciArICd8JyArIHBpZF0gPSBzY2hyW3BpZF07CiAgICAgICAgfSk7CiAg ICB9KTsKCiAgICB2YXIgaHRtbCA9ICcnOwogICAgdmFyIGxldHp0ZUdydXBwZSA9IG51bGw7CiAg ICAvLyBWb2xsZSBHcmlkLUJyZWl0ZSAoYWxsZSBUYWdlKS4gRGVyIFRyZW5uZXIgaXN0IGVpbiBs ZWVyZXMgRmxleC1LaW5kIHVuZAogICAgLy8gYmVrYW0gbWl0ICJtaW4td2lkdGg6MTAwJSIgbnVy IGRpZSBTSUNIVEJBUkUgQnJlaXRlIGRlcyBTY3JvbGwtQ29udGFpbmVycwogICAgLy8g4oCUIGJl aW0gUmF1c3Njcm9sbGVuIGJsaWViIGVyIHN0ZWhlbiwgZGllIERhdGVuemVpbGVuIGxpZWZlbiBh YmVyIHdlaXRlcgogICAgLy8gKHdlaXNzZXIgU3RyZWlmZW4gcmVjaHRzIG5lYmVuIGRlbSBHcnVw cGVuLUxhYmVsKS4gQm9yZGVyLWJveCAtPiBqZWRlCiAgICAvLyBaZWxsZSBpc3QgZXhha3QgLS16 ZWxsZS1icmVpdGUgYnJlaXQsIGFsc28gR2VzYW10YnJlaXRlID0gYnJlaXRlICogVGFnZS4KICAg IHZhciBncmlkQnJlaXRlQ3NzID0gJ2NhbGModmFyKC0temVsbGUtYnJlaXRlKSAqICcgKyAoWi50 YWdlLmxlbmd0aCB8fCAwKSArICcpJzsKCiAgICBaLnBlcnNvbmVuLmZvckVhY2goZnVuY3Rpb24o cCkgewogICAgICAgIHZhciBnID0gcC5ncnVwcGUgfHwgJz8nOwoKICAgICAgICAvLyBHcnVwcGVu dHJlbm56ZWlsZSBpbSBHcmlkCiAgICAgICAgaWYgKGcgIT09IGxldHp0ZUdydXBwZSkgewogICAg ICAgICAgICBpZiAobGV0enRlR3J1cHBlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvLyBJ bmxpbmUtU3R5bGUsIGRhbWl0IEJyb3dzZXItQ2FjaGUgb2RlciBDU1MtT3ZlcnJpZGUgZWdhbCBz aW5kLgogICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZ3JpZC10cmVubmVyIiBz dHlsZT0iYmFja2dyb3VuZDp2YXIoLS1iZy1wcmltYXJ5KTt3aWR0aDonICsgZ3JpZEJyZWl0ZUNz cyArICc7bWluLXdpZHRoOjEwMCUiPjwvZGl2Pic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAg bGV0enRlR3J1cHBlID0gZzsKICAgICAgICB9CgogICAgICAgIHZhciB6ZWlsZUNscyA9ICdncmlk LXplaWxlJyArICghcC5ha3RpdiA/ICcgZ3JpZC16ZWlsZS11bWdlc2V0enQnIDogJycpOwogICAg ICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9IicgKyB6ZWlsZUNscyArICciIGRhdGEtcGVyc29uLWlk PSInICsgcC5pZCArICciPic7CiAgICAgICAgdmFyIHBpZFN0ciA9IFN0cmluZyhwLmlkKTsKICAg ICAgICB2YXIgZGFyZkVkaXQgPSBkYXJmWmVsbGVFZGl0aWVyZW4ocC5pZCk7CiAgICAgICAgWi50 YWdlLmZvckVhY2goZnVuY3Rpb24oZCkgewogICAgICAgICAgICB2YXIgZFN0ciA9IGRhdHVtU3Ry KGQpOwogICAgICAgICAgICB2YXIgZSA9IChaLnBsYW51bmcuZWludHJhZWdlIHx8IHt9KVtkU3Ry XSB8fCB7fTsKICAgICAgICAgICAgdmFyIHdlcnQgPSBlW3BpZFN0cl0gfHwgJyc7CiAgICAgICAg ICAgIHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307CiAgICAgICAgICAgIHZhciBp bmZvID0gWi50YWdJbmZvc1tkU3RyXSB8fCB7IHR5cDogJ25vcm1hbCcgfTsKICAgICAgICAgICAg dmFyIHN0eWxlID0gJycsIGtsYXNzZW4gPSAnZ3JpZC16ZWxsZSc7CiAgICAgICAgICAgIHZhciBh bnplaWdlID0gd2VydDsKICAgICAgICAgICAgdmFyIHRpdGVsID0gd2VydDsKCiAgICAgICAgICAg IGlmICh3ZXJ0ICYmIGZhcmJlbi5oaW50ZXJncnVuZCkgewogICAgICAgICAgICAgICAgc3R5bGUg PSAnYmFja2dyb3VuZC1jb2xvcjonICsgZXNjYXBlQXR0cihmYXJiZW4uaGludGVyZ3J1bmQpICsg Jztjb2xvcjonICsgZXNjYXBlQXR0cihmYXJiZW4uc2NocmlmdCB8fCAnIzAwMCcpOwogICAgICAg ICAgICAgICAgYW56ZWlnZSA9IGZhcmJlbi5rdWVyemVsIHx8IHdlcnQ7CiAgICAgICAgICAgIH0g ZWxzZSBpZiAoaW5mby50eXAgPT09ICd3b2NoZW5lbmRlJykga2xhc3NlbiArPSAnIHNwYWx0ZS13 b2NoZW5lbmRlJzsKICAgICAgICAgICAgZWxzZSBpZiAoaW5mby50eXAgPT09ICdmZWllcnRhZycp IGtsYXNzZW4gKz0gJyBzcGFsdGUtZmVpZXJ0YWcnOwogICAgICAgICAgICBlbHNlIGlmIChpbmZv LnR5cCA9PT0gJ2ZlcmllbicpIGtsYXNzZW4gKz0gJyBzcGFsdGUtZmVyaWVuJzsKICAgICAgICAg ICAgaWYgKGRTdHIgPT09IFouaGV1dGVTdHIpIGtsYXNzZW4gKz0gJyBzcGFsdGUtaGV1dGUnOwoK ICAgICAgICAgICAgLy8gT2huZSBFZGl0LVJlY2h0IHdpcmQgZGllIFplbGxlIHZpc3VlbGwgYWxz IGdlc3BlcnJ0IG1hcmtpZXJ0LgogICAgICAgICAgICBpZiAoIWRhcmZFZGl0KSBrbGFzc2VuICs9 ICcgZ3JpZC16ZWxsZS1nZXNwZXJydCc7CgogICAgICAgICAgICAvLyBTY2hyYWZmdXIgaW5saW5l IGF1cyBkZXIgdm9yYWIgYmVyZWNobmV0ZW4gTWFwLgogICAgICAgICAgICB2YXIgbSA9IHNjaHJN YXBbZFN0ciArICd8JyArIHBpZFN0cl07CiAgICAgICAgICAgIGlmIChtKSB7CiAgICAgICAgICAg ICAgICB2YXIgY2wgPSBzY2hyYWZmdXJLbGFzc2UobSk7CiAgICAgICAgICAgICAgICBpZiAoY2wp IGtsYXNzZW4gKz0gJyAnICsgY2w7CiAgICAgICAgICAgICAgICBpZiAobS5jaGFyQXQoMSkgPT09 ICcxJykgewogICAgICAgICAgICAgICAgICAgIGtsYXNzZW4gKz0gJyB2ZXJhbnR3b3J0bGljaCc7 CiAgICAgICAgICAgICAgICAgICAgdGl0ZWwgKz0gJyBbVkVSQU5UV09SVExJQ0hdJzsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFz cz0iJyArIGtsYXNzZW4gKyAnIiBkYXRhLWRhdHVtPSInICsgZFN0ciArICciIGRhdGEtcGVyc29u PSInICsgcGlkU3RyICsgJyIgc3R5bGU9IicgKyBzdHlsZSArICciIHRpdGxlPSInICsgZXNjYXBl QXR0cih0aXRlbCkgKyAnIj4nICsgZXNjYXBlSFRNTChhbnplaWdlKSArICc8L2Rpdj4nOwogICAg ICAgIH0pOwogICAgICAgIGh0bWwgKz0gJzwvZGl2Pic7CiAgICB9KTsKICAgIGRvY3VtZW50Lmdl dEVsZW1lbnRCeUlkKCdncmlkLWRhdGVuJykuaW5uZXJIVE1MID0gaHRtbDsKICAgIC8vIChEZXIg ZnJ1ZWhlcmUgZGVmZW5zaXZlIHF1ZXJ5U2VsZWN0b3JBbGwoJy5ncmlkLXRyZW5uZXInKS1TdHls ZS1Mb29wIGlzdAogICAgLy8gZW50ZmVybnQ6IGRpZSBUcmVubmVyIHRyYWdlbiBpaHJlIElubGlu ZS1TdHlsZXMgYmVyZWl0cyBpbSBIVE1MLVN0cmluZwogICAgLy8g4oCUIGBzdHlsZT0iYmFja2dy b3VuZDp2YXIoLS1iZy1wcmltYXJ5KTt3aWR0aDrigKY7bWluLXdpZHRoOjEwMCUiYCDigJQgdW5k CiAgICAvLyBDU1MtVmFyaWFibGVuIGluIElubGluZS1TdHlsZXMgbG9lc2VuIGF1ZiBkZW4gQ2hy b21pdW0tQnJvd3Nlcm4genV2ZXItCiAgICAvLyBsYWVzc2lnIGF1Zi4gRGVyIExvb3AgdmVydXJz YWNodGUgcHJvIFZvbGwtUmVuZGVyIGVpbmVuIGdldENvbXB1dGVkU3R5bGUtCiAgICAvLyBSZWZs b3cgKyBET00tUXVlcnkgKyBTdHlsZS1Xcml0ZXMgb2huZSBNZWhyd2VydC4pCiAgICBpZiAocmVu ZGVySG9va3Mua29tbWVudGFyZUltR3JpZEFuemVpZ2VuKSByZW5kZXJIb29rcy5rb21tZW50YXJl SW1HcmlkQW56ZWlnZW4oKTsKICAgIHBlcmZNZWFzdXJlKF9wZXJmVGFnKTsKfQoKLy8gPT09PT0g WmVsbGUgYWt0dWFsaXNpZXJlbiAobmFjaCDDhG5kZXJ1bmcpID09PT09CgpleHBvcnQgZnVuY3Rp b24gemVsbGVWaXN1ZWxsQWt0dWFsaXNpZXJlbihkU3RyLCBwaWQsIHdlcnQpIHsKICAgIHZhciBf cGVyZlRhZyA9IHBlcmZNYXJrKCd6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuJyk7CiAgICB2YXIg eiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ncmlkLXplbGxlW2RhdGEtZGF0dW09IicgKyBk U3RyICsgJyJdW2RhdGEtcGVyc29uPSInICsgcGlkICsgJyJdJyk7CiAgICBpZiAoIXopIHsgcGVy Zk1lYXN1cmUoX3BlcmZUYWcpOyByZXR1cm47IH0KICAgIC8vIEFsdGVyIFdlcnQgYXVzIGRlbSB0 aXRsZS1BdHRyaWJ1dCBkZXIgWmVsbGU6IGdlc2V0enQgYmVpbSBsZXR6dGVuIFJlbmRlcgogICAg Ly8gYnp3LiB2b20gbGV0enRlbiB6ZWxsZVZpc3VlbGxBa3R1YWxpc2llcmVuIOKAlCBaLnBsYW51 bmcuZWludHJhZWdlIHd1cmRlCiAgICAvLyB2b20gQXVmcnVmZXIgc2Nob24gdWViZXJzY2hyaWVi ZW4uCiAgICB2YXIgYWx0ZXJUaXRlbCA9IHoudGl0bGUgfHwgJyc7CiAgICB2YXIgZGdsQmV0cm9m ZmVuID0gYWx0ZXJUaXRlbC5pbmRleE9mKCdER0wnKSA+PSAwIHx8ICh3ZXJ0IHx8ICcnKS5pbmRl eE9mKCdER0wnKSA+PSAwOwoKICAgIHZhciBmYXJiZW4gPSBaLmNvZGVNYXBbd2VydF0gfHwge307 CiAgICB2YXIgaW5mbyA9IFoudGFnSW5mb3NbZFN0cl0gfHwgeyB0eXA6ICdub3JtYWwnIH07CiAg ICB6LmNsYXNzTmFtZSA9ICdncmlkLXplbGxlJzsKICAgIHouc3R5bGUuY3NzVGV4dCA9ICcnOwog ICAgei50aXRsZSA9IHdlcnQgfHwgJyc7CiAgICBpZiAod2VydCAmJiBmYXJiZW4uaGludGVyZ3J1 bmQpIHsKICAgICAgICB6LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGZhcmJlbi5oaW50ZXJncnVu ZDsKICAgICAgICB6LnN0eWxlLmNvbG9yID0gZmFyYmVuLnNjaHJpZnQgfHwgJyMwMDAnOwogICAg ICAgIHoudGV4dENvbnRlbnQgPSBmYXJiZW4ua3VlcnplbCB8fCB3ZXJ0OwogICAgfSBlbHNlIHsK ICAgICAgICB6LnRleHRDb250ZW50ID0gd2VydDsKICAgICAgICBpZiAoaW5mby50eXAgPT09ICd3 b2NoZW5lbmRlJykgei5jbGFzc0xpc3QuYWRkKCdzcGFsdGUtd29jaGVuZW5kZScpOwogICAgICAg IGVsc2UgaWYgKGluZm8udHlwID09PSAnZmVpZXJ0YWcnKSB6LmNsYXNzTGlzdC5hZGQoJ3NwYWx0 ZS1mZWllcnRhZycpOwogICAgICAgIGVsc2UgaWYgKGluZm8udHlwID09PSAnZmVyaWVuJykgei5j bGFzc0xpc3QuYWRkKCdzcGFsdGUtZmVyaWVuJyk7CiAgICB9CiAgICBpZiAoZFN0ciA9PT0gWi5o ZXV0ZVN0cikgei5jbGFzc0xpc3QuYWRkKCdzcGFsdGUtaGV1dGUnKTsKCiAgICAvLyBjbGFzc05h bWUgd3VyZGUgb2JlbiBrb21wbGV0dCB6dXJ1ZWNrZ2VzZXR6dCDigJQgZGllIFNwZXJyLU1hcmtp ZXJ1bmcgZnVlcgogICAgLy8gbmljaHQtZWRpdGllcmJhcmUgWmVsbGVuIChmcmVtZGUgR3J1cHBl L1BlcnNvbikgbXVzcyBkYWhlciB3aWVkZXIgZ2VzZXR6dAogICAgLy8gd2VyZGVuLCBzb25zdCBz aWVodCBlaW5lIHJlYWQtb25seS1aZWxsZSBuYWNoIGVpbmVtIExpdmUtU3luYy1VcGRhdGUKICAg IC8vIHBsb2V0emxpY2ggZWRpdGllcmJhciBhdXMgKEJ1ZzogQ29udGVkZHUgc2FoIGZyZW1kZSBT LVdERi9TLURHTCBmYXJiaWcpLgogICAgaWYgKCFkYXJmWmVsbGVFZGl0aWVyZW4ocGlkKSkgei5j bGFzc0xpc3QuYWRkKCdncmlkLXplbGxlLWdlc3BlcnJ0Jyk7CgogICAgLy8gU3TDpHJrZSArIFNj aHJhZmZ1ciBzaW5kIGJlaWRlIERHTC1hYmhhZW5naWcg4oCUIHdlbm4gd2VkZXIgYWx0ZXIgbm9j aAogICAgLy8gbmV1ZXIgV2VydCAiREdMIiBlbnRoaWVsdCAoVXJsL2tyL2Rmci9TZW0vZXRjLiks IGFlbmRlcnQgc2ljaCBkYXJhbgogICAgLy8gbmljaHRzLiBTa2lwIHNwYXJ0IHBybyBFZGl0IGRl biA0Ni1QZXJzb25lbi1SZWNhbGMgKyB+NTAgRE9NLVF1ZXJpZXMKICAgIC8vIChBdWRpdC1QaGFz ZSBCLjEsIDIwMjYtMDUtMjEpLgogICAgaWYgKCFkZ2xCZXRyb2ZmZW4pIHJldHVybjsKCiAgICAv LyBTdMOkcmtlIGbDvHIgZGllc2VuIFRhZyBha3R1YWxpc2llcmVuCiAgICBzdGFlcmtlWmVsbGVB a3R1YWxpc2llcmVuKGRTdHIpOwoKICAgIHZhciBhbGxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv ckFsbCgnLmdyaWQtemVsbGVbZGF0YS1kYXR1bT0iJyArIGRTdHIgKyAnIl0nKTsKICAgIGFsbGUu Zm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgYS5jbGFzc0xpc3QucmVtb3ZlKCdzY2hyYWZm dXItZnJ1ZWgnLCdzY2hyYWZmdXItc3BhZXQnLCdzY2hyYWZmdXItbmFjaHQnLCdzY2hyYWZmdXIt ZnJ1ZWgtMicsJ3NjaHJhZmZ1ci1zcGFldC0yJywnc2NocmFmZnVyLW5hY2h0LTInLCd2ZXJhbnR3 b3J0bGljaCcpOwogICAgfSk7CiAgICB2YXIgc2NociA9IHNjaHJhZmZ1ckJlcmVjaG5lbihkU3Ry KTsKICAgIE9iamVjdC5rZXlzKHNjaHIpLmZvckVhY2goZnVuY3Rpb24ocCkgewogICAgICAgIHZh ciBtID0gc2NocltwXSwgenogPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZ3JpZC16ZWxsZVtk YXRhLWRhdHVtPSInICsgZFN0ciArICciXVtkYXRhLXBlcnNvbj0iJyArIHAgKyAnIl0nKTsKICAg ICAgICBpZiAoIXp6KSByZXR1cm47CiAgICAgICAgdmFyIGNsID0gc2NocmFmZnVyS2xhc3NlKG0p OwogICAgICAgIGlmIChjbCkgenouY2xhc3NMaXN0LmFkZChjbCk7CiAgICAgICAgaWYgKG0uY2hh ckF0KDEpID09PSAnMScpIHsKICAgICAgICAgICAgenouY2xhc3NMaXN0LmFkZCgndmVyYW50d29y dGxpY2gnKTsKICAgICAgICAgICAgenoudGl0bGUgPSAoenoudGl0bGUgfHwgJycpICsgJyBbVkVS QU5UV09SVExJQ0hdJzsKICAgICAgICB9CiAgICB9KTsKICAgIHBlcmZNZWFzdXJlKF9wZXJmVGFn KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIHN0YWVya2VaZWxsZUFrdHVhbGlzaWVyZW4oZFN0cikgewog ICAgdmFyIHN0WmVpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhZXJrZS16ZWlsZScp OwogICAgaWYgKCFzdFplaWxlKSByZXR1cm47CiAgICB2YXIgaWR4ID0gWi50YWdlLmZpbmRJbmRl eChmdW5jdGlvbihkKSB7IHJldHVybiBkYXR1bVN0cihkKSA9PT0gZFN0cjsgfSk7CiAgICBpZiAo aWR4IDwgMCB8fCBpZHggPj0gc3RaZWlsZS5jaGlsZHJlbi5sZW5ndGgpIHJldHVybjsKICAgIHZh ciBzdCA9IHN0YWVya2VCZXJlY2huZW4oZFN0cik7CiAgICB2YXIgemVsbGUgPSBzdFplaWxlLmNo aWxkcmVuW2lkeF07CiAgICB6ZWxsZS5jbGFzc05hbWUgPSAna2QtemVsbGUgJyArIChzdC5vayA/ ICdzdGFlcmtlLW9rJyA6ICdzdGFlcmtlLXdhcm51bmcnKTsKICAgIHplbGxlLnRleHRDb250ZW50 ID0gc3QudGV4dDsKICAgIHplbGxlLnRpdGxlID0gJ0Y6JyArIHN0LmYgKyAnIFM6JyArIHN0LnMg KyAnIE46JyArIHN0Lm47Cn0KCi8vID09PT09IFNjcm9sbC1TeW5jaHJvbmlzYXRpb24gPT09PT0K CmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxTeW5jKCkgewogICAgdmFyIGdyaWQgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnZ3JpZC1zY3JvbGwtY29udGFpbmVyJyk7CiAgICB2YXIgbmFtZW4gPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmFtZW4tbGlzdGUnKTsKICAgIHZhciBzcGVycmUgPSBm YWxzZTsKICAgIGdyaWQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKSB7CiAg ICAgICAgaWYgKHNwZXJyZSkgcmV0dXJuOwogICAgICAgIHNwZXJyZSA9IHRydWU7CiAgICAgICAg bmFtZW4uc2Nyb2xsVG9wID0gZ3JpZC5zY3JvbGxUb3A7CiAgICAgICAgc3BlcnJlID0gZmFsc2U7 CiAgICB9KTsKICAgIG5hbWVuLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uKCkg ewogICAgICAgIGlmIChzcGVycmUpIHJldHVybjsKICAgICAgICBzcGVycmUgPSB0cnVlOwogICAg ICAgIGdyaWQuc2Nyb2xsVG9wID0gbmFtZW4uc2Nyb2xsVG9wOwogICAgICAgIHNwZXJyZSA9IGZh bHNlOwogICAgfSk7CiAgICAvLyBEYXMgR3JpZCBoYXQgZWluZW4gaG9yaXpvbnRhbGVuIFNjcm9s bGJhbGtlbiB1bnRlbiwgZGVyIFBsYXR6IGZyaXNzdC4KICAgIC8vIERpZSBOYW1lbnNsaXN0ZSBk YW5lYmVuIG5pY2h0IOKAlCBvaG5lIEF1c2dsZWljaCB3YWVyZW4gZGllIGxldHp0ZW4KICAgIC8v IFplaWxlbiB2ZXJzY2hvYmVuLiBQYWRkaW5nIGR5bmFtaXNjaCBhdWYgZGllIHJlYWxlIFNjcm9s bGJhci1Ib2VoZQogICAgLy8gc2V0emVuIChjbGllbnRIZWlnaHQgYmVydWVja3NpY2h0aWd0IGRl biBCYWxrZW4sIG9mZnNldEhlaWdodCBuaWNodCkuCiAgICBmdW5jdGlvbiBzY3JvbGxiYXJBdXNn bGVpY2goKSB7CiAgICAgICAgdmFyIGggPSBncmlkLm9mZnNldEhlaWdodCAtIGdyaWQuY2xpZW50 SGVpZ2h0OwogICAgICAgIGlmIChoIDwgMCkgaCA9IDA7CiAgICAgICAgbmFtZW4uc3R5bGUucGFk ZGluZ0JvdHRvbSA9IGggKyAncHgnOwogICAgfQogICAgc2Nyb2xsYmFyQXVzZ2xlaWNoKCk7CiAg ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc2Nyb2xsYmFyQXVzZ2xlaWNoKTsK fQoKZXhwb3J0IGZ1bmN0aW9uIHp1bUhldXRpZ2VuRGF0dW0oKSB7CiAgICAvLyBEb3BwZWx0ZXMg cmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBnYXJhbnRpZXJ0LCBkYXNzIGRlciBCcm93c2VyIHp3ZWkK ICAgIC8vIFJlbmRlci1GcmFtZXMgZHVyY2hsYXVmZW4gaGF0IChMYXlvdXQgKyBQYWludCksIGJl dm9yIHdpciBkaWUKICAgIC8vIFplbGxlbi1Qb3NpdGlvbiBhdXNsZXNlbi4gU29uc3Qga2FubiBu YWNoIExvZ2luIC8gVGFiLVdlY2hzZWwgLwogICAgLy8gSG90LVJlbG9hZCBkaWUgWmVsbGUgbm9j aCBuaWNodCBmaW5hbCBwb3NpdGlvbmllcnQgc2VpbiB1bmQgZGVyCiAgICAvLyBTY3JvbGwgc3By aW5ndCBrbmFwcCBkYW5lYmVuIChDaGVycnktUGljayAxYWVmZTI2KS4KICAgIHJlcXVlc3RBbmlt YXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVu Y3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB6ZWxsZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io JyNkYXR1bS16ZWlsZS10YWcgLmtkLXplbGxlW2RhdGEtZGF0dW09IicgKyBaLmhldXRlU3RyICsg JyJdJyk7CiAgICAgICAgICAgIGlmICh6ZWxsZSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBk b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3JpZC1zY3JvbGwtY29udGFpbmVyJyk7CiAgICAgICAg ICAgICAgICB2YXIgciA9IHplbGxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBjciA9IGMuZ2V0 Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgICAgICAgICAgICBjLnNjcm9sbExlZnQgKz0gci5s ZWZ0IC0gY3IubGVmdCAtIGNyLndpZHRoIC8gMzsKICAgICAgICAgICAgfQogICAgICAgIH0pOwog ICAgfSk7Cn0KCi8vID09PT09IE5hdmlnYXRpb24gLyBUYWItV2VjaHNlbCA9PT09PQoKZXhwb3J0 IGZ1bmN0aW9uIGFuc2ljaHRXZWNoc2VsbihuYW1lKSB7CiAgICBpZiAobmFtZSA9PT0gJ2FkbWlu JyAmJiAhZGFyZkFkbWluVGFiKCkpIHsKICAgICAgICB0b2FzdCgnQWRtaW5pc3RyYXRpb24gaXN0 IG51ciBmw7xyIFN1cGVyVXNlciB6dWfDpG5nbGljaCcsICd3YXJudW5nJyk7CiAgICAgICAgcmV0 dXJuOwogICAgfQogICAgaWYgKG5hbWUgPT09ICdzdGF0aXN0aWsnICYmICFkYXJmU3RhdGlzdGlr KCkpIHsKICAgICAgICB0b2FzdCgnU3RhdGlzdGlrIGlzdCBmw7xyIGRpY2ggbmljaHQgZnJlaWdl c2NoYWx0ZXQnLCAnd2FybnVuZycpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChuYW1l ID09PSAnbG9nYnVjaCcgJiYgIWRhcmZMb2didWNoKCkpIHsKICAgICAgICB0b2FzdCgnTG9nYnVj aCBpc3QgZsO8ciBkaWNoIG5pY2h0IGZyZWlnZXNjaGFsdGV0JywgJ3dhcm51bmcnKTsKICAgICAg ICByZXR1cm47CiAgICB9CiAgICBpZiAobmFtZSA9PT0gJ2Jlc2V0enVuZycgJiYgIShaLnJlY2h0 ZSAmJiBaLnJlY2h0ZS5pc3RHZXNhbXR2ZXJhbnR3b3J0bGljaCkpIHsKICAgICAgICB2YXIgYmV6 QmVzZXR6dW5nID0gKHJlbmRlckhvb2tzLmJleiAmJiByZW5kZXJIb29rcy5iZXooJ25hdi5iZXNl dHp1bmcnKSkgfHwgJ0Jlc2V0enVuZyc7CiAgICAgICAgdG9hc3QoYmV6QmVzZXR6dW5nICsgJyBp c3QgbnVyIGbDvHIgR2VzYW10dmVyYW50d29ydGxpY2hlIHp1Z8OkbmdsaWNoJywgJ3dhcm51bmcn KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBbJ3BsYW51bmcnLCd3b2NoZW5wbGFuJywncGVy c3BsYW4nLCdhZG1pbicsJ3N0YXRpc3RpaycsJ2xvZ2J1Y2gnLCdiZXNldHp1bmcnXS5mb3JFYWNo KGZ1bmN0aW9uKGEpIHsKICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn YW5zaWNodC0nICsgYSk7CiAgICAgICAgaWYgKGVsKSBlbC5jbGFzc0xpc3QudG9nZ2xlKCd2ZXJz dGVja3QnLCBhICE9PSBuYW1lKTsKICAgIH0pOwogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs bCgnLm5hdi1idG4nKS5mb3JFYWNoKGZ1bmN0aW9uKGIpIHsKICAgICAgICBiLmNsYXNzTGlzdC50 b2dnbGUoJ2FrdGl2JywgYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtYW5zaWNodCcpID09PSBuYW1lKTsK ICAgIH0pOwogICAgaWYgKG5hbWUgPT09ICd3b2NoZW5wbGFuJyAmJiByZW5kZXJIb29rcy53cFJl bmRlcm4pIHJlbmRlckhvb2tzLndwUmVuZGVybigpOwogICAgaWYgKG5hbWUgPT09ICdwZXJzcGxh bicgJiYgcmVuZGVySG9va3MucHBSZW5kZXJuKSByZW5kZXJIb29rcy5wcFJlbmRlcm4oKTsKICAg IGlmIChuYW1lID09PSAnbG9nYnVjaCcgJiYgcmVuZGVySG9va3MubG9nYnVjaExhZGVuKSByZW5k ZXJIb29rcy5sb2didWNoTGFkZW4oKTsKICAgIGlmIChuYW1lID09PSAnc3RhdGlzdGlrJyAmJiBy ZW5kZXJIb29rcy5zdGF0aXN0aWtMYWRlbikgcmVuZGVySG9va3Muc3RhdGlzdGlrTGFkZW4oKTsK ICAgIGlmIChuYW1lID09PSAnYWRtaW4nICYmIHJlbmRlckhvb2tzLmFkbWluUmVuZGVybikgcmVu ZGVySG9va3MuYWRtaW5SZW5kZXJuKCk7CiAgICBpZiAobmFtZSA9PT0gJ2Jlc2V0enVuZycgJiYg cmVuZGVySG9va3MuYmVzZXR6dW5nc2tvbnRyb2xsZVJlbmRlcm4pIHJlbmRlckhvb2tzLmJlc2V0 enVuZ3Nrb250cm9sbGVSZW5kZXJuKCk7CgogICAgLy8gQWt0aXZlIEFuc2ljaHQgcGVyc2lzdGll cmVuLCBkYW1pdCBlaW4gQnJvd3Nlci1SZWZyZXNoIChGNSkgbmljaHQgaW4KICAgIC8vIGRpZSBQ bGFudW5nc2Fuc2ljaHQgenVydWVja3NwcmluZ3QuIEJld3Vzc3Qgc2Vzc2lvblN0b3JhZ2Ugc3Rh dHQKICAgIC8vIGxvY2FsU3RvcmFnZTogZWluIG5ldWVyIEJyb3dzZXItU3RhcnQgdWViZXIgZGds LmJhdCAoPSBuZXVlcyBUYWIsCiAgICAvLyBsZWVyZXMgc2Vzc2lvblN0b3JhZ2UpIGZhZW5ndCBk YW1pdCBpbW1lciBhdWYgZGVyIFBsYW51bmdzYW5zaWNodAogICAgLy8gYW4sIHdhZWhyZW5kIGVp biBJbi1UYWItUmVmcmVzaCBkaWUgQW5zaWNodCBoYWVsdC4KICAgIHRyeSB7IHNlc3Npb25TdG9y YWdlLnNldEl0ZW0oJ3ZpMy5ha3RpdmVBbnNpY2h0JywgbmFtZSk7IH0gY2F0Y2ggKGUpIHsgLyog aWdub3JlICovIH0KfQo= ### FILE: js/hinweise.js | 19061 Ly8gPT09IGhpbndlaXNlLmpzID09PQovLyBJbi1BcHAtSGlud2Vpcy1TeXN0ZW0gKEJhbm5lciBv YmVuICsgQmFkZ2UgYW0gVXNlci1OYW1lbiArIE1vZGFsLVNlaXRlKS4KLy8KLy8gRXJzZXR6dCBz ZWl0IDIwMjYtMDUtMjAgYWxsZSBSb3V0aW5lLW1haWx0by1UcmlnZ2VyIChLcmFua21lbGR1bmcs Ci8vIElkZW50aXRhZXRzLUFlbmRlcnVuZywgQmFja3VwLVJlc3RvcmUsIFBsYW51bmctUmVzZXQs IFJvbGxlbi1BZW5kZXJ1bmcKLy8gb2huZSBWZXJhbnR3b3J0dW5ncy1VZWJlcmdhbmcpLiBTaWNo dGJhciBudXIgZnVlciBTdXBlclVzZXIgKyBHZXNhbXQtCi8vIHZlcmFudHdvcnRsaWNoZS4KLy8K Ly8gRGF0ZW4ga29tbWVuIHZvbSBTZXJ2ZXIgKC9hcGkvaGlud2Vpc2UpLiBQcm8tVXNlci1MZXNl c3RhdHVzIGxpZWd0Ci8vIGluIGRhdGEvaGlud2Vpc2UuanNvbiwgQmFubmVyLURpc21pc3MgbGFl dWZ0IGNsaWVudC1zZWl0aWcgcGVyCi8vIHNlc3Npb25TdG9yYWdlIChrb21tdCBiZWkgUmVsb2Fk IG1pdCBuZXVlbSBIaW53ZWlzIHdpZWRlcikuCgppbXBvcnQgeyBaIH0gZnJvbSAnLi9jb3JlX3N0 YXRlLmpzJzsKaW1wb3J0IHsgYXBpLCBhcGlQb3N0IH0gZnJvbSAnLi9jb3JlX2FwaS5qcyc7Cmlt cG9ydCB7IGVzY2FwZUhUTUwsIGVzY2FwZUF0dHIsIGRhdHVtRm9ybWF0REUgfSBmcm9tICcuL2Nv cmVfdXRpbC5qcyc7CmltcG9ydCB7IG1vZGFsWmVpZ2VuLCBtb2RhbFNjaGxpZXNzZW4sIHRvYXN0 LCBiZXN0YWV0aWdlbiB9IGZyb20gJy4vdWlfZGlhbG9nLmpzJzsKaW1wb3J0IHsgdGFnRGV0YWls TW9kYWxaZWlnZW4gfSBmcm9tICcuL2Jlc2V0enVuZy5qcyc7Cgp2YXIgQkFOTkVSX0RJU01JU1Nf S0VZID0gJ2hpbndlaXNfYmFubmVyX2Rpc21pc3NlZF9pZHMnOwoKLy8gTGVzYmFyZSBCZXplaWNo bnVuZ2VuIHBybyBUeXAuIFdpcmQgaW0gQmFubmVyLVRleHQgdW5kIGluIGRlcgovLyBNb2RhbC1U YWJlbGxlIHZlcndlbmRldC4KdmFyIFRZUF9MQUJFTCA9IHsKICAgIGlkZW50aXRhZXRfZ2VhZW5k ZXJ0OiAgICAnSWRlbnRpdMOkdCBnZcOkbmRlcnQnLAogICAgcm9sbGVfZ2VhZW5kZXJ0OiAgICAg ICAgICdSb2xsZSBnZcOkbmRlcnQnLAogICAgYmFja3VwX3dpZWRlcmhlcmdlc3RlbGx0OidCYWNr dXAgd2llZGVyaGVyZ2VzdGVsbHQnLAogICAgcGxhbnVuZ19yZXNldDogICAgICAgICAgICdQbGFu dW5nIHp1csO8Y2tnZXNldHp0JywKICAgIGtyYW5rbWVsZHVuZzogICAgICAgICAgICAnS3Jhbmtt ZWxkdW5nJywKICAgIHBlcnNvbl9uZXU6ICAgICAgICAgICAgICAnUGVyc29uIG5ldSBhbmdlbGVn dCcsCiAgICBwZXJzb25faW5ha3RpdjogICAgICAgICAgJ1BlcnNvbiBpbmFrdGl2IGdlc2V0enQn LAogICAgZ2VidXJ0c3RhZzogICAgICAgICAgICAgICdHZWJ1cnRzdGFnJywKICAgIHNjaGljaHRf ZWRpdF9uYWhlOiAgICAgICAnU2NoaWNodC3DhG5kZXJ1bmcgbmFoZSBhbSBEYXR1bScKfTsKCi8v IExvZXN0IGVpbmUgQXVzbG9lc2VyLUtlbm51bmcgKHouQi4gIlBPTElaRUlcTlcwNTU4MDEiIG9k ZXIgIlBPTElaRUkvTlcwNTU4MDEiKQovLyBhdWYgZWluZW4gbGVzYmFyZW4gUGVyc29uZW5uYW1l biBhdWYuIFN1Y2h0IHVlYmVyIHAubndLZW5udW5nIGluIGRlciB2b2xsZW4KLy8gUGVyc29uZW5s aXN0ZSAoaW5rbC4gaW5ha3RpdmVyKS4gRmFlbGx0IGF1ZiBkaWUgcmVpbmUgS2VubnVuZyAob2hu ZSBEb21hZW5lKQovLyB6dXJ1ZWNrLCB3ZW5uIGtlaW5lIFBlcnNvbiBwYXNzdCDigJQgc28gc3Rl aHQgZGEgbmllIG1laHIgbnVyIFxEb21hZW5lXEtlbm51bmcuCmZ1bmN0aW9uIGF1c2xvZXNlckFu emVpZ2UoYXVzbG9lc2VyKSB7CiAgICBpZiAoIWF1c2xvZXNlcikgcmV0dXJuICcnOwogICAgdmFy IHJvaCA9IFN0cmluZyhhdXNsb2VzZXIpLnRyaW0oKTsKICAgIHZhciBrZW5udW5nID0gcm9oLnJl cGxhY2UoL14uKltcXC9dLywgJycpLnRyaW0oKTsgICAgICAvLyBEb21hZW5lbi1QcmFlZml4IHdl ZwogICAgdmFyIHppZWwgPSAoa2VubnVuZyB8fCByb2gpLnRvVXBwZXJDYXNlKCk7CiAgICB2YXIg cGVyc29uZW4gPSAoWi5wbGFudW5nICYmIFoucGxhbnVuZy5wZXJzb25lbikgfHwgW107CiAgICBm b3IgKHZhciBpID0gMDsgaSA8IHBlcnNvbmVuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHAg PSBwZXJzb25lbltpXTsKICAgICAgICB2YXIgbmsgPSBTdHJpbmcocC5ud0tlbm51bmcgfHwgJycp LnJlcGxhY2UoL14uKltcXC9dLywgJycpLnRyaW0oKS50b1VwcGVyQ2FzZSgpOwogICAgICAgIGlm IChuayAmJiBuayA9PT0gemllbCkgewogICAgICAgICAgICB2YXIgbmFtZSA9IChwLm5hbWUgfHwg JycpICsgKHAudm9ybmFtZSA/ICgnLCAnICsgcC52b3JuYW1lKSA6ICcnKTsKICAgICAgICAgICAg dmFyIGRnID0gcC5kaWVuc3RncmFkID8gKHAuZGllbnN0Z3JhZCArICcgJykgOiAnJzsKICAgICAg ICAgICAgcmV0dXJuIChkZyArIG5hbWUpLnRyaW0oKSB8fCAoa2VubnVuZyB8fCByb2gpOwogICAg ICAgIH0KICAgIH0KICAgIHJldHVybiBrZW5udW5nIHx8IHJvaDsKfQoKLy8gQWt0dWVsbGVyIFVz ZXIgaXN0IFNVIG9kZXIgR2VzYW10dmVyYW50d29ydGxpY2g/IEhpbndlaXNlIHNpbmQgbnVyCi8v IGZ1ZXIgZGllc2VuIEVtcGZhZW5nZXJrcmVpcyBzaWNodGJhci4KZXhwb3J0IGZ1bmN0aW9uIGhp bndlaXNlU2ljaHRiYXIoKSB7CiAgICB2YXIgciA9IFoucmVjaHRlIHx8IHt9OwogICAgcmV0dXJu ICEhKHIuaXN0U3VwZXJVc2VyIHx8IHIuaXN0R2VzYW10dmVyYW50d29ydGxpY2gpOwp9CgovLyBF aW5lIE1pbmktTG9naWsgZnVlciBkZW4gQmFubmVyLURpc21pc3M6IFVzZXIga2xpY2t0IGRhcyBC YW5uZXIgd2VnLAovLyBtZXJrZW4gd2lyIHVucyBkaWUgYWt0dWVsbCBhbmdlemVpZ3RlbiBJRHMg aW4gc2Vzc2lvblN0b3JhZ2UuIEVyc3QKLy8gd2VubiBlaW4gTkVVRVIgSGlud2VpcyBkYXp1a29t bXQsIHRhdWNodCBkYXMgQmFubmVyIHdpZWRlciBhdWYuCmZ1bmN0aW9uIGRpc21pc3NlZElkc0xl c2VuKCkgewogICAgdHJ5IHsKICAgICAgICB2YXIgcmF3ID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRl bShCQU5ORVJfRElTTUlTU19LRVkpOwogICAgICAgIGlmICghcmF3KSByZXR1cm4gW107CiAgICAg ICAgdmFyIGFyciA9IEpTT04ucGFyc2UocmF3KTsKICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJh eShhcnIpID8gYXJyIDogW107CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiBbXTsgfQp9CmZ1bmN0 aW9uIGRpc21pc3NlZElkc1NjaHJlaWJlbihpZHMpIHsKICAgIHRyeSB7IHNlc3Npb25TdG9yYWdl LnNldEl0ZW0oQkFOTkVSX0RJU01JU1NfS0VZLCBKU09OLnN0cmluZ2lmeShpZHMpKTsgfSBjYXRj aCAoZSkge30KfQpmdW5jdGlvbiBhbGxlQWt0dWVsbGVuSWRzR2VzZWhlbigpIHsKICAgIHZhciBo aW4gPSBaLmhpbndlaXNlIHx8IFtdOwogICAgaWYgKGhpbi5sZW5ndGggPT09IDApIHJldHVybiB0 cnVlOwogICAgdmFyIGdlcyA9IGRpc21pc3NlZElkc0xlc2VuKCk7CiAgICBmb3IgKHZhciBpID0g MDsgaSA8IGhpbi5sZW5ndGg7IGkrKykgewogICAgICAgIGlmIChnZXMuaW5kZXhPZihoaW5baV0u aWQpIDwgMCkgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KCi8vIEhvbHQg ZGllIG9mZmVuZW4gSGlud2Vpc2Ugdm9tIFNlcnZlci4gTGllZmVydCBpbW1lciBlaW4gUHJvbWlz ZSwKLy8gZGFtaXQgZGVyIEF1ZnJ1ZmVyIC50aGVuIGFuaGFlbmdlbiBrYW5uLgpleHBvcnQgZnVu Y3Rpb24gaGlud2Vpc2VMYWRlbigpIHsKICAgIGlmICghaGlud2Vpc2VTaWNodGJhcigpKSB7CiAg ICAgICAgWi5oaW53ZWlzZSA9IFtdOwogICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10p OwogICAgfQogICAgcmV0dXJuIGFwaSgnL2FwaS9oaW53ZWlzZScpLnRoZW4oZnVuY3Rpb24ocikg ewogICAgICAgIFouaGlud2Vpc2UgPSAociAmJiByLmhpbndlaXNlKSA/IHIuaGlud2Vpc2UgOiBb XTsKICAgICAgICByZXR1cm4gWi5oaW53ZWlzZTsKICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGUpIHsK ICAgICAgICAvLyBCZWkgTmV0endlcmtmZWhsZXIgc3RpbGxzY2h3ZWlnZW5kIGxlZXIgbGFzc2Vu IOKAlCBCYW5uZXIgZGFyZgogICAgICAgIC8vIG5pY2h0IGF1cyBWZXJzZWhlbiAiYWxsZXMgb2th eSIgc3VnZ2VyaWVyZW4sIGRlc2hhbGIgYmVoYWx0ZW4KICAgICAgICAvLyB3aXIgZGVuIHZvcmhl cmlnZW4gU3RhbmQuIENvbnNvbGUuZXJyb3IgZnVlciBEZWJ1Z2dpbmcuCiAgICAgICAgaWYgKHdp bmRvdy5jb25zb2xlKSBjb25zb2xlLmVycm9yKCdoaW53ZWlzZUxhZGVuOicsIGUpOwogICAgICAg IHJldHVybiBaLmhpbndlaXNlIHx8IFtdOwogICAgfSk7Cn0KCi8vIFJlbmRlcnQgQmFubmVyICsg QmFkZ2UuIElkZW1wb3RlbnQ7IGJlaSBqZWRlbSBIaW53ZWlzZS1VcGRhdGUgYXVmcnVmZW4uCmV4 cG9ydCBmdW5jdGlvbiBoaW53ZWlzZUFuemVpZ2VBa3R1YWxpc2llcmVuKCkgewogICAgaGlud2Vp c2VCYWRnZVJlbmRlcm4oKTsKICAgIGhpbndlaXNlQmFubmVyUmVuZGVybigpOwp9CgpleHBvcnQg ZnVuY3Rpb24gaGlud2Vpc2VCYWRnZVJlbmRlcm4oKSB7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnaGlud2Vpcy1iYWRnZScpOwogICAgaWYgKCFlbCkgcmV0dXJuOwogICAg dmFyIGhpbiA9IFouaGlud2Vpc2UgfHwgW107CiAgICBpZiAoIWhpbndlaXNlU2ljaHRiYXIoKSB8 fCBoaW4ubGVuZ3RoID09PSAwKSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0 Jyk7CiAgICAgICAgZWwudGV4dENvbnRlbnQgPSAnJzsKICAgICAgICByZXR1cm47CiAgICB9CiAg ICBlbC5jbGFzc0xpc3QucmVtb3ZlKCd2ZXJzdGVja3QnKTsKICAgIGVsLnRleHRDb250ZW50ID0g U3RyaW5nKGhpbi5sZW5ndGgpOwogICAgZWwudGl0bGUgPSBoaW4ubGVuZ3RoICsgJyBvZmZlbmUg SGlud2VpcycgKyAoaGluLmxlbmd0aCA9PT0gMSA/ICcnIDogJ2UnKSArICcg4oCUIEtsaWNrIHp1 bSBBbnplaWdlbic7Cn0KCmV4cG9ydCBmdW5jdGlvbiBoaW53ZWlzZUJhbm5lclJlbmRlcm4oKSB7 CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlud2Vpcy1iYW5uZXInKTsK ICAgIGlmICghZWwpIHJldHVybjsKICAgIHZhciBoaW4gPSBaLmhpbndlaXNlIHx8IFtdOwogICAg aWYgKCFoaW53ZWlzZVNpY2h0YmFyKCkgfHwgaGluLmxlbmd0aCA9PT0gMCB8fCBhbGxlQWt0dWVs bGVuSWRzR2VzZWhlbigpKSB7CiAgICAgICAgZWwuY2xhc3NMaXN0LmFkZCgndmVyc3RlY2t0Jyk7 CiAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZWwu Y2xhc3NMaXN0LnJlbW92ZSgndmVyc3RlY2t0Jyk7CiAgICB2YXIgdHh0ID0gJ0R1IGhhc3QgJyAr IGhpbi5sZW5ndGggKyAnIG5ldWUgSGlud2VpcycgKyAoaGluLmxlbmd0aCA9PT0gMSA/ICcnIDog J2UnKSArICcuJzsKICAgIGVsLmlubmVySFRNTCA9CiAgICAgICAgJzxzcGFuIGNsYXNzPSJoaW53 ZWlzLWJhbm5lci10ZXh0Ij4nICsgZXNjYXBlSFRNTCh0eHQpICsgJzwvc3Bhbj4nICsKICAgICAg ICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hZXIgYnRuLWtsZWlu IiBpZD0iaGlud2Vpcy1iYW5uZXItYW56ZWlnZW4iPkFuemVpZ2VuPC9idXR0b24+JyArCiAgICAg ICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iaGlud2Vpcy1iYW5uZXItc2NobGllc3Nl biIgaWQ9ImhpbndlaXMtYmFubmVyLWRpc21pc3MiIGFyaWEtbGFiZWw9IkJhbm5lciBhdXNibGVu ZGVuIiB0aXRsZT0iQmFubmVyIGJpcyB6dW0gbsOkY2hzdGVuIG5ldWVuIEhpbndlaXMgYXVzYmxl bmRlbiI+w5c8L2J1dHRvbj4nOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpbndlaXMt YmFubmVyLWFuemVpZ2VuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsK ICAgICAgICBoaW53ZWlzZU1vZGFsT2VmZm5lbigpOwogICAgfSk7CiAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnaGlud2Vpcy1iYW5uZXItZGlzbWlzcycpLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns aWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGlkcyA9IGhpbi5tYXAoZnVuY3Rpb24oaCkg eyByZXR1cm4gaC5pZDsgfSk7CiAgICAgICAgZGlzbWlzc2VkSWRzU2NocmVpYmVuKGlkcyk7CiAg ICAgICAgaGlud2Vpc2VCYW5uZXJSZW5kZXJuKCk7CiAgICB9KTsKfQoKLy8gRm9ybWF0aWVydCBk ZW4gS29udGV4dCBlaW5lcyBIaW53ZWlzZXMgbGVzYmFyIChlaW5lIGt1cnplIGRldXRzY2hlCi8v IEJlc2NocmVpYnVuZykuIFBybyBUeXAgYW5nZXBhc3N0LCBnZW5lcmlzY2hlciBGYWxsYmFjayB6 ZWlndCBrZXk9dmFsdWUuCmZ1bmN0aW9uIGtvbnRleHRGb3JtYXQoZWludHJhZykgewogICAgdmFy IGsgPSBlaW50cmFnLmtvbnRleHQgfHwge307CiAgICB2YXIgdCA9IGVpbnRyYWcudHlwOwogICAg dmFyIHA7CiAgICBpZiAodCA9PT0gJ2lkZW50aXRhZXRfZ2VhZW5kZXJ0JykgewogICAgICAgIHJl dHVybiAnUGVyc29uIDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoay5wZXJzb25fbmFtZSB8fCAoJyMn ICsgay5wZXJzb25faWQpKSArICc8L3N0cm9uZz46IEZlbGQgPGVtPicgKwogICAgICAgICAgICBl c2NhcGVIVE1MKGsuZmVsZCB8fCAnPycpICsgJzwvZW0+ICZuYnNwOzxzcGFuIHN0eWxlPSJjb2xv cjp2YXIoLS10ZXh0LW11dGVkKSI+JyArCiAgICAgICAgICAgIGVzY2FwZUhUTUwoay5hbHRlcl93 ZXJ0IHx8ICcobGVlciknKSArICcgJnJhcnI7ICcgKyBlc2NhcGVIVE1MKGsubmV1ZXJfd2VydCB8 fCAnKGxlZXIpJykgKyAnPC9zcGFuPic7CiAgICB9CiAgICBpZiAodCA9PT0gJ3JvbGxlX2dlYWVu ZGVydCcpIHsKICAgICAgICByZXR1cm4gJ1JvbGxlIDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoay5y b2xsZSB8fCAnPycpICsgJzwvc3Ryb25nPiBiZWkgPHN0cm9uZz4nICsKICAgICAgICAgICAgZXNj YXBlSFRNTChrLnBlcnNvbl9uYW1lIHx8IGsubndLZW5udW5nIHx8ICc/JykgKyAnPC9zdHJvbmc+ OiAnICsKICAgICAgICAgICAgZXNjYXBlSFRNTChrLnJpY2h0dW5nIHx8IChrLmFsdCArICcgJnJh cnI7ICcgKyBrLm5ldSkgfHwgJycpOwogICAgfQogICAgaWYgKHQgPT09ICdiYWNrdXBfd2llZGVy aGVyZ2VzdGVsbHQnKSB7CiAgICAgICAgcmV0dXJuICdCYWNrdXAgPHN0cm9uZz4nICsgZXNjYXBl SFRNTChrLmJhY2t1cCB8fCAnPycpICsgJzwvc3Ryb25nPiB3aWVkZXJoZXJnZXN0ZWxsdC4nOwog ICAgfQogICAgaWYgKHQgPT09ICdwbGFudW5nX3Jlc2V0JykgewogICAgICAgIHJldHVybiAnUGxh bnVuZyB3dXJkZSB6dXLDvGNrZ2VzZXR6dCcgKyAoay5hbnphaGwgPyAnICgnICsgay5hbnphaGwg KyAnIEVpbnRyw6RnZSkuJyA6ICcuJyk7CiAgICB9CiAgICBpZiAodCA9PT0gJ2tyYW5rbWVsZHVu ZycpIHsKICAgICAgICBwID0gZXNjYXBlSFRNTChrLnBlcnNvbl9uYW1lIHx8ICgnIycgKyBrLnBl cnNvbl9pZCkpOwogICAgICAgIHZhciBkID0gay5kYXR1bSA/IGRhdHVtRm9ybWF0REUoay5kYXR1 bSkgOiAnPyc7CiAgICAgICAgdmFyIHNjID0gay5zY2hpY2h0Q29kZSA/ICcgKCcgKyBlc2NhcGVI VE1MKGsuc2NoaWNodENvZGUpICsgJyknIDogJyc7CiAgICAgICAgcmV0dXJuICc8c3Ryb25nPicg KyBwICsgJzwvc3Ryb25nPiBrcmFuayBhbSA8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGQpICsgJzwv c3Ryb25nPicgKyBzYzsKICAgIH0KICAgIGlmICh0ID09PSAncGVyc29uX25ldScpIHsKICAgICAg ICByZXR1cm4gJ05ldWUgUGVyc29uOiA8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGsucGVyc29uX25h bWUgfHwgJz8nKSArICc8L3N0cm9uZz4nOwogICAgfQogICAgaWYgKHQgPT09ICdwZXJzb25faW5h a3RpdicpIHsKICAgICAgICByZXR1cm4gJ1BlcnNvbiA8c3Ryb25nPicgKyBlc2NhcGVIVE1MKGsu cGVyc29uX25hbWUgfHwgJz8nKSArICc8L3N0cm9uZz4gaXN0IG5pY2h0IG1laHIgYWt0aXYuJzsK ICAgIH0KICAgIGlmICh0ID09PSAnZ2VidXJ0c3RhZycpIHsKICAgICAgICByZXR1cm4gJ0dlYnVy dHN0YWc6IDxzdHJvbmc+JyArIGVzY2FwZUhUTUwoay5wZXJzb25fbmFtZSB8fCAnPycpICsgJzwv c3Ryb25nPiBhbSAnICsgZXNjYXBlSFRNTChrLmRhdHVtIHx8ICc/Jyk7CiAgICB9CiAgICBpZiAo dCA9PT0gJ3NjaGljaHRfZWRpdF9uYWhlJykgewogICAgICAgIHJldHVybiAnU2NoaWNodC3DhG5k ZXJ1bmcgYW0gPHN0cm9uZz4nICsgZXNjYXBlSFRNTChrLmRhdHVtIHx8ICc/JykgKyAnPC9zdHJv bmc+IGbDvHIgPHN0cm9uZz4nICsKICAgICAgICAgICAgZXNjYXBlSFRNTChrLnBlcnNvbl9uYW1l IHx8ICgnIycgKyBrLnBlcnNvbl9pZCkpICsgJzwvc3Ryb25nPic7CiAgICB9CiAgICAvLyBHZW5l cmlzY2hlciBGYWxsYmFjawogICAgdmFyIHBhaXJzID0gW107CiAgICBPYmplY3Qua2V5cyhrKS5m b3JFYWNoKGZ1bmN0aW9uKGtleSkgewogICAgICAgIHBhaXJzLnB1c2goZXNjYXBlSFRNTChrZXkp ICsgJz0nICsgZXNjYXBlSFRNTChTdHJpbmcoa1trZXldKSkpOwogICAgfSk7CiAgICByZXR1cm4g cGFpcnMuam9pbignLCAnKSB8fCAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLXRleHQtbXV0ZWQp Ij4oa2VpbiBLb250ZXh0KTwvc3Bhbj4nOwp9CgpmdW5jdGlvbiB6ZWl0Rm9ybWF0KGlzbykgewog ICAgaWYgKCFpc28pIHJldHVybiAnJzsKICAgIHRyeSB7CiAgICAgICAgdmFyIGQgPSBuZXcgRGF0 ZShpc28pOwogICAgICAgIHZhciBkZCA9IFN0cmluZyhkLmdldERhdGUoKSkucGFkU3RhcnQoMiwg JzAnKTsKICAgICAgICB2YXIgbW0gPSBTdHJpbmcoZC5nZXRNb250aCgpICsgMSkucGFkU3RhcnQo MiwgJzAnKTsKICAgICAgICB2YXIgaGggPSBTdHJpbmcoZC5nZXRIb3VycygpKS5wYWRTdGFydCgy LCAnMCcpOwogICAgICAgIHZhciBtaSA9IFN0cmluZyhkLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQo MiwgJzAnKTsKICAgICAgICByZXR1cm4gZGQgKyAnLicgKyBtbSArICcuICcgKyBoaCArICc6JyAr IG1pOwogICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gaXNvOyB9Cn0KCi8vIE9lZmZuZXQgZWluIE1v ZGFsIG1pdCBkZXIgSGlud2Vpcy1MaXN0ZS4gUHJvIEVpbnRyYWc6IFR5cCwgWmVpdCwKLy8gQXVz bG9lc2VyLCBLb250ZXh0LCAiVmVyc3RhbmRlbiItQnV0dG9uLiBLcmFua21lbGR1bmdlbiBiZWtv bW1lbgovLyB6dXNhZXR6bGljaCBlaW5lbiBCdXR0b24gIkthbmRpZGF0ZW4gYW5zY2hyZWliZW4i IChQaGFzZSA2IHdpcmVkKS4KZXhwb3J0IGZ1bmN0aW9uIGhpbndlaXNlTW9kYWxPZWZmbmVuKCkg ewogICAgaWYgKCFoaW53ZWlzZVNpY2h0YmFyKCkpIHJldHVybjsKICAgIHZhciBoaW4gPSBaLmhp bndlaXNlIHx8IFtdOwogICAgaWYgKGhpbi5sZW5ndGggPT09IDApIHsKICAgICAgICB0b2FzdCgn S2VpbmUgb2ZmZW5lbiBIaW53ZWlzZS4nLCAnaW5mbycpOwogICAgICAgIHJldHVybjsKICAgIH0K ICAgIHZhciByb3dzID0gaGluLm1hcChmdW5jdGlvbihoKSB7CiAgICAgICAgdmFyIHR5cExhYmVs ID0gVFlQX0xBQkVMW2gudHlwXSB8fCBoLnR5cDsKICAgICAgICB2YXIgY3R4ID0ga29udGV4dEZv cm1hdChoKTsKICAgICAgICB2YXIga3JCdG4gPSAnJzsKICAgICAgICBpZiAoaC50eXAgPT09ICdr cmFua21lbGR1bmcnKSB7CiAgICAgICAgICAgIC8vIFBoYXNlIDYgd2lyaW5nOiBkZXJ6ZWl0IG51 ciBlaW4gU3R1Yiwgc2NocmVpYnQgaW4gdG9hc3QuCiAgICAgICAgICAgIGtyQnRuID0gJzxidXR0 b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWsgYnRuLWtsZWluIiBkYXRhLWFrdGlv bj0ia2FuZGlkYXRlbiIgZGF0YS1pZD0iJyArIGguaWQgKwogICAgICAgICAgICAgICAgJyIgdGl0 bGU9IkthbmRpZGF0ZW4gZsO8ciBkaWUgYXVzZ2VmYWxsZW5lIFNjaGljaHQgYW5zY2hyZWliZW4i PkthbmRpZGF0ZW4gYW5zY2hyZWliZW48L2J1dHRvbj4nOwogICAgICAgIH0KICAgICAgICByZXR1 cm4gJzx0ciBkYXRhLWhpbndlaXMtaWQ9IicgKyBoLmlkICsgJyI+JyArCiAgICAgICAgICAgICc8 dGQgc3R5bGU9ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3doaXRlLXNw YWNlOm5vd3JhcCI+JyArIGVzY2FwZUhUTUwoemVpdEZvcm1hdChoLmVyc3RlbGx0QW0pKSArICc8 L3RkPicgKwogICAgICAgICAgICAnPHRkPjxzdHJvbmc+JyArIGVzY2FwZUhUTUwodHlwTGFiZWwp ICsgJzwvc3Ryb25nPjwvdGQ+JyArCiAgICAgICAgICAgICc8dGQgc3R5bGU9ImZvbnQtc2l6ZTox MXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpIiB0aXRsZT0iJyArIGVzY2FwZUF0dHIoaC5hdXNs b2VzZXIgfHwgJycpICsgJyI+JyArIGVzY2FwZUhUTUwoYXVzbG9lc2VyQW56ZWlnZShoLmF1c2xv ZXNlcikpICsgJzwvdGQ+JyArCiAgICAgICAgICAgICc8dGQ+JyArIGN0eCArICc8L3RkPicgKwog ICAgICAgICAgICAnPHRkIHN0eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPjxkaXYgc3R5bGU9ImRp c3BsYXk6ZmxleDtnYXA6NnB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZCI+JyArCiAgICAgICAg ICAgICAgICBrckJ0biArCiAgICAgICAgICAgICAgICAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNs YXNzPSJidG4gYnRuLWVyZm9sZyBidG4ta2xlaW4iIGRhdGEtYWt0aW9uPSJrZW5udG5pcyIgZGF0 YS1pZD0iJyArIGguaWQgKyAnIj5WZXJzdGFuZGVuPC9idXR0b24+JyArCiAgICAgICAgICAgICc8 L2Rpdj48L3RkPicgKwogICAgICAgICc8L3RyPic7CiAgICB9KS5qb2luKCcnKTsKICAgIHZhciBr b2VycGVyID0KICAgICAgICAnPHAgc3R5bGU9Im1hcmdpbjowIDAgMTJweDtjb2xvcjp2YXIoLS10 ZXh0LW11dGVkKSI+T2ZmZW5lIEhpbndlaXNlIGbDvHIgU3VwZXJVc2VyIHVuZCBHZXNhbXR2ZXJh bnR3b3J0bGljaGUuIE1pdCA8ZW0+VmVyc3RhbmRlbjwvZW0+IHZlcnNjaHdpbmRldCBlaW4gZWlu emVsbmVyIEVpbnRyYWcgYXVzIGRlaW5lciBMaXN0ZTsgaW0gTG9nYnVjaCBibGVpYnQgZXIgZXJo YWx0ZW4uPC9wPicgKwogICAgICAgICc8dGFibGUgY2xhc3M9ImFkbWluLXRhYmVsbGUgaGlud2Vp cy1tb2RhbC10YWJlbGxlIj4nICsKICAgICAgICAgICAgJzx0aGVhZD48dHI+JyArCiAgICAgICAg ICAgICAgICAnPHRoIHN0eWxlPSJ3aWR0aDo5MHB4Ij5XYW5uPC90aD4nICsKICAgICAgICAgICAg ICAgICc8dGggc3R5bGU9IndpZHRoOjE2MHB4Ij5UeXA8L3RoPicgKwogICAgICAgICAgICAgICAg Jzx0aCBzdHlsZT0id2lkdGg6MTUwcHgiPkF1c2dlbMO2c3Qgdm9uPC90aD4nICsKICAgICAgICAg ICAgICAgICc8dGg+RGV0YWlsczwvdGg+JyArCiAgICAgICAgICAgICAgICAnPHRoIHN0eWxlPSJ3 aWR0aDoyNDBweDt0ZXh0LWFsaWduOnJpZ2h0Ij5Ba3Rpb248L3RoPicgKwogICAgICAgICAgICAn PC90cj48L3RoZWFkPicgKwogICAgICAgICAgICAnPHRib2R5PicgKyByb3dzICsgJzwvdGJvZHk+ JyArCiAgICAgICAgJzwvdGFibGU+JzsKICAgIC8vIEJlaSBtZWhyZXJlbiBIaW53ZWlzZW4genVz YWV0emxpY2ggZWluIFNhbW1lbC1BYm5pY2tlbiBhbmJpZXRlbiDigJQgZGllCiAgICAvLyBlaW56 ZWxuZSBLZW5udG5pc25haG1lIHBybyBaZWlsZSBibGVpYnQgdW52ZXJhZW5kZXJ0IGVyaGFsdGVu LgogICAgdmFyIGZ1c3MgPQogICAgICAgIChoaW4ubGVuZ3RoID4gMSA/ICc8YnV0dG9uIHR5cGU9 ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZXJmb2xnIiBpZD0iaGlud2Vpcy1hbGxlLWtlbm50bmlz Ij5BbGxlIHp1ciBLZW5udG5pcyBuZWhtZW48L2J1dHRvbj4nIDogJycpICsKICAgICAgICAnPGJ1 dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlayIgaWQ9ImhpbndlaXMtbW9kYWwt c2NobGllc3NlbiI+U2NobGllw59lbjwvYnV0dG9uPic7CiAgICBtb2RhbFplaWdlbignSGlud2Vp c2UgKCcgKyBoaW4ubGVuZ3RoICsgJyknLCBrb2VycGVyLCBmdXNzLCBudWxsLCBudWxsLCB7IHJl aW5lckRpYWxvZzogdHJ1ZSB9KTsKICAgIC8vIFN0YW5kYXJkYnJlaXRlICg2MjAgcHgpIGlzdCBo aWVyIHp1IGVuZyDigJQgVGFiZWxsZSBicmF1Y2h0IGRpZSBncm9zc2UKICAgIC8vIFZhcmlhbnRl IChhbmFsb2cgRS1NYWlsLVZvcmxhZ2VuLU1vZGFsKS4KICAgIHZhciBtaSA9IGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3IoJyNtb2RhbC1vdmVybGF5IC5tb2RhbC1pbmhhbHQnKTsKICAgIGlmIChtaSkg bWkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtaW5oYWx0LWdyb3NzJyk7CiAgICBkb2N1bWVudC5nZXRF bGVtZW50QnlJZCgnaGlud2Vpcy1tb2RhbC1zY2hsaWVzc2VuJykuYWRkRXZlbnRMaXN0ZW5lcign Y2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICBtb2RhbFNjaGxpZXNzZW4odHJ1ZSk7CiAgICB9 KTsKICAgIHZhciBhbGxlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hpbndlaXMtYWxs ZS1rZW5udG5pcycpOwogICAgaWYgKGFsbGVCdG4pIGFsbGVCdG4uYWRkRXZlbnRMaXN0ZW5lcign Y2xpY2snLCBoaW53ZWlzZUFsbGVLZW5udG5pc25laG1lbik7CiAgICAvLyBBY3Rpb24tQnV0dG9u cyBpbiBkZXIgVGFiZWxsZSBkZWxlZ2llcmVuCiAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5xdWVy eVNlbGVjdG9yKCcuaGlud2Vpcy1tb2RhbC10YWJlbGxlIHRib2R5Jyk7CiAgICBpZiAodGJvZHkp IHRib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZSkgewogICAgICAgIHZh ciBidG4gPSBlLnRhcmdldC5jbG9zZXN0KCdidXR0b25bZGF0YS1ha3Rpb25dJyk7CiAgICAgICAg aWYgKCFidG4pIHJldHVybjsKICAgICAgICB2YXIgaWQgPSBwYXJzZUludChidG4uZ2V0QXR0cmli dXRlKCdkYXRhLWlkJyksIDEwKTsKICAgICAgICB2YXIgYWt0aW9uID0gYnRuLmdldEF0dHJpYnV0 ZSgnZGF0YS1ha3Rpb24nKTsKICAgICAgICBpZiAoYWt0aW9uID09PSAna2VubnRuaXMnKSB7CiAg ICAgICAgICAgIGhpbndlaXNLZW5udG5pc25laG1lbihpZCk7CiAgICAgICAgfSBlbHNlIGlmIChh a3Rpb24gPT09ICdrYW5kaWRhdGVuJykgewogICAgICAgICAgICAvLyBQaGFzZSA2ICgyMDI2LTA1 LTIxKTogYXVzIGRlbSBLcmFua21lbGR1bmdzLUhpbndlaXMgZGlyZWt0IGlucwogICAgICAgICAg ICAvLyBUYWctRGV0YWlsLU1vZGFsIHNwcmluZ2VuLiBEZXIgZG9ydCB2b3JoYW5kZW5lIFNjaGlj aHQtQmxvY2sKICAgICAgICAgICAgLy8gKEZydWVoL1NwYWV0L05hY2h0KSB6ZWlndCBhdXRvbWF0 aXNjaCBkZW4gIkthbmRpZGF0ZW4gYW5zY2hyZWliZW4iLQogICAgICAgICAgICAvLyBCdXR0b24g YmVpIDwyIFBlcnNvbmVuLgogICAgICAgICAgICB2YXIgaCA9IChaLmhpbndlaXNlIHx8IFtdKS5m aW5kKGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHguaWQgPT09IGlkOyB9KTsKICAgICAgICAgICAgaWYg KCFoIHx8ICFoLmtvbnRleHQgfHwgIWgua29udGV4dC5kYXR1bSkgewogICAgICAgICAgICAgICAg dG9hc3QoJ0hpbndlaXMgaGF0IGtlaW4gRGF0dW0gaGludGVybGVndC4nLCAnd2FybnVuZycpOwog ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG1vZGFsU2No bGllc3Nlbih0cnVlKTsKICAgICAgICAgICAgdGFnRGV0YWlsTW9kYWxaZWlnZW4oaC5rb250ZXh0 LmRhdHVtKTsKICAgICAgICB9CiAgICB9KTsKfQoKLy8gU1UtSGlud2Vpc2UtUHJvdG9rb2xsIChQ aGFzZSA3LCAyMDI2LTA1LTIxKS4gVGFiZWxsZSBhbGxlciBha3RpdmVuCi8vIEhpbndlaXNlIG1p dCBFbXBmYWVuZ2VyLUxlc2VzdGF0dXMuIE51ciBmdWVyIFN1cGVyVXNlciB6dWdhZW5nbGljaC4K Ly8gRmlsdGVyIG5hY2ggVHlwIHVuZCBEYXR1bXMtUmFuZ2Ugd2VyZGVuIGNsaWVudC1zZWl0aWcg YW5nZXdlbmRldC4KZXhwb3J0IGZ1bmN0aW9uIGhpbndlaXNlUHJvdG9rb2xsUmVuZGVybigpIHsK ICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaW53ZWlzZS1wcm90b2tv bGwtdGJvZHknKTsKICAgIGlmICghdGJvZHkpIHJldHVybjsKICAgIHZhciByZWNodGUgPSBaLnJl Y2h0ZSB8fCB7fTsKICAgIGlmICghcmVjaHRlLmlzdFN1cGVyVXNlcikgewogICAgICAgIHRib2R5 LmlubmVySFRNTCA9ICc8dHI+PHRkIGNvbHNwYW49IjUiIHN0eWxlPSJjb2xvcjp2YXIoLS10ZXh0 LW11dGVkKTt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjE2cHgiPk51ciBmw7xyIFN1cGVyVXNl ciBzaWNodGJhci48L3RkPjwvdHI+JzsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0Ym9keS5p bm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFuPSI1IiBzdHlsZT0iY29sb3I6dmFyKC0tdGV4dC1t dXRlZCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxNnB4Ij5MYWRlIOKApjwvdGQ+PC90cj4n OwogICAgYXBpKCcvYXBpL2hpbndlaXNlL3VlYmVyc2ljaHQnKS50aGVuKGZ1bmN0aW9uKHIpIHsK ICAgICAgICB2YXIgYWxsZSA9IChyICYmIHIuaGlud2Vpc2UpID8gci5oaW53ZWlzZSA6IFtdOwog ICAgICAgIHZhciBmaWx0ZXJUeXAgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hwLWZpbHRl ci10eXAnKSB8fCB7fSkudmFsdWUgfHwgJyc7CiAgICAgICAgdmFyIGZpbHRlclZvbiA9IChkb2N1 bWVudC5nZXRFbGVtZW50QnlJZCgnaHAtZmlsdGVyLXZvbicpIHx8IHt9KS52YWx1ZSB8fCAnJzsK ICAgICAgICB2YXIgZmlsdGVyQmlzID0gKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdocC1maWx0 ZXItYmlzJykgfHwge30pLnZhbHVlIHx8ICcnOwogICAgICAgIHZhciBnZWZpbHRlcnQgPSBhbGxl LmZpbHRlcihmdW5jdGlvbihoKSB7CiAgICAgICAgICAgIGlmIChmaWx0ZXJUeXAgJiYgaC50eXAg IT09IGZpbHRlclR5cCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB2YXIgZCA9IChoLmVyc3Rl bGx0QW0gfHwgJycpLnNsaWNlKDAsIDEwKTsKICAgICAgICAgICAgaWYgKGZpbHRlclZvbiAmJiBk IDwgZmlsdGVyVm9uKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIGlmIChmaWx0ZXJCaXMgJiYg ZCA+IGZpbHRlckJpcykgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg ICAgICB9KTsKICAgICAgICBpZiAoZ2VmaWx0ZXJ0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgICAg ICB0Ym9keS5pbm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFuPSI1IiBzdHlsZT0iY29sb3I6dmFy KC0tdGV4dC1tdXRlZCk7dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzoxNnB4Ij5LZWluZSBIaW53 ZWlzZSBpbSBha3R1ZWxsZW4gRmlsdGVyLjwvdGQ+PC90cj4nOwogICAgICAgICAgICByZXR1cm47 CiAgICAgICAgfQogICAgICAgIHRib2R5LmlubmVySFRNTCA9IGdlZmlsdGVydC5tYXAoZnVuY3Rp b24oaCkgewogICAgICAgICAgICB2YXIgdHlwTGFiZWwgPSBUWVBfTEFCRUxbaC50eXBdIHx8IGgu dHlwOwogICAgICAgICAgICB2YXIga24gPSBoLmtlbm50bmlzbmFobWVuIHx8IHt9OwogICAgICAg ICAgICB2YXIgZW1wZkh0bWwgPSBPYmplY3Qua2V5cyhrbikubWFwKGZ1bmN0aW9uKGspIHsKICAg ICAgICAgICAgICAgIHZhciB0cyA9IGtuW2tdOwogICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9 IHRzCiAgICAgICAgICAgICAgICAgICAgPyAnPHNwYW4gc3R5bGU9ImNvbG9yOnZhcigtLWZhcmJl LWVyZm9sZykiPicgKyBlc2NhcGVIVE1MKHplaXRGb3JtYXQodHMpKSArICc8L3NwYW4+JwogICAg ICAgICAgICAgICAgICAgIDogJzxzcGFuIHN0eWxlPSJjb2xvcjp2YXIoLS1mYXJiZS1mZWhsZXIp O2ZvbnQtd2VpZ2h0OjYwMCI+b2ZmZW48L3NwYW4+JzsKICAgICAgICAgICAgICAgIHJldHVybiAn PGRpdiBzdHlsZT0iZm9udC1zaXplOjExcHgiPjxzdHJvbmc+JyArIGVzY2FwZUhUTUwoaykgKyAn PC9zdHJvbmc+OiAnICsgc3RhdHVzICsgJzwvZGl2Pic7CiAgICAgICAgICAgIH0pLmpvaW4oJycp OwogICAgICAgICAgICByZXR1cm4gJzx0cj4nICsKICAgICAgICAgICAgICAgICc8dGQgc3R5bGU9 ImZvbnQtc2l6ZToxMXB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3doaXRlLXNwYWNlOm5vd3Jh cCI+JyArIGVzY2FwZUhUTUwoemVpdEZvcm1hdChoLmVyc3RlbGx0QW0pKSArICc8L3RkPicgKwog ICAgICAgICAgICAgICAgJzx0ZD48c3Ryb25nPicgKyBlc2NhcGVIVE1MKHR5cExhYmVsKSArICc8 L3N0cm9uZz48L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZCBzdHlsZT0iZm9udC1zaXplOjEx cHgiIHRpdGxlPSInICsgZXNjYXBlQXR0cihoLmF1c2xvZXNlciB8fCAnJykgKyAnIj4nICsgZXNj YXBlSFRNTChhdXNsb2VzZXJBbnplaWdlKGguYXVzbG9lc2VyKSkgKyAnPC90ZD4nICsKICAgICAg ICAgICAgICAgICc8dGQgc3R5bGU9ImZvbnQtc2l6ZToxMXB4Ij4nICsga29udGV4dEZvcm1hdCho KSArICc8L3RkPicgKwogICAgICAgICAgICAgICAgJzx0ZD4nICsgZW1wZkh0bWwgKyAnPC90ZD4n ICsKICAgICAgICAgICAgJzwvdHI+JzsKICAgICAgICB9KS5qb2luKCcnKTsKICAgIH0pLmNhdGNo KGZ1bmN0aW9uKGUpIHsKICAgICAgICB0Ym9keS5pbm5lckhUTUwgPSAnPHRyPjx0ZCBjb2xzcGFu PSI1IiBzdHlsZT0iY29sb3I6dmFyKC0tZmFyYmUtZmVobGVyKTtwYWRkaW5nOjE2cHgiPkZlaGxl ciBiZWltIExhZGVuOiAnICsgZXNjYXBlSFRNTChlLm1lc3NhZ2UpICsgJzwvdGQ+PC90cj4nOwog ICAgfSk7Cn0KCi8vIE1hcmtpZXJ0IGVpbmVuIEhpbndlaXMgYWxzIGdlbGVzZW4gKHNlcnZlci1z ZWl0aWcpIHVuZCBlbnRmZXJudCBpaG4KLy8gYXVzIGRlciBsb2thbGVuIExpc3RlLiBXZW5uIGRp ZSBMaXN0ZSBkYWR1cmNoIGxlZXIgd2lyZCwgc2NobGllc3N0Ci8vIHNpY2ggZGFzIE1vZGFsIHZv biBhbGxlaW5lLgpleHBvcnQgZnVuY3Rpb24gaGlud2Vpc0tlbm50bmlzbmVobWVuKGlkKSB7CiAg ICBhcGlQb3N0KCcvYXBpL2hpbndlaXNlLycgKyBpZCArICcva2VubnRuaXMnLCB7fSkudGhlbihm dW5jdGlvbigpIHsKICAgICAgICBaLmhpbndlaXNlID0gKFouaGlud2Vpc2UgfHwgW10pLmZpbHRl cihmdW5jdGlvbihoKSB7IHJldHVybiBoLmlkICE9PSBpZDsgfSk7CiAgICAgICAgLy8gQXVzIGRl bSBNb2RhbCBkaWUgWmVpbGUgZW50ZmVybmVuCiAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LnF1 ZXJ5U2VsZWN0b3IoJ3RyW2RhdGEtaGlud2Vpcy1pZD0iJyArIGlkICsgJyJdJyk7CiAgICAgICAg aWYgKHJvdykgcm93LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocm93KTsKICAgICAgICBoaW53ZWlz ZUFuemVpZ2VBa3R1YWxpc2llcmVuKCk7CiAgICAgICAgaWYgKFouaGlud2Vpc2UubGVuZ3RoID09 PSAwKSB7CiAgICAgICAgICAgIG1vZGFsU2NobGllc3Nlbih0cnVlKTsKICAgICAgICAgICAgdG9h c3QoJ0FsbGUgSGlud2Vpc2UgYWJnZWFyYmVpdGV0LicsICdlcmZvbGcnKTsKICAgICAgICB9CiAg ICB9KS5jYXRjaChmdW5jdGlvbihlKSB7CiAgICAgICAgdG9hc3QoJ0ZlaGxlcjogJyArIGUubWVz c2FnZSwgJ2ZlaGxlcicpOwogICAgfSk7Cn0KCi8vIE5pbW10IEFMTEUgYWt0dWVsbCBvZmZlbmVu IEhpbndlaXNlIGF1ZiBlaW5tYWwgenVyIEtlbm50bmlzIChTYW1tZWwtQWt0aW9uCi8vIGltIE1v ZGFsLCBudXIgYmVpID4xIEhpbndlaXMgYW5nZWJvdGVuKS4gRGllIGVpbnplbG5lIEtlbm50bmlz bmFobWUgcHJvCi8vIFplaWxlIGJsZWlidCBkYXZvbiB1bmJlcnVlaHJ0LiBFcyBnaWJ0IHNlcnZl ci1zZWl0aWcga2VpbmVuIEJ1bGstRW5kcG9pbnQg4oCUCi8vIGRhaGVyIE4gcGFyYWxsZWxlIFBP U1RzOyB0ZWlsLWZlaGxnZXNjaGxhZ2VuZSBFaW50cmFlZ2UgYmxlaWJlbiBpbiBkZXIgTGlzdGUu CmV4cG9ydCBmdW5jdGlvbiBoaW53ZWlzZUFsbGVLZW5udG5pc25laG1lbigpIHsKICAgIHZhciBp ZHMgPSAoWi5oaW53ZWlzZSB8fCBbXSkubWFwKGZ1bmN0aW9uKGgpIHsgcmV0dXJuIGguaWQ7IH0p OwogICAgaWYgKCFpZHMubGVuZ3RoKSByZXR1cm47CiAgICBiZXN0YWV0aWdlbignQWxsZSAnICsg aWRzLmxlbmd0aCArICcgSGlud2Vpc2UgenVyIEtlbm50bmlzIG5laG1lbj9cblxuU2llIHZlcnNj aHdpbmRlbiBhdXMgZGVpbmVyIExpc3RlIOKAlCBpbSBMb2didWNoIGJsZWliZW4gc2llIGVyaGFs dGVuLicsIGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBmZWhsZXIgPSBbXTsKICAgICAgICBQcm9t aXNlLmFsbChpZHMubWFwKGZ1bmN0aW9uKGlkKSB7CiAgICAgICAgICAgIHJldHVybiBhcGlQb3N0 KCcvYXBpL2hpbndlaXNlLycgKyBpZCArICcva2VubnRuaXMnLCB7fSkudGhlbihmdW5jdGlvbigp IHsKICAgICAgICAgICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0cltk YXRhLWhpbndlaXMtaWQ9IicgKyBpZCArICciXScpOwogICAgICAgICAgICAgICAgaWYgKHJvdyAm JiByb3cucGFyZW50Tm9kZSkgcm93LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocm93KTsKICAgICAg ICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oKSB7IGZlaGxlci5wdXNoKGlkKTsgfSk7CiAgICAgICAg fSkpLnRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFouaGlud2Vpc2UgPSAoWi5oaW53ZWlz ZSB8fCBbXSkuZmlsdGVyKGZ1bmN0aW9uKGgpIHsgcmV0dXJuIGZlaGxlci5pbmRleE9mKGguaWQp ID49IDA7IH0pOwogICAgICAgICAgICBoaW53ZWlzZUFuemVpZ2VBa3R1YWxpc2llcmVuKCk7CiAg ICAgICAgICAgIGlmIChaLmhpbndlaXNlLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAg bW9kYWxTY2hsaWVzc2VuKHRydWUpOwogICAgICAgICAgICAgICAgdG9hc3QoJ0FsbGUgSGlud2Vp c2UgenVyIEtlbm50bmlzIGdlbm9tbWVuLicsICdlcmZvbGcnKTsKICAgICAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgICAgIHRvYXN0KGZlaGxlci5sZW5ndGggKyAnIEhpbndlaXMoZSkga29u bnRlbiBuaWNodCBnZXNwZWljaGVydCB3ZXJkZW4g4oCUIGJpdHRlIGVybmV1dCB2ZXJzdWNoZW4u JywgJ3dhcm51bmcnKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSwgeyBqYVRleHQ6 ICdBbGxlIGFibmlja2VuJyB9KTsKfQo=