@opcua/for-node-red 2.8.1 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.js +1 -1
- package/package.json +12 -12
- package/source/OpcUa-Client2-Browse/OpcUa-Client2-Browse.html +2 -2
- package/source/OpcUa-Client2-Call/OpcUa-Client2-Call.html +2 -2
- package/source/OpcUa-Client2-Explore/OpcUa-Client2-Explore.html +2 -2
- package/source/OpcUa-Client2-ExtensionObject/OpcUa-Client2-ExtensionObject.html +2 -2
- package/source/OpcUa-Client2-Monitor/OpcUa-Client2-Monitor.html +2 -2
- package/source/OpcUa-Client2-MonitorEvent/OpcUa-Client2-MonitorEvent.html +2 -2
- package/source/OpcUa-Client2-Read/OpcUa-Client2-Read.html +2 -2
- package/source/OpcUa-Client2-Write/OpcUa-Client2-Write.html +2 -2
- package/source/OpcUa-Endpoint2/OpcUa-Endpoint2.html +2 -2
@@ -4,8 +4,8 @@
|
|
4
4
|
</style>
|
5
5
|
|
6
6
|
<script type="text/javascript">
|
7
|
-
(function(_0x41a0f6,_0x202b45){const _0x1a5fed=_0x1d4a,_0x449ccb=_0x41a0f6();while(!![]){try{const _0xd65e5a=parseInt(_0x1a5fed(0x268))/0x1+-parseInt(_0x1a5fed(0x2b2))/0x2+parseInt(_0x1a5fed(0x22f))/0x3*(parseInt(_0x1a5fed(0x24c))/0x4)+-parseInt(_0x1a5fed(0x2c5))/0x5*(parseInt(_0x1a5fed(0x236))/0x6)+parseInt(_0x1a5fed(0x2d3))/0x7+-parseInt(_0x1a5fed(0x1fc))/0x8+parseInt(_0x1a5fed(0x2b3))/0x9*(parseInt(_0x1a5fed(0x255))/0xa);if(_0xd65e5a===_0x202b45)break;else _0x449ccb['push'](_0x449ccb['shift']());}catch(_0x369afb){_0x449ccb['push'](_0x449ccb['shift']());}}}(_0x8f47,0x66982),(function(){'use strict';const _0x27991e=_0x1d4a;function _0x41ebcb(_0x2ee0a7,_0x1d246a,_0x4a91ff,_0x35414){function _0x40435e(_0x164618){return _0x164618 instanceof _0x4a91ff?_0x164618:new _0x4a91ff(function(_0x295750){_0x295750(_0x164618);});}return new(_0x4a91ff||(_0x4a91ff=Promise))(function(_0x319452,_0x396997){const _0x5f01bd=_0x1d4a;function _0x55937a(_0x5bb3e3){const _0x266a9e=_0x1d4a;try{_0x3a8a00(_0x35414[_0x266a9e(0x283)](_0x5bb3e3));}catch(_0x4b2cd6){_0x396997(_0x4b2cd6);}}function _0x5bae15(_0x4afe88){const _0x13511a=_0x1d4a;try{_0x3a8a00(_0x35414[_0x13511a(0x230)](_0x4afe88));}catch(_0x2a31b8){_0x396997(_0x2a31b8);}}function _0x3a8a00(_0x19585f){const _0x2174e6=_0x1d4a;_0x19585f[_0x2174e6(0x2b9)]?_0x319452(_0x19585f[_0x2174e6(0x207)]):_0x40435e(_0x19585f[_0x2174e6(0x207)])[_0x2174e6(0x26f)](_0x55937a,_0x5bae15);}_0x3a8a00((_0x35414=_0x35414[_0x5f01bd(0x22c)](_0x2ee0a7,_0x1d246a||[]))[_0x5f01bd(0x283)]());});}typeof SuppressedError===_0x27991e(0x257)?SuppressedError:function(_0x59d536,_0x46b19d,_0x4a2b51){const _0x213d37=_0x27991e;var _0x3f8115=new Error(_0x4a2b51);return _0x3f8115[_0x213d37(0x244)]='SuppressedError',_0x3f8115['error']=_0x59d536,_0x3f8115[_0x213d37(0x206)]=_0x46b19d,_0x3f8115;};const _0x2389e0=_0x27991e(0x26d),_0x2aa9dc=_0x27991e(0x2a1),_0x54cab3=_0x27991e(0x2bc),_0x508370=_0x27991e(0x251),_0x5802be=_0x27991e(0x291),_0x249dd8='ns=0;i=45',_0x5d7f02='ns=0;i=40';var _0x545b9c;(function(_0x350f65){const _0xd54d37=_0x27991e;_0x350f65[_0x350f65[_0xd54d37(0x2a2)]=0x0]=_0xd54d37(0x2a2),_0x350f65[_0x350f65[_0xd54d37(0x2d5)]=0x1]=_0xd54d37(0x2d5),_0x350f65[_0x350f65[_0xd54d37(0x2ab)]=0x2]='Both',_0x350f65[_0x350f65[_0xd54d37(0x213)]=0x3]=_0xd54d37(0x213);}(_0x545b9c||(_0x545b9c={})));var _0x5427df;(function(_0x2c506b){const _0x30930f=_0x27991e;_0x2c506b[_0x2c506b[_0x30930f(0x27c)]=0x0]=_0x30930f(0x27c),_0x2c506b[_0x2c506b[_0x30930f(0x20b)]=0x1]=_0x30930f(0x20b),_0x2c506b[_0x2c506b[_0x30930f(0x26b)]=0x2]='Variable',_0x2c506b[_0x2c506b[_0x30930f(0x200)]=0x4]='Method',_0x2c506b[_0x2c506b[_0x30930f(0x1fe)]=0x8]=_0x30930f(0x1fe),_0x2c506b[_0x2c506b[_0x30930f(0x210)]=0x10]=_0x30930f(0x210),_0x2c506b[_0x2c506b['ReferenceType']=0x20]='ReferenceType',_0x2c506b[_0x2c506b[_0x30930f(0x202)]=0x40]='DataType',_0x2c506b[_0x2c506b[_0x30930f(0x23d)]=0x80]=_0x30930f(0x23d);}(_0x5427df||(_0x5427df={})));var _0x5194df;(function(_0x250c52){const _0x18bc5b=_0x27991e;_0x250c52[_0x250c52[_0x18bc5b(0x20b)]=0x1]=_0x18bc5b(0x20b),_0x250c52[_0x250c52[_0x18bc5b(0x26b)]=0x2]=_0x18bc5b(0x26b),_0x250c52[_0x250c52[_0x18bc5b(0x200)]=0x4]=_0x18bc5b(0x200),_0x250c52[_0x250c52[_0x18bc5b(0x1fe)]=0x8]=_0x18bc5b(0x1fe),_0x250c52[_0x250c52[_0x18bc5b(0x210)]=0x10]=_0x18bc5b(0x210),_0x250c52[_0x250c52['ReferenceType']=0x20]=_0x18bc5b(0x2cd),_0x250c52[_0x250c52[_0x18bc5b(0x202)]=0x40]='DataType',_0x250c52[_0x250c52[_0x18bc5b(0x23d)]=0x80]=_0x18bc5b(0x23d);}(_0x5194df||(_0x5194df={})));var _0x4842a0;(function(_0x4ab521){const _0x4b8fb8=_0x27991e;_0x4ab521[_0x4ab521[_0x4b8fb8(0x2cd)]=0x1]=_0x4b8fb8(0x2cd),_0x4ab521[_0x4ab521[_0x4b8fb8(0x25d)]=0x2]=_0x4b8fb8(0x25d),_0x4ab521[_0x4ab521[_0x4b8fb8(0x1f6)]=0x4]=_0x4b8fb8(0x1f6),_0x4ab521[_0x4ab521[_0x4b8fb8(0x299)]=0x8]='BrowseName',_0x4ab521[_0x4ab521[_0x4b8fb8(0x2ca)]=0x10]='DisplayName',_0x4ab521[_0x4ab521['TypeDefinition']=0x20]=_0x4b8fb8(0x2d4);}(_0x4842a0||(_0x4842a0={})));function _0xc284d1(_0x5e876e){const _0x595324=_0x27991e;switch(_0x5e876e){case _0x595324(0x248):return _0x2389e0;case _0x595324(0x2a0):return _0x508370;case _0x595324(0x219):return _0x54cab3;case _0x595324(0x1fa):return _0x5802be;case'HasSubtype':return _0x249dd8;case'HasTypeDefinition':return _0x5d7f02;}}const _0x5be292=_0x349b25=>{const _0x16b82a=_0x27991e;switch(_0x349b25[_0x16b82a(0x267)]){case _0x16b82a(0x20b):if(_0x349b25[_0x16b82a(0x1f3)]===_0x2389e0);if(_0x349b25[_0x16b82a(0x256)]===_0x2aa9dc||_0x349b25[_0x16b82a(0x1f3)]==='i=61')return{'icon':_0x16b82a(0x28b),'color':_0x16b82a(0x293)};return{'icon':_0x16b82a(0x274),'color':_0x16b82a(0x2a3)};case'Variable':if(_0x349b25[_0x16b82a(0x1f3)]===_0x54cab3)return{'icon':_0x16b82a(0x253),'color':_0x16b82a(0x273)};else return _0x349b25[_0x16b82a(0x1f3)]===_0x508370?{'icon':_0x16b82a(0x253),'color':_0x16b82a(0x203)}:{'icon':_0x16b82a(0x253),'color':_0x16b82a(0x297)};case _0x16b82a(0x200):return{'icon':_0x16b82a(0x20c),'color':_0x16b82a(0x29a)};case'ObjectType':return{'icon':'fa-object-group','color':_0x16b82a(0x2c6)};case _0x16b82a(0x210):return{'icon':'fa-sliders','color':_0x16b82a(0x2c6)};case _0x16b82a(0x202):return{'icon':_0x16b82a(0x23e),'color':_0x16b82a(0x297)};}return{'icon':_0x16b82a(0x258),'color':_0x16b82a(0x276)};},_0x317379=({endpointNode:_0x3a8e71,endpoint:_0x361917,baseUrl:_0x5195bf},_0x19aabd,_0x2a69c4)=>_0x41ebcb(void 0x0,void 0x0,void 0x0,function*(){const _0x359466=_0x27991e,_0x5e9fb5=_0x5195bf+_0x359466(0x1ff),_0x228d3e=_0x5e9fb5+_0x359466(0x20f),_0x1108ab=Object[_0x359466(0x27a)](Object['assign']({},_0x2a69c4),{'nodeId':_0x19aabd,'resultMask':0x3f}),_0x2fe2a6=yield fetch(_0x228d3e,{'method':'POST','body':JSON[_0x359466(0x243)]({'endpointNode':_0x3a8e71,'endpoint':_0x361917,'browseDescription':_0x1108ab}),'headers':{'Content-Type':_0x359466(0x28a)}});if(_0x2fe2a6['status']!==0xc8)return console[_0x359466(0x242)](_0x359466(0x254),_0x2fe2a6['status'],_0x2fe2a6[_0x359466(0x27b)]),{'references':[]};const _0x2c0463=yield _0x2fe2a6[_0x359466(0x2af)](),_0x95987a=_0x2c0463[_0x359466(0x278)][_0x359466(0x29c)]||[];return{'references':_0x95987a};}),_0x5eb4ae={'referenceTypeId':_0xc284d1(_0x27991e(0x1fa)),'includeSubtypes':!![],'browseDirection':_0x545b9c[_0x27991e(0x2a2)],'nodeClassMask':_0x5427df[_0x27991e(0x26b)]|_0x5427df[_0x27991e(0x20b)]|_0x5427df['Method'],'resultMask':0x3f},_0x416ad0={'referenceTypeId':_0xc284d1(_0x27991e(0x248)),'includeSubtypes':!![],'browseDirection':_0x545b9c['Forward'],'nodeClassMask':_0x5427df['Variable']|_0x5427df[_0x27991e(0x20b)]|_0x5427df[_0x27991e(0x200)],'resultMask':0x3f},_0x267d27=({endpointNode:_0x3a7350,endpoint:_0x2a126f,baseUrl:_0x221ffe},{nodeId:_0x3d9b29,rootNodeId:_0x497b2b,isType:_0x162dfc})=>_0x41ebcb(void 0x0,void 0x0,void 0x0,function*(){const _0x59806f=_0x27991e,_0x56e009=_0x221ffe+_0x59806f(0x1ff),_0x161a87=_0x56e009+_0x59806f(0x2d0),_0x33da8d=yield fetch(_0x161a87,{'method':_0x59806f(0x20a),'body':JSON['stringify']({'endpointNode':_0x3a7350,'endpoint':_0x2a126f,'nodeId':_0x3d9b29,'rootNodeId':_0x497b2b,'isType':_0x162dfc}),'headers':{'Content-Type':_0x59806f(0x28a)}});if(_0x33da8d[_0x59806f(0x229)]!==0xc8)return null;const _0x5b3f91=yield _0x33da8d['json']();return _0x5b3f91[_0x59806f(0x2bd)];}),_0x232e98=({endpointNode:_0x1ea9c6,endpoint:_0x525dfe,baseUrl:_0x1f65ae},_0x21b10b,_0x32a9f0)=>_0x41ebcb(void 0x0,void 0x0,void 0x0,function*(){const _0x4f83d4=_0x27991e,_0x22dae4=_0x1f65ae+_0x4f83d4(0x1ff),_0x21e734=_0x22dae4+_0x4f83d4(0x2c7),_0xabc6eb=_0x21b10b[_0x4f83d4(0x221)](),_0x76f7b4=yield fetch(_0x21e734,{'method':_0x4f83d4(0x20a),'body':JSON[_0x4f83d4(0x243)]({'endpointNode':_0x1ea9c6,'endpoint':_0x525dfe,'nodeId':_0xabc6eb}),'headers':{'Content-Type':'application/json'}}),_0xd9aba3=(_0x4158c7,_0xa5e0f5)=>{const _0x56be37=_0x4f83d4;_0x32a9f0[_0x56be37(0x2b1)](_0x4158c7)[_0x56be37(0x26a)](_0x56be37(0x25a))[_0x56be37(0x26a)](_0xa5e0f5),_0x32a9f0[_0x56be37(0x237)](),setTimeout(()=>{const _0x238831=_0x56be37;_0x32a9f0[_0x238831(0x2ce)](_0xa5e0f5),_0x32a9f0[_0x238831(0x211)]();},0xbb8);},_0x27a519=yield _0x76f7b4['json']();_0x76f7b4[_0x4f83d4(0x229)]!==0xc8?_0xd9aba3(_0x4f83d4(0x1f7)+_0xabc6eb,'failure'):_0x27a519[_0x4f83d4(0x2d1)]['match'](/Good/)?(_0x21b10b['val'](_0x27a519['nodeAddressString']),_0x21b10b[_0x4f83d4(0x265)](_0x4f83d4(0x2b6)),_0xd9aba3('Good','ok')):(_0x21b10b[_0x4f83d4(0x221)](''+_0xabc6eb),_0xd9aba3(_0x27a519[_0x4f83d4(0x2d1)]+'\x20'+_0x76f7b4[_0x4f83d4(0x27b)],_0x4f83d4(0x231)));});function _0x3b82b2(_0x3e6b4d,_0x1d6256){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x168b17=_0x1d4a,_0x4b1d73=_0x3e6b4d[_0x168b17(0x24d)](_0x168b17(0x207)),_0x355a8c=yield _0x317379(_0x1d6256,_0x4b1d73,_0x5eb4ae),_0x13e13b=yield _0x317379(_0x1d6256,_0x4b1d73,_0x416ad0);return{'references':[..._0x355a8c[_0x168b17(0x29c)],..._0x13e13b['references']]};});}const _0x190330={'referenceTypeId':_0xc284d1(_0x27991e(0x27d)),'includeSubtypes':!![],'browseDirection':_0x545b9c[_0x27991e(0x2a2)],'nodeClassMask':_0x5427df[_0x27991e(0x2cd)]|_0x5427df[_0x27991e(0x1fe)]|_0x5427df[_0x27991e(0x202)]|_0x5427df[_0x27991e(0x210)],'resultMask':0x3f};function _0x3cdd58(_0x5f54e8,_0x23f580){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x53de6b=_0x1d4a,_0x1b55a3=_0x5f54e8[_0x53de6b(0x24d)]('value'),_0x16ef0b=yield _0x317379(_0x23f580,_0x1b55a3,_0x190330);return _0x16ef0b;});}const _0x48687b=_0x286ff5=>{const _0x276fdc=_0x27991e;var _0x59390a,_0x42dcc2,_0x169512,_0x415d22;if(!_0x286ff5||!_0x286ff5[_0x276fdc(0x286)]){const _0x593507=$(_0x276fdc(0x2b4));return _0x593507;}const _0x3b391b=_0x286ff5[_0x276fdc(0x286)]['toString'](),_0x53bc08=((_0x59390a=_0x286ff5[_0x276fdc(0x259)])===null||_0x59390a===void 0x0?void 0x0:_0x59390a[_0x276fdc(0x2b1)])||((_0x42dcc2=_0x286ff5[_0x276fdc(0x27f)])===null||_0x42dcc2===void 0x0?void 0x0:_0x42dcc2[_0x276fdc(0x244)])||_0x286ff5[_0x276fdc(0x286)]['toString'](),{icon:_0x3b32d7,color:_0x1a32a6}=_0x5be292(_0x286ff5),_0x8153ad='('+_0x286ff5[_0x276fdc(0x286)][_0x276fdc(0x21b)]()+')\x20'+(((_0x169512=_0x286ff5['browseName'])===null||_0x169512===void 0x0?void 0x0:_0x169512['name'])||((_0x415d22=_0x286ff5[_0x276fdc(0x259)])===null||_0x415d22===void 0x0?void 0x0:_0x415d22[_0x276fdc(0x2b1)])||''),_0x25ce57=$(_0x276fdc(0x292)+_0x286ff5[_0x276fdc(0x286)][_0x276fdc(0x21b)]()+_0x276fdc(0x1f8)+_0x8153ad+_0x276fdc(0x225)+_0x3b32d7+_0x276fdc(0x2a6)+_0x1a32a6+';\x22></i>\x20'+_0x53bc08+_0x276fdc(0x1f9));return _0x25ce57[_0x276fdc(0x26a)](_0x276fdc(0x264)),_0x25ce57[_0x276fdc(0x24d)]('value',_0x3b391b),_0x25ce57[_0x276fdc(0x24d)](_0x276fdc(0x296),_0x286ff5),_0x25ce57;},_0x1b47c9=(_0x1ce42f,_0x3704ed)=>{const _0x192ef9=_0x27991e;return _0x3704ed[_0x192ef9(0x2d2)](_0x192ef9(0x26c)+_0x1ce42f+'\x22]');},_0x31fe61=(_0x319a33,_0x35f71)=>{const _0x4daf49=_0x27991e;_0x319a33[_0x4daf49(0x2ba)][_0x4daf49(0x2d2)](_0x4daf49(0x20e))[_0x4daf49(0x2ce)](_0x4daf49(0x204)),_0x35f71[_0x4daf49(0x2d2)](_0x4daf49(0x2a5))['addClass'](_0x4daf49(0x204));},_0x4a844a=(_0x5dbb72,_0xf733b5,_0x29019d)=>_0x41ebcb(void 0x0,void 0x0,void 0x0,function*(){const _0x21cffc=_0x27991e;let _0x9c0bcf=_0x29019d['children'](_0x21cffc(0x2bf));_0xf733b5['relativePath'][_0x21cffc(0x209)]||[];const _0x9c230b=_0xf733b5[_0x21cffc(0x2bb)]||[];if(_0x9c230b[_0x21cffc(0x29d)]===0x0)return;for(const _0x4f8706 of _0x9c230b){_0x9c0bcf[_0x21cffc(0x2a9)](_0x21cffc(0x264))&&(yield _0x5e057f(_0x5dbb72,_0x9c0bcf));const _0x390f8f=_0x1b47c9(_0x4f8706,_0x9c0bcf);if(_0x390f8f['length']===0x0)return;_0x9c0bcf=_0x390f8f;}_0x31fe61(_0x5dbb72,_0x9c0bcf),_0x1bb0d9(_0x5dbb72['$dropdown'],_0x9c0bcf);});function _0x1bb0d9(_0x2c72c8,_0x560dca){const _0xf801=_0x27991e,_0x42e33f=_0x560dca[_0xf801(0x223)]()[_0xf801(0x208)],_0xe2e45f=_0x2c72c8[_0xf801(0x261)]();if(_0xe2e45f==undefined)return;const _0x3b6530=_0xe2e45f+_0x42e33f-_0x2c72c8[_0xf801(0x295)]()/0x2+_0x560dca[_0xf801(0x295)]()/0x2;_0x2c72c8[_0xf801(0x2c3)]({'scrollTop':_0x3b6530},0x1f4);}const _0x7c4798=(_0x822853,_0x52fbe8)=>_0x41ebcb(void 0x0,void 0x0,void 0x0,function*(){const _0x36bc4c=_0x27991e,_0x174b0d=_0x822853[_0x36bc4c(0x2c9)][_0x36bc4c(0x221)](),_0x27f8d3={'nodeId':_0x174b0d,'rootNodeId':_0x52fbe8[_0x36bc4c(0x286)],'isType':_0x822853[_0x36bc4c(0x279)][_0x36bc4c(0x224)]||![]},_0x2f276a=_0x5c5810(_0x822853),_0x1a345c=yield _0x267d27(_0x2f276a,_0x27f8d3);if(!_0x1a345c)return;yield _0x4a844a(_0x822853,_0x1a345c,_0x822853[_0x36bc4c(0x2ba)]);});function _0x56034f(_0x50fe19,_0x942e44,_0x5bde1e,_0x3d6b51){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x264108=_0x1d4a;if(_0x942e44[_0x264108(0x2a9)]('fetched')){console[_0x264108(0x242)](_0x264108(0x20d));return;}if(_0x942e44[_0x264108(0x2a9)](_0x264108(0x21c))){console[_0x264108(0x242)](_0x264108(0x217));return;}_0x942e44[_0x264108(0x26a)](_0x264108(0x21c)),_0x942e44[_0x264108(0x2ac)](_0x264108(0x214));try{_0x942e44[_0x264108(0x294)]('ul')[_0x264108(0x2be)]();const {references:_0x47d4e8}=yield _0x5bde1e(_0x942e44,_0x3d6b51);for(const _0x298c9d of _0x47d4e8){if(_0x50fe19[_0x264108(0x279)][_0x264108(0x2ad)]&&!_0x50fe19[_0x264108(0x279)][_0x264108(0x2ad)](_0x298c9d))continue;const _0x449dd2=_0x48687b(_0x298c9d);_0x942e44[_0x264108(0x294)]('ul')[_0x264108(0x2ac)](_0x449dd2);}_0x942e44[_0x264108(0x26a)](_0x264108(0x238));}catch(_0x257257){_0x942e44[_0x264108(0x294)]('ul')[_0x264108(0x2ac)](_0x264108(0x21f)+_0x257257[_0x264108(0x2aa)]+_0x264108(0x201)),console[_0x264108(0x242)](_0x264108(0x226),_0x257257);}_0x942e44[_0x264108(0x2d2)](_0x264108(0x22e))[_0x264108(0x284)](),_0x942e44[_0x264108(0x2ce)]('loading');});}function _0x5c5810(_0x8b768b){const _0x1d960a=_0x27991e,_0x5741a0={'baseUrl':_0x8b768b[_0x1d960a(0x279)][_0x1d960a(0x2a4)],'endpointNode':typeof _0x8b768b[_0x1d960a(0x279)][_0x1d960a(0x262)]===_0x1d960a(0x257)?_0x8b768b[_0x1d960a(0x279)]['endpointNode']():_0x8b768b[_0x1d960a(0x279)]['endpointNode'],'endpoint':typeof _0x8b768b['options'][_0x1d960a(0x271)]===_0x1d960a(0x257)?_0x8b768b[_0x1d960a(0x279)]['endpoint']():_0x8b768b[_0x1d960a(0x279)][_0x1d960a(0x271)]};return _0x5741a0;}function _0x5e057f(_0x1494ca,_0x1d4d17){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x350bf1=_0x1d4a;if(_0x1d4d17[_0x350bf1(0x2a9)](_0x350bf1(0x238))){_0x1d4d17[_0x350bf1(0x2ce)](_0x350bf1(0x264))[_0x350bf1(0x26a)](_0x350bf1(0x220)),_0x1d4d17['children']('ul')[_0x350bf1(0x22a)]();return;}const _0x4fa7b9=_0x5c5810(_0x1494ca),_0x2e1eee=!_0x1494ca[_0x350bf1(0x279)][_0x350bf1(0x224)]?_0x3b82b2:_0x3cdd58;try{yield _0x56034f(_0x1494ca,_0x1d4d17,_0x2e1eee,_0x4fa7b9),_0x1d4d17[_0x350bf1(0x2ce)](_0x350bf1(0x264))['addClass'](_0x350bf1(0x220));}catch(_0x14a7cf){_0x1d4d17[_0x350bf1(0x2ce)](_0x350bf1(0x264))['addClass']('expanded'),console[_0x350bf1(0x242)](_0x350bf1(0x263),_0x14a7cf);}});}const _0x59706d=()=>{const _0x43330f=_0x27991e;$['widget']('sterfive.nodeBrowser',{'options':{'endpointNode':()=>({'endpoint':_0x43330f(0x246)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x43330f(0x252)},'nodeClass':'Object','nodeId':_0x43330f(0x2c0),'displayName':{'text':_0x43330f(0x252)},'typeDefinition':_0x2aa9dc}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x1f177a=_0x1d4a,_0x125fa3=this;if(!_0x125fa3[_0x1f177a(0x23c)]){const _0x22a4a1=typeof _0x125fa3[_0x1f177a(0x279)][_0x1f177a(0x240)]===_0x1f177a(0x257)?_0x125fa3[_0x1f177a(0x279)]['parentNode'][_0x1f177a(0x22b)](_0x125fa3):_0x125fa3[_0x1f177a(0x279)][_0x1f177a(0x240)];if(_0x22a4a1 instanceof Promise){const _0x1bab28=yield _0x22a4a1;_0x125fa3['__parentNode']=_0x1bab28;}else _0x125fa3['__parentNode']=_0x22a4a1;}return _0x125fa3[_0x1f177a(0x23c)];});},'reset'(){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x293d53=_0x1d4a,_0x1c7882=this,_0x5b5c8c=_0x1c7882;_0x5b5c8c[_0x293d53(0x23c)]=undefined,_0x1c7882['$tree']['empty']();const _0x1e4490=yield this[_0x293d53(0x281)](),_0x112320=_0x48687b(_0x1e4490);_0x1c7882[_0x293d53(0x2ba)][_0x293d53(0x2ac)](_0x112320),_0x1c7882['currentParent']=_0x1e4490;});},'verify'(){const _0x194dad=_0x43330f,_0x126e7d=this,_0x5e2fc5=_0x5c5810(_0x126e7d);_0x232e98(_0x5e2fc5,_0x126e7d[_0x194dad(0x2c9)],_0x126e7d[_0x194dad(0x23a)]);},'_create'(){const _0x25df0f=_0x43330f,_0x453e21=this;_0x453e21['$input']=this[_0x25df0f(0x21a)],_0x453e21[_0x25df0f(0x28c)]=$(_0x25df0f(0x227)),_0x453e21[_0x25df0f(0x28c)][_0x25df0f(0x26a)](_0x25df0f(0x23b)),this[_0x25df0f(0x21a)]['replaceWith'](_0x453e21['$combo']),_0x453e21[_0x25df0f(0x277)]=$(_0x25df0f(0x227))['addClass'](_0x25df0f(0x2c8)),_0x453e21[_0x25df0f(0x28c)][_0x25df0f(0x2ac)](_0x453e21[_0x25df0f(0x277)]),_0x453e21[_0x25df0f(0x277)]['append'](_0x453e21[_0x25df0f(0x2c9)]),_0x453e21[_0x25df0f(0x21d)]=$(_0x25df0f(0x233)),_0x453e21[_0x25df0f(0x277)][_0x25df0f(0x2ac)](_0x453e21['$toggleTreeBtn']),_0x453e21[_0x25df0f(0x21d)]['on']('click',function(){var _0x3c4fb1;return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x5a8f86=_0x1d4a;let _0x75c708=![],_0x284751;!_0x453e21['$dropdown']['is'](_0x5a8f86(0x2b8))&&(_0x453e21[_0x5a8f86(0x23a)][_0x5a8f86(0x211)](),_0x284751=yield _0x453e21[_0x5a8f86(0x281)](),(_0x284751!==_0x453e21[_0x5a8f86(0x29f)]||((_0x3c4fb1=_0x453e21[_0x5a8f86(0x29f)])===null||_0x3c4fb1===void 0x0?void 0x0:_0x3c4fb1[_0x5a8f86(0x286)])!==_0x284751[_0x5a8f86(0x286)])&&(yield _0x453e21[_0x5a8f86(0x2cf)]()),_0x75c708=!![]),_0x453e21[_0x5a8f86(0x2ae)]['toggle'](),_0x75c708&&(yield _0x7c4798(_0x453e21,_0x284751));});}),_0x453e21['$verifyBtn']=$('<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>'),_0x453e21[_0x25df0f(0x277)][_0x25df0f(0x2ac)](_0x453e21['$verifyBtn']),_0x453e21[_0x25df0f(0x275)]['on'](_0x25df0f(0x272),()=>{const _0x1522e3=_0x25df0f;this[_0x1522e3(0x1fd)]();});!_0x453e21[_0x25df0f(0x2c9)][_0x25df0f(0x2b7)](_0x25df0f(0x25e))&&_0x453e21['$input'][_0x25df0f(0x2b7)](_0x25df0f(0x25e),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20');_0x453e21[_0x25df0f(0x23a)]=$(_0x25df0f(0x2c4)),_0x453e21['$info']['hide'](),_0x453e21[_0x25df0f(0x2ae)]=$(_0x25df0f(0x227))[_0x25df0f(0x26a)]('sterfive-dropdown')['hide'](),_0x453e21['$combo'][_0x25df0f(0x2ac)](_0x453e21[_0x25df0f(0x23a)]),_0x453e21[_0x25df0f(0x28c)]['append'](_0x453e21['$dropdown']),_0x453e21['$tree']=$(_0x25df0f(0x24e))['appendTo'](_0x453e21[_0x25df0f(0x2ae)]),this['reset']();const _0x126ae6=(_0x48e460,_0x2d9c72)=>{const _0x215940=_0x25df0f,_0x39a604=0x14,_0x58f24e=0x14,_0x585601=_0x48e460[_0x215940(0x287)](),_0x27adc2=_0x2d9c72;if(_0x27adc2['pageX']>=_0x585601[_0x215940(0x2b5)]&&_0x27adc2[_0x215940(0x289)]<=_0x585601[_0x215940(0x2b5)]+_0x39a604&&_0x27adc2[_0x215940(0x222)]>=_0x585601[_0x215940(0x208)]&&_0x27adc2[_0x215940(0x222)]<=_0x585601['top']+_0x58f24e)return!![];return![];},_0x1f0f97=_0x5d61d0=>_0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x50c25f=_0x25df0f;if(_0x5d61d0[_0x50c25f(0x2a9)](_0x50c25f(0x264)))_0x5e057f(_0x453e21,_0x5d61d0);else{if(_0x5d61d0[_0x50c25f(0x2a9)](_0x50c25f(0x220)))_0x5d61d0['children']('ul')[_0x50c25f(0x22a)](),_0x5d61d0[_0x50c25f(0x26e)](_0x50c25f(0x247));else{if(_0x5d61d0[_0x50c25f(0x294)]('ul')[_0x50c25f(0x294)]()[_0x50c25f(0x29d)]>0x0)_0x5d61d0['children']('ul')[_0x50c25f(0x22a)](),_0x5d61d0[_0x50c25f(0x26e)](_0x50c25f(0x247));else;}}});_0x453e21['$tree']['on']('dblclick','li',function(_0x597418){const _0x230f81=_0x25df0f;var _0x5785d4,_0x20b8d0;_0x597418[_0x230f81(0x24f)]();let _0x5c0a66=$(this);if(_0x126ae6(_0x5c0a66,_0x597418))_0x1f0f97(_0x5c0a66);else{const _0x2de7fe=_0x5c0a66[_0x230f81(0x24d)](_0x230f81(0x207)),_0x24e248=_0x5c0a66[_0x230f81(0x24d)](_0x230f81(0x296));if(_0x453e21[_0x230f81(0x279)][_0x230f81(0x28d)]&&!_0x453e21[_0x230f81(0x279)][_0x230f81(0x28d)](_0x24e248))return;_0x453e21[_0x230f81(0x2c9)]['data']('reference',_0x24e248);const _0x29cac2=((_0x5785d4=_0x24e248[_0x230f81(0x259)])===null||_0x5785d4===void 0x0?void 0x0:_0x5785d4[_0x230f81(0x2b1)])||((_0x20b8d0=_0x24e248[_0x230f81(0x27f)])===null||_0x20b8d0===void 0x0?void 0x0:_0x20b8d0[_0x230f81(0x244)])||_0x24e248[_0x230f81(0x286)][_0x230f81(0x21b)](),_0x1e4346='['+_0x29cac2+']('+_0x2de7fe+')';_0x453e21[_0x230f81(0x2c9)][_0x230f81(0x221)](_0x1e4346),_0x453e21['$input']['trigger'](_0x230f81(0x2b6)),_0x453e21['$dropdown']['hide']();}}),_0x453e21[_0x25df0f(0x2ba)]['on'](_0x25df0f(0x272),'li',function(_0x4f20f5){const _0x45b05b=_0x25df0f;_0x4f20f5[_0x45b05b(0x24f)]();let _0x1b6efa=$(this);_0x126ae6(_0x1b6efa,_0x4f20f5)&&_0x1f0f97(_0x1b6efa),_0x31fe61(_0x453e21,_0x1b6efa);}),$(document)['on'](_0x25df0f(0x272),function(_0x5cca97){const _0x253a28=_0x25df0f;!$(_0x5cca97['target'])[_0x253a28(0x288)](_0x453e21[_0x253a28(0x28c)])['length']&&_0x453e21[_0x253a28(0x2ae)][_0x253a28(0x211)]();});}});},_0x4a9ccf=({endpointNode:_0x4b96e4,endpoint:_0x20a069,baseUrl:_0x2f2c2b},_0x22bf28)=>_0x41ebcb(void 0x0,void 0x0,void 0x0,function*(){const _0x44e525=_0x27991e,_0x595d2e=_0x2f2c2b+'/opcua-endpoint2',_0x4f7153=_0x595d2e+_0x44e525(0x2c7),_0x406b0e=yield fetch(_0x4f7153,{'method':_0x44e525(0x20a),'body':JSON[_0x44e525(0x243)]({'endpointNode':_0x4b96e4,'endpoint':_0x20a069,'nodeId':_0x22bf28}),'headers':{'Content-Type':_0x44e525(0x28a)}});if(_0x406b0e['status']!==0xc8){console[_0x44e525(0x242)]('fetching\x20failed\x20with\x20error',_0x406b0e[_0x44e525(0x229)],_0x406b0e[_0x44e525(0x27b)]);const _0x3f366b={'statusCode':'Bad','nodeAddressString':_0x22bf28};return _0x3f366b;}console[_0x44e525(0x242)](_0x44e525(0x280),_0x406b0e[_0x44e525(0x229)],_0x406b0e[_0x44e525(0x27b)]);const _0x193d15=yield _0x406b0e[_0x44e525(0x2af)]();return _0x193d15;});function _0x4b7d57(_0xb41431,_0x3026fc,_0x36b6ea,_0x1e8406){const _0x362986=_0x27991e,_0x34a847=$('#'+_0xb41431+'-success'),_0x34dcf0=$('#'+_0xb41431+_0x362986(0x2cc)),_0x292bc5=$('#'+_0xb41431+'-pending'),_0x64d5a3=$('#'+_0xb41431+_0x362986(0x228));let _0xe71067=![];_0x34a847[_0x362986(0x211)](),_0x34dcf0[_0x362986(0x211)](),_0x292bc5[_0x362986(0x211)](),_0x3026fc['on']('click',()=>{const _0x5f3a48=_0x362986;if(_0xe71067)return;_0xe71067=!![],_0x292bc5[_0x5f3a48(0x2ce)]('hide'),_0x292bc5[_0x5f3a48(0x29e)]('Testing\x20Connection\x20...'),_0x34a847['addClass'](_0x5f3a48(0x211)),_0x34dcf0[_0x5f3a48(0x26a)](_0x5f3a48(0x211)),_0x64d5a3[_0x5f3a48(0x29e)]('');const {body:_0x5db28c,url:_0x33f109}=_0x36b6ea();fetch(_0x33f109,{'method':_0x5f3a48(0x20a),'headers':{'Content-Type':_0x5f3a48(0x28a)},'body':JSON[_0x5f3a48(0x243)](_0x5db28c)})[_0x5f3a48(0x26f)](_0x4891a5=>_0x4891a5[_0x5f3a48(0x2af)]())[_0x5f3a48(0x26f)](_0x3fbd74=>{const _0x243bbb=_0x5f3a48;_0xe71067=![],_0x292bc5[_0x243bbb(0x211)](),console[_0x243bbb(0x242)](JSON['stringify'](_0x3fbd74,null,'\x20'));if(_0x3fbd74['result']==='ok')_0x34a847['removeClass']('hide'),_0x34dcf0[_0x243bbb(0x26a)](_0x243bbb(0x211)),_0x64d5a3[_0x243bbb(0x29e)](_0x3fbd74['message'][_0x243bbb(0x2b0)]('\x0a',_0x243bbb(0x285))),_0x1e8406(null,_0x3fbd74);else{const _0x7ff287=_0x20b042=>!_0x20b042?'':_0x20b042[_0x243bbb(0x27e)]('\x0a')[_0x243bbb(0x29b)](_0x15dd02=>_0x243bbb(0x2c1)+_0x15dd02+_0x243bbb(0x245))[_0x243bbb(0x260)]('\x0a'),_0xeb7f=_0x2660ac=>Array[_0x243bbb(0x270)](_0x2660ac)?_0x2660ac['map'](_0x7ff287)[_0x243bbb(0x260)]('\x0a'):_0x7ff287(_0x2660ac);_0x34a847['addClass'](_0x243bbb(0x211)),_0x34dcf0[_0x243bbb(0x2ce)](_0x243bbb(0x211)),_0x64d5a3[_0x243bbb(0x29e)](_0xeb7f(_0x3fbd74[_0x243bbb(0x2aa)])+_0xeb7f(_0x3fbd74['extra'])),_0x1e8406(new Error(_0x3fbd74[_0x243bbb(0x241)]),_0x3fbd74);}})[_0x5f3a48(0x234)](_0x49f261=>{const _0x33f38d=_0x5f3a48;_0xe71067=![],_0x292bc5['addClass']('hide'),_0x34a847['addClass']('hide'),_0x34dcf0[_0x33f38d(0x2ce)](_0x33f38d(0x211)),_0x64d5a3[_0x33f38d(0x29e)](_0x33f38d(0x24b)+_0x49f261[_0x33f38d(0x2aa)]),console['log'](_0x33f38d(0x226),_0x49f261),_0x1e8406(_0x49f261,null);});});}const _0x26d0ef=()=>{const _0x24ae58=_0x27991e,_0x1a475d=$(_0x24ae58(0x28f)),_0x4a1be5=_0x1a475d[_0x24ae58(0x221)](),_0x55284c=RED['nodes'][_0x24ae58(0x232)](_0x4a1be5);if(!_0x55284c)return undefined;const {endpoint:_0x3ccfd9,securityMode:_0x675178,securityPolicy:_0x5231b2,userIdentityType:_0x220962,credentials:_0x519137}=_0x55284c,_0x119690={'endpoint':_0x3ccfd9,'securityMode':_0x675178,'securityPolicy':_0x5231b2,'userIdentityType':_0x220962,'credentials':_0x519137};return _0x119690;},_0x29f875=()=>{return{'endpointNode':_0xe903e0};},_0xe903e0=()=>{const _0xd80b70=_0x27991e,_0x5a0969=$('#node-input-endpoint'),_0xc7cd22=_0x5a0969[_0xd80b70(0x221)](),_0xf3f1bb=_0x26d0ef();if(!_0xf3f1bb)return undefined;return{'id':_0xc7cd22};};RED['nodes'][_0x27991e(0x2a7)]('OpcUa-Client2-Call',{'category':_0x27991e(0x2c2),'color':'#C0DEED','align':'right','icon':_0x27991e(0x1fb),'paletteLabel':_0x27991e(0x22b),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':'OpcUa-Endpoint2'},'action':{'value':'read','required':!![]},'methodId':{'value':'','required':!![]},'objectId':{'value':'','required':!![]}},'outputs':0x2,'label'(){const _0xd59ce0=_0x27991e;return this[_0xd59ce0(0x244)]||_0xd59ce0(0x2a8);},'labelStyle'(){const _0x231a47=_0x27991e;return this[_0x231a47(0x244)]?'node_label_italic':'';},'oneditprepare'(){const _0x3d7083=_0x27991e,_0x5cbda9=this;_0x59706d(),_0x5cbda9['inputs']=0x1;let _0x22ac75={};const _0x510fdf=$('#node-input-objectId'),_0x5781a5=$(_0x3d7083(0x212)),_0x4dd396=$(_0x3d7083(0x282)),_0x295205=$(_0x3d7083(0x1f5)),_0x10c07f=$(_0x3d7083(0x22d));_0x510fdf[_0x3d7083(0x215)](Object[_0x3d7083(0x27a)](Object[_0x3d7083(0x27a)]({},_0x29f875()),{'filter'(_0x262729){const _0x24f5e3=_0x3d7083;return _0x262729[_0x24f5e3(0x267)]===_0x24f5e3(0x20b);}})),_0x5781a5['nodeBrowser'](Object['assign'](Object[_0x3d7083(0x27a)]({},_0x29f875()),{'parentNode':function(){return _0x41ebcb(this,void 0x0,void 0x0,function*(){const _0x2ddf99=_0x1d4a,_0x5891c8=_0x5c5810(this);let _0x403e3c=_0x510fdf[_0x2ddf99(0x24d)](_0x2ddf99(0x296));if(!_0x403e3c){const _0x3c6718=_0x510fdf[_0x2ddf99(0x221)](),_0xd4e1ed=_0x26d0ef();if(!_0xd4e1ed)return null;try{const _0x3bbaca=yield _0x4a9ccf(_0x5891c8,_0x3c6718);_0x403e3c=_0x3bbaca[_0x2ddf99(0x296)];}catch(_0x224edc){console[_0x2ddf99(0x242)](_0x224edc);}}return _0x403e3c;});},'filter'(_0x2a1744){const _0xcf701d=_0x3d7083;return _0x2a1744[_0xcf701d(0x267)]===_0xcf701d(0x200)||_0x2a1744['nodeClass']===_0xcf701d(0x20b);},'isSelectable'(_0x2eb6b8){const _0x38e821=_0x3d7083;return _0x2eb6b8[_0x38e821(0x267)]==='Method';}})),_0x510fdf['on'](_0x3d7083(0x2b6),()=>{const _0x3a3b1c=_0x3d7083;_0x5781a5['nodeBrowser'](_0x3a3b1c(0x2cf));});function _0x5bd626(_0x496c52,_0x4ee4ca,_0xc359a1){const _0x252c66=_0x3d7083,_0x119dc2=$(_0x252c66(0x2cb))['appendTo'](_0x496c52);$('<input\x20type=\x22text\x22>')[_0x252c66(0x221)](_0xc359a1['name']||'')[_0x252c66(0x25b)]({'width':'100%'})[_0x252c66(0x24a)](_0x119dc2);const _0x3c306a=_0x22ac75[_0xc359a1[_0x252c66(0x250)][_0x252c66(0x21b)]()],_0x460fe5=(_0x3c306a?_0x3c306a['browseName'][_0x252c66(0x244)]||'':_0xc359a1['dataType'][_0x252c66(0x21b)]())+(_0xc359a1[_0x252c66(0x205)]===0x1?'[]':'');$(_0x252c66(0x1f4))[_0x252c66(0x221)](_0xc359a1[_0x252c66(0x235)]['text']||'')[_0x252c66(0x25b)]({'width':_0x252c66(0x269)})[_0x252c66(0x24a)](_0x119dc2),$(_0x252c66(0x1f4))[_0x252c66(0x221)](_0x460fe5||'')[_0x252c66(0x25b)]({'width':_0x252c66(0x269)})[_0x252c66(0x24a)](_0x119dc2);}_0x4dd396['editableList']({'addButton':![],'height':'auto','scrollOnAdd':![],'addItem'(_0x26e5f6,_0x2365e6,_0x36972a){_0x5bd626(_0x26e5f6,_0x2365e6,_0x36972a);}}),_0x295205[_0x3d7083(0x216)]({'addButton':![],'height':'auto','scrollOnAdd':![],'addItem'(_0x339046,_0x3b8699,_0x78313a){_0x5bd626(_0x339046,_0x3b8699,_0x78313a);}});function _0x1586c7(_0x4ae0af,_0x5c63ff){const _0xba020b=_0x3d7083;console[_0xba020b(0x242)](_0xba020b(0x25c),_0x5c63ff[_0xba020b(0x29d)],_0xba020b(0x21e),_0x5c63ff),_0x4ae0af['editableList'](_0xba020b(0x2be));for(let _0x2ce0b8=0x0;_0x2ce0b8<_0x5c63ff[_0xba020b(0x29d)];_0x2ce0b8++){_0x4ae0af[_0xba020b(0x216)]('addItem',_0x5c63ff[_0x2ce0b8]);}}_0x4dd396[_0x3d7083(0x211)](),_0x295205[_0x3d7083(0x211)]();let _0x318324={};const _0x50870a=$(_0x3d7083(0x25f));_0x50870a['hide'](),_0x50870a['on'](_0x3d7083(0x272),()=>{const _0x52ef0a=_0x3d7083;navigator[_0x52ef0a(0x290)][_0x52ef0a(0x298)](JSON['stringify'](_0x318324));}),_0x4b7d57(_0x3d7083(0x23f),_0x10c07f,()=>({'url':_0x3d7083(0x28e),'body':{'endpointNode':_0xe903e0(),'objectId':_0x510fdf[_0x3d7083(0x221)](),'methodId':_0x5781a5['val']()}}),(_0x39afdb,_0x3330c9)=>{const _0x25bdca=_0x3d7083;if(_0x39afdb)return;const _0x213a1b=_0x3330c9[_0x25bdca(0x249)];_0x22ac75=_0x3330c9[_0x25bdca(0x239)],_0x4dd396[_0x25bdca(0x237)](),_0x295205['show'](),_0x1586c7(_0x4dd396,_0x213a1b[_0x25bdca(0x266)]),_0x1586c7(_0x295205,_0x213a1b['outputArguments']),_0x318324=_0x3330c9['inputArgumentsExampleAsJson']||{},_0x50870a[_0x25bdca(0x237)](),navigator[_0x25bdca(0x290)][_0x25bdca(0x298)](JSON['stringify'](_0x318324)),console['log'](_0x25bdca(0x218),JSON[_0x25bdca(0x243)](_0x318324)),console[_0x25bdca(0x242)]('data',_0x3330c9);});},'oneditsave'(){}});}()));function _0x1d4a(_0x46311b,_0x706e2a){const _0x8f47c7=_0x8f47();return _0x1d4a=function(_0x1d4afc,_0x1d9c00){_0x1d4afc=_0x1d4afc-0x1f3;let _0x2393a4=_0x8f47c7[_0x1d4afc];return _0x2393a4;},_0x1d4a(_0x46311b,_0x706e2a);}function _0x8f47(){const _0x5efc4e=['fetched','dataTypes','$info','sterfive-combo-box','__parentNode','View','fa-text-width','validate','parentNode','result','log','stringify','name','</p>','opc.tcp://opcuademo.sterfive.com:26543','expandable\x20expanded','Organizes','argumentDefinition','appendTo','internal\x20error\x20','4dWtfnF','data','<ul\x20class=\x22sterfive-tree\x22></ul>','stopPropagation','dataType','ns=0;i=46','Objects','fa-list-alt','fetching\x20failed\x20with\x20error','65620hnZzlJ','typeDefinition','function','fa-question','displayName','sterfive-info','css','installArgumentList','IsForward','placeholder','#copy-input','join','scrollTop','endpointNode','error','expandable','trigger','inputArguments','nodeClass','559226FzTLpL','50%','addClass','Variable','li[key=\x22','ns=0;i=35','toggleClass','then','isArray','endpoint','click','SteelBlue','fa-object-group','$verifyBtn','grey','$inputGroup','browseResult','options','assign','statusText','Unspecified','HasSubtype','split','browseName','fetched\x20:\x20','resolveParentNode','#method-input-argument-definition','next','remove','<br>','nodeId','offset','closest','pageX','application/json','fa-folder','$combo','isSelectable','/opcua-endpoint2/argumentDefinition','#node-input-endpoint','clipboard','ns=0;i=34','<li\x20key=\x22','rgba(61,\x2060,\x204,\x200.525)','children','height','reference','CadetBlue','writeText','BrowseName','SandyBrown','map','references','length','html','currentParent','HasProperty','ns=0;i=61','Forward','SeaGreen','baseUrl','.tree-text:first','\x22\x20style=\x22color:','registerType','OPCUA-Call','hasClass','message','Both','append','filter','$dropdown','json','replace','text','233334COqfNv','1359ATvBzP','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','left','change','attr',':visible','done','$tree','nodeIds','ns=0;i=47','browsePath','empty',':first','ns=0;i=85','<p>','opcua','animate','<div\x20class=\x22info-text\x22></div>','274510PoRlJX','DarkOrange','/checkNodeId','input-group','$input','DisplayName','<div\x20class=\x22argument-entry\x22>','-failure','ReferenceType','removeClass','reset','/walk-backward','statusCode','find','1301223CtJdod','TypeDefinition','Inverse','referenceTypeId','<input\x20type=\x22text\x22>','#method-output-argument-definition','NodeClass','!!failure!!','\x22}><span\x20class=\x22tree-text\x22\x20title=','</span><ul></ul></li>','HasChild','../../icons/opcuanodeLogo.png','5106888LnjAlx','verify','ObjectType','/opcua-endpoint2','Method','</li>','DataType','DodgerBlue','selected','valueRank','suppressed','value','top','elements','POST','Object','fa-cog','already\x20fetched','li\x20>\x20.tree-text','/browse','VariableType','hide','#node-input-methodId','Invalid','<div\x20class=\x22spinner\x22></div>','nodeBrowser','editableList','already\x20loading','JSON','HasComponent','element','toString','loading','$toggleTreeBtn','arguments','<li>error\x20','expanded','val','pageY','position','isTypeRef','><i\x20class=\x22fa\x20','err','<div/>','-messages','status','toggle','call','apply','#validate-call-arguments-button','.spinner','623715szMKIt','throw','failure','node','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','catch','description','84trqpRG','show'];_0x8f47=function(){return _0x5efc4e;};return _0x8f47();}
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHg0MWViY2IiLCJfMHgyZWUwYTciLCJfMHgxZDI0NmEiLCJfMHg0YTkxZmYiLCJfMHgzNTQxNCIsIl8weDQwNDM1ZSIsIl8weDE2NDYxOCIsIl8weDI5NTc1MCIsIlByb21pc2UiLCJfMHgzMTk0NTIiLCJfMHgzOTY5OTciLCJfMHg1NTkzN2EiLCJfMHg1YmIzZTMiLCJfMHgzYThhMDAiLCJfMHg0YjJjZDYiLCJfMHg1YmFlMTUiLCJfMHg0YWZlODgiLCJfMHgyYTMxYjgiLCJfMHgxOTU4NWYiLCJTdXBwcmVzc2VkRXJyb3IiLCJfMHg1OWQ1MzYiLCJfMHg0NmIxOWQiLCJfMHg0YTJiNTEiLCJfMHgzZjgxMTUiLCJFcnJvciIsIl8weDIzODllMCIsIl8weDJhYTlkYyIsIl8weDU0Y2FiMyIsIl8weDUwODM3MCIsIl8weDU4MDJiZSIsIl8weDI0OWRkOCIsIl8weDVkN2YwMiIsIl8weDU0NWI5YyIsIl8weDM1MGY2NSIsIl8weDU0MjdkZiIsIl8weDJjNTA2YiIsIl8weDUxOTRkZiIsIl8weDI1MGM1MiIsIl8weDQ4NDJhMCIsIl8weDRhYjUyMSIsIl8weGMyODRkMSIsIl8weDVlODc2ZSIsIl8weDViZTI5MiIsIl8weDM0OWIyNSIsIl8weDMxNzM3OSIsImVuZHBvaW50Tm9kZSIsIl8weDNhOGU3MSIsImVuZHBvaW50IiwiXzB4MzYxOTE3IiwiYmFzZVVybCIsIl8weDUxOTViZiIsIl8weDE5YWFiZCIsIl8weDJhNjljNCIsIl8weDVlOWZiNSIsIl8weDIyOGQzZSIsIl8weDExMDhhYiIsIk9iamVjdCIsIl8weDJmZTJhNiIsImZldGNoIiwiSlNPTiIsImNvbnNvbGUiLCJfMHgyYzA0NjMiLCJfMHg5NTk4N2EiLCJfMHg1ZWI0YWUiLCJfMHg0MTZhZDAiLCJfMHgyNjdkMjciLCJfMHgzYTczNTAiLCJfMHgyYTEyNmYiLCJfMHgyMjFmZmUiLCJub2RlSWQiLCJfMHgzZDliMjkiLCJyb290Tm9kZUlkIiwiXzB4NDk3YjJiIiwiaXNUeXBlIiwiXzB4MTYyZGZjIiwiXzB4NTZlMDA5IiwiXzB4MTYxYTg3IiwiXzB4MzNkYThkIiwiXzB4NWIzZjkxIiwiXzB4MjMyZTk4IiwiXzB4MWVhOWM2IiwiXzB4NTI1ZGZlIiwiXzB4MWY2NWFlIiwiXzB4MjFiMTBiIiwiXzB4MzJhOWYwIiwiXzB4MjJkYWU0IiwiXzB4MjFlNzM0IiwiXzB4YWJjNmViIiwiXzB4NzZmN2I0IiwiXzB4ZDlhYmEzIiwiXzB4NDE1OGM3IiwiXzB4YTVlMGY1Iiwic2V0VGltZW91dCIsIl8weDI3YTUxOSIsIl8weDNiODJiMiIsIl8weDNlNmI0ZCIsIl8weDFkNjI1NiIsIl8weDRiMWQ3MyIsIl8weDM1NWE4YyIsIl8weDEzZTEzYiIsIl8weDE5MDMzMCIsIl8weDNjZGQ1OCIsIl8weDVmNTRlOCIsIl8weDIzZjU4MCIsIl8weDFiNTVhMyIsIl8weDE2ZWYwYiIsIl8weDQ4Njg3YiIsIl8weDI4NmZmNSIsIl8weDU5MzkwYSIsIl8weDQyZGNjMiIsIl8weDE2OTUxMiIsIl8weDQxNWQyMiIsIl8weDU5MzUwNyIsIiQiLCJfMHgzYjM5MWIiLCJfMHg1M2JjMDgiLCJpY29uIiwiXzB4M2IzMmQ3IiwiY29sb3IiLCJfMHgxYTMyYTYiLCJfMHg4MTUzYWQiLCJfMHgyNWNlNTciLCJfMHgxYjQ3YzkiLCJfMHgxY2U0MmYiLCJfMHgzNzA0ZWQiLCJfMHgzMWZlNjEiLCJfMHgzMTlhMzMiLCJfMHgzNWY3MSIsIl8weDRhODQ0YSIsIl8weDVkYmI3MiIsIl8weGY3MzNiNSIsIl8weDI5MDE5ZCIsIl8weDljMGJjZiIsIl8weDljMjMwYiIsIl8weDRmODcwNiIsIl8weDVlMDU3ZiIsIl8weDM5MGY4ZiIsIl8weDFiYjBkOSIsIl8weDJjNzJjOCIsIl8weDU2MGRjYSIsIl8weDQyZTMzZiIsIl8weGUyZTQ1ZiIsInVuZGVmaW5lZCIsIl8weDNiNjUzMCIsIl8weDdjNDc5OCIsIl8weDgyMjg1MyIsIl8weDUyZmJlOCIsIl8weDE3NGIwZCIsIl8weDI3ZjhkMyIsIl8weDJmMjc2YSIsIl8weDVjNTgxMCIsIl8weDFhMzQ1YyIsIl8weDU2MDM0ZiIsIl8weDUwZmUxOSIsIl8weDk0MmU0NCIsIl8weDViZGUxZSIsIl8weDNkNmI1MSIsInJlZmVyZW5jZXMiLCJfMHg0N2Q0ZTgiLCJfMHgyOThjOWQiLCJfMHg0NDlkZDIiLCJfMHgyNTcyNTciLCJfMHg4Yjc2OGIiLCJfMHg1NzQxYTAiLCJfMHgxNDk0Y2EiLCJfMHgxZDRkMTciLCJfMHg0ZmE3YjkiLCJfMHgyZTFlZWUiLCJfMHgxNGE3Y2YiLCJfMHg1OTcwNmQiLCJfMHgxMjVmYTMiLCJfMHgyMmE0YTEiLCJfMHgxYmFiMjgiLCJfMHgxYzc4ODIiLCJfMHg1YjVjOGMiLCJfMHgxZTQ0OTAiLCJfMHgxMTIzMjAiLCJfMHgxMjZlN2QiLCJfMHg1ZTJmYzUiLCJfMHg0NTNlMjEiLCJfMHgzYzRmYjEiLCJfMHg3NWM3MDgiLCJfMHgyODQ3NTEiLCJfMHgxMjZhZTYiLCJfMHg0OGU0NjAiLCJfMHgyZDljNzIiLCJfMHgzOWE2MDQiLCJfMHg1OGYyNGUiLCJfMHg1ODU2MDEiLCJfMHgyN2FkYzIiLCJfMHgxZjBmOTciLCJfMHg1ZDYxZDAiLCJfMHg1OTc0MTgiLCJfMHg1Nzg1ZDQiLCJfMHgyMGI4ZDAiLCJfMHg1YzBhNjYiLCJfMHgyZGU3ZmUiLCJfMHgyNGUyNDgiLCJfMHgyOWNhYzIiLCJfMHgxZTQzNDYiLCJfMHg0ZjIwZjUiLCJfMHgxYjZlZmEiLCJkb2N1bWVudCIsIl8weDVjY2E5NyIsIl8weDRhOWNjZiIsIl8weDRiOTZlNCIsIl8weDIwYTA2OSIsIl8weDJmMmMyYiIsIl8weDIyYmYyOCIsIl8weDU5NWQyZSIsIl8weDRmNzE1MyIsIl8weDQwNmIwZSIsIl8weDNmMzY2YiIsIl8weDE5M2QxNSIsIl8weDRiN2Q1NyIsIl8weGI0MTQzMSIsIl8weDMwMjZmYyIsIl8weDM2YjZlYSIsIl8weDFlODQwNiIsIl8weDM0YTg0NyIsIl8weDM0ZGNmMCIsIl8weDI5MmJjNSIsIl8weDY0ZDVhMyIsIl8weGU3MTA2NyIsImJvZHkiLCJfMHg1ZGIyOGMiLCJ1cmwiLCJfMHgzM2YxMDkiLCJfMHg0ODkxYTUiLCJfMHgzZmJkNzQiLCJfMHg3ZmYyODciLCJfMHgyMGIwNDIiLCJfMHgxNWRkMDIiLCJfMHhlYjdmIiwiXzB4MjY2MGFjIiwiQXJyYXkiLCJfMHg0OWYyNjEiLCJfMHgyNmQwZWYiLCJfMHgxYTQ3NWQiLCJfMHg0YTFiZTUiLCJfMHg1NTI4NGMiLCJSRUQiLCJfMHgzY2NmZDkiLCJzZWN1cml0eU1vZGUiLCJfMHg2NzUxNzgiLCJzZWN1cml0eVBvbGljeSIsIl8weDUyMzFiMiIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgyMjA5NjIiLCJjcmVkZW50aWFscyIsIl8weDUxOTEzNyIsIl8weDExOTY5MCIsIl8weDI5Zjg3NSIsIl8weGU5MDNlMCIsIl8weDVhMDk2OSIsIl8weGM3Y2QyMiIsIl8weGYzZjFiYiIsIl8weDVjYmRhOSIsIl8weDIyYWM3NSIsIl8weDUxMGZkZiIsIl8weDU3ODFhNSIsIl8weDRkZDM5NiIsIl8weDI5NTIwNSIsIl8weDEwYzA3ZiIsIl8weDI2MjcyOSIsIl8weDU4OTFjOCIsIl8weDQwM2UzYyIsIl8weDNjNjcxOCIsIl8weGQ0ZTFlZCIsIl8weDNiYmFjYSIsIl8weDIyNGVkYyIsIl8weDJhMTc0NCIsIl8weDJlYjZiOCIsIl8weDViZDYyNiIsIl8weDQ5NmM1MiIsIl8weDRlZTRjYSIsIl8weGMzNTlhMSIsIl8weDExOWRjMiIsIl8weDNjMzA2YSIsIl8weDQ2MGZlNSIsIl8weDI2ZTVmNiIsIl8weDIzNjVlNiIsIl8weDM2OTcyYSIsIl8weDMzOTA0NiIsIl8weDNiODY5OSIsIl8weDc4MzEzYSIsIl8weDE1ODZjNyIsIl8weDRhZTBhZiIsIl8weDVjNjNmZiIsIl8weDJjZTBiOCIsIl8weDMxODMyNCIsIl8weDUwODcwYSIsIm5hdmlnYXRvciIsIl8weDM5YWZkYiIsIl8weDMzMzBjOSIsIl8weDIxM2ExYiJdLCJtYXBwaW5ncyI6InVrQkFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxTQUFT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NUUsU0FBQSxDLGdCQUFBLENBQTBCaUQsU0FBMUIsQ0FBd0MsS0FBTyxDLEtBQzNDLEMsZ0JBRDJDLEMsTUFFM0MsQ0FBTSxDLGNBQ0YsQ0FBY1YsU0FBQSxFQURaLEMsVUFFRixDQUFVTSxTQUFBLEMsZ0JBQUEsR0FGUixDLFVBR0YsQ0FBVUMsU0FBQSxDLEtBQUEsR0FIUixDQUZxQyxDQUFQLENBQXhDLENBT0ksQ0FBQ2lDLFNBQUQsQ0FBTUMsU0FBTixHLDhCQUNJRCxTLENBQ0EsT0FHSixNQUFNRSxTQUFBLENBQXFCRCxTQUFBLEMsZ0JBQUEsQ0FBM0IsQ0FDQXBDLFNBQUEsQ0FBWW9DLFNBQUEsQyxnQkFBQSxDLENBQ1pqQyxTQUFBLEMsZ0JBQUEsRyxDQUNBQyxTQUFBLEMsTUFBQSxHLENBQ0F3QixTQUFBLENBQW9CekIsU0FBcEIsQ0FBOENrQyxTQUFBLEMsZ0JBQUEsQ0FBOUMsQyxDQUNBVCxTQUFBLENBQW9CeEIsU0FBcEIsQ0FBK0NpQyxTQUFBLEMsaUJBQUEsQ0FBL0MsQyxDQUNBTCxTQUFBLENBQWNJLFNBQUEsQyw2QkFBQSxHQUFvQyxFLENBQ2xESCxTQUFBLEMsZ0JBQUEsRyxDQUNBQyxTQUFBLEMsZ0JBQUEsRSxnQkFBQSxFQUE4QnpPLElBQUEsQyxXQUFBLEVBQWV1TyxTQUFmLENBQTlCLEMsQ0FDQXRPLE9BQUEsQyxLQUFBLEUsZ0JBQUEsQ0FBb0JELElBQUEsQyxnQkFBQSxFQUFldU8sU0FBZixDQUFwQixDLENBQ0F0TyxPQUFBLEMsZ0JBQUEsRSxNQUFBLENBQW9CME8sU0FBcEIsQyxFQXRCSixDLEVBM0hxQyxDLFlBb0p6QyxFLEVBcEp5QyxDQUE3QyxDLEVBanNCSixHIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcbiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxuICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcbiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcbiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG4gICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4gICAgLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UsIFN1cHByZXNzZWRFcnJvciwgU3ltYm9sICovXHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgICAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHR5cGVvZiBTdXBwcmVzc2VkRXJyb3IgPT09IFwiZnVuY3Rpb25cIiA/IFN1cHByZXNzZWRFcnJvciA6IGZ1bmN0aW9uIChlcnJvciwgc3VwcHJlc3NlZCwgbWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBlID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbiAgICB9O1xuXG4gICAgY29uc3QgT3JnYW5pemVzUmVmTm9kZUlkID0gXCJucz0wO2k9MzVcIjtcbiAgICBjb25zdCBGb2xkZXJUeXBlID0gXCJucz0wO2k9NjFcIjtcbiAgICBjb25zdCBIYXNDb21wb25lbnRSZWZOb2RlSWQgPSBcIm5zPTA7aT00N1wiO1xuICAgIGNvbnN0IEhhc1Byb3BlcnR5UmVmTm9kZUlkID0gXCJucz0wO2k9NDZcIjtcbiAgICBjb25zdCBIYXNDaGlsZFJlZk5vZGVJZCA9IFwibnM9MDtpPTM0XCI7XG4gICAgY29uc3QgSGFzU3VidHlwZVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ1XCI7XG4gICAgY29uc3QgSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQgPSBcIm5zPTA7aT00MFwiO1xuXG4gICAgdmFyIEJyb3dzZURpcmVjdGlvbjtcbiAgICAoZnVuY3Rpb24gKEJyb3dzZURpcmVjdGlvbikge1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiRm9yd2FyZFwiXSA9IDBdID0gXCJGb3J3YXJkXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJJbnZlcnNlXCJdID0gMV0gPSBcIkludmVyc2VcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkJvdGhcIl0gPSAyXSA9IFwiQm90aFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52YWxpZFwiXSA9IDNdID0gXCJJbnZhbGlkXCI7XG4gICAgfSkoQnJvd3NlRGlyZWN0aW9uIHx8IChCcm93c2VEaXJlY3Rpb24gPSB7fSkpO1xuICAgIHZhciBOb2RlQ2xhc3M7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3MpIHtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlVuc3BlY2lmaWVkXCJdID0gMF0gPSBcIlVuc3BlY2lmaWVkXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJPYmplY3RcIl0gPSAxXSA9IFwiT2JqZWN0XCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0VHlwZVwiXSA9IDhdID0gXCJPYmplY3RUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiRGF0YVR5cGVcIl0gPSA2NF0gPSBcIkRhdGFUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzcyB8fCAoTm9kZUNsYXNzID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzTWFzaztcbiAgICAoZnVuY3Rpb24gKE5vZGVDbGFzc01hc2spIHtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVwiXSA9IDJdID0gXCJWYXJpYWJsZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJNZXRob2RcIl0gPSA0XSA9IFwiTWV0aG9kXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWYXJpYWJsZVR5cGVcIl0gPSAxNl0gPSBcIlZhcmlhYmxlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMzJdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJWaWV3XCJdID0gMTI4XSA9IFwiVmlld1wiO1xuICAgIH0pKE5vZGVDbGFzc01hc2sgfHwgKE5vZGVDbGFzc01hc2sgPSB7fSkpO1xuICAgIHZhciBSZXN1bHRNYXNrO1xuICAgIChmdW5jdGlvbiAoUmVzdWx0TWFzaykge1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJSZWZlcmVuY2VUeXBlXCJdID0gMV0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiSXNGb3J3YXJkXCJdID0gMl0gPSBcIklzRm9yd2FyZFwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJOb2RlQ2xhc3NcIl0gPSA0XSA9IFwiTm9kZUNsYXNzXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIkJyb3dzZU5hbWVcIl0gPSA4XSA9IFwiQnJvd3NlTmFtZVwiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJEaXNwbGF5TmFtZVwiXSA9IDE2XSA9IFwiRGlzcGxheU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiVHlwZURlZmluaXRpb25cIl0gPSAzMl0gPSBcIlR5cGVEZWZpbml0aW9uXCI7XG4gICAgfSkoUmVzdWx0TWFzayB8fCAoUmVzdWx0TWFzayA9IHt9KSk7XG4gICAgLy8gIGNvbnN0IHEgPSBSZWZlcmVuY2VUeXBlSWRzLk9yZ2FuaXplcztcbiAgICBmdW5jdGlvbiByZXNvbHZlTm9kZUlkKG5vZGVJZExpa2UpIHtcbiAgICAgICAgc3dpdGNoIChub2RlSWRMaWtlKSB7XG4gICAgICAgICAgICBjYXNlIFwiT3JnYW5pemVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE9yZ2FuaXplc1JlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNQcm9wZXJ0eVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNQcm9wZXJ0eVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDb21wb25lbnRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzQ29tcG9uZW50UmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc0NoaWxkXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NoaWxkUmVmTm9kZUlkO1xuICAgICAgICAgICAgY2FzZSBcIkhhc1N1YnR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzU3VidHlwZVJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNUeXBlRGVmaW5pdGlvblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNUeXBlRGVmaW5pdGlvblJlZk5vZGVJZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGdldEljb24gPSAocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVmZXJlbmNlLm5vZGVDbGFzcykge1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFwiOlxuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBPcmdhbml6ZXNSZWZOb2RlSWQpIDtcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnR5cGVEZWZpbml0aW9uID09PSBGb2xkZXJUeXBlIHx8IHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IFwiaT02MVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtZm9sZGVyXCIsIGNvbG9yOiBcInJnYmEoNjEsIDYwLCA0LCAwLjUyNSlcIiB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJTZWFHcmVlblwiIH07XG4gICAgICAgICAgICBjYXNlIFwiVmFyaWFibGVcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzQ29tcG9uZW50UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiU3RlZWxCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gSGFzUHJvcGVydHlSZWZOb2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1saXN0LWFsdFwiLCBjb2xvcjogXCJEb2RnZXJCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiTWV0aG9kXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1jb2dcIiwgY29sb3I6IFwiU2FuZHlCcm93blwiIH07XG4gICAgICAgICAgICBjYXNlIFwiT2JqZWN0VHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiBcIkRhcmtPcmFuZ2VcIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtc2xpZGVyc1wiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJEYXRhVHlwZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtdGV4dC13aWR0aFwiLCBjb2xvcjogXCJDYWRldEJsdWVcIiB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGljb246IFwiZmEtcXVlc3Rpb25cIiwgY29sb3I6IFwiZ3JleVwiIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGJyb3dzZSA9ICh7IGVuZHBvaW50Tm9kZSwgZW5kcG9pbnQsIGJhc2VVcmwgfSwgbm9kZUlkLCB0ZW1wbGF0ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9icm93c2VgO1xuICAgICAgICBjb25zdCBicm93c2VEZXNjcmlwdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGVtcGxhdGUpLCB7IG5vZGVJZCwgcmVzdWx0TWFzazogNjMgfSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGJyb3dzZURlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGluZyBmYWlsZWQgd2l0aCBlcnJvclwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgICAgIHJldHVybiB7IHJlZmVyZW5jZXM6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJicm93c2UgZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHJlc3BvbnNlLmJyb3dzZVJlc3VsdC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTEgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc0NoaWxkXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3QgdGVtcGxhdGUyID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJPcmdhbml6ZXNcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlZhcmlhYmxlIHwgTm9kZUNsYXNzLk9iamVjdCB8IE5vZGVDbGFzcy5NZXRob2QsXG4gICAgICAgIC8vICBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8XG4gICAgICAgIC8vICBOb2RlQ2xhc3MuVmFyaWFibGVUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuRGF0YVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuVmlldyxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBjb25zdCB3YWxrQmFja3dhcmQgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIHsgbm9kZUlkLCByb290Tm9kZUlkLCBpc1R5cGUgfSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS93YWxrLWJhY2t3YXJkYDtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgICAgIHJvb3ROb2RlSWQsXG4gICAgICAgICAgICAgICAgaXNUeXBlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIHJldHVybiBqc29uLmJyb3dzZVBhdGg7XG4gICAgfSk7XG4gICAgY29uc3QgaW50ZXJuYWxWZXJpZnkgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sICRpbnB1dEVsZW1lbnQsICRpbmZvKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgcm9vdCA9IGAke2Jhc2VVcmx9L29wY3VhLWVuZHBvaW50MmA7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3Jvb3R9L2NoZWNrTm9kZUlkYDtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gJGlucHV0RWxlbWVudC52YWwoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIGZldGNoKHVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGUsXG4gICAgICAgICAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgICAgICAgICAgbm9kZUlkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXROb3RpZmljYXRpb24gPSAodGV4dCwgY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAkaW5mby50ZXh0KHRleHQpLmFkZENsYXNzKFwic3RlcmZpdmUtaW5mb1wiKS5hZGRDbGFzcyhjbGFzc05hbWUpO1xuICAgICAgICAgICAgJGluZm8uc2hvdygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgJGluZm8ucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAkaW5mby5oaWRlKCk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QganNvbiA9ICh5aWVsZCBkYXRhLmpzb24oKSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmc7XG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oXCIhIWZhaWx1cmUhIVwiICsgbm9kZUlkLCBcImZhaWx1cmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoanNvbi5zdGF0dXNDb2RlLm1hdGNoKC9Hb29kLykpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnZhbChqc29uLm5vZGVBZGRyZXNzU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAkaW5wdXRFbGVtZW50LnRyaWdnZXIoXCJjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiR29vZFwiLCBcIm9rXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoYCR7bm9kZUlkfWApO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihgJHtqc29uLnN0YXR1c0NvZGV9ICR7ZGF0YS5zdGF0dXNUZXh0fWAsIFwiZmFpbHVyZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGZldGNoQ2hpbGRyZW4oJG5vZGUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVJZCA9ICRub2RlLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDEgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTEpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MiA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlMik7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IFsuLi5icm93c2VSZXN1bHQxLnJlZmVyZW5jZXMsIC4uLmJyb3dzZVJlc3VsdDIucmVmZXJlbmNlc10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgdGVtcGxhdGVTVCA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiSGFzU3VidHlwZVwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8IE5vZGVDbGFzcy5PYmplY3RUeXBlIHwgTm9kZUNsYXNzLkRhdGFUeXBlIHwgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSxcbiAgICAgICAgcmVzdWx0TWFzazogNjMsXG4gICAgfTtcbiAgICBmdW5jdGlvbiBmZXRjaFN1YnR5cGVzKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGVTVCk7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3NlUmVzdWx0MTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IG1ha2VFbGVtZW50ID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmICghcmVmZXJlbmNlIHx8ICFyZWZlcmVuY2Uubm9kZUlkKSB7XG4gICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaT48aSBjbGFzcz1cImZhIGZhLWVycm9yXCIgc3R5bGU9XCJjb2xvcjpyZWQ7XCI+PC9pPm5vIHJlZmVyZW5jZSAhPHVsPjwvdWw+PC9saT5gKTtcbiAgICAgICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuID0gcmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpO1xuICAgICAgICBjb25zdCB0ID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgeyBpY29uLCBjb2xvciB9ID0gZ2V0SWNvbihyZWZlcmVuY2UpO1xuICAgICAgICBjb25zdCB0aXRsZSA9IGAoJHtyZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCl9KSAkeygoX2MgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm5hbWUpIHx8ICgoX2QgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50ZXh0KSB8fCBcIlwifWA7XG4gICAgICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGxpIGtleT1cIiR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfVwifT48c3BhbiBjbGFzcz1cInRyZWUtdGV4dFwiIHRpdGxlPSR7dGl0bGV9PjxpIGNsYXNzPVwiZmEgJHtpY29ufVwiIHN0eWxlPVwiY29sb3I6JHtjb2xvcn07XCI+PC9pPiAke3R9PC9zcGFuPjx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICRlbGVtZW50LmFkZENsYXNzKFwiZXhwYW5kYWJsZVwiKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInZhbHVlXCIsIG4pO1xuICAgICAgICAkZWxlbWVudC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiAkZWxlbWVudDtcbiAgICB9O1xuICAgIGNvbnN0IGZpbmRFbGVtZW50ID0gKG5vZGVJZCwgJHRyZWUpID0+IHtcbiAgICAgICAgcmV0dXJuICR0cmVlLmZpbmQoYGxpW2tleT1cIiR7bm9kZUlkfVwiXWApO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0U2luZ2xlID0gKHRoYXQsICRsaSkgPT4ge1xuICAgICAgICB0aGF0LiR0cmVlLmZpbmQoXCJsaSA+IC50cmVlLXRleHRcIikucmVtb3ZlQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgLy8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgICRsaS5maW5kKFwiLnRyZWUtdGV4dDpmaXJzdFwiKS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpO1xuICAgIH07XG4gICAgY29uc3QgYXV0b0V4cGFuZCA9ICh0aGF0LCBicm93c2VQYXRoLCAkdHJlZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIC8vIGV4cGFuZCB0aGUgdHJlZSB0byBzaG93IHRoZSBub2RlSWRcbiAgICAgICAgbGV0ICRjdXJyZW50ID0gJHRyZWUuY2hpbGRyZW4oXCI6Zmlyc3RcIik7XG4gICAgICAgIGJyb3dzZVBhdGgucmVsYXRpdmVQYXRoLmVsZW1lbnRzIHx8IFtdO1xuICAgICAgICBjb25zdCBub2RlSWRzID0gYnJvd3NlUGF0aC5ub2RlSWRzIHx8IFtdO1xuICAgICAgICBpZiAobm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZUlkcykge1xuICAgICAgICAgICAgaWYgKCRjdXJyZW50Lmhhc0NsYXNzKFwiZXhwYW5kYWJsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZXhwYW5kIGFuZCBzZWxlY3QgdGhlIHJpZ2h0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICB5aWVsZCBfZXhwYW5kTGkodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBmaW5kRWxlbWVudChuLCAkY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoJGVsZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGN1cnJlbnQgPSAkZWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBzZWxlY3RTaW5nbGUodGhhdCwgJGN1cnJlbnQpO1xuICAgICAgICBzY3JvbGxUb0xpKHRoYXQuJGRyb3Bkb3duLCAkY3VycmVudCk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2Nyb2xsVG9MaSgkY29udGFpbmVyLCAkdGFyZ2V0TGkpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGl0ZW0gcmVsYXRpdmUgdG8gaXRzIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBsaVBvcyA9ICR0YXJnZXRMaS5wb3NpdGlvbigpLnRvcDtcbiAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lclNjcm9sbFRvcCA9ICRjb250YWluZXIuc2Nyb2xsVG9wKCk7XG4gICAgICAgIGlmIChjb250YWluZXJTY3JvbGxUb3AgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiB0byBzY3JvbGwgdG8gKGN1cnJlbnQgc2Nyb2xsICsgaXRlbSdzIHBvc2l0aW9uKVxuICAgICAgICAvLyBBZGp1c3QgdGhpcyBjYWxjdWxhdGlvbiBiYXNlZCBvbiB5b3VyIG5lZWRzXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gY29udGFpbmVyU2Nyb2xsVG9wICsgbGlQb3MgLSAkY29udGFpbmVyLmhlaWdodCgpIC8gMiArICR0YXJnZXRMaS5oZWlnaHQoKSAvIDI7XG4gICAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIGVuc3VyZSB0aGUgaXRlbSBpcyB2aXNpYmxlXG4gICAgICAgICRjb250YWluZXIuYW5pbWF0ZSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHNjcm9sbFRvLFxuICAgICAgICB9LCA1MDApOyAvLyBBZGp1c3QgdGhlIGR1cmF0aW9uICg1MDBtcykgYXMgbmVlZGVkXG4gICAgfVxuICAgIGNvbnN0IHJlYWNoU2VsZWN0aW9uID0gKHRoYXQsIHBhcmVudE5vZGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCBub2RlSWQgPSB0aGF0LiRpbnB1dC52YWwoKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIHJvb3ROb2RlSWQ6IHBhcmVudE5vZGUubm9kZUlkLFxuICAgICAgICAgICAgaXNUeXBlOiB0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmIHx8IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgIGNvbnN0IGJyb3dzZVBhdGggPSB5aWVsZCB3YWxrQmFja3dhcmQoZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIGlmICghYnJvd3NlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHlpZWxkIGF1dG9FeHBhbmQodGhhdCwgYnJvd3NlUGF0aCwgdGhhdC4kdHJlZSk7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJG5vZGUsIGZldGNoRnVuYywgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRub2RlLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImxvYWRpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgbG9hZGluZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5hZGRDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgICAgICAkbm9kZS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJzcGlubmVyXCI+PC9kaXY+Jyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuZW1wdHkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHJlZmVyZW5jZXMgfSA9IHlpZWxkIGZldGNoRnVuYygkbm9kZSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2Ugb2YgcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5vcHRpb25zLmZpbHRlciAmJiAhdGhhdC5vcHRpb25zLmZpbHRlcihyZWZlcmVuY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJmZXRjaGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRub2RlLmNoaWxkcmVuKFwidWxcIikuYXBwZW5kKGA8bGk+ZXJyb3IgJHtlcnIubWVzc2FnZX08L2xpPmApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkbm9kZS5maW5kKFwiLnNwaW5uZXJcIikucmVtb3ZlKCk7XG4gICAgICAgICAgICAkbm9kZS5yZW1vdmVDbGFzcyhcImxvYWRpbmdcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBtYWtlQ29ubmVjdGlvbih0aGF0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBiYXNlVXJsOiB0aGF0Lm9wdGlvbnMuYmFzZVVybCxcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUoKSA6IHRoYXQub3B0aW9ucy5lbmRwb2ludE5vZGUsXG4gICAgICAgICAgICBlbmRwb2ludDogdHlwZW9mIHRoYXQub3B0aW9ucy5lbmRwb2ludCA9PT0gXCJmdW5jdGlvblwiID8gdGhhdC5vcHRpb25zLmVuZHBvaW50KCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBmdW5jdGlvbiBfZXhwYW5kTGkodGhhdCwgJGxpKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBpZiAoJGxpLmhhc0NsYXNzKFwiZmV0Y2hlZFwiKSkge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGZXRjaCBuZXcgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICBjb25zdCBmID0gIXRoYXQub3B0aW9ucy5pc1R5cGVSZWYgPyBmZXRjaENoaWxkcmVuIDogZmV0Y2hTdWJ0eXBlcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgeWllbGQgX2ZldGNoRGF0YUZvck5vZGUodGhhdCwgJGxpLCBmLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBtYXJrIGFzIGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgJGxpLnJlbW92ZUNsYXNzKFwiZXhwYW5kYWJsZVwiKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQgPSAoKSA9PiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbIFRlbXBlcmF0dXJlICBdXG4gICAgICAgICAqICAgKCB0b29sdGlwIDogKC9PYmplY3RzL015U2Vuc29yKSAobnM9MTtzPVRlbXBlcmF0dXJlKSlcbiAgICAgICAgICogWyArIFtGb2xkZXJdIE9iamVjdHNdXG4gICAgICAgICAqIFsgICAgIFtPYmplY3RdIE15U2Vuc29yXVxuICAgICAgICAgKiBbICAgICAoICkgW1ZhcmlhYmxlXSBUZW1wZXJhdHVyZV1cbiAgICAgICAgICovXG4gICAgICAgICQud2lkZ2V0KFwic3RlcmZpdmUubm9kZUJyb3dzZXJcIiwge1xuICAgICAgICAgICAgLyogZGVmYXVsdCBvcHRpb25zICovXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiAoKSA9PiAoeyBlbmRwb2ludDogXCJvcGMudGNwOi8vb3BjdWFkZW1vLnN0ZXJmaXZlLmNvbToyNjU0M1wiIH0pLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50OiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgYnJvd3NlTmFtZTogeyBuYW1lc3BhY2VJbmRleDogMCwgbmFtZTogXCJPYmplY3RzXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNsYXNzOiBcIk9iamVjdFwiLFxuICAgICAgICAgICAgICAgICAgICBub2RlSWQ6IFwibnM9MDtpPTg1XCIsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB7IHRleHQ6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGVEZWZpbml0aW9uOiBGb2xkZXJUeXBlLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbHRlcjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgICAgIGlzVHlwZVJlZjogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzb2x2ZVBhcmVudE5vZGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhhdC5fX3BhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0eXBlb2YgdGhhdC5vcHRpb25zLnBhcmVudE5vZGUgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5wYXJlbnROb2RlLmNhbGwodGhhdCkgOiB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSB5aWVsZCBhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gZGVzYztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX19wYXJlbnROb2RlID0gYTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhhdC5fX3BhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsc28gcmVzZXQgcGFyZW50IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoYXQ7XG4gICAgICAgICAgICAgICAgICAgIGEuX19wYXJlbnROb2RlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB5aWVsZCB0aGlzLnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gbWFrZUVsZW1lbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUuYXBwZW5kKCRlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5jdXJyZW50UGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2ZXJpZnkoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBtYWtlQ29ubmVjdGlvbih0aGF0KTtcbiAgICAgICAgICAgICAgICBpbnRlcm5hbFZlcmlmeShkYXRhLCB0aGF0LiRpbnB1dCwgdGhhdC4kaW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2NyZWF0ZSgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dCA9IHRoaXMuZWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21ibyA9ICQoXCI8ZGl2Lz5cIik7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYWRkQ2xhc3MoXCJzdGVyZml2ZS1jb21iby1ib3hcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnJlcGxhY2VXaXRoKHRoYXQuJGNvbWJvKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcImlucHV0LWdyb3VwXCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRpbnB1dEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiRpbnB1dCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdG9nZ2xlVHJlZUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1zaXRlbWFwXCI+PC9pPjwvYnV0dG9uPmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0R3JvdXAuYXBwZW5kKHRoYXQuJHRvZ2dsZVRyZWVCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4ub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGRyb3Bkb3duLmlzKFwiOnZpc2libGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmVlIHdpZGdldCBpcyBnb2luZyB0byBiZWNvbWUgdmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUgPSB5aWVsZCB0aGF0LnJlc29sdmVQYXJlbnROb2RlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudE5vZGUgIT09IHRoYXQuY3VycmVudFBhcmVudCB8fCAoKF9hID0gdGhhdC5jdXJyZW50UGFyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eubm9kZUlkKSAhPT0gcGFyZW50Tm9kZS5ub2RlSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhhdC5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93bi50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb1JlYWNoU2VsZWN0aW9uICYmICh5aWVsZCByZWFjaFNlbGVjdGlvbih0aGF0LCBwYXJlbnROb2RlKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0biA9ICQoYDxidXR0b24+PGkgY2xhc3M9XCJmYSBmYS1mbGFza1wiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR2ZXJpZnlCdG4pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHZlcmlmeUJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZnkoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoYXQuJGlucHV0LmF0dHIoXCJwbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIiwgXCJlbnRlciBhIG5vZGVJZCBvciBhIGJyb3dzZVBhdGggXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvID0gJChgPGRpdiBjbGFzcz1cImluZm8tdGV4dFwiPjwvZGl2PmApO1xuICAgICAgICAgICAgICAgIHRoYXQuJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duID0gJChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInN0ZXJmaXZlLWRyb3Bkb3duXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5mbyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlID0gJChgPHVsIGNsYXNzPVwic3RlcmZpdmUtdHJlZVwiPjwvdWw+YCkuYXBwZW5kVG8odGhhdC4kZHJvcGRvd24pO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc09uTGVmdFNpemUgPSAoJGxpLCBldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiZWZvcmVXaWR0aCA9IDIwOyAvLyBTZXQgd2lkdGggb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlSGVpZ2h0ID0gMjA7IC8vIFNldCBoZWlnaHQgb2YgdGhlIDo6YmVmb3JlIGNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvcyA9ICRsaS5vZmZzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZSA9IGV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5wYWdlWCA+PSBlbGVtZW50UG9zLmxlZnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVggPD0gZWxlbWVudFBvcy5sZWZ0ICsgYmVmb3JlV2lkdGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPj0gZWxlbWVudFBvcy50b3AgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucGFnZVkgPD0gZWxlbWVudFBvcy50b3AgKyBiZWZvcmVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZUV4cGFuc2lvbiA9ICgkbGkpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9leHBhbmRMaSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5oYXNDbGFzcyhcImV4cGFuZGVkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb2dnbGUgaXRzIGV4cGFuZGVkL2NvbGxhcHNlZCBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJGxpLmNoaWxkcmVuKFwidWxcIikuY2hpbGRyZW4oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkuY2hpbGRyZW4oXCJ1bFwiKS50b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN3YXAgZXhwYW5kYWJsZSBhbmQgZXhwYW5kZWQgY2xhc3Nlc1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLnRvZ2dsZUNsYXNzKFwiZXhwYW5kYWJsZSBleHBhbmRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLm9uKFwiZGJsY2xpY2tcIiwgXCJsaVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAkbGkgPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPbkxlZnRTaXplKCRsaSwgZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVFeHBhbnNpb24oJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gJGxpLmRhdGEoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZSA9ICRsaS5kYXRhKFwicmVmZXJlbmNlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUgJiYgIXRoYXQub3B0aW9ucy5pc1NlbGVjdGFibGUocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LmRhdGEoXCJyZWZlcmVuY2VcIiwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gKChfYSA9IHJlZmVyZW5jZS5kaXNwbGF5TmFtZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpIHx8ICgoX2IgPSByZWZlcmVuY2UuYnJvd3NlTmFtZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLm5hbWUpIHx8IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gYFske2Rpc3BsYXlOYW1lfV0oJHt2YWx1ZX0pYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGlucHV0LnZhbChpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRsaSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub24oXCJjbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2xpY2tpbmcgb3V0c2lkZSB0aGUgcGFnZSB3aWxsIGhpZGUgdGhlIGRyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIGlmICghJChldmVudC50YXJnZXQpLmNsb3Nlc3QodGhhdC4kY29tYm8pLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2hlY2tOb2RlSWQgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9jaGVja05vZGVJZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzQ29kZTogXCJCYWRcIixcbiAgICAgICAgICAgICAgICBub2RlQWRkcmVzc1N0cmluZzogbm9kZUlkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJmZXRjaGVkIDogXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGRhdGEuanNvbigpO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBtYW5hZ2VBUElDYWxsKHByZWZpeCwgYnRuLCBmdW5jLCBvblJlc3VsdCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzSWNvbiA9ICQoYCMke3ByZWZpeH0tc3VjY2Vzc2ApO1xuICAgICAgICBjb25zdCBmYWlsdXJlSWNvbiA9ICQoYCMke3ByZWZpeH0tZmFpbHVyZWApO1xuICAgICAgICBjb25zdCBwZW5kaW5nSWNvbiA9ICQoYCMke3ByZWZpeH0tcGVuZGluZ2ApO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9ICQoYCMke3ByZWZpeH0tbWVzc2FnZXNgKTtcbiAgICAgICAgbGV0IGFjdGlvblBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgc3VjY2Vzc0ljb24uaGlkZSgpO1xuICAgICAgICBmYWlsdXJlSWNvbi5oaWRlKCk7XG4gICAgICAgIHBlbmRpbmdJY29uLmhpZGUoKTtcbiAgICAgICAgYnRuLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvblBlbmRpbmcpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IHRydWU7XG4gICAgICAgICAgICBwZW5kaW5nSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBwZW5kaW5nSWNvbi5odG1sKFwiVGVzdGluZyBDb25uZWN0aW9uIC4uLlwiKTtcbiAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIGZhaWx1cmVJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoXCJcIik7XG4gICAgICAgICAgICBjb25zdCB7IGJvZHksIHVybCB9ID0gZnVuYygpO1xuICAgICAgICAgICAgLy8geHggY29uc29sZS5sb2coXCJ4eHh4eFwiLCBib2R5KTtcbiAgICAgICAgICAgIGZldGNoKHVybCwge1xuICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoZGF0YSkgPT4gZGF0YS5qc29uKCkpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ljb24uaGlkZSgpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIFwiIFwiKSk7XG4gICAgICAgICAgICAgICAgaWYgKGpzb24ucmVzdWx0ID09PSBcIm9rXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoanNvbi5tZXNzYWdlLnJlcGxhY2UoXCJcXG5cIiwgXCI8YnI+XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQobnVsbCwganNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGFwdCA9IChzdHIpID0+ICFzdHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzdHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChhKSA9PiBgPHA+JHthfTwvcD5gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGFwdDIgPSAoc3RyKSA9PiAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyLm1hcChhZGFwdCkuam9pbihcIlxcblwiKSA6IGFkYXB0KHN0cikpO1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmVJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChhZGFwdDIoanNvbi5tZXNzYWdlKSArIGFkYXB0Mihqc29uLmV4dHJhKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0KG5ldyBFcnJvcihqc29uLnJlc3VsdCksIGpzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMuaHRtbChcImludGVybmFsIGVycm9yIFwiICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyXCIsIGVycik7XG4gICAgICAgICAgICAgICAgb25SZXN1bHQoZXJyLCBudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRFbmRQb2ludEF0dHJpYnV0ZXMgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0ICRlbmRwb2ludCA9ICQoXCIjbm9kZS1pbnB1dC1lbmRwb2ludFwiKTtcbiAgICAgICAgY29uc3QgZW5kcG9pbnRJZCA9ICRlbmRwb2ludC52YWwoKTtcbiAgICAgICAgY29uc3QgcmVkTm9kZSA9IFJFRC5ub2Rlcy5ub2RlKGVuZHBvaW50SWQpO1xuICAgICAgICBpZiAoIXJlZE5vZGUpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAvLyBjb25zdCBjcmVkZW50aWFscyA9IFJFRC4oZW5kcG9pbnRJZCk7XG4gICAgICAgIC8vIHdlIG5lZWQgdG8gc2FuaXRpemUgYW5kIGV4dHJhY3QgdGhlIGVuZHBvaW50IGF0dHJpYnV0ZXMgb25seSAoIG5vdCB0aGUgbm9kZS1yZWQgc3R1ZmYpXG4gICAgICAgIGNvbnN0IHsgZW5kcG9pbnQsIHNlY3VyaXR5TW9kZSwgc2VjdXJpdHlQb2xpY3ksIHVzZXJJZGVudGl0eVR5cGUsIGNyZWRlbnRpYWxzIH0gPSByZWROb2RlO1xuICAgICAgICBjb25zdCByZXRWYWx1ZSA9IHtcbiAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgICAgICAgc2VjdXJpdHlQb2xpY3ksXG4gICAgICAgICAgICB1c2VySWRlbnRpdHlUeXBlLFxuICAgICAgICAgICAgY3JlZGVudGlhbHMsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHh4IGNvbnNvbGUubG9nKFwieHh4XCIsIHJldFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJldFZhbHVlO1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlciA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50TnIgPSBnZXRFbmRQb2ludEF0dHJpYnV0ZXMoKTtcbiAgICAgICAgaWYgKCFlbmRwb2ludE5yKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogZW5kcG9pbnRJZCxcbiAgICAgICAgICAgIC8vIGVuZHBvaW50OiBlbmRwb2ludE5yLmVuZHBvaW50LFxuICAgICAgICAgICAgLy8gc2VjdXJpdHlNb2RlOiBlbmRwb2ludE5yLnNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIC8vIHNlY3VyaXR5UG9saWN5OiBlbmRwb2ludE5yLnNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHVzZXJJZGVudGl0eVR5cGU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIC8vIGNyZWRlbnRpYWw6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gdXNlck5hbWU6IGVuZHBvaW50TnIudXNlcklkZW50aXR5VHlwZSA9PT0gXCJVc2VyTmFtZVwiID8gZW5kcG9pbnROci5jcmVkZW50aWFscy51c2VyTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIHBhc3N3b3JkOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIuY3JlZGVudGlhbHMucGFzc3dvcmQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyB1c2VyQ2VydGlmaWNhdGU6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlckNlcnRpZmljYXRlLFxuICAgICAgICAgICAgLy8gdXNlclByaXZhdGVrZXk6IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlclByaXZhdGVrZXksXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJFRC5ub2Rlcy5yZWdpc3RlclR5cGUoXCJPcGNVYS1DbGllbnQyLUNhbGxcIiwge1xuICAgICAgICBjYXRlZ29yeTogXCJvcGN1YVwiLFxuICAgICAgICBjb2xvcjogXCIjQzBERUVEXCIsXG4gICAgICAgIGFsaWduOiBcInJpZ2h0XCIsXG4gICAgICAgIGljb246IFwiLi4vLi4vaWNvbnMvb3BjdWFub2RlTG9nby5wbmdcIixcbiAgICAgICAgcGFsZXR0ZUxhYmVsOiBcImNhbGxcIixcbiAgICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgICAgIGlucHV0czogeyB2YWx1ZTogMSB9LFxuICAgICAgICAgICAgb3V0cHV0OiB7IHZhbHVlOiA0IH0sXG4gICAgICAgICAgICAvLyBDb21tb25cbiAgICAgICAgICAgIG5hbWU6IHsgdmFsdWU6IFwiXCIgfSxcbiAgICAgICAgICAgIGVuZHBvaW50OiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSwgdHlwZTogXCJPcGNVYS1FbmRwb2ludDJcIiB9LFxuICAgICAgICAgICAgYWN0aW9uOiB7IHZhbHVlOiBcInJlYWRcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgICAgIC8vIGZvciBhY3Rpb24gY2FsbFxuICAgICAgICAgICAgbWV0aG9kSWQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICBvYmplY3RJZDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8gaW5wdXRzOixcbiAgICAgICAgb3V0cHV0czogMiwgLy8gMiBvdXRwdXQsIHNlY29uZCBmb3IgcmF3IG5vZGUtb3BjdWEgZGlhZ25vc3RpY3Mgb3IgbW9yZSBjb21wbGV0ZSBtZXNzYWdlXG4gICAgICAgIGxhYmVsKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFtZSB8fCBcIk9QQ1VBLUNhbGxcIjtcbiAgICAgICAgfSxcbiAgICAgICAgbGFiZWxTdHlsZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgPyBcIm5vZGVfbGFiZWxfaXRhbGljXCIgOiBcIlwiO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRwcmVwYXJlKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXM7XG4gICAgICAgICAgICBkZWNsYXJlTm9kZUJyb3dzZXJXaWRnZXQoKTtcbiAgICAgICAgICAgIG5vZGUuaW5wdXRzID0gMTtcbiAgICAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBoYW5kbGUgU2VjdGlvbiBDYWxsXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgbGV0IGRhdGFUeXBlcyA9IHt9O1xuICAgICAgICAgICAgLy8gdG8gZG8gYWRkIGEgdHlwZXNjcmlwdCBkZWZpbml0aW9uIGZvciB0aGlzXG4gICAgICAgICAgICBjb25zdCAkb2JqZWN0SWQgPSAkKFwiI25vZGUtaW5wdXQtb2JqZWN0SWRcIik7XG4gICAgICAgICAgICBjb25zdCAkbWV0aG9kSWQgPSAkKFwiI25vZGUtaW5wdXQtbWV0aG9kSWRcIik7XG4gICAgICAgICAgICBjb25zdCAkaW5wdXRBcmd1bWVudERlZmluaXRpb24gPSAkKFwiI21ldGhvZC1pbnB1dC1hcmd1bWVudC1kZWZpbml0aW9uXCIpO1xuICAgICAgICAgICAgY29uc3QgJG91dHB1dEFyZ3VtZW50RGVmaW5pdGlvbiA9ICQoXCIjbWV0aG9kLW91dHB1dC1hcmd1bWVudC1kZWZpbml0aW9uXCIpO1xuICAgICAgICAgICAgY29uc3QgJHZhbGlkYXRlQnRuID0gJChcIiN2YWxpZGF0ZS1jYWxsLWFyZ3VtZW50cy1idXR0b25cIik7XG4gICAgICAgICAgICAkb2JqZWN0SWQubm9kZUJyb3dzZXIoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBnZXRFbmRwb2ludFBhcmFtZXRlcnNIYW5kbGVyKCkpLCB7IGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICAgICAgJG1ldGhvZElkLm5vZGVCcm93c2VyKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlcigpKSwgeyBwYXJlbnROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIHJlc3luYyB3aXRoIHdoYXQncyBpbiAgI25vZGUtaW5wdXQtb2JqZWN0SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWZlcmVuY2UgPSAkb2JqZWN0SWQuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZUlkRXggPSAkb2JqZWN0SWQudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kcG9pbnROb2RlID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmRwb2ludE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB5aWVsZCBjaGVja05vZGVJZChkYXRhLCBub2RlSWRFeCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHIucmVmZXJlbmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgZmlsdGVyKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiTWV0aG9kXCIgfHwgbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk9iamVjdFwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RhYmxlKG5vZGVEZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVzYy5ub2RlQ2xhc3MgPT09IFwiTWV0aG9kXCI7XG4gICAgICAgICAgICAgICAgfSB9KSk7XG4gICAgICAgICAgICAkb2JqZWN0SWQub24oXCJjaGFuZ2VcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICRtZXRob2RJZC5ub2RlQnJvd3NlcihcInJlc2V0XCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBhZGRBcmd1bWVudEN0cmwoY29udGFpbmVyLCBpbmRleCwgYXJnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9ICQoJzxkaXYgY2xhc3M9XCJhcmd1bWVudC1lbnRyeVwiPicpLmFwcGVuZFRvKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgLy8gY29udGFpbmVyLmRhdGEoXCJkYXRhXCIsIGFyZyk7XG4gICAgICAgICAgICAgICAgJCgnPGlucHV0IHR5cGU9XCJ0ZXh0XCI+JylcbiAgICAgICAgICAgICAgICAgICAgLnZhbChhcmcubmFtZSB8fCBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAuY3NzKHsgd2lkdGg6IFwiMTAwJVwiIH0pXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhpdGVtKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gZGF0YVR5cGVzW2FyZy5kYXRhVHlwZS50b1N0cmluZygpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhVHlwZU4gPSAoZCA/IGQuYnJvd3NlTmFtZS5uYW1lIHx8IFwiXCIgOiBhcmcuZGF0YVR5cGUudG9TdHJpbmcoKSkgKyAoYXJnLnZhbHVlUmFuayA9PT0gMSA/IFwiW11cIiA6IFwiXCIpO1xuICAgICAgICAgICAgICAgICQoJzxpbnB1dCB0eXBlPVwidGV4dFwiPicpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoYXJnLmRlc2NyaXB0aW9uLnRleHQgfHwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLmNzcyh7IHdpZHRoOiBcIjUwJVwiIH0pXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhpdGVtKTtcbiAgICAgICAgICAgICAgICAkKCc8aW5wdXQgdHlwZT1cInRleHRcIj4nKVxuICAgICAgICAgICAgICAgICAgICAudmFsKGRhdGFUeXBlTiB8fCBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAuY3NzKHsgd2lkdGg6IFwiNTAlXCIgfSlcbiAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGlucHV0QXJndW1lbnREZWZpbml0aW9uLmVkaXRhYmxlTGlzdCh7XG4gICAgICAgICAgICAgICAgYWRkQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIHNjcm9sbE9uQWRkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhZGRJdGVtKGNvbnRhaW5lciwgaSwgb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZEFyZ3VtZW50Q3RybChjb250YWluZXIsIGksIG9iamVjdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgJG91dHB1dEFyZ3VtZW50RGVmaW5pdGlvbi5lZGl0YWJsZUxpc3Qoe1xuICAgICAgICAgICAgICAgIGFkZEJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICBzY3JvbGxPbkFkZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYWRkSXRlbShjb250YWluZXIsIGksIG9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudEN0cmwoY29udGFpbmVyLCBpLCBvYmplY3QpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGluc3RhbGxBcmd1bWVudExpc3QobGlzdCwgbWV0aG9kQXJndW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJpbnN0YWxsQXJndW1lbnRMaXN0XCIsIG1ldGhvZEFyZ3VtZW50cy5sZW5ndGgsIFwiYXJndW1lbnRzXCIsIG1ldGhvZEFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgbGlzdC5lZGl0YWJsZUxpc3QoXCJlbXB0eVwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldGhvZEFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsaXN0LmVkaXRhYmxlTGlzdChcImFkZEl0ZW1cIiwgbWV0aG9kQXJndW1lbnRzW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkaW5wdXRBcmd1bWVudERlZmluaXRpb24uaGlkZSgpO1xuICAgICAgICAgICAgJG91dHB1dEFyZ3VtZW50RGVmaW5pdGlvbi5oaWRlKCk7XG4gICAgICAgICAgICBsZXQgaW5wdXRBc0pzb24gPSB7fTtcbiAgICAgICAgICAgIGNvbnN0ICRjb3B5SW5wdXQgPSAkKFwiI2NvcHktaW5wdXRcIik7XG4gICAgICAgICAgICAkY29weUlucHV0LmhpZGUoKTtcbiAgICAgICAgICAgICRjb3B5SW5wdXQub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgdGV4dCBpbnNpZGUgdGhlIHRleHQgZmllbGRcbiAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChKU09OLnN0cmluZ2lmeShpbnB1dEFzSnNvbikpO1xuICAgICAgICAgICAgICAgIC8vIGFsZXJ0KEpTT04uc3RyaW5naWZ5KGlucHV0QXNKc29uKSArIFwiIGNvcGllZCB0byBjbGlwYm9hcmRcIik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG1hbmFnZUFQSUNhbGwoXCJ2YWxpZGF0ZVwiLCAkdmFsaWRhdGVCdG4sICgpID0+ICh7XG4gICAgICAgICAgICAgICAgdXJsOiBcIi9vcGN1YS1lbmRwb2ludDIvYXJndW1lbnREZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgYm9keToge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycygpLFxuICAgICAgICAgICAgICAgICAgICBvYmplY3RJZDogJG9iamVjdElkLnZhbCgpLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2RJZDogJG1ldGhvZElkLnZhbCgpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSwgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgbGlzdFxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3VtZW50RGVmaW5pdGlvbiA9IGRhdGEuYXJndW1lbnREZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgIGRhdGFUeXBlcyA9IGRhdGEuZGF0YVR5cGVzO1xuICAgICAgICAgICAgICAgICRpbnB1dEFyZ3VtZW50RGVmaW5pdGlvbi5zaG93KCk7XG4gICAgICAgICAgICAgICAgJG91dHB1dEFyZ3VtZW50RGVmaW5pdGlvbi5zaG93KCk7XG4gICAgICAgICAgICAgICAgaW5zdGFsbEFyZ3VtZW50TGlzdCgkaW5wdXRBcmd1bWVudERlZmluaXRpb24sIGFyZ3VtZW50RGVmaW5pdGlvbi5pbnB1dEFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgaW5zdGFsbEFyZ3VtZW50TGlzdCgkb3V0cHV0QXJndW1lbnREZWZpbml0aW9uLCBhcmd1bWVudERlZmluaXRpb24ub3V0cHV0QXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBpbnB1dEFzSnNvbiA9IGRhdGEuaW5wdXRBcmd1bWVudHNFeGFtcGxlQXNKc29uIHx8IHt9O1xuICAgICAgICAgICAgICAgICRjb3B5SW5wdXQuc2hvdygpO1xuICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEpTT04uc3RyaW5naWZ5KGlucHV0QXNKc29uKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJKU09OXCIsIEpTT04uc3RyaW5naWZ5KGlucHV0QXNKc29uKSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJkYXRhXCIsIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uZWRpdHNhdmUoKSB7IH0sXG4gICAgfSk7XG5cbn0pKCk7Il19
|
7
|
+
function _0x25c9(_0x50b0ef,_0x18ad44){const _0x288557=_0x2885();return _0x25c9=function(_0x25c91b,_0x19679c){_0x25c91b=_0x25c91b-0x1c7;let _0xfe77c7=_0x288557[_0x25c91b];return _0xfe77c7;},_0x25c9(_0x50b0ef,_0x18ad44);}(function(_0x3bf2e8,_0x318629){const _0x443be2=_0x25c9,_0x2af73b=_0x3bf2e8();while(!![]){try{const _0x471dcb=-parseInt(_0x443be2(0x25e))/0x1+-parseInt(_0x443be2(0x23b))/0x2*(-parseInt(_0x443be2(0x239))/0x3)+-parseInt(_0x443be2(0x267))/0x4+-parseInt(_0x443be2(0x257))/0x5+-parseInt(_0x443be2(0x27a))/0x6*(parseInt(_0x443be2(0x29e))/0x7)+-parseInt(_0x443be2(0x21d))/0x8*(-parseInt(_0x443be2(0x1e2))/0x9)+parseInt(_0x443be2(0x244))/0xa*(parseInt(_0x443be2(0x1e5))/0xb);if(_0x471dcb===_0x318629)break;else _0x2af73b['push'](_0x2af73b['shift']());}catch(_0x1f723e){_0x2af73b['push'](_0x2af73b['shift']());}}}(_0x2885,0xef79c),(function(){'use strict';const _0x54d186=_0x25c9;function _0x28f194(_0x18ef3e,_0x225be0,_0x20a098,_0x53f9cb){function _0x43f4f3(_0x3b7a32){return _0x3b7a32 instanceof _0x20a098?_0x3b7a32:new _0x20a098(function(_0x12ac70){_0x12ac70(_0x3b7a32);});}return new(_0x20a098||(_0x20a098=Promise))(function(_0x70c81f,_0x367ddd){const _0x32a7a7=_0x25c9;function _0x7af348(_0x5e8504){try{_0x189ba1(_0x53f9cb['next'](_0x5e8504));}catch(_0x16bc0f){_0x367ddd(_0x16bc0f);}}function _0x53b893(_0x1851ab){try{_0x189ba1(_0x53f9cb['throw'](_0x1851ab));}catch(_0x59b8c6){_0x367ddd(_0x59b8c6);}}function _0x189ba1(_0x5369a8){const _0x486684=_0x25c9;_0x5369a8[_0x486684(0x28e)]?_0x70c81f(_0x5369a8['value']):_0x43f4f3(_0x5369a8[_0x486684(0x1ea)])[_0x486684(0x1d6)](_0x7af348,_0x53b893);}_0x189ba1((_0x53f9cb=_0x53f9cb['apply'](_0x18ef3e,_0x225be0||[]))[_0x32a7a7(0x20e)]());});}typeof SuppressedError===_0x54d186(0x204)?SuppressedError:function(_0x48326b,_0x285ce8,_0x50e5b1){const _0x2febd2=_0x54d186;var _0x49bc46=new Error(_0x50e5b1);return _0x49bc46[_0x2febd2(0x290)]='SuppressedError',_0x49bc46[_0x2febd2(0x282)]=_0x48326b,_0x49bc46[_0x2febd2(0x283)]=_0x285ce8,_0x49bc46;};const _0x4b3058=_0x54d186(0x22d),_0x2b6230=_0x54d186(0x2a8),_0x231508='ns=0;i=47',_0x10e788=_0x54d186(0x275),_0x46fbbd=_0x54d186(0x1ca),_0x569c91=_0x54d186(0x247),_0xcb43b1='ns=0;i=40';var _0x3c9633;(function(_0x4e6349){const _0x23ad87=_0x54d186;_0x4e6349[_0x4e6349[_0x23ad87(0x1d9)]=0x0]=_0x23ad87(0x1d9),_0x4e6349[_0x4e6349[_0x23ad87(0x1d8)]=0x1]=_0x23ad87(0x1d8),_0x4e6349[_0x4e6349[_0x23ad87(0x232)]=0x2]=_0x23ad87(0x232),_0x4e6349[_0x4e6349[_0x23ad87(0x278)]=0x3]=_0x23ad87(0x278);}(_0x3c9633||(_0x3c9633={})));var _0x5c5bfc;(function(_0x294f19){const _0x1e780e=_0x54d186;_0x294f19[_0x294f19['Unspecified']=0x0]='Unspecified',_0x294f19[_0x294f19[_0x1e780e(0x1fc)]=0x1]=_0x1e780e(0x1fc),_0x294f19[_0x294f19['Variable']=0x2]=_0x1e780e(0x1ec),_0x294f19[_0x294f19[_0x1e780e(0x1eb)]=0x4]=_0x1e780e(0x1eb),_0x294f19[_0x294f19[_0x1e780e(0x1e4)]=0x8]='ObjectType',_0x294f19[_0x294f19[_0x1e780e(0x1f9)]=0x10]=_0x1e780e(0x1f9),_0x294f19[_0x294f19[_0x1e780e(0x242)]=0x20]=_0x1e780e(0x242),_0x294f19[_0x294f19[_0x1e780e(0x230)]=0x40]=_0x1e780e(0x230),_0x294f19[_0x294f19[_0x1e780e(0x26e)]=0x80]='View';}(_0x5c5bfc||(_0x5c5bfc={})));var _0x832ec8;(function(_0x50bd5d){const _0x4f482f=_0x54d186;_0x50bd5d[_0x50bd5d[_0x4f482f(0x1fc)]=0x1]=_0x4f482f(0x1fc),_0x50bd5d[_0x50bd5d[_0x4f482f(0x1ec)]=0x2]='Variable',_0x50bd5d[_0x50bd5d[_0x4f482f(0x1eb)]=0x4]='Method',_0x50bd5d[_0x50bd5d['ObjectType']=0x8]=_0x4f482f(0x1e4),_0x50bd5d[_0x50bd5d[_0x4f482f(0x1f9)]=0x10]=_0x4f482f(0x1f9),_0x50bd5d[_0x50bd5d['ReferenceType']=0x20]=_0x4f482f(0x242),_0x50bd5d[_0x50bd5d[_0x4f482f(0x230)]=0x40]=_0x4f482f(0x230),_0x50bd5d[_0x50bd5d[_0x4f482f(0x26e)]=0x80]=_0x4f482f(0x26e);}(_0x832ec8||(_0x832ec8={})));var _0x3b152a;(function(_0x5e16a1){const _0x521510=_0x54d186;_0x5e16a1[_0x5e16a1['ReferenceType']=0x1]=_0x521510(0x242),_0x5e16a1[_0x5e16a1['IsForward']=0x2]=_0x521510(0x21e),_0x5e16a1[_0x5e16a1[_0x521510(0x1f1)]=0x4]=_0x521510(0x1f1),_0x5e16a1[_0x5e16a1['BrowseName']=0x8]=_0x521510(0x1d4),_0x5e16a1[_0x5e16a1[_0x521510(0x2a3)]=0x10]=_0x521510(0x2a3),_0x5e16a1[_0x5e16a1[_0x521510(0x1ce)]=0x20]='TypeDefinition';}(_0x3b152a||(_0x3b152a={})));function _0x2d762b(_0x4d7d01){const _0x2ac751=_0x54d186;switch(_0x4d7d01){case _0x2ac751(0x23d):return _0x4b3058;case _0x2ac751(0x27e):return _0x10e788;case _0x2ac751(0x250):return _0x231508;case'HasChild':return _0x46fbbd;case _0x2ac751(0x22b):return _0x569c91;case'HasTypeDefinition':return _0xcb43b1;}}const _0x1a1059=_0x417345=>{const _0x743b6=_0x54d186;switch(_0x417345[_0x743b6(0x251)]){case _0x743b6(0x1fc):if(_0x417345['referenceTypeId']===_0x4b3058);if(_0x417345['typeDefinition']===_0x2b6230||_0x417345[_0x743b6(0x1ed)]===_0x743b6(0x1d3))return{'icon':'fa-folder','color':_0x743b6(0x217)};return{'icon':_0x743b6(0x2ac),'color':_0x743b6(0x27b)};case _0x743b6(0x1ec):if(_0x417345['referenceTypeId']===_0x231508)return{'icon':_0x743b6(0x293),'color':_0x743b6(0x260)};else return _0x417345[_0x743b6(0x1ed)]===_0x10e788?{'icon':_0x743b6(0x293),'color':'DodgerBlue'}:{'icon':_0x743b6(0x293),'color':_0x743b6(0x225)};case'Method':return{'icon':_0x743b6(0x20b),'color':_0x743b6(0x214)};case _0x743b6(0x1e4):return{'icon':_0x743b6(0x2ac),'color':_0x743b6(0x2a6)};case _0x743b6(0x1f9):return{'icon':'fa-sliders','color':_0x743b6(0x2a6)};case _0x743b6(0x230):return{'icon':_0x743b6(0x1fb),'color':_0x743b6(0x225)};}return{'icon':_0x743b6(0x29d),'color':'grey'};},_0x42d48d=({endpointNode:_0x3d04d1,endpoint:_0x56d9d6,baseUrl:_0x1e7bf5},_0xfe8c94,_0x41799f)=>_0x28f194(void 0x0,void 0x0,void 0x0,function*(){const _0x43252e=_0x54d186,_0x4a9ebb=_0x1e7bf5+_0x43252e(0x277),_0x54c892=_0x4a9ebb+_0x43252e(0x1d1),_0x1b8c18=Object[_0x43252e(0x1f2)](Object['assign']({},_0x41799f),{'nodeId':_0xfe8c94,'resultMask':0x3f}),_0x396fa8=yield fetch(_0x54c892,{'method':_0x43252e(0x28f),'body':JSON[_0x43252e(0x25f)]({'endpointNode':_0x3d04d1,'endpoint':_0x56d9d6,'browseDescription':_0x1b8c18}),'headers':{'Content-Type':_0x43252e(0x23f)}});if(_0x396fa8[_0x43252e(0x229)]!==0xc8)return console['log'](_0x43252e(0x24f),_0x396fa8[_0x43252e(0x229)],_0x396fa8[_0x43252e(0x209)]),{'references':[]};const _0xb5c31c=yield _0x396fa8['json'](),_0x45465a=_0xb5c31c[_0x43252e(0x240)][_0x43252e(0x1dd)]||[];return{'references':_0x45465a};}),_0x4e5e59={'referenceTypeId':_0x2d762b(_0x54d186(0x24d)),'includeSubtypes':!![],'browseDirection':_0x3c9633[_0x54d186(0x1d9)],'nodeClassMask':_0x5c5bfc[_0x54d186(0x1ec)]|_0x5c5bfc['Object']|_0x5c5bfc[_0x54d186(0x1eb)],'resultMask':0x3f},_0x1e1231={'referenceTypeId':_0x2d762b(_0x54d186(0x23d)),'includeSubtypes':!![],'browseDirection':_0x3c9633[_0x54d186(0x1d9)],'nodeClassMask':_0x5c5bfc[_0x54d186(0x1ec)]|_0x5c5bfc[_0x54d186(0x1fc)]|_0x5c5bfc[_0x54d186(0x1eb)],'resultMask':0x3f},_0x206bce=({endpointNode:_0x50f519,endpoint:_0x1be759,baseUrl:_0x4c0fc5},{nodeId:_0x449f9d,rootNodeId:_0xf39edb,isType:_0x41b376})=>_0x28f194(void 0x0,void 0x0,void 0x0,function*(){const _0x4562e0=_0x54d186,_0x2a9428=_0x4c0fc5+_0x4562e0(0x277),_0x38e324=_0x2a9428+_0x4562e0(0x23c),_0x37bad0=yield fetch(_0x38e324,{'method':_0x4562e0(0x28f),'body':JSON[_0x4562e0(0x25f)]({'endpointNode':_0x50f519,'endpoint':_0x1be759,'nodeId':_0x449f9d,'rootNodeId':_0xf39edb,'isType':_0x41b376}),'headers':{'Content-Type':_0x4562e0(0x23f)}});if(_0x37bad0[_0x4562e0(0x229)]!==0xc8)return null;const _0x2a3362=yield _0x37bad0[_0x4562e0(0x236)]();return _0x2a3362[_0x4562e0(0x22e)];}),_0x5b9885=({endpointNode:_0x40dca0,endpoint:_0x1f42b8,baseUrl:_0x33102d},_0x4ada90,_0x57c3c6)=>_0x28f194(void 0x0,void 0x0,void 0x0,function*(){const _0x120625=_0x54d186,_0x2361bc=_0x33102d+'/opcua-endpoint2',_0x334ffd=_0x2361bc+_0x120625(0x205),_0x1780d0=_0x4ada90[_0x120625(0x2a5)](),_0x5b1c12=yield fetch(_0x334ffd,{'method':_0x120625(0x28f),'body':JSON[_0x120625(0x25f)]({'endpointNode':_0x40dca0,'endpoint':_0x1f42b8,'nodeId':_0x1780d0}),'headers':{'Content-Type':'application/json'}}),_0x13960d=(_0x5b9b45,_0x2c4366)=>{const _0x2dc712=_0x120625;_0x57c3c6[_0x2dc712(0x270)](_0x5b9b45)[_0x2dc712(0x203)](_0x2dc712(0x238))[_0x2dc712(0x203)](_0x2c4366),_0x57c3c6[_0x2dc712(0x228)](),setTimeout(()=>{const _0x48aff2=_0x2dc712;_0x57c3c6[_0x48aff2(0x1de)](_0x2c4366),_0x57c3c6[_0x48aff2(0x1cd)]();},0xbb8);},_0x163177=yield _0x5b1c12[_0x120625(0x236)]();_0x5b1c12[_0x120625(0x229)]!==0xc8?_0x13960d(_0x120625(0x215)+_0x1780d0,_0x120625(0x243)):_0x163177[_0x120625(0x1dc)]['match'](/Good/)?(_0x4ada90[_0x120625(0x2a5)](_0x163177[_0x120625(0x1e9)]),_0x4ada90['trigger'](_0x120625(0x294)),_0x13960d(_0x120625(0x284),'ok')):(_0x4ada90[_0x120625(0x2a5)](''+_0x1780d0),_0x13960d(_0x163177[_0x120625(0x1dc)]+'\x20'+_0x5b1c12['statusText'],_0x120625(0x243)));});function _0x7523c0(_0x564a53,_0x1a92d1){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x4368e2=_0x25c9,_0xb43d40=_0x564a53[_0x4368e2(0x1c7)]('value'),_0x2ce0d6=yield _0x42d48d(_0x1a92d1,_0xb43d40,_0x4e5e59),_0x132f6e=yield _0x42d48d(_0x1a92d1,_0xb43d40,_0x1e1231);return{'references':[..._0x2ce0d6[_0x4368e2(0x1dd)],..._0x132f6e[_0x4368e2(0x1dd)]]};});}const _0x1f9d9b={'referenceTypeId':_0x2d762b(_0x54d186(0x22b)),'includeSubtypes':!![],'browseDirection':_0x3c9633['Forward'],'nodeClassMask':_0x5c5bfc[_0x54d186(0x242)]|_0x5c5bfc[_0x54d186(0x1e4)]|_0x5c5bfc[_0x54d186(0x230)]|_0x5c5bfc[_0x54d186(0x1f9)],'resultMask':0x3f};function _0x51d67c(_0x9eb5ee,_0x1838bc){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x3714a5=_0x25c9,_0x23c103=_0x9eb5ee[_0x3714a5(0x1c7)](_0x3714a5(0x1ea)),_0x5c88ea=yield _0x42d48d(_0x1838bc,_0x23c103,_0x1f9d9b);return _0x5c88ea;});}const _0x276ae6=_0x3ce09e=>{const _0x353bb8=_0x54d186;var _0x3f7bff,_0x440bdb,_0x37f56f,_0x2dfabb;if(!_0x3ce09e||!_0x3ce09e[_0x353bb8(0x296)]){const _0x25035b=$(_0x353bb8(0x286));return _0x25035b;}const _0x67b0b4=_0x3ce09e[_0x353bb8(0x296)][_0x353bb8(0x202)](),_0x4201e0=((_0x3f7bff=_0x3ce09e[_0x353bb8(0x261)])===null||_0x3f7bff===void 0x0?void 0x0:_0x3f7bff['text'])||((_0x440bdb=_0x3ce09e[_0x353bb8(0x1e6)])===null||_0x440bdb===void 0x0?void 0x0:_0x440bdb['name'])||_0x3ce09e[_0x353bb8(0x296)][_0x353bb8(0x202)](),{icon:_0x3cc953,color:_0x1e5e8e}=_0x1a1059(_0x3ce09e),_0x34e1cc='('+_0x3ce09e[_0x353bb8(0x296)][_0x353bb8(0x202)]()+')\x20'+(((_0x37f56f=_0x3ce09e[_0x353bb8(0x1e6)])===null||_0x37f56f===void 0x0?void 0x0:_0x37f56f[_0x353bb8(0x290)])||((_0x2dfabb=_0x3ce09e[_0x353bb8(0x261)])===null||_0x2dfabb===void 0x0?void 0x0:_0x2dfabb[_0x353bb8(0x270)])||''),_0x5a1ae1=$(_0x353bb8(0x241)+_0x3ce09e[_0x353bb8(0x296)]['toString']()+_0x353bb8(0x1c8)+_0x34e1cc+'><i\x20class=\x22fa\x20'+_0x3cc953+_0x353bb8(0x20f)+_0x1e5e8e+_0x353bb8(0x26d)+_0x4201e0+_0x353bb8(0x245));return _0x5a1ae1[_0x353bb8(0x203)]('expandable'),_0x5a1ae1['data'](_0x353bb8(0x1ea),_0x67b0b4),_0x5a1ae1[_0x353bb8(0x1c7)](_0x353bb8(0x1ff),_0x3ce09e),_0x5a1ae1;},_0x2b94b7=(_0x3fac63,_0x3fbf22)=>{const _0x439525=_0x54d186;return _0x3fbf22[_0x439525(0x2ad)](_0x439525(0x219)+_0x3fac63+'\x22]');},_0x8acf45=(_0x360417,_0x4a241b)=>{const _0x58ed8e=_0x54d186;_0x360417[_0x58ed8e(0x2a2)][_0x58ed8e(0x2ad)](_0x58ed8e(0x295))['removeClass']('selected'),_0x4a241b[_0x58ed8e(0x2ad)]('.tree-text:first')[_0x58ed8e(0x203)]('selected');},_0x565060=(_0x1c96dd,_0x45b190,_0x56b391)=>_0x28f194(void 0x0,void 0x0,void 0x0,function*(){const _0x4956fb=_0x54d186;let _0x4188af=_0x56b391['children'](_0x4956fb(0x27f));_0x45b190['relativePath'][_0x4956fb(0x24a)]||[];const _0x5540a5=_0x45b190[_0x4956fb(0x208)]||[];if(_0x5540a5[_0x4956fb(0x1df)]===0x0)return;for(const _0x3d521c of _0x5540a5){_0x4188af[_0x4956fb(0x227)]('expandable')&&(yield _0x18ed25(_0x1c96dd,_0x4188af));const _0x424b52=_0x2b94b7(_0x3d521c,_0x4188af);if(_0x424b52[_0x4956fb(0x1df)]===0x0)return;_0x4188af=_0x424b52;}_0x8acf45(_0x1c96dd,_0x4188af),_0x37bca7(_0x1c96dd[_0x4956fb(0x264)],_0x4188af);});function _0x37bca7(_0x4916ac,_0x27a158){const _0x113e1b=_0x54d186,_0x18dcf2=_0x27a158[_0x113e1b(0x1db)]()[_0x113e1b(0x29f)],_0x41add0=_0x4916ac[_0x113e1b(0x28b)]();if(_0x41add0==undefined)return;const _0x3e6843=_0x41add0+_0x18dcf2-_0x4916ac[_0x113e1b(0x262)]()/0x2+_0x27a158[_0x113e1b(0x262)]()/0x2;_0x4916ac[_0x113e1b(0x265)]({'scrollTop':_0x3e6843},0x1f4);}const _0x56a701=(_0x12b2df,_0xed3b1a)=>_0x28f194(void 0x0,void 0x0,void 0x0,function*(){const _0x55db2b=_0x54d186,_0x44fa76=_0x12b2df[_0x55db2b(0x24c)][_0x55db2b(0x2a5)](),_0x6bb2bc={'nodeId':_0x44fa76,'rootNodeId':_0xed3b1a[_0x55db2b(0x296)],'isType':_0x12b2df[_0x55db2b(0x210)][_0x55db2b(0x2a9)]||![]},_0x14c7b5=_0x179f3a(_0x12b2df),_0x5840d4=yield _0x206bce(_0x14c7b5,_0x6bb2bc);if(!_0x5840d4)return;yield _0x565060(_0x12b2df,_0x5840d4,_0x12b2df[_0x55db2b(0x2a2)]);});function _0x483f3a(_0x8f6564,_0x3cd0e5,_0x19e638,_0x55fa77){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x51c070=_0x25c9;if(_0x3cd0e5[_0x51c070(0x227)](_0x51c070(0x1ee))){console[_0x51c070(0x271)](_0x51c070(0x25a));return;}if(_0x3cd0e5[_0x51c070(0x227)](_0x51c070(0x252))){console[_0x51c070(0x271)](_0x51c070(0x248));return;}_0x3cd0e5['addClass'](_0x51c070(0x252)),_0x3cd0e5[_0x51c070(0x1cf)]('<div\x20class=\x22spinner\x22></div>');try{_0x3cd0e5[_0x51c070(0x2a4)]('ul')[_0x51c070(0x1fd)]();const {references:_0x164970}=yield _0x19e638(_0x3cd0e5,_0x55fa77);for(const _0x5dd914 of _0x164970){if(_0x8f6564['options'][_0x51c070(0x22f)]&&!_0x8f6564[_0x51c070(0x210)][_0x51c070(0x22f)](_0x5dd914))continue;const _0x50b8e8=_0x276ae6(_0x5dd914);_0x3cd0e5['children']('ul')[_0x51c070(0x1cf)](_0x50b8e8);}_0x3cd0e5['addClass'](_0x51c070(0x1ee));}catch(_0x59d535){_0x3cd0e5[_0x51c070(0x2a4)]('ul')[_0x51c070(0x1cf)]('<li>error\x20'+_0x59d535['message']+_0x51c070(0x21b)),console[_0x51c070(0x271)](_0x51c070(0x1f3),_0x59d535);}_0x3cd0e5[_0x51c070(0x2ad)](_0x51c070(0x1d5))[_0x51c070(0x222)](),_0x3cd0e5[_0x51c070(0x1de)](_0x51c070(0x252));});}function _0x179f3a(_0xd04812){const _0x212fa7=_0x54d186,_0x10c2b6={'baseUrl':_0xd04812[_0x212fa7(0x210)]['baseUrl'],'endpointNode':typeof _0xd04812[_0x212fa7(0x210)][_0x212fa7(0x237)]===_0x212fa7(0x204)?_0xd04812['options'][_0x212fa7(0x237)]():_0xd04812['options'][_0x212fa7(0x237)],'endpoint':typeof _0xd04812[_0x212fa7(0x210)][_0x212fa7(0x276)]===_0x212fa7(0x204)?_0xd04812[_0x212fa7(0x210)][_0x212fa7(0x276)]():_0xd04812['options'][_0x212fa7(0x276)]};return _0x10c2b6;}function _0x18ed25(_0x687c8c,_0x38c447){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x22f79d=_0x25c9;if(_0x38c447[_0x22f79d(0x227)](_0x22f79d(0x1ee))){_0x38c447[_0x22f79d(0x1de)]('expandable')['addClass'](_0x22f79d(0x25c)),_0x38c447['children']('ul')[_0x22f79d(0x298)]();return;}const _0xe923db=_0x179f3a(_0x687c8c),_0x154705=!_0x687c8c[_0x22f79d(0x210)][_0x22f79d(0x2a9)]?_0x7523c0:_0x51d67c;try{yield _0x483f3a(_0x687c8c,_0x38c447,_0x154705,_0xe923db),_0x38c447[_0x22f79d(0x1de)](_0x22f79d(0x263))['addClass'](_0x22f79d(0x25c));}catch(_0x212bbb){_0x38c447[_0x22f79d(0x1de)]('expandable')[_0x22f79d(0x203)]('expanded'),console[_0x22f79d(0x271)]('error',_0x212bbb);}});}const _0x23885f=()=>{const _0x1c414a=_0x54d186;$[_0x1c414a(0x29b)](_0x1c414a(0x21c),{'options':{'endpointNode':()=>({'endpoint':_0x1c414a(0x2a0)}),'endpoint':()=>undefined,'parentNode':()=>({'browseName':{'namespaceIndex':0x0,'name':_0x1c414a(0x20a)},'nodeClass':'Object','nodeId':'ns=0;i=85','displayName':{'text':'Objects'},'typeDefinition':_0x2b6230}),'filter':()=>!![],'baseUrl':'','isTypeRef':![]},'resolveParentNode'(){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x467620=_0x25c9,_0x1b0fff=this;if(!_0x1b0fff[_0x467620(0x1d0)]){const _0x36eccc=typeof _0x1b0fff[_0x467620(0x210)][_0x467620(0x274)]===_0x467620(0x204)?_0x1b0fff[_0x467620(0x210)][_0x467620(0x274)][_0x467620(0x226)](_0x1b0fff):_0x1b0fff['options'][_0x467620(0x274)];if(_0x36eccc instanceof Promise){const _0xa9ea3=yield _0x36eccc;_0x1b0fff['__parentNode']=_0xa9ea3;}else _0x1b0fff[_0x467620(0x1d0)]=_0x36eccc;}return _0x1b0fff[_0x467620(0x1d0)];});},'reset'(){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x48a6ff=_0x25c9,_0x5a3ae5=this,_0x3206a3=_0x5a3ae5;_0x3206a3[_0x48a6ff(0x1d0)]=undefined,_0x5a3ae5[_0x48a6ff(0x2a2)]['empty']();const _0x5476d7=yield this[_0x48a6ff(0x20d)](),_0x35fa61=_0x276ae6(_0x5476d7);_0x5a3ae5[_0x48a6ff(0x2a2)][_0x48a6ff(0x1cf)](_0x35fa61),_0x5a3ae5[_0x48a6ff(0x28c)]=_0x5476d7;});},'verify'(){const _0x182d7b=_0x1c414a,_0x288650=this,_0x3409b7=_0x179f3a(_0x288650);_0x5b9885(_0x3409b7,_0x288650[_0x182d7b(0x24c)],_0x288650[_0x182d7b(0x1da)]);},'_create'(){const _0xd2faae=_0x1c414a,_0x48b0f9=this;_0x48b0f9[_0xd2faae(0x24c)]=this[_0xd2faae(0x234)],_0x48b0f9[_0xd2faae(0x279)]=$(_0xd2faae(0x292)),_0x48b0f9[_0xd2faae(0x279)][_0xd2faae(0x203)]('sterfive-combo-box'),this['element'][_0xd2faae(0x259)](_0x48b0f9[_0xd2faae(0x279)]),_0x48b0f9[_0xd2faae(0x266)]=$(_0xd2faae(0x292))[_0xd2faae(0x203)]('input-group'),_0x48b0f9['$combo'][_0xd2faae(0x1cf)](_0x48b0f9[_0xd2faae(0x266)]),_0x48b0f9[_0xd2faae(0x266)][_0xd2faae(0x1cf)](_0x48b0f9[_0xd2faae(0x24c)]),_0x48b0f9['$toggleTreeBtn']=$(_0xd2faae(0x24e)),_0x48b0f9[_0xd2faae(0x266)]['append'](_0x48b0f9[_0xd2faae(0x269)]),_0x48b0f9[_0xd2faae(0x269)]['on'](_0xd2faae(0x24b),function(){var _0x182121;return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x286b3a=_0x25c9;let _0x5901a4=![],_0x2c6e51;!_0x48b0f9[_0x286b3a(0x264)]['is'](_0x286b3a(0x268))&&(_0x48b0f9[_0x286b3a(0x1da)][_0x286b3a(0x1cd)](),_0x2c6e51=yield _0x48b0f9[_0x286b3a(0x20d)](),(_0x2c6e51!==_0x48b0f9[_0x286b3a(0x28c)]||((_0x182121=_0x48b0f9[_0x286b3a(0x28c)])===null||_0x182121===void 0x0?void 0x0:_0x182121[_0x286b3a(0x296)])!==_0x2c6e51[_0x286b3a(0x296)])&&(yield _0x48b0f9[_0x286b3a(0x26c)]()),_0x5901a4=!![]),_0x48b0f9['$dropdown'][_0x286b3a(0x298)](),_0x5901a4&&(yield _0x56a701(_0x48b0f9,_0x2c6e51));});}),_0x48b0f9[_0xd2faae(0x1e1)]=$(_0xd2faae(0x27c)),_0x48b0f9[_0xd2faae(0x266)][_0xd2faae(0x1cf)](_0x48b0f9['$verifyBtn']),_0x48b0f9[_0xd2faae(0x1e1)]['on'](_0xd2faae(0x24b),()=>{this['verify']();});!_0x48b0f9[_0xd2faae(0x24c)]['attr']('placeholder')&&_0x48b0f9[_0xd2faae(0x24c)][_0xd2faae(0x221)](_0xd2faae(0x235),'enter\x20a\x20nodeId\x20or\x20a\x20browsePath\x20');_0x48b0f9[_0xd2faae(0x1da)]=$(_0xd2faae(0x206)),_0x48b0f9[_0xd2faae(0x1da)][_0xd2faae(0x1cd)](),_0x48b0f9['$dropdown']=$(_0xd2faae(0x292))[_0xd2faae(0x203)](_0xd2faae(0x231))[_0xd2faae(0x1cd)](),_0x48b0f9[_0xd2faae(0x279)][_0xd2faae(0x1cf)](_0x48b0f9[_0xd2faae(0x1da)]),_0x48b0f9[_0xd2faae(0x279)][_0xd2faae(0x1cf)](_0x48b0f9['$dropdown']),_0x48b0f9[_0xd2faae(0x2a2)]=$(_0xd2faae(0x20c))[_0xd2faae(0x288)](_0x48b0f9[_0xd2faae(0x264)]),this[_0xd2faae(0x26c)]();const _0x11948c=(_0x2302ff,_0x8cd318)=>{const _0x2f8155=_0xd2faae,_0x2628f4=0x14,_0x3e0e04=0x14,_0xbe3361=_0x2302ff[_0x2f8155(0x26a)](),_0x40a9a8=_0x8cd318;if(_0x40a9a8[_0x2f8155(0x207)]>=_0xbe3361['left']&&_0x40a9a8['pageX']<=_0xbe3361[_0x2f8155(0x2a7)]+_0x2628f4&&_0x40a9a8[_0x2f8155(0x26b)]>=_0xbe3361['top']&&_0x40a9a8[_0x2f8155(0x26b)]<=_0xbe3361[_0x2f8155(0x29f)]+_0x3e0e04)return!![];return![];},_0x46c450=_0x3cda48=>_0x28f194(this,void 0x0,void 0x0,function*(){const _0x262250=_0xd2faae;if(_0x3cda48[_0x262250(0x227)](_0x262250(0x263)))_0x18ed25(_0x48b0f9,_0x3cda48);else{if(_0x3cda48[_0x262250(0x227)](_0x262250(0x25c)))_0x3cda48[_0x262250(0x2a4)]('ul')[_0x262250(0x298)](),_0x3cda48[_0x262250(0x1e8)]('expandable\x20expanded');else{if(_0x3cda48[_0x262250(0x2a4)]('ul')[_0x262250(0x2a4)]()[_0x262250(0x1df)]>0x0)_0x3cda48['children']('ul')[_0x262250(0x298)](),_0x3cda48[_0x262250(0x1e8)](_0x262250(0x1f4));else;}}});_0x48b0f9[_0xd2faae(0x2a2)]['on'](_0xd2faae(0x216),'li',function(_0x1c5d17){const _0x4e5507=_0xd2faae;var _0x306571,_0x19f967;_0x1c5d17[_0x4e5507(0x218)]();let _0x49d19a=$(this);if(_0x11948c(_0x49d19a,_0x1c5d17))_0x46c450(_0x49d19a);else{const _0x3af47f=_0x49d19a[_0x4e5507(0x1c7)](_0x4e5507(0x1ea)),_0x3aa7a1=_0x49d19a['data']('reference');if(_0x48b0f9[_0x4e5507(0x210)][_0x4e5507(0x23a)]&&!_0x48b0f9[_0x4e5507(0x210)][_0x4e5507(0x23a)](_0x3aa7a1))return;_0x48b0f9['$input'][_0x4e5507(0x1c7)](_0x4e5507(0x1ff),_0x3aa7a1);const _0x3eb66b=((_0x306571=_0x3aa7a1[_0x4e5507(0x261)])===null||_0x306571===void 0x0?void 0x0:_0x306571[_0x4e5507(0x270)])||((_0x19f967=_0x3aa7a1[_0x4e5507(0x1e6)])===null||_0x19f967===void 0x0?void 0x0:_0x19f967[_0x4e5507(0x290)])||_0x3aa7a1[_0x4e5507(0x296)]['toString'](),_0x47b773='['+_0x3eb66b+']('+_0x3af47f+')';_0x48b0f9[_0x4e5507(0x24c)][_0x4e5507(0x2a5)](_0x47b773),_0x48b0f9[_0x4e5507(0x24c)][_0x4e5507(0x29a)](_0x4e5507(0x294)),_0x48b0f9[_0x4e5507(0x264)][_0x4e5507(0x1cd)]();}}),_0x48b0f9[_0xd2faae(0x2a2)]['on']('click','li',function(_0x4d2f38){const _0x33a00d=_0xd2faae;_0x4d2f38[_0x33a00d(0x218)]();let _0x4a6aba=$(this);_0x11948c(_0x4a6aba,_0x4d2f38)&&_0x46c450(_0x4a6aba),_0x8acf45(_0x48b0f9,_0x4a6aba);}),$(document)['on'](_0xd2faae(0x24b),function(_0x3a13e6){const _0x1923fd=_0xd2faae;!$(_0x3a13e6[_0x1923fd(0x211)])[_0x1923fd(0x1cc)](_0x48b0f9[_0x1923fd(0x279)])[_0x1923fd(0x1df)]&&_0x48b0f9[_0x1923fd(0x264)][_0x1923fd(0x1cd)]();});}});},_0xdda83d=({endpointNode:_0x138803,endpoint:_0x151934,baseUrl:_0x46a66b},_0x13daea)=>_0x28f194(void 0x0,void 0x0,void 0x0,function*(){const _0x4189c8=_0x54d186,_0x14712c=_0x46a66b+_0x4189c8(0x277),_0x437a33=_0x14712c+_0x4189c8(0x205),_0x3bce3a=yield fetch(_0x437a33,{'method':_0x4189c8(0x28f),'body':JSON[_0x4189c8(0x25f)]({'endpointNode':_0x138803,'endpoint':_0x151934,'nodeId':_0x13daea}),'headers':{'Content-Type':_0x4189c8(0x23f)}});if(_0x3bce3a[_0x4189c8(0x229)]!==0xc8){console[_0x4189c8(0x271)](_0x4189c8(0x24f),_0x3bce3a[_0x4189c8(0x229)],_0x3bce3a[_0x4189c8(0x209)]);const _0x149885={'statusCode':_0x4189c8(0x273),'nodeAddressString':_0x13daea};return _0x149885;}console['log'](_0x4189c8(0x28a),_0x3bce3a[_0x4189c8(0x229)],_0x3bce3a[_0x4189c8(0x209)]);const _0x1cf1e9=yield _0x3bce3a[_0x4189c8(0x236)]();return _0x1cf1e9;});function _0x120b51(_0x37ba91,_0x3816e5,_0x2ae098,_0x5dd656){const _0x50d0ae=_0x54d186,_0x2816c8=$('#'+_0x37ba91+_0x50d0ae(0x287)),_0x2b3964=$('#'+_0x37ba91+'-failure'),_0x57dafd=$('#'+_0x37ba91+_0x50d0ae(0x1e7)),_0x582f69=$('#'+_0x37ba91+_0x50d0ae(0x1d7));let _0x542624=![];_0x2816c8[_0x50d0ae(0x1cd)](),_0x2b3964[_0x50d0ae(0x1cd)](),_0x57dafd['hide'](),_0x3816e5['on'](_0x50d0ae(0x24b),()=>{const _0x2bc9af=_0x50d0ae;if(_0x542624)return;_0x542624=!![],_0x57dafd[_0x2bc9af(0x1de)](_0x2bc9af(0x1cd)),_0x57dafd['html'](_0x2bc9af(0x2a1)),_0x2816c8['addClass'](_0x2bc9af(0x1cd)),_0x2b3964['addClass']('hide'),_0x582f69[_0x2bc9af(0x1ef)]('');const {body:_0x5e98ba,url:_0x51a692}=_0x2ae098();fetch(_0x51a692,{'method':_0x2bc9af(0x28f),'headers':{'Content-Type':'application/json'},'body':JSON[_0x2bc9af(0x25f)](_0x5e98ba)})['then'](_0x47d9ab=>_0x47d9ab[_0x2bc9af(0x236)]())[_0x2bc9af(0x1d6)](_0x24882d=>{const _0x582c7b=_0x2bc9af;_0x542624=![],_0x57dafd[_0x582c7b(0x1cd)](),console['log'](JSON[_0x582c7b(0x25f)](_0x24882d,null,'\x20'));if(_0x24882d[_0x582c7b(0x1e3)]==='ok')_0x2816c8['removeClass'](_0x582c7b(0x1cd)),_0x2b3964[_0x582c7b(0x203)](_0x582c7b(0x1cd)),_0x582f69[_0x582c7b(0x1ef)](_0x24882d['message'][_0x582c7b(0x1f5)]('\x0a',_0x582c7b(0x22c))),_0x5dd656(null,_0x24882d);else{const _0x152ad7=_0x35616e=>!_0x35616e?'':_0x35616e[_0x582c7b(0x212)]('\x0a')[_0x582c7b(0x249)](_0x125c18=>_0x582c7b(0x1f7)+_0x125c18+_0x582c7b(0x1e0))[_0x582c7b(0x272)]('\x0a'),_0x116ef3=_0x56fb01=>Array[_0x582c7b(0x285)](_0x56fb01)?_0x56fb01['map'](_0x152ad7)['join']('\x0a'):_0x152ad7(_0x56fb01);_0x2816c8[_0x582c7b(0x203)](_0x582c7b(0x1cd)),_0x2b3964[_0x582c7b(0x1de)](_0x582c7b(0x1cd)),_0x582f69[_0x582c7b(0x1ef)](_0x116ef3(_0x24882d[_0x582c7b(0x280)])+_0x116ef3(_0x24882d[_0x582c7b(0x29c)])),_0x5dd656(new Error(_0x24882d[_0x582c7b(0x1e3)]),_0x24882d);}})[_0x2bc9af(0x254)](_0x4fd821=>{const _0x458ee9=_0x2bc9af;_0x542624=![],_0x57dafd[_0x458ee9(0x203)](_0x458ee9(0x1cd)),_0x2816c8[_0x458ee9(0x203)]('hide'),_0x2b3964['removeClass'](_0x458ee9(0x1cd)),_0x582f69['html'](_0x458ee9(0x1f0)+_0x4fd821['message']),console[_0x458ee9(0x271)]('err',_0x4fd821),_0x5dd656(_0x4fd821,null);});});}const _0x3e577c=()=>{const _0x33f34a=_0x54d186,_0x44f849=$('#node-input-endpoint'),_0x51ef3f=_0x44f849[_0x33f34a(0x2a5)](),_0x24e867=RED[_0x33f34a(0x258)][_0x33f34a(0x25d)](_0x51ef3f);if(!_0x24e867)return undefined;const {endpoint:_0x13bcf3,securityMode:_0x22c032,securityPolicy:_0x4300c5,userIdentityType:_0x2bb3a1,credentials:_0x5d9c5d}=_0x24e867,_0x3c0d86={'endpoint':_0x13bcf3,'securityMode':_0x22c032,'securityPolicy':_0x4300c5,'userIdentityType':_0x2bb3a1,'credentials':_0x5d9c5d};return _0x3c0d86;},_0x37e043=()=>{return{'endpointNode':_0x3a9de0};},_0x3a9de0=()=>{const _0x5ed745=_0x54d186,_0x1a3f2f=$(_0x5ed745(0x213)),_0x22c4cc=_0x1a3f2f[_0x5ed745(0x2a5)](),_0x534500=_0x3e577c();if(!_0x534500)return undefined;return{'id':_0x22c4cc};};RED[_0x54d186(0x258)][_0x54d186(0x1fe)](_0x54d186(0x223),{'category':_0x54d186(0x25b),'color':_0x54d186(0x201),'align':_0x54d186(0x281),'icon':'../../icons/opcuanodeLogo.png','paletteLabel':_0x54d186(0x226),'defaults':{'inputs':{'value':0x1},'output':{'value':0x4},'name':{'value':''},'endpoint':{'value':'','required':!![],'type':_0x54d186(0x26f)},'action':{'value':_0x54d186(0x253),'required':!![]},'methodId':{'value':'','required':!![]},'objectId':{'value':'','required':!![]}},'outputs':0x2,'label'(){const _0x3b5a11=_0x54d186;return this[_0x3b5a11(0x290)]||_0x3b5a11(0x255);},'labelStyle'(){const _0xce6e46=_0x54d186;return this[_0xce6e46(0x290)]?_0xce6e46(0x22a):'';},'oneditprepare'(){const _0x356eff=_0x54d186,_0x1158a3=this;_0x23885f(),_0x1158a3[_0x356eff(0x297)]=0x1;let _0x21dc49={};const _0x40de4f=$('#node-input-objectId'),_0x315d67=$('#node-input-methodId'),_0x3eab86=$(_0x356eff(0x200)),_0x4c10b0=$('#method-output-argument-definition'),_0x8747a1=$(_0x356eff(0x291));_0x40de4f[_0x356eff(0x1d2)](Object['assign'](Object[_0x356eff(0x1f2)]({},_0x37e043()),{'filter'(_0x584fa0){const _0x110394=_0x356eff;return _0x584fa0[_0x110394(0x251)]===_0x110394(0x1fc);}})),_0x315d67['nodeBrowser'](Object[_0x356eff(0x1f2)](Object[_0x356eff(0x1f2)]({},_0x37e043()),{'parentNode':function(){return _0x28f194(this,void 0x0,void 0x0,function*(){const _0x4a7c81=_0x25c9,_0x2e8d4d=_0x179f3a(this);let _0x33219c=_0x40de4f[_0x4a7c81(0x1c7)](_0x4a7c81(0x1ff));if(!_0x33219c){const _0x3bdc92=_0x40de4f[_0x4a7c81(0x2a5)](),_0x3645d8=_0x3e577c();if(!_0x3645d8)return null;try{const _0x527725=yield _0xdda83d(_0x2e8d4d,_0x3bdc92);_0x33219c=_0x527725[_0x4a7c81(0x1ff)];}catch(_0x16a2c6){console[_0x4a7c81(0x271)](_0x16a2c6);}}return _0x33219c;});},'filter'(_0x4def46){const _0x26ecb1=_0x356eff;return _0x4def46[_0x26ecb1(0x251)]===_0x26ecb1(0x1eb)||_0x4def46['nodeClass']==='Object';},'isSelectable'(_0x2a83d7){const _0x23a656=_0x356eff;return _0x2a83d7[_0x23a656(0x251)]===_0x23a656(0x1eb);}})),_0x40de4f['on'](_0x356eff(0x294),()=>{const _0x4938f1=_0x356eff;_0x315d67[_0x4938f1(0x1d2)](_0x4938f1(0x26c));});function _0xb31717(_0x44e92a,_0x25597b,_0x3985ba){const _0x895996=_0x356eff,_0x5c9e9c=$(_0x895996(0x1f8))[_0x895996(0x288)](_0x44e92a);$(_0x895996(0x299))[_0x895996(0x2a5)](_0x3985ba[_0x895996(0x290)]||'')['css']({'width':_0x895996(0x220)})['appendTo'](_0x5c9e9c);const _0x187d6e=_0x21dc49[_0x3985ba[_0x895996(0x21a)]['toString']()],_0x584a32=(_0x187d6e?_0x187d6e[_0x895996(0x1e6)]['name']||'':_0x3985ba[_0x895996(0x21a)][_0x895996(0x202)]())+(_0x3985ba['valueRank']===0x1?'[]':'');$(_0x895996(0x299))[_0x895996(0x2a5)](_0x3985ba['description']['text']||'')['css']({'width':_0x895996(0x23e)})['appendTo'](_0x5c9e9c),$(_0x895996(0x299))[_0x895996(0x2a5)](_0x584a32||'')[_0x895996(0x2aa)]({'width':'50%'})[_0x895996(0x288)](_0x5c9e9c);}_0x3eab86[_0x356eff(0x28d)]({'addButton':![],'height':_0x356eff(0x1cb),'scrollOnAdd':![],'addItem'(_0x198bad,_0x2f3250,_0x3ad811){_0xb31717(_0x198bad,_0x2f3250,_0x3ad811);}}),_0x4c10b0[_0x356eff(0x28d)]({'addButton':![],'height':_0x356eff(0x1cb),'scrollOnAdd':![],'addItem'(_0x5e270f,_0x455e99,_0x694b77){_0xb31717(_0x5e270f,_0x455e99,_0x694b77);}});function _0x4414d5(_0x218251,_0x4c4e0e){const _0x470bfc=_0x356eff;console[_0x470bfc(0x271)]('installArgumentList',_0x4c4e0e[_0x470bfc(0x1df)],_0x470bfc(0x289),_0x4c4e0e),_0x218251['editableList']('empty');for(let _0x162891=0x0;_0x162891<_0x4c4e0e['length'];_0x162891++){_0x218251['editableList'](_0x470bfc(0x1f6),_0x4c4e0e[_0x162891]);}}_0x3eab86[_0x356eff(0x1cd)](),_0x4c10b0[_0x356eff(0x1cd)]();let _0x2233d2={};const _0x2db28c=$(_0x356eff(0x27d));_0x2db28c[_0x356eff(0x1cd)](),_0x2db28c['on']('click',()=>{const _0x24a739=_0x356eff;navigator['clipboard'][_0x24a739(0x224)](JSON[_0x24a739(0x25f)](_0x2233d2));}),_0x120b51(_0x356eff(0x1fa),_0x8747a1,()=>({'url':'/opcua-endpoint2/argumentDefinition','body':{'endpointNode':_0x3a9de0(),'objectId':_0x40de4f[_0x356eff(0x2a5)](),'methodId':_0x315d67[_0x356eff(0x2a5)]()}}),(_0x38bc8a,_0xdabfda)=>{const _0x4d994e=_0x356eff;if(_0x38bc8a)return;const _0x57bb6c=_0xdabfda[_0x4d994e(0x246)];_0x21dc49=_0xdabfda[_0x4d994e(0x21f)],_0x3eab86[_0x4d994e(0x228)](),_0x4c10b0[_0x4d994e(0x228)](),_0x4414d5(_0x3eab86,_0x57bb6c[_0x4d994e(0x2ab)]),_0x4414d5(_0x4c10b0,_0x57bb6c[_0x4d994e(0x1c9)]),_0x2233d2=_0xdabfda['inputArgumentsExampleAsJson']||{},_0x2db28c[_0x4d994e(0x228)](),navigator[_0x4d994e(0x233)][_0x4d994e(0x224)](JSON['stringify'](_0x2233d2)),console['log'](_0x4d994e(0x256),JSON['stringify'](_0x2233d2)),console[_0x4d994e(0x271)]('data',_0xdabfda);});},'oneditsave'(){}});}()));function _0x2885(){const _0x42ddc6=['referenceTypeId','fetched','html','internal\x20error\x20','NodeClass','assign','err','expandable\x20expanded','replace','addItem','<p>','<div\x20class=\x22argument-entry\x22>','VariableType','validate','fa-text-width','Object','empty','registerType','reference','#method-input-argument-definition','#C0DEED','toString','addClass','function','/checkNodeId','<div\x20class=\x22info-text\x22></div>','pageX','nodeIds','statusText','Objects','fa-cog','<ul\x20class=\x22sterfive-tree\x22></ul>','resolveParentNode','next','\x22\x20style=\x22color:','options','target','split','#node-input-endpoint','SandyBrown','!!failure!!','dblclick','rgba(61,\x2060,\x204,\x200.525)','stopPropagation','li[key=\x22','dataType','</li>','sterfive.nodeBrowser','4312RrNPZK','IsForward','dataTypes','100%','attr','remove','OpcUa-Client2-Call','writeText','CadetBlue','call','hasClass','show','status','node_label_italic','HasSubtype','<br>','ns=0;i=35','browsePath','filter','DataType','sterfive-dropdown','Both','clipboard','element','placeholder','json','endpointNode','sterfive-info','363JsNwOD','isSelectable','21130nnJHtv','/walk-backward','Organizes','50%','application/json','browseResult','<li\x20key=\x22','ReferenceType','failure','6010KesUyd','</span><ul></ul></li>','argumentDefinition','ns=0;i=45','already\x20loading','map','elements','click','$input','HasChild','<button><i\x20class=\x22fa\x20fa-sitemap\x22></i></button>','fetching\x20failed\x20with\x20error','HasComponent','nodeClass','loading','read','catch','OPCUA-Call','JSON','570300OYydbm','nodes','replaceWith','already\x20fetched','opcua','expanded','node','703630OreNzC','stringify','SteelBlue','displayName','height','expandable','$dropdown','animate','$inputGroup','1779680EukOPo',':visible','$toggleTreeBtn','offset','pageY','reset',';\x22></i>\x20','View','OpcUa-Endpoint2','text','log','join','Bad','parentNode','ns=0;i=46','endpoint','/opcua-endpoint2','Invalid','$combo','3270912awRsvx','SeaGreen','<button><i\x20class=\x22fa\x20fa-flask\x22></i></button>','#copy-input','HasProperty',':first','message','right','error','suppressed','Good','isArray','<li><i\x20class=\x22fa\x20fa-error\x22\x20style=\x22color:red;\x22></i>no\x20reference\x20!<ul></ul></li>','-success','appendTo','arguments','fetched\x20:\x20','scrollTop','currentParent','editableList','done','POST','name','#validate-call-arguments-button','<div/>','fa-list-alt','change','li\x20>\x20.tree-text','nodeId','inputs','toggle','<input\x20type=\x22text\x22>','trigger','widget','extra','fa-question','14ZZzsCe','top','opc.tcp://opcuademo.sterfive.com:26543','Testing\x20Connection\x20...','$tree','DisplayName','children','val','DarkOrange','left','ns=0;i=61','isTypeRef','css','inputArguments','fa-object-group','find','data','\x22}><span\x20class=\x22tree-text\x22\x20title=','outputArguments','ns=0;i=34','auto','closest','hide','TypeDefinition','append','__parentNode','/browse','nodeBrowser','i=61','BrowseName','.spinner','then','-messages','Inverse','Forward','$info','position','statusCode','references','removeClass','length','</p>','$verifyBtn','2178qHZEGF','result','ObjectType','35233fZDULz','browseName','-pending','toggleClass','nodeAddressString','value','Method','Variable'];_0x2885=function(){return _0x42ddc6;};return _0x2885();}
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJfMHgyOGYxOTQiLCJfMHgxOGVmM2UiLCJfMHgyMjViZTAiLCJfMHgyMGEwOTgiLCJfMHg1M2Y5Y2IiLCJfMHg0M2Y0ZjMiLCJfMHgzYjdhMzIiLCJfMHgxMmFjNzAiLCJQcm9taXNlIiwiXzB4NzBjODFmIiwiXzB4MzY3ZGRkIiwiXzB4N2FmMzQ4IiwiXzB4NWU4NTA0IiwiXzB4MTg5YmExIiwiXzB4MTZiYzBmIiwiXzB4NTNiODkzIiwiXzB4MTg1MWFiIiwiXzB4NTliOGM2IiwiXzB4NTM2OWE4IiwiU3VwcHJlc3NlZEVycm9yIiwiXzB4NDgzMjZiIiwiXzB4Mjg1Y2U4IiwiXzB4NTBlNWIxIiwiXzB4NDliYzQ2IiwiRXJyb3IiLCJfMHg0YjMwNTgiLCJfMHgyYjYyMzAiLCJfMHgyMzE1MDgiLCJfMHgxMGU3ODgiLCJfMHg0NmZiYmQiLCJfMHg1NjljOTEiLCJfMHhjYjQzYjEiLCJfMHgzYzk2MzMiLCJfMHg0ZTYzNDkiLCJfMHg1YzViZmMiLCJfMHgyOTRmMTkiLCJfMHg4MzJlYzgiLCJfMHg1MGJkNWQiLCJfMHgzYjE1MmEiLCJfMHg1ZTE2YTEiLCJfMHgyZDc2MmIiLCJfMHg0ZDdkMDEiLCJfMHgxYTEwNTkiLCJfMHg0MTczNDUiLCJfMHg0MmQ0OGQiLCJlbmRwb2ludE5vZGUiLCJfMHgzZDA0ZDEiLCJlbmRwb2ludCIsIl8weDU2ZDlkNiIsImJhc2VVcmwiLCJfMHgxZTdiZjUiLCJfMHhmZThjOTQiLCJfMHg0MTc5OWYiLCJfMHg0YTllYmIiLCJfMHg1NGM4OTIiLCJfMHgxYjhjMTgiLCJPYmplY3QiLCJfMHgzOTZmYTgiLCJmZXRjaCIsIkpTT04iLCJjb25zb2xlIiwiXzB4YjVjMzFjIiwiXzB4NDU0NjVhIiwiXzB4NGU1ZTU5IiwiXzB4MWUxMjMxIiwiXzB4MjA2YmNlIiwiXzB4NTBmNTE5IiwiXzB4MWJlNzU5IiwiXzB4NGMwZmM1Iiwibm9kZUlkIiwiXzB4NDQ5ZjlkIiwicm9vdE5vZGVJZCIsIl8weGYzOWVkYiIsImlzVHlwZSIsIl8weDQxYjM3NiIsIl8weDJhOTQyOCIsIl8weDM4ZTMyNCIsIl8weDM3YmFkMCIsIl8weDJhMzM2MiIsIl8weDViOTg4NSIsIl8weDQwZGNhMCIsIl8weDFmNDJiOCIsIl8weDMzMTAyZCIsIl8weDRhZGE5MCIsIl8weDU3YzNjNiIsIl8weDIzNjFiYyIsIl8weDMzNGZmZCIsIl8weDE3ODBkMCIsIl8weDViMWMxMiIsIl8weDEzOTYwZCIsIl8weDViOWI0NSIsIl8weDJjNDM2NiIsInNldFRpbWVvdXQiLCJfMHgxNjMxNzciLCJfMHg3NTIzYzAiLCJfMHg1NjRhNTMiLCJfMHgxYTkyZDEiLCJfMHhiNDNkNDAiLCJfMHgyY2UwZDYiLCJfMHgxMzJmNmUiLCJfMHgxZjlkOWIiLCJfMHg1MWQ2N2MiLCJfMHg5ZWI1ZWUiLCJfMHgxODM4YmMiLCJfMHgyM2MxMDMiLCJfMHg1Yzg4ZWEiLCJfMHgyNzZhZTYiLCJfMHgzY2UwOWUiLCJfMHgzZjdiZmYiLCJfMHg0NDBiZGIiLCJfMHgzN2Y1NmYiLCJfMHgyZGZhYmIiLCJfMHgyNTAzNWIiLCIkIiwiXzB4NjdiMGI0IiwiXzB4NDIwMWUwIiwiaWNvbiIsIl8weDNjYzk1MyIsImNvbG9yIiwiXzB4MWU1ZThlIiwiXzB4MzRlMWNjIiwiXzB4NWExYWUxIiwiXzB4MmI5NGI3IiwiXzB4M2ZhYzYzIiwiXzB4M2ZiZjIyIiwiXzB4OGFjZjQ1IiwiXzB4MzYwNDE3IiwiXzB4NGEyNDFiIiwiXzB4NTY1MDYwIiwiXzB4MWM5NmRkIiwiXzB4NDViMTkwIiwiXzB4NTZiMzkxIiwiXzB4NDE4OGFmIiwiXzB4NTU0MGE1IiwiXzB4M2Q1MjFjIiwiXzB4MThlZDI1IiwiXzB4NDI0YjUyIiwiXzB4MzdiY2E3IiwiXzB4NDkxNmFjIiwiXzB4MjdhMTU4IiwiXzB4MThkY2YyIiwiXzB4NDFhZGQwIiwidW5kZWZpbmVkIiwiXzB4M2U2ODQzIiwiXzB4NTZhNzAxIiwiXzB4MTJiMmRmIiwiXzB4ZWQzYjFhIiwiXzB4NDRmYTc2IiwiXzB4NmJiMmJjIiwiXzB4MTRjN2I1IiwiXzB4MTc5ZjNhIiwiXzB4NTg0MGQ0IiwiXzB4NDgzZjNhIiwiXzB4OGY2NTY0IiwiXzB4M2NkMGU1IiwiXzB4MTllNjM4IiwiXzB4NTVmYTc3IiwicmVmZXJlbmNlcyIsIl8weDE2NDk3MCIsIl8weDVkZDkxNCIsIl8weDUwYjhlOCIsIl8weDU5ZDUzNSIsIl8weGQwNDgxMiIsIl8weDEwYzJiNiIsIl8weDY4N2M4YyIsIl8weDM4YzQ0NyIsIl8weGU5MjNkYiIsIl8weDE1NDcwNSIsIl8weDIxMmJiYiIsIl8weDIzODg1ZiIsIl8weDFiMGZmZiIsIl8weDM2ZWNjYyIsIl8weGE5ZWEzIiwiXzB4NWEzYWU1IiwiXzB4MzIwNmEzIiwiXzB4NTQ3NmQ3IiwiXzB4MzVmYTYxIiwiXzB4Mjg4NjUwIiwiXzB4MzQwOWI3IiwiXzB4NDhiMGY5IiwiXzB4MTgyMTIxIiwiXzB4NTkwMWE0IiwiXzB4MmM2ZTUxIiwiXzB4MTE5NDhjIiwiXzB4MjMwMmZmIiwiXzB4OGNkMzE4IiwiXzB4MjYyOGY0IiwiXzB4M2UwZTA0IiwiXzB4YmUzMzYxIiwiXzB4NDBhOWE4IiwiXzB4NDZjNDUwIiwiXzB4M2NkYTQ4IiwiXzB4MWM1ZDE3IiwiXzB4MzA2NTcxIiwiXzB4MTlmOTY3IiwiXzB4NDlkMTlhIiwiXzB4M2FmNDdmIiwiXzB4M2FhN2ExIiwiXzB4M2ViNjZiIiwiXzB4NDdiNzczIiwiXzB4NGQyZjM4IiwiXzB4NGE2YWJhIiwiZG9jdW1lbnQiLCJfMHgzYTEzZTYiLCJfMHhkZGE4M2QiLCJfMHgxMzg4MDMiLCJfMHgxNTE5MzQiLCJfMHg0NmE2NmIiLCJfMHgxM2RhZWEiLCJfMHgxNDcxMmMiLCJfMHg0MzdhMzMiLCJfMHgzYmNlM2EiLCJfMHgxNDk4ODUiLCJfMHgxY2YxZTkiLCJfMHgxMjBiNTEiLCJfMHgzN2JhOTEiLCJfMHgzODE2ZTUiLCJfMHgyYWUwOTgiLCJfMHg1ZGQ2NTYiLCJfMHgyODE2YzgiLCJfMHgyYjM5NjQiLCJfMHg1N2RhZmQiLCJfMHg1ODJmNjkiLCJfMHg1NDI2MjQiLCJib2R5IiwiXzB4NWU5OGJhIiwidXJsIiwiXzB4NTFhNjkyIiwiXzB4NDdkOWFiIiwiXzB4MjQ4ODJkIiwiXzB4MTUyYWQ3IiwiXzB4MzU2MTZlIiwiXzB4MTI1YzE4IiwiXzB4MTE2ZWYzIiwiXzB4NTZmYjAxIiwiQXJyYXkiLCJfMHg0ZmQ4MjEiLCJfMHgzZTU3N2MiLCJfMHg0NGY4NDkiLCJfMHg1MWVmM2YiLCJfMHgyNGU4NjciLCJSRUQiLCJfMHgxM2JjZjMiLCJzZWN1cml0eU1vZGUiLCJfMHgyMmMwMzIiLCJzZWN1cml0eVBvbGljeSIsIl8weDQzMDBjNSIsInVzZXJJZGVudGl0eVR5cGUiLCJfMHgyYmIzYTEiLCJjcmVkZW50aWFscyIsIl8weDVkOWM1ZCIsIl8weDNjMGQ4NiIsIl8weDM3ZTA0MyIsIl8weDNhOWRlMCIsIl8weDFhM2YyZiIsIl8weDIyYzRjYyIsIl8weDUzNDUwMCIsIl8weDExNThhMyIsIl8weDIxZGM0OSIsIl8weDQwZGU0ZiIsIl8weDMxNWQ2NyIsIl8weDNlYWI4NiIsIl8weDRjMTBiMCIsIl8weDg3NDdhMSIsIl8weDU4NGZhMCIsIl8weDJlOGQ0ZCIsIl8weDMzMjE5YyIsIl8weDNiZGM5MiIsIl8weDM2NDVkOCIsIl8weDUyNzcyNSIsIl8weDE2YTJjNiIsIl8weDRkZWY0NiIsIl8weDJhODNkNyIsIl8weGIzMTcxNyIsIl8weDQ0ZTkyYSIsIl8weDI1NTk3YiIsIl8weDM5ODViYSIsIl8weDVjOWU5YyIsIl8weDE4N2Q2ZSIsIl8weDU4NGEzMiIsIl8weDE5OGJhZCIsIl8weDJmMzI1MCIsIl8weDNhZDgxMSIsIl8weDVlMjcwZiIsIl8weDQ1NWU5OSIsIl8weDY5NGI3NyIsIl8weDQ0MTRkNSIsIl8weDIxODI1MSIsIl8weDRjNGUwZSIsIl8weDE2Mjg5MSIsIl8weDIyMzNkMiIsIl8weDJkYjI4YyIsIm5hdmlnYXRvciIsIl8weDM4YmM4YSIsIl8weGRhYmZkYSIsIl8weDU3YmI2YyJdLCJtYXBwaW5ncyI6IncwQkFBQSxDQUFDLFUsQ0FDRyxhLHdCQW1CQSxT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U0FBQSxDLGdCQUFBLENBQTBCaUQsU0FBMUIsQ0FBd0MsS0FBTyxDLEtBQzNDLEMscUNBRDJDLEMsTUFFM0MsQ0FBTSxDLGNBQ0YsQ0FBY1YsU0FBQSxFQURaLEMsVUFFRixDQUFVTSxTQUFBLEMsZ0JBQUEsR0FGUixDLFVBR0YsQ0FBVUMsU0FBQSxDLGdCQUFBLEdBSFIsQ0FGcUMsQ0FBUCxDQUF4QyxDQU9JLENBQUNpQyxTQUFELENBQU1DLFNBQU4sRyw4QkFDSUQsUyxDQUNBLE9BR0osTUFBTUUsU0FBQSxDQUFxQkQsU0FBQSxDLGdCQUFBLENBQTNCLENBQ0FwQyxTQUFBLENBQVlvQyxTQUFBLEMsZ0JBQUEsQyxDQUNaakMsU0FBQSxDLGdCQUFBLEcsQ0FDQUMsU0FBQSxDLGdCQUFBLEcsQ0FDQXdCLFNBQUEsQ0FBb0J6QixTQUFwQixDQUE4Q2tDLFNBQUEsQyxnQkFBQSxDQUE5QyxDLENBQ0FULFNBQUEsQ0FBb0J4QixTQUFwQixDQUErQ2lDLFNBQUEsQyxnQkFBQSxDQUEvQyxDLENBQ0FMLFNBQUEsQ0FBY0ksU0FBQSxDLDZCQUFBLEdBQW9DLEUsQ0FDbERILFNBQUEsQyxnQkFBQSxHLENBQ0FDLFNBQUEsQyxnQkFBQSxFLGdCQUFBLEVBQThCek8sSUFBQSxDLFdBQUEsRUFBZXVPLFNBQWYsQ0FBOUIsQyxDQUNBdE8sT0FBQSxDLEtBQUEsRSxnQkFBQSxDQUFvQkQsSUFBQSxDLFdBQUEsRUFBZXVPLFNBQWYsQ0FBcEIsQyxDQUNBdE8sT0FBQSxDLGdCQUFBLEUsTUFBQSxDQUFvQjBPLFNBQXBCLEMsRUF0QkosQyxFQTNIcUMsQyxZQW9KekMsRSxFQXBKeUMsQ0FBN0MsQyxFQWpzQkosRyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG4gICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbiAgICBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG4gICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG4gICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcbiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlLCBTdXBwcmVzc2VkRXJyb3IsIFN5bWJvbCAqL1xyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0eXBlb2YgU3VwcHJlc3NlZEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyBTdXBwcmVzc2VkRXJyb3IgOiBmdW5jdGlvbiAoZXJyb3IsIHN1cHByZXNzZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gZS5uYW1lID0gXCJTdXBwcmVzc2VkRXJyb3JcIiwgZS5lcnJvciA9IGVycm9yLCBlLnN1cHByZXNzZWQgPSBzdXBwcmVzc2VkLCBlO1xyXG4gICAgfTtcblxuICAgIGNvbnN0IE9yZ2FuaXplc1JlZk5vZGVJZCA9IFwibnM9MDtpPTM1XCI7XG4gICAgY29uc3QgRm9sZGVyVHlwZSA9IFwibnM9MDtpPTYxXCI7XG4gICAgY29uc3QgSGFzQ29tcG9uZW50UmVmTm9kZUlkID0gXCJucz0wO2k9NDdcIjtcbiAgICBjb25zdCBIYXNQcm9wZXJ0eVJlZk5vZGVJZCA9IFwibnM9MDtpPTQ2XCI7XG4gICAgY29uc3QgSGFzQ2hpbGRSZWZOb2RlSWQgPSBcIm5zPTA7aT0zNFwiO1xuICAgIGNvbnN0IEhhc1N1YnR5cGVSZWZOb2RlSWQgPSBcIm5zPTA7aT00NVwiO1xuICAgIGNvbnN0IEhhc1R5cGVEZWZpbml0aW9uUmVmTm9kZUlkID0gXCJucz0wO2k9NDBcIjtcblxuICAgIHZhciBCcm93c2VEaXJlY3Rpb247XG4gICAgKGZ1bmN0aW9uIChCcm93c2VEaXJlY3Rpb24pIHtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkZvcndhcmRcIl0gPSAwXSA9IFwiRm9yd2FyZFwiO1xuICAgICAgICBCcm93c2VEaXJlY3Rpb25bQnJvd3NlRGlyZWN0aW9uW1wiSW52ZXJzZVwiXSA9IDFdID0gXCJJbnZlcnNlXCI7XG4gICAgICAgIEJyb3dzZURpcmVjdGlvbltCcm93c2VEaXJlY3Rpb25bXCJCb3RoXCJdID0gMl0gPSBcIkJvdGhcIjtcbiAgICAgICAgQnJvd3NlRGlyZWN0aW9uW0Jyb3dzZURpcmVjdGlvbltcIkludmFsaWRcIl0gPSAzXSA9IFwiSW52YWxpZFwiO1xuICAgIH0pKEJyb3dzZURpcmVjdGlvbiB8fCAoQnJvd3NlRGlyZWN0aW9uID0ge30pKTtcbiAgICB2YXIgTm9kZUNsYXNzO1xuICAgIChmdW5jdGlvbiAoTm9kZUNsYXNzKSB7XG4gICAgICAgIE5vZGVDbGFzc1tOb2RlQ2xhc3NbXCJVbnNwZWNpZmllZFwiXSA9IDBdID0gXCJVbnNwZWNpZmllZFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiT2JqZWN0XCJdID0gMV0gPSBcIk9iamVjdFwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk1ldGhvZFwiXSA9IDRdID0gXCJNZXRob2RcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIk9iamVjdFR5cGVcIl0gPSA4XSA9IFwiT2JqZWN0VHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIlJlZmVyZW5jZVR5cGVcIl0gPSAzMl0gPSBcIlJlZmVyZW5jZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzW05vZGVDbGFzc1tcIkRhdGFUeXBlXCJdID0gNjRdID0gXCJEYXRhVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NbTm9kZUNsYXNzW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3MgfHwgKE5vZGVDbGFzcyA9IHt9KSk7XG4gICAgdmFyIE5vZGVDbGFzc01hc2s7XG4gICAgKGZ1bmN0aW9uIChOb2RlQ2xhc3NNYXNrKSB7XG4gICAgICAgIE5vZGVDbGFzc01hc2tbTm9kZUNsYXNzTWFza1tcIk9iamVjdFwiXSA9IDFdID0gXCJPYmplY3RcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVcIl0gPSAyXSA9IFwiVmFyaWFibGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiTWV0aG9kXCJdID0gNF0gPSBcIk1ldGhvZFwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJPYmplY3RUeXBlXCJdID0gOF0gPSBcIk9iamVjdFR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmFyaWFibGVUeXBlXCJdID0gMTZdID0gXCJWYXJpYWJsZVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDMyXSA9IFwiUmVmZXJlbmNlVHlwZVwiO1xuICAgICAgICBOb2RlQ2xhc3NNYXNrW05vZGVDbGFzc01hc2tbXCJEYXRhVHlwZVwiXSA9IDY0XSA9IFwiRGF0YVR5cGVcIjtcbiAgICAgICAgTm9kZUNsYXNzTWFza1tOb2RlQ2xhc3NNYXNrW1wiVmlld1wiXSA9IDEyOF0gPSBcIlZpZXdcIjtcbiAgICB9KShOb2RlQ2xhc3NNYXNrIHx8IChOb2RlQ2xhc3NNYXNrID0ge30pKTtcbiAgICB2YXIgUmVzdWx0TWFzaztcbiAgICAoZnVuY3Rpb24gKFJlc3VsdE1hc2spIHtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiUmVmZXJlbmNlVHlwZVwiXSA9IDFdID0gXCJSZWZlcmVuY2VUeXBlXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIklzRm9yd2FyZFwiXSA9IDJdID0gXCJJc0ZvcndhcmRcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiTm9kZUNsYXNzXCJdID0gNF0gPSBcIk5vZGVDbGFzc1wiO1xuICAgICAgICBSZXN1bHRNYXNrW1Jlc3VsdE1hc2tbXCJCcm93c2VOYW1lXCJdID0gOF0gPSBcIkJyb3dzZU5hbWVcIjtcbiAgICAgICAgUmVzdWx0TWFza1tSZXN1bHRNYXNrW1wiRGlzcGxheU5hbWVcIl0gPSAxNl0gPSBcIkRpc3BsYXlOYW1lXCI7XG4gICAgICAgIFJlc3VsdE1hc2tbUmVzdWx0TWFza1tcIlR5cGVEZWZpbml0aW9uXCJdID0gMzJdID0gXCJUeXBlRGVmaW5pdGlvblwiO1xuICAgIH0pKFJlc3VsdE1hc2sgfHwgKFJlc3VsdE1hc2sgPSB7fSkpO1xuICAgIC8vICBjb25zdCBxID0gUmVmZXJlbmNlVHlwZUlkcy5Pcmdhbml6ZXM7XG4gICAgZnVuY3Rpb24gcmVzb2x2ZU5vZGVJZChub2RlSWRMaWtlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZUlkTGlrZSkge1xuICAgICAgICAgICAgY2FzZSBcIk9yZ2FuaXplc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBPcmdhbml6ZXNSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzUHJvcGVydHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzUHJvcGVydHlSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzQ29tcG9uZW50XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc0NvbXBvbmVudFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNDaGlsZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBIYXNDaGlsZFJlZk5vZGVJZDtcbiAgICAgICAgICAgIGNhc2UgXCJIYXNTdWJ0eXBlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEhhc1N1YnR5cGVSZWZOb2RlSWQ7XG4gICAgICAgICAgICBjYXNlIFwiSGFzVHlwZURlZmluaXRpb25cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gSGFzVHlwZURlZmluaXRpb25SZWZOb2RlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRJY29uID0gKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlZmVyZW5jZS5ub2RlQ2xhc3MpIHtcbiAgICAgICAgICAgIGNhc2UgXCJPYmplY3RcIjpcbiAgICAgICAgICAgICAgICBpZiAocmVmZXJlbmNlLnJlZmVyZW5jZVR5cGVJZCA9PT0gT3JnYW5pemVzUmVmTm9kZUlkKSA7XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS50eXBlRGVmaW5pdGlvbiA9PT0gRm9sZGVyVHlwZSB8fCByZWZlcmVuY2UucmVmZXJlbmNlVHlwZUlkID09PSBcImk9NjFcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWZvbGRlclwiLCBjb2xvcjogXCJyZ2JhKDYxLCA2MCwgNCwgMC41MjUpXCIgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWNvbjogXCJmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6IFwiU2VhR3JlZW5cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIlZhcmlhYmxlXCI6XG4gICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc0NvbXBvbmVudFJlZk5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIlN0ZWVsQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZmVyZW5jZS5yZWZlcmVuY2VUeXBlSWQgPT09IEhhc1Byb3BlcnR5UmVmTm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtbGlzdC1hbHRcIiwgY29sb3I6IFwiRG9kZ2VyQmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLWxpc3QtYWx0XCIsIGNvbG9yOiBcIkNhZGV0Qmx1ZVwiIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIk1ldGhvZFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGljb246IFwiZmEtY29nXCIsIGNvbG9yOiBcIlNhbmR5QnJvd25cIiB9O1xuICAgICAgICAgICAgY2FzZSBcIk9iamVjdFR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogXCJEYXJrT3JhbmdlXCIgfTtcbiAgICAgICAgICAgIGNhc2UgXCJWYXJpYWJsZVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXNsaWRlcnNcIiwgY29sb3I6IFwiRGFya09yYW5nZVwiIH07XG4gICAgICAgICAgICBjYXNlIFwiRGF0YVR5cGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXRleHQtd2lkdGhcIiwgY29sb3I6IFwiQ2FkZXRCbHVlXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBpY29uOiBcImZhLXF1ZXN0aW9uXCIsIGNvbG9yOiBcImdyZXlcIiB9O1xuICAgIH07XG5cbiAgICBjb25zdCBicm93c2UgPSAoeyBlbmRwb2ludE5vZGUsIGVuZHBvaW50LCBiYXNlVXJsIH0sIG5vZGVJZCwgdGVtcGxhdGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vYnJvd3NlYDtcbiAgICAgICAgY29uc3QgYnJvd3NlRGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRlbXBsYXRlKSwgeyBub2RlSWQsIHJlc3VsdE1hc2s6IDYzIH0pO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBicm93c2VEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hpbmcgZmFpbGVkIHdpdGggZXJyb3JcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgICByZXR1cm4geyByZWZlcmVuY2VzOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiYnJvd3NlIGZldGNoZWQgOiBcIiwgZGF0YS5zdGF0dXMsIGRhdGEuc3RhdHVzVGV4dCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0geWllbGQgZGF0YS5qc29uKCk7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSByZXNwb25zZS5icm93c2VSZXN1bHQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHsgcmVmZXJlbmNlcyB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGUxID0ge1xuICAgICAgICByZWZlcmVuY2VUeXBlSWQ6IHJlc29sdmVOb2RlSWQoXCJIYXNDaGlsZFwiKSxcbiAgICAgICAgaW5jbHVkZVN1YnR5cGVzOiB0cnVlLFxuICAgICAgICBicm93c2VEaXJlY3Rpb246IEJyb3dzZURpcmVjdGlvbi5Gb3J3YXJkLFxuICAgICAgICBub2RlQ2xhc3NNYXNrOiBOb2RlQ2xhc3MuVmFyaWFibGUgfCBOb2RlQ2xhc3MuT2JqZWN0IHwgTm9kZUNsYXNzLk1ldGhvZCxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5PYmplY3RUeXBlIHxcbiAgICAgICAgLy8gIE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUgfFxuICAgICAgICAvLyBOb2RlQ2xhc3MuUmVmZXJlbmNlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5EYXRhVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5WaWV3LFxuICAgICAgICByZXN1bHRNYXNrOiA2MyxcbiAgICB9O1xuICAgIGNvbnN0IHRlbXBsYXRlMiA9IHtcbiAgICAgICAgcmVmZXJlbmNlVHlwZUlkOiByZXNvbHZlTm9kZUlkKFwiT3JnYW5pemVzXCIpLFxuICAgICAgICBpbmNsdWRlU3VidHlwZXM6IHRydWUsXG4gICAgICAgIGJyb3dzZURpcmVjdGlvbjogQnJvd3NlRGlyZWN0aW9uLkZvcndhcmQsXG4gICAgICAgIG5vZGVDbGFzc01hc2s6IE5vZGVDbGFzcy5WYXJpYWJsZSB8IE5vZGVDbGFzcy5PYmplY3QgfCBOb2RlQ2xhc3MuTWV0aG9kLFxuICAgICAgICAvLyAgTm9kZUNsYXNzLk9iamVjdFR5cGUgfFxuICAgICAgICAvLyAgTm9kZUNsYXNzLlZhcmlhYmxlVHlwZSB8XG4gICAgICAgIC8vIE5vZGVDbGFzcy5SZWZlcmVuY2VUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLkRhdGFUeXBlIHxcbiAgICAgICAgLy8gTm9kZUNsYXNzLlZpZXcsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgY29uc3Qgd2Fsa0JhY2t3YXJkID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCB7IG5vZGVJZCwgcm9vdE5vZGVJZCwgaXNUeXBlIH0pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vd2Fsay1iYWNrd2FyZGA7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICByb290Tm9kZUlkLFxuICAgICAgICAgICAgICAgIGlzVHlwZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICByZXR1cm4ganNvbi5icm93c2VQYXRoO1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVybmFsVmVyaWZ5ID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCAkaW5wdXRFbGVtZW50LCAkaW5mbykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBgJHtiYXNlVXJsfS9vcGN1YS1lbmRwb2ludDJgO1xuICAgICAgICBjb25zdCB1cmwgPSBgJHtyb290fS9jaGVja05vZGVJZGA7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9ICRpbnB1dEVsZW1lbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgICAgIGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2V0Tm90aWZpY2F0aW9uID0gKHRleHQsIGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgJGluZm8udGV4dCh0ZXh0KS5hZGRDbGFzcyhcInN0ZXJmaXZlLWluZm9cIikuYWRkQ2xhc3MoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICRpbmZvLnNob3coKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICRpbmZvLnJlbW92ZUNsYXNzKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgJGluZm8uaGlkZSgpO1xuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGpzb24gPSAoeWllbGQgZGF0YS5qc29uKCkpO1xuICAgICAgICBpZiAoZGF0YS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nO1xuICAgICAgICAgICAgc2V0Tm90aWZpY2F0aW9uKFwiISFmYWlsdXJlISFcIiArIG5vZGVJZCwgXCJmYWlsdXJlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGpzb24uc3RhdHVzQ29kZS5tYXRjaCgvR29vZC8pKSB7XG4gICAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC52YWwoanNvbi5ub2RlQWRkcmVzc1N0cmluZyk7XG4gICAgICAgICAgICAgICAgJGlucHV0RWxlbWVudC50cmlnZ2VyKFwiY2hhbmdlXCIpO1xuICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbihcIkdvb2RcIiwgXCJva1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICRpbnB1dEVsZW1lbnQudmFsKGAke25vZGVJZH1gKTtcbiAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb24oYCR7anNvbi5zdGF0dXNDb2RlfSAke2RhdGEuc3RhdHVzVGV4dH1gLCBcImZhaWx1cmVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBmZXRjaENoaWxkcmVuKCRub2RlLCBkYXRhKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlSWQgPSAkbm9kZS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICBjb25zdCBicm93c2VSZXN1bHQxID0geWllbGQgYnJvd3NlKGRhdGEsIG5vZGVJZCwgdGVtcGxhdGUxKTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZVJlc3VsdDIgPSB5aWVsZCBicm93c2UoZGF0YSwgbm9kZUlkLCB0ZW1wbGF0ZTIpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiBbLi4uYnJvd3NlUmVzdWx0MS5yZWZlcmVuY2VzLCAuLi5icm93c2VSZXN1bHQyLnJlZmVyZW5jZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRlbXBsYXRlU1QgPSB7XG4gICAgICAgIHJlZmVyZW5jZVR5cGVJZDogcmVzb2x2ZU5vZGVJZChcIkhhc1N1YnR5cGVcIiksXG4gICAgICAgIGluY2x1ZGVTdWJ0eXBlczogdHJ1ZSxcbiAgICAgICAgYnJvd3NlRGlyZWN0aW9uOiBCcm93c2VEaXJlY3Rpb24uRm9yd2FyZCxcbiAgICAgICAgbm9kZUNsYXNzTWFzazogTm9kZUNsYXNzLlJlZmVyZW5jZVR5cGUgfCBOb2RlQ2xhc3MuT2JqZWN0VHlwZSB8IE5vZGVDbGFzcy5EYXRhVHlwZSB8IE5vZGVDbGFzcy5WYXJpYWJsZVR5cGUsXG4gICAgICAgIHJlc3VsdE1hc2s6IDYzLFxuICAgIH07XG4gICAgZnVuY3Rpb24gZmV0Y2hTdWJ0eXBlcygkbm9kZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUlkID0gJG5vZGUuZGF0YShcInZhbHVlXCIpO1xuICAgICAgICAgICAgY29uc3QgYnJvd3NlUmVzdWx0MSA9IHlpZWxkIGJyb3dzZShkYXRhLCBub2RlSWQsIHRlbXBsYXRlU1QpO1xuICAgICAgICAgICAgcmV0dXJuIGJyb3dzZVJlc3VsdDE7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtYWtlRWxlbWVudCA9IChyZWZlcmVuY2UpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZSB8fCAhcmVmZXJlbmNlLm5vZGVJZCkge1xuICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8bGk+PGkgY2xhc3M9XCJmYSBmYS1lcnJvclwiIHN0eWxlPVwiY29sb3I6cmVkO1wiPjwvaT5ubyByZWZlcmVuY2UgITx1bD48L3VsPjwvbGk+YCk7XG4gICAgICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbiA9IHJlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdCA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgY29sb3IgfSA9IGdldEljb24ocmVmZXJlbmNlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBgKCR7cmVmZXJlbmNlLm5vZGVJZC50b1N0cmluZygpfSkgJHsoKF9jID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5uYW1lKSB8fCAoKF9kID0gcmVmZXJlbmNlLmRpc3BsYXlOYW1lKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudGV4dCkgfHwgXCJcIn1gO1xuICAgICAgICBjb25zdCAkZWxlbWVudCA9ICQoYDxsaSBrZXk9XCIke3JlZmVyZW5jZS5ub2RlSWQudG9TdHJpbmcoKX1cIn0+PHNwYW4gY2xhc3M9XCJ0cmVlLXRleHRcIiB0aXRsZT0ke3RpdGxlfT48aSBjbGFzcz1cImZhICR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiR7Y29sb3J9O1wiPjwvaT4gJHt0fTwvc3Bhbj48dWw+PC91bD48L2xpPmApO1xuICAgICAgICAkZWxlbWVudC5hZGRDbGFzcyhcImV4cGFuZGFibGVcIik7XG4gICAgICAgICRlbGVtZW50LmRhdGEoXCJ2YWx1ZVwiLCBuKTtcbiAgICAgICAgJGVsZW1lbnQuZGF0YShcInJlZmVyZW5jZVwiLCByZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gJGVsZW1lbnQ7XG4gICAgfTtcbiAgICBjb25zdCBmaW5kRWxlbWVudCA9IChub2RlSWQsICR0cmVlKSA9PiB7XG4gICAgICAgIHJldHVybiAkdHJlZS5maW5kKGBsaVtrZXk9XCIke25vZGVJZH1cIl1gKTtcbiAgICB9O1xuICAgIGNvbnN0IHNlbGVjdFNpbmdsZSA9ICh0aGF0LCAkbGkpID0+IHtcbiAgICAgICAgdGhhdC4kdHJlZS5maW5kKFwibGkgPiAudHJlZS10ZXh0XCIpLnJlbW92ZUNsYXNzKFwic2VsZWN0ZWRcIik7XG4gICAgICAgIC8vIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtc1xuICAgICAgICAkbGkuZmluZChcIi50cmVlLXRleHQ6Zmlyc3RcIikuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGF1dG9FeHBhbmQgPSAodGhhdCwgYnJvd3NlUGF0aCwgJHRyZWUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAvLyBleHBhbmQgdGhlIHRyZWUgdG8gc2hvdyB0aGUgbm9kZUlkXG4gICAgICAgIGxldCAkY3VycmVudCA9ICR0cmVlLmNoaWxkcmVuKFwiOmZpcnN0XCIpO1xuICAgICAgICBicm93c2VQYXRoLnJlbGF0aXZlUGF0aC5lbGVtZW50cyB8fCBbXTtcbiAgICAgICAgY29uc3Qgbm9kZUlkcyA9IGJyb3dzZVBhdGgubm9kZUlkcyB8fCBbXTtcbiAgICAgICAgaWYgKG5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBuIG9mIG5vZGVJZHMpIHtcbiAgICAgICAgICAgIGlmICgkY3VycmVudC5oYXNDbGFzcyhcImV4cGFuZGFibGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGV4cGFuZCBhbmQgc2VsZWN0IHRoZSByaWdodCBlbGVtZW50XG4gICAgICAgICAgICAgICAgeWllbGQgX2V4cGFuZExpKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0ICRlbGVtZW50ID0gZmluZEVsZW1lbnQobiwgJGN1cnJlbnQpO1xuICAgICAgICAgICAgaWYgKCRlbGVtZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRjdXJyZW50ID0gJGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgc2VsZWN0U2luZ2xlKHRoYXQsICRjdXJyZW50KTtcbiAgICAgICAgc2Nyb2xsVG9MaSh0aGF0LiRkcm9wZG93biwgJGN1cnJlbnQpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIHNjcm9sbFRvTGkoJGNvbnRhaW5lciwgJHRhcmdldExpKSB7XG4gICAgICAgIC8vIEdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBpdGVtIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXJcbiAgICAgICAgY29uc3QgbGlQb3MgPSAkdGFyZ2V0TGkucG9zaXRpb24oKS50b3A7XG4gICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIGNvbnRhaW5lclxuICAgICAgICBjb25zdCBjb250YWluZXJTY3JvbGxUb3AgPSAkY29udGFpbmVyLnNjcm9sbFRvcCgpO1xuICAgICAgICBpZiAoY29udGFpbmVyU2Nyb2xsVG9wID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgcG9zaXRpb24gdG8gc2Nyb2xsIHRvIChjdXJyZW50IHNjcm9sbCArIGl0ZW0ncyBwb3NpdGlvbilcbiAgICAgICAgLy8gQWRqdXN0IHRoaXMgY2FsY3VsYXRpb24gYmFzZWQgb24geW91ciBuZWVkc1xuICAgICAgICBjb25zdCBzY3JvbGxUbyA9IGNvbnRhaW5lclNjcm9sbFRvcCArIGxpUG9zIC0gJGNvbnRhaW5lci5oZWlnaHQoKSAvIDIgKyAkdGFyZ2V0TGkuaGVpZ2h0KCkgLyAyO1xuICAgICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byBlbnN1cmUgdGhlIGl0ZW0gaXMgdmlzaWJsZVxuICAgICAgICAkY29udGFpbmVyLmFuaW1hdGUoe1xuICAgICAgICAgICAgc2Nyb2xsVG9wOiBzY3JvbGxUbyxcbiAgICAgICAgfSwgNTAwKTsgLy8gQWRqdXN0IHRoZSBkdXJhdGlvbiAoNTAwbXMpIGFzIG5lZWRlZFxuICAgIH1cbiAgICBjb25zdCByZWFjaFNlbGVjdGlvbiA9ICh0aGF0LCBwYXJlbnROb2RlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3Qgbm9kZUlkID0gdGhhdC4kaW5wdXQudmFsKCk7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICByb290Tm9kZUlkOiBwYXJlbnROb2RlLm5vZGVJZCxcbiAgICAgICAgICAgIGlzVHlwZTogdGhhdC5vcHRpb25zLmlzVHlwZVJlZiB8fCBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICBjb25zdCBicm93c2VQYXRoID0geWllbGQgd2Fsa0JhY2t3YXJkKGRhdGEsIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWJyb3dzZVBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBhdXRvRXhwYW5kKHRoYXQsIGJyb3dzZVBhdGgsIHRoYXQuJHRyZWUpO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRub2RlLCBmZXRjaEZ1bmMsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICgkbm9kZS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImFscmVhZHkgZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJG5vZGUuaGFzQ2xhc3MoXCJsb2FkaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJhbHJlYWR5IGxvYWRpbmdcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuYWRkQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICAgICAgJG5vZGUuYXBwZW5kKCc8ZGl2IGNsYXNzPVwic3Bpbm5lclwiPjwvZGl2PicpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZWZlcmVuY2VzIH0gPSB5aWVsZCBmZXRjaEZ1bmMoJG5vZGUsIGRhdGEpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3B0aW9ucy5maWx0ZXIgJiYgIXRoYXQub3B0aW9ucy5maWx0ZXIocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgJGVsZW1lbnQgPSBtYWtlRWxlbWVudChyZWZlcmVuY2UpO1xuICAgICAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICRub2RlLmFkZENsYXNzKFwiZmV0Y2hlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbm9kZS5jaGlsZHJlbihcInVsXCIpLmFwcGVuZChgPGxpPmVycm9yICR7ZXJyLm1lc3NhZ2V9PC9saT5gKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJG5vZGUuZmluZChcIi5zcGlubmVyXCIpLnJlbW92ZSgpO1xuICAgICAgICAgICAgJG5vZGUucmVtb3ZlQ2xhc3MoXCJsb2FkaW5nXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbWFrZUNvbm5lY3Rpb24odGhhdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgYmFzZVVybDogdGhhdC5vcHRpb25zLmJhc2VVcmwsXG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlKCkgOiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnROb2RlLFxuICAgICAgICAgICAgZW5kcG9pbnQ6IHR5cGVvZiB0aGF0Lm9wdGlvbnMuZW5kcG9pbnQgPT09IFwiZnVuY3Rpb25cIiA/IHRoYXQub3B0aW9ucy5lbmRwb2ludCgpIDogdGhhdC5vcHRpb25zLmVuZHBvaW50LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZnVuY3Rpb24gX2V4cGFuZExpKHRoYXQsICRsaSkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgaWYgKCRsaS5oYXNDbGFzcyhcImZldGNoZWRcIikpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmV0Y2ggbmV3IGRhdGEgZm9yIHRoaXMgbm9kZVxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoYXQpO1xuICAgICAgICAgICAgY29uc3QgZiA9ICF0aGF0Lm9wdGlvbnMuaXNUeXBlUmVmID8gZmV0Y2hDaGlsZHJlbiA6IGZldGNoU3VidHlwZXM7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHlpZWxkIF9mZXRjaERhdGFGb3JOb2RlKHRoYXQsICRsaSwgZiwgZGF0YSk7XG4gICAgICAgICAgICAgICAgLy8gbWFyayBhcyBleHBhbmRlZFxuICAgICAgICAgICAgICAgICRsaS5yZW1vdmVDbGFzcyhcImV4cGFuZGFibGVcIikuYWRkQ2xhc3MoXCJleHBhbmRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAkbGkucmVtb3ZlQ2xhc3MoXCJleHBhbmRhYmxlXCIpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0ID0gKCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogWyBUZW1wZXJhdHVyZSAgXVxuICAgICAgICAgKiAgICggdG9vbHRpcCA6ICgvT2JqZWN0cy9NeVNlbnNvcikgKG5zPTE7cz1UZW1wZXJhdHVyZSkpXG4gICAgICAgICAqIFsgKyBbRm9sZGVyXSBPYmplY3RzXVxuICAgICAgICAgKiBbICAgICBbT2JqZWN0XSBNeVNlbnNvcl1cbiAgICAgICAgICogWyAgICAgKCApIFtWYXJpYWJsZV0gVGVtcGVyYXR1cmVdXG4gICAgICAgICAqL1xuICAgICAgICAkLndpZGdldChcInN0ZXJmaXZlLm5vZGVCcm93c2VyXCIsIHtcbiAgICAgICAgICAgIC8qIGRlZmF1bHQgb3B0aW9ucyAqL1xuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZTogKCkgPT4gKHsgZW5kcG9pbnQ6IFwib3BjLnRjcDovL29wY3VhZGVtby5zdGVyZml2ZS5jb206MjY1NDNcIiB9KSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludDogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZU5hbWU6IHsgbmFtZXNwYWNlSW5kZXg6IDAsIG5hbWU6IFwiT2JqZWN0c1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vZGVDbGFzczogXCJPYmplY3RcIixcbiAgICAgICAgICAgICAgICAgICAgbm9kZUlkOiBcIm5zPTA7aT04NVwiLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogeyB0ZXh0OiBcIk9iamVjdHNcIiB9LFxuICAgICAgICAgICAgICAgICAgICB0eXBlRGVmaW5pdGlvbjogRm9sZGVyVHlwZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgYmFzZVVybDogXCJcIixcbiAgICAgICAgICAgICAgICBpc1R5cGVSZWY6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc29sdmVQYXJlbnROb2RlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoYXQuX19wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gdHlwZW9mIHRoYXQub3B0aW9ucy5wYXJlbnROb2RlID09PSBcImZ1bmN0aW9uXCIgPyB0aGF0Lm9wdGlvbnMucGFyZW50Tm9kZS5jYWxsKHRoYXQpIDogdGhhdC5vcHRpb25zLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0geWllbGQgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGRlc2M7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Ll9fcGFyZW50Tm9kZSA9IGE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoYXQuX19wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAvLyBhbHNvIHJlc2V0IHBhcmVudCBub2RlXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSB0aGF0O1xuICAgICAgICAgICAgICAgICAgICBhLl9fcGFyZW50Tm9kZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0geWllbGQgdGhpcy5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCAkZWxlbWVudCA9IG1ha2VFbGVtZW50KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGF0LiR0cmVlLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIHRoYXQuY3VycmVudFBhcmVudCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmVyaWZ5KCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIG5ldyBkYXRhIGZvciB0aGlzIG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbWFrZUNvbm5lY3Rpb24odGhhdCk7XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxWZXJpZnkoZGF0YSwgdGhhdC4kaW5wdXQsIHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF9jcmVhdGUoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8gPSAkKFwiPGRpdi8+XCIpO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFkZENsYXNzKFwic3RlcmZpdmUtY29tYm8tYm94XCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5yZXBsYWNlV2l0aCh0aGF0LiRjb21ibyk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cCA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJpbnB1dC1ncm91cFwiKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRjb21iby5hcHBlbmQodGhhdC4kaW5wdXRHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kaW5wdXQpO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRvZ2dsZVRyZWVCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtc2l0ZW1hcFwiPjwvaT48L2J1dHRvbj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dEdyb3VwLmFwcGVuZCh0aGF0LiR0b2dnbGVUcmVlQnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR0b2dnbGVUcmVlQnRuLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRkcm9wZG93bi5pcyhcIjp2aXNpYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5mby5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJlZSB3aWRnZXQgaXMgZ29pbmcgdG8gYmVjb21lIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlID0geWllbGQgdGhhdC5yZXNvbHZlUGFyZW50Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlICE9PSB0aGF0LmN1cnJlbnRQYXJlbnQgfHwgKChfYSA9IHRoYXQuY3VycmVudFBhcmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5vZGVJZCkgIT09IHBhcmVudE5vZGUubm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRoYXQucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvUmVhY2hTZWxlY3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kZHJvcGRvd24udG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkVG9SZWFjaFNlbGVjdGlvbiAmJiAoeWllbGQgcmVhY2hTZWxlY3Rpb24odGhhdCwgcGFyZW50Tm9kZSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4gPSAkKGA8YnV0dG9uPjxpIGNsYXNzPVwiZmEgZmEtZmxhc2tcIj48L2k+PC9idXR0b24+YCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5wdXRHcm91cC5hcHBlbmQodGhhdC4kdmVyaWZ5QnRuKTtcbiAgICAgICAgICAgICAgICB0aGF0LiR2ZXJpZnlCdG4ub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGF0LiRpbnB1dC5hdHRyKFwicGxhY2Vob2xkZXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQuYXR0cihcInBsYWNlaG9sZGVyXCIsIFwiZW50ZXIgYSBub2RlSWQgb3IgYSBicm93c2VQYXRoIFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhhdC4kaW5mbyA9ICQoYDxkaXYgY2xhc3M9XCJpbmZvLXRleHRcIj48L2Rpdj5gKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRpbmZvLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB0aGF0LiRkcm9wZG93biA9ICQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJzdGVyZml2ZS1kcm9wZG93blwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgdGhhdC4kY29tYm8uYXBwZW5kKHRoYXQuJGluZm8pO1xuICAgICAgICAgICAgICAgIHRoYXQuJGNvbWJvLmFwcGVuZCh0aGF0LiRkcm9wZG93bik7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZSA9ICQoYDx1bCBjbGFzcz1cInN0ZXJmaXZlLXRyZWVcIj48L3VsPmApLmFwcGVuZFRvKHRoYXQuJGRyb3Bkb3duKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbkxlZnRTaXplID0gKCRsaSwgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlV2lkdGggPSAyMDsgLy8gU2V0IHdpZHRoIG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJlZm9yZUhlaWdodCA9IDIwOyAvLyBTZXQgaGVpZ2h0IG9mIHRoZSA6OmJlZm9yZSBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3MgPSAkbGkub2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBldmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUucGFnZVggPj0gZWxlbWVudFBvcy5sZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VYIDw9IGVsZW1lbnRQb3MubGVmdCArIGJlZm9yZVdpZHRoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZID49IGVsZW1lbnRQb3MudG9wICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBlLnBhZ2VZIDw9IGVsZW1lbnRQb3MudG9wICsgYmVmb3JlSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVFeHBhbnNpb24gPSAoJGxpKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRhYmxlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZXhwYW5kTGkodGhhdCwgJGxpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkbGkuaGFzQ2xhc3MoXCJleHBhbmRlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG9nZ2xlIGl0cyBleHBhbmRlZC9jb2xsYXBzZWQgc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS5jaGlsZHJlbihcInVsXCIpLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3dhcCBleHBhbmRhYmxlIGFuZCBleHBhbmRlZCBjbGFzc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAkbGkudG9nZ2xlQ2xhc3MoXCJleHBhbmRhYmxlIGV4cGFuZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCRsaS5jaGlsZHJlbihcInVsXCIpLmNoaWxkcmVuKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGxpLmNoaWxkcmVuKFwidWxcIikudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTd2FwIGV4cGFuZGFibGUgYW5kIGV4cGFuZGVkIGNsYXNzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICRsaS50b2dnbGVDbGFzcyhcImV4cGFuZGFibGUgZXhwYW5kZWRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhhdC4kdHJlZS5vbihcImRibGNsaWNrXCIsIFwibGlcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgJGxpID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzT25MZWZ0U2l6ZSgkbGksIGV2ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5zaW9uKCRsaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICRsaS5kYXRhKFwidmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2UgPSAkbGkuZGF0YShcInJlZmVyZW5jZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlICYmICF0aGF0Lm9wdGlvbnMuaXNTZWxlY3RhYmxlKHJlZmVyZW5jZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC5kYXRhKFwicmVmZXJlbmNlXCIsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9ICgoX2EgPSByZWZlcmVuY2UuZGlzcGxheU5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCAoKF9iID0gcmVmZXJlbmNlLmJyb3dzZU5hbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5uYW1lKSB8fCByZWZlcmVuY2Uubm9kZUlkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGBbJHtkaXNwbGF5TmFtZX1dKCR7dmFsdWV9KWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGF0LiRpbnB1dC52YWwoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC4kaW5wdXQudHJpZ2dlcihcImNoYW5nZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoYXQuJHRyZWUub24oXCJjbGlja1wiLCBcImxpXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0ICRsaSA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09uTGVmdFNpemUoJGxpLCBldmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUV4cGFuc2lvbigkbGkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdFNpbmdsZSh0aGF0LCAkbGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsaWNraW5nIG91dHNpZGUgdGhlIHBhZ2Ugd2lsbCBoaWRlIHRoZSBkcm9wZG93blxuICAgICAgICAgICAgICAgICAgICBpZiAoISQoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoYXQuJGNvbWJvKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuJGRyb3Bkb3duLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGNoZWNrTm9kZUlkID0gKHsgZW5kcG9pbnROb2RlLCBlbmRwb2ludCwgYmFzZVVybCB9LCBub2RlSWQpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCByb290ID0gYCR7YmFzZVVybH0vb3BjdWEtZW5kcG9pbnQyYDtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7cm9vdH0vY2hlY2tOb2RlSWRgO1xuICAgICAgICBjb25zdCBkYXRhID0geWllbGQgZmV0Y2godXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGVuZHBvaW50Tm9kZSxcbiAgICAgICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImZldGNoaW5nIGZhaWxlZCB3aXRoIGVycm9yXCIsIGRhdGEuc3RhdHVzLCBkYXRhLnN0YXR1c1RleHQpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IFwiQmFkXCIsXG4gICAgICAgICAgICAgICAgbm9kZUFkZHJlc3NTdHJpbmc6IG5vZGVJZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZmV0Y2hlZCA6IFwiLCBkYXRhLnN0YXR1cywgZGF0YS5zdGF0dXNUZXh0KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB5aWVsZCBkYXRhLmpzb24oKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gbWFuYWdlQVBJQ2FsbChwcmVmaXgsIGJ0biwgZnVuYywgb25SZXN1bHQpIHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc0ljb24gPSAkKGAjJHtwcmVmaXh9LXN1Y2Nlc3NgKTtcbiAgICAgICAgY29uc3QgZmFpbHVyZUljb24gPSAkKGAjJHtwcmVmaXh9LWZhaWx1cmVgKTtcbiAgICAgICAgY29uc3QgcGVuZGluZ0ljb24gPSAkKGAjJHtwcmVmaXh9LXBlbmRpbmdgKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSAkKGAjJHtwcmVmaXh9LW1lc3NhZ2VzYCk7XG4gICAgICAgIGxldCBhY3Rpb25QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHN1Y2Nlc3NJY29uLmhpZGUoKTtcbiAgICAgICAgZmFpbHVyZUljb24uaGlkZSgpO1xuICAgICAgICBwZW5kaW5nSWNvbi5oaWRlKCk7XG4gICAgICAgIGJ0bi5vbihcImNsaWNrXCIsICgpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3Rpb25QZW5kaW5nKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGFjdGlvblBlbmRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcGVuZGluZ0ljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgcGVuZGluZ0ljb24uaHRtbChcIlRlc3RpbmcgQ29ubmVjdGlvbiAuLi5cIik7XG4gICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBmYWlsdXJlSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICBtZXNzYWdlcy5odG1sKFwiXCIpO1xuICAgICAgICAgICAgY29uc3QgeyBib2R5LCB1cmwgfSA9IGZ1bmMoKTtcbiAgICAgICAgICAgIC8vIHh4IGNvbnNvbGUubG9nKFwieHh4eHhcIiwgYm9keSk7XG4gICAgICAgICAgICBmZXRjaCh1cmwsIHtcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IGRhdGEuanNvbigpKVxuICAgICAgICAgICAgICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdJY29uLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCBcIiBcIikpO1xuICAgICAgICAgICAgICAgIGlmIChqc29uLnJlc3VsdCA9PT0gXCJva1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NJY29uLnJlbW92ZUNsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgZmFpbHVyZUljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5odG1sKGpzb24ubWVzc2FnZS5yZXBsYWNlKFwiXFxuXCIsIFwiPGJyPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0KG51bGwsIGpzb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRhcHQgPSAoc3RyKSA9PiAhc3RyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoYSkgPT4gYDxwPiR7YX08L3A+YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRhcHQyID0gKHN0cikgPT4gKEFycmF5LmlzQXJyYXkoc3RyKSA/IHN0ci5tYXAoYWRhcHQpLmpvaW4oXCJcXG5cIikgOiBhZGFwdChzdHIpKTtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc0ljb24uYWRkQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgICAgICBmYWlsdXJlSWNvbi5yZW1vdmVDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoYWRhcHQyKGpzb24ubWVzc2FnZSkgKyBhZGFwdDIoanNvbi5leHRyYSkpO1xuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdChuZXcgRXJyb3IoanNvbi5yZXN1bHQpLCBqc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uUGVuZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdJY29uLmFkZENsYXNzKFwiaGlkZVwiKTtcbiAgICAgICAgICAgICAgICBzdWNjZXNzSWNvbi5hZGRDbGFzcyhcImhpZGVcIik7XG4gICAgICAgICAgICAgICAgZmFpbHVyZUljb24ucmVtb3ZlQ2xhc3MoXCJoaWRlXCIpO1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmh0bWwoXCJpbnRlcm5hbCBlcnJvciBcIiArIGVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImVyclwiLCBlcnIpO1xuICAgICAgICAgICAgICAgIG9uUmVzdWx0KGVyciwgbnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzID0gKCkgPT4ge1xuICAgICAgICBjb25zdCAkZW5kcG9pbnQgPSAkKFwiI25vZGUtaW5wdXQtZW5kcG9pbnRcIik7XG4gICAgICAgIGNvbnN0IGVuZHBvaW50SWQgPSAkZW5kcG9pbnQudmFsKCk7XG4gICAgICAgIGNvbnN0IHJlZE5vZGUgPSBSRUQubm9kZXMubm9kZShlbmRwb2ludElkKTtcbiAgICAgICAgaWYgKCFyZWROb2RlKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgLy8gY29uc3QgY3JlZGVudGlhbHMgPSBSRUQuKGVuZHBvaW50SWQpO1xuICAgICAgICAvLyB3ZSBuZWVkIHRvIHNhbml0aXplIGFuZCBleHRyYWN0IHRoZSBlbmRwb2ludCBhdHRyaWJ1dGVzIG9ubHkgKCBub3QgdGhlIG5vZGUtcmVkIHN0dWZmKVxuICAgICAgICBjb25zdCB7IGVuZHBvaW50LCBzZWN1cml0eU1vZGUsIHNlY3VyaXR5UG9saWN5LCB1c2VySWRlbnRpdHlUeXBlLCBjcmVkZW50aWFscyB9ID0gcmVkTm9kZTtcbiAgICAgICAgY29uc3QgcmV0VmFsdWUgPSB7XG4gICAgICAgICAgICBlbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5TW9kZSxcbiAgICAgICAgICAgIHNlY3VyaXR5UG9saWN5LFxuICAgICAgICAgICAgdXNlcklkZW50aXR5VHlwZSxcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgICB9O1xuICAgICAgICAvLyB4eCBjb25zb2xlLmxvZyhcInh4eFwiLCByZXRWYWx1ZSk7XG4gICAgICAgIHJldHVybiByZXRWYWx1ZTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbmRwb2ludE5vZGU6IGdldEVuZHBvaW50UGFyYW1ldGVycyxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGdldEVuZHBvaW50UGFyYW1ldGVycyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgJGVuZHBvaW50ID0gJChcIiNub2RlLWlucHV0LWVuZHBvaW50XCIpO1xuICAgICAgICBjb25zdCBlbmRwb2ludElkID0gJGVuZHBvaW50LnZhbCgpO1xuICAgICAgICBjb25zdCBlbmRwb2ludE5yID0gZ2V0RW5kUG9pbnRBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGlmICghZW5kcG9pbnROcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IGVuZHBvaW50SWQsXG4gICAgICAgICAgICAvLyBlbmRwb2ludDogZW5kcG9pbnROci5lbmRwb2ludCxcbiAgICAgICAgICAgIC8vIHNlY3VyaXR5TW9kZTogZW5kcG9pbnROci5zZWN1cml0eU1vZGUsXG4gICAgICAgICAgICAvLyBzZWN1cml0eVBvbGljeTogZW5kcG9pbnROci5zZWN1cml0eVBvbGljeSxcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyB1c2VySWRlbnRpdHlUeXBlOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUsXG4gICAgICAgICAgICAvLyBjcmVkZW50aWFsOiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLFxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIHVzZXJOYW1lOiBlbmRwb2ludE5yLnVzZXJJZGVudGl0eVR5cGUgPT09IFwiVXNlck5hbWVcIiA/IGVuZHBvaW50TnIuY3JlZGVudGlhbHMudXNlck5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAvLyBwYXNzd29yZDogZW5kcG9pbnROci51c2VySWRlbnRpdHlUeXBlID09PSBcIlVzZXJOYW1lXCIgPyBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnBhc3N3b3JkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gdXNlckNlcnRpZmljYXRlOiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJDZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIC8vIHVzZXJQcml2YXRla2V5OiBlbmRwb2ludE5yLmNyZWRlbnRpYWxzLnVzZXJQcml2YXRla2V5LFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBSRUQubm9kZXMucmVnaXN0ZXJUeXBlKFwiT3BjVWEtQ2xpZW50Mi1DYWxsXCIsIHtcbiAgICAgICAgY2F0ZWdvcnk6IFwib3BjdWFcIixcbiAgICAgICAgY29sb3I6IFwiI0MwREVFRFwiLFxuICAgICAgICBhbGlnbjogXCJyaWdodFwiLFxuICAgICAgICBpY29uOiBcIi4uLy4uL2ljb25zL29wY3Vhbm9kZUxvZ28ucG5nXCIsXG4gICAgICAgIHBhbGV0dGVMYWJlbDogXCJjYWxsXCIsXG4gICAgICAgIGRlZmF1bHRzOiB7XG4gICAgICAgICAgICBpbnB1dHM6IHsgdmFsdWU6IDEgfSxcbiAgICAgICAgICAgIG91dHB1dDogeyB2YWx1ZTogNCB9LFxuICAgICAgICAgICAgLy8gQ29tbW9uXG4gICAgICAgICAgICBuYW1lOiB7IHZhbHVlOiBcIlwiIH0sXG4gICAgICAgICAgICBlbmRwb2ludDogeyB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IFwiT3BjVWEtRW5kcG9pbnQyXCIgfSxcbiAgICAgICAgICAgIGFjdGlvbjogeyB2YWx1ZTogXCJyZWFkXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgICAgICAvLyBmb3IgYWN0aW9uIGNhbGxcbiAgICAgICAgICAgIG1ldGhvZElkOiB7IHZhbHVlOiBcIlwiLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgICAgICAgb2JqZWN0SWQ6IHsgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIGlucHV0czosXG4gICAgICAgIG91dHB1dHM6IDIsIC8vIDIgb3V0cHV0LCBzZWNvbmQgZm9yIHJhdyBub2RlLW9wY3VhIGRpYWdub3N0aWNzIG9yIG1vcmUgY29tcGxldGUgbWVzc2FnZVxuICAgICAgICBsYWJlbCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgfHwgXCJPUENVQS1DYWxsXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGxhYmVsU3R5bGUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lID8gXCJub2RlX2xhYmVsX2l0YWxpY1wiIDogXCJcIjtcbiAgICAgICAgfSxcbiAgICAgICAgb25lZGl0cHJlcGFyZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzO1xuICAgICAgICAgICAgZGVjbGFyZU5vZGVCcm93c2VyV2lkZ2V0KCk7XG4gICAgICAgICAgICBub2RlLmlucHV0cyA9IDE7XG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgLy8gaGFuZGxlIFNlY3Rpb24gQ2FsbFxuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGxldCBkYXRhVHlwZXMgPSB7fTtcbiAgICAgICAgICAgIC8vIHRvIGRvIGFkZCBhIHR5cGVzY3JpcHQgZGVmaW5pdGlvbiBmb3IgdGhpc1xuICAgICAgICAgICAgY29uc3QgJG9iamVjdElkID0gJChcIiNub2RlLWlucHV0LW9iamVjdElkXCIpO1xuICAgICAgICAgICAgY29uc3QgJG1ldGhvZElkID0gJChcIiNub2RlLWlucHV0LW1ldGhvZElkXCIpO1xuICAgICAgICAgICAgY29uc3QgJGlucHV0QXJndW1lbnREZWZpbml0aW9uID0gJChcIiNtZXRob2QtaW5wdXQtYXJndW1lbnQtZGVmaW5pdGlvblwiKTtcbiAgICAgICAgICAgIGNvbnN0ICRvdXRwdXRBcmd1bWVudERlZmluaXRpb24gPSAkKFwiI21ldGhvZC1vdXRwdXQtYXJndW1lbnQtZGVmaW5pdGlvblwiKTtcbiAgICAgICAgICAgIGNvbnN0ICR2YWxpZGF0ZUJ0biA9ICQoXCIjdmFsaWRhdGUtY2FsbC1hcmd1bWVudHMtYnV0dG9uXCIpO1xuICAgICAgICAgICAgJG9iamVjdElkLm5vZGVCcm93c2VyKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZ2V0RW5kcG9pbnRQYXJhbWV0ZXJzSGFuZGxlcigpKSwgeyBmaWx0ZXIobm9kZURlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJPYmplY3RcIjtcbiAgICAgICAgICAgICAgICB9IH0pKTtcbiAgICAgICAgICAgICRtZXRob2RJZC5ub2RlQnJvd3NlcihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGdldEVuZHBvaW50UGFyYW1ldGVyc0hhbmRsZXIoKSksIHsgcGFyZW50Tm9kZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1ha2VDb25uZWN0aW9uKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVlZCB0byByZXN5bmMgd2l0aCB3aGF0J3MgaW4gICNub2RlLWlucHV0LW9iamVjdElkXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVmZXJlbmNlID0gJG9iamVjdElkLmRhdGEoXCJyZWZlcmVuY2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVJZEV4ID0gJG9iamVjdElkLnZhbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50Tm9kZSA9IGdldEVuZFBvaW50QXR0cmlidXRlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW5kcG9pbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0geWllbGQgY2hlY2tOb2RlSWQoZGF0YSwgbm9kZUlkRXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSByLnJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sIGZpbHRlcihub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk1ldGhvZFwiIHx8IG5vZGVEZXNjLm5vZGVDbGFzcyA9PT0gXCJPYmplY3RcIjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGlzU2VsZWN0YWJsZShub2RlRGVzYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlc2Mubm9kZUNsYXNzID09PSBcIk1ldGhvZFwiO1xuICAgICAgICAgICAgICAgIH0gfSkpO1xuICAgICAgICAgICAgJG9iamVjdElkLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICAkbWV0aG9kSWQubm9kZUJyb3dzZXIoXCJyZXNldFwiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZnVuY3Rpb24gYWRkQXJndW1lbnRDdHJsKGNvbnRhaW5lciwgaW5kZXgsIGFyZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSAkKCc8ZGl2IGNsYXNzPVwiYXJndW1lbnQtZW50cnlcIj4nKS5hcHBlbmRUbyhjb250YWluZXIpO1xuICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5lci5kYXRhKFwiZGF0YVwiLCBhcmcpO1xuICAgICAgICAgICAgICAgICQoJzxpbnB1dCB0eXBlPVwidGV4dFwiPicpXG4gICAgICAgICAgICAgICAgICAgIC52YWwoYXJnLm5hbWUgfHwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLmNzcyh7IHdpZHRoOiBcIjEwMCVcIiB9KVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oaXRlbSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGRhdGFUeXBlc1thcmcuZGF0YVR5cGUudG9TdHJpbmcoKV07XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVR5cGVOID0gKGQgPyBkLmJyb3dzZU5hbWUubmFtZSB8fCBcIlwiIDogYXJnLmRhdGFUeXBlLnRvU3RyaW5nKCkpICsgKGFyZy52YWx1ZVJhbmsgPT09IDEgPyBcIltdXCIgOiBcIlwiKTtcbiAgICAgICAgICAgICAgICAkKCc8aW5wdXQgdHlwZT1cInRleHRcIj4nKVxuICAgICAgICAgICAgICAgICAgICAudmFsKGFyZy5kZXNjcmlwdGlvbi50ZXh0IHx8IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIC5jc3MoeyB3aWR0aDogXCI1MCVcIiB9KVxuICAgICAgICAgICAgICAgICAgICAuYXBwZW5kVG8oaXRlbSk7XG4gICAgICAgICAgICAgICAgJCgnPGlucHV0IHR5cGU9XCJ0ZXh0XCI+JylcbiAgICAgICAgICAgICAgICAgICAgLnZhbChkYXRhVHlwZU4gfHwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLmNzcyh7IHdpZHRoOiBcIjUwJVwiIH0pXG4gICAgICAgICAgICAgICAgICAgIC5hcHBlbmRUbyhpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRpbnB1dEFyZ3VtZW50RGVmaW5pdGlvbi5lZGl0YWJsZUxpc3Qoe1xuICAgICAgICAgICAgICAgIGFkZEJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICBzY3JvbGxPbkFkZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYWRkSXRlbShjb250YWluZXIsIGksIG9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBhZGRBcmd1bWVudEN0cmwoY29udGFpbmVyLCBpLCBvYmplY3QpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICRvdXRwdXRBcmd1bWVudERlZmluaXRpb24uZWRpdGFibGVMaXN0KHtcbiAgICAgICAgICAgICAgICBhZGRCdXR0b246IGZhbHNlLFxuICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgc2Nyb2xsT25BZGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFkZEl0ZW0oY29udGFpbmVyLCBpLCBvYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkQXJndW1lbnRDdHJsKGNvbnRhaW5lciwgaSwgb2JqZWN0KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmdW5jdGlvbiBpbnN0YWxsQXJndW1lbnRMaXN0KGxpc3QsIG1ldGhvZEFyZ3VtZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiaW5zdGFsbEFyZ3VtZW50TGlzdFwiLCBtZXRob2RBcmd1bWVudHMubGVuZ3RoLCBcImFyZ3VtZW50c1wiLCBtZXRob2RBcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGxpc3QuZWRpdGFibGVMaXN0KFwiZW1wdHlcIik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZXRob2RBcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5lZGl0YWJsZUxpc3QoXCJhZGRJdGVtXCIsIG1ldGhvZEFyZ3VtZW50c1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGlucHV0QXJndW1lbnREZWZpbml0aW9uLmhpZGUoKTtcbiAgICAgICAgICAgICRvdXRwdXRBcmd1bWVudERlZmluaXRpb24uaGlkZSgpO1xuICAgICAgICAgICAgbGV0IGlucHV0QXNKc29uID0ge307XG4gICAgICAgICAgICBjb25zdCAkY29weUlucHV0ID0gJChcIiNjb3B5LWlucHV0XCIpO1xuICAgICAgICAgICAgJGNvcHlJbnB1dC5oaWRlKCk7XG4gICAgICAgICAgICAkY29weUlucHV0Lm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIENvcHkgdGhlIHRleHQgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkXG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoSlNPTi5zdHJpbmdpZnkoaW5wdXRBc0pzb24pKTtcbiAgICAgICAgICAgICAgICAvLyBhbGVydChKU09OLnN0cmluZ2lmeShpbnB1dEFzSnNvbikgKyBcIiBjb3BpZWQgdG8gY2xpcGJvYXJkXCIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYW5hZ2VBUElDYWxsKFwidmFsaWRhdGVcIiwgJHZhbGlkYXRlQnRuLCAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIHVybDogXCIvb3BjdWEtZW5kcG9pbnQyL2FyZ3VtZW50RGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnROb2RlOiBnZXRFbmRwb2ludFBhcmFtZXRlcnMoKSxcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0SWQ6ICRvYmplY3RJZC52YWwoKSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kSWQ6ICRtZXRob2RJZC52YWwoKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksIChlcnIsIGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcG9wdWxhdGUgdGhlIGxpc3RcbiAgICAgICAgICAgICAgICBjb25zdCBhcmd1bWVudERlZmluaXRpb24gPSBkYXRhLmFyZ3VtZW50RGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICBkYXRhVHlwZXMgPSBkYXRhLmRhdGFUeXBlcztcbiAgICAgICAgICAgICAgICAkaW5wdXRBcmd1bWVudERlZmluaXRpb24uc2hvdygpO1xuICAgICAgICAgICAgICAgICRvdXRwdXRBcmd1bWVudERlZmluaXRpb24uc2hvdygpO1xuICAgICAgICAgICAgICAgIGluc3RhbGxBcmd1bWVudExpc3QoJGlucHV0QXJndW1lbnREZWZpbml0aW9uLCBhcmd1bWVudERlZmluaXRpb24uaW5wdXRBcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIGluc3RhbGxBcmd1bWVudExpc3QoJG91dHB1dEFyZ3VtZW50RGVmaW5pdGlvbiwgYXJndW1lbnREZWZpbml0aW9uLm91dHB1dEFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgaW5wdXRBc0pzb24gPSBkYXRhLmlucHV0QXJndW1lbnRzRXhhbXBsZUFzSnNvbiB8fCB7fTtcbiAgICAgICAgICAgICAgICAkY29weUlucHV0LnNob3coKTtcbiAgICAgICAgICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChKU09OLnN0cmluZ2lmeShpbnB1dEFzSnNvbikpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiSlNPTlwiLCBKU09OLnN0cmluZ2lmeShpbnB1dEFzSnNvbikpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZGF0YVwiLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBvbmVkaXRzYXZlKCkgeyB9LFxuICAgIH0pO1xuXG59KSgpOyJdfQ==
|
9
9
|
</script>
|
10
10
|
<script type="text/x-red" data-template-name="OpcUa-Client2-Call">
|
11
11
|
<div class="form-row">
|