@vgroup/dialbox 0.2.87 → 0.2.88
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.
|
@@ -462,7 +462,7 @@ export class CallProgressComponent {
|
|
|
462
462
|
hold: true
|
|
463
463
|
});
|
|
464
464
|
// Put current call on hold
|
|
465
|
-
this.heldCall =
|
|
465
|
+
this.heldCall = this.call;
|
|
466
466
|
this.isCallOnHold = true;
|
|
467
467
|
this.heldCall.mute(true);
|
|
468
468
|
// Close contacts panel and show ring animation
|
|
@@ -886,4 +886,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
886
886
|
}], incomingCallInitiated: [{
|
|
887
887
|
type: Output
|
|
888
888
|
}] } });
|
|
889
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbC1wcm9ncmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2NhbGwtcHJvZ3Jlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGlhbGJveC9zcmMvbGliL2NvbXBvbmVudHMvY2FsbC1wcm9ncmVzcy9jYWxsLXByb2dyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFRLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBcUI5QyxNQUFNLE9BQU8scUJBQXFCO0lBZ0RoQyxzQkFBc0I7SUFDdEIsc0ZBQXNGO0lBQ3RGLDhGQUE4RjtJQUM5RixrR0FBa0c7SUFDbEcsNkVBQTZFO0lBQzdFLDhGQUE4RjtJQUM5Riw2RUFBNkU7SUFDN0UsS0FBSztJQUNMLFlBQW9CLGdCQUFrQyxFQUFVLEdBQXNCLEVBQVUsYUFBNEI7UUFBeEcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFyRG5ILHlCQUFvQixHQUFLLEVBQUUsQ0FBQztRQUUzQixpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzVE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QUFFO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxJQUFRO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxJQUFRO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7bUhBcDdCVSxxQkFBcUI7dUdBQXJCLHFCQUFxQix5WUM3QmxDLHN0cEJBK1hNOzRGRGxXTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO21LQUtwQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQW1CRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGwsIERldmljZSB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFR3aWxpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3R3aWxpby5zZXJ2aWNlJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBrZXlwYWQgfSBmcm9tICcuLi8uLi8uLi9rZXlwYWQnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5cblxuaW50ZXJmYWNlIENhbGxEZXRhaWxzIHtcbiAgY2FsbFNpZDogc3RyaW5nO1xuICBjYWxsU3RhdHVzOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQ2FsbFN0YXR1c1Jlc3BvbnNlIHtcbiAgY2FsbERldGFpbHM6IENhbGxEZXRhaWxzO1xuICByZXNwb25zZTogc3RyaW5nO1xuICBlcnJvclR5cGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNhbGwtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsbC1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGwtcHJvZ3Jlc3MuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhbGxQcm9ncmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY2FsbERhdGE6IGFueTtcbiAgQElucHV0KCkgbmV3SW5jb21pbmdDYWxsRGF0YT86Q2FsbDtcbiAgQElucHV0KCkgbmV3SW5jb21pbmdDYWxsc0xpc3Q6YW55PVtdO1xuICBASW5wdXQoKSBkZXZpY2VJZDphbnk7XG4gIEBPdXRwdXQoKSBlbmRDYWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGluY29taW5nQ2FsbHNOZXdJbmZvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBcbiAgQE91dHB1dCgpIG1pbmltaXNlRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgZGV2aWNlPzogRGV2aWNlO1xuICBjYWxsPzogQ2FsbCB8IGFueTtcbiAgc2hvd1JpbmdBbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGltZXI6IHN0cmluZyA9ICcwMDowMCc7XG4gIGludGVydmFsSWQ6IGFueTtcbiAgc2hvd0tleXBhZDogYm9vbGVhbiA9IGZhbHNlO1xuICBrZXlwYWRWYWwgPSBrZXlwYWQ7XG4gIGNhbGxJbnB1dDogc3RyaW5nID0gJyc7XG4gIGlzTXV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNiYWxlRW5kQ2FsbEJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dDbGVhckJ0bjpib29sZWFuID0gZmFsc2U7XG4gIGlzQ29sbG9wcz0gZmFsc2U7XG4gIC8vIENvbmZlcmVuY2Ugc3RhdGUgZmxhZ1xuICBpc0NvbmZlcmVuY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNPdXRnb2luZ0NhbGw6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyBJbmNvbWluZyBjYWxsIHZhcmlhYmxlc1xuICBpbmNvbWluZ0NhbGxEaXY6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy9AT3V0cHV0KCkgc2hvd0NhbGxQcm9ncmVzc0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxJbml0aWF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBSZWNvcmRpbmcgdmFyaWFibGVzXG4gIGNhbGxTaWQ6IGFueTtcbiAgaXNSZWNvcmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNQYXVzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGltZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHRpbWVFbGFwc2VkID0gMDsgLy8gaW4gc2Vjb25kc1xuICByZWNvcmRDYWxsOiBib29sZWFuID0gZmFsc2U7XG4gIGluY29taW5nQ2FsbFNpZDogYW55O1xuICBjYWxsU3RhdHVzOiBzdHJpbmcgPSAncmluZ2luZyc7XG4gIGluY29taW5nUmVjb3JkQ2FsbD86IGFueTtcbiAgc2VsZWN0ZWRJbmNvbWluZ0NhbGw6IGFueTtcbiAgc2hvd0NvbnRhY3RzUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBZGRSZW1vdmVQYXJ0aWNpcGFudDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvbmN1cnJlbnRJbmNvbWluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBoZWxkQ2FsbD86IENhbGwgfCBhbnk7XG4gIGlzQ2FsbE9uSG9sZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb250YWN0czogYW55IFtdID0gW107XG4gIGNvbmZlcmVuY2VJZDogYW55O1xuICBhbGxQYXJ0aWNpcGVudExpc3Q6IGFueTtcbiAgLy8gY29udGFjdHM6IGFueVtdID0gW1xuICAvLyAgIHsgbmFtZTogJ1BhbWVsYSBDb3gnLCB0aXRsZTogJ1Byb2R1Y3QgRGVzaWduZXInLCBpbWc6ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJyB9LFxuICAvLyAgIHsgbmFtZTogJ1JvZ2VyIFMuIFdvb2QnLCB0aXRsZTogJ0phdmFTY3JpcHQgUHJvZ3JhbW1lcicsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH0sXG4gIC8vICAgeyBuYW1lOiAnVmljdG9yIEJsYWNrc3RvbicsIHRpdGxlOiAnRGF0YWJhc2UgQWRtaW5pc3RyYXRvcicsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH0sXG4gIC8vICAgeyBuYW1lOiAnVGFtbXkgUmlvcycsIHRpdGxlOiAnU3VwcG9ydCcsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH0sXG4gIC8vICAgeyBuYW1lOiAnQ2FybG9zIEhlbmRlcnNvbicsIHRpdGxlOiAnU29mdHdhcmUgQXJjaGl0ZWN0JywgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycgfSxcbiAgLy8gICB7IG5hbWU6ICdFbGl6YWJldGggQmFpbGV5JywgdGl0bGU6ICdIUicsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH1cbiAgLy8gXTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdHdpbGlvU2VydmljZTogVHdpbGlvU2VydmljZSkgeyBcbiAgICBjb25zb2xlLmxvZygnQ2FsbCBQcm9ncmVzcyBDb21wb25lbnQnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUubG9nKCdDYWxsIFByb2dyZXNzIENvbXBvbmVudCBuZ09uSW5pdCcpO1xuICAgIC8vIFN1YnNjcmliZSB0byBpbmNvbWluZyBjYWxscyBmcm9tIFR3aWxpb1NlcnZpY2VcbiAgICB0cnkge1xuICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmN1cnJlbnRDYWxsLnN1YnNjcmliZSgoaW5jb21pbmc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWluY29taW5nKSB7IHJldHVybjsgfVxuICAgICAgICBjb25zb2xlLmxvZygnVHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbCBlbWl0dGVkOicsIGluY29taW5nKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0N1cnJlbnQgY2FsbCBzdGF0dXM6JywgdGhpcy5jYWxsPy5zdGF0dXMoKSk7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIG9uZ29pbmcgY2FsbCwgc2hvdyBjb25jdXJyZW50IGluY29taW5nIGJhbm5lclxuICAgICAgICBpZiAodGhpcy5jYWxsICYmIHRoaXMuY2FsbC5zdGF0dXMoKSA9PT0gJ29wZW4nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0NvbmN1cnJlbnQgaW5jb21pbmcgZGV0ZWN0ZWQgLSBzaG93aW5nIGJhbm5lcicpO1xuICAgICAgICAgIHRoaXMuaXNDb25jdXJyZW50SW5jb21pbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gdHJ1ZTtcbiAgICAgICAgICAvLyBBZGQgdG8gbGlzdCBpZiBub3QgcHJlc2VudFxuICAgICAgICAgIGNvbnN0IGV4aXN0cyA9ICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0IHx8IFtdKS5zb21lKChjOiBhbnkpID0+IGM/LnBhcmFtZXRlcnM/LkNhbGxTaWQgPT09IGluY29taW5nPy5wYXJhbWV0ZXJzPy5DYWxsU2lkKTtcbiAgICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IFsuLi4odGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCB8fCBbXSksIGluY29taW5nXTtcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm8uZW1pdCh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJzY3JpYmluZyB0byBpbmNvbWluZyBjYWxsczonLCBlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7ICAgIFxuICAgIGNvbnNvbGUubG9nKCdDYWxsIFByb2dyZXNzIENvbXBvbmVudCBuZ09uQ2hhbmdlcycpO1xuICAgIGlmIChjaGFuZ2VzWydjYWxsRGF0YSddKSB7ICAgICAgXG4gICAgICBpZiAoY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWU/LmlzSW5jb21pbmdDYWxsKSB7XG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jYWxsWydjYWxsSW5mbyddPSB7Li4udGhpcy5jYWxsRGF0YX07XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgXG4gICAgICB9IGVsc2UgaWYoY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWU/LmRpc3BsYXlOdW0gfHwgY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWU/LmZyb20pIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3Rlc3Qtc3RhcnRDYWxsMTIzJylcbiAgICAgICAgdGhpcy5zdGFydENhbGwoY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snbmV3SW5jb21pbmdDYWxsRGF0YSddKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoY2hhbmdlc1snbmV3SW5jb21pbmdDYWxsRGF0YSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYW4gYWN0aXZlIG9uZ29pbmcgY2FsbFxuICAgICAgICAgIGlmICh0aGlzLmNhbGwgJiYgKHRoaXMuY2FsbC5zdGF0dXMoKSA9PSAnb3BlbicpKSB7XG4gICAgICAgICAgICAvLyBDb25jdXJyZW50IGluY29taW5nIC0gc2hvdyBiYW5uZXIgb24gdG9wIG9mIGFjdGl2ZSBjYWxsXG4gICAgICAgICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGluYyA9IGNoYW5nZXNbJ25ld0luY29taW5nQ2FsbERhdGEnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCAmJiBBcnJheS5pc0FycmF5KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3Quc29tZSgoYzogYW55KSA9PiBjPy5wYXJhbWV0ZXJzPy5DYWxsU2lkID09PSBpbmM/LnBhcmFtZXRlcnM/LkNhbGxTaWQpO1xuICAgICAgICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCwgaW5jXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNOZXdJbmZvLmVtaXQodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSBbaW5jXTtcbiAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3SW5mby5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBQdXJlIGluY29taW5nIC0gc2hvdyBmdWxsIGluY29taW5nIFVJXG4gICAgICAgICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbERpdiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgLy8gfSwgMzAwMCk7XG5cbiAgIH1cblxuICBHZXRDb250YWN0c0xpc3QoKSB7ICBcbiAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfHwgJyc7XG4gIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5yZWFkQ29udGFjdHModG9rZW4pLnN1YnNjcmliZShcbiAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdBUEkgUmVzcG9uc2U6JywgcmVzKTtcblxuICAgICAgLy8gTm90ZTogQ2FwaXRhbCBCIGluIHBob25lQm9va1xuICAgICAgaWYgKHJlcyAmJiByZXMucGhvbmVCb29rKSB7XG4gICAgICAgIHRoaXMuY29udGFjdHMgPSByZXMucGhvbmVCb29rO1xuICAgICAgICBjb25zb2xlLmxvZygnQ29udGFjdHMgYXJyYXk6JywgdGhpcy5jb250YWN0cyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICB0aGlzLmNvbnRhY3RzID0gcmVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250YWN0cyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZygnQ29udGFjdHMgYXJyYXk6JywgdGhpcy5jb250YWN0cyk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSxcbiAgICAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbnRhY3RzOicsIGVycm9yKTtcbiAgICAgIHRoaXMuY29udGFjdHMgPSBbXTtcbiAgICB9XG4gICk7XG59XG5hZGRSZXM6IGFueTtcbiAgYXN5bmMgc3RhcnRDYWxsKGNhbGxEYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhjYWxsRGF0YSwgJ2NhbGxEYXRhJyk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSB0cnVlO1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgY2hhbm5lbElkOiBlbnZpcm9ubWVudC5jaGFubmVsSWQsXG4gICAgICAgIHVzZXJJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpLFxuICAgICAgICB0bzogY2FsbERhdGEucGhvbmUsXG4gICAgICAgIGZyb21OdW1iZXI6IGNhbGxEYXRhLmZyb20sXG4gICAgICAgIHNjb3BlOiAnbG9jYWwnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmluaXRpYXRlQ2FsbChwYXlsb2FkKTtcbiAgICAgIHRoaXMuY29uZmVyZW5jZUlkID0gcmVzcG9uc2U/LmNhbGxhdXRoPy5pZDtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IHsgaWQ6IGNhbGxBdXRoSWQsIHJlY29yZENhbGwgfSA9IGF3YWl0IHRoaXMuZ2V0Q2FsbEF1dGhJZChyZXNwb25zZSk7XG4gICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGNhbGxBdXRoSWQpXG4gICAgICAgIHRoaXMucmVjb3JkQ2FsbCA9IHJlY29yZENhbGw7IC8vIFN0b3JlIHRoZSByZWNvcmRDYWxsIHZhbHVlXG4gICAgICAgIGNvbnN0IHRva2VuRGF0YTogYW55ID0gYXdhaXQgdGhpcy5nZXRPdXRnb2luZ0NhbGxUb2tlbihjYWxsQXV0aElkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0VG9EZXZpY2UodG9rZW5EYXRhLnRva2VuLCBjYWxsRGF0YSk7XG4gICAgICAgIGF3YWl0IHRoaXMucG9sbENhbGxTdGF0dXMoY2FsbEF1dGhJZCk7XG5cbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKT0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5hZGRSZXMgPSBhd2FpdCB0aGlzLmFkZFBhcnRpY2lwYW50VG9DYWxsKHtcbiAgICAgICAgICAgICAgZnJvbTogY2FsbERhdGE/LmZyb20sIFxuICAgICAgICAgICAgICByb3V0ZTogXCJPVVRHT0lOR1wiLCBcbiAgICAgICAgICAgICAgcGFydGljaXBhbnROdW1iZXI6IGNhbGxEYXRhPy5waG9uZSwgXG4gICAgICAgICAgICAgIGNvbmZlcmVuY2VJZDogdGhpcy5jb25mZXJlbmNlSWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YSA9IHsgLi4udGhpcy5jYWxsRGF0YSwgcGFydGljaXBhbnRJZDogdGhpcy5hZGRSZXM/LnBhcnRpY2lwYW50SWQgfTtcbiAgICAgICAgICAgIHRoaXMuY2FsbFsnY2FsbEluZm8nXT0gey4uLnRoaXMuY2FsbERhdGF9O1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0luaXRpYWwgcGFydGljaXBhbnRJZDonLCB0aGlzLmFkZFJlcz8ucGFydGljaXBhbnRJZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWRkaW5nIGluaXRpYWwgcGFydGljaXBhbnQ6JywgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKVxuICAgICAgICAvLyBQb2xsIHRoZSBzdGF0dXMgZm9yIDMwLTQ1IHNlY29uZHNcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMSkge1xuICAgICAgICBzd2FsKFwiRXJyb3JcIiwgcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyLz5cIiksIFwiZXJyb3JcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0MicpXG4gICAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgICAgfVxuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgY29uc29sZS5sb2coJ3Rlc3QzJylcbiAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSG9sZENhbGwoYzphbnkpe1xuICAgIGNvbnNvbGUubG9nKGMsJ2RzZHNkc2RzZHNkc2Fkc2EnKTtcbiAgICB0aGlzLm9uaG9sZE9yVW5ob2xkUGFydGljaXBhbnQoe1xuICAgICAgcGFydGljaXBhbnRJZDogYy5wYXJ0aWNpcGFudElkLFxuICAgICAgY29uZmVyZW5jZUlkOiB0aGlzLmNvbmZlcmVuY2VJZCxcbiAgICAgIGhvbGQ6IHRydWVcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgb25FbmRDYWxsKGM6YW55KXtcbiAgICBjb25zb2xlLmxvZyhjLCdkc2RzZHNkc2RzZHNhZHNhJyk7XG4gICAgYXdhaXQgdGhpcy5nZXRSZW1vdmVQYXJ0aWNpcGFudHMoYy5wYXJ0aWNpcGFudElkLHRoaXMuY29uZmVyZW5jZUlkKTtcbiAgICBhd2FpdCB0aGlzLmdldEFsbFBhcnRpY2lwYW50cyh0aGlzLmNvbmZlcmVuY2VJZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYXRlQ2FsbChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmluaXRpYXRlQ2FsbChwYXlsb2FkKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gICBhc3luYyBvbmhvbGRPclVuaG9sZFBhcnRpY2lwYW50KHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4dGVuc2lvblNlcnZpY2UuaG9sZFBhcnRpY2lwYW50KHBheWxvYWQpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRQYXJ0aWNpcGFudFRvQ2FsbChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmFkZFBhcnRpY2lwYW50KHBheWxvYWQpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDYWxsU3RhdHVzT2ZQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZDphbnkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENhbGxTdGF0dXNPZlBhcnRpY2lwYW50cyhwYXJ0aWNpcGFudElkKS50b1Byb21pc2UoKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBnZXRSZW1vdmVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZDphbnksY29uZmVyZW5jZUlkOmFueSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0UmVtb3ZlUGFydGljaXBhbnRzKHBhcnRpY2lwYW50SWQsY29uZmVyZW5jZUlkKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2FsbEF1dGhJZChyZXNwb25zZTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiByZXNwb25zZS5jYWxsYXV0aC5pZCxcbiAgICAgIHJlY29yZENhbGw6IHJlc3BvbnNlLmNhbGxhdXRoLnJlY29yZENhbGxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRPdXRnb2luZ0NhbGxUb2tlbihjYWxsQXV0aElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENvbmZlcmVuY2VDYWxsVG9rZW4oeyBhdXRoSWQ6IGNhbGxBdXRoSWQgfSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RUb0RldmljZSh0b2tlbjogYW55LCBjYWxsRGF0YTogYW55KSB7XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgY29kZWNQcmVmZXJlbmNlczogWydvcHVzJywgJ3BjbXUnXSxcbiAgICAgIGNsb3NlUHJvdGVjdGlvbjogdHJ1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy5kZXZpY2UgPSBuZXcgRGV2aWNlKHRva2VuLnZhbHVlLCBvcHRpb25zKTtcbiAgICB0aGlzLmNhbGwgPSBhd2FpdCB0aGlzLmRldmljZS5jb25uZWN0KHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBGcm9tOiBjYWxsRGF0YS5mcm9tLFxuICAgICAgICBUbzogY2FsbERhdGEucGhvbmUsXG4gICAgICAgIEVudjogZW52aXJvbm1lbnQuYWJiLFxuICAgICAgICBUb2tlbjogdG9rZW4uaWQsXG4gICAgICAgIEV4dDogY2FsbERhdGEuZXh0TnVtXG4gICAgICB9LFxuICAgICAgcnRjQ29uc3RyYWludHM6IHsgYXVkaW86IHsgZGV2aWNlSWQ6ICdkZWZhdWx0JyB9IH0sXG4gICAgfSk7XG4gICAgdGhpcy5jYWxsWydjYWxsSW5mbyddID0gY2FsbERhdGE7XG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKSB7XG5cbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB0aGlzLmRldmljZT8ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbGw/Lm9uKCdlcnJvcicsIChlcnJvcjphbnkpID0+IHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbGw/Lm9uKCdkaXNjb25uZWN0JywgKGl0ZW06YW55KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygndGVzdC1kaXNjb25uZWN0JylcbiAgICAgIC8vIHRoaXMuZW5kQ2FsbCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYWxsPy5vbigncmluZ2luZycsICgpID0+IHtcbiAgICB9KTtcblxuICAgIHRoaXMuY2FsbD8ub24oJ3JlamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCd0ZXN0NScpXG4gICAgICB0aGlzLmVuZENhbGwoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2FsbD8ub24oJ2FjY2VwdCcsICgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZGlzYmFsZUVuZENhbGxCdG4gPSBmYWxzZTtcbiAgICAgIC8vIFN0YXJ0IHJlY29yZGluZyBpZiByZWNvcmRDYWxsIGlzIHRydWUgYW5kIGNhbGwgaXMgYWNjZXB0ZWQgZm9yIDMwIHNlY29uZHNcbiAgICAgIC8vIGlmICh0aGlzLnJlY29yZENhbGwpIHtcbiAgICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyAgICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcpIHJldHVybjsgLy8gSWYgYWxyZWFkeSByZWNvcmRpbmcsIHNraXBcbiAgICAgIC8vICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgICAvLyAgIH0sIDMwMDAwKTtcbiAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAvLyAgIHRoaXMuc3RvcFJlY29yZGluZygpO1xuICAgICAgLy8gfVxuICAgIH0pO1xuICAgIHRoaXMuY2FsbD8ub24oJ21lc3NhZ2VSZWNlaXZlZCcsIChtZXNzYWdlOmFueSkgPT4ge1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFRpbWVyKCkge1xuICAgIGxldCBzZWNvbmRzID0gMDtcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzZWNvbmRzKys7XG4gICAgICB0aGlzLnRpbWVyID0gdGhpcy5mb3JtYXRUaW1lKHNlY29uZHMpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGltZXIoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xuICAgIHRoaXMudGltZXIgPSAnMDA6MDAnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRvdGFsU2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHt0aGlzLnBhZChtaW51dGVzKX06JHt0aGlzLnBhZChzZWNvbmRzKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlIDwgMTAgPyBgMCR7dmFsdWV9YCA6IGAke3ZhbHVlfWA7XG4gIH1cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KSB7XG4gICAgc3dhbChcIkVycm9yXCIsIGVycm9yLCBcImVycm9yXCIpO1xuICB9XG5cbiAgLy8gZW5kQ2FsbCgpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnZW5kQ2FsbCgpIGNhbGxlZCcpO1xuICAvLyAgIGNvbnNvbGUubG9nKCdDdXJyZW50IGNhbGw6JywgdGhpcy5jYWxsPy5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuICAvLyAgIGNvbnNvbGUubG9nKCdIZWxkIGNhbGwgZXhpc3RzOicsICEhdGhpcy5oZWxkQ2FsbCk7XG4gICAgXG4gIC8vICAgLy8gRGlzY29ubmVjdCB0aGUgY3VycmVudCBhY3RpdmUgY2FsbFxuICAvLyAgIGlmICh0aGlzLmNhbGwpIHtcbiAgLy8gICAgIHRoaXMuY2FsbC5kaXNjb25uZWN0KCk7XG4gIC8vICAgICB0aGlzLmNhbGwgPSB1bmRlZmluZWQ7XG4gIC8vICAgfVxuXG4gIC8vICAgdGhpcy5zaG93UmluZ0FuaW1hdGlvbiA9IGZhbHNlO1xuICAvLyAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgXG4gIC8vICAgLy8gSWYgdGhlcmUncyBhIGhlbGQgY2FsbCwgbWFrZSBpdCBhY3RpdmVcbiAgLy8gICBpZiAodGhpcy5oZWxkQ2FsbCkge1xuICAvLyAgICAgY29uc29sZS5sb2coJ1Jlc3VtaW5nIGhlbGQgY2FsbDonLCB0aGlzLmhlbGRDYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXSk7XG4gICAgICBcbiAgLy8gICAgIC8vIE1ha2UgaGVsZCBjYWxsIHRoZSBhY3RpdmUgY2FsbFxuICAvLyAgICAgdGhpcy5jYWxsID0gdGhpcy5oZWxkQ2FsbDtcbiAgLy8gICAgIHRoaXMuaGVsZENhbGwgPSB1bmRlZmluZWQ7XG4gIC8vICAgICAvLyB0aGlzLmlzQ2FsbE9uSG9sZCA9IGZhbHNlO1xuICAvLyAgICAgdGhpcy5pc0NhbGxPbkhvbGQgPSAhIXRoaXMuaGVsZENhbGw7XG5cbiAgICAgIFxuICAvLyAgICAgLy8gVW5tdXRlIHRoZSByZXN1bWVkIGNhbGxcbiAgLy8gICAgIHRoaXMuY2FsbC5tdXRlKGZhbHNlKTtcbiAgICAgIFxuICAvLyAgICAgLy8gVXBkYXRlIFVJIHdpdGggdGhlIHJlc3VtZWQgY2FsbCBpbmZvXG4gIC8vICAgICBjb25zdCBmcm9tTnVtYmVyID0gdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgLy8gICAgIGNvbnN0IGNhbGxlck5hbWUgPSB0aGlzLmNhbGwuY3VzdG9tUGFyYW1ldGVycz8uZ2V0KCduYW1lJykgfHwgJy0nO1xuICAvLyAgICAgY29uc3QgY2FsbGVySW1nID0gdGhpcy5jYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgICBcbiAgLy8gICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gIC8vICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gIC8vICAgICAgIHBob25lOiBmcm9tTnVtYmVyLFxuICAvLyAgICAgICBkaXNwbGF5TnVtOiBmcm9tTnVtYmVyLFxuICAvLyAgICAgICBuYW1lOiBjYWxsZXJOYW1lLFxuICAvLyAgICAgICBpbWc6IGNhbGxlckltZ1xuICAvLyAgICAgfTtcbiAgICAgIFxuICAvLyAgICAgLy8gUmVzdGFydCB0aW1lciBmb3IgdGhlIHJlc3VtZWQgY2FsbFxuICAvLyAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gIC8vICAgICB0aGlzLmRpc2JhbGVFbmRDYWxsQnRuID0gZmFsc2U7XG4gICAgICBcbiAgLy8gICAgIGNvbnNvbGUubG9nKCdIZWxkIGNhbGwgaXMgbm93IGFjdGl2ZTonLCB0aGlzLmNhbGxEYXRhKTtcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgLy8gTm8gaGVsZCBjYWxsLCBjb21wbGV0ZWx5IGVuZFxuICAvLyAgICAgY29uc29sZS5sb2coJ05vIGhlbGQgY2FsbCwgZW5kaW5nIGNvbXBsZXRlbHknKTtcbiAgLy8gICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgLy8gICAgIHRoaXMubWF4aW1pc2VEaWFscGFkKCk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgZW5kQ2FsbCgpIHtcbiAgICBjb25zb2xlLmxvZygnZW5kQ2FsbCgpIGNhbGxlZCcpO1xuICAgIGNvbnNvbGUubG9nKCdDdXJyZW50IGNhbGw6JywgdGhpcy5jYWxsPy5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuICAgIGNvbnNvbGUubG9nKCdIZWxkIGNhbGwgZXhpc3RzOicsICEhdGhpcy5oZWxkQ2FsbCk7XG4gICAgLy8gTGVhdmluZyBjb25mZXJlbmNlIHN0YXRlIHdoZW4gZW5kaW5nIGN1cnJlbnQgY2FsbCBhY3Rpb25cbiAgICB0aGlzLmlzQ29uZmVyZW5jZSA9IGZhbHNlO1xuXG4gICAgLy8gaWYgKHRoaXMuY2FsbCkge1xuICAgIC8vICAgICB0aGlzLmNhbGwuZGlzY29ubmVjdCgpO1xuICAgIC8vICAgICB0aGlzLmNhbGwucmVqZWN0KCk7XG4gICAgLy8gICAgIHRoaXMuY2FsbCA9IHVuZGVmaW5lZDtcbiAgICAvLyB9XG5cbiAgICB0aGlzLnNob3dSaW5nQW5pbWF0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcblxuICAgIGlmICh0aGlzLmhlbGRDYWxsKSB7XG4gICAgICBpZiAodGhpcy5jYWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGwuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5jYWxsID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdSZXN1bWluZyBoZWxkIGNhbGw6JywgdGhpcy5oZWxkQ2FsbC5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuXG4gICAgICAgIC8vIFByb21vdGUgaGVsZCBjYWxsXG4gICAgICAgIHRoaXMuY2FsbCA9IHRoaXMuaGVsZENhbGw7XG4gICAgICAgIHRoaXMuaGVsZENhbGwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7IC8vIEVuc3VyZSBVSSByZW5kZXJzXG5cbiAgICAgICAgdGhpcy5jYWxsLm11dGUoZmFsc2UpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBjYWxsRGF0YVxuICAgICAgICBjb25zdCBmcm9tTnVtYmVyID0gdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgICAgICAgY29uc3QgY2FsbGVyTmFtZSA9IHRoaXMuY2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ25hbWUnKSB8fCAnLSc7XG4gICAgICAgIGNvbnN0IGNhbGxlckltZyA9IHRoaXMuY2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ2ltYWdlJykgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xuXG4gICAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gICAgICAgICAgICBwaG9uZTogZnJvbU51bWJlcixcbiAgICAgICAgICAgIGRpc3BsYXlOdW06IGZyb21OdW1iZXIsXG4gICAgICAgICAgICBuYW1lOiBjYWxsZXJOYW1lLFxuICAgICAgICAgICAgaW1nOiBjYWxsZXJJbWdcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICAgICAgdGhpcy5kaXNiYWxlRW5kQ2FsbEJ0biA9IGZhbHNlO1xuXG4gICAgICAgIC8vIEZvcmNlIFVJIHVwZGF0ZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJ0hlbGQgY2FsbCBpcyBub3cgYWN0aXZlOicsIHRoaXMuY2FsbERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBoZWxkIGNhbGwsIGVuZGluZyBjb21wbGV0ZWx5Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0NicpXG4gICAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuY2FsbCkge1xuICAgICAgICAgICAgdGhpcy5jYWxsLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIC8vIHRoaXMuY2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1heGltaXNlRGlhbHBhZCgpO1xuICAgIH1cbn1cblxuXG4gIHRvZ2dsZU11dGUoKSB7XG4gICAgdGhpcy5pc011dGUgPSAhdGhpcy5pc011dGU7XG4gICAgdGhpcy5jYWxsPy5tdXRlKHRoaXMuaXNNdXRlKTtcbiAgfVxuICB0b2dnbGVLZXlwYWQoKSB7XG4gICAgdGhpcy5zaG93S2V5cGFkID0gIXRoaXMuc2hvd0tleXBhZDtcbiAgICB0aGlzLmNhbGxJbnB1dCA9ICcnO1xuICB9XG4gIHRvZ2dsZUNvbnRhY3RzUGFuZWwoKSB7XG4gICAgdGhpcy5zaG93Q29udGFjdHNQYW5lbCA9ICF0aGlzLnNob3dDb250YWN0c1BhbmVsO1xuICAgIHRoaXMuR2V0Q29udGFjdHNMaXN0KCk7XG4gIH1cblxuICBhZGRSZW1vdmVQYXJ0aWNpcGFudCgpIHtcbiAgICBjb25zdCBjb25mZXJlbmNlU0lkID0gdGhpcy5hZGRSZXM/LmNvbmZlcmVuY2VTaWQ7XG4gICAgdGhpcy5pc0FkZFJlbW92ZVBhcnRpY2lwYW50ID0gIXRoaXMuaXNBZGRSZW1vdmVQYXJ0aWNpcGFudDtcbiAgICB0aGlzLmFsbFBhcnRpY2lwZW50TGlzdCA9IHRoaXMuZ2V0QWxsUGFydGljaXBhbnRzKGNvbmZlcmVuY2VTSWQpO1xuICB9XG5cblxuICBhc3luYyBjYWxsQ29udGFjdChjb250YWN0OiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnQWRkaW5nIHBhcnRpY2lwYW50OicsIGNvbnRhY3QpO1xuICAgIGNvbnNvbGUubG9nKCd0aGlzLmNhbGwnLCB0aGlzLmNhbGwpXG4gICAgY29uc29sZS5sb2coJ3RoaXMuY2FsbCcsIHRoaXMuY2FsbC5zdGF0dXMoKSlcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGFjdGl2ZSBjYWxsXG4gICAgaWYgKCF0aGlzLmNhbGwgfHwgdGhpcy5jYWxsLnN0YXR1cygpICE9PSAnb3BlbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGFjdGl2ZSBjYWxsJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEdldCB0aGUgcGhvbmUgbnVtYmVyIGZyb20gdGhlIGNvbnRhY3RcbiAgICBjb25zdCBwaG9uZU51bWJlciA9IGNvbnRhY3Q/Lm51bWJlcnNMaXN0Py5bMF0/Lm51bWJlcjtcbiAgICBpZiAoIXBob25lTnVtYmVyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBwaG9uZSBudW1iZXIgZm91bmQgZm9yIGNvbnRhY3QnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcblxuICAgICAgYXdhaXQgdGhpcy5vbmhvbGRPclVuaG9sZFBhcnRpY2lwYW50KHtcbiAgICAgICAgcGFydGljaXBhbnRJZDogdGhpcy5jYWxsRGF0YT8ucGFydGljaXBhbnRJZCwgXG4gICAgICAgIGNvbmZlcmVuY2VJZDogdGhpcy5jb25mZXJlbmNlSWQsIFxuICAgICAgICBob2xkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIC8vIFB1dCBjdXJyZW50IGNhbGwgb24gaG9sZFxuICAgICAgdGhpcy5oZWxkQ2FsbCA9IHsuLi50aGlzLmNhbGx9O1xuICAgICAgdGhpcy5pc0NhbGxPbkhvbGQgPSB0cnVlO1xuICAgICAgdGhpcy5oZWxkQ2FsbC5tdXRlKHRydWUpO1xuICAgICAgXG4gICAgICAvLyBDbG9zZSBjb250YWN0cyBwYW5lbCBhbmQgc2hvdyByaW5nIGFuaW1hdGlvblxuICAgICAgdGhpcy5zaG93Q29udGFjdHNQYW5lbCA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93UmluZ0FuaW1hdGlvbiA9IHRydWU7XG4gICAgICAvLyBVcGRhdGUgVUkgdG8gcmVmbGVjdCB0aGUgbmV3IG91dGJvdW5kIGxlZyBiZWluZyBkaWFsZWRcbiAgICAgIGNvbnN0IGNvbnRhY3ROYW1lID0gW2NvbnRhY3Q/LmZpcnN0TmFtZSwgY29udGFjdD8ubWlkZGxlTmFtZSwgY29udGFjdD8ubGFzdE5hbWVdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJyAnKTtcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gICAgICAgIHBob25lOiBwaG9uZU51bWJlcixcbiAgICAgICAgZGlzcGxheU51bTogcGhvbmVOdW1iZXIsXG4gICAgICAgIG5hbWU6IGNvbnRhY3ROYW1lIHx8IHBob25lTnVtYmVyLFxuICAgICAgICBpbWc6IGNvbnRhY3Q/LmltZyB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZydcbiAgICAgIH07XG4gICAgICB0aGlzLmNhbGxbJ2NhbGxJbmZvJ10gPSB7Li4udGhpcy5jYWxsRGF0YX07XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBcbiAgICAgIC8vIEdldCB0aGUgY29uZmVyZW5jZSBJRCBmcm9tIHRoZSBjdXJyZW50IGNhbGwgb3IgdXNlIHRoZSBzdG9yZWQgb25lXG4gICAgICBjb25zdCBjb25mZXJlbmNlSWQgPSB0aGlzLmNvbmZlcmVuY2VJZDtcbiAgICAgIFxuICAgICAgaWYgKCFjb25mZXJlbmNlSWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIk5vIGNvbmZlcmVuY2VJZCBmb3VuZCBmb3IgYWN0aXZlIGNhbGxcIik7XG4gICAgICAgIHN3YWwoXCJFcnJvclwiLCBcIkNhbm5vdCBhZGQgcGFydGljaXBhbnQ6IGNvbmZlcmVuY2Ugbm90IGZvdW5kXCIsIFwiZXJyb3JcIik7XG4gICAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBBZGQgcGFydGljaXBhbnQgdG8gdGhlIGNvbmZlcmVuY2VcbiAgICAgIGF3YWl0IHRoaXMuYWRkUGFydGljaXBhbnRUb0NhbGwoe1xuICAgICAgICBmcm9tOiB0aGlzLmNhbGxEYXRhPy5mcm9tLFxuICAgICAgICByb3V0ZTogXCJPVVRHT0lOR1wiLFxuICAgICAgICBwYXJ0aWNpcGFudE51bWJlcjogcGhvbmVOdW1iZXIsXG4gICAgICAgIGNvbmZlcmVuY2VJZDogY29uZmVyZW5jZUlkXG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgY29uc29sZS5sb2coXCJQYXJ0aWNpcGFudCBhZGRlZCB0byBjb25mZXJlbmNlOlwiLCBwaG9uZU51bWJlcik7XG4gICAgICB0aGlzLnNob3dSaW5nQW5pbWF0aW9uID0gZmFsc2U7XG4gICAgICBcbiAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFkZGluZyBwYXJ0aWNpcGFudDonLCBlcnJvcik7XG4gICAgICB0aGlzLnNob3dSaW5nQW5pbWF0aW9uID0gZmFsc2U7XG4gICAgICAvLyBSZXN0b3JlIGhlbGQgY2FsbCBvbiBlcnJvclxuICAgICAgaWYgKHRoaXMuaGVsZENhbGwpIHtcbiAgICAgICAgdGhpcy5jYWxsID0gdGhpcy5oZWxkQ2FsbDtcbiAgICAgICAgdGhpcy5oZWxkQ2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc0NhbGxPbkhvbGQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jYWxsLm11dGUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsUGFydGljaXBhbnRzKGNvbmZlcmVuY2VTaWQ6IHN0cmluZyl7XG4gICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldEFsbFBhcnRpY2lwYW50cyhjb25mZXJlbmNlU2lkKS5zdWJzY3JpYmUoKHJlczphbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsUGFydGljaXBlbnRMaXN0ID0gcmVzLnBhcnRpY2lwYW50cztcbiAgICB9KVxuICB9XG4gIFxuICAvLyBhY2NlcHRDb25jdXJyZW50Q2FsbChpbmNvbWluZ0NhbGw6IGFueSkge1xuICAvLyAgIGlmICghaW5jb21pbmdDYWxsKSByZXR1cm47XG4gICAgXG4gIC8vICAgLy8gUHV0IGN1cnJlbnQgY2FsbCBvbiBob2xkIGluc3RlYWQgb2YgZGlzY29ubmVjdGluZ1xuICAvLyAgIGlmICh0aGlzLmNhbGwpIHtcbiAgLy8gICAgIHRoaXMuaGVsZENhbGwgPSB0aGlzLmNhbGw7XG4gIC8vICAgICB0aGlzLmlzQ2FsbE9uSG9sZCA9IHRydWU7XG4gIC8vICAgICAvLyBNdXRlIHRoZSBoZWxkIGNhbGxcbiAgLy8gICAgIHRoaXMuaGVsZENhbGwubXV0ZSh0cnVlKTtcbiAgLy8gICB9XG4gICAgXG4gIC8vICAgaW5jb21pbmdDYWxsLmFjY2VwdCgpO1xuICAvLyAgIHRoaXMuY2FsbCA9IGluY29taW5nQ2FsbDtcbiAgLy8gICB0aGlzLmNhbGxEYXRhLnBob25lID0gaW5jb21pbmdDYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgLy8gICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBpbmNvbWluZ0NhbGwuY3VzdG9tUGFyYW1ldGVycz8uZ2V0KCduYW1lJykgfHwgJy0nO1xuICAvLyAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gIC8vICAgdGhpcy5pc0NvbmN1cnJlbnRJbmNvbWluZyA9IGZhbHNlO1xuICAvLyAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7XG4gIC8vICAgdGhpcy5kaXNiYWxlRW5kQ2FsbEJ0biA9IGZhbHNlO1xuICAgIFxuICAvLyAgIC8vIFJlc2V0IHRpbWVyIGZvciBuZXcgY2FsbFxuICAvLyAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gIC8vICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAvLyB9XG5cblxuICBhY2NlcHRDb25jdXJyZW50Q2FsbChpbmNvbWluZ0NhbGw6IGFueSkge1xuICAgIGlmICghaW5jb21pbmdDYWxsKSByZXR1cm47XG5cbiAgICAvLyBQdXQgY3VycmVudCBjYWxsIG9uIGhvbGQgaW5zdGVhZCBvZiBkaXNjb25uZWN0aW5nXG4gICAgaWYgKHRoaXMuY2FsbCkge1xuICAgICAgdGhpcy5oZWxkQ2FsbCA9IHRoaXMuY2FsbDtcbiAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gdHJ1ZTtcbiAgICAgIC8vIE11dGUgdGhlIGhlbGQgY2FsbFxuICAgICAgdGhpcy5oZWxkQ2FsbC5tdXRlKHRydWUpO1xuICAgIH1cblxuICAgIC8vIEFjY2VwdCB0aGUgbmV3IGNhbGxcbiAgICBpbmNvbWluZ0NhbGwuYWNjZXB0KCk7XG4gICAgdGhpcy5jYWxsID0gaW5jb21pbmdDYWxsO1xuICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBpbmNvbWluZ0NhbGwucGFyYW1ldGVyc1snRnJvbSddO1xuICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGluY29taW5nQ2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ25hbWUnKSB8fCAnLSc7XG4gICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBpbmNvbWluZ0NhbGwuY3VzdG9tUGFyYW1ldGVycz8uZ2V0KCdpbWFnZScpIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gZmFsc2U7XG4gICAgdGhpcy5pbmNvbWluZ0NhbGxEaXYgPSBmYWxzZTtcbiAgICB0aGlzLmRpc2JhbGVFbmRDYWxsQnRuID0gZmFsc2U7XG5cbiAgICAvLyDwn5+iIFJlbW92ZSB0aGUgYWNjZXB0ZWQgY2FsbCBmcm9tIGluY29taW5nIGxpc3RcbiAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gKHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgfHwgW10pLmZpbHRlcihcbiAgICAgIChjOiBhbnkpID0+IGM/LnBhcmFtZXRlcnM/LkNhbGxTaWQgIT09IGluY29taW5nQ2FsbD8ucGFyYW1ldGVycz8uQ2FsbFNpZFxuICAgICk7XG4gICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3SW5mby5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuXG4gICAgLy8g8J+VkiBSZXNldCB0aW1lciBmb3IgbmV3IGNhbGxcbiAgICB0aGlzLnN0b3BUaW1lcigpO1xuICAgIHRoaXMuc3RhcnRUaW1lcigpO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIFxuICBhc3luYyBzd2FwQ2FsbHMoKSB7XG4gICAgaWYgKCF0aGlzLmhlbGRDYWxsIHx8ICF0aGlzLmNhbGwpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGwsICd0aGlzLmNhbGwnKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmhlbGRDYWxsLCAndGhpcy5oZWxkQ2FsbCcpO1xuICAgIGF3YWl0IHRoaXMub25ob2xkT3JVbmhvbGRQYXJ0aWNpcGFudCh7XG4gICAgICBwYXJ0aWNpcGFudElkOiB0aGlzLmNhbGw/LmNhbGxJbmZvPy5wYXJ0aWNpcGFudElkLCBcbiAgICAgIGNvbmZlcmVuY2VJZDogdGhpcy5jb25mZXJlbmNlSWQsIFxuICAgICAgaG9sZDogdHJ1ZVxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMub25ob2xkT3JVbmhvbGRQYXJ0aWNpcGFudCh7XG4gICAgICBwYXJ0aWNpcGFudElkOiB0aGlzLmhlbGRDYWxsPy5jYWxsSW5mbz8ucGFydGljaXBhbnRJZCwgXG4gICAgICBjb25mZXJlbmNlSWQ6IHRoaXMuY29uZmVyZW5jZUlkLCBcbiAgICAgIGhvbGQ6IGZhbHNlXG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ1N3YXBwaW5nIGNhbGxzLi4uJyk7XG4gICAgY29uc29sZS5sb2coJ0JlZm9yZSBzd2FwIC0gQWN0aXZlIGNhbGw6JywgdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXSk7XG4gICAgY29uc29sZS5sb2coJ0JlZm9yZSBzd2FwIC0gSGVsZCBjYWxsOicsIHRoaXMuaGVsZENhbGwucGFyYW1ldGVyc1snRnJvbSddKTtcbiAgICBcbiAgICAvLyBTd2FwIHRoZSBjYWxsc1xuICAgIGNvbnN0IHRlbXAgPSB0aGlzLmNhbGw7XG4gICAgdGhpcy5jYWxsID0gdGhpcy5oZWxkQ2FsbDtcbiAgICB0aGlzLmhlbGRDYWxsID0gdGVtcDtcbiAgICBcblxuICAgIHRoaXMuY2FsbC5tdXRlKGZhbHNlKTtcbiAgICB0aGlzLmhlbGRDYWxsLm11dGUodHJ1ZSk7XG4gICAgXG4gICAgLy8gVXBkYXRlIFVJIHdpdGggYWN0aXZlIGNhbGwgaW5mbyAtIGV4dHJhY3QgZnJvbSBjYWxsIHBhcmFtZXRlcnNcbiAgICBjb25zdCBmcm9tTnVtYmVyID0gdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgICBjb25zdCBjYWxsZXJOYW1lID0gdGhpcy5jYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnbmFtZScpIHx8ICctJztcbiAgICBjb25zdCBjYWxsZXJJbWcgPSB0aGlzLmNhbGwuY3VzdG9tUGFyYW1ldGVycz8uZ2V0KCdpbWFnZScpIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgICBjb25zdCBkaXNwbGF5TnVtYmVyID0gdGhpcy5jYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnZGlzcGxheU51bWJlcicpIHx8ICctJztcbiAgICBcbiAgICAvLyBVcGRhdGUgY2FsbERhdGEgdG8gcmVmcmVzaCB0aGUgbWFpbiBVSVxuICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gICAgICAuLi50aGlzLmNhbGxEYXRhLFxuICAgICAgcGhvbmU6IGZyb21OdW1iZXIsXG4gICAgICBkaXNwbGF5TnVtOiAoZGlzcGxheU51bWJlciAmJiBkaXNwbGF5TnVtYmVyICE9PSAnLScpID8gZGlzcGxheU51bWJlciA6IGZyb21OdW1iZXIsXG4gICAgICBuYW1lOiAoY2FsbGVyTmFtZSAmJiBjYWxsZXJOYW1lICE9PSAnLScpID8gY2FsbGVyTmFtZSA6ICh0aGlzLmNhbGxEYXRhPy5uYW1lIHx8IGZyb21OdW1iZXIpLFxuICAgICAgaW1nOiBjYWxsZXJJbWcgfHwgdGhpcy5jYWxsRGF0YT8uaW1nIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJ1xuICAgIH07XG4gICAgXG4gICAgY29uc29sZS5sb2coJ0FmdGVyIHN3YXAgLSBBY3RpdmUgY2FsbDonLCB0aGlzLmNhbGwucGFyYW1ldGVyc1snRnJvbSddKTtcbiAgICBjb25zb2xlLmxvZygnQWZ0ZXIgc3dhcCAtIEhlbGQgY2FsbDonLCB0aGlzLmhlbGRDYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXSk7XG4gICAgY29uc29sZS5sb2coJ1VwZGF0ZWQgY2FsbERhdGE6JywgdGhpcy5jYWxsRGF0YSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIFxuICBhc3luYyBtZXJnZUNhbGxzKCkge1xuICAgIC8vIE1lcmdlIGZ1bmN0aW9uYWxpdHkgLSB1bm11dGUgYm90aCBjYWxscyBmb3IgY29uZmVyZW5jZVxuICAgIGlmICh0aGlzLmhlbGRDYWxsICYmIHRoaXMuY2FsbCkge1xuICAgICAgYXdhaXQgdGhpcy5vbmhvbGRPclVuaG9sZFBhcnRpY2lwYW50KHtcbiAgICAgICAgcGFydGljaXBhbnRJZDogdGhpcy5oZWxkQ2FsbD8uY2FsbEluZm8/LnBhcnRpY2lwYW50SWQsIFxuICAgICAgICBjb25mZXJlbmNlSWQ6IHRoaXMuY29uZmVyZW5jZUlkLCBcbiAgICAgICAgaG9sZDogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgdGhpcy5oZWxkQ2FsbC5tdXRlKGZhbHNlKTtcbiAgICAgIHRoaXMuY2FsbC5tdXRlKGZhbHNlKTtcbiAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gZmFsc2U7XG4gICAgICB0aGlzLmlzQ29uZmVyZW5jZSA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZW5kSGVsZENhbGwoKSB7XG4gICAgaWYgKHRoaXMuaGVsZENhbGwpIHtcbiAgICAgIHRoaXMuaGVsZENhbGwuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5oZWxkQ2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gZmFsc2U7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG4gIFxuICByZWplY3RDb25jdXJyZW50Q2FsbChpbmNvbWluZ0NhbGw6IGFueSkge1xuICBcbiAgICBpZiAoIWluY29taW5nQ2FsbCkgcmV0dXJuO1xuICAgIGlmIChpbmNvbWluZ0NhbGwucmVqZWN0KSB7XG4gICAgICBpbmNvbWluZ0NhbGwucmVqZWN0KCk7XG4gICAgfVxuICAgIGlmIChpbmNvbWluZ0NhbGwuZGlzY29ubmVjdCkgaW5jb21pbmdDYWxsLmRpc2Nvbm5lY3QoKTtcbiAgICAvLyBSZW1vdmUgZnJvbSBsaXN0XG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9ICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0IHx8IFtdKS5maWx0ZXIoKGM6IGFueSkgPT4gYz8ucGFyYW1ldGVycz8uQ2FsbFNpZCAhPT0gaW5jb21pbmdDYWxsPy5wYXJhbWV0ZXJzPy5DYWxsU2lkKTtcbiAgICB0aGlzLmluY29taW5nQ2FsbHNOZXdJbmZvLmVtaXQodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCk7XG4gICAgLy8gSWYgbm8gbW9yZSBpbmNvbWluZywgaGlkZSBiYW5uZXJcbiAgICBpZiAoIXRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgfHwgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuaXNDb25jdXJyZW50SW5jb21pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBvbkNhbGxJbnB1dHMobnVtOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIobnVtKSB8fCBudW0gPT0gJysnIHx8IG51bSA9PSAnKicgfHwgbnVtID09ICcjJykge1xuICAgICAgICBpZiAobnVtID09ICcjJykge1xuICAgICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi1oYXNoLS5tcDNgKS5wbGF5KCk7XG4gICAgICAgIH0gZWxzZSBpZiAobnVtID09ICcqJykge1xuICAgICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi1zdGFyLS5tcDNgKS5wbGF5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3IEF1ZGlvKGAvYXNzZXRzL2RpYWwtdG9uZXMvZHRtZi9kdG1mLSR7bnVtfS0ubXAzYCkucGxheSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYWxsSW5wdXQgPSB0aGlzLmNhbGxJbnB1dCArIFN0cmluZyhudW0pO1xuICAgICAgICB0aGlzLnNob3dDbGVhckJ0biA9IHRydWU7XG4gICAgICB9XG4gICAgICBsZXQgc3RyID0gU3RyaW5nKG51bSk7XG4gICAgICB0aGlzLmNhbGw/LnNlbmREaWdpdHMoc3RyKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICB9XG4gIH1cbiAgb25DYWxsSW5wdXRFbnRlcihldjogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2FsbD8uc2VuZERpZ2l0cyhTdHJpbmcoZXYua2V5KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG4gIGNsb3NlSW5jb21pbmdDYWxsKGRhdGE6IGFueSkge1xuICAgIC8vIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7XG4gICAgaWYgKGRhdGEuc2hvdykge1xuICAgICAgLy90aGlzLnNob3dDYWxsUHJvZ3Jlc3NFdmVudC5lbWl0KClcbiAgICAgIC8vIGhhbmRsZSBpbmNvbWluZyBjYWxsIGFjY2VwdGVkXG4gICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICAgIHRoaXMuZGlzYmFsZUVuZENhbGxCdG4gPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FsbCA9IGRhdGEuY2FsbDtcbiAgICAgIHRoaXMuaXNDb25jdXJyZW50SW5jb21pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7XG4gICAgXG4gICAgICBjb25zdCBpbmNvbWluZ0RldGFpbCA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgICB0aGlzLmluY29taW5nUmVjb3JkQ2FsbCA9IGluY29taW5nRGV0YWlsLnJlY29yZENhbGw7XG5cbiAgICAgIGlmICh0aGlzLmluY29taW5nUmVjb3JkQ2FsbCkge1xuICAgICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluY29taW5nIGNhbGwgcmVqZWN0ZWQgb3IgYXV0by1jYW5jZWxsZWRcbiAgICAgIHRoaXMuaXNDb25jdXJyZW50SW5jb21pbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBOTyBhY3RpdmUgY2FsbCwgdGhlbiBwcm9wYWdhdGUgZW5kLiBPdGhlcndpc2Uga2VlcCBvbmdvaW5nIFVJLlxuICAgICAgaWYgKCF0aGlzLmNhbGwgfHwgdGhpcy5jYWxsLnN0YXR1cygpICE9PSAnb3BlbicpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3Rlc3Q3JylcbiAgICAgICAgdGhpcy5lbmRDYWxsRXZlbnQuZW1pdCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjbGVhcklucHV0cygpe1xuICAgIHRoaXMuY2FsbElucHV0ID0gdGhpcy5jYWxsSW5wdXQuc2xpY2UoMCwgLTEpO1xuICB9XG4gIGlzTWluaW1pc2VkOmJvb2xlYW4gPSBmYWxzZTtcbiAgbWluaW1pc2VEaWFscGFkKCl7XG4gICAgdGhpcy5taW5pbWlzZUV2ZW50LmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5pc01pbmltaXNlZCA9IHRydWU7XG4gIH1cbiAgbWF4aW1pc2VEaWFscGFkKCl7XG4gICAgdGhpcy5taW5pbWlzZUV2ZW50LmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuaXNNaW5pbWlzZWQgPSBmYWxzZTtcbiAgfVxuICB0b2dnbGVSZWNvcmRpbmcoKSB7XG4gICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcpIHtcbiAgICAgIHRoaXMuc3RvcFJlY29yZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgfVxuICB9XG4gIHN0YXJ0UmVjb3JkaW5nKCkge1xuICAgIGxldCBzaWQ7XG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgdGhpcy5pbmNvbWluZ0NhbGxTaWQgPSBkZXRhaWxzLmNhbGxTaWQ7XG4gICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBkZXRhaWxzLnJlY29yZENhbGw7XG4gICAgc2lkID0gdGhpcy5pbmNvbWluZ0NhbGxTaWQgPyB0aGlzLmluY29taW5nQ2FsbFNpZCA6IHRoaXMuY2FsbFNpZDtcblxuICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFJlY29yZGluZyhzaWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlzUmVjb3JkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTsgIFxuICAgICAgdGhpcy50aW1lRWxhcHNlZCA9IDA7XG4gICAgICB0aGlzLnN0YXJ0VGltZXIxKCk7XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3RhcnRpbmcgcmVjb3JkaW5nJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG4gIHN0b3BSZWNvcmRpbmcoKSB7XG4gICAgLy8gaWYgKCF0aGlzLmluY29taW5nUmVjb3JkQ2FsbCAmJiAhdGhpcy5yZWNvcmRDYWxsKSB7XG4gICAgLy8gICByZXR1cm47XG4gICAgLy8gfVxuICAgIHRoaXMuaXNSZWNvcmRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMudGltZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbiAgcGF1c2VSZWNvcmRpbmcoKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU2lkKCk7XG4gICAgdGhpcy5pbmNvbWluZ0NhbGxTaWQgPSBkZXRhaWxzLmNhbGxTaWQ7XG4gICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBkZXRhaWxzLnJlY29yZENhbGw7XG4gICAgY29uc3Qgc2lkID0gdGhpcy5pbmNvbWluZ0NhbGxTaWQgPyB0aGlzLmluY29taW5nQ2FsbFNpZCA6IHRoaXMuY2FsbFNpZDtcblxuICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cblxuICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5wYXVzZU9yUmVzdW1lUmVjb3JkaW5nKHNpZCwgJ3BhdXNlJykuc3Vic2NyaWJlKFxuICAgICAgcmVzcG9uc2UgPT4ge1xuICAgICAgICB0aGlzLnN0b3BSZWNvcmRpbmdUaW1lcigpO1xuICAgICAgICB0aGlzLmlzUGF1c2VkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGF1c2luZyByZWNvcmRpbmc6JywgZXJyb3IpO1xuICAgICAgICAvLyBDb25zaWRlciB1cGRhdGluZyB0aGUgVUkgdG8gc2hvdyB0aGUgZXJyb3Igc3RhdGVcbiAgICAgIH1cbiAgICApO1xuICB9XG4gIHJlc3VtZVJlY29yZGluZygpIHtcbiAgICBsZXQgc2lkO1xuICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFNpZCgpO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsU2lkID0gZGV0YWlscy5jYWxsU2lkO1xuICAgIHRoaXMuaW5jb21pbmdSZWNvcmRDYWxsID0gZGV0YWlscy5yZWNvcmRDYWxsO1xuICAgIHNpZCA9IHRoaXMuaW5jb21pbmdDYWxsU2lkID8gdGhpcy5pbmNvbWluZ0NhbGxTaWQgOiB0aGlzLmNhbGxTaWQ7XG5cbiAgICAvLyBpZiAoIXRoaXMuaW5jb21pbmdSZWNvcmRDYWxsICYmICF0aGlzLnJlY29yZENhbGwpIHtcbiAgICAvLyAgIHJldHVybjsgLy8gU2tpcCBpZiByZWNvcmRpbmcgaXMgbm90IGVuYWJsZWRcbiAgICAvLyB9XG4gICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLnBhdXNlT3JSZXN1bWVSZWNvcmRpbmcoc2lkLCAncmVzdW1lJykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuaXNQYXVzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RhcnRUaW1lcjEoKTtcbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZXN1bWluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cbiAgc3RhcnRUaW1lcjEoKSB7XG4gICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IGludGVydmFsKDEwMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnRpbWVFbGFwc2VkKys7XG4gICAgfSk7XG4gIH1cbiAgc3RvcFJlY29yZGluZ1RpbWVyKCkge1xuICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IC8vIFBhdXNlIHRoZSB0aW1lclxuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDsgICAgICAgIC8vIE9wdGlvbmFsbHkgcmVzZXQgdGhlIHN1YnNjcmlwdGlvblxuICAgIH1cbiAgfVxuICBnZXRGb3JtYXR0ZWRUaW1lKCkge1xuICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRoaXMudGltZUVsYXBzZWQgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRoaXMudGltZUVsYXBzZWQgJSA2MDtcbiAgICByZXR1cm4gYCR7bWludXRlc306JHtzZWNvbmRzIDwgMTAgPyAnMCcgOiAnJ30ke3NlY29uZHN9YDtcbiAgfVxuICBwb2xsQ2FsbFN0YXR1cyhjYWxsQXV0aElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXhUaW1lID0gMzAwMDA7IC8vIFBvbGwgZm9yIHVwIHRvIDMwIHNlY29uZHNcbiAgICBjb25zdCBwb2xsSW50ZXJ2YWwgPSAzMDAwOyAvLyBQb2xsIGV2ZXJ5IDMgc2Vjb25kc1xuICAgIGxldCBlbGFwc2VkVGltZSA9IDA7XG4gICAgY29uc3QgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGFzeW5jICgpID0+IHtcbiAgICAgIGVsYXBzZWRUaW1lICs9IHBvbGxJbnRlcnZhbDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHN0YXR1c1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENhbGxTdGF0dXMoY2FsbEF1dGhJZCkudG9Qcm9taXNlKCkgYXMgQ2FsbFN0YXR1c1Jlc3BvbnNlO1xuICAgICAgICBpZiAoc3RhdHVzUmVzcG9uc2UgJiYgc3RhdHVzUmVzcG9uc2UuY2FsbERldGFpbHMpIHtcbiAgICAgICAgICB0aGlzLmNhbGxTdGF0dXMgPSBzdGF0dXNSZXNwb25zZS5jYWxsRGV0YWlscy5jYWxsU3RhdHVzO1xuICAgICAgICAgIGlmICh0aGlzLmNhbGxTdGF0dXMgPT09ICdpbi1wcm9ncmVzcycpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsbFNpZCA9IHN0YXR1c1Jlc3BvbnNlLmNhbGxEZXRhaWxzLmNhbGxTaWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWNvcmRDYWxsICYmICF0aGlzLmlzUmVjb3JkaW5nKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RhcnRSZWNvcmRpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNhbGxTdGF0dXMgPT09ICdjb21wbGV0ZWQnKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3Rlc3QxJylcbiAgICAgICAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNhbGxTdGF0dXMgPT09ICdyaW5naW5nJykge1xuICAgICAgICAgICAgLy8gQ29udGludWUgcG9sbGluZzsgZG8gbm90IGNsZWFyIHRoZSBpbnRlcnZhbCB5ZXRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICB9XG4gICAgICBpZiAoZWxhcHNlZFRpbWUgPj0gbWF4VGltZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnTWF4IHBvbGxpbmcgdGltZSByZWFjaGVkLiBTdG9wcGluZyBwb2xsLicpO1xuICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgfVxuICAgIH0sIHBvbGxJbnRlcnZhbCk7XG4gIH1cblxuICBnZXRVc2VySW5mb3JtYXRpb24oaWQ6YW55KSB7XG4gICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldFVzZXJJbmZvcm1hdGlvbihpZCkuc3Vic2NyaWJlKFxuICAgIHJlc3BvbnNlID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKVxuICAgIH0sIGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN0YXJ0aW5nIHJlY29yZGluZycsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuICBpbmNvbWluZ0NhbGxzTmV3TGlzdChkYXRhOmFueSl7XG4gICAgY29uc29sZS5sb2coZGF0YSwgJ25ld0luY29taW5nQ2FsbHNMaXN0T1VSJylcbiAgICB0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0ID0gZGF0YTtcbiAgICB0aGlzLmluY29taW5nQ2FsbHNOZXdJbmZvLmVtaXQodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCk7XG4gIH1cbiAgc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvKGRhdGE6YW55KXtcbiAgICB0aGlzLnNlbGVjdGVkSW5jb21pbmdDYWxsID0gZGF0YTtcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNhbGxEYXRhLmRpYWwgPSBmYWxzZTtcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJjYWxsLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzTWluaW1pc2VkXCJcbiAgICBbbmdDbGFzc109XCJ7J2NvbGxvcHMnOiBpc0NvbGxvcHMsICdpbmNvbWluZy1jYWxsLWNvbnRhaW5lcic6IHNlbGVjdGVkSW5jb21pbmdDYWxsPy5pc0NsaWNrRXhwYW5kLCAnY29udGFjdHMtb3Blbic6IHNob3dDb250YWN0c1BhbmVsIH1cIj5cbiAgICA8IS0tIDxkaXYgaWQ9XCJtaW5pbWl6ZS1idG4tZGl2XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtaW5pbWl6ZS1idG5cIiAoY2xpY2spPVwibWluaW1pc2VEaWFscGFkKClcIj5cbiAgICAgICAgICAgIG1pbmltaXplXG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj4gLS0+XG4gICAgPGxpYi1pbmNvbWluZy1jYWxsICpuZ0lmPVwiaW5jb21pbmdDYWxsRGl2ICYmICFpc0NvbmN1cnJlbnRJbmNvbWluZ1wiIFtpbmNvbWluZ0NhbGxEYXRhXT1cImNhbGxEYXRhXCJcbiAgICAgICAgW2RldmljZUlkXT1cImRldmljZUlkXCIgW25ld0luY29taW5nQ2FsbHNMaXN0XT1cIm5ld0luY29taW5nQ2FsbHNMaXN0XCJcbiAgICAgICAgKGNsb3NlSW5jb21pbmdDYWxsRGl2KT1cImNsb3NlSW5jb21pbmdDYWxsKCRldmVudClcIiAoaW5jb21pbmdDYWxsc05ld0xpc3QpPVwiaW5jb21pbmdDYWxsc05ld0xpc3QoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3RlZEluY29taW5nQ2FsbEluZm8pPVwic2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvKCRldmVudClcIj48L2xpYi1pbmNvbWluZy1jYWxsPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmNvbWluZ0NhbGxEaXYgfHwgaXNDb25jdXJyZW50SW5jb21pbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlbGQtY2FsbC1iYW5uZXJcIiAqbmdJZj1cImlzQ2FsbE9uSG9sZCAmJiBoZWxkQ2FsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlbGQtY2FsbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlbGQtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaG9sZC1pY29uXCI+cGF1c2VfY2lyY2xlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVsZC1jYWxsZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVsZC1sYWJlbFwiPkhvbGQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlbGQtbnVtYmVyXCI+e3toZWxkQ2FsbC5jYWxsSW5mbz8uZGlzcGxheU51bWJlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbGRDYWxsLmNhbGxJbmZvPy5Gcm9tIHx8ICcnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxkLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlbGQtYnRuIHN3YXAtYnRuXCIgKGNsaWNrKT1cInN3YXBDYWxscygpXCIgdGl0bGU9XCJTd2FwIGNhbGxzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Td2FwPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbXBhY3QgYmFubmVycyBmb3IgY29uY3VycmVudCBpbmNvbWluZyAob25lIHBlciBjYWxsKSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmNvbWluZy1iYW5uZXJzLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzQ29uZmVyZW5jZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmNvbWluZy1iYW5uZXJcIiAqbmdGb3I9XCJsZXQgaW5jIG9mIG5ld0luY29taW5nQ2FsbHNMaXN0OyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyB0b3A6ICgoaXNDYWxsT25Ib2xkICYmIGhlbGRDYWxsKSA/IDY0IDogMCkgKyAoaSAqIDgwKSArICdweCcgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5jb21pbmctYmFubmVyLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmNvbWluZy1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmNvbSBpbmctbGFiZWxcIj5JbmNvbWluZyBjYWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmNvbWluZy1jYWxsZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYWxsZXItbmFtZVwiPnt7IGluYz8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5uYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmM/LmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnbmFtZScpIHx8ICctJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYWxsZXItbnVtYmVyXCI+e3sgaW5jPy51c2VySW5mbz8uYzJjSW5mb3JtYXRpb24/Lm51bWJlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jPy5wYXJhbWV0ZXJzPy5Gcm9tIHx8ICcnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5jb21pbmctYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiYW5uZXItYnRuIGFjY2VwdC1idG5cIiAoY2xpY2spPVwiYWNjZXB0Q29uY3VycmVudENhbGwoaW5jKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5jYWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJiYW5uZXItYnRuIHJlamVjdC1idG5cIiAoY2xpY2spPVwicmVqZWN0Q29uY3VycmVudENhbGwoaW5jKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5jYWxsX2VuZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQ29uZmVyZW5jZVwiIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6ICdmbGV4JywgJ2ZsZXgtZGlyZWN0aW9uJzogJ2NvbHVtbicsICdwb3NpdGlvbic6ICdyZWxhdGl2ZSd9XCI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsLWFuaW1hdGlvblwiIFtuZ0NsYXNzXT1cInsnY2FsbC1hbmltYXRpb24tcGxheSc6IHNob3dSaW5nQW5pbWF0aW9ufVwiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhdmF0YXItaW1nXCIgW3NyY109XCJjYWxsRGF0YS5pbWdcIiBhbHQ9XCJcIiB3aWR0aD1cIjEyMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxsZXJEZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgPGgxIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IHNob3dLZXlwYWQgPyAnMCc6ICc4cHgnfVwiPnt7Y2FsbERhdGEubmFtZX19PC9oMT5cbiAgICAgICAgICAgICAgICA8cD57e2NhbGxEYXRhLmRpc3BsYXlOdW0gPyBjYWxsRGF0YS5kaXNwbGF5TnVtIDogY2FsbERhdGEucGhvbmUgfX08L3A+XG4gICAgICAgICAgICAgICAgPGg0IHN0eWxlPVwibWFyZ2luLXRvcDogNHB4XCI+e3t0aW1lcn19PC9oND5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLWFjdGlvbi1idG5zXCIgW25nU3R5bGVdPVwieydtYXJnaW4tdG9wJzogc2hvd0tleXBhZCA/ICcwJzogJzIwcHgnfVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmQtYnRuLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBzdGFydC1zdG9wXCIgKm5nSWY9XCIhaXNSZWNvcmRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydyZWNvcmRpbmcnOiBpc1JlY29yZGluZywgJ3N0b3BwZWQnOiAhaXNSZWNvcmRpbmd9XCIgKGNsaWNrKT1cInRvZ2dsZVJlY29yZGluZygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpc1JlY29yZGluZyA/ICdTdG9wIFJlY29yZGluZycgOiAnU3RhcnQgUmVjb3JkaW5nJ1wiIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWNvcmRpbmctaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXVzZS1yZXN1bWUtYnRuc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gcGF1c2UtcmVzdW1lXCIgKm5nSWY9XCJpc1JlY29yZGluZyAmJiAhaXNQYXVzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwYXVzZVJlY29yZGluZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBhdXNlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gcGF1c2UtcmVzdW1lXCIgKm5nSWY9XCJpc1BhdXNlZFwiIChjbGljayk9XCJyZXN1bWVSZWNvcmRpbmcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBwbGF5X2Fycm93IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNSZWNvcmRpbmdcIiBjbGFzcz1cInRpbWVyLWRpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkVGltZSgpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93S2V5cGFkXCIgY2xhc3M9XCJzZW5kRGlnaXRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiY2FsbC1pbnB1dHNcIiBpZD1cImNhbGwtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImNhbGxJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvbkNhbGxJbnB1dEVudGVyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaW5wdXQtY2xlYXItYnRuXCIgKm5nSWY9XCJjYWxsSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJJbnB1dHMoKVwiPmNsb3NlX3NtYWxsPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWNvbnRhaW5lciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgKm5nSWY9XCJzaG93S2V5cGFkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImtleS1idG5cIiAqbmdGb3I9XCJsZXQga2V5IG9mIGtleXBhZFZhbFwiIChjbGljayk9XCJvbkNhbGxJbnB1dHMoa2V5Lm51bSlcIj5cbiAgICAgICAgICAgICAgICAgICAge3trZXkubnVtfX1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tYWxiaGFiZXRzXCI+e3trZXkudGV4dCA/IGtleS50ZXh0IDogJyZuYnNwOyd9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1hY3Rpb24tYnRuc1wiIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IHNob3dLZXlwYWQgPyAnMCc6ICcxMTBweCd9XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNzdweFwiICpuZ0lmPVwiIWluY29taW5nQ2FsbERpdiB8fCBpc0NvbmN1cnJlbnRJbmNvbWluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaGVsZC1idG4gbWVyZ2UtYnRuXCIgKGNsaWNrKT1cIm1lcmdlQ2FsbHMoKVwiIHRpdGxlPVwiTWVyZ2UgY2FsbHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoZWxkQ2FsbCB8fCAhY2FsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TWVyZ2U8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtZXZlbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLXNlYy1idG4gbXItM1wiIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3RvcCc6IHNob3dLZXlwYWQgPyAnMCc6ICctMzJweCd9XCIgKGNsaWNrKT1cInRvZ2dsZU11dGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCJpc011dGVcIj4gbWljX29mZiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cIiFpc011dGVcIj4gbWljIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGwtc2VjLWJ0biBtci0zXCIgW25nU3R5bGVdPVwieyd0b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnLTMycHgnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIChjbGljayk9XCJ0b2dnbGVLZXlwYWQoKVwiPiB0cmFuc2l0aW9uX2Rpc3NvbHZlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLXNlYy1idG5cIiBbbmdTdHlsZV09XCJ7J3RvcCc6IHNob3dLZXlwYWQgPyAnMCc6ICctMzJweCd9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiIChjbGljayk9XCJ0b2dnbGVDb250YWN0c1BhbmVsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBhZGQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLWJ0biBlbmQtY2FsbC1idG5cIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIiAoY2xpY2spPVwiZW5kQ2FsbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRhY3RzLXBhbmVsXCIgKm5nSWY9XCJzaG93Q29udGFjdHNQYW5lbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGJhY2tcIiAoY2xpY2spPVwidG9nZ2xlQ29udGFjdHNQYW5lbCgpXCI+IGNoZXZyb25fbGVmdCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPkNvbnRhY3RzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBzZWFyY2hcIj4gc2VhcmNoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdHMtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1pdGVtXCIgKm5nRm9yPVwibGV0IGMgb2YgY29udGFjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJjb250YWN0LWF2YXRhclwiIFtzcmNdPVwiYy5pbWcgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1uYW1lXCI+e3tjLmZpcnN0TmFtZX19IHt7Yy5taWRkbGVOYW1lfX0ge3tjLmxhc3ROYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC10aXRsZVwiPnt7IChjLm51bWJlcnNMaXN0ICYmIGMubnVtYmVyc0xpc3RbMF0/Lm51bWJlcil9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGFjdC1jYWxsLWJ0blwiIChjbGljayk9XCJjYWxsQ29udGFjdChjKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBjYWxsIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+Q2FsbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtdC0yIHB4LTMgY2FsbC1pbmZvLXdyYXBwZXIgXCIgIFtuZ0NsYXNzXT1cInsnb3Blbi1jb2xsb3BzJzogaXNDb2xsb3BzfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCIgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG93blwiICpuZ0lmPVwiaXNDb2xsb3BzXCIgKGNsaWNrKT1cImlzQ29sbG9wcyA9ICFpc0NvbGxvcHNcIj48L2k+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hbmdsZS11cFwiICpuZ0lmPVwiIWlzQ29sbG9wc1wiIChjbGljayk9XCJpc0NvbGxvcHMgPSAhaXNDb2xsb3BzXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDb2xsb3BzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiA+Rmlyc3QgTmFtZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgPnRlc3QgdHR0dHQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5MYXN0IE5hbWU6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PnRldHN0IHRlc3QgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5FbWFpbDo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPmFiY2RlZnRAdmdyb3VwLmNvbTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5OdW1iZXI6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+NjM1NDU5ODUyNjQyMjU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPkxhbmd1YWdlOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPkVuZ2xpc2g8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPkltYWdlIDo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj50ZXN0LmpwZyA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPkV4dGVuc2lvbiA6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+NDU5NjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPk5vdGUgOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+dGVzIHRlc3QgdGVzdCA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlN1YmplY3Q6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+aGVsbG8gd29ybGQgfCB0ZXN0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbWItNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TWVzc2FnZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj50ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0cy1wYW5lbFwiICpuZ0lmPVwic2hvd0NvbnRhY3RzUGFuZWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgYmFja1wiIChjbGljayk9XCJ0b2dnbGVDb250YWN0c1BhbmVsKClcIj4gY2hldnJvbl9sZWZ0IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5Db250YWN0czwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBzZWFyY2hcIj4gc2VhcmNoIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1pdGVtXCIgKm5nRm9yPVwibGV0IGMgb2YgY29udGFjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNvbnRhY3QtYXZhdGFyXCIgW3NyY109XCJjLmltZyB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZydcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1uYW1lXCI+e3tjLmZpcnN0TmFtZX19IHt7Yy5taWRkbGVOYW1lfX0ge3tjLmxhc3ROYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0LXRpdGxlXCI+e3sgKGMubnVtYmVyc0xpc3QgJiYgYy5udW1iZXJzTGlzdFswXT8ubnVtYmVyKX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGFjdC1jYWxsLWJ0blwiIChjbGljayk9XCJjYWxsQ29udGFjdChjKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNhbGwgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNhbGw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25mZXJlbmNlLWNhbGwtdmlld1wiICpuZ0lmPVwiaXNDb25mZXJlbmNlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb25mLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBncm91cHMgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29uZi10aXRsZVwiPkNvbmZlcmVuY2UgQ2FsbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZi1uYW1lXCI+XG4gICAgICAgICAgICAgICAge3sgKGNhbGxEYXRhPy5uYW1lIHx8IGNhbGxEYXRhPy5kaXNwbGF5TnVtIHx8IGNhbGxEYXRhPy5waG9uZSB8fCAnLScpIH19ICZcbiAgICAgICAgICAgICAgICB7eyAobmV3SW5jb21pbmdDYWxsc0xpc3Q/LlswXT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5uYW1lXG4gICAgICAgICAgICAgICAgfHwgbmV3SW5jb21pbmdDYWxsc0xpc3Q/LlswXT8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXJcbiAgICAgICAgICAgICAgICB8fCBuZXdJbmNvbWluZ0NhbGxzTGlzdD8uWzBdPy5wYXJhbWV0ZXJzPy5Gcm9tXG4gICAgICAgICAgICAgICAgfHwgaGVsZENhbGw/LmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnZGlzcGxheU51bWJlcicpXG4gICAgICAgICAgICAgICAgfHwgJy0nKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLXRpbWVyXCI+e3sgdGltZXIgfX08L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29uZi1yZWNvcmRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLXN0b3AtYnRuXCIgKm5nSWY9XCJpc1JlY29yZGluZ1wiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoKVwiIHRpdGxlPVwiU3RvcCBSZWNvcmRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHN0b3BfY2lyY2xlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1hY3Rpb24tYnRuc1wiIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IHNob3dLZXlwYWQgPyAnMCc6ICcyMHB4J31cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLWJ0bi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gc3RhcnQtc3RvcFwiICpuZ0lmPVwiIWlzUmVjb3JkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVjb3JkaW5nJzogaXNSZWNvcmRpbmcsICdzdG9wcGVkJzogIWlzUmVjb3JkaW5nfVwiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXNSZWNvcmRpbmcgPyAnU3RvcCBSZWNvcmRpbmcnIDogJ1N0YXJ0IFJlY29yZGluZydcIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjb3JkaW5nLWljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF1c2UtcmVzdW1lLWJ0bnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwiaXNSZWNvcmRpbmcgJiYgIWlzUGF1c2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF1c2VSZWNvcmRpbmcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBwYXVzZSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwiaXNQYXVzZWRcIiAoY2xpY2spPVwicmVzdW1lUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGxheV9hcnJvdyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUmVjb3JkaW5nXCIgY2xhc3M9XCJ0aW1lci1kaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFRpbWUoKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLXJlbW92ZVwiID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVtb3ZlLWJ0blwiIChjbGljayk9XCJhZGRSZW1vdmVQYXJ0aWNpcGFudCgpXCI+UmVtb3ZlPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmYtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaXJjbGUtYnRuXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc011dGV9XCIgKGNsaWNrKT1cInRvZ2dsZU11dGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4ge3sgaXNNdXRlID8gJ21pY19vZmYnIDogJ21pYycgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaXJjbGUtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZUtleXBhZCgpXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiB0cmFuc2l0aW9uX2Rpc3NvbHZlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2lyY2xlLWJ0blwiICBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIiAoY2xpY2spPVwidG9nZ2xlQ29udGFjdHNQYW5lbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBhZGQgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLWVuZFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjaXJjbGUtYnRuIGRhbmdlclwiIChjbGljayk9XCJlbmRDYWxsKClcIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNhbGxfZW5kIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0cy1wYW5lbFwiICpuZ0lmPVwiaXNBZGRSZW1vdmVQYXJ0aWNpcGFudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RzLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBiYWNrXCIgKGNsaWNrKT1cInRvZ2dsZUNvbnRhY3RzUGFuZWwoKVwiPiBjaGV2cm9uX2xlZnQgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPkNvbnRhY3RzPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHNlYXJjaFwiPiBzZWFyY2ggPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdHMtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgYyBvZiBhbGxQYXJ0aWNpcGVudExpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNvbnRhY3QtYXZhdGFyXCIgW3NyY109XCJjLmltZyB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZydcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1uYW1lXCI+e3tjLmZpcnN0TmFtZX19IHt7Yy5taWRkbGVOYW1lfX0ge3tjLmxhc3ROYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0LXRpdGxlXCI+e3sgKGMubnVtYmVyc0xpc3QgJiYgYy5udW1iZXJzTGlzdFswXT8ubnVtYmVyKX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29uZmVyZW5jZS1jb250YWN0XCIgKGNsaWNrKT1cIm9uSG9sZENhbGwoYylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHRpdGxlPVwiSG9sZFwiPiBwaG9uZV9wYXVzZWQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxhYmVsXCI+SG9sZDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZlcmVuY2UtY29udGFjdFwiIChjbGljayk9XCJvbkVuZENhbGwoYylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHRpdGxlPVwiQ2FsbCBFbmRcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxhYmVsXCI+RW5kPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhdmUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwid2F2ZXNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAyNCAxNTAgMjhcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJnZW50bGUtd2F2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTS0xNjAgNDRjMzAgMCA1OC0xOCA4OC0xOHMgNTggMTggODggMTggNTgtMTggODgtMTggNTggMTggODggMTggdjQ0aC0zNTJ6XCIgLz5cbiAgICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICAgICAgPGcgY2xhc3M9XCJwYXJhbGxheFwiPlxuICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiMFwiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNylcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiM1wiIGZpbGw9XCJyZ2JhKDI1NSwyNTUsMjU1LDAuNSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDx1c2VcbiAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCJcbiAgICAgICAgICAgICAgICB4PVwiNDhcIlxuICAgICAgICAgICAgICAgIHk9XCI1XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjMpXCJcbiAgICAgICAgICAgICAgLz4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiIHg9XCI0OFwiIHk9XCI3XCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWluLWNhbGwtY29udGFpbmVyXCIgKm5nSWY9XCJpc01pbmltaXNlZFwiPlxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmdWxsc2NyZWVuXCIgKGNsaWNrKT1cIm1heGltaXNlRGlhbHBhZCgpXCI+IG9wZW5faW5fZnVsbCA8L3NwYW4+XG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAxMDAlXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLWNhbGwtYW5pbWF0aW9uXCIgaWQ9XCJjYWxsLWF2YXRhclwiPlxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaW4tYXZhdGFyLWltZ1wiIFtzcmNdPVwiY2FsbERhdGEuaW1nXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW4tY2FsbGVyRGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Y2FsbERhdGEubmFtZX19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJtYXJnaW46IDBcIj57e2NhbGxEYXRhLmRpc3BsYXlOdW0gPyBjYWxsRGF0YS5kaXNwbGF5TnVtIDogY2FsbERhdGEucGhvbmUgfX08L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pbi1idG4tY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaW4tdGltZXJcIj57e3RpbWVyfX08L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1pbi1jYWxsLXNlYy1idG5cIiAoY2xpY2spPVwidG9nZ2xlTXV0ZSgpXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cImlzTXV0ZVwiPiBtaWNfb2ZmIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiIWlzTXV0ZVwiPiBtaWMgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1pbi1jYWxsLWJ0biBlbmQtY2FsbC1idG5cIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIiAoY2xpY2spPVwiZW5kQ2FsbCgpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gY2FsbF9lbmQgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
889
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbC1wcm9ncmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvY29tcG9uZW50cy9jYWxsLXByb2dyZXNzL2NhbGwtcHJvZ3Jlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGlhbGJveC9zcmMvbGliL2NvbXBvbmVudHMvY2FsbC1wcm9ncmVzcy9jYWxsLXByb2dyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFRLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBcUI5QyxNQUFNLE9BQU8scUJBQXFCO0lBZ0RoQyxzQkFBc0I7SUFDdEIsc0ZBQXNGO0lBQ3RGLDhGQUE4RjtJQUM5RixrR0FBa0c7SUFDbEcsNkVBQTZFO0lBQzdFLDhGQUE4RjtJQUM5Riw2RUFBNkU7SUFDN0UsS0FBSztJQUNMLFlBQW9CLGdCQUFrQyxFQUFVLEdBQXNCLEVBQVUsYUFBNEI7UUFBeEcscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFyRG5ILHlCQUFvQixHQUFLLEVBQUUsQ0FBQztRQUUzQixpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzVE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QUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxJQUFRO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCx3QkFBd0IsQ0FBQyxJQUFRO1FBQy9CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7bUhBcDdCVSxxQkFBcUI7dUdBQXJCLHFCQUFxQix5WUM3QmxDLHN0cEJBK1hNOzRGRGxXTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO21LQUtwQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQW1CRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGwsIERldmljZSB9IGZyb20gJ0B0d2lsaW8vdm9pY2Utc2RrJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFR3aWxpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3R3aWxpby5zZXJ2aWNlJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50cyc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBrZXlwYWQgfSBmcm9tICcuLi8uLi8uLi9rZXlwYWQnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5cblxuaW50ZXJmYWNlIENhbGxEZXRhaWxzIHtcbiAgY2FsbFNpZDogc3RyaW5nO1xuICBjYWxsU3RhdHVzOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQ2FsbFN0YXR1c1Jlc3BvbnNlIHtcbiAgY2FsbERldGFpbHM6IENhbGxEZXRhaWxzO1xuICByZXNwb25zZTogc3RyaW5nO1xuICBlcnJvclR5cGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBzdGF0dXM6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNhbGwtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsbC1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGwtcHJvZ3Jlc3MuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhbGxQcm9ncmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgY2FsbERhdGE6IGFueTtcbiAgQElucHV0KCkgbmV3SW5jb21pbmdDYWxsRGF0YT86Q2FsbDtcbiAgQElucHV0KCkgbmV3SW5jb21pbmdDYWxsc0xpc3Q6YW55PVtdO1xuICBASW5wdXQoKSBkZXZpY2VJZDphbnk7XG4gIEBPdXRwdXQoKSBlbmRDYWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGluY29taW5nQ2FsbHNOZXdJbmZvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBcbiAgQE91dHB1dCgpIG1pbmltaXNlRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgZGV2aWNlPzogRGV2aWNlO1xuICBjYWxsPzogQ2FsbCB8IGFueTtcbiAgc2hvd1JpbmdBbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGltZXI6IHN0cmluZyA9ICcwMDowMCc7XG4gIGludGVydmFsSWQ6IGFueTtcbiAgc2hvd0tleXBhZDogYm9vbGVhbiA9IGZhbHNlO1xuICBrZXlwYWRWYWwgPSBrZXlwYWQ7XG4gIGNhbGxJbnB1dDogc3RyaW5nID0gJyc7XG4gIGlzTXV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNiYWxlRW5kQ2FsbEJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dDbGVhckJ0bjpib29sZWFuID0gZmFsc2U7XG4gIGlzQ29sbG9wcz0gZmFsc2U7XG4gIC8vIENvbmZlcmVuY2Ugc3RhdGUgZmxhZ1xuICBpc0NvbmZlcmVuY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNPdXRnb2luZ0NhbGw6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyBJbmNvbWluZyBjYWxsIHZhcmlhYmxlc1xuICBpbmNvbWluZ0NhbGxEaXY6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy9AT3V0cHV0KCkgc2hvd0NhbGxQcm9ncmVzc0V2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxJbml0aWF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvLyBSZWNvcmRpbmcgdmFyaWFibGVzXG4gIGNhbGxTaWQ6IGFueTtcbiAgaXNSZWNvcmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNQYXVzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdGltZXJTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHRpbWVFbGFwc2VkID0gMDsgLy8gaW4gc2Vjb25kc1xuICByZWNvcmRDYWxsOiBib29sZWFuID0gZmFsc2U7XG4gIGluY29taW5nQ2FsbFNpZDogYW55O1xuICBjYWxsU3RhdHVzOiBzdHJpbmcgPSAncmluZ2luZyc7XG4gIGluY29taW5nUmVjb3JkQ2FsbD86IGFueTtcbiAgc2VsZWN0ZWRJbmNvbWluZ0NhbGw6IGFueTtcbiAgc2hvd0NvbnRhY3RzUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNBZGRSZW1vdmVQYXJ0aWNpcGFudDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvbmN1cnJlbnRJbmNvbWluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBoZWxkQ2FsbD86IENhbGwgfCBhbnk7XG4gIGlzQ2FsbE9uSG9sZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb250YWN0czogYW55IFtdID0gW107XG4gIGNvbmZlcmVuY2VJZDogYW55O1xuICBhbGxQYXJ0aWNpcGVudExpc3Q6IGFueTtcbiAgLy8gY29udGFjdHM6IGFueVtdID0gW1xuICAvLyAgIHsgbmFtZTogJ1BhbWVsYSBDb3gnLCB0aXRsZTogJ1Byb2R1Y3QgRGVzaWduZXInLCBpbWc6ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJyB9LFxuICAvLyAgIHsgbmFtZTogJ1JvZ2VyIFMuIFdvb2QnLCB0aXRsZTogJ0phdmFTY3JpcHQgUHJvZ3JhbW1lcicsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH0sXG4gIC8vICAgeyBuYW1lOiAnVmljdG9yIEJsYWNrc3RvbicsIHRpdGxlOiAnRGF0YWJhc2UgQWRtaW5pc3RyYXRvcicsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH0sXG4gIC8vICAgeyBuYW1lOiAnVGFtbXkgUmlvcycsIHRpdGxlOiAnU3VwcG9ydCcsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH0sXG4gIC8vICAgeyBuYW1lOiAnQ2FybG9zIEhlbmRlcnNvbicsIHRpdGxlOiAnU29mdHdhcmUgQXJjaGl0ZWN0JywgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycgfSxcbiAgLy8gICB7IG5hbWU6ICdFbGl6YWJldGggQmFpbGV5JywgdGl0bGU6ICdIUicsIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnIH1cbiAgLy8gXTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdHdpbGlvU2VydmljZTogVHdpbGlvU2VydmljZSkgeyBcbiAgICBjb25zb2xlLmxvZygnQ2FsbCBQcm9ncmVzcyBDb21wb25lbnQnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnNvbGUubG9nKCdDYWxsIFByb2dyZXNzIENvbXBvbmVudCBuZ09uSW5pdCcpO1xuICAgIC8vIFN1YnNjcmliZSB0byBpbmNvbWluZyBjYWxscyBmcm9tIFR3aWxpb1NlcnZpY2VcbiAgICB0cnkge1xuICAgICAgdGhpcy50d2lsaW9TZXJ2aWNlLmN1cnJlbnRDYWxsLnN1YnNjcmliZSgoaW5jb21pbmc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWluY29taW5nKSB7IHJldHVybjsgfVxuICAgICAgICBjb25zb2xlLmxvZygnVHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbCBlbWl0dGVkOicsIGluY29taW5nKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0N1cnJlbnQgY2FsbCBzdGF0dXM6JywgdGhpcy5jYWxsPy5zdGF0dXMoKSk7XG4gICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIG9uZ29pbmcgY2FsbCwgc2hvdyBjb25jdXJyZW50IGluY29taW5nIGJhbm5lclxuICAgICAgICBpZiAodGhpcy5jYWxsICYmIHRoaXMuY2FsbC5zdGF0dXMoKSA9PT0gJ29wZW4nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0NvbmN1cnJlbnQgaW5jb21pbmcgZGV0ZWN0ZWQgLSBzaG93aW5nIGJhbm5lcicpO1xuICAgICAgICAgIHRoaXMuaXNDb25jdXJyZW50SW5jb21pbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gdHJ1ZTtcbiAgICAgICAgICAvLyBBZGQgdG8gbGlzdCBpZiBub3QgcHJlc2VudFxuICAgICAgICAgIGNvbnN0IGV4aXN0cyA9ICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0IHx8IFtdKS5zb21lKChjOiBhbnkpID0+IGM/LnBhcmFtZXRlcnM/LkNhbGxTaWQgPT09IGluY29taW5nPy5wYXJhbWV0ZXJzPy5DYWxsU2lkKTtcbiAgICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IFsuLi4odGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCB8fCBbXSksIGluY29taW5nXTtcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm8uZW1pdCh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJzY3JpYmluZyB0byBpbmNvbWluZyBjYWxsczonLCBlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7ICAgIFxuICAgIGNvbnNvbGUubG9nKCdDYWxsIFByb2dyZXNzIENvbXBvbmVudCBuZ09uQ2hhbmdlcycpO1xuICAgIGlmIChjaGFuZ2VzWydjYWxsRGF0YSddKSB7ICAgICAgXG4gICAgICBpZiAoY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWU/LmlzSW5jb21pbmdDYWxsKSB7XG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jYWxsWydjYWxsSW5mbyddPSB7Li4udGhpcy5jYWxsRGF0YX07XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgXG4gICAgICB9IGVsc2UgaWYoY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWU/LmRpc3BsYXlOdW0gfHwgY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWU/LmZyb20pIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3Rlc3Qtc3RhcnRDYWxsMTIzJylcbiAgICAgICAgdGhpcy5zdGFydENhbGwoY2hhbmdlc1snY2FsbERhdGEnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snbmV3SW5jb21pbmdDYWxsRGF0YSddKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoY2hhbmdlc1snbmV3SW5jb21pbmdDYWxsRGF0YSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYW4gYWN0aXZlIG9uZ29pbmcgY2FsbFxuICAgICAgICAgIGlmICh0aGlzLmNhbGwgJiYgKHRoaXMuY2FsbC5zdGF0dXMoKSA9PSAnb3BlbicpKSB7XG4gICAgICAgICAgICAvLyBDb25jdXJyZW50IGluY29taW5nIC0gc2hvdyBiYW5uZXIgb24gdG9wIG9mIGFjdGl2ZSBjYWxsXG4gICAgICAgICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGluYyA9IGNoYW5nZXNbJ25ld0luY29taW5nQ2FsbERhdGEnXS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCAmJiBBcnJheS5pc0FycmF5KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3Quc29tZSgoYzogYW55KSA9PiBjPy5wYXJhbWV0ZXJzPy5DYWxsU2lkID09PSBpbmM/LnBhcmFtZXRlcnM/LkNhbGxTaWQpO1xuICAgICAgICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSBbLi4udGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCwgaW5jXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNOZXdJbmZvLmVtaXQodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSBbaW5jXTtcbiAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3SW5mby5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBQdXJlIGluY29taW5nIC0gc2hvdyBmdWxsIGluY29taW5nIFVJXG4gICAgICAgICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbERpdiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgLy8gfSwgMzAwMCk7XG5cbiAgIH1cblxuICBHZXRDb250YWN0c0xpc3QoKSB7ICBcbiAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfHwgJyc7XG4gIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5yZWFkQ29udGFjdHModG9rZW4pLnN1YnNjcmliZShcbiAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdBUEkgUmVzcG9uc2U6JywgcmVzKTtcblxuICAgICAgLy8gTm90ZTogQ2FwaXRhbCBCIGluIHBob25lQm9va1xuICAgICAgaWYgKHJlcyAmJiByZXMucGhvbmVCb29rKSB7XG4gICAgICAgIHRoaXMuY29udGFjdHMgPSByZXMucGhvbmVCb29rO1xuICAgICAgICBjb25zb2xlLmxvZygnQ29udGFjdHMgYXJyYXk6JywgdGhpcy5jb250YWN0cyk7XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICB0aGlzLmNvbnRhY3RzID0gcmVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250YWN0cyA9IFtdO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZygnQ29udGFjdHMgYXJyYXk6JywgdGhpcy5jb250YWN0cyk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSxcbiAgICAoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbnRhY3RzOicsIGVycm9yKTtcbiAgICAgIHRoaXMuY29udGFjdHMgPSBbXTtcbiAgICB9XG4gICk7XG59XG5hZGRSZXM6IGFueTtcbiAgYXN5bmMgc3RhcnRDYWxsKGNhbGxEYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhjYWxsRGF0YSwgJ2NhbGxEYXRhJyk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSB0cnVlO1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgY2hhbm5lbElkOiBlbnZpcm9ubWVudC5jaGFubmVsSWQsXG4gICAgICAgIHVzZXJJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpLFxuICAgICAgICB0bzogY2FsbERhdGEucGhvbmUsXG4gICAgICAgIGZyb21OdW1iZXI6IGNhbGxEYXRhLmZyb20sXG4gICAgICAgIHNjb3BlOiAnbG9jYWwnLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmluaXRpYXRlQ2FsbChwYXlsb2FkKTtcbiAgICAgIHRoaXMuY29uZmVyZW5jZUlkID0gcmVzcG9uc2U/LmNhbGxhdXRoPy5pZDtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IHsgaWQ6IGNhbGxBdXRoSWQsIHJlY29yZENhbGwgfSA9IGF3YWl0IHRoaXMuZ2V0Q2FsbEF1dGhJZChyZXNwb25zZSk7XG4gICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGNhbGxBdXRoSWQpXG4gICAgICAgIHRoaXMucmVjb3JkQ2FsbCA9IHJlY29yZENhbGw7IC8vIFN0b3JlIHRoZSByZWNvcmRDYWxsIHZhbHVlXG4gICAgICAgIGNvbnN0IHRva2VuRGF0YTogYW55ID0gYXdhaXQgdGhpcy5nZXRPdXRnb2luZ0NhbGxUb2tlbihjYWxsQXV0aElkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0VG9EZXZpY2UodG9rZW5EYXRhLnRva2VuLCBjYWxsRGF0YSk7XG4gICAgICAgIGF3YWl0IHRoaXMucG9sbENhbGxTdGF0dXMoY2FsbEF1dGhJZCk7XG5cbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKT0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5hZGRSZXMgPSBhd2FpdCB0aGlzLmFkZFBhcnRpY2lwYW50VG9DYWxsKHtcbiAgICAgICAgICAgICAgZnJvbTogY2FsbERhdGE/LmZyb20sIFxuICAgICAgICAgICAgICByb3V0ZTogXCJPVVRHT0lOR1wiLCBcbiAgICAgICAgICAgICAgcGFydGljaXBhbnROdW1iZXI6IGNhbGxEYXRhPy5waG9uZSwgXG4gICAgICAgICAgICAgIGNvbmZlcmVuY2VJZDogdGhpcy5jb25mZXJlbmNlSWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YSA9IHsgLi4udGhpcy5jYWxsRGF0YSwgcGFydGljaXBhbnRJZDogdGhpcy5hZGRSZXM/LnBhcnRpY2lwYW50SWQgfTtcbiAgICAgICAgICAgIHRoaXMuY2FsbFsnY2FsbEluZm8nXT0gey4uLnRoaXMuY2FsbERhdGF9O1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0luaXRpYWwgcGFydGljaXBhbnRJZDonLCB0aGlzLmFkZFJlcz8ucGFydGljaXBhbnRJZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWRkaW5nIGluaXRpYWwgcGFydGljaXBhbnQ6JywgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwKVxuICAgICAgICAvLyBQb2xsIHRoZSBzdGF0dXMgZm9yIDMwLTQ1IHNlY29uZHNcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDIwMSkge1xuICAgICAgICBzd2FsKFwiRXJyb3JcIiwgcmVzcG9uc2UubWVzc2FnZS5qb2luKFwiPGJyLz5cIiksIFwiZXJyb3JcIik7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0MicpXG4gICAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgICAgfVxuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgY29uc29sZS5sb2coJ3Rlc3QzJylcbiAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSG9sZENhbGwoYzphbnkpe1xuICAgIGNvbnNvbGUubG9nKGMsJ2RzZHNkc2RzZHNkc2Fkc2EnKTtcbiAgICB0aGlzLm9uaG9sZE9yVW5ob2xkUGFydGljaXBhbnQoe1xuICAgICAgcGFydGljaXBhbnRJZDogYy5wYXJ0aWNpcGFudElkLFxuICAgICAgY29uZmVyZW5jZUlkOiB0aGlzLmNvbmZlcmVuY2VJZCxcbiAgICAgIGhvbGQ6IHRydWVcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgb25FbmRDYWxsKGM6YW55KXtcbiAgICBjb25zb2xlLmxvZyhjLCdkc2RzZHNkc2RzZHNhZHNhJyk7XG4gICAgYXdhaXQgdGhpcy5nZXRSZW1vdmVQYXJ0aWNpcGFudHMoYy5wYXJ0aWNpcGFudElkLHRoaXMuY29uZmVyZW5jZUlkKTtcbiAgICBhd2FpdCB0aGlzLmdldEFsbFBhcnRpY2lwYW50cyh0aGlzLmNvbmZlcmVuY2VJZCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGluaXRpYXRlQ2FsbChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmluaXRpYXRlQ2FsbChwYXlsb2FkKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gICBhc3luYyBvbmhvbGRPclVuaG9sZFBhcnRpY2lwYW50KHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4dGVuc2lvblNlcnZpY2UuaG9sZFBhcnRpY2lwYW50KHBheWxvYWQpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRQYXJ0aWNpcGFudFRvQ2FsbChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmFkZFBhcnRpY2lwYW50KHBheWxvYWQpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDYWxsU3RhdHVzT2ZQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZDphbnkpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENhbGxTdGF0dXNPZlBhcnRpY2lwYW50cyhwYXJ0aWNpcGFudElkKS50b1Byb21pc2UoKTtcbiAgfVxuICBcbiAgcHJpdmF0ZSBhc3luYyBnZXRSZW1vdmVQYXJ0aWNpcGFudHMocGFydGljaXBhbnRJZDphbnksY29uZmVyZW5jZUlkOmFueSkge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0UmVtb3ZlUGFydGljaXBhbnRzKHBhcnRpY2lwYW50SWQsY29uZmVyZW5jZUlkKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2FsbEF1dGhJZChyZXNwb25zZTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiByZXNwb25zZS5jYWxsYXV0aC5pZCxcbiAgICAgIHJlY29yZENhbGw6IHJlc3BvbnNlLmNhbGxhdXRoLnJlY29yZENhbGxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRPdXRnb2luZ0NhbGxUb2tlbihjYWxsQXV0aElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENvbmZlcmVuY2VDYWxsVG9rZW4oeyBhdXRoSWQ6IGNhbGxBdXRoSWQgfSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbm5lY3RUb0RldmljZSh0b2tlbjogYW55LCBjYWxsRGF0YTogYW55KSB7XG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgY29kZWNQcmVmZXJlbmNlczogWydvcHVzJywgJ3BjbXUnXSxcbiAgICAgIGNsb3NlUHJvdGVjdGlvbjogdHJ1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy5kZXZpY2UgPSBuZXcgRGV2aWNlKHRva2VuLnZhbHVlLCBvcHRpb25zKTtcbiAgICB0aGlzLmNhbGwgPSBhd2FpdCB0aGlzLmRldmljZS5jb25uZWN0KHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBGcm9tOiBjYWxsRGF0YS5mcm9tLFxuICAgICAgICBUbzogY2FsbERhdGEucGhvbmUsXG4gICAgICAgIEVudjogZW52aXJvbm1lbnQuYWJiLFxuICAgICAgICBUb2tlbjogdG9rZW4uaWQsXG4gICAgICAgIEV4dDogY2FsbERhdGEuZXh0TnVtXG4gICAgICB9LFxuICAgICAgcnRjQ29uc3RyYWludHM6IHsgYXVkaW86IHsgZGV2aWNlSWQ6ICdkZWZhdWx0JyB9IH0sXG4gICAgfSk7XG4gICAgdGhpcy5jYWxsWydjYWxsSW5mbyddID0gY2FsbERhdGE7XG4gICAgdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwRXZlbnRMaXN0ZW5lcnMoKSB7XG5cbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB0aGlzLmRldmljZT8ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbGw/Lm9uKCdlcnJvcicsIChlcnJvcjphbnkpID0+IHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNhbGw/Lm9uKCdkaXNjb25uZWN0JywgKGl0ZW06YW55KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygndGVzdC1kaXNjb25uZWN0JylcbiAgICAgIC8vIHRoaXMuZW5kQ2FsbCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jYWxsPy5vbigncmluZ2luZycsICgpID0+IHtcbiAgICB9KTtcblxuICAgIHRoaXMuY2FsbD8ub24oJ3JlamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCd0ZXN0NScpXG4gICAgICB0aGlzLmVuZENhbGwoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2FsbD8ub24oJ2FjY2VwdCcsICgpID0+IHtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZGlzYmFsZUVuZENhbGxCdG4gPSBmYWxzZTtcbiAgICAgIC8vIFN0YXJ0IHJlY29yZGluZyBpZiByZWNvcmRDYWxsIGlzIHRydWUgYW5kIGNhbGwgaXMgYWNjZXB0ZWQgZm9yIDMwIHNlY29uZHNcbiAgICAgIC8vIGlmICh0aGlzLnJlY29yZENhbGwpIHtcbiAgICAgIC8vICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyAgICAgaWYgKHRoaXMuaXNSZWNvcmRpbmcpIHJldHVybjsgLy8gSWYgYWxyZWFkeSByZWNvcmRpbmcsIHNraXBcbiAgICAgIC8vICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgICAvLyAgIH0sIDMwMDAwKTtcbiAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAvLyAgIHRoaXMuc3RvcFJlY29yZGluZygpO1xuICAgICAgLy8gfVxuICAgIH0pO1xuICAgIHRoaXMuY2FsbD8ub24oJ21lc3NhZ2VSZWNlaXZlZCcsIChtZXNzYWdlOmFueSkgPT4ge1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFRpbWVyKCkge1xuICAgIGxldCBzZWNvbmRzID0gMDtcbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzZWNvbmRzKys7XG4gICAgICB0aGlzLnRpbWVyID0gdGhpcy5mb3JtYXRUaW1lKHNlY29uZHMpO1xuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGltZXIoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xuICAgIHRoaXMudGltZXIgPSAnMDA6MDAnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRUaW1lKHRvdGFsU2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcih0b3RhbFNlY29uZHMgLyA2MCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsU2Vjb25kcyAlIDYwO1xuICAgIHJldHVybiBgJHt0aGlzLnBhZChtaW51dGVzKX06JHt0aGlzLnBhZChzZWNvbmRzKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWQodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlIDwgMTAgPyBgMCR7dmFsdWV9YCA6IGAke3ZhbHVlfWA7XG4gIH1cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KSB7XG4gICAgc3dhbChcIkVycm9yXCIsIGVycm9yLCBcImVycm9yXCIpO1xuICB9XG5cbiAgLy8gZW5kQ2FsbCgpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnZW5kQ2FsbCgpIGNhbGxlZCcpO1xuICAvLyAgIGNvbnNvbGUubG9nKCdDdXJyZW50IGNhbGw6JywgdGhpcy5jYWxsPy5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuICAvLyAgIGNvbnNvbGUubG9nKCdIZWxkIGNhbGwgZXhpc3RzOicsICEhdGhpcy5oZWxkQ2FsbCk7XG4gICAgXG4gIC8vICAgLy8gRGlzY29ubmVjdCB0aGUgY3VycmVudCBhY3RpdmUgY2FsbFxuICAvLyAgIGlmICh0aGlzLmNhbGwpIHtcbiAgLy8gICAgIHRoaXMuY2FsbC5kaXNjb25uZWN0KCk7XG4gIC8vICAgICB0aGlzLmNhbGwgPSB1bmRlZmluZWQ7XG4gIC8vICAgfVxuXG4gIC8vICAgdGhpcy5zaG93UmluZ0FuaW1hdGlvbiA9IGZhbHNlO1xuICAvLyAgIHRoaXMuc3RvcFRpbWVyKCk7XG4gICAgXG4gIC8vICAgLy8gSWYgdGhlcmUncyBhIGhlbGQgY2FsbCwgbWFrZSBpdCBhY3RpdmVcbiAgLy8gICBpZiAodGhpcy5oZWxkQ2FsbCkge1xuICAvLyAgICAgY29uc29sZS5sb2coJ1Jlc3VtaW5nIGhlbGQgY2FsbDonLCB0aGlzLmhlbGRDYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXSk7XG4gICAgICBcbiAgLy8gICAgIC8vIE1ha2UgaGVsZCBjYWxsIHRoZSBhY3RpdmUgY2FsbFxuICAvLyAgICAgdGhpcy5jYWxsID0gdGhpcy5oZWxkQ2FsbDtcbiAgLy8gICAgIHRoaXMuaGVsZENhbGwgPSB1bmRlZmluZWQ7XG4gIC8vICAgICAvLyB0aGlzLmlzQ2FsbE9uSG9sZCA9IGZhbHNlO1xuICAvLyAgICAgdGhpcy5pc0NhbGxPbkhvbGQgPSAhIXRoaXMuaGVsZENhbGw7XG5cbiAgICAgIFxuICAvLyAgICAgLy8gVW5tdXRlIHRoZSByZXN1bWVkIGNhbGxcbiAgLy8gICAgIHRoaXMuY2FsbC5tdXRlKGZhbHNlKTtcbiAgICAgIFxuICAvLyAgICAgLy8gVXBkYXRlIFVJIHdpdGggdGhlIHJlc3VtZWQgY2FsbCBpbmZvXG4gIC8vICAgICBjb25zdCBmcm9tTnVtYmVyID0gdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgLy8gICAgIGNvbnN0IGNhbGxlck5hbWUgPSB0aGlzLmNhbGwuY3VzdG9tUGFyYW1ldGVycz8uZ2V0KCduYW1lJykgfHwgJy0nO1xuICAvLyAgICAgY29uc3QgY2FsbGVySW1nID0gdGhpcy5jYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgICBcbiAgLy8gICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gIC8vICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gIC8vICAgICAgIHBob25lOiBmcm9tTnVtYmVyLFxuICAvLyAgICAgICBkaXNwbGF5TnVtOiBmcm9tTnVtYmVyLFxuICAvLyAgICAgICBuYW1lOiBjYWxsZXJOYW1lLFxuICAvLyAgICAgICBpbWc6IGNhbGxlckltZ1xuICAvLyAgICAgfTtcbiAgICAgIFxuICAvLyAgICAgLy8gUmVzdGFydCB0aW1lciBmb3IgdGhlIHJlc3VtZWQgY2FsbFxuICAvLyAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gIC8vICAgICB0aGlzLmRpc2JhbGVFbmRDYWxsQnRuID0gZmFsc2U7XG4gICAgICBcbiAgLy8gICAgIGNvbnNvbGUubG9nKCdIZWxkIGNhbGwgaXMgbm93IGFjdGl2ZTonLCB0aGlzLmNhbGxEYXRhKTtcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgLy8gTm8gaGVsZCBjYWxsLCBjb21wbGV0ZWx5IGVuZFxuICAvLyAgICAgY29uc29sZS5sb2coJ05vIGhlbGQgY2FsbCwgZW5kaW5nIGNvbXBsZXRlbHknKTtcbiAgLy8gICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgLy8gICAgIHRoaXMubWF4aW1pc2VEaWFscGFkKCk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgZW5kQ2FsbCgpIHtcbiAgICBjb25zb2xlLmxvZygnZW5kQ2FsbCgpIGNhbGxlZCcpO1xuICAgIGNvbnNvbGUubG9nKCdDdXJyZW50IGNhbGw6JywgdGhpcy5jYWxsPy5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuICAgIGNvbnNvbGUubG9nKCdIZWxkIGNhbGwgZXhpc3RzOicsICEhdGhpcy5oZWxkQ2FsbCk7XG4gICAgLy8gTGVhdmluZyBjb25mZXJlbmNlIHN0YXRlIHdoZW4gZW5kaW5nIGN1cnJlbnQgY2FsbCBhY3Rpb25cbiAgICB0aGlzLmlzQ29uZmVyZW5jZSA9IGZhbHNlO1xuXG4gICAgLy8gaWYgKHRoaXMuY2FsbCkge1xuICAgIC8vICAgICB0aGlzLmNhbGwuZGlzY29ubmVjdCgpO1xuICAgIC8vICAgICB0aGlzLmNhbGwucmVqZWN0KCk7XG4gICAgLy8gICAgIHRoaXMuY2FsbCA9IHVuZGVmaW5lZDtcbiAgICAvLyB9XG5cbiAgICB0aGlzLnNob3dSaW5nQW5pbWF0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5zdG9wVGltZXIoKTtcblxuICAgIGlmICh0aGlzLmhlbGRDYWxsKSB7XG4gICAgICBpZiAodGhpcy5jYWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGwuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5jYWxsID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdSZXN1bWluZyBoZWxkIGNhbGw6JywgdGhpcy5oZWxkQ2FsbC5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuXG4gICAgICAgIC8vIFByb21vdGUgaGVsZCBjYWxsXG4gICAgICAgIHRoaXMuY2FsbCA9IHRoaXMuaGVsZENhbGw7XG4gICAgICAgIHRoaXMuaGVsZENhbGwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7IC8vIEVuc3VyZSBVSSByZW5kZXJzXG5cbiAgICAgICAgdGhpcy5jYWxsLm11dGUoZmFsc2UpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBjYWxsRGF0YVxuICAgICAgICBjb25zdCBmcm9tTnVtYmVyID0gdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgICAgICAgY29uc3QgY2FsbGVyTmFtZSA9IHRoaXMuY2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ25hbWUnKSB8fCAnLSc7XG4gICAgICAgIGNvbnN0IGNhbGxlckltZyA9IHRoaXMuY2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ2ltYWdlJykgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xuXG4gICAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gICAgICAgICAgICBwaG9uZTogZnJvbU51bWJlcixcbiAgICAgICAgICAgIGRpc3BsYXlOdW06IGZyb21OdW1iZXIsXG4gICAgICAgICAgICBuYW1lOiBjYWxsZXJOYW1lLFxuICAgICAgICAgICAgaW1nOiBjYWxsZXJJbWdcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICAgICAgdGhpcy5kaXNiYWxlRW5kQ2FsbEJ0biA9IGZhbHNlO1xuXG4gICAgICAgIC8vIEZvcmNlIFVJIHVwZGF0ZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJ0hlbGQgY2FsbCBpcyBub3cgYWN0aXZlOicsIHRoaXMuY2FsbERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdObyBoZWxkIGNhbGwsIGVuZGluZyBjb21wbGV0ZWx5Jyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0NicpXG4gICAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuY2FsbCkge1xuICAgICAgICAgICAgdGhpcy5jYWxsLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgIC8vIHRoaXMuY2FsbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1heGltaXNlRGlhbHBhZCgpO1xuICAgIH1cbn1cblxuXG4gIHRvZ2dsZU11dGUoKSB7XG4gICAgdGhpcy5pc011dGUgPSAhdGhpcy5pc011dGU7XG4gICAgdGhpcy5jYWxsPy5tdXRlKHRoaXMuaXNNdXRlKTtcbiAgfVxuICB0b2dnbGVLZXlwYWQoKSB7XG4gICAgdGhpcy5zaG93S2V5cGFkID0gIXRoaXMuc2hvd0tleXBhZDtcbiAgICB0aGlzLmNhbGxJbnB1dCA9ICcnO1xuICB9XG4gIHRvZ2dsZUNvbnRhY3RzUGFuZWwoKSB7XG4gICAgdGhpcy5zaG93Q29udGFjdHNQYW5lbCA9ICF0aGlzLnNob3dDb250YWN0c1BhbmVsO1xuICAgIHRoaXMuR2V0Q29udGFjdHNMaXN0KCk7XG4gIH1cblxuICBhZGRSZW1vdmVQYXJ0aWNpcGFudCgpIHtcbiAgICBjb25zdCBjb25mZXJlbmNlU0lkID0gdGhpcy5hZGRSZXM/LmNvbmZlcmVuY2VTaWQ7XG4gICAgdGhpcy5pc0FkZFJlbW92ZVBhcnRpY2lwYW50ID0gIXRoaXMuaXNBZGRSZW1vdmVQYXJ0aWNpcGFudDtcbiAgICB0aGlzLmFsbFBhcnRpY2lwZW50TGlzdCA9IHRoaXMuZ2V0QWxsUGFydGljaXBhbnRzKGNvbmZlcmVuY2VTSWQpO1xuICB9XG5cblxuICBhc3luYyBjYWxsQ29udGFjdChjb250YWN0OiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnQWRkaW5nIHBhcnRpY2lwYW50OicsIGNvbnRhY3QpO1xuICAgIGNvbnNvbGUubG9nKCd0aGlzLmNhbGwnLCB0aGlzLmNhbGwpXG4gICAgY29uc29sZS5sb2coJ3RoaXMuY2FsbCcsIHRoaXMuY2FsbC5zdGF0dXMoKSlcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGFjdGl2ZSBjYWxsXG4gICAgaWYgKCF0aGlzLmNhbGwgfHwgdGhpcy5jYWxsLnN0YXR1cygpICE9PSAnb3BlbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGFjdGl2ZSBjYWxsJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEdldCB0aGUgcGhvbmUgbnVtYmVyIGZyb20gdGhlIGNvbnRhY3RcbiAgICBjb25zdCBwaG9uZU51bWJlciA9IGNvbnRhY3Q/Lm51bWJlcnNMaXN0Py5bMF0/Lm51bWJlcjtcbiAgICBpZiAoIXBob25lTnVtYmVyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdObyBwaG9uZSBudW1iZXIgZm91bmQgZm9yIGNvbnRhY3QnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcblxuICAgICAgYXdhaXQgdGhpcy5vbmhvbGRPclVuaG9sZFBhcnRpY2lwYW50KHtcbiAgICAgICAgcGFydGljaXBhbnRJZDogdGhpcy5jYWxsRGF0YT8ucGFydGljaXBhbnRJZCwgXG4gICAgICAgIGNvbmZlcmVuY2VJZDogdGhpcy5jb25mZXJlbmNlSWQsIFxuICAgICAgICBob2xkOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIC8vIFB1dCBjdXJyZW50IGNhbGwgb24gaG9sZFxuICAgICAgdGhpcy5oZWxkQ2FsbCA9IHRoaXMuY2FsbDtcbiAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gdHJ1ZTtcbiAgICAgIHRoaXMuaGVsZENhbGwubXV0ZSh0cnVlKTtcbiAgICAgIFxuICAgICAgLy8gQ2xvc2UgY29udGFjdHMgcGFuZWwgYW5kIHNob3cgcmluZyBhbmltYXRpb25cbiAgICAgIHRoaXMuc2hvd0NvbnRhY3RzUGFuZWwgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd1JpbmdBbmltYXRpb24gPSB0cnVlO1xuICAgICAgLy8gVXBkYXRlIFVJIHRvIHJlZmxlY3QgdGhlIG5ldyBvdXRib3VuZCBsZWcgYmVpbmcgZGlhbGVkXG4gICAgICBjb25zdCBjb250YWN0TmFtZSA9IFtjb250YWN0Py5maXJzdE5hbWUsIGNvbnRhY3Q/Lm1pZGRsZU5hbWUsIGNvbnRhY3Q/Lmxhc3ROYW1lXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyk7XG4gICAgICB0aGlzLmNhbGxEYXRhID0ge1xuICAgICAgICAuLi50aGlzLmNhbGxEYXRhLFxuICAgICAgICBwaG9uZTogcGhvbmVOdW1iZXIsXG4gICAgICAgIGRpc3BsYXlOdW06IHBob25lTnVtYmVyLFxuICAgICAgICBuYW1lOiBjb250YWN0TmFtZSB8fCBwaG9uZU51bWJlcixcbiAgICAgICAgaW1nOiBjb250YWN0Py5pbWcgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnXG4gICAgICB9O1xuICAgICAgdGhpcy5jYWxsWydjYWxsSW5mbyddID0gey4uLnRoaXMuY2FsbERhdGF9O1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgXG4gICAgICAvLyBHZXQgdGhlIGNvbmZlcmVuY2UgSUQgZnJvbSB0aGUgY3VycmVudCBjYWxsIG9yIHVzZSB0aGUgc3RvcmVkIG9uZVxuICAgICAgY29uc3QgY29uZmVyZW5jZUlkID0gdGhpcy5jb25mZXJlbmNlSWQ7XG4gICAgICBcbiAgICAgIGlmICghY29uZmVyZW5jZUlkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyBjb25mZXJlbmNlSWQgZm91bmQgZm9yIGFjdGl2ZSBjYWxsXCIpO1xuICAgICAgICBzd2FsKFwiRXJyb3JcIiwgXCJDYW5ub3QgYWRkIHBhcnRpY2lwYW50OiBjb25mZXJlbmNlIG5vdCBmb3VuZFwiLCBcImVycm9yXCIpO1xuICAgICAgICB0aGlzLnNob3dSaW5nQW5pbWF0aW9uID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gQWRkIHBhcnRpY2lwYW50IHRvIHRoZSBjb25mZXJlbmNlXG4gICAgICBhd2FpdCB0aGlzLmFkZFBhcnRpY2lwYW50VG9DYWxsKHtcbiAgICAgICAgZnJvbTogdGhpcy5jYWxsRGF0YT8uZnJvbSxcbiAgICAgICAgcm91dGU6IFwiT1VUR09JTkdcIixcbiAgICAgICAgcGFydGljaXBhbnROdW1iZXI6IHBob25lTnVtYmVyLFxuICAgICAgICBjb25mZXJlbmNlSWQ6IGNvbmZlcmVuY2VJZFxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIGNvbnNvbGUubG9nKFwiUGFydGljaXBhbnQgYWRkZWQgdG8gY29uZmVyZW5jZTpcIiwgcGhvbmVOdW1iZXIpO1xuICAgICAgdGhpcy5zaG93UmluZ0FuaW1hdGlvbiA9IGZhbHNlO1xuICAgICAgXG4gICAgIFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgcGFydGljaXBhbnQ6JywgZXJyb3IpO1xuICAgICAgdGhpcy5zaG93UmluZ0FuaW1hdGlvbiA9IGZhbHNlO1xuICAgICAgLy8gUmVzdG9yZSBoZWxkIGNhbGwgb24gZXJyb3JcbiAgICAgIGlmICh0aGlzLmhlbGRDYWxsKSB7XG4gICAgICAgIHRoaXMuY2FsbCA9IHRoaXMuaGVsZENhbGw7XG4gICAgICAgIHRoaXMuaGVsZENhbGwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNDYWxsT25Ib2xkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FsbC5tdXRlKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGdldEFsbFBhcnRpY2lwYW50cyhjb25mZXJlbmNlU2lkOiBzdHJpbmcpe1xuICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRBbGxQYXJ0aWNpcGFudHMoY29uZmVyZW5jZVNpZCkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XG4gICAgICB0aGlzLmFsbFBhcnRpY2lwZW50TGlzdCA9IHJlcy5wYXJ0aWNpcGFudHM7XG4gICAgfSlcbiAgfVxuICBcbiAgLy8gYWNjZXB0Q29uY3VycmVudENhbGwoaW5jb21pbmdDYWxsOiBhbnkpIHtcbiAgLy8gICBpZiAoIWluY29taW5nQ2FsbCkgcmV0dXJuO1xuICAgIFxuICAvLyAgIC8vIFB1dCBjdXJyZW50IGNhbGwgb24gaG9sZCBpbnN0ZWFkIG9mIGRpc2Nvbm5lY3RpbmdcbiAgLy8gICBpZiAodGhpcy5jYWxsKSB7XG4gIC8vICAgICB0aGlzLmhlbGRDYWxsID0gdGhpcy5jYWxsO1xuICAvLyAgICAgdGhpcy5pc0NhbGxPbkhvbGQgPSB0cnVlO1xuICAvLyAgICAgLy8gTXV0ZSB0aGUgaGVsZCBjYWxsXG4gIC8vICAgICB0aGlzLmhlbGRDYWxsLm11dGUodHJ1ZSk7XG4gIC8vICAgfVxuICAgIFxuICAvLyAgIGluY29taW5nQ2FsbC5hY2NlcHQoKTtcbiAgLy8gICB0aGlzLmNhbGwgPSBpbmNvbWluZ0NhbGw7XG4gIC8vICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGluY29taW5nQ2FsbC5wYXJhbWV0ZXJzWydGcm9tJ107XG4gIC8vICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gaW5jb21pbmdDYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnbmFtZScpIHx8ICctJztcbiAgLy8gICB0aGlzLmNhbGxEYXRhLmltZyA9IGluY29taW5nQ2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ2ltYWdlJykgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xuICAvLyAgIHRoaXMuaXNDb25jdXJyZW50SW5jb21pbmcgPSBmYWxzZTtcbiAgLy8gICB0aGlzLmluY29taW5nQ2FsbERpdiA9IGZhbHNlO1xuICAvLyAgIHRoaXMuZGlzYmFsZUVuZENhbGxCdG4gPSBmYWxzZTtcbiAgICBcbiAgLy8gICAvLyBSZXNldCB0aW1lciBmb3IgbmV3IGNhbGxcbiAgLy8gICB0aGlzLnN0b3BUaW1lcigpO1xuICAvLyAgIHRoaXMuc3RhcnRUaW1lcigpO1xuICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgLy8gfVxuXG5cbiAgYWNjZXB0Q29uY3VycmVudENhbGwoaW5jb21pbmdDYWxsOiBhbnkpIHtcbiAgICBpZiAoIWluY29taW5nQ2FsbCkgcmV0dXJuO1xuXG4gICAgLy8gUHV0IGN1cnJlbnQgY2FsbCBvbiBob2xkIGluc3RlYWQgb2YgZGlzY29ubmVjdGluZ1xuICAgIGlmICh0aGlzLmNhbGwpIHtcbiAgICAgIHRoaXMuaGVsZENhbGwgPSB0aGlzLmNhbGw7XG4gICAgICB0aGlzLmlzQ2FsbE9uSG9sZCA9IHRydWU7XG4gICAgICAvLyBNdXRlIHRoZSBoZWxkIGNhbGxcbiAgICAgIHRoaXMuaGVsZENhbGwubXV0ZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBBY2NlcHQgdGhlIG5ldyBjYWxsXG4gICAgaW5jb21pbmdDYWxsLmFjY2VwdCgpO1xuICAgIHRoaXMuY2FsbCA9IGluY29taW5nQ2FsbDtcbiAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gaW5jb21pbmdDYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXTtcbiAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBpbmNvbWluZ0NhbGwuY3VzdG9tUGFyYW1ldGVycz8uZ2V0KCduYW1lJykgfHwgJy0nO1xuICAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgdGhpcy5pc0NvbmN1cnJlbnRJbmNvbWluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsRGl2ID0gZmFsc2U7XG4gICAgdGhpcy5kaXNiYWxlRW5kQ2FsbEJ0biA9IGZhbHNlO1xuXG4gICAgLy8g8J+foiBSZW1vdmUgdGhlIGFjY2VwdGVkIGNhbGwgZnJvbSBpbmNvbWluZyBsaXN0XG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9ICh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0IHx8IFtdKS5maWx0ZXIoXG4gICAgICAoYzogYW55KSA9PiBjPy5wYXJhbWV0ZXJzPy5DYWxsU2lkICE9PSBpbmNvbWluZ0NhbGw/LnBhcmFtZXRlcnM/LkNhbGxTaWRcbiAgICApO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm8uZW1pdCh0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0KTtcblxuICAgIC8vIPCflZIgUmVzZXQgdGltZXIgZm9yIG5ldyBjYWxsXG4gICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICB0aGlzLnN0YXJ0VGltZXIoKTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBcbiAgYXN5bmMgc3dhcENhbGxzKCkge1xuICAgIGlmICghdGhpcy5oZWxkQ2FsbCB8fCAhdGhpcy5jYWxsKSByZXR1cm47XG4gICAgY29uc29sZS5sb2codGhpcy5jYWxsLCAndGhpcy5jYWxsJyk7XG4gICAgY29uc29sZS5sb2codGhpcy5oZWxkQ2FsbCwgJ3RoaXMuaGVsZENhbGwnKTtcbiAgICBhd2FpdCB0aGlzLm9uaG9sZE9yVW5ob2xkUGFydGljaXBhbnQoe1xuICAgICAgcGFydGljaXBhbnRJZDogdGhpcy5jYWxsPy5jYWxsSW5mbz8ucGFydGljaXBhbnRJZCwgXG4gICAgICBjb25mZXJlbmNlSWQ6IHRoaXMuY29uZmVyZW5jZUlkLCBcbiAgICAgIGhvbGQ6IHRydWVcbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLm9uaG9sZE9yVW5ob2xkUGFydGljaXBhbnQoe1xuICAgICAgcGFydGljaXBhbnRJZDogdGhpcy5oZWxkQ2FsbD8uY2FsbEluZm8/LnBhcnRpY2lwYW50SWQsIFxuICAgICAgY29uZmVyZW5jZUlkOiB0aGlzLmNvbmZlcmVuY2VJZCwgXG4gICAgICBob2xkOiBmYWxzZVxuICAgIH0pO1xuICAgIGNvbnNvbGUubG9nKCdTd2FwcGluZyBjYWxscy4uLicpO1xuICAgIGNvbnNvbGUubG9nKCdCZWZvcmUgc3dhcCAtIEFjdGl2ZSBjYWxsOicsIHRoaXMuY2FsbC5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuICAgIGNvbnNvbGUubG9nKCdCZWZvcmUgc3dhcCAtIEhlbGQgY2FsbDonLCB0aGlzLmhlbGRDYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXSk7XG4gICAgXG4gICAgLy8gU3dhcCB0aGUgY2FsbHNcbiAgICBjb25zdCB0ZW1wID0gdGhpcy5jYWxsO1xuICAgIHRoaXMuY2FsbCA9IHRoaXMuaGVsZENhbGw7XG4gICAgdGhpcy5oZWxkQ2FsbCA9IHRlbXA7XG4gICAgXG5cbiAgICB0aGlzLmNhbGwubXV0ZShmYWxzZSk7XG4gICAgdGhpcy5oZWxkQ2FsbC5tdXRlKHRydWUpO1xuICAgIFxuICAgIC8vIFVwZGF0ZSBVSSB3aXRoIGFjdGl2ZSBjYWxsIGluZm8gLSBleHRyYWN0IGZyb20gY2FsbCBwYXJhbWV0ZXJzXG4gICAgY29uc3QgZnJvbU51bWJlciA9IHRoaXMuY2FsbC5wYXJhbWV0ZXJzWydGcm9tJ107XG4gICAgY29uc3QgY2FsbGVyTmFtZSA9IHRoaXMuY2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ25hbWUnKSB8fCAnLSc7XG4gICAgY29uc3QgY2FsbGVySW1nID0gdGhpcy5jYWxsLmN1c3RvbVBhcmFtZXRlcnM/LmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgY29uc3QgZGlzcGxheU51bWJlciA9IHRoaXMuY2FsbC5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ2Rpc3BsYXlOdW1iZXInKSB8fCAnLSc7XG4gICAgXG4gICAgLy8gVXBkYXRlIGNhbGxEYXRhIHRvIHJlZnJlc2ggdGhlIG1haW4gVUlcbiAgICB0aGlzLmNhbGxEYXRhID0ge1xuICAgICAgLi4udGhpcy5jYWxsRGF0YSxcbiAgICAgIHBob25lOiBmcm9tTnVtYmVyLFxuICAgICAgZGlzcGxheU51bTogKGRpc3BsYXlOdW1iZXIgJiYgZGlzcGxheU51bWJlciAhPT0gJy0nKSA/IGRpc3BsYXlOdW1iZXIgOiBmcm9tTnVtYmVyLFxuICAgICAgbmFtZTogKGNhbGxlck5hbWUgJiYgY2FsbGVyTmFtZSAhPT0gJy0nKSA/IGNhbGxlck5hbWUgOiAodGhpcy5jYWxsRGF0YT8ubmFtZSB8fCBmcm9tTnVtYmVyKSxcbiAgICAgIGltZzogY2FsbGVySW1nIHx8IHRoaXMuY2FsbERhdGE/LmltZyB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZydcbiAgICB9O1xuICAgIFxuICAgIGNvbnNvbGUubG9nKCdBZnRlciBzd2FwIC0gQWN0aXZlIGNhbGw6JywgdGhpcy5jYWxsLnBhcmFtZXRlcnNbJ0Zyb20nXSk7XG4gICAgY29uc29sZS5sb2coJ0FmdGVyIHN3YXAgLSBIZWxkIGNhbGw6JywgdGhpcy5oZWxkQ2FsbC5wYXJhbWV0ZXJzWydGcm9tJ10pO1xuICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIGNhbGxEYXRhOicsIHRoaXMuY2FsbERhdGEpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBcbiAgYXN5bmMgbWVyZ2VDYWxscygpIHtcbiAgICAvLyBNZXJnZSBmdW5jdGlvbmFsaXR5IC0gdW5tdXRlIGJvdGggY2FsbHMgZm9yIGNvbmZlcmVuY2VcbiAgICBpZiAodGhpcy5oZWxkQ2FsbCAmJiB0aGlzLmNhbGwpIHtcbiAgICAgIGF3YWl0IHRoaXMub25ob2xkT3JVbmhvbGRQYXJ0aWNpcGFudCh7XG4gICAgICAgIHBhcnRpY2lwYW50SWQ6IHRoaXMuaGVsZENhbGw/LmNhbGxJbmZvPy5wYXJ0aWNpcGFudElkLCBcbiAgICAgICAgY29uZmVyZW5jZUlkOiB0aGlzLmNvbmZlcmVuY2VJZCwgXG4gICAgICAgIGhvbGQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuaGVsZENhbGwubXV0ZShmYWxzZSk7XG4gICAgICB0aGlzLmNhbGwubXV0ZShmYWxzZSk7XG4gICAgICB0aGlzLmlzQ2FsbE9uSG9sZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pc0NvbmZlcmVuY2UgPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGVuZEhlbGRDYWxsKCkge1xuICAgIGlmICh0aGlzLmhlbGRDYWxsKSB7XG4gICAgICB0aGlzLmhlbGRDYWxsLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuaGVsZENhbGwgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmlzQ2FsbE9uSG9sZCA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBcbiAgcmVqZWN0Q29uY3VycmVudENhbGwoaW5jb21pbmdDYWxsOiBhbnkpIHtcbiAgXG4gICAgaWYgKCFpbmNvbWluZ0NhbGwpIHJldHVybjtcbiAgICBpZiAoaW5jb21pbmdDYWxsLnJlamVjdCkge1xuICAgICAgaW5jb21pbmdDYWxsLnJlamVjdCgpO1xuICAgIH1cbiAgICBpZiAoaW5jb21pbmdDYWxsLmRpc2Nvbm5lY3QpIGluY29taW5nQ2FsbC5kaXNjb25uZWN0KCk7XG4gICAgLy8gUmVtb3ZlIGZyb20gbGlzdFxuICAgIHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QgPSAodGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCB8fCBbXSkuZmlsdGVyKChjOiBhbnkpID0+IGM/LnBhcmFtZXRlcnM/LkNhbGxTaWQgIT09IGluY29taW5nQ2FsbD8ucGFyYW1ldGVycz8uQ2FsbFNpZCk7XG4gICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3SW5mby5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuICAgIC8vIElmIG5vIG1vcmUgaW5jb21pbmcsIGhpZGUgYmFubmVyXG4gICAgaWYgKCF0aGlzLm5ld0luY29taW5nQ2FsbHNMaXN0IHx8IHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmluY29taW5nQ2FsbERpdiA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgb25DYWxsSW5wdXRzKG51bTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG51bSkgfHwgbnVtID09ICcrJyB8fCBudW0gPT0gJyonIHx8IG51bSA9PSAnIycpIHtcbiAgICAgICAgaWYgKG51bSA9PSAnIycpIHtcbiAgICAgICAgICBuZXcgQXVkaW8oYC9hc3NldHMvZGlhbC10b25lcy9kdG1mL2R0bWYtaGFzaC0ubXAzYCkucGxheSgpO1xuICAgICAgICB9IGVsc2UgaWYgKG51bSA9PSAnKicpIHtcbiAgICAgICAgICBuZXcgQXVkaW8oYC9hc3NldHMvZGlhbC10b25lcy9kdG1mL2R0bWYtc3Rhci0ubXAzYCkucGxheSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi0ke251bX0tLm1wM2ApLnBsYXkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FsbElucHV0ID0gdGhpcy5jYWxsSW5wdXQgKyBTdHJpbmcobnVtKTtcbiAgICAgICAgdGhpcy5zaG93Q2xlYXJCdG4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgbGV0IHN0ciA9IFN0cmluZyhudW0pO1xuICAgICAgdGhpcy5jYWxsPy5zZW5kRGlnaXRzKHN0cik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG4gIG9uQ2FsbElucHV0RW50ZXIoZXY6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmNhbGw/LnNlbmREaWdpdHMoU3RyaW5nKGV2LmtleSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIH1cbiAgfVxuICBjbG9zZUluY29taW5nQ2FsbChkYXRhOiBhbnkpIHtcbiAgICAvLyB0aGlzLmluY29taW5nQ2FsbERpdiA9IGZhbHNlO1xuICAgIGlmIChkYXRhLnNob3cpIHtcbiAgICAgIC8vdGhpcy5zaG93Q2FsbFByb2dyZXNzRXZlbnQuZW1pdCgpXG4gICAgICAvLyBoYW5kbGUgaW5jb21pbmcgY2FsbCBhY2NlcHRlZFxuICAgICAgdGhpcy5zdGFydFRpbWVyKCk7XG4gICAgICB0aGlzLmRpc2JhbGVFbmRDYWxsQnRuID0gZmFsc2U7XG4gICAgICB0aGlzLmNhbGwgPSBkYXRhLmNhbGw7XG4gICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmluY29taW5nQ2FsbERpdiA9IGZhbHNlO1xuICAgIFxuICAgICAgY29uc3QgaW5jb21pbmdEZXRhaWwgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFNpZCgpO1xuICAgICAgdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgPSBpbmNvbWluZ0RldGFpbC5yZWNvcmRDYWxsO1xuXG4gICAgICBpZiAodGhpcy5pbmNvbWluZ1JlY29yZENhbGwpIHtcbiAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc1JlY29yZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmNvbWluZyBjYWxsIHJlamVjdGVkIG9yIGF1dG8tY2FuY2VsbGVkXG4gICAgICB0aGlzLmlzQ29uY3VycmVudEluY29taW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmluY29taW5nQ2FsbERpdiA9IGZhbHNlO1xuICAgICAgLy8gSWYgdGhlcmUgaXMgTk8gYWN0aXZlIGNhbGwsIHRoZW4gcHJvcGFnYXRlIGVuZC4gT3RoZXJ3aXNlIGtlZXAgb25nb2luZyBVSS5cbiAgICAgIGlmICghdGhpcy5jYWxsIHx8IHRoaXMuY2FsbC5zdGF0dXMoKSAhPT0gJ29wZW4nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0NycpXG4gICAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2xlYXJJbnB1dHMoKXtcbiAgICB0aGlzLmNhbGxJbnB1dCA9IHRoaXMuY2FsbElucHV0LnNsaWNlKDAsIC0xKTtcbiAgfVxuICBpc01pbmltaXNlZDpib29sZWFuID0gZmFsc2U7XG4gIG1pbmltaXNlRGlhbHBhZCgpe1xuICAgIHRoaXMubWluaW1pc2VFdmVudC5lbWl0KHRydWUpO1xuICAgIHRoaXMuaXNNaW5pbWlzZWQgPSB0cnVlO1xuICB9XG4gIG1heGltaXNlRGlhbHBhZCgpe1xuICAgIHRoaXMubWluaW1pc2VFdmVudC5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLmlzTWluaW1pc2VkID0gZmFsc2U7XG4gIH1cbiAgdG9nZ2xlUmVjb3JkaW5nKCkge1xuICAgIGlmICh0aGlzLmlzUmVjb3JkaW5nKSB7XG4gICAgICB0aGlzLnN0b3BSZWNvcmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xuICAgIH1cbiAgfVxuICBzdGFydFJlY29yZGluZygpIHtcbiAgICBsZXQgc2lkO1xuICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFNpZCgpO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsU2lkID0gZGV0YWlscy5jYWxsU2lkO1xuICAgIHRoaXMuaW5jb21pbmdSZWNvcmRDYWxsID0gZGV0YWlscy5yZWNvcmRDYWxsO1xuICAgIHNpZCA9IHRoaXMuaW5jb21pbmdDYWxsU2lkID8gdGhpcy5pbmNvbWluZ0NhbGxTaWQgOiB0aGlzLmNhbGxTaWQ7XG5cbiAgICAvLyBpZiAoIXRoaXMuaW5jb21pbmdSZWNvcmRDYWxsICYmICF0aGlzLnJlY29yZENhbGwpIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG4gICAgdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENhbGxSZWNvcmRpbmcoc2lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5pc1JlY29yZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7ICBcbiAgICAgIHRoaXMudGltZUVsYXBzZWQgPSAwO1xuICAgICAgdGhpcy5zdGFydFRpbWVyMSgpO1xuICAgIH0sIGVycm9yID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHN0YXJ0aW5nIHJlY29yZGluZycsIGVycm9yKTtcbiAgICB9KTtcbiAgfVxuICBzdG9wUmVjb3JkaW5nKCkge1xuICAgIC8vIGlmICghdGhpcy5pbmNvbWluZ1JlY29yZENhbGwgJiYgIXRoaXMucmVjb3JkQ2FsbCkge1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cbiAgICB0aGlzLmlzUmVjb3JkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnRpbWVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnRpbWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIHBhdXNlUmVjb3JkaW5nKCkge1xuICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0Q2FsbFNpZCgpO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsU2lkID0gZGV0YWlscy5jYWxsU2lkO1xuICAgIHRoaXMuaW5jb21pbmdSZWNvcmRDYWxsID0gZGV0YWlscy5yZWNvcmRDYWxsO1xuICAgIGNvbnN0IHNpZCA9IHRoaXMuaW5jb21pbmdDYWxsU2lkID8gdGhpcy5pbmNvbWluZ0NhbGxTaWQgOiB0aGlzLmNhbGxTaWQ7XG5cbiAgICAvLyBpZiAoIXRoaXMuaW5jb21pbmdSZWNvcmRDYWxsICYmICF0aGlzLnJlY29yZENhbGwpIHtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG5cbiAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UucGF1c2VPclJlc3VtZVJlY29yZGluZyhzaWQsICdwYXVzZScpLnN1YnNjcmliZShcbiAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nVGltZXIoKTtcbiAgICAgICAgdGhpcy5pc1BhdXNlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhdXNpbmcgcmVjb3JkaW5nOicsIGVycm9yKTtcbiAgICAgICAgLy8gQ29uc2lkZXIgdXBkYXRpbmcgdGhlIFVJIHRvIHNob3cgdGhlIGVycm9yIHN0YXRlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuICByZXN1bWVSZWNvcmRpbmcoKSB7XG4gICAgbGV0IHNpZDtcbiAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5leHRlbnNpb25TZXJ2aWNlLmdldENhbGxTaWQoKTtcbiAgICB0aGlzLmluY29taW5nQ2FsbFNpZCA9IGRldGFpbHMuY2FsbFNpZDtcbiAgICB0aGlzLmluY29taW5nUmVjb3JkQ2FsbCA9IGRldGFpbHMucmVjb3JkQ2FsbDtcbiAgICBzaWQgPSB0aGlzLmluY29taW5nQ2FsbFNpZCA/IHRoaXMuaW5jb21pbmdDYWxsU2lkIDogdGhpcy5jYWxsU2lkO1xuXG4gICAgLy8gaWYgKCF0aGlzLmluY29taW5nUmVjb3JkQ2FsbCAmJiAhdGhpcy5yZWNvcmRDYWxsKSB7XG4gICAgLy8gICByZXR1cm47IC8vIFNraXAgaWYgcmVjb3JkaW5nIGlzIG5vdCBlbmFibGVkXG4gICAgLy8gfVxuICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5wYXVzZU9yUmVzdW1lUmVjb3JkaW5nKHNpZCwgJ3Jlc3VtZScpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlzUGF1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXJ0VGltZXIxKCk7XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVzdW1pbmcgcmVjb3JkaW5nJywgZXJyb3IpO1xuICAgIH0pO1xuICB9XG4gIHN0YXJ0VGltZXIxKCkge1xuICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSBpbnRlcnZhbCgxMDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy50aW1lRWxhcHNlZCsrO1xuICAgIH0pO1xuICB9XG4gIHN0b3BSZWNvcmRpbmdUaW1lcigpIHtcbiAgICBpZiAodGhpcy50aW1lclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50aW1lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyAvLyBQYXVzZSB0aGUgdGltZXJcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7ICAgICAgICAvLyBPcHRpb25hbGx5IHJlc2V0IHRoZSBzdWJzY3JpcHRpb25cbiAgICB9XG4gIH1cbiAgZ2V0Rm9ybWF0dGVkVGltZSgpIHtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcih0aGlzLnRpbWVFbGFwc2VkIC8gNjApO1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnRpbWVFbGFwc2VkICUgNjA7XG4gICAgcmV0dXJuIGAke21pbnV0ZXN9OiR7c2Vjb25kcyA8IDEwID8gJzAnIDogJyd9JHtzZWNvbmRzfWA7XG4gIH1cbiAgcG9sbENhbGxTdGF0dXMoY2FsbEF1dGhJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWF4VGltZSA9IDMwMDAwOyAvLyBQb2xsIGZvciB1cCB0byAzMCBzZWNvbmRzXG4gICAgY29uc3QgcG9sbEludGVydmFsID0gMzAwMDsgLy8gUG9sbCBldmVyeSAzIHNlY29uZHNcbiAgICBsZXQgZWxhcHNlZFRpbWUgPSAwO1xuICAgIGNvbnN0IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChhc3luYyAoKSA9PiB7XG4gICAgICBlbGFwc2VkVGltZSArPSBwb2xsSW50ZXJ2YWw7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzdGF0dXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRDYWxsU3RhdHVzKGNhbGxBdXRoSWQpLnRvUHJvbWlzZSgpIGFzIENhbGxTdGF0dXNSZXNwb25zZTtcbiAgICAgICAgaWYgKHN0YXR1c1Jlc3BvbnNlICYmIHN0YXR1c1Jlc3BvbnNlLmNhbGxEZXRhaWxzKSB7XG4gICAgICAgICAgdGhpcy5jYWxsU3RhdHVzID0gc3RhdHVzUmVzcG9uc2UuY2FsbERldGFpbHMuY2FsbFN0YXR1cztcbiAgICAgICAgICBpZiAodGhpcy5jYWxsU3RhdHVzID09PSAnaW4tcHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxTaWQgPSBzdGF0dXNSZXNwb25zZS5jYWxsRGV0YWlscy5jYWxsU2lkO1xuICAgICAgICAgICAgaWYgKHRoaXMucmVjb3JkQ2FsbCAmJiAhdGhpcy5pc1JlY29yZGluZykge1xuICAgICAgICAgICAgICB0aGlzLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYWxsU3RhdHVzID09PSAnY29tcGxldGVkJykge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0ZXN0MScpXG4gICAgICAgICAgICB0aGlzLmVuZENhbGwoKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcFJlY29yZGluZygpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jYWxsU3RhdHVzID09PSAncmluZ2luZycpIHtcbiAgICAgICAgICAgIC8vIENvbnRpbnVlIHBvbGxpbmc7IGRvIG5vdCBjbGVhciB0aGUgaW50ZXJ2YWwgeWV0XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgfVxuICAgICAgaWYgKGVsYXBzZWRUaW1lID49IG1heFRpbWUpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ01heCBwb2xsaW5nIHRpbWUgcmVhY2hlZC4gU3RvcHBpbmcgcG9sbC4nKTtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgIH1cbiAgICB9LCBwb2xsSW50ZXJ2YWwpO1xuICB9XG5cbiAgZ2V0VXNlckluZm9ybWF0aW9uKGlkOmFueSkge1xuICAgIHRoaXMuZXh0ZW5zaW9uU2VydmljZS5nZXRVc2VySW5mb3JtYXRpb24oaWQpLnN1YnNjcmliZShcbiAgICByZXNwb25zZSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSlcbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdGFydGluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cbiAgaW5jb21pbmdDYWxsc05ld0xpc3QoZGF0YTphbnkpe1xuICAgIGNvbnNvbGUubG9nKGRhdGEsICduZXdJbmNvbWluZ0NhbGxzTGlzdE9VUicpXG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzTGlzdCA9IGRhdGE7XG4gICAgdGhpcy5pbmNvbWluZ0NhbGxzTmV3SW5mby5lbWl0KHRoaXMubmV3SW5jb21pbmdDYWxsc0xpc3QpO1xuICB9XG4gIHNlbGVjdGVkSW5jb21pbmdDYWxsSW5mbyhkYXRhOmFueSl7XG4gICAgdGhpcy5zZWxlY3RlZEluY29taW5nQ2FsbCA9IGRhdGE7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jYWxsRGF0YS5kaWFsID0gZmFsc2U7XG4gICAgaWYgKHRoaXMudGltZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudGltZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiY2FsbC1jb250YWluZXJcIiAqbmdJZj1cIiFpc01pbmltaXNlZFwiXG4gICAgW25nQ2xhc3NdPVwieydjb2xsb3BzJzogaXNDb2xsb3BzLCAnaW5jb21pbmctY2FsbC1jb250YWluZXInOiBzZWxlY3RlZEluY29taW5nQ2FsbD8uaXNDbGlja0V4cGFuZCwgJ2NvbnRhY3RzLW9wZW4nOiBzaG93Q29udGFjdHNQYW5lbCB9XCI+XG4gICAgPCEtLSA8ZGl2IGlkPVwibWluaW1pemUtYnRuLWRpdlwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbWluaW1pemUtYnRuXCIgKGNsaWNrKT1cIm1pbmltaXNlRGlhbHBhZCgpXCI+XG4gICAgICAgICAgICBtaW5pbWl6ZVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+IC0tPlxuICAgIDxsaWItaW5jb21pbmctY2FsbCAqbmdJZj1cImluY29taW5nQ2FsbERpdiAmJiAhaXNDb25jdXJyZW50SW5jb21pbmdcIiBbaW5jb21pbmdDYWxsRGF0YV09XCJjYWxsRGF0YVwiXG4gICAgICAgIFtkZXZpY2VJZF09XCJkZXZpY2VJZFwiIFtuZXdJbmNvbWluZ0NhbGxzTGlzdF09XCJuZXdJbmNvbWluZ0NhbGxzTGlzdFwiXG4gICAgICAgIChjbG9zZUluY29taW5nQ2FsbERpdik9XCJjbG9zZUluY29taW5nQ2FsbCgkZXZlbnQpXCIgKGluY29taW5nQ2FsbHNOZXdMaXN0KT1cImluY29taW5nQ2FsbHNOZXdMaXN0KCRldmVudClcIlxuICAgICAgICAoc2VsZWN0ZWRJbmNvbWluZ0NhbGxJbmZvKT1cInNlbGVjdGVkSW5jb21pbmdDYWxsSW5mbygkZXZlbnQpXCI+PC9saWItaW5jb21pbmctY2FsbD5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5jb21pbmdDYWxsRGl2IHx8IGlzQ29uY3VycmVudEluY29taW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWxkLWNhbGwtYmFubmVyXCIgKm5nSWY9XCJpc0NhbGxPbkhvbGQgJiYgaGVsZENhbGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxkLWNhbGwtY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWxkLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhvbGQtaWNvblwiPnBhdXNlX2NpcmNsZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlbGQtY2FsbGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlbGQtbGFiZWxcIj5Ib2xkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWxkLW51bWJlclwiPnt7aGVsZENhbGwuY2FsbEluZm8/LmRpc3BsYXlOdW1iZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxkQ2FsbC5jYWxsSW5mbz8uRnJvbSB8fCAnJ319PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVsZC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJoZWxkLWJ0biBzd2FwLWJ0blwiIChjbGljayk9XCJzd2FwQ2FsbHMoKVwiIHRpdGxlPVwiU3dhcCBjYWxsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U3dhcDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDb21wYWN0IGJhbm5lcnMgZm9yIGNvbmN1cnJlbnQgaW5jb21pbmcgKG9uZSBwZXIgY2FsbCkgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5jb21pbmctYmFubmVycy1jb250YWluZXJcIiAqbmdJZj1cIiFpc0NvbmZlcmVuY2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5jb21pbmctYmFubmVyXCIgKm5nRm9yPVwibGV0IGluYyBvZiBuZXdJbmNvbWluZ0NhbGxzTGlzdDsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgdG9wOiAoKGlzQ2FsbE9uSG9sZCAmJiBoZWxkQ2FsbCkgPyA2NCA6IDApICsgKGkgKiA4MCkgKyAncHgnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluY29taW5nLWJhbm5lci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5jb21pbmctaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5jb20gaW5nLWxhYmVsXCI+SW5jb21pbmcgY2FsbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5jb21pbmctY2FsbGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FsbGVyLW5hbWVcIj57eyBpbmM/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jPy5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ25hbWUnKSB8fCAnLScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FsbGVyLW51bWJlclwiPnt7IGluYz8udXNlckluZm8/LmMyY0luZm9ybWF0aW9uPy5udW1iZXIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYz8ucGFyYW1ldGVycz8uRnJvbSB8fCAnJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluY29taW5nLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmFubmVyLWJ0biBhY2NlcHQtYnRuXCIgKGNsaWNrKT1cImFjY2VwdENvbmN1cnJlbnRDYWxsKGluYylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+Y2FsbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmFubmVyLWJ0biByZWplY3QtYnRuXCIgKGNsaWNrKT1cInJlamVjdENvbmN1cnJlbnRDYWxsKGluYylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+Y2FsbF9lbmQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0NvbmZlcmVuY2VcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiAnZmxleCcsICdmbGV4LWRpcmVjdGlvbic6ICdjb2x1bW4nLCAncG9zaXRpb24nOiAncmVsYXRpdmUnfVwiPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbC1hbmltYXRpb25cIiBbbmdDbGFzc109XCJ7J2NhbGwtYW5pbWF0aW9uLXBsYXknOiBzaG93UmluZ0FuaW1hdGlvbn1cIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiYXZhdGFyLWltZ1wiIFtzcmNdPVwiY2FsbERhdGEuaW1nXCIgYWx0PVwiXCIgd2lkdGg9XCIxMjBcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsbGVyRGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgIDxoMSBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnOHB4J31cIj57e2NhbGxEYXRhLm5hbWV9fTwvaDE+XG4gICAgICAgICAgICAgICAgPHA+e3tjYWxsRGF0YS5kaXNwbGF5TnVtID8gY2FsbERhdGEuZGlzcGxheU51bSA6IGNhbGxEYXRhLnBob25lIH19PC9wPlxuICAgICAgICAgICAgICAgIDxoNCBzdHlsZT1cIm1hcmdpbi10b3A6IDRweFwiPnt7dGltZXJ9fTwvaDQ+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1hY3Rpb24tYnRuc1wiIFtuZ1N0eWxlXT1cInsnbWFyZ2luLXRvcCc6IHNob3dLZXlwYWQgPyAnMCc6ICcyMHB4J31cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVjb3JkLWJ0bi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1idG4gc3RhcnQtc3RvcFwiICpuZ0lmPVwiIWlzUmVjb3JkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVjb3JkaW5nJzogaXNSZWNvcmRpbmcsICdzdG9wcGVkJzogIWlzUmVjb3JkaW5nfVwiIChjbGljayk9XCJ0b2dnbGVSZWNvcmRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXNSZWNvcmRpbmcgPyAnU3RvcCBSZWNvcmRpbmcnIDogJ1N0YXJ0IFJlY29yZGluZydcIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVjb3JkaW5nLWljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF1c2UtcmVzdW1lLWJ0bnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwiaXNSZWNvcmRpbmcgJiYgIWlzUGF1c2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicGF1c2VSZWNvcmRpbmcoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBwYXVzZSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHBhdXNlLXJlc3VtZVwiICpuZ0lmPVwiaXNQYXVzZWRcIiAoY2xpY2spPVwicmVzdW1lUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGxheV9hcnJvdyA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUmVjb3JkaW5nXCIgY2xhc3M9XCJ0aW1lci1kaXNwbGF5XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFRpbWUoKSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0tleXBhZFwiIGNsYXNzPVwic2VuZERpZ2l0XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNhbGwtaW5wdXRzXCIgaWQ9XCJjYWxsLWlucHV0XCIgWyhuZ01vZGVsKV09XCJjYWxsSW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25DYWxsSW5wdXRFbnRlcigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGlucHV0LWNsZWFyLWJ0blwiICpuZ0lmPVwiY2FsbElucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFySW5wdXRzKClcIj5jbG9zZV9zbWFsbDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1jb250YWluZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiICpuZ0lmPVwic2hvd0tleXBhZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrZXktYnRuXCIgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlwYWRWYWxcIiAoY2xpY2spPVwib25DYWxsSW5wdXRzKGtleS5udW0pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7a2V5Lm51bX19XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWFsYmhhYmV0c1wiPnt7a2V5LnRleHQgPyBrZXkudGV4dCA6ICcmbmJzcDsnfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYWN0aW9uLWJ0bnNcIiBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnMTEwcHgnfVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTc3cHhcIiAqbmdJZj1cIiFpbmNvbWluZ0NhbGxEaXYgfHwgaXNDb25jdXJyZW50SW5jb21pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlbGQtYnRuIG1lcmdlLWJ0blwiIChjbGljayk9XCJtZXJnZUNhbGxzKClcIiB0aXRsZT1cIk1lcmdlIGNhbGxzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaGVsZENhbGwgfHwgIWNhbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1lcmdlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWV2ZW5seVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1zZWMtYnRuIG1yLTNcIiBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyd0b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnLTMycHgnfVwiIChjbGljayk9XCJ0b2dnbGVNdXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiICpuZ0lmPVwiaXNNdXRlXCI+IG1pY19vZmYgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCIhaXNNdXRlXCI+IG1pYyA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxsLXNlYy1idG4gbXItM1wiIFtuZ1N0eWxlXT1cInsndG9wJzogc2hvd0tleXBhZCA/ICcwJzogJy0zMnB4J31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAoY2xpY2spPVwidG9nZ2xlS2V5cGFkKClcIj4gdHJhbnNpdGlvbl9kaXNzb2x2ZSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1zZWMtYnRuXCIgW25nU3R5bGVdPVwieyd0b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnLTMycHgnfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIiAoY2xpY2spPVwidG9nZ2xlQ29udGFjdHNQYW5lbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gYWRkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsbC1idG4gZW5kLWNhbGwtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCIgKGNsaWNrKT1cImVuZENhbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNhbGxfZW5kIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb250YWN0cy1wYW5lbFwiICpuZ0lmPVwic2hvd0NvbnRhY3RzUGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdHMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBiYWNrXCIgKGNsaWNrKT1cInRvZ2dsZUNvbnRhY3RzUGFuZWwoKVwiPiBjaGV2cm9uX2xlZnQgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5Db250YWN0czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgc2VhcmNoXCI+IHNlYXJjaCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaXRlbVwiICpuZ0Zvcj1cImxldCBjIG9mIGNvbnRhY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiY29udGFjdC1hdmF0YXJcIiBbc3JjXT1cImMuaW1nIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJ1wiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtbmFtZVwiPnt7Yy5maXJzdE5hbWV9fSB7e2MubWlkZGxlTmFtZX19IHt7Yy5sYXN0TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtdGl0bGVcIj57eyAoYy5udW1iZXJzTGlzdCAmJiBjLm51bWJlcnNMaXN0WzBdPy5udW1iZXIpfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRhY3QtY2FsbC1idG5cIiAoY2xpY2spPVwiY2FsbENvbnRhY3QoYylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gY2FsbCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNhbGw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtMiBweC0zIGNhbGwtaW5mby13cmFwcGVyIFwiICBbbmdDbGFzc109XCJ7J29wZW4tY29sbG9wcyc6IGlzQ29sbG9wc31cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd25cIiAqbmdJZj1cImlzQ29sbG9wc1wiIChjbGljayk9XCJpc0NvbGxvcHMgPSAhaXNDb2xsb3BzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtdXBcIiAqbmdJZj1cIiFpc0NvbGxvcHNcIiAoY2xpY2spPVwiaXNDb2xsb3BzID0gIWlzQ29sbG9wc1wiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQ29sbG9wc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgPkZpcnN0IE5hbWU6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ID50ZXN0IHR0dHR0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+TGFzdCBOYW1lOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj50ZXRzdCB0ZXN0IDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+RW1haWw6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5hYmNkZWZ0QHZncm91cC5jb208L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+TnVtYmVyOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjYzNTQ1OTg1MjY0MjI1PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5MYW5ndWFnZTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5FbmdsaXNoPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5JbWFnZSA6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+dGVzdC5qcGcgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5FeHRlbnNpb24gOjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPjQ1OTY8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5Ob3RlIDo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPnRlcyB0ZXN0IHRlc3QgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5TdWJqZWN0OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPmhlbGxvIHdvcmxkIHwgdGVzdDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPk1lc3NhZ2U6PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+dGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IHRlc3QgdGVzdCB0ZXN0IDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdHMtcGFuZWxcIiAqbmdJZj1cInNob3dDb250YWN0c1BhbmVsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdHMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGJhY2tcIiAoY2xpY2spPVwidG9nZ2xlQ29udGFjdHNQYW5lbCgpXCI+IGNoZXZyb25fbGVmdCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+Q29udGFjdHM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgc2VhcmNoXCI+IHNlYXJjaCA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0cy1saXN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaXRlbVwiICpuZ0Zvcj1cImxldCBjIG9mIGNvbnRhY3RzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJjb250YWN0LWF2YXRhclwiIFtzcmNdPVwiYy5pbWcgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtbmFtZVwiPnt7Yy5maXJzdE5hbWV9fSB7e2MubWlkZGxlTmFtZX19IHt7Yy5sYXN0TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC10aXRsZVwiPnt7IChjLm51bWJlcnNMaXN0ICYmIGMubnVtYmVyc0xpc3RbMF0/Lm51bWJlcil9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRhY3QtY2FsbC1idG5cIiAoY2xpY2spPVwiY2FsbENvbnRhY3QoYylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBjYWxsIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5DYWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmVyZW5jZS1jYWxsLXZpZXdcIiAqbmdJZj1cImlzQ29uZmVyZW5jZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmYtaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29uZi1pY29uIG1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gZ3JvdXBzIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbmYtdGl0bGVcIj5Db25mZXJlbmNlIENhbGw8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmYtbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7IChjYWxsRGF0YT8ubmFtZSB8fCBjYWxsRGF0YT8uZGlzcGxheU51bSB8fCBjYWxsRGF0YT8ucGhvbmUgfHwgJy0nKSB9fSAmXG4gICAgICAgICAgICAgICAge3sgKG5ld0luY29taW5nQ2FsbHNMaXN0Py5bMF0/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubmFtZVxuICAgICAgICAgICAgICAgIHx8IG5ld0luY29taW5nQ2FsbHNMaXN0Py5bMF0/LnVzZXJJbmZvPy5jMmNJbmZvcm1hdGlvbj8ubnVtYmVyXG4gICAgICAgICAgICAgICAgfHwgbmV3SW5jb21pbmdDYWxsc0xpc3Q/LlswXT8ucGFyYW1ldGVycz8uRnJvbVxuICAgICAgICAgICAgICAgIHx8IGhlbGRDYWxsPy5jdXN0b21QYXJhbWV0ZXJzPy5nZXQoJ2Rpc3BsYXlOdW1iZXInKVxuICAgICAgICAgICAgICAgIHx8ICctJykgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZi10aW1lclwiPnt7IHRpbWVyIH19PC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbmYtcmVjb3JkXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlY29yZC1zdG9wLWJ0blwiICpuZ0lmPVwiaXNSZWNvcmRpbmdcIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkaW5nKClcIiB0aXRsZT1cIlN0b3AgUmVjb3JkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBzdG9wX2NpcmNsZSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWNvcmQtYWN0aW9uLWJ0bnNcIiBbbmdTdHlsZV09XCJ7J21hcmdpbi10b3AnOiBzaG93S2V5cGFkID8gJzAnOiAnMjBweCd9XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC1idG4tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZWNvcmQtYnRuIHN0YXJ0LXN0b3BcIiAqbmdJZj1cIiFpc1JlY29yZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3JlY29yZGluZyc6IGlzUmVjb3JkaW5nLCAnc3RvcHBlZCc6ICFpc1JlY29yZGluZ31cIiAoY2xpY2spPVwidG9nZ2xlUmVjb3JkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImlzUmVjb3JkaW5nID8gJ1N0b3AgUmVjb3JkaW5nJyA6ICdTdGFydCBSZWNvcmRpbmcnXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlY29yZGluZy1pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhdXNlLXJlc3VtZS1idG5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cImlzUmVjb3JkaW5nICYmICFpc1BhdXNlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInBhdXNlUmVjb3JkaW5nKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gcGF1c2UgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmVjb3JkLWJ0biBwYXVzZS1yZXN1bWVcIiAqbmdJZj1cImlzUGF1c2VkXCIgKGNsaWNrKT1cInJlc3VtZVJlY29yZGluZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHBsYXlfYXJyb3cgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1JlY29yZGluZ1wiIGNsYXNzPVwidGltZXItZGlzcGxheVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBnZXRGb3JtYXR0ZWRUaW1lKCkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZi1yZW1vdmVcIiA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJlbW92ZS1idG5cIiAoY2xpY2spPVwiYWRkUmVtb3ZlUGFydGljaXBhbnQoKVwiPlJlbW92ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2lyY2xlLWJ0blwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNNdXRlfVwiIChjbGljayk9XCJ0b2dnbGVNdXRlKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYmFsZUVuZENhbGxCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IHt7IGlzTXV0ZSA/ICdtaWNfb2ZmJyA6ICdtaWMnIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2lyY2xlLWJ0blwiIChjbGljayk9XCJ0b2dnbGVLZXlwYWQoKVwiIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gdHJhbnNpdGlvbl9kaXNzb2x2ZSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNpcmNsZS1idG5cIiAgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCIgKGNsaWNrKT1cInRvZ2dsZUNvbnRhY3RzUGFuZWwoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj4gYWRkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZi1lbmRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2lyY2xlLWJ0biBkYW5nZXJcIiAoY2xpY2spPVwiZW5kQ2FsbCgpXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBjYWxsX2VuZCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdHMtcGFuZWxcIiAqbmdJZj1cImlzQWRkUmVtb3ZlUGFydGljaXBhbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWN0cy1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgYmFja1wiIChjbGljayk9XCJ0b2dnbGVDb250YWN0c1BhbmVsKClcIj4gY2hldnJvbl9sZWZ0IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5Db250YWN0czwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBzZWFyY2hcIj4gc2VhcmNoIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3RzLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1pdGVtXCIgKm5nRm9yPVwibGV0IGMgb2YgYWxsUGFydGljaXBlbnRMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJjb250YWN0LWF2YXRhclwiIFtzcmNdPVwiYy5pbWcgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnXCIgYWx0PVwiXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtbmFtZVwiPnt7Yy5maXJzdE5hbWV9fSB7e2MubWlkZGxlTmFtZX19IHt7Yy5sYXN0TmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC10aXRsZVwiPnt7IChjLm51bWJlcnNMaXN0ICYmIGMubnVtYmVyc0xpc3RbMF0/Lm51bWJlcil9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbmZlcmVuY2UtY29udGFjdFwiIChjbGljayk9XCJvbkhvbGRDYWxsKGMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiB0aXRsZT1cIkhvbGRcIj4gcGhvbmVfcGF1c2VkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkhvbGQ8L3NwYW4+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb25mZXJlbmNlLWNvbnRhY3RcIiAoY2xpY2spPVwib25FbmRDYWxsKGMpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiB0aXRsZT1cIkNhbGwgRW5kXCI+IGNhbGxfZW5kIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkVuZDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIndhdmVzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMjQgMTUwIDI4XCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIiBzaGFwZS1yZW5kZXJpbmc9XCJhdXRvXCI+XG4gICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiZ2VudGxlLXdhdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0tMTYwIDQ0YzMwIDAgNTgtMTggODgtMThzIDU4IDE4IDg4IDE4IDU4LTE4IDg4LTE4IDU4IDE4IDg4IDE4IHY0NGgtMzUyelwiIC8+XG4gICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgIDxnIGNsYXNzPVwicGFyYWxsYXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjBcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCIgeD1cIjQ4XCIgeT1cIjNcIiBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8dXNlXG4gICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXG4gICAgICAgICAgICAgICAgeD1cIjQ4XCJcbiAgICAgICAgICAgICAgICB5PVwiNVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4zKVwiXG4gICAgICAgICAgICAgIC8+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cbiAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm1pbi1jYWxsLWNvbnRhaW5lclwiICpuZ0lmPVwiaXNNaW5pbWlzZWRcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZnVsbHNjcmVlblwiIChjbGljayk9XCJtYXhpbWlzZURpYWxwYWQoKVwiPiBvcGVuX2luX2Z1bGwgPC9zcGFuPlxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyB3aWR0aDogMTAwJVwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pbi1jYWxsLWFuaW1hdGlvblwiIGlkPVwiY2FsbC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwibWluLWF2YXRhci1pbWdcIiBbc3JjXT1cImNhbGxEYXRhLmltZ1wiIGFsdD1cIlwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLWNhbGxlckRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2NhbGxEYXRhLm5hbWV9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luOiAwXCI+e3tjYWxsRGF0YS5kaXNwbGF5TnVtID8gY2FsbERhdGEuZGlzcGxheU51bSA6IGNhbGxEYXRhLnBob25lIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaW4tYnRuLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWluLXRpbWVyXCI+e3t0aW1lcn19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtaW4tY2FsbC1zZWMtYnRuXCIgKGNsaWNrKT1cInRvZ2dsZU11dGUoKVwiIFtkaXNhYmxlZF09XCJkaXNiYWxlRW5kQ2FsbEJ0blwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgKm5nSWY9XCJpc011dGVcIj4gbWljX29mZiA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiAqbmdJZj1cIiFpc011dGVcIj4gbWljIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtaW4tY2FsbC1idG4gZW5kLWNhbGwtYnRuXCIgW2Rpc2FibGVkXT1cImRpc2JhbGVFbmRDYWxsQnRuXCIgKGNsaWNrKT1cImVuZENhbGwoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNhbGxfZW5kIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -2488,7 +2488,7 @@ class CallProgressComponent {
|
|
|
2488
2488
|
hold: true
|
|
2489
2489
|
});
|
|
2490
2490
|
// Put current call on hold
|
|
2491
|
-
this.heldCall =
|
|
2491
|
+
this.heldCall = this.call;
|
|
2492
2492
|
this.isCallOnHold = true;
|
|
2493
2493
|
this.heldCall.mute(true);
|
|
2494
2494
|
// Close contacts panel and show ring animation
|