ezlibrary_v2 0.1.82 → 0.1.83
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.
|
@@ -615,6 +615,7 @@ export class FileuploadComponent {
|
|
|
615
615
|
});
|
|
616
616
|
}
|
|
617
617
|
if (dateValid) {
|
|
618
|
+
this.spinnerService.show();
|
|
618
619
|
let reqObj = {};
|
|
619
620
|
reqObj['formNme'] = 'fileUpload'; //this.route.snapshot.params['frmname'];
|
|
620
621
|
reqObj['file_log_idn'] = this.fileLogIdn;
|
|
@@ -652,11 +653,13 @@ export class FileuploadComponent {
|
|
|
652
653
|
this.spinnerService.hide();
|
|
653
654
|
}, error => {
|
|
654
655
|
this.show = false;
|
|
656
|
+
this.spinnerService.hide();
|
|
655
657
|
this.toastr.error(error);
|
|
656
658
|
});
|
|
657
659
|
}
|
|
658
660
|
else {
|
|
659
661
|
this.toastr.error(massage);
|
|
662
|
+
this.spinnerService.hide();
|
|
660
663
|
this.ngOnInit();
|
|
661
664
|
}
|
|
662
665
|
}
|
|
@@ -936,4 +939,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
936
939
|
type: ViewChild,
|
|
937
940
|
args: ['Cofirmmapdtl']
|
|
938
941
|
}] } });
|
|
939
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGV1cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxldXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0Isc0dBQXNHO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLG1CQUFtQjtJQTBEOUIsWUFDUyxNQUFjLEVBQ2IsS0FBcUIsRUFDckIsTUFBcUIsRUFDckIsY0FBaUMsRUFDakMsSUFBZ0IsRUFDaEIsRUFBd0I7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FB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QUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJ25nMi1jb29raWVzL25nMi1jb29raWVzJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcbi8vIGltcG9ydCB7IFVwbG9hZFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnc3JjL2FwcC9jb21wb25lbnRzL2ZpbGV1cGxvYWQtbW9kdWxlL3VwbG9hZC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RhbERpcmVjdGl2ZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1maWxldXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZXVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlaGRyYnRuJykgY2xvc2VoZHJidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnY2xvc2VkdGxidG4nKSBjbG9zZWR0bGJ0bjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdDb2Zpcm1tYXBkdGwnKSBDb2Zpcm1tYXBkdGw6IE1vZGFsRGlyZWN0aXZlO1xyXG4gIGhlYWRlciA9IHt9O1xyXG4gIGZpbGVUb1VwbG9hZDogRmlsZSA9IG51bGw7XHJcbiAgZmlsZU5hbWUgPSBcIlwiO1xyXG4gIGNEdDtcclxuICBzdGVwID0gMTtcclxuICBzaGVldERhdGEgPSBbXTtcclxuICBoZWFkZXJBdHRyaWJ1dGVEdGwgPSB7fTtcclxuICBkZWZ1bHREaXNwbGF5TGVuID0gNTtcclxuICBkZWZ1bHREaXNwbGF5T2JqID0gW107XHJcbiAgYXR0clN0cnVjdHVyZUR0bCA9IFtdO1xyXG4gIGhlYWRlckxpc3QgPSBbXTtcclxuICBoZWFkZXJwcnA7XHJcbiAgYXR0cnBycDtcclxuICB0b3RhbG1hdGNoID0gMDtcclxuICB0b3RhbGlnbm9yZSA9IDA7XHJcbiAgcGFnZURlZmluYXRpb24gPSB7fTtcclxuICByb3dkYXRhbWFwRGV0YWlscyA9IHt9O1xyXG4gIHJvd2Rpc3RpbmN0RGF0YU1hcCA9IHt9O1xyXG4gIGNoYXJIZWFkZXJMaXN0ID0gW107XHJcbiAgYXR0cmlidXRlRHRsTWFwID0ge307XHJcbiAgbWFwcFNoZWV0RGF0YSA9IFtdO1xyXG4gIGxhYmxlID0gXCJcIjtcclxuICBsYWJsZUZpbGUgPSBcIlwiO1xyXG4gIHN0YXR1c0xpc3QgPSBbXTtcclxuICBmaWxlRGV0YWlscyA9IFtdO1xyXG4gIGZpbGVUeXBlTGlzdCA9IFtdO1xyXG4gIGZpbGVPcHRpb25zTGlzdCA9IFtdO1xyXG4gIGZpbGVUeXBlO1xyXG4gIG5tZTtcclxuICB0eXA7XHJcbiAgbWRsO1xyXG4gIGRlc2NyaXB0aW9uO1xyXG4gIGNoZWNrX3N0YXR1cyA9IFtdO1xyXG4gIHBrdF9zdGF0dXMgPSBbXTtcclxuICBjb2xGb3JtYXRlID0gW107XHJcbiAgaWdub3JlRm9ybWF0ZSA9IFtdO1xyXG4gIGFsbGNvbHMgPSBbXTtcclxuICBmaWxlTG9nSWRuID0gMDtcclxuICBzaG93ID0gZmFsc2U7XHJcbiAgc3RlcE1zZyA9ICcnO1xyXG4gIHRpbWVyZmlsZTtcclxuICB0aW1lclByaWNlO1xyXG4gIGRhdGVGb3JtYXQ7XHJcbiAgZGVsaW07XHJcbiAgZGF0ZUZvcm1hdE1hcCA9IHt9O1xyXG4gIG1hcHBpbmdza2lwID0gZmFsc2U7XHJcbiAgZmlsZXR5cGU7XHJcbiAgZmlsZW5tZTtcclxuICBkYXRlRm9ybWF0TGlzdCA9IFt7IFwia1wiOiBcImRkL21tL3l5XCIsIFwidlwiOiBcImRkL21tL3l5XCIgfSxcclxuICB7IFwia1wiOiBcIm1tL2RkL3l5XCIsIFwidlwiOiBcIm1tL2RkL3l5XCIgfSxcclxuICB7IFwia1wiOiBcImRkL01vbi95eVwiLCBcInZcIjogXCJkZC9Nb24veXlcIiB9LFxyXG4gIF1cclxuICBpbndhcmRfYWN0aW9uID0gJydcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSAsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGNzOiBDb21tYW5TZXJ2aWNlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGhhbmRsZUZpbGVJbnB1dChmaWxlczogRmlsZUxpc3QpIHtcclxuICAgIHRoaXMuZmlsZVRvVXBsb2FkID0gZmlsZXMuaXRlbSgwKTtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSBmaWxlc1swXS5uYW1lO1xyXG4gIH1cclxuICBvbkZpbGVTZWxlY3QoaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGZpbGVzID0gaW5wdXQuZmlsZXM7XHJcblxyXG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xyXG5cclxuICAgICAgY29uc3QgZmlsZVRvUmVhZCA9IGZpbGVzWzBdO1xyXG5cclxuICAgICAgY29uc3QgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIGZpbGVSZWFkZXIub25sb2FkID0gdGhpcy5vbkZpbGVMb2FkO1xyXG5cclxuICAgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZpbGVUb1JlYWQsIFwiVVRGLThcIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICBjc3ZDb250ZW50OiBzdHJpbmc7XHJcbiAgcGFyc2VkQ3N2OiBzdHJpbmdbXVtdO1xyXG4gIG9uRmlsZUxvYWQoZmlsZUxvYWRlZEV2ZW50KSB7XHJcbiAgICBjb25zdCBjc3ZTZXBhcmF0b3IgPSAnOyc7XHJcbiAgICBjb25zdCB0ZXh0RnJvbUZpbGVMb2FkZWQgPSBmaWxlTG9hZGVkRXZlbnQudGFyZ2V0LnJlc3VsdDtcclxuICAgIHRoaXMuY3N2Q29udGVudCA9IHRleHRGcm9tRmlsZUxvYWRlZDtcclxuICAgIGNvbnN0IHR4dCA9IHRleHRGcm9tRmlsZUxvYWRlZDtcclxuICAgIGNvbnN0IGNzdiA9IFtdO1xyXG4gICAgY29uc3QgbGluZXMgPSB0eHQuc3BsaXQoJ1xcbicpO1xyXG4gICAgbGluZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgY29uc3QgY29sczogc3RyaW5nW10gPSBlbGVtZW50LnNwbGl0KGNzdlNlcGFyYXRvcik7XHJcbiAgICAgIGNzdi5wdXNoKGNvbHMpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBhcnNlZENzdiA9IGNzdjtcclxuXHJcbiAgICAvLyBkZW1vIG91dHB1dCBhcyBhbGVydFxyXG4gICAgdmFyIG91dHB1dDogc3RyaW5nID0gXCJcIjtcclxuICAgIGNzdi5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgIG91dHB1dCArPSBcIlxcblwiO1xyXG4gICAgICB2YXIgY29sTm8gPSAwO1xyXG4gICAgICByb3cuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgIGlmIChjb2xObyA+IDApIG91dHB1dCArPSBcIiB8IFwiO1xyXG4gICAgICAgIG91dHB1dCArPSBjb2w7XHJcbiAgICAgICAgY29sTm8rKztcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvdXRwdXQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYXlCdWZmZXI6IGFueTtcclxuICBmaWxlOiBGaWxlO1xyXG4gIGluY29taW5nZmlsZShldmVudCkge1xyXG4gICAgdGhpcy5maWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuZmlsZS5uYW1lO1xyXG4gICAgdGhpcy5VcGxvYWQoKTtcclxuICB9XHJcblxyXG5cclxuICBVcGxvYWQoKSB7XHJcbiAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGVwTXNnID0gJ0ZpbGUgdXBsb2FkIGluIHByb2Nlc3MuLic7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIHRoaXMubWFwcFNoZWV0RGF0YSA9IFtdO1xyXG4gICAgdGhpcy5zaGVldERhdGEgPSBbXTtcclxuICAgIGxldCBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuICAgIGZpbGVSZWFkZXIub25sb2FkID0gKGUpID0+IHtcclxuICAgICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZpbGVSZWFkZXIucmVzdWx0O1xyXG4gICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHRoaXMuYXJyYXlCdWZmZXIpO1xyXG4gICAgICB2YXIgYXJyID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCBoZHIgPSB0aGlzLmhlYWRlckxpc3QuZmluZChoZHIgPT4gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwPT0nZCcpXHJcbiAgICAgIGxldCBkYXRhRm9ybWF0ZSAgPSB0aGlzLmRhdGVGb3JtYXRNYXBbaGRyXSB8fCAnZGQvbW0veXknO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBkYXRhLmxlbmd0aDsgKytpKSBhcnJbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGFbaV0pO1xyXG4gICAgICB2YXIgYnN0ciA9IGFyci5qb2luKFwiXCIpO1xyXG4gICAgICB2YXIgd29ya2Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiBcImJpbmFyeVwiLCBjZWxsRGF0ZXM6IHRydWUsIGRhdGVORjpkYXRhRm9ybWF0ZSB9KTtcclxuICAgICAgdmFyIGZpcnN0X3NoZWV0X25hbWUgPSB3b3JrYm9vay5TaGVldE5hbWVzWzBdO1xyXG4gICAgICB2YXIgd29ya3NoZWV0ID0gd29ya2Jvb2suU2hlZXRzW2ZpcnN0X3NoZWV0X25hbWVdO1xyXG5cclxuICAgICAgdmFyIHNoZWV0RGF0YU1hcDogYW55ID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdvcmtzaGVldCwgeyBoZWFkZXI6IDEgfSk7XHJcbiAgICAgIGxldCBoZWFkZXJMaXN0ID0gc2hlZXREYXRhTWFwWzBdO1xyXG4gICAgICBoZWFkZXJMaXN0LmZvckVhY2goaGRyID0+IHtcclxuICAgICAgICB0aGlzLmhlYWRlckxpc3QucHVzaChoZHIudHJpbSgpKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2hlZXREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdvcmtzaGVldCx7cmF3OmZhbHNlLGRhdGVORjpkYXRhRm9ybWF0ZX0pO1xyXG4gICAgICB0aGlzLm1hcHBTaGVldERhdGEgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od29ya3NoZWV0LHtyYXc6ZmFsc2UsZGF0ZU5GOmRhdGFGb3JtYXRlfSk7XHJcbiAgICAgIHRoaXMuZmlsZUxvZ0lkbiA9IDA7XHJcbiAgICBcclxuICAgICAgbGV0IGZpbGVOYW1lID0gJydcclxuICAgICAgbGV0IGZpbGVUeXBlID0gdGhpcy5maWxlT3B0aW9uc0xpc3QuZmluZChlbGUgPT4gZWxlLmsgPT0gdGhpcy5maWxlVHlwZSkgfHwgbnVsbFxyXG4gICAgICBpZihmaWxlVHlwZSAhPSBudWxsKSB7XHJcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlVHlwZS52XHJcbiAgICAgIH1cclxuICAgICAgLy8gUmVtb3ZlIHNraXAgT3B0aW9uXHJcbiAgICAgIC8vIGlmKGZpbGVOYW1lID09ICdHZW5lcmljJykge1xyXG4gICAgICAvLyAgIHRoaXMuU2tpcFZlcmlmaWNhdGlvbigpO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0SGVhZGVyTWF0Y2goKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBjb25zdCBkaXN0aW5jdFNoID0gWy4uLm5ldyBTZXQodGhpcy5zaGVldERhdGEubWFwKHg9PnguU0hBUEUpKV07XHJcbiAgICB9XHJcbiAgICBmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKHRoaXMuZmlsZSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZXRwKHN0ZXApIHtcclxuICAgIHRoaXMuc3RlcCA9IHN0ZXA7XHJcblxyXG4gICAgaWYgKHN0ZXAgPT0gMSkge1xyXG4gICAgICB0aGlzLm5nT25EZXN0cm95KCk7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEhlYWRlck1hdGNoKCkge1xyXG4gICAgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgICBcclxuICAgIHRoaXMuc3RlcE1zZyA9ICdIZWFkZXIgdmVyaWZpY2F0aW9uIGluIHByb2Nlc3MgLi4uJztcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHJMaXN0J10gPSB0aGlzLmhlYWRlckxpc3Q7XHJcbiAgICByZXFPYmpbJ2ZpbGVJZG4nXSA9IHRoaXMuZmlsZVR5cGU7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdsb2FkSGVhZGVyQXR0cic7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGwgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwgJyc7XHJcbiAgICAgICAgbGV0IGhlYWRlckxpc3RMbnQgPSB0aGlzLmhlYWRlckxpc3QubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMudG90YWxtYXRjaCA9IHJlc3VsdC50b3RhbG1hdGNoIHx8IDA7XHJcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsICE9ICcnKSB7XHJcbiAgICAgICAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwgPSByZXN1bHQuYXR0clN0cnVjdHVyZUR0bCB8fCBbXTtcclxuICAgICAgICAgIGlmICh0aGlzLnNoZWV0RGF0YS5sZW5ndGggPCA1KVxyXG4gICAgICAgICAgICB0aGlzLmRlZnVsdERpc3BsYXlMZW4gPSB0aGlzLnNoZWV0RGF0YS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRlZnVsdERpc3BsYXlMZW47IGkrKylcclxuICAgICAgICAgICAgdGhpcy5kZWZ1bHREaXNwbGF5T2JqW2ldID0gdGhpcy5zaGVldERhdGFbaV07XHJcblxyXG4gICAgICAgICAgbGV0IGlnbm9yZUNvbHVtbkxzdCA9IHJlc3VsdC5pZ25vcmVfY29sdW1uIHx8IFtdO1xyXG4gICAgICAgICAgaWdub3JlQ29sdW1uTHN0LmZvckVhY2goaGRyRHNjID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJEc2NdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkckRzY10uaWdub3JlID0gJ1knO1xyXG4gICAgICAgICAgICAgIGhlYWRlckxpc3RMbnQtLTtcclxuICAgICAgICAgICAgICB0aGlzLnRvdGFsaWdub3JlKys7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkckRzY10uYXR0ciAhPSBcIlwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbG1hdGNoLS07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgbGV0IGlzRGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIHRoaXMuaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgaGRyQXR0ciA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0gfHwge307XHJcbiAgICAgICAgICAgIGlmIChoZHJBdHRyLmR0YV90eXAgPT0gJ2QnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gPSB0aGlzLmRhdGVGb3JtYXQ7XHJcbiAgICAgICAgICAgICAgaXNEYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAvLyByZW1vdmUgU2tpcCBPcHRpb25zXHJcbiAgICAgICAgICAvLyBpZiAodGhpcy50b3RhbG1hdGNoID09IGhlYWRlckxpc3RMbnQgJiYgaXNEYXRlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuVmFsaWRhdGVGaWxlSGVhZGVyTWFwcGluZygnTicpO1xyXG4gICAgICAgICAgLy8gICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAgIC8vICAgdGhpcy5zdGVwID0gMztcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnN0ZXAgPSAyO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiU29tZSBwcm9ibGVtIGluIEZpbGUgSGVhZGVyIE1hdGNoaW5nXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL3RoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIC8vdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgdXBkYXRlY29sdW1uc3RhdHVlKGhkcikge1xyXG5cclxuICAgIHZhciBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgaWYgKGlzSWdub3JlID09ICdZJykge1xyXG4gICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSA9ICdOJ1xyXG4gICAgICB0aGlzLnRvdGFsaWdub3JlLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvdGFsaWdub3JlKys7XHJcbiAgICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlID0gJ1knO1xyXG4gICAgfVxyXG4gIH1cclxuICBtYXBoZHI7XHJcbiAgaGRybWFzc2FnZTtcclxuICBjb25maXJtc2V0SGVhZGVyTWFwcChoZHIpIHtcclxuICAgIHRoaXMubWFwaGRyID0gaGRyO1xyXG4gICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHI7XHJcbiAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZm9yRWFjaChlbGUgPT4ge1xyXG5cclxuICAgICAgaWYgKGVsZS5hdHRyID09IGF0dHIpIHtcclxuICAgICAgICB0aGlzLmhkcm1hc3NhZ2UgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgKyBcIiAgKFwiICsgZWxlLnByaW50ICsgXCIpXCI7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkNvZmlybW1hcGhkcicpLmNsaWNrKCk7XHJcbiAgfVxyXG4gIENhbmNlbEhlYWRlck1hcHAoKSB7XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0uYXR0ciA9IFwiXCI7XHJcbiAgfVxyXG4gIHNldEhlYWRlck1hcHAoKSB7XHJcbiAgICAgXHJcbiAgICBsZXQgYXR0ciA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW3RoaXMubWFwaGRyXS5hdHRyIHx8ICcnO1xyXG4gICAgaWYgKGF0dHIgIT0gJycpIHtcclxuICAgICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgICAgcmVxT2JqWydvcHRpb25hVmFsJ10gPSB0aGlzLm1hcGhkclxyXG4gICAgICByZXFPYmpbJ2F0dHInXSA9IGF0dHI7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZEhlYWRlckF0dHInO1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGhkckR0bCA9IHJlc3VsdC5hdHRyRGV0YWlsc1t0aGlzLm1hcGhkcl0gfHwgJyc7XHJcbiAgICAgICAgICBpZiAoaGRyRHRsICE9ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxtYXRjaCsrO1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0gPSBoZHJEdGw7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhdHRyXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJwcmludFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwic3J0XCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJkdGFfdHlwXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJhdHRyX2lkblwiOiBcIlwiXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIk1hcHBpbmcgYXR0cmlidXRlIGlzIGVtcHR5IHBsZWFzZSByZXRyeS5cIik7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZ21hdGNoZWRDb3VudCA9IDA7XHJcbiAgZ3Jlc3VsdENvdW50ID0gMDtcclxuICBzZXRSb3dEYXRhTWFwcCgpIHtcclxuICAgIGlmICghdGhpcy5tYXBwaW5nc2tpcCkge1xyXG4gICAgICBsZXQgcm93TWF0Y2hDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuY2hhckhlYWRlckxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5oZWFkZXJMaXN0LmZvckVhY2goaGRyID0+IHtcclxuXHJcbiAgICAgICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgfHwgJyc7XHJcbiAgICAgICAgbGV0IGF0dHJUeXBlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwIHx8ICcnO1xyXG4gICAgICAgIGxldCBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgICAgIC8vIGlmIChhdHRyICE9ICcnICYmIGlzSWdub3JlICE9ICdZJyAmJiBhdHRyVHlwZSA9PSAnYycpIHtcclxuICAgICAgICBpZiAoYXR0ciAhPSAnJyAmJiBpc0lnbm9yZSAhPSAnTicgJiYgYXR0clR5cGUgPT0gJ2MnKSB7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICB2YXIgZGlzdGluY3RsaXN0ID0gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuc2hlZXREYXRhLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtW2hkcl0pKSk7XHJcbiAgICAgICAgICBkaXN0aW5jdGxpc3QgPSBkaXN0aW5jdGxpc3QuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlIH0pO1xyXG4gICAgICAgICAgaWYgKGRpc3RpbmN0bGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm93ZGlzdGluY3REYXRhTWFwW2F0dHJdID0gZGlzdGluY3RsaXN0O1xyXG4gICAgICAgICAgICByb3dNYXRjaENvdW50ID0gcm93TWF0Y2hDb3VudCArIGRpc3RpbmN0bGlzdC5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuZ21hdGNoZWRDb3VudCA9IHJvd01hdGNoQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhckhlYWRlckxpc3QucHVzaChoZHIpO1xyXG4gICAgICAgICAgICBsZXQgYXR0ckRldGFpbHMgPSB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwuZmluZChhdHRyZHRsID0+IGF0dHJkdGwuYXR0ciA9PSBhdHRyKSB8fCB7fTtcclxuICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVEdGxNYXBbYXR0cl0gPSBhdHRyRGV0YWlscy5wcnBMaXN0IHx8IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIHJlcU9ialsnYXR0ck1hcCddID0gdGhpcy5yb3dkaXN0aW5jdERhdGFNYXA7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2xvYWRIZWFkZXJBdHRyRHRsJztcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaixvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gIFxyXG4gICAgICAgICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlscyA9IHJlc3VsdC5hdHRyRGV0YWlscyB8fCB7fTtcclxuICAgICAgICAgIHRoaXMuZ3Jlc3VsdENvdW50ID0gcmVzdWx0LnRvdGFsbWF0Y2g7XHJcbiAgICAgICAgICB0aGlzLnN0ZXAgPSAzO1xyXG4gICAgICAgICAgLy8gcmVtb3ZlIFNraXAgT3B0aW9uc1xyXG4gICAgICAgICAgLy8gaWYgKHJvd01hdGNoQ291bnQgPT0gcmVzdWx0LnRvdGFsbWF0Y2gpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5zdGVwID0gNDtcclxuICAgICAgICAgIC8vICAgdGhpcy51cGxvYWRGaWxlKCk7XHJcblxyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJwbGVhc2UgdmVyaWZ5IGRhdGEgbWFwcGluZy5cIik7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICBpZiAocm93TWF0Y2hDb3VudCAhPSByZXN1bHQudG90YWxtYXRjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcInBsZWFzZSB2ZXJpZnkgZGF0YSBtYXBwaW5nLlwiKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwic29tZXRoaW5nIGdvIHdyb25nIGluIHJvdyBkYXRhLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAgICAgdGhpcy51cGxvYWRGaWxlKCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBkdGxBdHRyO1xyXG4gIGR0bGF0dHJfaWRuO1xyXG4gIGR0bG9wdGlvbnZhbDtcclxuICBkdGxtYXNzYWdlO1xyXG4gIGNvbmZpcm1IZWFkZXJEZXRhaWxzTWFwcChhdHRyLCBhdHRyX2lkbiwgb3B0aW9udmFsKSB7XHJcbiAgICB0aGlzLmR0bEF0dHIgPSBhdHRyO1xyXG4gICAgdGhpcy5kdGxhdHRyX2lkbiA9IGF0dHJfaWRuO1xyXG4gICAgdGhpcy5kdGxvcHRpb252YWwgPSBvcHRpb252YWw7XHJcbiAgICBsZXQgdmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWw7XHJcbiAgICBsZXQgYXR0cmlidXRlRHRsTGlzdCA9IHRoaXMuYXR0cmlidXRlRHRsTWFwW2F0dHJdO1xyXG4gICAgYXR0cmlidXRlRHRsTGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcblxyXG4gICAgICBpZiAoZWxlLnZhbCA9PSB2YWwpIHtcclxuICAgICAgICB0aGlzLmR0bG1hc3NhZ2UgPSB2YWwgKyBcIiAgKFwiICsgZWxlLnByaW50ICsgXCIpXCI7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bkNvZmlybW1hcGR0bCcpLmNsaWNrKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgQ2FuY2VsSGVhZGVyRGV0YWlsc01hcHAoKSB7XHJcbiAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW3RoaXMuZHRsQXR0cl1bdGhpcy5kdGxvcHRpb252YWxdLnZhbCA9IFwiXCI7XHJcbiAgfVxyXG4gIHNldEhlYWRlckRldGFpbHNNYXBwKCkge1xyXG4gICAgbGV0IGF0dHJEdGxWYWwgPSB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW3RoaXMuZHRsQXR0cl1bdGhpcy5kdGxvcHRpb252YWxdLnZhbCB8fCAnJztcclxuICAgIGlmIChhdHRyRHRsVmFsICE9ICcnKSB7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIHJlcU9ialsnb3B0aW9uYVZhbCddID0gdGhpcy5kdGxvcHRpb252YWxcclxuICAgICAgcmVxT2JqWydhdHRyX2lkbiddID0gdGhpcy5kdGxhdHRyX2lkbjtcclxuICAgICAgcmVxT2JqWydhdHRyJ10gPSB0aGlzLmR0bEF0dHI7XHJcbiAgICAgIHJlcU9ialsnYXR0clZhbCddID0gYXR0ckR0bFZhbDtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnYWRkRGV0YWlsQXR0cic7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbJ21ldGhvZCddXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICB0aGlzLmdyZXN1bHRDb3VudCsrO1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAgICAgICAgIGxldCBhdHRyRGV0YWlscyA9IHJlc3VsdC5hdHRyRGV0YWlscyB8fCB7fVxyXG4gICAgICAgICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXSA9IGF0dHJEZXRhaWxzW3RoaXMuZHRsb3B0aW9udmFsXTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJNYXBwaW5nIGF0dHJpYnV0ZSBpcyBlbXB0eSBwbGVhc2UgcmV0cnkuXCIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgb25TdWJtaXQoZm9ybVZhbCkge1xyXG4gICAgdmFyIHQgPSBPYmplY3Qua2V5cyhmb3JtVmFsLmZvcm0uY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybVZhbC5mb3JtLmdldChmaWVsZCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2F2ZUZpbGVPcHRpb24oZm9ybVZhbC52YWx1ZSk7XHJcbiAgfVxyXG4gIHNhdmVGaWxlT3B0aW9uKGZybXZhbHMpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqID0geyAuLi5mcm12YWxzLCBjb2x1bW5fZm9ybWF0OiB0aGlzLmNvbEZvcm1hdGUsIGlnbm9yZV9jb2x1bW46IHRoaXMuaWdub3JlRm9ybWF0ZSB9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdhZGRGaWxlT3B0aW9uJztcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5maWxlT3B0aW9uc0xpc3QgPSByZXN1bHQuZmlsZU9wdGlvbnNMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZVR5cGUgPSByZXN1bHQuZmlsZV9pZG47XHJcbiAgICAgICAgdGhpcy5WYWxpZGF0ZUZpbGVIZWFkZXJNYXBwaW5nKCdOJyk7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGFkZEZpbGVMb2coZmlsZUlkbikge1xyXG4gICAgIFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVfaWRuJ10gPSBmaWxlSWRuO1xyXG4gICAgcmVxT2JqWydmaWxlX3N0YXR1cyddID0gXCJIZWFkZXIgSW5zZXJ0ZWRcIjtcclxuICAgIHJlcU9ialsndmFsaWRhdGlvbl9yZW1hcmtzJ10gPSBcIkhlYWRlciB2YWxpZGF0ZWRcIjtcclxuICAgIHJlcU9ialsnaGVhZGVyX3JvdyddID0gdGhpcy5hbGxjb2xzO1xyXG4gICAgcmVxT2JqWydoZWFkZXJfYXR0cl9yb3cnXSA9IHRoaXMuY29sRm9ybWF0ZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZEZpbGVMb2cnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAgICAgICB0aGlzLmZpbGVMb2dJZG4gPSByZXN1bHQuZmlsZV9sb2dfaWRuO1xyXG4gICAgICAgIHRoaXMuc2V0Um93RGF0YU1hcHAoKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiSGVhZGVyIHZhbGlkYXRlZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgVmFsaWRhdGVGaWxlSGVhZGVyTWFwcGluZyhmb3JtYXRTYXZlKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuXHJcbiAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGVwTXNnID0gJ0hlYWRlciB2ZXJpZmljYXRpb24gaW4gcHJvY2VzcyAuLi4nO1xyXG4gICAgdGhpcy5jb2xGb3JtYXRlID0gW107XHJcbiAgICB0aGlzLmlnbm9yZUZvcm1hdGUgPSBbXTtcclxuICAgIHRoaXMuYWxsY29scyA9IFtdO1xyXG4gICAgbGV0IGlzVmFsaWRhdGUgPSB0cnVlO1xyXG4gICAgdGhpcy5oZWFkZXJMaXN0LmZvckVhY2goaGRyID0+IHtcclxuICAgICAgbGV0IGhkckR0bCA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0gfHwgJydcclxuICAgICAgaWYgKGhkckR0bC5hdHRyID09ICcnICYmIGhkckR0bC5pZ25vcmUgIT0gJ1knKSB7XHJcbiAgICAgICAgaXNWYWxpZGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChoZHJEdGwuYXR0ciAhPSAnJyAmJiBoZHJEdGwuaWdub3JlICE9ICdOJykge1xyXG4gICAgICAgIHRoaXMuY29sRm9ybWF0ZS5wdXNoKGhkckR0bC5hdHRyKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaGRyRHRsLmlnbm9yZSA9PSAnWScpIHtcclxuICAgICAgICB0aGlzLmlnbm9yZUZvcm1hdGUucHVzaChoZHIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWxsY29scy5wdXNoKGhkcik7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZGF0ZSAmJiAodGhpcy5maWxlVHlwZSA9PSBudWxsIHx8IHRoaXMuZmlsZVR5cGUgPT0gdW5kZWZpbmVkIHx8IHRoaXMuZmlsZVR5cGUgPT0gXCJcIikpIHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcblxyXG4gICAgICB0aGlzLnN0ZXBNc2cgPSBcIlwiO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuZmlsZVVwbG9hZE1vZGFsJykuY2xpY2soKTtcclxuICAgICAgdGhpcy5zdGVwID0gMjtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIGlmIChpc1ZhbGlkYXRlKSB7XHJcbiAgICAgICAgaWYgKGZvcm1hdFNhdmUgPT0gJ1knKSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZWZpbGVPcHRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZGRGaWxlTG9nKHRoaXMuZmlsZVR5cGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiUGxlYXNlIHNwZWNpZnkgbWFwcGluZyBvciBtYXJrZSBhcyBpZ25vcmUgXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuXHJcblxyXG4gIH1cclxuICBoZHJJZG47XHJcbiAgdXBkYXRlZmlsZU9wdGlvbigpIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgcmVxT2JqWydmaWxlSWRuJ10gPSB0aGlzLmZpbGVUeXBlO1xyXG4gICAgcmVxT2JqWydjb2x1bW5fZm9ybWF0J10gPSB0aGlzLmNvbEZvcm1hdGU7XHJcbiAgICByZXFPYmpbJ2lnbm9yZV9jb2x1bW4nXSA9IHRoaXMuaWdub3JlRm9ybWF0ZTtcclxuXHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICd1cGRhdGVDb2x1bW5Gb3JtYXQnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgfVxyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKCkge1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0gdGhpcy5kYXRlRm9ybWF0IHx8ICdkZC9tbS95eSc7XHJcbiAgICB0aGlzLmRlbGltID0gdGhpcy5kZWxpbSB8fCAnLyc7XHJcbiAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgbGV0IGRhdGVWYWxpZCA9IHRydWU7XHJcbiAgICBsZXQgbWFzc2FnZSA9IFwiXCI7XHJcblxyXG4gICAgaWYgKCF0aGlzLm1hcHBpbmdza2lwKSB7XHJcbiAgICAgIHRoaXMuc3RlcE1zZyA9IFwiRGF0YSB2ZXJpZmljYXRpb24gaW4gcHJvY2VzcyAuLi5cIjtcclxuICAgICAgdGhpcy5oZWFkZXJMaXN0LmZvckVhY2goaGRyID0+IHtcclxuICAgICAgICAgXHJcbiAgICAgICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgfHwgJyc7XHJcbiAgICAgICAgbGV0IGF0dHJUeXBlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwIHx8ICcnO1xyXG4gICAgICAgIGxldCBpc0lnbm9yZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIHx8ICcnO1xyXG4gICAgICAgIGlmIChpc0lnbm9yZSA9PSAnWScpIHtcclxuICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YS5tYXAoKHJvd0RhdGEsIGkpID0+IHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChhdHRyVHlwZSA9PSAnYycpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmNoYXJIZWFkZXJMaXN0LmluZGV4T2YoaGRyKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCAhPSAnJykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IGF0dHJEdGxNYXBWYWwgPSB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW2F0dHJdW2F0dHJkdGxWYWxdLnNydDtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2F0dHJdID0gYXR0ckR0bE1hcFZhbC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICduJykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHJkdGxWYWwgIT0gJycgJiYgYXR0cmR0bFZhbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gYXR0cmR0bFZhbCA9IGF0dHJkdGxWYWwucmVwbGFjZSgvW14wLTkuLV0vZywgXCJcIik7XHJcbiAgICAgICAgICAgICAgICBhdHRyZHRsVmFsID0gcGFyc2VGbG9hdChhdHRyZHRsVmFsLnRvU3RyaW5nKCkucmVwbGFjZSgvW14wLTkuLV0vZywgXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2F0dHJdID0gYXR0cmR0bFZhbC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoYXR0ciAhPSBoZHIpXHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChhdHRyVHlwZSA9PSAnZCcpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YS5tYXAoKHJvd0RhdGEsIGkpID0+IHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgbGV0IGR0RnJtID0gdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gfHwgJ2RkL21tL3l5JztcclxuICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCAhPSAnJylcclxuICAgICAgICAgICAgICAgIGF0dHJkdGxWYWwgPSB0aGlzLmNzLmRhdGVWYWxpZGF0aW9uKGF0dHJkdGxWYWwsIGR0RnJtKTtcclxuICAgICAgICAgICAgICBpZiAoYXR0cmR0bFZhbCA9PSAnaW52YWlsZCcpIHtcclxuICAgICAgICAgICAgICAgIGRhdGVWYWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbWFzc2FnZSA9IFwiUGxlYXNlIGNoZWNrIERhdGUgOlwiICsgcm93RGF0YVtoZHJdICsgXCIgRGF0ZSBGb3JtYXQgOlwiICsgZHRGcm07XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGFbaV1bYXR0cl0gPSBhdHRyZHRsVmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdXHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJUeXBlID09ICd0Jykge1xyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJkdGxWYWwgPSByb3dEYXRhW2hkcl0gfHwgJyc7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YVtpXVthdHRyXSA9IGF0dHJkdGxWYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICBpZiAoYXR0ciAhPSBoZHIpXHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2hkcl1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0ZVZhbGlkKSB7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7Ly90aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbmFtZSddO1xyXG4gICAgICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgICByZXFPYmpbJ2F0dHJfZGF0YSddID0gdGhpcy5tYXBwU2hlZXREYXRhO1xyXG4gICAgICByZXFPYmpbJ2luX2RhdGEnXSA9IHRoaXMuc2hlZXREYXRhO1xyXG4gICAgICByZXFPYmpbJ2RhdGVmb3JtYXQnXSA9IHRoaXMuZGF0ZUZvcm1hdE1hcDtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIGxldCB1cmwgPSBcImZpbGVVcGxvYWQvbG9hZFwiO1xyXG4gICAgICBpZiAodGhpcy5tZGwgPT0gJ2lud2FyZCcpIHtcclxuICAgICAgICB1cmwgPSAnaW53YXJkL2xvYWRGaWxlJztcclxuICAgICAgICByZXFPYmpbJ2lud2FyZF9pZG4nXSA9IHRoaXMuaW53YXJkX2lkbjtcclxuICAgICAgICBpZih0aGlzLmlud2FyZF9hY3Rpb24gIT0gJycpIHtcclxuICAgICAgICAgIHJlcU9ialsnaW53YXJkX2FjdGlvbiddID0gdGhpcy5pbndhcmRfYWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgdXJsKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgICB0aGlzLmZpbGVMb2dJZG4gPSByZXN1bHQuZmlsZV9sb2dfaWRuO1xyXG4gICAgICAgICAgdGhpcy5oZHJJZG4gPSByZXN1bHQuaGRySWRuO1xyXG4gICAgICAgICAgdGhpcy5nZXRQcm9ncmVzc0ZpbGUodGhpcy5maWxlTG9nSWRuKTtcclxuICAgICAgICAgIHRoaXMubGFibGVGaWxlID0gXCJGaWxlIFNlcXVlbmNlIE5vLiBcIiArIHRoaXMuZmlsZUxvZ0lkbiArIFwiIFVwbG9hZGluZyBpbiBwcm9ncmVzcy4uLlwiO1xyXG4gICAgICAgICAgLy8gc2V0IGZpbGUgaWQgdG8gbG9jYWwgc3RvcmFnZVxyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VwbG9hZGVkRmlsZUlkJywgcmVzdWx0LmZpbGVfbG9nX2lkbik7XHJcblxyXG4gICAgICAgICAgdGhpcy5sYWJsZSA9IFwiUHJpY2luZyBTZXF1ZW5jZSBOby4gXCIgKyB0aGlzLmhkcklkbiArIFwiIFByaWNlIGNhbGN1bGF0aW9ucyBpbiBwcm9ncmVzcy4uLlwiO1xyXG5cclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NQcmljZSh0aGlzLmhkcklkbik7XHJcblxyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKG1hc3NhZ2UpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgIFxyXG4gIH1cclxuXHJcbiAgY2hhbmdlTWFwcGluZyhoZHJPYmosIGhkciwgYXR0cikge1xyXG4gICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUgPSAnWSc7XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIgPSAnJztcclxuICAgIHRoaXMucmVtb3ZlQXR0ck9wdFZhbChhdHRyLCBoZHIpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZUF0dHJPcHRWYWwoYXR0ciwgb3B0aW9uYVZhbCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHInXSA9IGF0dHI7XHJcbiAgICByZXFPYmpbJ29wdGlvbmFWYWwnXSA9IG9wdGlvbmFWYWw7XHJcbiAgICBcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3JlbW92ZUF0dHJPcHRWYWwnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlbW92ZURldGFpbEF0dHJPcHRWYWwoYXR0cklkbiwgb3B0aW9uYVZhbCwgdmFsLCBoZHJBdHRyKSB7XHJcbiAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzW2hkckF0dHJdW29wdGlvbmFWYWxdLnZhbCA9ICcnO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IHZhbDtcclxuICAgIHJlcU9ialsnb3B0aW9uYVZhbCddID0gb3B0aW9uYVZhbDtcclxuICAgIHJlcU9ialsnYXR0cl9pZG4nXSA9IGF0dHJJZG47XHJcbiAgICBcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ3JlbW92ZUF0dHJPcHRWYWwnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9IFxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHN0dHNGaWxlID0ge31cclxuICBnZXRQcm9ncmVzc0ZpbGUoZmlsZUxvZ0lkbikge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ2ZpbGVfbG9nX2lkbiddID0gZmlsZUxvZ0lkbjsvL3RoaXMuZmlsZUxvZ0lkbjtcclxuICAgIFxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZ2V0RmlsZUxvZ1N0YXR1cyc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuc3R0c0ZpbGVbJ0MnXSA9IHJlc3VsdFsnQyddO1xyXG4gICAgICAgIHRoaXMuc3R0c0ZpbGVbJ1AnXSA9IHJlc3VsdFsnUCddO1xyXG4gICAgICAgIHRoaXMuc3R0c0ZpbGVbJ0UnXSA9IHJlc3VsdFsnRSddO1xyXG4gICAgICAgIHRoaXMuc3R0c0ZpbGVbJ1QnXSA9IHJlc3VsdFsnVCddO1xyXG4gICAgICAgIHRoaXMuc3R0c0ZpbGVbJ0knXSA9IHJlc3VsdFsnSSddO1xyXG4gICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgdGhpcy50b3RQcm9ncmVzc0ZpbGUgPSBNYXRoLmNlaWwocGFyc2VGbG9hdChyZXN1bHRbJ0MnXSkgKiAxMDAgLyBwYXJzZUZsb2F0KHJlc3VsdFsnVCddKSk7XHJcbiAgICAgICAgdGhpcy5yZWNhbGxGaWxlKGZpbGVMb2dJZG4pO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7IGNzc0NsYXNzOiAnYWxlcnQtc3VjY2VzcycsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8gY2hlY2tVcGxvYWRTdHQoKSB7XHJcbiAgLy8gICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAvLyAgIGxldCByZXFPYmogPSB7fTtcclxuICAvLyAgIHJlcU9ialsnZm9ybU5tZSddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5hbWUnXTtcclxuICAvLyAgIHJlcU9ialsnZmlsZV9sb2dfaWRuJ10gPSB0aGlzLmZpbGVMb2dJZG47XHJcbiAgLy8gICBcclxuICAvLyAgIHRoaXMudXMuZGF0YShyZXFPYmosICdnZXRGaWxlTG9nU3RhdHVzJywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgLy8gICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgLy8gICAgICAgdGhpcy5jbGlja2VkID0gdHJ1ZTtcclxuICAvLyAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gIC8vICAgICAgICBcclxuICAvLyAgICAgICB0aGlzLnN0dHNbJ0MnXSA9IHJlc3VsdFsnQyddO1xyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snUCddID0gcmVzdWx0WydQJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdHRzWydFJ10gPSByZXN1bHRbJ0UnXTtcclxuICAvLyAgICAgICB0aGlzLnN0dHNbJ1QnXSA9IHJlc3VsdFsnVCddO1xyXG4gIC8vICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgLy8gICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgLy8gICAgICAgdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1zdWNjZXNzJywgdGltZW91dDogMzAwMCB9KTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgIH0sIGVycm9yID0+IHtcclxuICAvLyAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgLy8gICAgIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnJvciwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgLy8gICB9KTtcclxuXHJcbiAgLy8gfVxyXG5cclxuICBzdHRzID0ge307XHJcbiAgY2xpY2tlZCA9IGZhbHNlO1xyXG4gIHRvdFByb2dyZXNzID0gMDtcclxuICB0b3RQcm9ncmVzc0ZpbGUgPSAwO1xyXG4gIGdldFByb2dyZXNzUHJpY2UoaGRySWRuKSB7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgcmVxT2JqWydzZXFObyddID0gaGRySWRuOy8vXCI4NDZcIjsvL3RoaXMuZmlsZUxvZ0lkbjtcclxuICAgIFxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnZ2V0UHJpY2VTdGF0dXMnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5jbGlja2VkID0gdHJ1ZTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgICBcclxuICAgICAgICB0aGlzLnN0dHNbJ0MnXSA9IHJlc3VsdFsnQyddO1xyXG4gICAgICAgIHRoaXMuc3R0c1snUCddID0gcmVzdWx0WydQJ107XHJcbiAgICAgICAgdGhpcy5zdHRzWydFJ10gPSByZXN1bHRbJ0UnXTtcclxuICAgICAgICB0aGlzLnN0dHNbJ1QnXSA9IHJlc3VsdFsnVCddO1xyXG4gICAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgdGhpcy50b3RQcm9ncmVzcyA9IE1hdGguY2VpbChwYXJzZUZsb2F0KHJlc3VsdFsnQyddKSAqIDEwMCAvIHBhcnNlRmxvYXQocmVzdWx0WydUJ10pKTtcclxuICAgICAgICB0aGlzLnJlY2FsbCh0aGlzLmhkcklkbik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1zdWNjZXNzJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgbGFzdFJlZnJlc2hUaW1lRmlsZSA9IG51bGw7XHJcbiAgcmVjYWxsRmlsZShmaWxlTG9nSWRuKSB7XHJcblxyXG4gICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlIDwgMTAwKSB7XHJcbiAgICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lRmlsZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRoaXMudGltZXJmaWxlID1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NGaWxlKGZpbGVMb2dJZG4pO1xyXG4gICAgICAgIH0sIDUwMDApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyZmlsZSk7XHJcbiAgICAgIC8vIHRoaXMuUGxhbm5pbmdDb21wb25lbnQuZ2V0UGFja2V0c0J5SGVhZGVySWQoaGRySWRuKTtcclxuICAgICAgLy8gdGhpcy5jbG9zZWJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgIGlmICh0aGlzLnRvdFByb2dyZXNzRmlsZSA9PSAxMDAgJiYgdGhpcy50b3RQcm9ncmVzcyA9PSAxMDApIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuZmlsZVVwbG9hZE1vZGFsJykuY2xpY2soKTtcclxuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJpY2luZy9yb3VnaC9wbGFuaW5nc2NyZWVuL3JvdWdoUGxhbmluZ1NjcmVlbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IGhkcklkOiB0aGlzLmhkcklkbiB9IH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBsYXN0UmVmcmVzaFRpbWUgPSBudWxsO1xyXG4gIHJlY2FsbChoZHJJZG4pIHtcclxuICAgIGlmICh0aGlzLnRvdFByb2dyZXNzIDwgMTAwKSB7XHJcbiAgICAgIHRoaXMubGFzdFJlZnJlc2hUaW1lID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy50aW1lclByaWNlID1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NQcmljZShoZHJJZG4pO1xyXG4gICAgICAgIH0sIDUwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2Uge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lclByaWNlKTtcclxuICAgICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlID09IDEwMCAmJiB0aGlzLnRvdFByb2dyZXNzID09IDEwMCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5maWxlVXBsb2FkTW9kYWwnKS5jbGljaygpO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3ByaWNpbmcvcm91Z2gvcGxhbmluZ3NjcmVlbi9yb3VnaFBsYW5pbmdTY3JlZW4nXSwgeyBxdWVyeVBhcmFtczogeyBoZHJJZDogdGhpcy5oZHJJZG4gfSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBTa2lwVmVyaWZpY2F0aW9uKCkge1xyXG4gICAgdGhpcy5tYXBwaW5nc2tpcCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hZGRGaWxlTG9nKHRoaXMuZmlsZVR5cGUpO1xyXG5cclxuICB9XHJcbiAgU2tpcFZlcmlmaWNhdGlvbkR0bCgpIHtcclxuICAgIHRoaXMubWFwcGluZ3NraXAgPSB0cnVlO1xyXG4gICAgdGhpcy5zdGVwID0gNDtcclxuICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVUeXBlRGF0YShmaWxlVXBsb2FkLCBtZGwpIHtcclxuICAgIHRoaXMuc2hlZXREYXRhID0gW107XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bCA9IHt9O1xyXG4gICAgdGhpcy5kZWZ1bHREaXNwbGF5TGVuID0gNTtcclxuICAgIHRoaXMuZGVmdWx0RGlzcGxheU9iaiA9IFtdO1xyXG4gICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsID0gW107XHJcbiAgICB0aGlzLmhlYWRlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuaGVhZGVycHJwO1xyXG4gICAgdGhpcy5hdHRycHJwO1xyXG4gICAgdGhpcy50b3RhbG1hdGNoID0gMDtcclxuICAgIHRoaXMudG90YWxpZ25vcmUgPSAwO1xyXG4gICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHt9O1xyXG4gICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlscyA9IHt9O1xyXG4gICAgdGhpcy5yb3dkaXN0aW5jdERhdGFNYXAgPSB7fTtcclxuICAgIHRoaXMuY2hhckhlYWRlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuYXR0cmlidXRlRHRsTWFwID0ge307XHJcbiAgICB0aGlzLm1hcHBTaGVldERhdGEgPSBbXTtcclxuICAgIHRoaXMuc3RhdHVzTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5maWxlRGV0YWlscyA9IFtdO1xyXG4gICAgdGhpcy5maWxlVHlwZUxpc3QgPSBbXTtcclxuICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gW107XHJcbiAgICB0aGlzLmZpbGVUeXBlO1xyXG4gICAgdGhpcy5ubWU7XHJcbiAgICB0aGlzLnR5cDtcclxuICAgIHRoaXMuZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmNoZWNrX3N0YXR1cyA9IFtdO1xyXG4gICAgdGhpcy5wa3Rfc3RhdHVzID0gW107XHJcbiAgICB0aGlzLmNvbEZvcm1hdGUgPSBbXTtcclxuICAgIHRoaXMuYWxsY29scyA9IFtdO1xyXG4gICAgdGhpcy5maWxlTG9nSWRuID0gMDtcclxuICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdGVwTXNnID0gJyc7XHJcbiAgICB0aGlzLnN0dHMgPSB7fTtcclxuICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy50b3RQcm9ncmVzcyA9IDA7XHJcbiAgICB0aGlzLnRvdFByb2dyZXNzRmlsZSA9IDA7XHJcbiAgICB0aGlzLnN0ZXAgPSAxO1xyXG4gICAgdGhpcy5sYWJsZSA9IFwiXCI7XHJcbiAgICB0aGlzLmZpbGVubWUgPSBcIlwiO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0TWFwID0ge307XHJcbiAgICBsZXQgZmlsZXR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZmlsZXR5cGUnXSB8fCAnJztcclxuICAgIHRoaXMubWRsID0gbWRsO1xyXG4gICAgdGhpcy5maWxlbm1lID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZpbGV0eXBlJ10gfHwgJyc7XHJcbiAgICB0aGlzLm1hcHBpbmdza2lwID0gZmFsc2U7XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9IGZpbGVVcGxvYWQ7XHJcbiAgICBpZiAobWRsICE9ICcnKVxyXG4gICAgICByZXFPYmpbJ21kbCddID0gbWRsO1xyXG4gICAgaWYgKGZpbGV0eXBlICE9ICcnKVxyXG4gICAgICByZXFPYmpbJ2ZpbGVubWUnXSA9IGZpbGV0eXBlO1xyXG4gICAgXHJcbiAgICBcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2xvYWRGaWxlVXBsb2FkJztcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdIFxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgIHRoaXMucGFnZURlZmluYXRpb24gPSByZXN1bHQucGFnZURlZmluYXRpb25cclxuICAgICAgICB0aGlzLnN0YXR1c0xpc3QgPSByZXN1bHQuc3RhdHVzTGlzdDtcclxuICAgICAgICB0aGlzLmZpbGVEZXRhaWxzID0gcmVzdWx0LmZpbGVEZXRhaWxzO1xyXG4gICAgICAgIHRoaXMuZmlsZVR5cGVMaXN0ID0gcmVzdWx0LmZpbGVUeXBlTGlzdDtcclxuICAgICAgICB0aGlzLmZpbGVPcHRpb25zTGlzdCA9IHJlc3VsdC5maWxlT3B0aW9uc0xpc3QgfHwgW107XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsZU9wdGlvbnNMaXN0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICB0aGlzLmZpbGVUeXBlID0gdGhpcy5maWxlT3B0aW9uc0xpc3RbMF0uaztcclxuICAgICAgICBsZXQgYWRkbEF0dHIgPSB0aGlzLmZpbGVPcHRpb25zTGlzdFswXS5hZGRsX2F0dHIgfHwge307XHJcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gYWRkbEF0dHIuZGF0ZWZvcm1hdCB8fCAnZGQvbW0veXknO1xyXG4gICAgICAgIHRoaXMuZGVsaW0gPSBhZGRsQXR0ci5kZWxpbSB8fCAnLyc7XHJcbiAgICAgICAgdGhpcy5zdGF0dXNMaXN0ID0gcmVzdWx0LnN0YXR1c0xpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG5cclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG5cclxuICAgIGxldCBtZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgbGV0IGNVcmwgPSB0aGlzLnJvdXRlci51cmw7XHJcbiAgICB0aGlzLmNEdCA9IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLmhlYWRlciA9IHtcclxuICAgICAgJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgICAnbW9kdWxla2V5JzogbWRsa1tjVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xyXG4gICAgICBsZXQgbWRsID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2dycCddIHx8ICcnO1xyXG5cclxuICAgICAgdGhpcy5sb2FkRmlsZVR5cGVEYXRhKCdmaWxlVXBsb2FkJywgbWRsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBpbndhcmRfaWRuO1xyXG4gIGlud2FyZFN0b2NrVHlwZTtcclxuICBzdG9ja0lud2FyZFVwbG9hZChpbndhcmREdGwsIG1kbCkge1xyXG4gICAgdGhpcy5pbndhcmRfaWRuID0gaW53YXJkRHRsLmlud2FyZF9pZG47XHJcbiAgICB0aGlzLmlud2FyZFN0b2NrVHlwZSA9IGlud2FyZER0bC5zdG9ja190eXBlO1xyXG4gICAgdGhpcy5pbndhcmRfYWN0aW9uID0gaW53YXJkRHRsLmlud2FyZF9hY3Rpb24gfHwgJydcclxuICAgIHRoaXMubWRsID0gbWRsO1xyXG4gICAgdGhpcy5sb2FkRmlsZVR5cGVEYXRhKCdmaWxlVXBsb2FkJywgbWRsKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMudGltZXJmaWxlICE9IHVuZGVmaW5lZClcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXJmaWxlKTtcclxuXHJcbiAgICBpZiAodGhpcy50aW1lclByaWNlICE9IHVuZGVmaW5lZClcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXJQcmljZSk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0T3B0aW9uc0Zvck1peFRvU2luZ2xlKCkge1xyXG4gICAgdGhpcy5maWxlT3B0aW9uc0xpc3QgPSBbXHJcbiAgICAgIHsgXCJrXCI6IFwiNjk2XCIsIFwidlwiOiBcIk1hcmtldGluZyBTdG9ja1wiIH1cclxuICAgIF07XHJcbiAgICB0aGlzLmZpbGVUeXBlID0gXCI2OTZcIjtcclxuICB9XHJcblxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJtdFwiIHN0eWxlPVwiYmFja2dyb3VuZDogI2ZmZjtcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1mcmFtZVwiPlxyXG4gICAgICAgIDxwICpuZ0lmPVwic2hvd1wiIGNsYXNzPVwibG9hZGluZy10ZXh0XCIgc3R5bGU9XCJ6LWluZGV4OiA5OTk5XCI+IHt7c3RlcE1zZ319IDwvcD5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlubmVyRFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtZWxlbWVudC1zdGVwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHN0ZXAtdGhpblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgYmctZ3JleSBtdC1zdGVwLWNvbFwiIFtuZ0NsYXNzXT1cInsnZG9uZSc6c3RlcD09MSA/ICdkb25lJzonJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPXNldFNldHAoMSk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLW51bWJlciBiZy13aGl0ZSBmb250LWdyZXlcIj4xPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLXRpdGxlIHVwcGVyY2FzZSBmb250LWdyZXktY2FzY2FkZVwiPkJyb3dzZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBiZy1ncmV5IG10LXN0ZXAtY29sXCIgW25nQ2xhc3NdPVwieydkb25lJzpzdGVwPT0yID8gJ2RvbmUnOicnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9c2V0U2V0cCgyKT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtbnVtYmVyIGJnLXdoaXRlIGZvbnQtZ3JleVwiPjI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtdGl0bGUgdXBwZXJjYXNlIGZvbnQtZ3JleS1jYXNjYWRlXCI+SGVhZGVyIFZlcmlmaWNhdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBiZy1ncmV5IG10LXN0ZXAtY29sXCIgW25nQ2xhc3NdPVwieydkb25lJzpzdGVwPT0zID8gJ2RvbmUnOicnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9c2V0U2V0cCgzKT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtbnVtYmVyIGJnLXdoaXRlIGZvbnQtZ3JleVwiPjM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtdGl0bGUgdXBwZXJjYXNlIGZvbnQtZ3JleS1jYXNjYWRlXCI+RGF0YSBWZXJpZmljYXRpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGJnLWdyZXkgbXQtc3RlcC1jb2xcIiBbbmdDbGFzc109XCJ7J2RvbmUnOnN0ZXA9PTQgPyAnZG9uZSc6Jyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1zZXRTZXRwKDQpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC1udW1iZXIgYmctd2hpdGUgZm9udC1ncmV5XCI+NDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC10aXRsZSB1cHBlcmNhc2UgZm9udC1ncmV5LWNhc2NhZGVcIj5VcGxvYWRpbmcuLjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHVwbG9hZFwiICpuZ0lmPVwic3RlcD09MVwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMyBjb2wtbWQtM1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC00IGNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmc6IDVweDtcIj5GaWxlIFR5cGUgOjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJmaWxlVHlwZVwiIFsobmdNb2RlbCldPVwiZmlsZVR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj4tLXNlbGVjdC0tPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVPcHRpb25zTGlzdFwiIHZhbHVlPVwie3tmaWxlPy5rfX1cIj57e2ZpbGU/LnZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZmlsZWlucHV0LXdyYXBwZXIgYnRuIGJ0bi1kZWZhdWx0ICBmaWxlaW5wdXQgYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjM2E1ODk4XCI+PHNwYW4+QnJvd3NlIGZpbGU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZpbGVpbnB1dCBidG4tcHJpbWFyeVwiIG5hbWU9XCJmaWxlbmFtZVwiIGlkPVwiZmlsZW5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiQnJvd3NlIGZpbGVcIiBhY2NlcHQ9XCIueGxzeCwuY3N2XCIgKGNoYW5nZSk9XCJpbmNvbWluZ2ZpbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJsZWZ0OiAtMTYzLjc1cHg7IHRvcDogOXB4O1wiPjwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPlVwbG9hZCBGaWxlIDogJm5ic3A7Jm5ic3A7Jm5ic3A7PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgY2xhc3M9XCJmaWxlaW5wdXQgYnRuLXByaW1hcnlcIiBhY2NlcHQ9XCIueGxzeCwuY3N2XCIgbmFtZT1cImZpbGVuYW1lXCIgaWQ9XCJmaWxlbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaW5jb21pbmdmaWxlKCRldmVudClcIiB0aXRsZT1cIkJyb3dzZSBmaWxlXCI+IC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHVwbG9hZFwiICpuZ0lmPVwic3RlcD09MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBNYXRjaCA6IHt7dG90YWxtYXRjaH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIElnbm9yZSA6IHt7dG90YWxpZ25vcmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBjb2wtbWQtMTJcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvO3dpZHRoOiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJmaWxldXBsb2Fkdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhkciBvZiBoZWFkZXJMaXN0IDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXRjaCc6aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0ciE9JycgJiYgaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uaWdub3JlIT0nWScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJzpoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmU9PSdZJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGJnJzpoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyPT0nJyAmJiBoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUhPSdZJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIiAoY2xpY2spPVwidXBkYXRlY29sdW1uc3RhdHVlKGhkcilcIj57e2hkcn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhkciBvZiBoZWFkZXJMaXN0IDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHI9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c2VsZWN0IGNsYXNzPVwic2VsZWN0LWNvbnRyb2xcIiBuYW1lPVwie3toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNvbmZpcm1zZXRIZWFkZXJNYXBwKGhkciwkZXZlbnQudGFyZ2V0KVwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInNlbGVjdC1jb250cm9sXCIgbmFtZT1cInt7aGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjb25maXJtc2V0SGVhZGVyTWFwcChoZHIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj4tLXNlbGVjdC0tPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGF0dHJEdGwgb2YgYXR0clN0cnVjdHVyZUR0bFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7YXR0ckR0bD8uYXR0cn19XCI+e3thdHRyRHRsPy5hdHRyfX0gKHt7YXR0ckR0bD8ucHJpbnR9fSk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyTGlzdCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5kdGFfdHlwPT0nZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwic2VsZWN0LWNvbnRyb2xcIiBuYW1lPVwie3tkYXRlRm9ybWF0TWFwW2hkcl19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZUZvcm1hdE1hcFtoZHJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGR0ZUZtdCBvZiBkYXRlRm9ybWF0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7ZHRlRm10Py5rfX1cIj57e2R0ZUZtdD8udn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93RGlzIG9mIGRlZnVsdERpc3BsYXlPYmogO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgaGRyIG9mIGhlYWRlckxpc3QgO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Jvd0Rpc1toZHJdfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMTEgY29sLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImZpbGVMb2dJZG49PTAgJiYgKGZpbGVubWU9PSdnZW5lcmljJyB8fCBmaWxlbm1lPT0nZ2lhX2JpbGwnKVwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHB1bGwtcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luOiA1cHhcIiAoY2xpY2spPVwiU2tpcFZlcmlmaWNhdGlvbigpXCI+U2tpcDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyAmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZmlsZUxvZ0lkbj09MFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHB1bGwtcmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luOiA1cHhcIiAoY2xpY2spPVwiVmFsaWRhdGVGaWxlSGVhZGVyTWFwcGluZygnWScpXCI+VmVyaWZ5PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHVwbG9hZCBcIiAqbmdJZj1cInN0ZXA9PTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHRhYmxlLXJlc3BvbnNpdmUgY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjZWxsc3BhY2luZz1cIjEwXCIgY2xhc3M9XCJkaXNwbGF5VGFibGUgZmlsZXVwbG9hZHZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhkciBvZiBjaGFySGVhZGVyTGlzdCA7bGV0IGo9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwiY29sb3I6d2hpdGU7Ym9yZGVyOiAxcHggc29saWQgd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aGRyfX0oe3toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyfX0pPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtuZ0NsYXNzXT1cInsnZXZlbic6aiUyPT0wLCdvZGQnOmolMj09MX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXR0clZhbCBvZiByb3dkaXN0aW5jdERhdGFNYXBbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl07XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDoxNjBweDttYXJnaW4tcmlnaHQ6IDFweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdGNoZWRVbCc6cm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsICE9Jyd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgc3R5bGU9XCJsaXN0LXN0eWxlOiBub25lO3RleHQtYWxpZ246bGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4ge3thdHRyVmFsfX0gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsPT0nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ7e3Jvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY29uZmlybUhlYWRlckRldGFpbHNNYXBwKGhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHIsaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl9pZG4sYXR0clZhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj4tLXNlbGVjdC0tPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dHJkdGxtYXAgb2YgYXR0cmlidXRlRHRsTWFwW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7YXR0cmR0bG1hcD8udmFsfX1cIj57e2F0dHJkdGxtYXA/LmRpc3BsYXl9fSAoe3thdHRyZHRsbWFwPy52YWx9fSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWx9fSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsgPGkgKGNsaWNrKT1cInJlbW92ZURldGFpbEF0dHJPcHRWYWwoaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl9pZG4sYXR0clZhbCxyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWwsW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdKVwiIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImNvbG9yOiByZWQ7Y3Vyc29yOiBwb2ludGVyO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0xMSBjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZmlsZUxvZ0lkbj09MCAmJiAoZmlsZW5tZT09J2dlbmVyaWMnIHx8IGZpbGVubWU9PSdnaWFfYmlsbCcpXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDVweFwiIChjbGljayk9XCJTa2lwVmVyaWZpY2F0aW9uRHRsKClcIj5Ta2lwPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiIHN0eWxlPVwibWFyZ2luOiA1cHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRGaWxlKClcIiBbZGlzYWJsZWRdPVwiZ21hdGNoZWRDb3VudCE9Z3Jlc3VsdENvdW50XCI+VXBsb2FkPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHVwbG9hZFwiICpuZ0lmPVwic3RlcD09NFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTRcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O2NvbG9yOmdyZWVuO2ZvbnQtc2l6ZTogMjBweDt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmxlRmlsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMTRweDtcIiAqbmdJZj1cImxhc3RSZWZyZXNoVGltZUZpbGUgIT0gbnVsbFwiPkxhc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoIHRpbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7e2xhc3RSZWZyZXNoVGltZUZpbGUgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBzdHlsZT1cIm1hcmdpbjogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOnRvdFByb2dyZXNzRmlsZSsnJSd9ICBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3RvdFByb2dyZXNzRmlsZX19ICVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3RlcD09NCAmJiBjbGlja2VkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAzNXB4O1wiPjxzdHJvbmc+IENvbXBsZXRlIDp7e3N0dHNGaWxlWydDJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBQZW5kaW5nIDoge3tzdHRzRmlsZVsnUCddfX0gJm5ic3A7Jm5ic3A7Jm5ic3A7IEVycm9yIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0dHNGaWxlWydFJ119fSZuYnNwOyZuYnNwOyZuYnNwOyBJbnZhaWxkIFN0YXR1cyA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdHRzRmlsZVsnSSddfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgVG90YWwgOiB7e3N0dHNGaWxlWydUJ119fTwvc3Ryb25nPjwvcD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTVweDtjb2xvcjpncmVlbjtmb250LXNpemU6IDIwcHg7bWFyZ2luLXRvcDogMTVweDt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2xhYmxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O21hcmdpbi1sZWZ0OiAyMHB4O2NvbG9yOiBibGFjaztcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGFzdFJlZnJlc2hUaW1lICE9IG51bGxcIj5MYXN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaCB0aW1lIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe3tsYXN0UmVmcmVzaFRpbWUgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIiBzdHlsZT1cIm1hcmdpbjogMTVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLXdhcm5pbmdcIiByb2xlPVwicHJvZ3Jlc3NiYXJcIiBhcmlhLXZhbHVlbm93PVwiNjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOnRvdFByb2dyZXNzKyclJ30gIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dG90UHJvZ3Jlc3N9fSAlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIHRleHQtY2VudGVyXCIgc3R5bGU9XCJtYXJnaW46IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tVcGxvYWRTdHQoKVwiPkNoZWNrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cInN0ZXA9PTQgJiYgY2xpY2tlZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMzVweDtcIj48c3Ryb25nPiBDb21wbGV0ZSA6e3tzdHRzWydDJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBQZW5kaW5nIDoge3tzdHRzWydQJ119fSAmbmJzcDsmbmJzcDsmbmJzcDsgRXJyb3IgOiB7e3N0dHNbJ0UnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IFRvdGFsIDoge3tzdHRzWydUJ119fTwvc3Ryb25nPjwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiZmlsZVVwbG9hZE1vZGFsXCIgdGFiaW5kZXg9XCItMVwiIHN0eWxlPVwiei1pbmRleDogOTk5OTk5XCIgcm9sZT1cImRpYWxvZ1wiXHJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJzbWFsbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAjZmlsZVVwbG9hZGNsc2J0bj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5BZGQgZmlsZSB1cGxvYWQgb3B0aW9uPC9oND5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiByb2xlPVwiZm9ybVwiICNmPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KGYpXCIgbmFtZT1cImFwcEZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+TmFtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJubWVcIiBuYW1lPVwibm1lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+RGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5UeXBlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ0eXBcIiBbKG5nTW9kZWwpXT1cInR5cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS1zZWxlY3QtLTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVUeXBlTGlzdFwiIHZhbHVlPVwie3tmaWxlPy5rfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmlsZT8udn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+Q2hlY2sgc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBTdGF0dXNcIiBbb3B0aW9uc109XCJzdGF0dXNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjaGVja19zdGF0dXNcIiBuYW1lPVwiY2hlY2tfc3RhdHVzXCIgW211bHRpcGxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhbWZhbWZhbS1mbGFncyB7e29wdGlvbj8udmFsdWV9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24/LmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+UGFja2V0IHN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgU3RhdHVzXCIgW29wdGlvbnNdPVwic3RhdHVzTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGt0X3N0YXR1c1wiIG5hbWU9XCJwa3Rfc3RhdHVzXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlIGxldC1vcHRpb249XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYW1mYW1mYW0tZmxhZ3Mge3tvcHRpb24/LnZhbHVlfX1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNmaWxlVXBsb2FkY2xzYnRuPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXBwQXBwTm9EYmxDbGlja1xyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdChmKVwiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIkNvZmlybW1hcGhkclwiICByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCJcclxuICBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiIGNsYXNzPVwiY2xvc2VcIiAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiA+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+QWxlcnQ8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgRm9yIE1hcHBpbmcgPGI+e3ttYXBoZHJ9fTwvYj4gVG8gQXR0cmlidXRlIDxiPnt7aGRybWFzc2FnZX19PC9iPiBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiA+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwic2V0SGVhZGVyTWFwcCgpO1wiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJDb2Zpcm1tYXBkdGxcIiAgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiXHJcbiAgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDYW5jZWxIZWFkZXJNYXBwKClcIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiA+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPkFsZXJ0PC9oND5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgQXJlIHlvdSBzdXJlIEZvciBNYXBwaW5nIDxiPnt7ZHRsb3B0aW9udmFsfX08L2I+IFRvIEF0dHJpYnV0ZSAgPGI+IHt7ZHRsQXR0cn19IDwvYj4gd2l0aCBBdHRyaWJ1dGVEZXRhaWwgPGI+e3tkdGxtYXNzYWdlfX08L2I+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJDYW5jZWxIZWFkZXJEZXRhaWxzTWFwcCgpXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwic2V0SGVhZGVyRGV0YWlsc01hcHAoKVwiPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG48YnV0dG9uIGlkPVwiYnRuZmlsZVVwbG9hZE1vZGFsXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2ZpbGVVcGxvYWRNb2RhbFwiPjwvYnV0dG9uPlxyXG5cclxuPGJ1dHRvbiBpZD1cImJ0bkNvZmlybW1hcGhkclwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNDb2Zpcm1tYXBoZHJcIj48L2J1dHRvbj5cclxuPGJ1dHRvbiBpZD1cImJ0bkNvZmlybW1hcGR0bFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNDb2Zpcm1tYXBkdGxcIj48L2J1dHRvbj5cclxuXHJcblxyXG5cclxuPCEtLSA8ZGl2IGNsYXNzPVwiY2VudGVyZWRcIj5cclxuICAgIDxkaXYgaWQ9XCJkaXZTcGlubmVyXCIgY2xhc3M9XCJzcGlubmVyIGxvYWRpbmdcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPkxvYWRpbmcgLi4uPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJ0ZXN0KClcIiBpZD1cImJ0bkxvYWRSZWNvcmRzXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlcjtwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTIlOyBsZWZ0OiA0NSU7XCI+TG9hZCBSZWNvcmRzPC9idXR0b24+XHJcbiAgPC9kaXY+IC0tPiJdfQ==
|
|
942
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL2ZpbGUtdXBsb2FkL2ZpbGV1cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXpsaWIvc3JjL2xpYi9maWxlLXVwbG9hZC9maWxldXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0Isc0dBQXNHO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7Ozs7Ozs7Ozs7QUFTcEQsTUFBTSxPQUFPLG1CQUFtQjtJQTBEOUIsWUFDUyxNQUFjLEVBQ2IsS0FBcUIsRUFDckIsTUFBcUIsRUFDckIsY0FBaUMsRUFDakMsSUFBZ0IsRUFDaEIsRUFBd0I7UUFMekIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLFNBQUksR0FB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QkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCO2tQQVFBLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0csWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyU2VydmljZSB9IGZyb20gXCJuZ3gtc3Bpbm5lclwiO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tICduZzItY29va2llcy9uZzItY29va2llcyc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21tYW5TZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2NvbW1hbi1zZXJ2aWNlL2NvbW1hbi1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG4vLyBpbXBvcnQgeyBVcGxvYWRTZXJ2aWNlU2VydmljZSB9IGZyb20gJ3NyYy9hcHAvY29tcG9uZW50cy9maWxldXBsb2FkLW1vZHVsZS91cGxvYWQtc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9kYWxEaXJlY3RpdmUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZXVwbG9hZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGV1cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGV1cGxvYWQuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGV1cGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdjbG9zZWhkcmJ0bicpIGNsb3NlaGRyYnRuOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlZHRsYnRuJykgY2xvc2VkdGxidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnQ29maXJtbWFwZHRsJykgQ29maXJtbWFwZHRsOiBNb2RhbERpcmVjdGl2ZTtcclxuICBoZWFkZXIgPSB7fTtcclxuICBmaWxlVG9VcGxvYWQ6IEZpbGUgPSBudWxsO1xyXG4gIGZpbGVOYW1lID0gXCJcIjtcclxuICBjRHQ7XHJcbiAgc3RlcCA9IDE7XHJcbiAgc2hlZXREYXRhID0gW107XHJcbiAgaGVhZGVyQXR0cmlidXRlRHRsID0ge307XHJcbiAgZGVmdWx0RGlzcGxheUxlbiA9IDU7XHJcbiAgZGVmdWx0RGlzcGxheU9iaiA9IFtdO1xyXG4gIGF0dHJTdHJ1Y3R1cmVEdGwgPSBbXTtcclxuICBoZWFkZXJMaXN0ID0gW107XHJcbiAgaGVhZGVycHJwO1xyXG4gIGF0dHJwcnA7XHJcbiAgdG90YWxtYXRjaCA9IDA7XHJcbiAgdG90YWxpZ25vcmUgPSAwO1xyXG4gIHBhZ2VEZWZpbmF0aW9uID0ge307XHJcbiAgcm93ZGF0YW1hcERldGFpbHMgPSB7fTtcclxuICByb3dkaXN0aW5jdERhdGFNYXAgPSB7fTtcclxuICBjaGFySGVhZGVyTGlzdCA9IFtdO1xyXG4gIGF0dHJpYnV0ZUR0bE1hcCA9IHt9O1xyXG4gIG1hcHBTaGVldERhdGEgPSBbXTtcclxuICBsYWJsZSA9IFwiXCI7XHJcbiAgbGFibGVGaWxlID0gXCJcIjtcclxuICBzdGF0dXNMaXN0ID0gW107XHJcbiAgZmlsZURldGFpbHMgPSBbXTtcclxuICBmaWxlVHlwZUxpc3QgPSBbXTtcclxuICBmaWxlT3B0aW9uc0xpc3QgPSBbXTtcclxuICBmaWxlVHlwZTtcclxuICBubWU7XHJcbiAgdHlwO1xyXG4gIG1kbDtcclxuICBkZXNjcmlwdGlvbjtcclxuICBjaGVja19zdGF0dXMgPSBbXTtcclxuICBwa3Rfc3RhdHVzID0gW107XHJcbiAgY29sRm9ybWF0ZSA9IFtdO1xyXG4gIGlnbm9yZUZvcm1hdGUgPSBbXTtcclxuICBhbGxjb2xzID0gW107XHJcbiAgZmlsZUxvZ0lkbiA9IDA7XHJcbiAgc2hvdyA9IGZhbHNlO1xyXG4gIHN0ZXBNc2cgPSAnJztcclxuICB0aW1lcmZpbGU7XHJcbiAgdGltZXJQcmljZTtcclxuICBkYXRlRm9ybWF0O1xyXG4gIGRlbGltO1xyXG4gIGRhdGVGb3JtYXRNYXAgPSB7fTtcclxuICBtYXBwaW5nc2tpcCA9IGZhbHNlO1xyXG4gIGZpbGV0eXBlO1xyXG4gIGZpbGVubWU7XHJcbiAgZGF0ZUZvcm1hdExpc3QgPSBbeyBcImtcIjogXCJkZC9tbS95eVwiLCBcInZcIjogXCJkZC9tbS95eVwiIH0sXHJcbiAgeyBcImtcIjogXCJtbS9kZC95eVwiLCBcInZcIjogXCJtbS9kZC95eVwiIH0sXHJcbiAgeyBcImtcIjogXCJkZC9Nb24veXlcIiwgXCJ2XCI6IFwiZGQvTW9uL3l5XCIgfSxcclxuICBdXHJcbiAgaW53YXJkX2FjdGlvbiA9ICcnXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UgLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBjczogQ29tbWFuU2VydmljZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBoYW5kbGVGaWxlSW5wdXQoZmlsZXM6IEZpbGVMaXN0KSB7XHJcbiAgICB0aGlzLmZpbGVUb1VwbG9hZCA9IGZpbGVzLml0ZW0oMCk7XHJcbiAgICB0aGlzLmZpbGVOYW1lID0gZmlsZXNbMF0ubmFtZTtcclxuICB9XHJcbiAgb25GaWxlU2VsZWN0KGlucHV0OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICBjb25zdCBmaWxlcyA9IGlucHV0LmZpbGVzO1xyXG5cclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGNvbnN0IGZpbGVUb1JlYWQgPSBmaWxlc1swXTtcclxuXHJcbiAgICAgIGNvbnN0IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IHRoaXMub25GaWxlTG9hZDtcclxuXHJcbiAgICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChmaWxlVG9SZWFkLCBcIlVURi04XCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcbiAgY3N2Q29udGVudDogc3RyaW5nO1xyXG4gIHBhcnNlZENzdjogc3RyaW5nW11bXTtcclxuICBvbkZpbGVMb2FkKGZpbGVMb2FkZWRFdmVudCkge1xyXG4gICAgY29uc3QgY3N2U2VwYXJhdG9yID0gJzsnO1xyXG4gICAgY29uc3QgdGV4dEZyb21GaWxlTG9hZGVkID0gZmlsZUxvYWRlZEV2ZW50LnRhcmdldC5yZXN1bHQ7XHJcbiAgICB0aGlzLmNzdkNvbnRlbnQgPSB0ZXh0RnJvbUZpbGVMb2FkZWQ7XHJcbiAgICBjb25zdCB0eHQgPSB0ZXh0RnJvbUZpbGVMb2FkZWQ7XHJcbiAgICBjb25zdCBjc3YgPSBbXTtcclxuICAgIGNvbnN0IGxpbmVzID0gdHh0LnNwbGl0KCdcXG4nKTtcclxuICAgIGxpbmVzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHM6IHN0cmluZ1tdID0gZWxlbWVudC5zcGxpdChjc3ZTZXBhcmF0b3IpO1xyXG4gICAgICBjc3YucHVzaChjb2xzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wYXJzZWRDc3YgPSBjc3Y7XHJcblxyXG4gICAgLy8gZGVtbyBvdXRwdXQgYXMgYWxlcnRcclxuICAgIHZhciBvdXRwdXQ6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBjc3YuZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICBvdXRwdXQgKz0gXCJcXG5cIjtcclxuICAgICAgdmFyIGNvbE5vID0gMDtcclxuICAgICAgcm93LmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sTm8gPiAwKSBvdXRwdXQgKz0gXCIgfCBcIjtcclxuICAgICAgICBvdXRwdXQgKz0gY29sO1xyXG4gICAgICAgIGNvbE5vKys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb3V0cHV0O1xyXG4gIH1cclxuXHJcblxyXG4gIGFycmF5QnVmZmVyOiBhbnk7XHJcbiAgZmlsZTogRmlsZTtcclxuICBpbmNvbWluZ2ZpbGUoZXZlbnQpIHtcclxuICAgIHRoaXMuZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIHRoaXMuZmlsZU5hbWUgPSB0aGlzLmZpbGUubmFtZTtcclxuICAgIHRoaXMuVXBsb2FkKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgVXBsb2FkKCkge1xyXG4gICAgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RlcE1zZyA9ICdGaWxlIHVwbG9hZCBpbiBwcm9jZXNzLi4nO1xyXG4gICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICB0aGlzLm1hcHBTaGVldERhdGEgPSBbXTtcclxuICAgIHRoaXMuc2hlZXREYXRhID0gW107XHJcbiAgICBsZXQgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IChlKSA9PiB7XHJcbiAgICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmaWxlUmVhZGVyLnJlc3VsdDtcclxuICAgICAgdmFyIGRhdGEgPSBuZXcgVWludDhBcnJheSh0aGlzLmFycmF5QnVmZmVyKTtcclxuICAgICAgdmFyIGFyciA9IG5ldyBBcnJheSgpO1xyXG4gICAgICBsZXQgaGRyID0gdGhpcy5oZWFkZXJMaXN0LmZpbmQoaGRyID0+IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uZHRhX3R5cD09J2QnKVxyXG4gICAgICBsZXQgZGF0YUZvcm1hdGUgID0gdGhpcy5kYXRlRm9ybWF0TWFwW2hkcl0gfHwgJ2RkL21tL3l5JztcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gZGF0YS5sZW5ndGg7ICsraSkgYXJyW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhW2ldKTtcclxuICAgICAgdmFyIGJzdHIgPSBhcnIuam9pbihcIlwiKTtcclxuICAgICAgdmFyIHdvcmtib29rID0gWExTWC5yZWFkKGJzdHIsIHsgdHlwZTogXCJiaW5hcnlcIiwgY2VsbERhdGVzOiB0cnVlLCBkYXRlTkY6ZGF0YUZvcm1hdGUgfSk7XHJcbiAgICAgIHZhciBmaXJzdF9zaGVldF9uYW1lID0gd29ya2Jvb2suU2hlZXROYW1lc1swXTtcclxuICAgICAgdmFyIHdvcmtzaGVldCA9IHdvcmtib29rLlNoZWV0c1tmaXJzdF9zaGVldF9uYW1lXTtcclxuXHJcbiAgICAgIHZhciBzaGVldERhdGFNYXA6IGFueSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQsIHsgaGVhZGVyOiAxIH0pO1xyXG4gICAgICBsZXQgaGVhZGVyTGlzdCA9IHNoZWV0RGF0YU1hcFswXTtcclxuICAgICAgaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJMaXN0LnB1c2goaGRyLnRyaW0oKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNoZWV0RGF0YSA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbih3b3Jrc2hlZXQse3JhdzpmYWxzZSxkYXRlTkY6ZGF0YUZvcm1hdGV9KTtcclxuICAgICAgdGhpcy5tYXBwU2hlZXREYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdvcmtzaGVldCx7cmF3OmZhbHNlLGRhdGVORjpkYXRhRm9ybWF0ZX0pO1xyXG4gICAgICB0aGlzLmZpbGVMb2dJZG4gPSAwO1xyXG4gICAgXHJcbiAgICAgIGxldCBmaWxlTmFtZSA9ICcnXHJcbiAgICAgIGxldCBmaWxlVHlwZSA9IHRoaXMuZmlsZU9wdGlvbnNMaXN0LmZpbmQoZWxlID0+IGVsZS5rID09IHRoaXMuZmlsZVR5cGUpIHx8IG51bGxcclxuICAgICAgaWYoZmlsZVR5cGUgIT0gbnVsbCkge1xyXG4gICAgICAgIGZpbGVOYW1lID0gZmlsZVR5cGUudlxyXG4gICAgICB9XHJcbiAgICAgIC8vIFJlbW92ZSBza2lwIE9wdGlvblxyXG4gICAgICAvLyBpZihmaWxlTmFtZSA9PSAnR2VuZXJpYycpIHtcclxuICAgICAgLy8gICB0aGlzLlNraXBWZXJpZmljYXRpb24oKTtcclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldEhlYWRlck1hdGNoKCk7XHJcbiAgICAgIC8vIH1cclxuICAgICAgLy8gY29uc3QgZGlzdGluY3RTaCA9IFsuLi5uZXcgU2V0KHRoaXMuc2hlZXREYXRhLm1hcCh4PT54LlNIQVBFKSldO1xyXG4gICAgfVxyXG4gICAgZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcih0aGlzLmZpbGUpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2V0cChzdGVwKSB7XHJcbiAgICB0aGlzLnN0ZXAgPSBzdGVwO1xyXG5cclxuICAgIGlmIChzdGVwID09IDEpIHtcclxuICAgICAgdGhpcy5uZ09uRGVzdHJveSgpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJNYXRjaCgpIHtcclxuICAgIHRoaXMuc2hvdyA9IHRydWU7XHJcbiAgICAgXHJcbiAgICB0aGlzLnN0ZXBNc2cgPSAnSGVhZGVyIHZlcmlmaWNhdGlvbiBpbiBwcm9jZXNzIC4uLic7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgcmVxT2JqWydhdHRyTGlzdCddID0gdGhpcy5oZWFkZXJMaXN0O1xyXG4gICAgcmVxT2JqWydmaWxlSWRuJ10gPSB0aGlzLmZpbGVUeXBlO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnbG9hZEhlYWRlckF0dHInO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsID0gcmVzdWx0LmF0dHJEZXRhaWxzIHx8ICcnO1xyXG4gICAgICAgIGxldCBoZWFkZXJMaXN0TG50ID0gdGhpcy5oZWFkZXJMaXN0Lmxlbmd0aDtcclxuICAgICAgICB0aGlzLnRvdGFsbWF0Y2ggPSByZXN1bHQudG90YWxtYXRjaCB8fCAwO1xyXG4gICAgICAgIGlmICh0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bCAhPSAnJykge1xyXG4gICAgICAgICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsID0gcmVzdWx0LmF0dHJTdHJ1Y3R1cmVEdGwgfHwgW107XHJcbiAgICAgICAgICBpZiAodGhpcy5zaGVldERhdGEubGVuZ3RoIDwgNSlcclxuICAgICAgICAgICAgdGhpcy5kZWZ1bHREaXNwbGF5TGVuID0gdGhpcy5zaGVldERhdGEubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kZWZ1bHREaXNwbGF5TGVuOyBpKyspXHJcbiAgICAgICAgICAgIHRoaXMuZGVmdWx0RGlzcGxheU9ialtpXSA9IHRoaXMuc2hlZXREYXRhW2ldO1xyXG5cclxuICAgICAgICAgIGxldCBpZ25vcmVDb2x1bW5Mc3QgPSByZXN1bHQuaWdub3JlX2NvbHVtbiB8fCBbXTtcclxuICAgICAgICAgIGlnbm9yZUNvbHVtbkxzdC5mb3JFYWNoKGhkckRzYyA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyRHNjXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJEc2NdLmlnbm9yZSA9ICdZJztcclxuICAgICAgICAgICAgICBoZWFkZXJMaXN0TG50LS07XHJcbiAgICAgICAgICAgICAgdGhpcy50b3RhbGlnbm9yZSsrO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJEc2NdLmF0dHIgIT0gXCJcIilcclxuICAgICAgICAgICAgICAgIHRoaXMudG90YWxtYXRjaC0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGxldCBpc0RhdGUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmhlYWRlckxpc3QuZm9yRWFjaChoZHIgPT4ge1xyXG5cclxuICAgICAgICAgICAgbGV0IGhkckF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdIHx8IHt9O1xyXG4gICAgICAgICAgICBpZiAoaGRyQXR0ci5kdGFfdHlwID09ICdkJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdE1hcFtoZHJdID0gdGhpcy5kYXRlRm9ybWF0O1xyXG4gICAgICAgICAgICAgIGlzRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgLy8gcmVtb3ZlIFNraXAgT3B0aW9uc1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMudG90YWxtYXRjaCA9PSBoZWFkZXJMaXN0TG50ICYmIGlzRGF0ZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgLy8gICB0aGlzLlZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoJ04nKTtcclxuICAgICAgICAgIC8vICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuc3RlcCA9IDM7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zdGVwID0gMjtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlNvbWUgcHJvYmxlbSBpbiBGaWxlIEhlYWRlciBNYXRjaGluZ1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy90aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICAvL3RoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwZGF0ZWNvbHVtbnN0YXR1ZShoZHIpIHtcclxuXHJcbiAgICB2YXIgaXNJZ25vcmUgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSB8fCAnJztcclxuICAgIGlmIChpc0lnbm9yZSA9PSAnWScpIHtcclxuICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUgPSAnTidcclxuICAgICAgdGhpcy50b3RhbGlnbm9yZS0tO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b3RhbGlnbm9yZSsrO1xyXG4gICAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSA9ICdZJztcclxuICAgIH1cclxuICB9XHJcbiAgbWFwaGRyO1xyXG4gIGhkcm1hc3NhZ2U7XHJcbiAgY29uZmlybXNldEhlYWRlck1hcHAoaGRyKSB7XHJcbiAgICB0aGlzLm1hcGhkciA9IGhkcjtcclxuICAgIGxldCBhdHRyID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyO1xyXG4gICAgdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZvckVhY2goZWxlID0+IHtcclxuXHJcbiAgICAgIGlmIChlbGUuYXR0ciA9PSBhdHRyKSB7XHJcbiAgICAgICAgdGhpcy5oZHJtYXNzYWdlID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyICsgXCIgIChcIiArIGVsZS5wcmludCArIFwiKVwiO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Db2Zpcm1tYXBoZHInKS5jbGljaygpO1xyXG4gIH1cclxuICBDYW5jZWxIZWFkZXJNYXBwKCkge1xyXG4gICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbdGhpcy5tYXBoZHJdLmF0dHIgPSBcIlwiO1xyXG4gIH1cclxuICBzZXRIZWFkZXJNYXBwKCkge1xyXG4gICAgIFxyXG4gICAgbGV0IGF0dHIgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFt0aGlzLm1hcGhkcl0uYXR0ciB8fCAnJztcclxuICAgIGlmIChhdHRyICE9ICcnKSB7XHJcbiAgICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICAgIHJlcU9ialsnb3B0aW9uYVZhbCddID0gdGhpcy5tYXBoZHJcclxuICAgICAgcmVxT2JqWydhdHRyJ10gPSBhdHRyO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdhZGRIZWFkZXJBdHRyJztcclxuICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAgICAgICAgIGxldCBoZHJEdGwgPSByZXN1bHQuYXR0ckRldGFpbHNbdGhpcy5tYXBoZHJdIHx8ICcnO1xyXG4gICAgICAgICAgaWYgKGhkckR0bCAhPSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsbWF0Y2grKztcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbdGhpcy5tYXBoZHJdID0gaGRyRHRsO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbdGhpcy5tYXBoZHJdID0ge1xyXG4gICAgICAgICAgICAgIFwiYXR0clwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwicHJpbnRcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInNydFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwiZHRhX3R5cFwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwiYXR0cl9pZG5cIjogXCJcIlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJNYXBwaW5nIGF0dHJpYnV0ZSBpcyBlbXB0eSBwbGVhc2UgcmV0cnkuXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGdtYXRjaGVkQ291bnQgPSAwO1xyXG4gIGdyZXN1bHRDb3VudCA9IDA7XHJcbiAgc2V0Um93RGF0YU1hcHAoKSB7XHJcbiAgICBpZiAoIXRoaXMubWFwcGluZ3NraXApIHtcclxuICAgICAgbGV0IHJvd01hdGNoQ291bnQgPSAwO1xyXG4gICAgICB0aGlzLmNoYXJIZWFkZXJMaXN0ID0gW107XHJcbiAgICAgIHRoaXMuaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcblxyXG4gICAgICAgIGxldCBhdHRyID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyIHx8ICcnO1xyXG4gICAgICAgIGxldCBhdHRyVHlwZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uZHRhX3R5cCB8fCAnJztcclxuICAgICAgICBsZXQgaXNJZ25vcmUgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSB8fCAnJztcclxuICAgICAgICAvLyBpZiAoYXR0ciAhPSAnJyAmJiBpc0lnbm9yZSAhPSAnWScgJiYgYXR0clR5cGUgPT0gJ2MnKSB7XHJcbiAgICAgICAgaWYgKGF0dHIgIT0gJycgJiYgaXNJZ25vcmUgIT0gJ04nICYmIGF0dHJUeXBlID09ICdjJykge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgdmFyIGRpc3RpbmN0bGlzdCA9IEFycmF5LmZyb20obmV3IFNldCh0aGlzLnNoZWV0RGF0YS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtoZHJdKSkpO1xyXG4gICAgICAgICAgZGlzdGluY3RsaXN0ID0gZGlzdGluY3RsaXN0LmZpbHRlcihmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSB9KTtcclxuICAgICAgICAgIGlmIChkaXN0aW5jdGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnJvd2Rpc3RpbmN0RGF0YU1hcFthdHRyXSA9IGRpc3RpbmN0bGlzdDtcclxuICAgICAgICAgICAgcm93TWF0Y2hDb3VudCA9IHJvd01hdGNoQ291bnQgKyBkaXN0aW5jdGxpc3QubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aGlzLmdtYXRjaGVkQ291bnQgPSByb3dNYXRjaENvdW50O1xyXG4gICAgICAgICAgICB0aGlzLmNoYXJIZWFkZXJMaXN0LnB1c2goaGRyKTtcclxuICAgICAgICAgICAgbGV0IGF0dHJEZXRhaWxzID0gdGhpcy5hdHRyU3RydWN0dXJlRHRsLmZpbmQoYXR0cmR0bCA9PiBhdHRyZHRsLmF0dHIgPT0gYXR0cikgfHwge307XHJcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlRHRsTWFwW2F0dHJdID0gYXR0ckRldGFpbHMucHJwTGlzdCB8fCBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgICByZXFPYmpbJ2F0dHJNYXAnXSA9IHRoaXMucm93ZGlzdGluY3REYXRhTWFwO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdsb2FkSGVhZGVyQXR0ckR0bCc7XHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICBcclxuICAgICAgICAgIHRoaXMucm93ZGF0YW1hcERldGFpbHMgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwge307XHJcbiAgICAgICAgICB0aGlzLmdyZXN1bHRDb3VudCA9IHJlc3VsdC50b3RhbG1hdGNoO1xyXG4gICAgICAgICAgdGhpcy5zdGVwID0gMztcclxuICAgICAgICAgIC8vIHJlbW92ZSBTa2lwIE9wdGlvbnNcclxuICAgICAgICAgIC8vIGlmIChyb3dNYXRjaENvdW50ID09IHJlc3VsdC50b3RhbG1hdGNoKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgICAgICAvLyAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG5cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMudG9hc3RyLmVycm9yKFwicGxlYXNlIHZlcmlmeSBkYXRhIG1hcHBpbmcuXCIpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgaWYgKHJvd01hdGNoQ291bnQgIT0gcmVzdWx0LnRvdGFsbWF0Y2gpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJwbGVhc2UgdmVyaWZ5IGRhdGEgbWFwcGluZy5cIik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcInNvbWV0aGluZyBnbyB3cm9uZyBpbiByb3cgZGF0YS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RlcCA9IDQ7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgZHRsQXR0cjtcclxuICBkdGxhdHRyX2lkbjtcclxuICBkdGxvcHRpb252YWw7XHJcbiAgZHRsbWFzc2FnZTtcclxuICBjb25maXJtSGVhZGVyRGV0YWlsc01hcHAoYXR0ciwgYXR0cl9pZG4sIG9wdGlvbnZhbCkge1xyXG4gICAgdGhpcy5kdGxBdHRyID0gYXR0cjtcclxuICAgIHRoaXMuZHRsYXR0cl9pZG4gPSBhdHRyX2lkbjtcclxuICAgIHRoaXMuZHRsb3B0aW9udmFsID0gb3B0aW9udmFsO1xyXG4gICAgbGV0IHZhbCA9IHRoaXMucm93ZGF0YW1hcERldGFpbHNbdGhpcy5kdGxBdHRyXVt0aGlzLmR0bG9wdGlvbnZhbF0udmFsO1xyXG4gICAgbGV0IGF0dHJpYnV0ZUR0bExpc3QgPSB0aGlzLmF0dHJpYnV0ZUR0bE1hcFthdHRyXTtcclxuICAgIGF0dHJpYnV0ZUR0bExpc3QuZm9yRWFjaChlbGUgPT4ge1xyXG5cclxuICAgICAgaWYgKGVsZS52YWwgPT0gdmFsKSB7XHJcbiAgICAgICAgdGhpcy5kdGxtYXNzYWdlID0gdmFsICsgXCIgIChcIiArIGVsZS5wcmludCArIFwiKVwiO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5Db2Zpcm1tYXBkdGwnKS5jbGljaygpO1xyXG5cclxuICB9XHJcblxyXG4gIENhbmNlbEhlYWRlckRldGFpbHNNYXBwKCkge1xyXG4gICAgdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWwgPSBcIlwiO1xyXG4gIH1cclxuICBzZXRIZWFkZXJEZXRhaWxzTWFwcCgpIHtcclxuICAgIGxldCBhdHRyRHRsVmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1t0aGlzLmR0bEF0dHJdW3RoaXMuZHRsb3B0aW9udmFsXS52YWwgfHwgJyc7XHJcbiAgICBpZiAoYXR0ckR0bFZhbCAhPSAnJykge1xyXG4gICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgICByZXFPYmpbJ29wdGlvbmFWYWwnXSA9IHRoaXMuZHRsb3B0aW9udmFsXHJcbiAgICAgIHJlcU9ialsnYXR0cl9pZG4nXSA9IHRoaXMuZHRsYXR0cl9pZG47XHJcbiAgICAgIHJlcU9ialsnYXR0ciddID0gdGhpcy5kdGxBdHRyO1xyXG4gICAgICByZXFPYmpbJ2F0dHJWYWwnXSA9IGF0dHJEdGxWYWw7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2FkZERldGFpbEF0dHInO1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyWydtZXRob2QnXVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICAgdGhpcy5ncmVzdWx0Q291bnQrKztcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgICBsZXQgYXR0ckRldGFpbHMgPSByZXN1bHQuYXR0ckRldGFpbHMgfHwge31cclxuICAgICAgICAgIHRoaXMucm93ZGF0YW1hcERldGFpbHNbdGhpcy5kdGxBdHRyXVt0aGlzLmR0bG9wdGlvbnZhbF0gPSBhdHRyRGV0YWlsc1t0aGlzLmR0bG9wdGlvbnZhbF07XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiTWFwcGluZyBhdHRyaWJ1dGUgaXMgZW1wdHkgcGxlYXNlIHJldHJ5LlwiKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG9uU3VibWl0KGZvcm1WYWwpIHtcclxuICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZm9ybVZhbC5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1WYWwuZm9ybS5nZXQoZmllbGQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNhdmVGaWxlT3B0aW9uKGZvcm1WYWwudmFsdWUpO1xyXG4gIH1cclxuICBzYXZlRmlsZU9wdGlvbihmcm12YWxzKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9iaiA9IHsgLi4uZnJtdmFscywgY29sdW1uX2Zvcm1hdDogdGhpcy5jb2xGb3JtYXRlLCBpZ25vcmVfY29sdW1uOiB0aGlzLmlnbm9yZUZvcm1hdGUgfTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnYWRkRmlsZU9wdGlvbic7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgICBcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gcmVzdWx0LmZpbGVPcHRpb25zTGlzdDtcclxuICAgICAgICB0aGlzLmZpbGVUeXBlID0gcmVzdWx0LmZpbGVfaWRuO1xyXG4gICAgICAgIHRoaXMuVmFsaWRhdGVGaWxlSGVhZGVyTWFwcGluZygnTicpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBhZGRGaWxlTG9nKGZpbGVJZG4pIHtcclxuICAgICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgcmVxT2JqWydmaWxlX2lkbiddID0gZmlsZUlkbjtcclxuICAgIHJlcU9ialsnZmlsZV9zdGF0dXMnXSA9IFwiSGVhZGVyIEluc2VydGVkXCI7XHJcbiAgICByZXFPYmpbJ3ZhbGlkYXRpb25fcmVtYXJrcyddID0gXCJIZWFkZXIgdmFsaWRhdGVkXCI7XHJcbiAgICByZXFPYmpbJ2hlYWRlcl9yb3cnXSA9IHRoaXMuYWxsY29scztcclxuICAgIHJlcU9ialsnaGVhZGVyX2F0dHJfcm93J10gPSB0aGlzLmNvbEZvcm1hdGU7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdhZGRGaWxlTG9nJztcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5maWxlTG9nSWRuID0gcmVzdWx0LmZpbGVfbG9nX2lkbjtcclxuICAgICAgICB0aGlzLnNldFJvd0RhdGFNYXBwKCk7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIkhlYWRlciB2YWxpZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIFZhbGlkYXRlRmlsZUhlYWRlck1hcHBpbmcoZm9ybWF0U2F2ZSkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcblxyXG4gICAgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgIHRoaXMuc3RlcE1zZyA9ICdIZWFkZXIgdmVyaWZpY2F0aW9uIGluIHByb2Nlc3MgLi4uJztcclxuICAgIHRoaXMuY29sRm9ybWF0ZSA9IFtdO1xyXG4gICAgdGhpcy5pZ25vcmVGb3JtYXRlID0gW107XHJcbiAgICB0aGlzLmFsbGNvbHMgPSBbXTtcclxuICAgIGxldCBpc1ZhbGlkYXRlID0gdHJ1ZTtcclxuICAgIHRoaXMuaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcbiAgICAgIGxldCBoZHJEdGwgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdIHx8ICcnXHJcbiAgICAgIGlmIChoZHJEdGwuYXR0ciA9PSAnJyAmJiBoZHJEdGwuaWdub3JlICE9ICdZJykge1xyXG4gICAgICAgIGlzVmFsaWRhdGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaGRyRHRsLmF0dHIgIT0gJycgJiYgaGRyRHRsLmlnbm9yZSAhPSAnTicpIHtcclxuICAgICAgICB0aGlzLmNvbEZvcm1hdGUucHVzaChoZHJEdGwuYXR0cik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGhkckR0bC5pZ25vcmUgPT0gJ1knKSB7XHJcbiAgICAgICAgdGhpcy5pZ25vcmVGb3JtYXRlLnB1c2goaGRyKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFsbGNvbHMucHVzaChoZHIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGlzVmFsaWRhdGUgJiYgKHRoaXMuZmlsZVR5cGUgPT0gbnVsbCB8fCB0aGlzLmZpbGVUeXBlID09IHVuZGVmaW5lZCB8fCB0aGlzLmZpbGVUeXBlID09IFwiXCIpKSB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG5cclxuICAgICAgdGhpcy5zdGVwTXNnID0gXCJcIjtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bmZpbGVVcGxvYWRNb2RhbCcpLmNsaWNrKCk7XHJcbiAgICAgIHRoaXMuc3RlcCA9IDI7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICBpZiAoaXNWYWxpZGF0ZSkge1xyXG4gICAgICAgIGlmIChmb3JtYXRTYXZlID09ICdZJykge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVmaWxlT3B0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWRkRmlsZUxvZyh0aGlzLmZpbGVUeXBlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIlBsZWFzZSBzcGVjaWZ5IG1hcHBpbmcgb3IgbWFya2UgYXMgaWdub3JlIFwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcblxyXG5cclxuICB9XHJcbiAgaGRySWRuO1xyXG4gIHVwZGF0ZWZpbGVPcHRpb24oKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgIHJlcU9ialsnZmlsZUlkbiddID0gdGhpcy5maWxlVHlwZTtcclxuICAgIHJlcU9ialsnY29sdW1uX2Zvcm1hdCddID0gdGhpcy5jb2xGb3JtYXRlO1xyXG4gICAgcmVxT2JqWydpZ25vcmVfY29sdW1uJ10gPSB0aGlzLmlnbm9yZUZvcm1hdGU7XHJcblxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAndXBkYXRlQ29sdW1uRm9ybWF0JztcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgIH1cclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZSgpIHtcclxuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IHRoaXMuZGF0ZUZvcm1hdCB8fCAnZGQvbW0veXknO1xyXG4gICAgdGhpcy5kZWxpbSA9IHRoaXMuZGVsaW0gfHwgJy8nO1xyXG4gICAgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgIGxldCBkYXRlVmFsaWQgPSB0cnVlO1xyXG4gICAgbGV0IG1hc3NhZ2UgPSBcIlwiO1xyXG5cclxuICAgIGlmICghdGhpcy5tYXBwaW5nc2tpcCkge1xyXG4gICAgICB0aGlzLnN0ZXBNc2cgPSBcIkRhdGEgdmVyaWZpY2F0aW9uIGluIHByb2Nlc3MgLi4uXCI7XHJcbiAgICAgIHRoaXMuaGVhZGVyTGlzdC5mb3JFYWNoKGhkciA9PiB7XHJcbiAgICAgICAgIFxyXG4gICAgICAgIGxldCBhdHRyID0gdGhpcy5oZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyIHx8ICcnO1xyXG4gICAgICAgIGxldCBhdHRyVHlwZSA9IHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uZHRhX3R5cCB8fCAnJztcclxuICAgICAgICBsZXQgaXNJZ25vcmUgPSB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSB8fCAnJztcclxuICAgICAgICBpZiAoaXNJZ25vcmUgPT0gJ1knKSB7XHJcbiAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm1hcHBTaGVldERhdGFbaV1baGRyXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoYXR0clR5cGUgPT0gJ2MnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YS5tYXAoKHJvd0RhdGEsIGkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5jaGFySGVhZGVyTGlzdC5pbmRleE9mKGhkcikgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxldCBhdHRyZHRsVmFsID0gcm93RGF0YVtoZHJdIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgaWYgKGF0dHJkdGxWYWwgIT0gJycpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGxldCBhdHRyRHRsTWFwVmFsID0gdGhpcy5yb3dkYXRhbWFwRGV0YWlsc1thdHRyXVthdHRyZHRsVmFsXS5zcnQ7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YVtpXVthdHRyXSA9IGF0dHJEdGxNYXBWYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChhdHRyICE9IGhkcilcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdXHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgfSBlbHNlIGlmIChhdHRyVHlwZSA9PSAnbicpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBhdHRyZHRsVmFsID0gcm93RGF0YVtoZHJdIHx8ICcnO1xyXG4gICAgICAgICAgICAgIGlmIChhdHRyZHRsVmFsICE9ICcnICYmIGF0dHJkdGxWYWwpIHtcclxuICAgICAgICAgICAgICAgIC8vIGF0dHJkdGxWYWwgPSBhdHRyZHRsVmFsLnJlcGxhY2UoL1teMC05Li1dL2csIFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgYXR0cmR0bFZhbCA9IHBhcnNlRmxvYXQoYXR0cmR0bFZhbC50b1N0cmluZygpLnJlcGxhY2UoL1teMC05Li1dL2csIFwiXCIpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwcFNoZWV0RGF0YVtpXVthdHRyXSA9IGF0dHJkdGxWYWwudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdXHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoYXR0clR5cGUgPT0gJ2QnKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGEubWFwKChyb3dEYXRhLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGxldCBhdHRyZHRsVmFsID0gcm93RGF0YVtoZHJdIHx8ICcnO1xyXG4gICAgICAgICAgICAgIGxldCBkdEZybSA9IHRoaXMuZGF0ZUZvcm1hdE1hcFtoZHJdIHx8ICdkZC9tbS95eSc7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHJkdGxWYWwgIT0gJycpXHJcbiAgICAgICAgICAgICAgICBhdHRyZHRsVmFsID0gdGhpcy5jcy5kYXRlVmFsaWRhdGlvbihhdHRyZHRsVmFsLCBkdEZybSk7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHJkdGxWYWwgPT0gJ2ludmFpbGQnKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRlVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIG1hc3NhZ2UgPSBcIlBsZWFzZSBjaGVjayBEYXRlIDpcIiArIHJvd0RhdGFbaGRyXSArIFwiIERhdGUgRm9ybWF0IDpcIiArIGR0RnJtO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhW2ldW2F0dHJdID0gYXR0cmR0bFZhbC50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgIGlmIChhdHRyICE9IGhkcilcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm1hcHBTaGVldERhdGFbaV1baGRyXVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgfSBlbHNlIGlmIChhdHRyVHlwZSA9PSAndCcpIHtcclxuICAgICAgICAgICAgdGhpcy5tYXBwU2hlZXREYXRhLm1hcCgocm93RGF0YSwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBhdHRyZHRsVmFsID0gcm93RGF0YVtoZHJdIHx8ICcnO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLm1hcHBTaGVldERhdGFbaV1bYXR0cl0gPSBhdHRyZHRsVmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgaWYgKGF0dHIgIT0gaGRyKVxyXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMubWFwcFNoZWV0RGF0YVtpXVtoZHJdXHJcblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGVWYWxpZCkge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKVxyXG4gICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2ZpbGVVcGxvYWQnOy8vdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5hbWUnXTtcclxuICAgICAgcmVxT2JqWydmaWxlX2xvZ19pZG4nXSA9IHRoaXMuZmlsZUxvZ0lkbjtcclxuICAgICAgcmVxT2JqWydhdHRyX2RhdGEnXSA9IHRoaXMubWFwcFNoZWV0RGF0YTtcclxuICAgICAgcmVxT2JqWydpbl9kYXRhJ10gPSB0aGlzLnNoZWV0RGF0YTtcclxuICAgICAgcmVxT2JqWydkYXRlZm9ybWF0J10gPSB0aGlzLmRhdGVGb3JtYXRNYXA7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gJ2ZpbGVVcGxvYWQnO1xyXG4gICAgICBsZXQgdXJsID0gXCJmaWxlVXBsb2FkL2xvYWRcIjtcclxuICAgICAgaWYgKHRoaXMubWRsID09ICdpbndhcmQnKSB7XHJcbiAgICAgICAgdXJsID0gJ2lud2FyZC9sb2FkRmlsZSc7XHJcbiAgICAgICAgcmVxT2JqWydpbndhcmRfaWRuJ10gPSB0aGlzLmlud2FyZF9pZG47XHJcbiAgICAgICAgaWYodGhpcy5pbndhcmRfYWN0aW9uICE9ICcnKSB7XHJcbiAgICAgICAgICByZXFPYmpbJ2lud2FyZF9hY3Rpb24nXSA9IHRoaXMuaW53YXJkX2FjdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsIHVybCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0IHx8IHt9O1xyXG4gICAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnN0ZXAgPSA0O1xyXG4gICAgICAgICAgdGhpcy5maWxlTG9nSWRuID0gcmVzdWx0LmZpbGVfbG9nX2lkbjtcclxuICAgICAgICAgIHRoaXMuaGRySWRuID0gcmVzdWx0LmhkcklkbjtcclxuICAgICAgICAgIHRoaXMuZ2V0UHJvZ3Jlc3NGaWxlKHRoaXMuZmlsZUxvZ0lkbik7XHJcbiAgICAgICAgICB0aGlzLmxhYmxlRmlsZSA9IFwiRmlsZSBTZXF1ZW5jZSBOby4gXCIgKyB0aGlzLmZpbGVMb2dJZG4gKyBcIiBVcGxvYWRpbmcgaW4gcHJvZ3Jlc3MuLi5cIjtcclxuICAgICAgICAgIC8vIHNldCBmaWxlIGlkIHRvIGxvY2FsIHN0b3JhZ2VcclxuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1cGxvYWRlZEZpbGVJZCcsIHJlc3VsdC5maWxlX2xvZ19pZG4pO1xyXG5cclxuICAgICAgICAgIHRoaXMubGFibGUgPSBcIlByaWNpbmcgU2VxdWVuY2UgTm8uIFwiICsgdGhpcy5oZHJJZG4gKyBcIiBQcmljZSBjYWxjdWxhdGlvbnMgaW4gcHJvZ3Jlc3MuLi5cIjtcclxuXHJcbiAgICAgICAgICB0aGlzLmdldFByb2dyZXNzUHJpY2UodGhpcy5oZHJJZG4pO1xyXG5cclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihtYXNzYWdlKTtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH1cclxuICAgXHJcbiAgfVxyXG5cclxuICBjaGFuZ2VNYXBwaW5nKGhkck9iaiwgaGRyLCBhdHRyKSB7XHJcbiAgICB0aGlzLmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSA9ICdZJztcclxuICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0ciA9ICcnO1xyXG4gICAgdGhpcy5yZW1vdmVBdHRyT3B0VmFsKGF0dHIsIGhkcik7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlQXR0ck9wdFZhbChhdHRyLCBvcHRpb25hVmFsKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgIHJlcU9ialsnYXR0ciddID0gYXR0cjtcclxuICAgIHJlcU9ialsnb3B0aW9uYVZhbCddID0gb3B0aW9uYVZhbDtcclxuICAgIFxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAncmVtb3ZlQXR0ck9wdFZhbCc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlRGV0YWlsQXR0ck9wdFZhbChhdHRySWRuLCBvcHRpb25hVmFsLCB2YWwsIGhkckF0dHIpIHtcclxuICAgIHRoaXMucm93ZGF0YW1hcERldGFpbHNbaGRyQXR0cl1bb3B0aW9uYVZhbF0udmFsID0gJyc7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgIHJlcU9ialsnYXR0clZhbCddID0gdmFsO1xyXG4gICAgcmVxT2JqWydvcHRpb25hVmFsJ10gPSBvcHRpb25hVmFsO1xyXG4gICAgcmVxT2JqWydhdHRyX2lkbiddID0gYXR0cklkbjtcclxuICAgIFxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAncmVtb3ZlQXR0ck9wdFZhbCc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH0gXHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgc3R0c0ZpbGUgPSB7fVxyXG4gIGdldFByb2dyZXNzRmlsZShmaWxlTG9nSWRuKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdmaWxlVXBsb2FkJztcclxuICAgIHJlcU9ialsnZmlsZV9sb2dfaWRuJ10gPSBmaWxlTG9nSWRuOy8vdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgXHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdnZXRGaWxlTG9nU3RhdHVzJztcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdIFxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkaUZpbGUocmVxT2JqLCBvcHRpb25zLCAnZmlsZVVwbG9hZC9sb2FkJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuY2xpY2tlZCA9IHRydWU7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdCB8fCB7fTtcclxuICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5zdHRzRmlsZVsnQyddID0gcmVzdWx0WydDJ107XHJcbiAgICAgICAgdGhpcy5zdHRzRmlsZVsnUCddID0gcmVzdWx0WydQJ107XHJcbiAgICAgICAgdGhpcy5zdHRzRmlsZVsnRSddID0gcmVzdWx0WydFJ107XHJcbiAgICAgICAgdGhpcy5zdHRzRmlsZVsnVCddID0gcmVzdWx0WydUJ107XHJcbiAgICAgICAgdGhpcy5zdHRzRmlsZVsnSSddID0gcmVzdWx0WydJJ107XHJcbiAgICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAgICAgICB0aGlzLnRvdFByb2dyZXNzRmlsZSA9IE1hdGguY2VpbChwYXJzZUZsb2F0KHJlc3VsdFsnQyddKSAqIDEwMCAvIHBhcnNlRmxvYXQocmVzdWx0WydUJ10pKTtcclxuICAgICAgICB0aGlzLnJlY2FsbEZpbGUoZmlsZUxvZ0lkbik7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1zdWNjZXNzJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyBjaGVja1VwbG9hZFN0dCgpIHtcclxuICAvLyAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gIC8vICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gIC8vICAgcmVxT2JqWydmb3JtTm1lJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbmFtZSddO1xyXG4gIC8vICAgcmVxT2JqWydmaWxlX2xvZ19pZG4nXSA9IHRoaXMuZmlsZUxvZ0lkbjtcclxuICAvLyAgIFxyXG4gIC8vICAgdGhpcy51cy5kYXRhKHJlcU9iaiwgJ2dldEZpbGVMb2dTdGF0dXMnLCAnZmlsZVVwbG9hZC9sb2FkJykuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcclxuICAvLyAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAvLyAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gIC8vICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgLy8gICAgICAgIFxyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snQyddID0gcmVzdWx0WydDJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdHRzWydQJ10gPSByZXN1bHRbJ1AnXTtcclxuICAvLyAgICAgICB0aGlzLnN0dHNbJ0UnXSA9IHJlc3VsdFsnRSddO1xyXG4gIC8vICAgICAgIHRoaXMuc3R0c1snVCddID0gcmVzdWx0WydUJ107XHJcbiAgLy8gICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAvLyAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgICB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LXN1Y2Nlc3MnLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gIC8vICAgfSwgZXJyb3IgPT4ge1xyXG4gIC8vICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVycm9yLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAvLyAgIH0pO1xyXG5cclxuICAvLyB9XHJcblxyXG4gIHN0dHMgPSB7fTtcclxuICBjbGlja2VkID0gZmFsc2U7XHJcbiAgdG90UHJvZ3Jlc3MgPSAwO1xyXG4gIHRvdFByb2dyZXNzRmlsZSA9IDA7XHJcbiAgZ2V0UHJvZ3Jlc3NQcmljZShoZHJJZG4pIHtcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnZmlsZVVwbG9hZCc7XHJcbiAgICByZXFPYmpbJ3NlcU5vJ10gPSBoZHJJZG47Ly9cIjg0NlwiOy8vdGhpcy5maWxlTG9nSWRuO1xyXG4gICAgXHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9ICdnZXRQcmljZVN0YXR1cyc7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSBcclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZGlGaWxlKHJlcU9iaiwgb3B0aW9ucywgJ2ZpbGVVcGxvYWQvbG9hZCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLmNsaWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgIFxyXG4gICAgICAgIHRoaXMuc3R0c1snQyddID0gcmVzdWx0WydDJ107XHJcbiAgICAgICAgdGhpcy5zdHRzWydQJ10gPSByZXN1bHRbJ1AnXTtcclxuICAgICAgICB0aGlzLnN0dHNbJ0UnXSA9IHJlc3VsdFsnRSddO1xyXG4gICAgICAgIHRoaXMuc3R0c1snVCddID0gcmVzdWx0WydUJ107XHJcbiAgICAgICAgdGhpcy5zdGVwID0gNDtcclxuICAgICAgICB0aGlzLnRvdFByb2dyZXNzID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQocmVzdWx0WydDJ10pICogMTAwIC8gcGFyc2VGbG9hdChyZXN1bHRbJ1QnXSkpO1xyXG4gICAgICAgIHRoaXMucmVjYWxsKHRoaXMuaGRySWRuKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LXN1Y2Nlc3MnLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuICBsYXN0UmVmcmVzaFRpbWVGaWxlID0gbnVsbDtcclxuICByZWNhbGxGaWxlKGZpbGVMb2dJZG4pIHtcclxuXHJcbiAgICBpZiAodGhpcy50b3RQcm9ncmVzc0ZpbGUgPCAxMDApIHtcclxuICAgICAgdGhpcy5sYXN0UmVmcmVzaFRpbWVGaWxlID0gbmV3IERhdGUoKTtcclxuICAgICAgdGhpcy50aW1lcmZpbGUgPVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRQcm9ncmVzc0ZpbGUoZmlsZUxvZ0lkbik7XHJcbiAgICAgICAgfSwgNTAwMCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXJmaWxlKTtcclxuICAgICAgLy8gdGhpcy5QbGFubmluZ0NvbXBvbmVudC5nZXRQYWNrZXRzQnlIZWFkZXJJZChoZHJJZG4pO1xyXG4gICAgICAvLyB0aGlzLmNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgaWYgKHRoaXMudG90UHJvZ3Jlc3NGaWxlID09IDEwMCAmJiB0aGlzLnRvdFByb2dyZXNzID09IDEwMCkge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5maWxlVXBsb2FkTW9kYWwnKS5jbGljaygpO1xyXG5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcmljaW5nL3JvdWdoL3BsYW5pbmdzY3JlZW4vcm91Z2hQbGFuaW5nU2NyZWVuJ10sIHsgcXVlcnlQYXJhbXM6IHsgaGRySWQ6IHRoaXMuaGRySWRuIH0gfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGxhc3RSZWZyZXNoVGltZSA9IG51bGw7XHJcbiAgcmVjYWxsKGhkcklkbikge1xyXG4gICAgaWYgKHRoaXMudG90UHJvZ3Jlc3MgPCAxMDApIHtcclxuICAgICAgdGhpcy5sYXN0UmVmcmVzaFRpbWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0aGlzLnRpbWVyUHJpY2UgPVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXRQcm9ncmVzc1ByaWNlKGhkcklkbik7XHJcbiAgICAgICAgfSwgNTAwMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyUHJpY2UpO1xyXG4gICAgICBpZiAodGhpcy50b3RQcm9ncmVzc0ZpbGUgPT0gMTAwICYmIHRoaXMudG90UHJvZ3Jlc3MgPT0gMTAwKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2J0bmZpbGVVcGxvYWRNb2RhbCcpLmNsaWNrKCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJpY2luZy9yb3VnaC9wbGFuaW5nc2NyZWVuL3JvdWdoUGxhbmluZ1NjcmVlbiddLCB7IHF1ZXJ5UGFyYW1zOiB7IGhkcklkOiB0aGlzLmhkcklkbiB9IH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIFNraXBWZXJpZmljYXRpb24oKSB7XHJcbiAgICB0aGlzLm1hcHBpbmdza2lwID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZEZpbGVMb2codGhpcy5maWxlVHlwZSk7XHJcblxyXG4gIH1cclxuICBTa2lwVmVyaWZpY2F0aW9uRHRsKCkge1xyXG4gICAgdGhpcy5tYXBwaW5nc2tpcCA9IHRydWU7XHJcbiAgICB0aGlzLnN0ZXAgPSA0O1xyXG4gICAgdGhpcy51cGxvYWRGaWxlKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkRmlsZVR5cGVEYXRhKGZpbGVVcGxvYWQsIG1kbCkge1xyXG4gICAgdGhpcy5zaGVldERhdGEgPSBbXTtcclxuICAgIHRoaXMuaGVhZGVyQXR0cmlidXRlRHRsID0ge307XHJcbiAgICB0aGlzLmRlZnVsdERpc3BsYXlMZW4gPSA1O1xyXG4gICAgdGhpcy5kZWZ1bHREaXNwbGF5T2JqID0gW107XHJcbiAgICB0aGlzLmF0dHJTdHJ1Y3R1cmVEdGwgPSBbXTtcclxuICAgIHRoaXMuaGVhZGVyTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5oZWFkZXJwcnA7XHJcbiAgICB0aGlzLmF0dHJwcnA7XHJcbiAgICB0aGlzLnRvdGFsbWF0Y2ggPSAwO1xyXG4gICAgdGhpcy50b3RhbGlnbm9yZSA9IDA7XHJcbiAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uID0ge307XHJcbiAgICB0aGlzLnJvd2RhdGFtYXBEZXRhaWxzID0ge307XHJcbiAgICB0aGlzLnJvd2Rpc3RpbmN0RGF0YU1hcCA9IHt9O1xyXG4gICAgdGhpcy5jaGFySGVhZGVyTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5hdHRyaWJ1dGVEdGxNYXAgPSB7fTtcclxuICAgIHRoaXMubWFwcFNoZWV0RGF0YSA9IFtdO1xyXG4gICAgdGhpcy5zdGF0dXNMaXN0ID0gW107XHJcbiAgICB0aGlzLmZpbGVEZXRhaWxzID0gW107XHJcbiAgICB0aGlzLmZpbGVUeXBlTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5maWxlT3B0aW9uc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZmlsZVR5cGU7XHJcbiAgICB0aGlzLm5tZTtcclxuICAgIHRoaXMudHlwO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuY2hlY2tfc3RhdHVzID0gW107XHJcbiAgICB0aGlzLnBrdF9zdGF0dXMgPSBbXTtcclxuICAgIHRoaXMuY29sRm9ybWF0ZSA9IFtdO1xyXG4gICAgdGhpcy5hbGxjb2xzID0gW107XHJcbiAgICB0aGlzLmZpbGVMb2dJZG4gPSAwO1xyXG4gICAgdGhpcy5zaG93ID0gZmFsc2U7XHJcbiAgICB0aGlzLnN0ZXBNc2cgPSAnJztcclxuICAgIHRoaXMuc3R0cyA9IHt9O1xyXG4gICAgdGhpcy5jbGlja2VkID0gZmFsc2U7XHJcbiAgICB0aGlzLnRvdFByb2dyZXNzID0gMDtcclxuICAgIHRoaXMudG90UHJvZ3Jlc3NGaWxlID0gMDtcclxuICAgIHRoaXMuc3RlcCA9IDE7XHJcbiAgICB0aGlzLmxhYmxlID0gXCJcIjtcclxuICAgIHRoaXMuZmlsZW5tZSA9IFwiXCI7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXRNYXAgPSB7fTtcclxuICAgIGxldCBmaWxldHlwZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zWydmaWxldHlwZSddIHx8ICcnO1xyXG4gICAgdGhpcy5tZGwgPSBtZGw7XHJcbiAgICB0aGlzLmZpbGVubWUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZmlsZXR5cGUnXSB8fCAnJztcclxuICAgIHRoaXMubWFwcGluZ3NraXAgPSBmYWxzZTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gZmlsZVVwbG9hZDtcclxuICAgIGlmIChtZGwgIT0gJycpXHJcbiAgICAgIHJlcU9ialsnbWRsJ10gPSBtZGw7XHJcbiAgICBpZiAoZmlsZXR5cGUgIT0gJycpXHJcbiAgICAgIHJlcU9ialsnZmlsZW5tZSddID0gZmlsZXR5cGU7XHJcbiAgICBcclxuICAgIFxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSAnbG9hZEZpbGVVcGxvYWQnO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWRpRmlsZShyZXFPYmosIG9wdGlvbnMsICdmaWxlVXBsb2FkL2xvYWQnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgIFxyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQgfHwge307XHJcbiAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvbiA9IHJlc3VsdC5wYWdlRGVmaW5hdGlvblxyXG4gICAgICAgIHRoaXMuc3RhdHVzTGlzdCA9IHJlc3VsdC5zdGF0dXNMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZURldGFpbHMgPSByZXN1bHQuZmlsZURldGFpbHM7XHJcbiAgICAgICAgdGhpcy5maWxlVHlwZUxpc3QgPSByZXN1bHQuZmlsZVR5cGVMaXN0O1xyXG4gICAgICAgIHRoaXMuZmlsZU9wdGlvbnNMaXN0ID0gcmVzdWx0LmZpbGVPcHRpb25zTGlzdCB8fCBbXTtcclxuICAgICAgICBpZiAodGhpcy5maWxlT3B0aW9uc0xpc3QubGVuZ3RoID4gMClcclxuICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSB0aGlzLmZpbGVPcHRpb25zTGlzdFswXS5rO1xyXG4gICAgICAgIGxldCBhZGRsQXR0ciA9IHRoaXMuZmlsZU9wdGlvbnNMaXN0WzBdLmFkZGxfYXR0ciB8fCB7fTtcclxuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBhZGRsQXR0ci5kYXRlZm9ybWF0IHx8ICdkZC9tbS95eSc7XHJcbiAgICAgICAgdGhpcy5kZWxpbSA9IGFkZGxBdHRyLmRlbGltIHx8ICcvJztcclxuICAgICAgICB0aGlzLnN0YXR1c0xpc3QgPSByZXN1bHQuc3RhdHVzTGlzdC5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICB9LCBlcnJvciA9PiB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvcik7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcblxyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICBsZXQgY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuY0R0ID0gbmV3IERhdGUoKTtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdtb2R1bGVrZXknOiBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XHJcbiAgICAgIGxldCBtZGwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZ3JwJ10gfHwgJyc7XHJcblxyXG4gICAgICB0aGlzLmxvYWRGaWxlVHlwZURhdGEoJ2ZpbGVVcGxvYWQnLCBtZGwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlud2FyZF9pZG47XHJcbiAgaW53YXJkU3RvY2tUeXBlO1xyXG4gIHN0b2NrSW53YXJkVXBsb2FkKGlud2FyZER0bCwgbWRsKSB7XHJcbiAgICB0aGlzLmlud2FyZF9pZG4gPSBpbndhcmREdGwuaW53YXJkX2lkbjtcclxuICAgIHRoaXMuaW53YXJkU3RvY2tUeXBlID0gaW53YXJkRHRsLnN0b2NrX3R5cGU7XHJcbiAgICB0aGlzLmlud2FyZF9hY3Rpb24gPSBpbndhcmREdGwuaW53YXJkX2FjdGlvbiB8fCAnJ1xyXG4gICAgdGhpcy5tZGwgPSBtZGw7XHJcbiAgICB0aGlzLmxvYWRGaWxlVHlwZURhdGEoJ2ZpbGVVcGxvYWQnLCBtZGwpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy50aW1lcmZpbGUgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcmZpbGUpO1xyXG5cclxuICAgIGlmICh0aGlzLnRpbWVyUHJpY2UgIT0gdW5kZWZpbmVkKVxyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lclByaWNlKTtcclxuXHJcbiAgfVxyXG5cclxuICBzZXRPcHRpb25zRm9yTWl4VG9TaW5nbGUoKSB7XHJcbiAgICB0aGlzLmZpbGVPcHRpb25zTGlzdCA9IFtcclxuICAgICAgeyBcImtcIjogXCI2OTZcIiwgXCJ2XCI6IFwiTWFya2V0aW5nIFN0b2NrXCIgfVxyXG4gICAgXTtcclxuICAgIHRoaXMuZmlsZVR5cGUgPSBcIjY5NlwiO1xyXG4gIH1cclxuXHJcblxyXG59IiwiPGRpdiBjbGFzcz1cIm10XCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmZmO1wiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZyYW1lXCI+XHJcbiAgICAgICAgPHAgKm5nSWY9XCJzaG93XCIgY2xhc3M9XCJsb2FkaW5nLXRleHRcIiBzdHlsZT1cInotaW5kZXg6IDk5OTlcIj4ge3tzdGVwTXNnfX0gPC9wPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJEXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1lbGVtZW50LXN0ZXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgc3RlcC10aGluXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBiZy1ncmV5IG10LXN0ZXAtY29sXCIgW25nQ2xhc3NdPVwieydkb25lJzpzdGVwPT0xID8gJ2RvbmUnOicnfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9c2V0U2V0cCgxKT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtbnVtYmVyIGJnLXdoaXRlIGZvbnQtZ3JleVwiPjE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LXN0ZXAtdGl0bGUgdXBwZXJjYXNlIGZvbnQtZ3JleS1jYXNjYWRlXCI+QnJvd3NlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGJnLWdyZXkgbXQtc3RlcC1jb2xcIiBbbmdDbGFzc109XCJ7J2RvbmUnOnN0ZXA9PTIgPyAnZG9uZSc6Jyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1zZXRTZXRwKDIpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC1udW1iZXIgYmctd2hpdGUgZm9udC1ncmV5XCI+MjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC10aXRsZSB1cHBlcmNhc2UgZm9udC1ncmV5LWNhc2NhZGVcIj5IZWFkZXIgVmVyaWZpY2F0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIGJnLWdyZXkgbXQtc3RlcC1jb2xcIiBbbmdDbGFzc109XCJ7J2RvbmUnOnN0ZXA9PTMgPyAnZG9uZSc6Jyd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1zZXRTZXRwKDMpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC1udW1iZXIgYmctd2hpdGUgZm9udC1ncmV5XCI+MzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtc3RlcC10aXRsZSB1cHBlcmNhc2UgZm9udC1ncmV5LWNhc2NhZGVcIj5EYXRhIFZlcmlmaWNhdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgYmctZ3JleSBtdC1zdGVwLWNvbFwiIFtuZ0NsYXNzXT1cInsnZG9uZSc6c3RlcD09NCA/ICdkb25lJzonJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPXNldFNldHAoNCk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLW51bWJlciBiZy13aGl0ZSBmb250LWdyZXlcIj40PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC1zdGVwLXRpdGxlIHVwcGVyY2FzZSBmb250LWdyZXktY2FzY2FkZVwiPlVwbG9hZGluZy4uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdXBsb2FkXCIgKm5nSWY9XCJzdGVwPT0xXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0zIGNvbC1tZC0zXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZzogNXB4O1wiPkZpbGUgVHlwZSA6PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cImZpbGVUeXBlXCIgWyhuZ01vZGVsKV09XCJmaWxlVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0tc2VsZWN0LS08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZU9wdGlvbnNMaXN0XCIgdmFsdWU9XCJ7e2ZpbGU/Lmt9fVwiPnt7ZmlsZT8udn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmaWxlaW5wdXQtd3JhcHBlciBidG4gYnRuLWRlZmF1bHQgIGZpbGVpbnB1dCBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6ICMzYTU4OThcIj48c3Bhbj5Ccm93c2UgZmlsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZmlsZWlucHV0IGJ0bi1wcmltYXJ5XCIgbmFtZT1cImZpbGVuYW1lXCIgaWQ9XCJmaWxlbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJCcm93c2UgZmlsZVwiIGFjY2VwdD1cIi54bHN4LC5jc3ZcIiAoY2hhbmdlKT1cImluY29taW5nZmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImxlZnQ6IC0xNjMuNzVweDsgdG9wOiA5cHg7XCI+PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+VXBsb2FkIEZpbGUgOiAmbmJzcDsmbmJzcDsmbmJzcDs8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBjbGFzcz1cImZpbGVpbnB1dCBidG4tcHJpbWFyeVwiIGFjY2VwdD1cIi54bHN4LC5jc3ZcIiBuYW1lPVwiZmlsZW5hbWVcIiBpZD1cImZpbGVuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJpbmNvbWluZ2ZpbGUoJGV2ZW50KVwiIHRpdGxlPVwiQnJvd3NlIGZpbGVcIj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdXBsb2FkXCIgKm5nSWY9XCJzdGVwPT0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIE1hdGNoIDoge3t0b3RhbG1hdGNofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgSWdub3JlIDoge3t0b3RhbGlnbm9yZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1tZC0xMlwiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87d2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImZpbGV1cGxvYWR2aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGRyIG9mIGhlYWRlckxpc3QgO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hdGNoJzpoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyIT0nJyAmJiBoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5pZ25vcmUhPSdZJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUnOmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZT09J1knLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoYmcnOmhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHI9PScnICYmIGhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmlnbm9yZSE9J1knXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIChjbGljayk9XCJ1cGRhdGVjb2x1bW5zdGF0dWUoaGRyKVwiPnt7aGRyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGRyIG9mIGhlYWRlckxpc3QgO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cj09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3QtY29udHJvbFwiIG5hbWU9XCJ7e2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJ9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY29uZmlybXNldEhlYWRlck1hcHAoaGRyLCRldmVudC50YXJnZXQpXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwic2VsZWN0LWNvbnRyb2xcIiBuYW1lPVwie3toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImNvbmZpcm1zZXRIZWFkZXJNYXBwKGhkcilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0tc2VsZWN0LS08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXR0ckR0bCBvZiBhdHRyU3RydWN0dXJlRHRsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3thdHRyRHRsPy5hdHRyfX1cIj57e2F0dHJEdGw/LmF0dHJ9fSAoe3thdHRyRHRsPy5wcmludH19KTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0ciE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhkciBvZiBoZWFkZXJMaXN0IDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmR0YV90eXA9PSdkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJzZWxlY3QtY29udHJvbFwiIG5hbWU9XCJ7e2RhdGVGb3JtYXRNYXBbaGRyXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRlRm9ybWF0TWFwW2hkcl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZHRlRm10IG9mIGRhdGVGb3JtYXRMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3tkdGVGbXQ/Lmt9fVwiPnt7ZHRlRm10Py52fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCByb3dEaXMgb2YgZGVmdWx0RGlzcGxheU9iaiA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBoZHIgb2YgaGVhZGVyTGlzdCA7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cm93RGlzW2hkcl19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0xMSBjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZmlsZUxvZ0lkbj09MCAmJiAoZmlsZW5tZT09J2dlbmVyaWMnIHx8IGZpbGVubWU9PSdnaWFfYmlsbCcpXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDVweFwiIChjbGljayk9XCJTa2lwVmVyaWZpY2F0aW9uKClcIj5Ta2lwPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJmaWxlTG9nSWRuPT0wXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgcHVsbC1yaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDVweFwiIChjbGljayk9XCJWYWxpZGF0ZUZpbGVIZWFkZXJNYXBwaW5nKCdZJylcIj5WZXJpZnk8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdXBsb2FkIFwiICpuZ0lmPVwic3RlcD09M1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdGFibGUtcmVzcG9uc2l2ZSBjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNlbGxzcGFjaW5nPVwiMTBcIiBjbGFzcz1cImRpc3BsYXlUYWJsZSBmaWxldXBsb2Fkdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGRyIG9mIGNoYXJIZWFkZXJMaXN0IDtsZXQgaj1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJjb2xvcjp3aGl0ZTtib3JkZXI6IDFweCBzb2xpZCB3aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3toZHJ9fSh7e2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJ9fSk8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgW25nQ2xhc3NdPVwieydldmVuJzpqJTI9PTAsJ29kZCc6aiUyPT0xfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdHRyVmFsIG9mIHJvd2Rpc3RpbmN0RGF0YU1hcFtoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOjE2MHB4O21hcmdpbi1yaWdodDogMXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0Y2hlZFVsJzpyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWwgIT0nJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBzdHlsZT1cImxpc3Qtc3R5bGU6IG5vbmU7dGV4dC1hbGlnbjpsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPiB7e2F0dHJWYWx9fSA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWw9PScnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7cm93ZGF0YW1hcERldGFpbHNbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1bYXR0clZhbF0udmFsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjb25maXJtSGVhZGVyRGV0YWlsc01hcHAoaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cixoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyX2lkbixhdHRyVmFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0tc2VsZWN0LS08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXR0cmR0bG1hcCBvZiBhdHRyaWJ1dGVEdGxNYXBbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3thdHRyZHRsbWFwPy52YWx9fVwiPnt7YXR0cmR0bG1hcD8uZGlzcGxheX19ICh7e2F0dHJkdGxtYXA/LnZhbH19KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3dkYXRhbWFwRGV0YWlsc1toZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyXVthdHRyVmFsXS52YWwhPScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3Jvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbH19IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyA8aSAoY2xpY2spPVwicmVtb3ZlRGV0YWlsQXR0ck9wdFZhbChoZWFkZXJBdHRyaWJ1dGVEdGxbaGRyXS5hdHRyX2lkbixhdHRyVmFsLHJvd2RhdGFtYXBEZXRhaWxzW2hlYWRlckF0dHJpYnV0ZUR0bFtoZHJdLmF0dHJdW2F0dHJWYWxdLnZhbCxbaGVhZGVyQXR0cmlidXRlRHRsW2hkcl0uYXR0cl0pXCIgY2xhc3M9XCJmYSBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHN0eWxlPVwiY29sb3I6IHJlZDtjdXJzb3I6IHBvaW50ZXI7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTExIGNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJmaWxlTG9nSWRuPT0wICYmIChmaWxlbm1lPT0nZ2VuZXJpYycgfHwgZmlsZW5tZT09J2dpYV9iaWxsJylcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogNXB4XCIgKGNsaWNrKT1cIlNraXBWZXJpZmljYXRpb25EdGwoKVwiPlNraXA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0XCIgc3R5bGU9XCJtYXJnaW46IDVweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwbG9hZEZpbGUoKVwiIFtkaXNhYmxlZF09XCJnbWF0Y2hlZENvdW50IT1ncmVzdWx0Q291bnRcIj5VcGxvYWQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdXBsb2FkXCIgKm5nSWY9XCJzdGVwPT00XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3RlcD09NFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDE1cHg7Y29sb3I6Z3JlZW47Zm9udC1zaXplOiAyMHB4O3RleHQtYWxpZ246IGxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFibGVGaWxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4O1wiICpuZ0lmPVwibGFzdFJlZnJlc2hUaW1lRmlsZSAhPSBudWxsXCI+TGFzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2ggdGltZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHt7bGFzdFJlZnJlc2hUaW1lRmlsZSB8IGRhdGU6J21lZGl1bSd9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiIHN0eWxlPVwibWFyZ2luOiAxNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItd2FybmluZ1wiIHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVub3c9XCI2MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIiBhcmlhLXZhbHVlbWF4PVwiMTAwXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6dG90UHJvZ3Jlc3NGaWxlKyclJ30gIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dG90UHJvZ3Jlc3NGaWxlfX0gJVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJzdGVwPT00ICYmIGNsaWNrZWRcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDM1cHg7XCI+PHN0cm9uZz4gQ29tcGxldGUgOnt7c3R0c0ZpbGVbJ0MnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IFBlbmRpbmcgOiB7e3N0dHNGaWxlWydQJ119fSAmbmJzcDsmbmJzcDsmbmJzcDsgRXJyb3IgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3R0c0ZpbGVbJ0UnXX19Jm5ic3A7Jm5ic3A7Jm5ic3A7IEludmFpbGQgU3RhdHVzIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3N0dHNGaWxlWydJJ119fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwOyZuYnNwOyBUb3RhbCA6IHt7c3R0c0ZpbGVbJ1QnXX19PC9zdHJvbmc+PC9wPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3RlcD09NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O2NvbG9yOmdyZWVuO2ZvbnQtc2l6ZTogMjBweDttYXJnaW4tdG9wOiAxNXB4O3RleHQtYWxpZ246IGxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bGFibGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEycHg7bWFyZ2luLWxlZnQ6IDIwcHg7Y29sb3I6IGJsYWNrO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJsYXN0UmVmcmVzaFRpbWUgIT0gbnVsbFwiPkxhc3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoIHRpbWUgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7e2xhc3RSZWZyZXNoVGltZSB8IGRhdGU6J21lZGl1bSd9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiIHN0eWxlPVwibWFyZ2luOiAxNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItd2FybmluZ1wiIHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVub3c9XCI2MFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS12YWx1ZW1pbj1cIjBcIiBhcmlhLXZhbHVlbWF4PVwiMTAwXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6dG90UHJvZ3Jlc3MrJyUnfSAgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0b3RQcm9ncmVzc319ICVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgdGV4dC1jZW50ZXJcIiBzdHlsZT1cIm1hcmdpbjogNXB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGVja1VwbG9hZFN0dCgpXCI+Q2hlY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwic3RlcD09NCAmJiBjbGlja2VkXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAzNXB4O1wiPjxzdHJvbmc+IENvbXBsZXRlIDp7e3N0dHNbJ0MnXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IFBlbmRpbmcgOiB7e3N0dHNbJ1AnXX19ICZuYnNwOyZuYnNwOyZuYnNwOyBFcnJvciA6IHt7c3R0c1snRSddfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDsmbmJzcDsgVG90YWwgOiB7e3N0dHNbJ1QnXX19PC9zdHJvbmc+PC9wPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJmaWxlVXBsb2FkTW9kYWxcIiB0YWJpbmRleD1cIi0xXCIgc3R5bGU9XCJ6LWluZGV4OiA5OTk5OTlcIiByb2xlPVwiZGlhbG9nXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJ0cnVlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNmaWxlVXBsb2FkY2xzYnRuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPkFkZCBmaWxlIHVwbG9hZCBvcHRpb248L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiIHJvbGU9XCJmb3JtXCIgI2Y9XCJuZ0Zvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoZilcIiBuYW1lPVwiYXBwRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5OYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cIm5tZVwiIG5hbWU9XCJubWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5EZXNjcmlwdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJkZXNjcmlwdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPlR5cGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInR5cFwiIFsobmdNb2RlbCldPVwidHlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj4tLXNlbGVjdC0tPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZVR5cGVMaXN0XCIgdmFsdWU9XCJ7e2ZpbGU/Lmt9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmaWxlPy52fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5DaGVjayBzdGF0dXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IFN0YXR1c1wiIFtvcHRpb25zXT1cInN0YXR1c0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNoZWNrX3N0YXR1c1wiIG5hbWU9XCJjaGVja19zdGF0dXNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0NsZWFyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25UZW1wbGF0ZSBsZXQtb3B0aW9uPVwib3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFtZmFtZmFtLWZsYWdzIHt7b3B0aW9uPy52YWx1ZX19XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbj8ubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5QYWNrZXQgc3RhdHVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCBTdGF0dXNcIiBbb3B0aW9uc109XCJzdGF0dXNMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwa3Rfc3RhdHVzXCIgbmFtZT1cInBrdF9zdGF0dXNcIiBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhbWZhbWZhbS1mbGFncyB7e29wdGlvbj8udmFsdWV9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24/LmxhYmVsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgI2ZpbGVVcGxvYWRjbHNidG4+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcHBBcHBOb0RibENsaWNrXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KGYpXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiQ29maXJtbWFwaGRyXCIgIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJzbWFsbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIlxyXG4gIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2FuY2VsSGVhZGVyTWFwcCgpXCIgY2xhc3M9XCJjbG9zZVwiICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPlxyXG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiID5DbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5BbGVydDwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSBGb3IgTWFwcGluZyA8Yj57e21hcGhkcn19PC9iPiBUbyBBdHRyaWJ1dGUgPGI+e3toZHJtYXNzYWdlfX08L2I+IFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiAoY2xpY2spPVwiQ2FuY2VsSGVhZGVyTWFwcCgpXCIgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiID5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJzZXRIZWFkZXJNYXBwKCk7XCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIkNvZmlybW1hcGR0bFwiICByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCJcclxuICBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlck1hcHAoKVwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiID5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiA+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+QWxlcnQ8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgRm9yIE1hcHBpbmcgPGI+e3tkdGxvcHRpb252YWx9fTwvYj4gVG8gQXR0cmlidXRlICA8Yj4ge3tkdGxBdHRyfX0gPC9iPiB3aXRoIEF0dHJpYnV0ZURldGFpbCA8Yj57e2R0bG1hc3NhZ2V9fTwvYj4gXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIkNhbmNlbEhlYWRlckRldGFpbHNNYXBwKClcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJzZXRIZWFkZXJEZXRhaWxzTWFwcCgpXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbjxidXR0b24gaWQ9XCJidG5maWxlVXBsb2FkTW9kYWxcIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZmlsZVVwbG9hZE1vZGFsXCI+PC9idXR0b24+XHJcblxyXG48YnV0dG9uIGlkPVwiYnRuQ29maXJtbWFwaGRyXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI0NvZmlybW1hcGhkclwiPjwvYnV0dG9uPlxyXG48YnV0dG9uIGlkPVwiYnRuQ29maXJtbWFwZHRsXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI0NvZmlybW1hcGR0bFwiPjwvYnV0dG9uPlxyXG5cclxuXHJcblxyXG48IS0tIDxkaXYgY2xhc3M9XCJjZW50ZXJlZFwiPlxyXG4gICAgPGRpdiBpZD1cImRpdlNwaW5uZXJcIiBjbGFzcz1cInNwaW5uZXIgbG9hZGluZ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy10ZXh0XCI+TG9hZGluZyAuLi48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cInRlc3QoKVwiIGlkPVwiYnRuTG9hZFJlY29yZHNcIiBzdHlsZT1cImN1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MiU7IGxlZnQ6IDQ1JTtcIj5Mb2FkIFJlY29yZHM8L2J1dHRvbj5cclxuICA8L2Rpdj4gLS0+Il19
|