@vgroup/dialbox 0.4.36 → 0.4.37
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.
|
@@ -215,7 +215,7 @@ export class DialboxComponent {
|
|
|
215
215
|
// console.log("WS Event Received:", incomingCallData);
|
|
216
216
|
// console.log("WS Event Received:", incomingCallData.data);
|
|
217
217
|
this.twilioService.conferenceCallInfo = incomingCallData;
|
|
218
|
-
if (!!incomingCallData.participants) {
|
|
218
|
+
if (!!incomingCallData.participants?.length) {
|
|
219
219
|
// this.incomingCallsList = incomingCallData.participants.filter((item: any) => !item.isLeft) || [];
|
|
220
220
|
this.incomingCallsList = incomingCallData.participants || [];
|
|
221
221
|
// if (this.incomingCallsList.length) {
|
|
@@ -1301,4 +1301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
1301
1301
|
}], numberDialed: [{
|
|
1302
1302
|
type: Output
|
|
1303
1303
|
}] } });
|
|
1304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBYyxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRW5NLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUkvQixPQUFtQyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7Ozs7QUFZbkMsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixJQUFhLGVBQWUsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQThERCxZQUNVLGFBQTRCLEVBQzVCLFVBQTRCLEVBQzVCLE1BQWlCLEVBQ2pCLFNBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxHQUFzQixFQUN0QixNQUFjLEVBQ2QsMEJBQXNEO1FBUHRELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsY0FBUyxHQUFULFNB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QyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3hDO1lBRUQsc0JBQXNCO1lBQ3RCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDaEI7WUFFRCxnREFBZ0Q7WUFDaEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBRXJEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzs7OEdBaDJDVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQixrb0JDcEI3QixtaFpBME9BOzRGRHROYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTt1VEFRZCxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBT0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUtJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNpQixnQkFBZ0I7c0JBQXZDLFNBQVM7dUJBQUMsV0FBVztnQkFHWixZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUd2lsaW9TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3R3aWxpby5zZXJ2aWNlJztcbmltcG9ydCBzd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcbmltcG9ydCB7IEV4dGVuc2lvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UvZXh0ZW5zaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsbGVySWREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2FsbGVyLWlkLWRpYWxvZy9jYWxsZXItaWQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHBhcnNlUGhvbmVOdW1iZXJGcm9tU3RyaW5nLCB7IEFzWW91VHlwZSB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IGtleXBhZCB9IGZyb20gJy4uL2tleXBhZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgSXBBZGRyZXNzU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9pcC1hZGRyZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENhbGwgfSBmcm9tICdAdHdpbGlvL3ZvaWNlLXNkayc7XG5pbXBvcnQgeyBJbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZSB9IGZyb20gJy4vc2VydmljZS9pbmNvbWVpbmctY2FsbC1zb2NrZXQuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRpYWxib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlhbGJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpYWxib3guY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIERpYWxib3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBcbiAgcHJpdmF0ZSBfaXNEaWFscGFkSGlkZGVuOiBib29sZWFuID0gdHJ1ZTtcbiAgLy8gTGV0IHRoZSBsaWJyYXJ5IGRlY2lkZSB0byBhdXRvLW9wZW4gb24gaW5jb21pbmcgY2FsbCB3aXRob3V0IGhvc3Qgd2lyaW5nXG4gIEBJbnB1dCgpIGF1dG9PcGVuT25JbmNvbWluZzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbnRhY3RJbmZvOiBhbnk7ICBcbiAgQElucHV0KCkgZGV2aWNlSWQ6IGFueTsgIFxuICBcbiAgQElucHV0KCkgc2V0IGlzRGlhbHBhZEhpZGRlbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzRGlhbHBhZEhpZGRlbiA9IHZhbHVlO1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIC8vIFdoZW4gZGlhbHBhZCBiZWNvbWVzIHZpc2libGUsIGVuc3VyZSBUd2lsaW8gaXMgaW5pdGlhbGl6ZWRcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVR3aWxpbygpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBpbmNvbWluZ0NhbGxEYXRhOiBhbnlcbiAgXG4gIGdldCBpc0RpYWxwYWRIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlhbHBhZEhpZGRlbjtcbiAgfVxuICBAT3V0cHV0KCkgY2xvc2VEaWFscGFkRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNhbGxJbml0aWF0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBlbmRDYWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG1pbmltaXNlRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIGluY29taW5nQ2FsbHNOZXdJbmZvRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICBAT3V0cHV0KCkgaW5jb21pbmdDYWxsSW5pdGlhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBWaWV3Q2hpbGQoJ2RpYWxJbnB1dCcpIGRpYWxJbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xuXG4gIFxuICBAT3V0cHV0KCkgbnVtYmVyRGlhbGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cblxuICBpc0NhbGxJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XG4gIGtleXBhZFZhbCA9IGtleXBhZDtcbiAgXG4gIHNob3dJbnB1dENsZWFyQnRuOiBib29sZWFuID0gZmFsc2U7XG4gIGRpYWxlZE51bWJlcjogc3RyaW5nID0gJyc7XG4gIGNvbnRhY3RMaXN0OiBhbnlbXSA9IFtdO1xuICBmaWx0ZXJlZENvbnRhY3RMaXN0OiBhbnlbXSA9IFtdO1xuICBjYWxsZXJJZExpc3Q6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQ2FsbGVySWQ6IGFueTtcbiAgaXNDYWxsZXJJZEhpZGRlbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgaXNUcmlhbFBlcmlvZE92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNQYXltZW50RHVlOiBib29sZWFuID0gZmFsc2U7XG4gIHRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcbiAgdG9hc3RUaW1lb3V0ID0gNzAwMDtcbiAgY2FsbE51bWJlclRvYXN0ID0ge1xuICAgIHNob3c6IGZhbHNlLFxuICAgIHR5cGU6ICdhbGVydC1zdWNjZXNzJyxcbiAgICBudW1iZXI6ICcnLFxuICAgIGRpc3BsYXlOdW06ICcnXG4gIH1cbiAgY2FsbERhdGE6IGFueSA9IHtcbiAgICBwaG9uZTogJycsXG4gICAgZGlzcGxheU51bTogJycsXG4gICAgZGlhbDogZmFsc2UsXG4gICAgbmFtZTogJycsXG4gICAgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycsXG4gICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxuICAgIGV4dE51bTonJ1xuICB9O1xuICBsYXN0RGlhbGVkOiB7IG5hbWU/OiBzdHJpbmc7IGltYWdlPzogc3RyaW5nOyBudW1iZXI6IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG4gIHNhbml0aXplZE51bTogYW55O1xuICBkaWFsQWxlcnQgPSB7XG4gICAgbXNnOiAnJyxcbiAgICBzaG93OiBmYWxzZVxuICB9XG4gIHRva2VuPzpzdHJpbmc7XG4gXG4gIHNob3dEZWRpY2F0ZWRQb3B1cDpib29sZWFuID0gZmFsc2U7XG4gIG5ld0luY29taW5nQ2FsbHM6IGFueSA9IFtdO1xuICBpbmNvbWluZ0NhbGxzTGlzdDogYW55ID0gW107XG4gIG5ld0luY29taW5nQ2FsbERhdGE/OkNhbGw7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBjYWxsUHJlZmVyZW5jZTogYW55O1xuICBzaGFrZURlZGljYXRlZEJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NtYXJ0RGlhbENhbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvciggIFxuICAgIHByaXZhdGUgdHdpbGlvU2VydmljZTogVHdpbGlvU2VydmljZSxcbiAgICBwcml2YXRlIGV4dFNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIGlwU2VydmljZTogSXBBZGRyZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGV4dGVuc2lvblNlcnZpY2U6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZGs6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZTogSW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UsXG4gICkgeyBcbiAgICAvLyBJbml0aWFsaXplIGlmIGRpYWxwYWQgaXMgdmlzaWJsZSBieSBkZWZhdWx0XG4gICAgaWYgKCF0aGlzLmlzRGlhbHBhZEhpZGRlbikge1xuICAgICAgY29uc29sZS5sb2coJ3Nmc2RmZHNmJylcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVR3aWxpbygpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygnRGlhbGJveENvbXBvbmVudCBjb25zdHJ1Y3RvcicpO1xuICB9XG4gIHByaXZhdGUgaW5pdGlhbGl6ZVR3aWxpbygpIHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy50b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKSB8fCAnJztcbiAgICAgIGlmICghdGhpcy50b2tlbikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBhdXRoZW50aWNhdGlvbiB0b2tlbiBmb3VuZCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICBcbiAgICAgIC8vIEluaXRpYWxpemUgVHdpbGlvIHNlcnZpY2VcbiAgICAgIHRoaXMudHdpbGlvU2VydmljZS5pbml0aWFsaXplVHdpbGlvRGV2aWNlKHRoaXMuZGV2aWNlSWQpO1xuICAgIH1cbiAgfVxuICAvLyBuZ09uQ2hhbmdlKCkge1xuICAvLyAgIHRoaXMuaW5pdGlhbGl6ZVR3aWxpbygpO1xuICAvLyB9XG5cbiAgLy8gbmdPbkluaXQoKSB7XG4gIC8vICAgdHJ5IHtcbiAgLy8gICAgIHRoaXMuZ2V0Q29udGFjdExpc3QoKTtcbiAgLy8gICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICBcbiAgLy8gICAgIC8vIFN1YnNjcmliZSB0byBkaWFsIG51bWJlciBldmVudHNcbiAgLy8gICAgIGNvbnN0IHN1YjEgPSB0aGlzLnR3aWxpb1NlcnZpY2UuZGlhbE51bWJlckZyb21PdGhlck1vZHVsZS5zdWJzY3JpYmUoKGNvbnRhY3Q6IGFueSkgPT4ge1xuICAvLyAgICAgICBpZiAoY29udGFjdC5udW1iZXIpIHtcbiAgLy8gICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgIGlmIChjb250YWN0LmlzRGlhbEZyb21IaXN0b3J5KSB7XG4gIC8vICAgICAgICAgICAvL2hhbmRsZSBkaWFsaW5nIGZyb20gaGlzdG9yeSBwYWdlXG4gIC8vICAgICAgICAgICBpZihjb250YWN0LmNhbGxlcklkID09ICdzbWFydERpYWxpbmcnKXtcbiAgICAgICAgICAgICBcbiAgLy8gICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0geyBudW1iZXI6IGNvbnRhY3QuZnJvbSB9O1xuICAvLyAgICAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XG4gIC8vICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gIC8vICAgICAgICAgICAgIH0sIDIwMDApO1xuICAvLyAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gY29udGFjdC5udW1iZXI7XG4gIC8vICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGNvbnRhY3QubmFtZTtcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gY29udGFjdC5mcm9tO1xuICAvLyAgICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xuICAvLyAgICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcbiAgLy8gICAgICAgICAgIC8vIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChjb250YWN0KVxuICAvLyAgICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcbiAgLy8gICAgICAgICB9ZWxzZXtcbiAgLy8gICAgICAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gIC8vICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgLy8gICAgICAgICAgIH0sIDEwMDApO1xuICAvLyAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XG4gIC8vICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcbiAgLy8gICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcbiAgLy8gICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xuICAvLyAgICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAvLyAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgLy8gICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcbiAgLy8gICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgXG4gIC8vICAgICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xuICAvLyAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XG4gIC8vICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XG4gIC8vICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gIC8vICAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfVxuICAgICAgICAgIFxuICAvLyAgICAgICB9XG4gIC8vICAgICB9KVxuICBcbiAgLy8gICAgIC8vIGhhbmRsZSBpbmNvbWluZyBjYWxsXG4gIC8vICAgICBjb25zdCBzdWIyID0gdGhpcy50d2lsaW9TZXJ2aWNlLmN1cnJlbnRDYWxsLnN1YnNjcmliZShpbmNvbWluZ0NhbGxEYXRhID0+IHtcbiAgLy8gICAgICAgLy8gaWYgKGluY29taW5nQ2FsbERhdGEpIHtcbiAgLy8gICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAvLyAgICAgICAvLyAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gIC8vICAgICAgIC8vICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycy5Gcm9tO1xuICAvLyAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ25hbWUnKTtcbiAgLy8gICAgICAgLy8gICB0aGlzLmNhbGxEYXRhLmltZyA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ2ltYWdlJyk7XG4gIC8vICAgICAgIC8vICAgdGhpcy5jYWxsRGF0YS5pc0luY29taW5nQ2FsbCA9IHRydWU7XG4gIC8vICAgICAgIC8vIH1cbiAgLy8gICAgICAgaWYgKGluY29taW5nQ2FsbERhdGEpIHtcbiAgLy8gICAgICAgICBpZiAodGhpcy5pc0NhbGxJblByb2dyZXNzKSB7XG4gIC8vICAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZ0NhbGxEYXRhKTtcbiAgLy8gICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGluY29taW5nQ2FsbERhdGEpO1xuICAvLyAgICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgLy8gICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0Zyb20nXTtcblxuICAvLyAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oaW5jb21pbmdDYWxsRGF0YSk7XG4gIC8vICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBpbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCduYW1lJyk7XG4gIC8vICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ2ltYWdlJykgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pc0luY29taW5nQ2FsbCA9IHRydWU7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICAgIGluY29taW5nQ2FsbERhdGEub24oJ2NhbmNlbCcsICgpID0+IHtcbiAgLy8gICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICAvLyAgICAgICAgICAgaWYodGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5sZW5ndGggPT0gMCl7XG4gIC8vICAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgfVxuICAvLyAgICAgICAgIH0pO1xuXG4gIC8vICAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgLy8gICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVycy5DYWxsU2lkICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gIC8vICAgICAgICAgICAgIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAvLyAgICAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0pO1xuXG4gIC8vICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YjEpO1xuICAvLyAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWIyKTtcbiAgLy8gICB9Y2F0Y2goZSl7XG4gIC8vICAgICBjb25zb2xlLmxvZyhlKVxuICAvLyAgIH1cbiAgICBcbiAgLy8gfVxuXG5cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZygnbmdPbkluaXQnKVxuICAgIC8vIEVuc3VyZSBUd2lsaW8gaXMgaW5pdGlhbGl6ZWQgZXZlbiB3aGVuIGRpYWxwYWQgc3RhcnRzIGhpZGRlbixcbiAgICAvLyBzbyB3ZSBjYW4gYXV0by1vcGVuIG9uIGluY29taW5nIGNhbGxzLlxuICAgIHRoaXMuaW5pdGlhbGl6ZVR3aWxpbygpO1xuICAgIHRoaXMuaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UuY29ubmVjdCgpO1xuXG5cbiAgICB0cnl7XG4gICAgICAgICAgdGhpcy5pbmNvbWVpbmdDYWxsU29ja2V0U2VydmljZS5saXN0ZW4oKS5zdWJzY3JpYmUoYXN5bmMoaW5jb21pbmdDYWxsRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoaW5jb21pbmdDYWxsRGF0YS5kYXRhKTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIldTIEV2ZW50IFJlY2VpdmVkOlwiLCBpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIldTIEV2ZW50IFJlY2VpdmVkOlwiLCBpbmNvbWluZ0NhbGxEYXRhLmRhdGEpO1xuICAgICAgICAgIHRoaXMudHdpbGlvU2VydmljZS5jb25mZXJlbmNlQ2FsbEluZm8gPSBpbmNvbWluZ0NhbGxEYXRhO1xuICAgICAgICAgIGlmKCEhaW5jb21pbmdDYWxsRGF0YS5wYXJ0aWNpcGFudHMpe1xuICAgICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IGluY29taW5nQ2FsbERhdGEucGFydGljaXBhbnRzLmZpbHRlcigoaXRlbTogYW55KSA9PiAhaXRlbS5pc0xlZnQpIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IGluY29taW5nQ2FsbERhdGEucGFydGljaXBhbnRzIHx8IFtdO1xuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEgPSBbXTtcbiAgICAgICAgICAgICAgLy8gICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gW107XG4gICAgICAgICAgICAgIC8vICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhID0gW107XG4gICAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbXTtcbiAgICAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgLy8gaW5jb21pbmdDYWxsRGF0YS5wYXJ0aWNpcGFudHMubGVuZ3RoID8gaW5jb21pbmdDYWxsRGF0YS5wYXJ0aWNpcGFudHMuZmlsdGVyKChpdGVtOiBhbnkpID0+ICFpdGVtLmlzTGVmdCkgOiBbXTtcbiAgICAgIC8vICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcbiAgICAgIC8vIGlmIChpbmNvbWluZ0NhbGxEYXRhLnR5cGUgPT09IFwiL2luY29taW5nL2NhbGxcIikge1xuICAgICAgLy8gICBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xuICAgICAgLy8gICAgIGlmICh0aGlzLmF1dG9PcGVuT25JbmNvbWluZyAmJiB0aGlzLl9pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgIC8vICAgICAgIHRoaXMuX2lzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgLy8gICAgIH1cblxuICAgICAgLy8gICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcbiAgICAgIC8vICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nQ2FsbERhdGEpO1xuICAgICAgLy8gICAgICAgY29uc29sZS5sb2coJzMyNScsIGluY29taW5nQ2FsbERhdGEpXG4gICAgICAvLyAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgLy8gICAgICAgaW5jb21pbmdDYWxsRGF0YVsnaXNGaXJzdENhbGwnXSA9IHRydWU7XG4gICAgICAvLyAgICAgICBjb25zb2xlLmxvZygnZGQxJylcbiAgICAgIC8vICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAvLyAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgLy8gICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snRnJvbSddO1xuICAgICAgLy8gICAgICAgY29uc29sZS5sb2coJ2RkMicpXG4gICAgICAvLyAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgIC8vICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ25hbWUnKTtcbiAgICAgIC8vICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgICAvLyAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignY2FuY2VsJywgKCkgPT4ge1xuICAgICAgLy8gICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAvLyAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcbiAgICAgIC8vICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkMycpXG4gICAgICAvLyAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgLy8gICAgICAgLy8gfVxuICAgICAgLy8gICAgIH0pO1xuXG4gICAgICAvLyAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgIC8vICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAvLyAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgLy8gICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDQnKVxuICAgICAgLy8gICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgLy8gICAgICAgICAvLyB9XG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICB9KTtcbiAgICAgIHRoaXMudG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfHwgJyc7XG4gICAgICAvL3RoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICB0aGlzLmdldENvbnRhY3RMaXN0KCk7XG4gICAgICBcbiAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICBjb25zdCBzdWIxID0gdGhpcy50d2lsaW9TZXJ2aWNlLmRpYWxOdW1iZXJGcm9tT3RoZXJNb2R1bGUuc3Vic2NyaWJlKChjb250YWN0OmFueSkgPT4ge1xuICAgICAgICBpZiAoY29udGFjdC5udW1iZXIpIHtcbiAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChjb250YWN0LmlzRGlhbEZyb21IaXN0b3J5KSB7XG4gICAgICAgICAgICAvL2hhbmRsZSBkaWFsaW5nIGZyb20gaGlzdG9yeSBwYWdlXG4gICAgICAgICAgICBpZihjb250YWN0LmNhbGxlcklkID09ICdzbWFydERpYWxpbmcnKXtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0geyBudW1iZXI6IGNvbnRhY3QuZnJvbSB9O1xuICAgICAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGNvbnRhY3QubmFtZTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gY29udGFjdC5mcm9tO1xuICAgICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnMjc0JywgY29udGFjdClcbiAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XG4gICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcyODInLCBjb250YWN0KVxuICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XG4gICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcbiAgICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XG4gICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9KVxuICBcbiAgICAgIC8vIGhhbmRsZSBpbmNvbWluZyBjYWxsIChtYW5hZ2VkIGludGVybmFsbHk7IGhvc3QgbmVlZCBub3QgcGFzcyBpbmNvbWluZ0NhbGxEYXRhKVxuICAgICAgY29uc3Qgc3ViMiA9IHRoaXMudHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbC5zdWJzY3JpYmUoKGluY29taW5nQ2FsbERhdGE6IGFueSkgPT4ge1xuICAgICAgICAvLyBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xuICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIC8vICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgLy8gICB0aGlzLmNhbGxEYXRhLnBob25lID0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkZyb207XG4gICAgICAgIC8vICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpO1xuICAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKTtcbiAgICAgICAgLy8gICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xuICAgICAgICAgIGlmICh0aGlzLmF1dG9PcGVuT25JbmNvbWluZyAmJiB0aGlzLl9pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nQ2FsbERhdGEpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJzMyNScsIGluY29taW5nQ2FsbERhdGEpXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5jb21pbmdDYWxsRGF0YVsnaXNGaXJzdENhbGwnXSA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZGQxJylcbiAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snRnJvbSddO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2RkMicpXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ25hbWUnKTtcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignY2FuY2VsJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcbiAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkMycpXG4gICAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDQnKVxuICAgICAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YjEpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWIyKTtcbiAgICB9Y2F0Y2goZSl7XG4gICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cbiAgfVxuXG4gIFxuICBnZXRVc2VySW5mb3JtYXRpb24oaW5jb21pbmdDYWxsRGF0YTogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2dldFVzZXJJbmZvcm1hdGlvbicsIGluY29taW5nQ2FsbERhdGEpO1xuICAgIGxldCBkYXRhID0gdGhpcy5mcm9tRW50cmllcyhBcnJheS5mcm9tKGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5lbnRyaWVzKCkpKTtcbiAgICBjb25zb2xlLmxvZygnMzY2LS0tJywgZGF0YSlcbiAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKGRhdGFbJ3R3aWxpb0F1dGhJZCddKS5zdWJzY3JpYmUoXG4gICAgcmVzcG9uc2UgPT4ge1xuICAgICAgaW5jb21pbmdDYWxsRGF0YVsndXNlckluZm8nXT1yZXNwb25zZVxuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3Quc29tZSgoY2FsbDogYW55KSA9PiBjYWxsLnBhcmFtZXRlcnM/LkNhbGxTaWQgPT09IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycz8uQ2FsbFNpZCk7XG4gICAgICBpZighYWxyZWFkeUV4aXN0cyl7XG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RrLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdGFydGluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBmcm9tRW50cmllcyhlbnRyaWVzOiBbc3RyaW5nLCBhbnldW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gZW50cmllcy5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRHJhZ0VsZW1lbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZihjaGFuZ2VzWydkZXZpY2VJZCddKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGV2aWNlSWQnLCBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICBjb25zb2xlLmxvZygnU2V0IGRldmljZUlkIGluIGxvY2FsU3RvcmFnZTonLCBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpc0RpYWxwYWRIaWRkZW4nXSAmJiAhdGhpcy5pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgIHRoaXMuZ2V0Q29udGFjdExpc3QoKTtcbiAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kaWFsSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0sIDApO1xuICAgICAgaWYodGhpcy5pbmNvbWluZ0NhbGxEYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMucHVzaCh0aGlzLmluY29taW5nQ2FsbERhdGEpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCc0MDQnLCB0aGlzLmluY29taW5nQ2FsbERhdGEpXG4gICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24odGhpcy5pbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZGQ1JylcbiAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydGcm9tJ107XG4gICAgICAgICAgY29uc29sZS5sb2coJzQxMScsIHRoaXMuaW5jb21pbmdDYWxsRGF0YSlcbiAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbih0aGlzLmluY29taW5nQ2FsbERhdGEpO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCdpbWFnZScpIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEub24oJ2NhbmNlbCcsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10gIT09IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNicpXG4gICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snQ2FsbFNpZCddKTtcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNycpXG4gICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29udGFjdEluZm8nXSAmJiB0aGlzLmNvbnRhY3RJbmZvKSB7XG4gICAgICBsZXQgY29udGFjdCA9IHRoaXMuY29udGFjdEluZm87XG4gICAgaWYgKGNvbnRhY3QubnVtYmVyKSB7XG4gICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IGZhbHNlO1xuICAgICAgaWYgKGNvbnRhY3QuaXNEaWFsRnJvbUhpc3RvcnkpIHtcbiAgICAgICAgLy9oYW5kbGUgZGlhbGluZyBmcm9tIGhpc3RvcnkgcGFnZVxuICAgICAgICBpZihjb250YWN0LmNhbGxlcklkID09ICdzbWFydERpYWxpbmcnKXtcbiAgICAgICAgIFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHsgbnVtYmVyOiBjb250YWN0LmZyb20gfTtcbiAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmZyb20gPSBjb250YWN0LmZyb207XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICBjb25zb2xlLmxvZygnMjc0JywgY29udGFjdClcbiAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnNDU0JywgY29udGFjdClcbiAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5wdXNoKGNvbnRhY3QpXG4gICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy5nZXRVc2VyQ2FsbFNldHRpbmcoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcyODInLCBjb250YWN0KVxuICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcbiAgICAgICAgY29uc29sZS5sb2coJzQ2NCcsIGNvbnRhY3QpXG4gICAgICAgIC8vIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChjb250YWN0KVxuICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xuICAgICAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGNvbnRhY3QubmFtZTtcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3QuaW1nO1xuICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgfVxuICB9XG4gIH1cbiAgcHJpdmF0ZSByZWdpc3RlckRyYWdFbGVtZW50KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbG1udCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcmFncGFyZW50MScpO1xuICAgICAgaWYgKCFlbG1udCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEcmFnIGVsZW1lbnQgbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHBvczEgPSAwLCBwb3MyID0gMCwgcG9zMyA9IDAsIHBvczQgPSAwO1xuXG4gICAgICBjb25zdCBkcmFnTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBwb3MzID0gZS5jbGllbnRYO1xuICAgICAgICBwb3M0ID0gZS5jbGllbnRZO1xuICAgICAgICBcbiAgICAgICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiBlbGVtZW50RHJhZyhtb3ZlRXZlbnQpO1xuICAgICAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBlbGVtZW50RHJhZyA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcG9zMSA9IHBvczMgLSBlLmNsaWVudFg7XG4gICAgICAgIHBvczIgPSBwb3M0IC0gZS5jbGllbnRZO1xuICAgICAgICBwb3MzID0gZS5jbGllbnRYO1xuICAgICAgICBwb3M0ID0gZS5jbGllbnRZO1xuICAgICAgICBcbiAgICAgICAgZWxtbnQuc3R5bGUudG9wID0gKGVsbW50Lm9mZnNldFRvcCAtIHBvczIpICsgJ3B4JztcbiAgICAgICAgZWxtbnQuc3R5bGUubGVmdCA9IChlbG1udC5vZmZzZXRMZWZ0IC0gcG9zMSkgKyAncHgnO1xuICAgICAgfTtcblxuICAgICAgLy8gQ2hlY2sgZm9yIGhlYWRlciBlbGVtZW50XG4gICAgICBjb25zdCBoZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbG1udC5pZCArICdoZWFkZXInKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaGVhZGVyLm9ubW91c2Vkb3duID0gZHJhZ01vdXNlRG93bjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsbW50Lm9ubW91c2Vkb3duID0gZHJhZ01vdXNlRG93bjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cbiAgfVxuXG4gIGFkZE51bWJlcihudW06IGFueSkge1xuICAgIGlmICggbnVtID09ICcjJyB8fCBudW0gPT0gJyonIHx8bnVtID09ICcrJyB8fCBOdW1iZXIuaXNJbnRlZ2VyKG51bSkpIHtcbiAgICAgIGlmIChudW0gPT0gJyMnKSB7XG4gICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi1oYXNoLS5tcDNgKS5wbGF5KCk7XG4gICAgICB9IGVsc2UgaWYgKG51bSA9PSAnKicpIHtcbiAgICAgICAgbmV3IEF1ZGlvKGAvYXNzZXRzL2RpYWwtdG9uZXMvZHRtZi9kdG1mLXN0YXItLm1wM2ApLnBsYXkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi0ke251bX0tLm1wM2ApLnBsYXkoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaWFsZWROdW1iZXIgKz0gbnVtO1xuICAgICAgdGhpcy5zaG93SW5wdXRDbGVhckJ0biA9IHRydWU7XG5cbiAgICAgIHRoaXMubnVtYmVyRGlhbGVkLmVtaXQodGhpcy5kaWFsZWROdW1iZXIpO1xuXG4gICAgICB0aGlzLm9uRGlhbElucHV0Q2hhbmdlKHRoaXMuZGlhbGVkTnVtYmVyKVxuICAgICAgLy8gdGhpcy5kaWFsSW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1lbHNlIGlmKG51bSA9PT0gJ3ZvaWNlbWFpbCcpe1xuICAgICAgLy8gdGhpcy5zaG93RGVkaWNhdGVkUG9wdXAgPSB0cnVlO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydleHRlbnNpb24vdm9pY2VtYWlsLycrdGhpcy50b2tlbl0pO1xuICAgIH1cbiAgfVxuICBcbiAgaGlkZURpYWxwYWQoKSB7XG4gICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSB0cnVlO1xuICAgIHRoaXMuY2xvc2VEaWFscGFkRXZlbnQuZW1pdCgpO1xuICAgIHRoaXMuY2xlYXJBbGxEaWFsZWQoKTtcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcbiAgfVxuICBcbiAgb25EaWFsSW5wdXRDaGFuZ2UoaW5wdXRWYWw6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAvLyBVcGRhdGVkIHJlZ2V4IHRvIGluY2x1ZGUgeCwgWCwgZXh0LiwgRXh0LiwgYW5kICxcbiAgICAgIGNvbnN0IGlzTnVtZXJpY0lucHV0ID0gL15bXFxkXFxzK1xcLV0rJC8udGVzdChpbnB1dFZhbCk7XG4gICAgICBsZXQgbWFpbk51bWJlciA9IGlucHV0VmFsO1xuXG4gICAgICAvLyBDaGVjayBmb3IgZXh0ZW5zaW9uIGluZGljYXRvcnMgYW5kIHNwbGl0IHRoZSBpbnB1dFxuICAgICAgY29uc3QgZXh0TWF0Y2ggPSBpbnB1dFZhbC5tYXRjaCgvKHh8WHxleHRcXC58RXh0XFwufCwpKC4qKS8pO1xuICAgICAgaWYgKGV4dE1hdGNoKSB7XG4gICAgICAgIG1haW5OdW1iZXIgPSBpbnB1dFZhbC5zdWJzdHJpbmcoMCwgZXh0TWF0Y2guaW5kZXgpLnRyaW0oKTtcbiAgICAgICAgdGhpcy5jYWxsRGF0YS5leHROdW0gPSBleHRNYXRjaFsyXS50cmltKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9IGlzTnVtZXJpY0lucHV0ID8gbWFpbk51bWJlci5yZXBsYWNlKC9bXFxzXFwtXSsvZywgJycpIDogbWFpbk51bWJlcjtcblxuICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGlzTnVtZXJpY0lucHV0ID8gdGhpcy5zYW5pdGl6ZWROdW0gOiAnJztcbiAgICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSBpbnB1dFZhbC5sZW5ndGggPiAwO1xuXG4gICAgICBpZiAoaXNOdW1lcmljSW5wdXQpIHtcbiAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBuZXcgQXNZb3VUeXBlKCkuaW5wdXQodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IGN1cnJlbnQgbnVtYmVyIHdoZW5ldmVyIGlucHV0IGNoYW5nZXNcbiAgICAgIHRoaXMubnVtYmVyRGlhbGVkLmVtaXQodGhpcy5kaWFsZWROdW1iZXIpO1xuXG4gICAgICBpZiAoaW5wdXRWYWwubGVuZ3RoID4gMikge1xuICAgICAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSB0aGlzLmNvbnRhY3RMaXN0LmZpbHRlcihjb250YWN0ID0+IHtcbiAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGAke2NvbnRhY3QuZmlyc3ROYW1lfSAke2NvbnRhY3QubWlkZGxlTmFtZX0gJHtjb250YWN0Lmxhc3ROYW1lfWAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICByZXR1cm4gZnVsbE5hbWUuaW5jbHVkZXModGhpcy5zYW5pdGl6ZWROdW0udG9Mb3dlckNhc2UoKSkgfHwgY29udGFjdC5udW1iZXJzTGlzdC5zb21lKChudW06IGFueSkgPT4gbnVtLm51bWJlci5pbmNsdWRlcyh0aGlzLnNhbml0aXplZE51bSkpO1xuICAgICAgICB9KS5zbGljZSgwLCAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Rmlyc3RMZXR0ZXIobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZSA/IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiAnJztcbiAgfVxuICBjbGVhcklucHV0KCkge1xuICAgIGlmICh0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRpYWxlZE51bWJlciA9IHRoaXMuZGlhbGVkTnVtYmVyLnNsaWNlKDAsIC0xKTtcbiAgICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSB0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggIT09IDA7XG5cbiAgICAgIHRoaXMub25EaWFsSW5wdXRDaGFuZ2UodGhpcy5kaWFsZWROdW1iZXIpXG4gICAgfVxuICB9XG4gIGNsZWFyQWxsRGlhbGVkKCkge1xuICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gJyc7XG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSAnJztcbiAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gZmFsc2U7XG4gIH1cbiAgZ2V0Q2FsbGVySWRMaXN0KCkge1xuICAgIHRoaXMuZXh0U2VydmljZS5kaXNwbGF5SUQodGhpcy50b2tlbiB8fCAnJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgLy90aGlzLmNhbGxlcklkTGlzdCA9IHJlcy5jYWxsZXJJZExpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSBcIkMyQyBTb2Z0cGhvbmUgTnVtYmVyXCIpO1xuICAgICAgdGhpcy5jYWxsZXJJZExpc3QgPSByZXMuY2FsbGVySWRMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnZvaWNlRmVhdHVyZSA9PT0gdHJ1ZSk7XG4gICAgICAvLyB0aGlzLmNhbGxlcklkTGlzdCA9IHJlcy5jYWxsZXJJZExpc3Q7XG4gICAgICBpZiAodGhpcy5jYWxsZXJJZExpc3QubGVuZ3RoID09IDEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gdGhpcy5jYWxsZXJJZExpc3RbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5jYWxsUHJlZmVyZW5jZSA9PT0gJ2Fsd2F5c0FzaycgfHwgdGhpcy5jYWxsUHJlZmVyZW5jZSA9PT0gJ3NtYXJ0RGlhbGluZycpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHRoaXMuY2FsbGVySWRMaXN0LmZpbmQoaXRlbSA9PiAoaXRlbS5udW1iZXIgPT0gdGhpcy5jYWxsUHJlZmVyZW5jZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZ2V0Q29udGFjdExpc3QoKSB7XG4gICAgdGhpcy50d2lsaW9TZXJ2aWNlLmdldENvbnRhY3RMaXN0KCkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwLnJlc3BvbnNlID09ICdTdWNjZXNzJykge1xuICAgICAgICB0aGlzLmNvbnRhY3RMaXN0ID0gcmVzcC5waG9uZUJvb2s7XG4gICAgICB9XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycilcbiAgICB9KVxuICB9XG4gIGdldEZ1bGxOYW1lKGNvbnRhY3Q6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGZ1bGxOYW1lID0gY29udGFjdC5maXJzdE5hbWUgfHwgJyc7XG4gICAgaWYgKGNvbnRhY3QubWlkZGxlTmFtZSkge1xuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubWlkZGxlTmFtZX1gO1xuICAgIH1cbiAgICBpZiAoY29udGFjdC5sYXN0TmFtZSkge1xuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubGFzdE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bGxOYW1lLnRyaW0oKTtcbiAgfVxuXG5cbiAgdG9nZ2xlQ2FsbGVySWREaXYoKSB7XG4gICAgdGhpcy5pc0NhbGxlcklkSGlkZGVuID0gIXRoaXMuaXNDYWxsZXJJZEhpZGRlbjtcbiAgfVxuXG4gIG9uQ29udGFjdFNlbGVjdChjb250YWN0OiBhbnkpIHtcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IGNvbnRhY3QubnVtYmVyc0xpc3RbMF0ubnVtYmVyO1xuICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IHRoaXMuZ2V0RnVsbE5hbWUoY29udGFjdCk7XG4gICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltYWdlIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgICB0aGlzLm9uRGlhbElucHV0Q2hhbmdlKHRoaXMuZGlhbGVkTnVtYmVyKTtcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcbiAgfVxuXG4gIGVuZENhbGwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUubG9nKCdFbmRpbmcgY2FsbCcpO1xuICAgICAgY29uc29sZS5sb2coJ2RkOCcpXG4gICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xuICAgICAgXG4gICAgICAvLyBSZXNldCBjYWxsIGRhdGFcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gICAgICAgIHBob25lOiAnJyxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnLFxuICAgICAgICBpc0luY29taW5nQ2FsbDogZmFsc2UsXG4gICAgICAgIGRpYWw6IGZhbHNlLFxuICAgICAgICBkaXNwbGF5TnVtOiAnJyxcbiAgICAgICAgZXh0TnVtOiAnJ1xuICAgICAgfTtcbiAgICAgIFxuICAgICAgLy8gUmVzZXQgZGlhbGVkIG51bWJlclxuICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSAnJztcbiAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gJyc7XG4gICAgICBcbiAgICAgIC8vIEVtaXQgZW5kIGNhbGwgZXZlbnRcbiAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdDYWxsIGVuZGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGVuZENhbGw6JywgZXJyb3IpO1xuICAgICAgLy8gRXZlbiBpZiB0aGVyZSdzIGFuIGVycm9yLCB0cnkgdG8gcmVzZXQgdGhlIHN0YXRlXG4gICAgICBjb25zb2xlLmxvZygnZGQ5JylcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5jYWxsRGF0YSA9IHtcbiAgICAgICAgcGhvbmU6ICcnLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycsXG4gICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgICAgICAgZGlhbDogZmFsc2UsXG4gICAgICAgIGRpc3BsYXlOdW06ICcnLFxuICAgICAgICBleHROdW06ICcnXG4gICAgICB9O1xuICAgICAgdGhpcy5lbmRDYWxsRXZlbnQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcbiAgLy8gICB0cnkge1xuICAvLyAgICAgY29uc29sZS5sb2coJ0luaXRpYXRpbmcgY2FsbCB3aXRoIG51bWJlcjonLCB0aGlzLmRpYWxlZE51bWJlcik7XG4gICAgICBcbiAgLy8gICAgIGlmICghdGhpcy5kaWFsZWROdW1iZXIgJiYgdGhpcy5sYXN0RGlhbGVkKSB7XG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdVc2luZyBsYXN0IGRpYWxlZCBudW1iZXI6JywgdGhpcy5sYXN0RGlhbGVkLm51bWJlcik7XG4gIC8vICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gdGhpcy5sYXN0RGlhbGVkLm51bWJlcjtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgY29uc3QgaXNJbnZhbGlkID0gYXdhaXQgdGhpcy5pc0ludmFsaWROdW1iZXIoKTtcbiAgLy8gICAgIGlmIChpc0ludmFsaWQpIHtcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBudW1iZXIgZm9ybWF0Jyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgdGhpcy5zYXZlTGFzdERpYWxlZCgpO1xuICAvLyAgICAgdGhpcy5pc1NhdmVkQ29udGFjdERpYWxsZWQoKTtcbiAgICAgIFxuICAvLyAgICAgLy8gQ2hlY2sgcGF5bWVudCBzdGF0dXNcbiAgLy8gICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PT0gJ3RydWUnO1xuICAvLyAgICAgaWYgKHRoaXMuaXNQYXltZW50RHVlKSB7XG4gIC8vICAgICAgIGNvbnNvbGUud2FybignUGF5bWVudCBpcyBkdWUnKTtcbiAgLy8gICAgICAgc3dhbCgnV2FybmluZycsICdQbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGF5bWVudCBpcyBkdWUuIFRvIGNvbnRpbnVlIHVzaW5nIG91ciBzZXJ2aWNlcywga2luZGx5IHN1YnNjcmliZSB0byBhdm9pZCBpbnRlcnJ1cHRpb25zLicpO1xuICAvLyAgICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgICB9XG5cbiAgLy8gICAgIC8vIENoZWNrIGlmIGRpYWxpbmcgb3duIG51bWJlclxuICAvLyAgICAgaWYgKHRoaXMuc2FuaXRpemVkTnVtID09PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHdpbGlvTnVtYmVyJykpIHtcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignQXR0ZW1wdGVkIHRvIGRpYWwgb3duIG51bWJlcicpO1xuICAvLyAgICAgICBzd2FsKCdFcnJvcicsICdZb3UgY2Fubm90IGRpYWwgeW91ciBvd24gbnVtYmVyJyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgLy8gQ2hlY2sgbWljcm9waG9uZSBwZXJtaXNzaW9uc1xuICAvLyAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAvLyAgICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XG4gIC8vICAgICAgIGNvbnNvbGUud2FybignTWljcm9waG9uZSBwZXJtaXNzaW9uIG5vdCBncmFudGVkJyk7XG4gIC8vICAgICAgIGF3YWl0IHRoaXMuYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTtcbiAgLy8gICAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgICAgfVxuXG4gIC8vICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdObyBjYWxsZXIgSUQgc2VsZWN0ZWQnKTtcbiAgLy8gICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IHRydWU7XG4gIC8vICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnUGxlYXNlIHNlbGVjdCBhIEMyQyBudW1iZXIgdG8gY2FsbCBmcm9tJyk7XG4gIC8vICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZTtcbiAgLy8gICAgICAgfSwgMzAwMCk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgY29uc29sZS5sb2coJ0dldHRpbmcgbnVtYmVyIHdpdGggY291bnRyeSBjb2RlLi4uJyk7XG4gIC8vICAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSAnJztcbiAgICAgIFxuICAvLyAgICAgdHJ5IHtcbiAgLy8gICAgICAgYXdhaXQgdGhpcy5nZXRUb051bWJlcih0aGlzLnNhbml0aXplZE51bSk7XG4gIC8vICAgICB9IGNhdGNoIChlcnJvcikge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIG51bWJlciB3aXRoIGNvdW50cnkgY29kZTonLCBlcnJvcik7XG4gIC8vICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnRXJyb3IgcHJvY2Vzc2luZyBudW1iZXIuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgaWYgKHRoaXMudGVybWluYXRlQ2FsbCkge1xuICAvLyAgICAgICBjb25zb2xlLmxvZygnQ2FsbCB0ZXJtaW5hdGVkIGJ5IHVzZXInKTtcbiAgLy8gICAgICAgdGhpcy50ZXJtaW5hdGVDYWxsID0gZmFsc2U7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgLy8gUHJlcGFyZSBjYWxsIGRhdGFcbiAgLy8gICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gIC8vICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gIC8vICAgICAgIHBob25lOiB0aGlzLnNhbml0aXplZE51bSxcbiAgLy8gICAgICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxuICAvLyAgICAgICBkaWFsOiB0cnVlLFxuICAvLyAgICAgICBmcm9tOiB0aGlzLmlzU21hcnREaWFsQ2FsbCA/IHRoaXMuY2FsbERhdGEuZnJvbSA6IHRoaXMuc2VsZWN0ZWRDYWxsZXJJZC5udW1iZXIsXG4gIC8vICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIC8vICAgICB9O1xuXG4gIC8vICAgICBjb25zb2xlLmxvZygnSW5pdGlhdGluZyBjYWxsIHdpdGggZGF0YTonLCB0aGlzLmNhbGxEYXRhKTtcbiAgLy8gICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gIC8vICAgICB0aGlzLmNhbGxJbml0aWF0ZWQuZW1pdCh7IC4uLnRoaXMuY2FsbERhdGEgfSk7XG4gICAgICBcbiAgLy8gICAgIHJldHVybiB0cnVlO1xuICAgICAgXG4gIC8vICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgLy8gICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGluaXRpYXRlQ2FsbDonLCBlcnJvcik7XG4gIC8vICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ0ZhaWxlZCB0byBpbml0aWF0ZSBjYWxsLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAvLyAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyAgICAgLy90aGlzLmNsZWFyQWxsRGlhbGVkKCk7XG4gIC8vICAgLy8gfSBlbHNlIHtcbiAgLy8gICAvLyAgIHN3YWwoJ0Vycm9yJywgJ1RyaWFsIHBlcmlvZCBpcyBvdmVyLiBQbGVhc2Ugc2V0dXAgcGF5bWVudCBtZXRob2QgdG8gY29udGludWUgc2VydmljZXMnKVxuICAvLyAgIC8vIH1cbiAgLy8gfVxuXG5cbiAgLy8gIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcbiAgLy8gICBpZiAoIXRoaXMuZGlhbGVkTnVtYmVyICYmIHRoaXMubGFzdERpYWxlZCkge1xuICAvLyAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmxhc3REaWFsZWQubnVtYmVyO1xuICAvLyAgIH1cbiAgLy8gICBjb25zdCBpc0ludmFsaWQgPSBhd2FpdCB0aGlzLmlzSW52YWxpZE51bWJlcigpO1xuICAvLyAgIGlmIChpc0ludmFsaWQpIHtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vICAgdGhpcy5zYXZlTGFzdERpYWxlZCgpO1xuICAvLyAgIHRoaXMuaXNTYXZlZENvbnRhY3REaWFsbGVkKCk7XG4gIC8vICAgLy9sZXQgaXNDYWxsZXJJZFNldCA9IGF3YWl0IHRoaXMuaXNDYWxsZXJJZFNldCgpO1xuICAvLyAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgIGlmICh0aGlzLmlzUGF5bWVudER1ZSkge1xuICAvLyAgICAgc3dhbCgnV2FybmluZycsICdQbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGF5bWVudCBpcyBkdWUsIFRvIGNvbnRpbnVlIG9uIHlvdXIgc2VydmljZXMga2luZGx5IHN1YnNjcmliZSB0byB1c2UgdW5pbnRlcnJ1cHRlZCBzZXJ2aWNlcy4nKTtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9XG4gIC8vICAgdGhpcy5pc1RyaWFsUGVyaW9kT3ZlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0cmlhbE92ZXInKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgIC8vIGlmICghdGhpcy5pc1RyaWFsUGVyaW9kT3Zlcikge1xuICAvLyAgICAgaWYgKHRoaXMuc2FuaXRpemVkTnVtID09IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0d2lsaW9OdW1iZXInKSkge1xuICAvLyAgICAgICBzd2FsKCdFcnJvcicsICdZb3UgY2FuIG5vdCBkaWFsIHRoaXMgbnVtYmVyJyk7XG4gIC8vICAgICAgIHJldHVybjtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAvLyAgICAgaWYgKGhhc1Blcm1pc3Npb24pIHtcbiAgLy8gICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xuICAvLyAgICAgICAgIC8vY2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBiaW5kZWQgZnJvbSBwcmV2aW91cyBjYWxsXG4gIC8vICAgICAgICAgdGhpcy5jYWxsRGF0YS5kaXNwbGF5TnVtID0gJyc7XG4gIC8vICAgICAgICAgLy8gZ2V0IG51bWJlciB0byBiZSBkaWFsbGVkIGZyb20gYmFja2VuZFxuICAvLyAgICAgICAgIGF3YWl0IHRoaXMuZ2V0VG9OdW1iZXIodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAvLyAgICAgICAgIGlmICh0aGlzLnRlcm1pbmF0ZUNhbGwpIHtcbiAgLy8gICAgICAgICAgIHRoaXMudGVybWluYXRlQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgcmV0dXJuO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gdGhpcy5zYW5pdGl6ZWROdW07XG4gIC8vICAgICAgICAgdGhpcy5jYWxsRGF0YS5pc0luY29taW5nQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgIHRoaXMuY2FsbERhdGEuZGlhbCA9IHRydWU7XG4gIC8vICAgICAgICAgaWYgKCF0aGlzLmlzU21hcnREaWFsQ2FsbCkge1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcjtcbiAgLy8gICAgICAgICB9XG4gICAgICAgICAgXG4gIC8vICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhID0ge1xuICAvLyAgICAgICAgICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gIC8vICAgICAgICAgICAgICAgcGhvbmU6IHRoaXMuc2FuaXRpemVkTnVtLFxuICAvLyAgICAgICAgICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgLy8gICAgICAgICAgICAgICBkaWFsOiB0cnVlLFxuICAvLyAgICAgICAgICAgICAgIGZyb206IHRoaXMuaXNTbWFydERpYWxDYWxsID8gdGhpcy5jYWxsRGF0YS5mcm9tIDogdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcixcbiAgLy8gICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAvLyAgICAgICAgICAgICB9O1xuXG4gIC8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbml0aWF0aW5nIGNhbGwgd2l0aCBkYXRhOicsIHRoaXMuY2FsbERhdGEpO1xuICAvLyAgICAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAvLyAgICAgICAgICAgICB0aGlzLmNhbGxJbml0aWF0ZWQuZW1pdCh7IC4uLnRoaXMuY2FsbERhdGEgfSk7XG4gIC8vICAgICAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IHRydWU7XG4gIC8vICAgICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdTZWxlY3QgYSBDMkMgbnVtYmVyIHRvIGNhbGwnKTtcbiAgLy8gICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZTtcbiAgLy8gICAgICAgICB9LCAzMDAwKTtcbiAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgLy90aGlzLmNhbGxpbmdPcGVuRXZlbnQuZW1pdCh7IHBob25lOiB0aGlzLmRpYWxlZE51bWJlciB9KTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGF3YWl0IHRoaXMuYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIC8vdGhpcy5jbGVhckFsbERpYWxlZCgpO1xuICAvLyAgIC8vIH0gZWxzZSB7XG4gIC8vICAgLy8gICBzd2FsKCdFcnJvcicsICdUcmlhbCBwZXJpb2QgaXMgb3Zlci4gUGxlYXNlIHNldHVwIHBheW1lbnQgbWV0aG9kIHRvIGNvbnRpbnVlIHNlcnZpY2VzJylcbiAgLy8gICAvLyB9XG4gIC8vIH1cblxuXG4gIC8vIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcbiAgLy8gICB0cnl7XG4gIC8vICAgICBpZiAoIXRoaXMuZGlhbGVkTnVtYmVyICYmIHRoaXMubGFzdERpYWxlZCkge1xuICAvLyAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IHRoaXMubGFzdERpYWxlZC5udW1iZXI7XG4gIC8vICAgICB9XG5cbiAgLy8gICAgIGNvbnN0IGlzSW52YWxpZCA9IGF3YWl0IHRoaXMuaXNJbnZhbGlkTnVtYmVyKCk7XG4gIC8vICAgICBpZiAoaXNJbnZhbGlkKSB7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMuc2F2ZUxhc3REaWFsZWQoKTtcbiAgLy8gICAgIHRoaXMuaXNTYXZlZENvbnRhY3REaWFsbGVkKCk7XG4gIC8vICAgICAvL2xldCBpc0NhbGxlcklkU2V0ID0gYXdhaXQgdGhpcy5pc0NhbGxlcklkU2V0KCk7XG5cbiAgLy8gICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgICAgaWYgKHRoaXMuaXNQYXltZW50RHVlKSB7XG4gIC8vICAgICAgIHN3YWwoJ1dhcm5pbmcnLCAnUGxlYXNlIG5vdGUgdGhhdCB5b3VyIHBheW1lbnQgaXMgZHVlLCBUbyBjb250aW51ZSBvbiB5b3VyIHNlcnZpY2VzIGtpbmRseSBzdWJzY3JpYmUgdG8gdXNlIHVuaW50ZXJydXB0ZWQgc2VydmljZXMuJyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgdGhpcy5pc1RyaWFsUGVyaW9kT3ZlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0cmlhbE92ZXInKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgICAgLy8gaWYgKCF0aGlzLmlzVHJpYWxQZXJpb2RPdmVyKSB7XG4gIC8vICAgICAgIGlmICh0aGlzLnNhbml0aXplZE51bSA9PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHdpbGlvTnVtYmVyJykpIHtcbiAgLy8gICAgICAgICBzd2FsKCdFcnJvcicsICdZb3UgY2FuIG5vdCBkaWFsIHRoaXMgbnVtYmVyJyk7XG4gIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAvLyAgICAgICBpZiAoaGFzUGVybWlzc2lvbikge1xuICAvLyAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQpIHtcbiAgLy8gICAgICAgICAgIC8vY2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBiaW5kZWQgZnJvbSBwcmV2aW91cyBjYWxsXG4gIC8vICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSAnJztcbiAgLy8gICAgICAgICAgIC8vIGdldCBudW1iZXIgdG8gYmUgZGlhbGxlZCBmcm9tIGJhY2tlbmRcbiAgLy8gICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0VG9OdW1iZXIodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAvLyAgICAgICAgICAgaWYgKHRoaXMudGVybWluYXRlQ2FsbCkge1xuICAvLyAgICAgICAgICAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcbiAgLy8gICAgICAgICAgICAgcmV0dXJuO1xuICAvLyAgICAgICAgICAgfVxuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IHRoaXMuc2FuaXRpemVkTnVtO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pc0luY29taW5nQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5kaWFsID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgIGlmICghdGhpcy5pc1NtYXJ0RGlhbENhbGwpIHtcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcjtcbiAgLy8gICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gIC8vICAgICAgICAgICAgICAgICAuLi50aGlzLmNhbGxEYXRhLFxuICAvLyAgICAgICAgICAgICAgICAgcGhvbmU6IHRoaXMuc2FuaXRpemVkTnVtLFxuICAvLyAgICAgICAgICAgICAgICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxuICAvLyAgICAgICAgICAgICAgICAgZGlhbDogdHJ1ZSxcbiAgLy8gICAgICAgICAgICAgICAgIGZyb206IHRoaXMuaXNTbWFydERpYWxDYWxsID8gdGhpcy5jYWxsRGF0YS5mcm9tIDogdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcixcbiAgLy8gICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIC8vICAgICAgICAgICAgICAgfTtcblxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbml0aWF0aW5nIGNhbGwgd2l0aCBkYXRhOicsIHRoaXMuY2FsbERhdGEpO1xuICAvLyAgICAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5jYWxsSW5pdGlhdGVkLmVtaXQoeyAuLi50aGlzLmNhbGxEYXRhIH0pO1xuICAvLyAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdTZWxlY3QgYSBDMkMgbnVtYmVyIHRvIGNhbGwnKTtcbiAgLy8gICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB9LCAzMDAwKTtcbiAgLy8gICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICAgLy90aGlzLmNhbGxpbmdPcGVuRXZlbnQuZW1pdCh7IHBob25lOiB0aGlzLmRpYWxlZE51bWJlciB9KTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICBhd2FpdCB0aGlzLmFza0Zvck1pY3JvcGhvbmVQZXJtaXNzaW9uKCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgLy90aGlzLmNsZWFyQWxsRGlhbGVkKCk7XG4gIC8vICAgICAvLyB9IGVsc2Uge1xuICAvLyAgICAgLy8gICBzd2FsKCdFcnJvcicsICdUcmlhbCBwZXJpb2QgaXMgb3Zlci4gUGxlYXNlIHNldHVwIHBheW1lbnQgbWV0aG9kIHRvIGNvbnRpbnVlIHNlcnZpY2VzJylcbiAgLy8gICAgIC8vIH1cbiAgLy8gICB9Y2F0Y2goZSl7XG4gIC8vICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBpbml0aWF0ZUNhbGw6JywgZSk7XG5cbiAgLy8gICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnRmFpbGVkIHRvIGluaXRpYXRlIGNhbGwuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG5cbiAgLy8gICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyB9XG5cblxuICBhc3luYyBpbml0aWF0ZUNhbGwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5kaWFsZWROdW1iZXIgJiYgdGhpcy5sYXN0RGlhbGVkKSB7XG4gICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gdGhpcy5sYXN0RGlhbGVkLm51bWJlcjtcbiAgICAgIH1cbiAgXG4gICAgICBjb25zdCBpc0ludmFsaWQgPSBhd2FpdCB0aGlzLmlzSW52YWxpZE51bWJlcigpO1xuICAgICAgaWYgKGlzSW52YWxpZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmVMYXN0RGlhbGVkKCk7XG4gICAgICB0aGlzLmlzU2F2ZWRDb250YWN0RGlhbGxlZCgpO1xuICBcbiAgICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIGlmICh0aGlzLmlzUGF5bWVudER1ZSkge1xuICAgICAgICBzd2FsKCdXYXJuaW5nJywgJ1BsZWFzZSBub3RlIHRoYXQgeW91ciBwYXltZW50IGlzIGR1ZSwgVG8gY29udGludWUgb24geW91ciBzZXJ2aWNlcyBraW5kbHkgc3Vic2NyaWJlIHRvIHVzZSB1bmludGVycnVwdGVkIHNlcnZpY2VzLicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgdGhpcy5pc1RyaWFsUGVyaW9kT3ZlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0cmlhbE92ZXInKSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuc2FuaXRpemVkTnVtID09PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHdpbGlvTnVtYmVyJykpIHtcbiAgICAgICAgc3dhbCgnRXJyb3InLCAnWW91IGNhbiBub3QgZGlhbCB0aGlzIG51bWJlcicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAgICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICBcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENhbGxlcklkKSB7XG4gICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ1NlbGVjdCBhIEMyQyBudW1iZXIgdG8gY2FsbCcpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgLy8gQ2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBib3VuZCBmcm9tIHByZXZpb3VzIGNhbGxcbiAgICAgIHRoaXMuY2FsbERhdGEuZGlzcGxheU51bSA9ICcnO1xuICAgICAgXG4gICAgICAvLyBHZXQgbnVtYmVyIHRvIGJlIGRpYWxlZCBmcm9tIGJhY2tlbmRcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VG9OdW1iZXIodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAgICAgaWYgKHRoaXMudGVybWluYXRlQ2FsbCkge1xuICAgICAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICBcbiAgICAgIC8vIFVwZGF0ZSBjYWxsIGRhdGEgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAgICB0aGlzLmNhbGxEYXRhID0ge1xuICAgICAgICAuLi50aGlzLmNhbGxEYXRhLFxuICAgICAgICBwaG9uZTogdGhpcy5zYW5pdGl6ZWROdW0sXG4gICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgICAgICAgZGlhbDogdHJ1ZSxcbiAgICAgICAgZnJvbTogdGhpcy5pc1NtYXJ0RGlhbENhbGwgPyB0aGlzLmNhbGxEYXRhLmZyb20gOiB0aGlzLnNlbGVjdGVkQ2FsbGVySWQubnVtYmVyLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfTtcbiAgXG4gICAgICAvLyBjb25zb2xlLmxvZygnSW5pdGlhdGluZyBjYWxsIHdpdGggZGF0YTonLCB0aGlzLmNhbGxEYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKCdkZDEwJylcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICB0aGlzLmNhbGxJbml0aWF0ZWQuZW1pdCh7IC4uLnRoaXMuY2FsbERhdGEgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgaW4gaW5pdGlhdGVDYWxsOicsIGUpO1xuICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdGYWlsZWQgdG8gaW5pdGlhdGUgY2FsbC4gUGxlYXNlIHRyeSBhZ2Fpbi4nKTtcbiAgICAgIGNvbnNvbGUubG9nKCdkZDExJylcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGlzSW52YWxpZE51bWJlcigpIHtcbiAgICB0cnkge1xuICAgICAgaWYodGhpcy5zYW5pdGl6ZWROdW0gPT0gJycpe1xuICAgICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ0ludmFsaWQgTnVtYmVyJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsaWROdW1iZXJQYXR0ZXJuID0gL15bK1xcZFxccygpLV0qJC87IC8vIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCB2YWxpZCBjaGFyYWN0ZXJzXG4gICAgICBjb25zdCBwaG9uZU51bWJlciA9IHRoaXMuc2FuaXRpemVkTnVtO1xuICAgICAgaWYgKCF2YWxpZE51bWJlclBhdHRlcm4udGVzdChwaG9uZU51bWJlcikpIHtcbiAgICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdJbnZhbGlkIE51bWJlcicpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdJbnZhbGlkIE51bWJlcicpO1xuICAgICAgcmV0dXJuIHRydWU7IC8vIFJldHVybiB0cnVlIGlmIGFuIGVycm9yIG9jY3VycmVkLCBtZWFuaW5nIHRoZSBudW1iZXIgaXMgaW52YWxpZFxuICAgIH1cbiAgfVxuICBcbiAgc2F2ZUxhc3REaWFsZWQoKSB7XG4gICAgY29uc3QgY29udGFjdCA9IHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdC5maW5kKChjOiBhbnkpID0+IGMubnVtYmVyc0xpc3Quc29tZSgobjogYW55KSA9PiBuLm51bWJlciA9PT0gdGhpcy5kaWFsZWROdW1iZXIpKTtcbiAgICBpZiAoY29udGFjdCkge1xuICAgICAgdGhpcy5sYXN0RGlhbGVkID0ge1xuICAgICAgICBuYW1lOiBjb250YWN0Lm5hbWUsXG4gICAgICAgIGltYWdlOiBjb250YWN0LmltYWdlLFxuICAgICAgICBudW1iZXI6IHRoaXMuZGlhbGVkTnVtYmVyXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZih0aGlzLmRpYWxlZE51bWJlcil7XG4gICAgICAgIHRoaXMubGFzdERpYWxlZCA9IHsgbnVtYmVyOiB0aGlzLmRpYWxlZE51bWJlciB9O1xuICAgICAgfVxuICAgICAgXG4gICAgfVxuICB9XG4gIGlzU2F2ZWRDb250YWN0RGlhbGxlZCgpe1xuICAgIGxldCBwaG9uZU51bSA9IHRoaXMuc2FuaXRpemVkTnVtLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIGxldCBjb250YWN0ID0gIHRoaXMuY29udGFjdExpc3QuZmlsdGVyKChjb250YWN0OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBjb250YWN0Lm51bWJlcnNMaXN0LnNvbWUoKG51bTogYW55KSA9PiBudW0ubnVtYmVyID09PSBwaG9uZU51bSlcbiAgICB9KTtcbiAgICBpZihjb250YWN0Lmxlbmd0aCl7XG4gICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBgJHtjb250YWN0WzBdLmZpcnN0TmFtZX0gJHtjb250YWN0WzBdLm1pZGRsZU5hbWV9ICR7Y29udGFjdFswXS5sYXN0TmFtZX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3RbMF0uaW1hZ2UgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xuICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IHRoaXMuc2FuaXRpemVkTnVtO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHNob3dEaWFsQWxlcnQobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWFsQWxlcnQgPSB7XG4gICAgICBtc2c6IG1lc3NhZ2UsXG4gICAgICBzaG93OiB0cnVlXG4gICAgfTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGlhbEFsZXJ0LnNob3cgPSBmYWxzZTtcbiAgICB9LCAzMDAwKTtcbiAgfVxuICBhc3luYyBpc0NhbGxlcklkU2V0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0a24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyk7XG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHRoaXMuZXh0U2VydmljZS5mZXRjaENhbGxlcklkKHRrbiB8fCAnJykudG9Qcm9taXNlKCk7XG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RyaWFsT3ZlcicsIHJlcy50cmlhbE92ZXIpO1xuICAgICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuaXNUcmlhbE92ZXIubmV4dChyZXMudHJpYWxPdmVyKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BheW1lbnREdWUnLCByZXMucGF5bWVudER1ZSk7XG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZS5pc1BheW1lbnREdWUubmV4dChyZXMucGF5bWVudER1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzLmNhbGxlcmlkKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYWxsZXJJRCcsIHJlcy5jYWxsZXJpZCk7XG5cbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmNoYW5nZU1lc3NhZ2UocmVzLmNhbGxlcmlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYWxsZXJJRCcsICdOb3Qgc2V0Jyk7XG4gICAgICAgIHRoaXMuZXh0U2VydmljZS5jaGFuZ2VNZXNzYWdlKCdOb3Qgc2V0Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NhbGxlcklEJykgIT09ICdOb3Qgc2V0Jyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGFzeW5jIGNoZWNrTWljcm9waG9uZVBlcm1pc3Npb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgoZXJyb3IgYXMgYW55KS5uYW1lID09PSAnTm90QWxsb3dlZEVycm9yJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIGFza0Zvck1pY3JvcGhvbmVQZXJtaXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pO1xuICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignVXNlciBkZW5pZWQgbWljcm9waG9uZSBwZXJtaXNzaW9uOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbiAgLy8gYmVsb3cgZnVuY3Rpb24gaXMgdG8gZ2V0IHRoZSBjb3VudHJ5IGNvZGUgd2l0aCBudW1iZXIgZnJvbSBzZXJ2ZXIgXG4gIGFzeW5jIGdldFRvTnVtYmVyKGRpYWxlZE51bWJlcjogc3RyaW5nKSB7XG4gICAgXG4gICAgICBpZiAoZGlhbGVkTnVtYmVyWzBdICE9PSAnKycpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBjYXNlIHdoZW4gdXNlciBnZW9sb2NhdGlvbiBkaWFsIGNvZGUgaXMgb25cbiAgICAgICAgbGV0IGlwQWRkcmVzczogYW55ID0gYXdhaXQgdGhpcy5pcFNlcnZpY2UuZ2V0SXBBZGRyZXNzSW5mbygpLnRvUHJvbWlzZSgpO1xuICAgICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHRoaXMudHdpbGlvU2VydmljZS5nZXRUb051bWJlcihkaWFsZWROdW1iZXIsaXBBZGRyZXNzLmFkZHJlc3MuY291bnRyeUNvZGUpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICB0aGlzLnRvYXN0VGltZW91dCA9IHJlcy50aW1lSW50ZXJ2YWwgKiAxMDAwO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd051bWJlclRvYXN0KHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICBpc0FsZXJ0RW5hYmxlKCkge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXNBbGVydEVuYWJsZScpO1xuICB9XG4gIGFzeW5jIHNob3dOdW1iZXJUb2FzdChkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBpc0FsZXJ0T24gPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzQ291bnRyeUNvZGVUb2FzdE9uJykpO1xuICAgIGlmIChpc0FsZXJ0T24gPT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FsbE51bWJlclRvYXN0Lm51bWJlciA9IGRhdGEudG9OdW1iZXI7XG4gICAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtID0gZGF0YS5kaXNwbGF5TnVtYmVyO1xuICAgIH1cbiAgICBcbiAgICBcbiAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSBkYXRhLmRpc3BsYXlOdW1iZXI7XG4gICAgLy90aGlzLmNhbGxEYXRhLnBob25lID0gZGF0YS50b051bWJlcjtcbiAgICBhd2FpdCB0aGlzLmRlbGF5KHRoaXMudG9hc3RUaW1lb3V0KTtcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IGRhdGEudG9OdW1iZXI7XG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBkYXRhLnRvTnVtYmVyO1xuICAgIHRoaXMuY2FsbE51bWJlclRvYXN0LnNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5udW1iZXIgPSAnJztcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtID0gJyc7XG4gIH1cbiAgZGVsYXkobXM6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuICBpc01pbmltaXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBvbk1pbmltaXNlKGlzTWluaW1pc2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc01pbmltaXNlZCA9IGlzTWluaW1pc2VkO1xuICAgIHRoaXMubWluaW1pc2VFdmVudC5lbWl0KGlzTWluaW1pc2VkKTtcbiAgfVxuICBoYW5kbGVOdW1iZXJQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhIHx8ICh3aW5kb3cgYXMgYW55KS5jbGlwYm9hcmREYXRhO1xuICAgIGNvbnN0IHBhc3RlZERhdGEgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcblxuICAgIC8vIExvZyB0aGUgcGFzdGVkIGNvbnRlbnQgdG8gdGhlIGNvbnNvbGVcbiAgICBpZihwYXN0ZWREYXRhKXtcbiAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gcGFzdGVkRGF0YTtcbiAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gcGFzdGVkRGF0YTtcbiAgICB9XG4gICAgXG4gIH1cbiAgb25FbnRlcihudW06c3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2cobnVtLCAnbnVtYmVyIGZuJylcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IHRoaXMuZGlhbGVkTnVtYmVyICtudW07XG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmRpYWxlZE51bWJlcjtcbiAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gdHJ1ZTtcbiAgICB0aGlzLm51bWJlckRpYWxlZC5lbWl0KHRoaXMuZGlhbGVkTnVtYmVyKTtcbiAgfVxuICBcbiAgZ2V0VXNlckNhbGxTZXR0aW5nKCkge1xuICAgIGNvbnN0IHRrbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UuZmV0Y2hDYWxsZXJJZCh0a24gfHwgJycpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcC5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgIC8vdGhpcy5jYWxsUHJlZmVybmNlID0gcmVzcC51c2VyU2V0dGluZztcbiAgICAgICAgdGhpcy5jYWxsUHJlZmVyZW5jZSA9IHJlc3AuY2FsbGVyaWQ7XG4gICAgICAgIHRoaXMuZ2V0Q2FsbGVySWRMaXN0KCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBvbkRlZGljYXRlZE51bVNlbGVjdChpZDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gaWQ7XG4gICAgdGhpcy5pc0NhbGxlcklkSGlkZGVuID0gdHJ1ZTtcbiAgICB0aGlzLmV4dFNlcnZpY2Uuc2V0Q2FsbGVySWQoaWQpO1xuICB9XG4gIGNhbmNlbERpYWxOdW1iZXIoKSB7XG4gICAgdGhpcy50ZXJtaW5hdGVDYWxsID0gdHJ1ZTtcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVEaXZLZXlkb3duKGV2OmFueSl7XG4gICAgaWYodGhpcy5kaWFsZWROdW1iZXIubGVuZ3RoID09IDApe1xuICAgICAgdGhpcy5kaWFsSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgaWYgKGV2LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRpYWxwYWQgaXMgb3BlblxuICAgICAgaWYgKCF0aGlzLmlzRGlhbHBhZEhpZGRlbikge1xuICAgICAgICBpZih0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggPiAyICYmIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCl7XG4gICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZighdGhpcy5zZWxlY3RlZENhbGxlcklkKXtcbiAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gdHJ1ZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZTtcbiAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgb25DYWxsQnRuTW91c2VFbnRlcihldjogYW55KSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQ2FsbGVySWQgfHwgKHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9PSAnYWx3YXlzQXNrJykgfHwgKHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykpIHtcbiAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xuICAgIH1cblxuICB9XG4gIG9uQ2FsbEJ0bk1vdXNlTGVhdmUoZXY6IGFueSkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZENhbGxlcklkIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycpIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpKSB7XG4gICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGFjY2VwdE5ld0luY29taW5nQ2FsbChjYWxsOiBDYWxsKSB7XG4gICAgLy9maXJzdCBjdXQgdGhlIGN1cnJlbnQgY2FsbFxuICAgIC8vdGhpcy5jYWxsRGF0YSA9IGNhbGw7XG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxEYXRhID0gY2FsbDtcbiAgfVxuICByZWplY3ROZXdJbmNvbWluZ0NhbGwoY2FsbDogQ2FsbCkge1xuICAgIGNhbGwucmVqZWN0KCk7XG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gY2FsbC5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gY2FsbC5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICB9XG4gIG5ld0luY29taW5nQ2FsbEluaXRpYXRlZCgpIHtcbiAgICBjb25zb2xlLmxvZygnZGQxMicpXG4gICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMgPSBbXTtcbiAgICB0aGlzLmluY29taW5nQ2FsbEluaXRpYXRlZC5lbWl0KCk7XG4gIH1cbiAgaW5jb21pbmdDYWxsc05ld0luZm8oZGF0YTphbnkpe1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBkYXRhO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm9FdmVudC5lbWl0KGRhdGEpO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2xlYW5pbmcgdXAgQzJjRGlhbHBhZENvbXBvbmVudCcpO1xuICAgICAgXG4gICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYW4gdXAgVHdpbGlvIGRldmljZSB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICAgIGlmICh0aGlzLnR3aWxpb1NlcnZpY2VbJ2RldmljZSddKSB7XG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZVsnZGV2aWNlJ10uZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBFbmQgYW55IGFjdGl2ZSBjYWxsXG4gICAgICBpZiAodGhpcy5pc0NhbGxJblByb2dyZXNzKSB7XG4gICAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDbGVhciBhbnkgdGltZW91dHMgb3IgaW50ZXJ2YWxzIGlmIHRoZXkgZXhpc3RcbiAgICAgIGlmICh0aGlzLnRvYXN0VGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b2FzdFRpbWVvdXQpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zb2xlLmxvZygnQzJjRGlhbHBhZENvbXBvbmVudCBjbGVhbnVwIGNvbXBsZXRlJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIGNvbXBvbmVudCBjbGVhbnVwOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJkcmFncGFyZW50MVwiIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6aXNEaWFscGFkSGlkZGVuID8gJ25vbmUnOiAnYmxvY2snfVwiPlxyXG4gIDxsaWItY2FsbC1wcm9ncmVzcyAqbmdJZj1cImlzQ2FsbEluUHJvZ3Jlc3NcIlxyXG4gICAoZW5kQ2FsbEV2ZW50KT1cImVuZENhbGwoKVwiXHJcbiAgIChtaW5pbWlzZUV2ZW50KT1cIm9uTWluaW1pc2UoJGV2ZW50KVwiXHJcbiAgIChpbmNvbWluZ0NhbGxJbml0aWF0ZWQpPVwibmV3SW5jb21pbmdDYWxsSW5pdGlhdGVkKClcIlxyXG4gICBbbmV3SW5jb21pbmdDYWxsRGF0YV09XCJuZXdJbmNvbWluZ0NhbGxEYXRhXCJcclxuICAgW2RldmljZUlkXT1cImRldmljZUlkXCJcclxuICAgW25ld0luY29taW5nQ2FsbHNMaXN0XT1cImluY29taW5nQ2FsbHNMaXN0XCJcclxuICAgKGluY29taW5nQ2FsbHNOZXdJbmZvKT1cImluY29taW5nQ2FsbHNOZXdJbmZvKCRldmVudClcIlxyXG4gICBbc2VsZWN0ZWRDYWxsZXJJZF09XCJzZWxlY3RlZENhbGxlcklkXCJcclxuICAgW2NhbGxEYXRhXT1cImNhbGxEYXRhXCI+XHJcbiAgPC9saWItY2FsbC1wcm9ncmVzcz5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbHBhZC1jb250YWluZXJcIiAqbmdJZj1cIiFpc0NhbGxJblByb2dyZXNzXCIgW25nQ2xhc3NdPVwieydtaW5pLWRpYWxwYWQnOiBpc01pbmltaXNlZH1cIiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bik9XCJoYW5kbGVEaXZLZXlkb3duKCRldmVudClcIj5cclxuICAgIDxkaXYgaWQ9XCJ0b3BQYW5lbFwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogY2FsbGVySWRMaXN0Lmxlbmd0aCA/ICc0MCUnIDogJzM5JSd9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFscGFkLWFsZXJ0c1wiICpuZ0lmPVwiZGlhbEFsZXJ0LnNob3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibm8tc2VsZWN0aW9uLWFsZXJ0XCI+XHJcbiAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibWItMFwiPlNlbGVjdCBDMkMgbnVtYmVyIHRvIGNhbGw8L3A+IC0tPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3tkaWFsQWxlcnQubXNnfX08L3A+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCIgKGNsaWNrKT1cInNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2VcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbHBhZC1hbGVydHNcIiAqbmdJZj1cImNhbGxOdW1iZXJUb2FzdC5zaG93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxib3gtcG9wMSBhbGVydCBmYWRlIHNob3dcIiBbbmdDbGFzc109XCJjYWxsTnVtYmVyVG9hc3QudHlwZVwiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgbXktYXV0byB0ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgICBZb3UnciBjYWxsaW5nIDxzdHJvbmc+e3tjYWxsTnVtYmVyVG9hc3QuZGlzcGxheU51bX19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLWRpc2MgcC0wIHB4LTFcIiAoY2xpY2spPVwiY2FuY2VsRGlhbE51bWJlcigpXCI+Q2FuY2VsIENhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXN1Y2Nlc3MgYnRuLWRpc2MgcC0wIHB4LTJcIj5Db250aW51ZTwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMCAxOHB4XCIgKHBhc3RlKT1cImhhbmRsZU51bWJlclBhc3RlKCRldmVudClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cclxuICAgICAgICAgIDxwPjwvcD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBkaWFsLWNsb3NlLWJ0blwiIChjbGljayk9XCJoaWRlRGlhbHBhZCgpXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwiI2ZmZmZmZlwiPjxwYXRoIGQ9XCJtMjU2LTIwMC01Ni01NiAyMjQtMjI0LTIyNC0yMjQgNTYtNTYgMjI0IDIyNCAyMjQtMjI0IDU2IDU2LTIyNCAyMjQgMjI0IDIyNC01NiA1Ni0yMjQtMjI0LTIyNCAyMjRaXCIvPjwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICNkaWFsSW5wdXQgcGxhY2Vob2xkZXI9XCJFbnRlciBhIG5hbWUgb3IgbnVtYmVyXCIgdGFiaW5kZXg9XCIxXCIgWyhuZ01vZGVsKV09XCJkaWFsZWROdW1iZXJcIiAobmdNb2RlbENoYW5nZSk9XCJvbkRpYWxJbnB1dENoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIiBpZD1cImlucHV0LWNsZWFyLWJ0blwiIChjbGljayk9XCJjbGVhcklucHV0KClcIiAqbmdJZj1cInNob3dJbnB1dENsZWFyQnRuXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI1MHB4XCIgaGVpZ2h0PVwiMzBweFwiIHZpZXdCb3g9XCIwIDEwIDQwIDYwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZlcnNpb249XCIxLjFcIiBiYXNlUHJvZmlsZT1cImZ1bGxcIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNzYuMDAgNzYuMDBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCIjNWQ2MDYxXCIgZmlsbC1vcGFjaXR5PVwiMVwiIHN0cm9rZS13aWR0aD1cIjAuMlwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgZD1cIk0gNDcuNTI4Miw0Mi45NDk3TCA0Mi41Nzg0LDM4TCA0Ny41MjgyLDMzLjA1MDJMIDQ0Ljk0OTcsMzAuNDcxOEwgNDAsMzUuNDIxNkwgMzUuMDUwMiwzMC40NzE4TCAzMi40NzE4LDMzLjA1MDJMIDM3LjQyMTYsMzhMIDMyLjQ3MTgsNDIuOTQ5N0wgMzUuMDUwMiw0NS41MjgyTCA0MCw0MC41Nzg0TCA0NC45NDk3LDQ1LjUyODJMIDQ3LjUyODIsNDIuOTQ5NyBaIE0gMTguMDE0Nyw0MS41MzU1TCAyNi45NjQ2LDUwLjQ4NTRDIDI4LjA2ODMsNTEuNTg5IDI5LDUyIDMxLDUyTCA1Miw1MkMgNTQuNzYxNCw1MiA1Nyw0OS43NjE0IDU3LDQ3TCA1NywyOUMgNTcsMjYuMjM4NiA1NC43NjE0LDI0IDUyLDI0TCAzMSwyNEMgMjksMjQgMjguMDY4MywyNC40MTEzIDI2Ljk2NDYsMjUuNTE0OUwgMTguMDE0NywzNC40NjQ1QyAxNi4wNjIxLDM2LjQxNzEgMTYuMDYyMSwzOS41ODI5IDE4LjAxNDcsNDEuNTM1NSBaIE0gMzEsNDlDIDMwLDQ5IDI5LjYwNDgsNDguODgyOCAyOS4wODYsNDguMzY0MUwgMjAuMTM2MSwzOS40MTQyQyAxOS4zNTUsMzguNjMzMiAxOS4zNTUsMzcuMzY2OSAyMC4xMzYxLDM2LjU4NThMIDI5LjA4NiwyNy42MzYyQyAyOS42MDQ4LDI3LjExNzUgMzAsMjcgMzEsMjcuMDAwMUwgNTIsMjcuMDAwMUMgNTMuMTA0NiwyNy4wMDAxIDU0LDI3Ljg5NTUgNTQsMjkuMDAwMUwgNTQsNDcuMDAwMUMgNTQsNDguMTA0NiA1My4xMDQ2LDQ5LjAwMDEgNTIsNDkuMDAwMUwgMzEsNDkgWiBcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPiAgICAgICAgXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWluZm8taWNvblwiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHRvb2x0aXBDbGFzcz1cImlucHV0LXRvb2x0aXBcIiBuZ2JUb29sdGlwPVwiRm9yIGV4dGVuc2lvbiBkaWFsaW5nLCB1c2UgZm9ybWF0cyBsaWtlICsxMjM0NTY3ODkxMCB4MTIzLCsxMjM0NTY3ODkxMCBleHQuMTIzLCArMTIzNDU2Nzg5MTAsMTIzXCI+PGkgY2xhc3M9XCJmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImd1aWRlXCIgKm5nSWY9XCJjYWxsZXJJZExpc3QubGVuZ3RoICYmICEoZGlhbGVkTnVtYmVyLmxlbmd0aCA+IDIpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImd1aWRldGV4dFwiPlBsZWFzZSBlbnRlciBhIG51bWJlciBvciBzZWxlY3QgYSBzYXZlZCBjb250YWN0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWVycm9yXCIgKm5nSWY9XCJkaWFsQWxlcnQuc2hvd1wiPlxyXG4gICAgICAgICAgPHNwYW4+e3tkaWFsQWxlcnQubXNnfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1jYXJkXCIgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgZmlsdGVyZWRDb250YWN0TGlzdFwiIChjbGljayk9XCJvbkNvbnRhY3RTZWxlY3QoY29udGFjdClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbnRhY3QuaW1hZ2VcIiBhbHQ9XCJ1c2VyIGltYWdlXCIgbG9hZGluZz1cImxhenlcIiAqbmdJZj1cImNvbnRhY3QuaW1hZ2UgZWxzZSBhbHBoYU5hbWVcIi8+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhbHBoYU5hbWU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRhY3QtYWxwaGEtaW1nXCI+e3tnZXRGaXJzdExldHRlcihjb250YWN0LmZpcnN0TmFtZSl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNHB4XCIgY2xhc3M9XCJjb250YWN0LW5hbWVcIj57e2dldEZ1bGxOYW1lKGNvbnRhY3QpIH19PC9wPlxyXG4gICAgICAgICAgICAgIDxwPnt7Y29udGFjdC5udW1iZXJzTGlzdFswXS5udW1iZXJ9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgIGNsYXNzPVwid2F2ZXNcIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMjQgMTUwIDI4XCJcclxuICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCJcclxuICAgICAgICAgIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGlkPVwiZ2VudGxlLXdhdmVcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNLTE2MCA0NGMzMCAwIDU4LTE4IDg4LTE4cyA1OCAxOCA4OCAxOCA1OC0xOCA4OC0xOCA1OCAxOCA4OCAxOCB2NDRoLTM1MnpcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgPGcgY2xhc3M9XCJwYXJhbGxheFwiPlxyXG4gICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXHJcbiAgICAgICAgICAgICAgeD1cIjQ4XCJcclxuICAgICAgICAgICAgICB5PVwiMFwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCJcclxuICAgICAgICAgICAgICB4PVwiNDhcIlxyXG4gICAgICAgICAgICAgIHk9XCIzXCJcclxuICAgICAgICAgICAgICBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPCEtLSA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXHJcbiAgICAgICAgICAgICAgeD1cIjQ4XCJcclxuICAgICAgICAgICAgICB5PVwiNVwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4zKVwiXHJcbiAgICAgICAgICAgIC8+IC0tPlxyXG4gICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyXCIgKm5nSWY9XCIhaXNNaW5pbWlzZWRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRpYWwtYnRuXCIgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlwYWRWYWw7bGV0IGkgPSBpbmRleFwiXHJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoa2V5Lm51bSlcIiAoY2xpY2spPVwiYWRkTnVtYmVyKGtleS5udW0pXCJcclxuICAgICAgW25nU3R5bGVdPVwieydtYXJnaW4tdG9wJzoga2V5LnRleHQgPT09ICcrJyA/ICczcHgnIDogJzAnfVwiXHJcbiAgICAgICBbdGFiaW5kZXhdPVwiZGlhbGVkTnVtYmVyLmxlbmd0aCA/ICcwJzogaSsyXCIgbG9uZ1ByZXNzIChsb25nUHJlc3MpPVwiYWRkTnVtYmVyKGtleS50ZXh0KVwiIHNob3J0UHJlc3MgKHNob3J0UHJlc3MpPVwiYWRkTnVtYmVyKGtleS5udW0pXCI+XHJcbiAgICAgICAge3trZXkubnVtfX0gXHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJrZXkubnVtID09IDE7ZWxzZSBvdGhlclRoYW5PbmVcIiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdm9pY2VtYWlsXCI+XHJcbiAgICAgICAgICB2b2ljZW1haWxcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlclRoYW5PbmU+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1hbGJoYWJldHNcIiBbbmdDbGFzc109XCJ7J3BsdXNTaWduJzoga2V5LnRleHQgPT09ICcrJ31cIj57e2tleS50ZXh0ID8ga2V5LnRleHQgOiAnJm5ic3A7J319PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsbC1idG4tY29udGFpbmVyXCIgKm5nSWY9XCIhaXNNaW5pbWlzZWRcIiAobW91c2VlbnRlcik9XCJvbkNhbGxCdG5Nb3VzZUVudGVyKCRldmVudClcIiAobW91c2VsZWF2ZSk9XCJvbkNhbGxCdG5Nb3VzZUxlYXZlKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYnRuXCIgKGNsaWNrKT1cImluaXRpYXRlQ2FsbCgpXCIgW3RhYmluZGV4XT1cImRpYWxlZE51bWJlci5sZW5ndGggPyAnMic6ICcxNSdcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsncG9pbnRlci1ldmVudHMnOiBkaWFsZWROdW1iZXIubGVuZ3RoICYmIHNlbGVjdGVkQ2FsbGVySWQgPyAnYXV0bycgOiAnbm9uZScsICdvcGFjaXR5JzogZGlhbGVkTnVtYmVyLmxlbmd0aCAmJiBzZWxlY3RlZENhbGxlcklkID8gJzEnIDogJzAuNSd9XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgIGNhbGxcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY2FsbGVySWRMaXN0Lmxlbmd0aCAmJiAhaXNNaW5pbWlzZWRcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaG93bkNhbGxlcklkXCIgKm5nSWY9XCJzZWxlY3RlZENhbGxlcklkOyBlbHNlIGFza0Jsb2NrXCIgKGNsaWNrKT1cInRvZ2dsZUNhbGxlcklkRGl2KClcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZENhbGxlcklkPy5pc29Db2RlPy50b0xvd2VyQ2FzZSgpXCI+PC9zcGFuPlxyXG4gICAgICAgICAge3tzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNhc2tCbG9jaz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hvd25DYWxsZXJJZFwiICAoY2xpY2spPVwidG9nZ2xlQ2FsbGVySWREaXYoKVwiIFtuZ0NsYXNzXT1cInsgJ3RpbHQtc2hha2luZyc6IHNoYWtlRGVkaWNhdGVkQnRuIH1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0wXCI+U2VsZWN0IEMyQyBudW1iZXI8L2g1PlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtMlwiIHN0eWxlPVwib3BhY2l0eTouODttYXJnaW4tdG9wOjJweFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9pY29uX2Rvd25fYXJyb3cuc3ZnXCIgYWx0PVwiZG93blwiIHdpZHRoPVwiMTBweFwiPlxyXG4gICAgICAgICAgICA8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd24gbWwtMiB0ZXh0LWJsdWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6MnB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJndWlkZTJcIiAqbmdJZj1cInNoYWtlRGVkaWNhdGVkQnRuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJndWlkZXRleHRcIj5QbGVhc2Ugc2VsZWN0IGEgbnVtYmVyIGZyb20gYmVsb3cgZHJvcGRvd248L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGg7IGVsc2Ugbm9DYWxsZXJJZE1lc3NhZ2VcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxsZXItaWQtbGlzdC1jb250YWluZXJcIiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGggJiYgIWlzTWluaW1pc2VkXCIgaWQ9XCJjYWxsZXJJZENvbnRhaW5lclwiICBbbmdDbGFzc109XCJ7J3Zpc2libGUnOiAhaXNDYWxsZXJJZEhpZGRlbn1cIiA+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cIj5cclxuICAgICAgICA8IS0tIDxoND5TZWxlY3QgQzJDIFNvZnRwaG9uZSBOdW1iZXI8L2g0PiAtLT5cclxuICAgICAgICAgPGg0Pk1ha2Ugb3V0Z29pbmcgY2FsbCB1c2luZzwvaDQ+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXHJcbiAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaXNDYWxsZXJJZEhpZGRlbiA9IHRydWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIGNsb3NlXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhbGxlcklkIG9mIGNhbGxlcklkTGlzdFwiPlxyXG4gICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRDYWxsZXJJZENsYXNzJzogY2FsbGVySWQ/Lm51bWJlciA9PSBzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9XCIgKGNsaWNrKT1cIm9uRGVkaWNhdGVkTnVtU2VsZWN0KGNhbGxlcklkKVwiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY2FsbGVySWQ/Lmlzb0NvZGU/LnRvTG93ZXJDYXNlKClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3tjYWxsZXJJZD8ubnVtYmVyfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7Y2FsbGVySWQ/LmNvdW50cnlOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9DYWxsZXJJZE1lc3NhZ2U+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tY2FsbGVyLWlkLW1lc3NhZ2VcIj5UbyBtYWtlIGFueSB2b2ljZSBjYWxscywgcGxlYXNlIDxhIHJvdXRlckxpbms9XCIvZXh0ZW5zaW9uL2RlZGljYXRlZG51bWJlci97e3Rva2VufX1cIiBjbGFzcz1cImNsaWNrLWhlcmUtbGlua1wiIHRpdGxlPVwiU2V0dGluZ3MgPiBDMkMgTnVtYmVyXCI+c3Vic2NyaWJlPC9hPiB0byBhIHZvaWNlIGNhcGFibGUgQzJDIE51bWJlci5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJkZWRpY2F0ZWQtb3ZlcmxheVwiICpuZ0lmPVwic2hvd0RlZGljYXRlZFBvcHVwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGRlZGljYXRlZE51bVBvcHVwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGNob29zZURlZGljYXRlZEhlYWRlclwiPlxyXG4gICAgICAgICAgPGg1PkNob29zZSBDMkMgTnVtYmVyPC9oNT5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBkaWFsLWNsb3NlLWJ0blwiIChjbGljayk9XCJzaG93RGVkaWNhdGVkUG9wdXAgPSBmYWxzZVwiPmNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZGVkaWNhdGVkTnVtTGlzdFwiPlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxsZXJJZCBvZiBjYWxsZXJJZExpc3RcIj5cclxuICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwieydzZWxlY3RlZENhbGxlcklkQ2xhc3MnOiBjYWxsZXJJZD8ubnVtYmVyID09IHNlbGVjdGVkQ2FsbGVySWQ/Lm51bWJlcn1cIiAoY2xpY2spPVwic2hvd0RlZGljYXRlZFBvcHVwID0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY2FsbGVySWQ/Lmlzb0NvZGU/LnRvTG93ZXJDYXNlKClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIHt7Y2FsbGVySWQ/Lm51bWJlcn19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7Y2FsbGVySWQ/LmNvdW50cnlOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5jb21pbmctY2FsbC13aWRnZXRcIiAqbmdGb3I9XCJsZXQgY2FsbCBvZiBuZXdJbmNvbWluZ0NhbGxzO2xldCBpID0gaW5kZXhcIiBbbmdTdHlsZV09XCJ7J3RvcCc6ICgzMCArIGkgKiA3MikgKyAncHgnfVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmMtdXNlci1pbWdcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy91c2VyLmpwZ1wiIGFsdD1cInVzZXIgaW1hZ2VcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiaW5jLXVzZXItbmFtZVwiPnt7Y2FsbC5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpfX08L3A+XHJcbiAgICAgICAgPHA+e3tjYWxsLnBhcmFtZXRlcnMuRnJvbX19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJpbmMtY2FsbC1idG4gaW5jLWFjY2VwdC1idG4gbXItMlwiIChjbGljayk9XCJhY2NlcHROZXdJbmNvbWluZ0NhbGwoY2FsbClcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlXCI+XHJcbiAgICAgICAgICAgIGNhbGxcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5jLWNhbGwtYnRuIGluYy1yZWplY3QtYnRuXCIgKGNsaWNrKT1cInJlamVjdE5ld0luY29taW5nQ2FsbChjYWxsKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgICAgY2FsbF9lbmRcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
1304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kaWFsYm94L3NyYy9saWIvZGlhbGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9DLFNBQVMsRUFBYyxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFpQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRW5NLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUkvQixPQUFtQyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQTs7Ozs7Ozs7Ozs7QUFZbkMsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixJQUFhLGVBQWUsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQThERCxZQUNVLGFBQTRCLEVBQzVCLFVBQTRCLEVBQzVCLE1BQWlCLEVBQ2pCLFNBQTJCLEVBQzNCLGdCQUFrQyxFQUNsQyxHQUFzQixFQUN0QixNQUFjLEVBQ2QsMEJBQXNEO1FBUHRELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsY0FBUyxHQUFULFNB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RUFBRTtnQkFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUN4QztZQUVELHNCQUFzQjtZQUN0QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDekIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2hCO1lBRUQsZ0RBQWdEO1lBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNqQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUVyRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7OzhHQWgyQ1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0Isa29CQ3BCN0IsbWhaQTBPQTs0RkR0TmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7dVRBUWQsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFTyxlQUFlO3NCQUEzQixLQUFLO2dCQU9HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFLSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0cseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDaUIsZ0JBQWdCO3NCQUF2QyxTQUFTO3VCQUFDLFdBQVc7Z0JBR1osWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHdpbGlvU2VydmljZSB9IGZyb20gJy4vc2VydmljZS90d2lsaW8uc2VydmljZSc7XG5pbXBvcnQgc3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XG5pbXBvcnQgeyBFeHRlbnNpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL2V4dGVuc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGxlcklkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGxlci1pZC1kaWFsb2cvY2FsbGVyLWlkLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCBwYXJzZVBob25lTnVtYmVyRnJvbVN0cmluZywgeyBBc1lvdVR5cGUgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5pbXBvcnQgeyBrZXlwYWQgfSBmcm9tICcuLi9rZXlwYWQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IElwQWRkcmVzc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UvaXAtYWRkcmVzcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDYWxsIH0gZnJvbSAnQHR3aWxpby92b2ljZS1zZGsnO1xuaW1wb3J0IHsgSW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UvaW5jb21laW5nLWNhbGwtc29ja2V0LnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kaWFsYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaWFsYm94LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgXG4gIHByaXZhdGUgX2lzRGlhbHBhZEhpZGRlbjogYm9vbGVhbiA9IHRydWU7XG4gIC8vIExldCB0aGUgbGlicmFyeSBkZWNpZGUgdG8gYXV0by1vcGVuIG9uIGluY29taW5nIGNhbGwgd2l0aG91dCBob3N0IHdpcmluZ1xuICBASW5wdXQoKSBhdXRvT3Blbk9uSW5jb21pbmc6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBjb250YWN0SW5mbzogYW55OyAgXG4gIEBJbnB1dCgpIGRldmljZUlkOiBhbnk7ICBcbiAgXG4gIEBJbnB1dCgpIHNldCBpc0RpYWxwYWRIaWRkZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0RpYWxwYWRIaWRkZW4gPSB2YWx1ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAvLyBXaGVuIGRpYWxwYWQgYmVjb21lcyB2aXNpYmxlLCBlbnN1cmUgVHdpbGlvIGlzIGluaXRpYWxpemVkXG4gICAgICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgaW5jb21pbmdDYWxsRGF0YTogYW55XG4gIFxuICBnZXQgaXNEaWFscGFkSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0RpYWxwYWRIaWRkZW47XG4gIH1cbiAgQE91dHB1dCgpIGNsb3NlRGlhbHBhZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjYWxsSW5pdGlhdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW5kQ2FsbEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBtaW5pbWlzZUV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBpbmNvbWluZ0NhbGxzTmV3SW5mb0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcbiAgQE91dHB1dCgpIGluY29taW5nQ2FsbEluaXRpYXRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAVmlld0NoaWxkKCdkaWFsSW5wdXQnKSBkaWFsSW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjtcblxuICBcbiAgQE91dHB1dCgpIG51bWJlckRpYWxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG5cbiAgaXNDYWxsSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuICBrZXlwYWRWYWwgPSBrZXlwYWQ7XG4gIFxuICBzaG93SW5wdXRDbGVhckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBkaWFsZWROdW1iZXI6IHN0cmluZyA9ICcnO1xuICBjb250YWN0TGlzdDogYW55W10gPSBbXTtcbiAgZmlsdGVyZWRDb250YWN0TGlzdDogYW55W10gPSBbXTtcbiAgY2FsbGVySWRMaXN0OiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZENhbGxlcklkOiBhbnk7XG4gIGlzQ2FsbGVySWRIaWRkZW46IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGlzVHJpYWxQZXJpb2RPdmVyOiBib29sZWFuID0gZmFsc2U7XG4gIGlzUGF5bWVudER1ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0ZXJtaW5hdGVDYWxsID0gZmFsc2U7XG4gIHRvYXN0VGltZW91dCA9IDcwMDA7XG4gIGNhbGxOdW1iZXJUb2FzdCA9IHtcbiAgICBzaG93OiBmYWxzZSxcbiAgICB0eXBlOiAnYWxlcnQtc3VjY2VzcycsXG4gICAgbnVtYmVyOiAnJyxcbiAgICBkaXNwbGF5TnVtOiAnJ1xuICB9XG4gIGNhbGxEYXRhOiBhbnkgPSB7XG4gICAgcGhvbmU6ICcnLFxuICAgIGRpc3BsYXlOdW06ICcnLFxuICAgIGRpYWw6IGZhbHNlLFxuICAgIG5hbWU6ICcnLFxuICAgIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnLFxuICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgICBleHROdW06JydcbiAgfTtcbiAgbGFzdERpYWxlZDogeyBuYW1lPzogc3RyaW5nOyBpbWFnZT86IHN0cmluZzsgbnVtYmVyOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuICBzYW5pdGl6ZWROdW06IGFueTtcbiAgZGlhbEFsZXJ0ID0ge1xuICAgIG1zZzogJycsXG4gICAgc2hvdzogZmFsc2VcbiAgfVxuICB0b2tlbj86c3RyaW5nO1xuIFxuICBzaG93RGVkaWNhdGVkUG9wdXA6Ym9vbGVhbiA9IGZhbHNlO1xuICBuZXdJbmNvbWluZ0NhbGxzOiBhbnkgPSBbXTtcbiAgaW5jb21pbmdDYWxsc0xpc3Q6IGFueSA9IFtdO1xuICBuZXdJbmNvbWluZ0NhbGxEYXRhPzpDYWxsO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgY2FsbFByZWZlcmVuY2U6IGFueTtcbiAgc2hha2VEZWRpY2F0ZWRCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTbWFydERpYWxDYWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoICBcbiAgICBwcml2YXRlIHR3aWxpb1NlcnZpY2U6IFR3aWxpb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHRTZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBpcFNlcnZpY2U6IElwQWRkcmVzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBleHRlbnNpb25TZXJ2aWNlOiBFeHRlbnNpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RrOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2U6IEluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlLFxuICApIHsgXG4gICAgLy8gSW5pdGlhbGl6ZSBpZiBkaWFscGFkIGlzIHZpc2libGUgYnkgZGVmYXVsdFxuICAgIGlmICghdGhpcy5pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdzZnNkZmRzZicpXG4gICAgICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ0RpYWxib3hDb21wb25lbnQgY29uc3RydWN0b3InKTtcbiAgfVxuICBwcml2YXRlIGluaXRpYWxpemVUd2lsaW8oKSB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMudG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfHwgJyc7XG4gICAgICBpZiAoIXRoaXMudG9rZW4pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gYXV0aGVudGljYXRpb24gdG9rZW4gZm91bmQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgXG4gICAgICAvLyBJbml0aWFsaXplIFR3aWxpbyBzZXJ2aWNlXG4gICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuaW5pdGlhbGl6ZVR3aWxpb0RldmljZSh0aGlzLmRldmljZUlkKTtcbiAgICB9XG4gIH1cbiAgLy8gbmdPbkNoYW5nZSgpIHtcbiAgLy8gICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcbiAgLy8gfVxuXG4gIC8vIG5nT25Jbml0KCkge1xuICAvLyAgIHRyeSB7XG4gIC8vICAgICB0aGlzLmdldENvbnRhY3RMaXN0KCk7XG4gIC8vICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAgICAgXG4gIC8vICAgICAvLyBTdWJzY3JpYmUgdG8gZGlhbCBudW1iZXIgZXZlbnRzXG4gIC8vICAgICBjb25zdCBzdWIxID0gdGhpcy50d2lsaW9TZXJ2aWNlLmRpYWxOdW1iZXJGcm9tT3RoZXJNb2R1bGUuc3Vic2NyaWJlKChjb250YWN0OiBhbnkpID0+IHtcbiAgLy8gICAgICAgaWYgKGNvbnRhY3QubnVtYmVyKSB7XG4gIC8vICAgICAgICAgdGhpcy5pc1NtYXJ0RGlhbENhbGwgPSBmYWxzZTtcbiAgLy8gICAgICAgICBpZiAoY29udGFjdC5pc0RpYWxGcm9tSGlzdG9yeSkge1xuICAvLyAgICAgICAgICAgLy9oYW5kbGUgZGlhbGluZyBmcm9tIGhpc3RvcnkgcGFnZVxuICAvLyAgICAgICAgICAgaWYoY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJyl7XG4gICAgICAgICAgICAgXG4gIC8vICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHsgbnVtYmVyOiBjb250YWN0LmZyb20gfTtcbiAgLy8gICAgICAgICAgICAgdGhpcy5pc1NtYXJ0RGlhbENhbGwgPSB0cnVlO1xuICAvLyAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xuICAvLyAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XG4gIC8vICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XG4gIC8vICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuZnJvbSA9IGNvbnRhY3QuZnJvbTtcbiAgLy8gICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgLy8gICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XG4gIC8vICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcbiAgLy8gICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gIC8vICAgICAgICAgfWVsc2V7XG4gIC8vICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAvLyAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB9LCAxMDAwKTtcbiAgLy8gICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGNvbnRhY3QpO1xuICAvLyAgICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5wdXNoKGNvbnRhY3QpXG4gIC8vICAgICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XG4gIC8vICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICAgIGlmIChjb250YWN0LmNhbGxlcklkID09ICdhbHdheXNBc2snIHx8IGNvbnRhY3QuY2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpIHtcbiAgLy8gICAgICAgICAgICAgdGhpcy5nZXRVc2VyQ2FsbFNldHRpbmcoKTtcbiAgLy8gICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgLy8gICAgICAgICAgICAgfSwgMTAwMCk7XG4gIC8vICAgICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XG4gIC8vICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgLy8gICAgICAgICAgICAgfSwgMjAwMCk7XG4gIC8vICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBjb250YWN0Lm51bWJlcjtcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gY29udGFjdC5uYW1lO1xuICAvLyAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3QuaW1nO1xuICAvLyAgICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xuICAvLyAgICAgICAgICAgICB0aGlzLmluaXRpYXRlQ2FsbCgpO1xuICAvLyAgICAgICAgICAgfVxuICAvLyAgICAgICAgIH1cbiAgICAgICAgICBcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSlcbiAgXG4gIC8vICAgICAvLyBoYW5kbGUgaW5jb21pbmcgY2FsbFxuICAvLyAgICAgY29uc3Qgc3ViMiA9IHRoaXMudHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbC5zdWJzY3JpYmUoaW5jb21pbmdDYWxsRGF0YSA9PiB7XG4gIC8vICAgICAgIC8vIGlmIChpbmNvbWluZ0NhbGxEYXRhKSB7XG4gIC8vICAgICAgIC8vICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgLy8gICAgICAgLy8gICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAvLyAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnMuRnJvbTtcbiAgLy8gICAgICAgLy8gICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBpbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCduYW1lJyk7XG4gIC8vICAgICAgIC8vICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBpbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCdpbWFnZScpO1xuICAvLyAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEuaXNJbmNvbWluZ0NhbGwgPSB0cnVlO1xuICAvLyAgICAgICAvLyB9XG4gIC8vICAgICAgIGlmIChpbmNvbWluZ0NhbGxEYXRhKSB7XG4gIC8vICAgICAgICAgaWYgKHRoaXMuaXNDYWxsSW5Qcm9ncmVzcykge1xuICAvLyAgICAgICAgICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmdDYWxsRGF0YSk7XG4gIC8vICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgLy8gICAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydGcm9tJ107XG5cbiAgLy8gICAgICAgICAgIHRoaXMuZ2V0VXNlckluZm9ybWF0aW9uKGluY29taW5nQ2FsbERhdGEpO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBpbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCdpbWFnZScpIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgLy8gICAgICAgICAgIHRoaXMuY2FsbERhdGEuaXNJbmNvbWluZ0NhbGwgPSB0cnVlO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgICBpbmNvbWluZ0NhbGxEYXRhLm9uKCdjYW5jZWwnLCAoKSA9PiB7XG4gIC8vICAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzLkNhbGxTaWQgIT09IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snQ2FsbFNpZCddKTtcbiAgLy8gICAgICAgICAgIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAvLyAgICAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICB9KTtcblxuICAvLyAgICAgICAgIGluY29taW5nQ2FsbERhdGEub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gIC8vICAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICAvLyAgICAgICAgICAgICBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgLy8gICAgICAgICAgICAgfVxuICAvLyAgICAgICAgIH0pO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9KTtcblxuICAvLyAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWIxKTtcbiAgLy8gICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoc3ViMik7XG4gIC8vICAgfWNhdGNoKGUpe1xuICAvLyAgICAgY29uc29sZS5sb2coZSlcbiAgLy8gICB9XG4gICAgXG4gIC8vIH1cblxuXG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc29sZS5sb2coJ25nT25Jbml0JylcbiAgICAvLyBFbnN1cmUgVHdpbGlvIGlzIGluaXRpYWxpemVkIGV2ZW4gd2hlbiBkaWFscGFkIHN0YXJ0cyBoaWRkZW4sXG4gICAgLy8gc28gd2UgY2FuIGF1dG8tb3BlbiBvbiBpbmNvbWluZyBjYWxscy5cbiAgICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcbiAgICB0aGlzLmluY29tZWluZ0NhbGxTb2NrZXRTZXJ2aWNlLmNvbm5lY3QoKTtcblxuXG4gICAgdHJ5e1xuICAgICAgICAgIHRoaXMuaW5jb21laW5nQ2FsbFNvY2tldFNlcnZpY2UubGlzdGVuKCkuc3Vic2NyaWJlKGFzeW5jKGluY29taW5nQ2FsbERhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGluY29taW5nQ2FsbERhdGEuZGF0YSk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJXUyBFdmVudCBSZWNlaXZlZDpcIiwgaW5jb21pbmdDYWxsRGF0YSk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXCJXUyBFdmVudCBSZWNlaXZlZDpcIiwgaW5jb21pbmdDYWxsRGF0YS5kYXRhKTtcbiAgICAgICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuY29uZmVyZW5jZUNhbGxJbmZvID0gaW5jb21pbmdDYWxsRGF0YTtcbiAgICAgICAgICBpZighIWluY29taW5nQ2FsbERhdGEucGFydGljaXBhbnRzPy5sZW5ndGgpe1xuICAgICAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IGluY29taW5nQ2FsbERhdGEucGFydGljaXBhbnRzLmZpbHRlcigoaXRlbTogYW55KSA9PiAhaXRlbS5pc0xlZnQpIHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IGluY29taW5nQ2FsbERhdGEucGFydGljaXBhbnRzIHx8IFtdO1xuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEgPSBbXTtcbiAgICAgICAgICAgICAgLy8gICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gW107XG4gICAgICAgICAgICAgIC8vICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhID0gW107XG4gICAgICAgICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBbXTtcbiAgICAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgLy8gaW5jb21pbmdDYWxsRGF0YS5wYXJ0aWNpcGFudHMubGVuZ3RoID8gaW5jb21pbmdDYWxsRGF0YS5wYXJ0aWNpcGFudHMuZmlsdGVyKChpdGVtOiBhbnkpID0+ICFpdGVtLmlzTGVmdCkgOiBbXTtcbiAgICAgIC8vICB0aGlzLmluaXRpYWxpemVUd2lsaW8oKTtcbiAgICAgIC8vIGlmIChpbmNvbWluZ0NhbGxEYXRhLnR5cGUgPT09IFwiL2luY29taW5nL2NhbGxcIikge1xuICAgICAgLy8gICBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xuICAgICAgLy8gICAgIGlmICh0aGlzLmF1dG9PcGVuT25JbmNvbWluZyAmJiB0aGlzLl9pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgIC8vICAgICAgIHRoaXMuX2lzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgLy8gICAgIH1cblxuICAgICAgLy8gICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcbiAgICAgIC8vICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nQ2FsbERhdGEpO1xuICAgICAgLy8gICAgICAgY29uc29sZS5sb2coJzMyNScsIGluY29taW5nQ2FsbERhdGEpXG4gICAgICAvLyAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgLy8gICAgICAgaW5jb21pbmdDYWxsRGF0YVsnaXNGaXJzdENhbGwnXSA9IHRydWU7XG4gICAgICAvLyAgICAgICBjb25zb2xlLmxvZygnZGQxJylcbiAgICAgIC8vICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAvLyAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgLy8gICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snRnJvbSddO1xuICAgICAgLy8gICAgICAgY29uc29sZS5sb2coJ2RkMicpXG4gICAgICAvLyAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgIC8vICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ25hbWUnKTtcbiAgICAgIC8vICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgICAvLyAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignY2FuY2VsJywgKCkgPT4ge1xuICAgICAgLy8gICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAvLyAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcbiAgICAgIC8vICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkMycpXG4gICAgICAvLyAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgLy8gICAgICAgLy8gfVxuICAgICAgLy8gICAgIH0pO1xuXG4gICAgICAvLyAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgIC8vICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAvLyAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgLy8gICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDQnKVxuICAgICAgLy8gICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgLy8gICAgICAgICAvLyB9XG4gICAgICAvLyAgICAgfSk7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICB9KTtcbiAgICAgIHRoaXMudG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJykgfHwgJyc7XG4gICAgICAvL3RoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICB0aGlzLmdldENvbnRhY3RMaXN0KCk7XG4gICAgICBcbiAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICBjb25zdCBzdWIxID0gdGhpcy50d2lsaW9TZXJ2aWNlLmRpYWxOdW1iZXJGcm9tT3RoZXJNb2R1bGUuc3Vic2NyaWJlKChjb250YWN0OmFueSkgPT4ge1xuICAgICAgICBpZiAoY29udGFjdC5udW1iZXIpIHtcbiAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChjb250YWN0LmlzRGlhbEZyb21IaXN0b3J5KSB7XG4gICAgICAgICAgICAvL2hhbmRsZSBkaWFsaW5nIGZyb20gaGlzdG9yeSBwYWdlXG4gICAgICAgICAgICBpZihjb250YWN0LmNhbGxlcklkID09ICdzbWFydERpYWxpbmcnKXtcbiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0geyBudW1iZXI6IGNvbnRhY3QuZnJvbSB9O1xuICAgICAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGNvbnRhY3QubmFtZTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gY29udGFjdC5mcm9tO1xuICAgICAgICAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IGNvbnRhY3QubnVtYmVyO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnMjc0JywgY29udGFjdClcbiAgICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XG4gICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcyODInLCBjb250YWN0KVxuICAgICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24oY29udGFjdCk7XG4gICAgICAgICAgICAvLyB0aGlzLmluY29taW5nQ2FsbHNMaXN0LnB1c2goY29udGFjdClcbiAgICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xuICAgICAgICAgICAgICB0aGlzLmdldFVzZXJDYWxsU2V0dGluZygpO1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xuICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XG4gICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gY29udGFjdC5pbWc7XG4gICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9KVxuICBcbiAgICAgIC8vIGhhbmRsZSBpbmNvbWluZyBjYWxsIChtYW5hZ2VkIGludGVybmFsbHk7IGhvc3QgbmVlZCBub3QgcGFzcyBpbmNvbWluZ0NhbGxEYXRhKVxuICAgICAgY29uc3Qgc3ViMiA9IHRoaXMudHdpbGlvU2VydmljZS5jdXJyZW50Q2FsbC5zdWJzY3JpYmUoKGluY29taW5nQ2FsbERhdGE6IGFueSkgPT4ge1xuICAgICAgICAvLyBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xuICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIC8vICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgLy8gICB0aGlzLmNhbGxEYXRhLnBob25lID0gaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzLkZyb207XG4gICAgICAgIC8vICAgdGhpcy5jYWxsRGF0YS5uYW1lID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpO1xuICAgICAgICAvLyAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKTtcbiAgICAgICAgLy8gICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoaW5jb21pbmdDYWxsRGF0YSkge1xuICAgICAgICAgIGlmICh0aGlzLmF1dG9PcGVuT25JbmNvbWluZyAmJiB0aGlzLl9pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHRoaXMubmV3SW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nQ2FsbERhdGEpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJzMyNScsIGluY29taW5nQ2FsbERhdGEpXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5jb21pbmdDYWxsRGF0YVsnaXNGaXJzdENhbGwnXSA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZGQxJylcbiAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snRnJvbSddO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2RkMicpXG4gICAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5nZXQoJ25hbWUnKTtcbiAgICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnaW1hZ2UnKSB8fCAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZyc7XG4gICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignY2FuY2VsJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAgICAgICAvLyBpZih0aGlzLmluY29taW5nQ2FsbHNMaXN0Lmxlbmd0aCA9PSAwKXtcbiAgICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkMycpXG4gICAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaW5jb21pbmdDYWxsRGF0YS5vbignZGlzY29ubmVjdCcsICgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSBpbmNvbWluZ0NhbGxEYXRhLnBhcmFtZXRlcnNbJ0NhbGxTaWQnXSk7XG4gICAgICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCdkZDQnKVxuICAgICAgICAgICAgICAvLyAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YjEpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWIyKTtcbiAgICB9Y2F0Y2goZSl7XG4gICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cbiAgfVxuXG4gIFxuICBnZXRVc2VySW5mb3JtYXRpb24oaW5jb21pbmdDYWxsRGF0YTogYW55KSB7XG4gICAgLy8gY29uc29sZS5sb2coJ2dldFVzZXJJbmZvcm1hdGlvbicsIGluY29taW5nQ2FsbERhdGEpO1xuICAgIGxldCBkYXRhID0gdGhpcy5mcm9tRW50cmllcyhBcnJheS5mcm9tKGluY29taW5nQ2FsbERhdGEuY3VzdG9tUGFyYW1ldGVycy5lbnRyaWVzKCkpKTtcbiAgICBjb25zb2xlLmxvZygnMzY2LS0tJywgZGF0YSlcbiAgICB0aGlzLmV4dGVuc2lvblNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKGRhdGFbJ3R3aWxpb0F1dGhJZCddKS5zdWJzY3JpYmUoXG4gICAgcmVzcG9uc2UgPT4ge1xuICAgICAgaW5jb21pbmdDYWxsRGF0YVsndXNlckluZm8nXT1yZXNwb25zZVxuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0cyA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3Quc29tZSgoY2FsbDogYW55KSA9PiBjYWxsLnBhcmFtZXRlcnM/LkNhbGxTaWQgPT09IGluY29taW5nQ2FsbERhdGEucGFyYW1ldGVycz8uQ2FsbFNpZCk7XG4gICAgICBpZighYWxyZWFkeUV4aXN0cyl7XG4gICAgICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChpbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RrLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdGFydGluZyByZWNvcmRpbmcnLCBlcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICBmcm9tRW50cmllcyhlbnRyaWVzOiBbc3RyaW5nLCBhbnldW10pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gZW50cmllcy5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnJlZ2lzdGVyRHJhZ0VsZW1lbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZihjaGFuZ2VzWydkZXZpY2VJZCddKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGV2aWNlSWQnLCBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICBjb25zb2xlLmxvZygnU2V0IGRldmljZUlkIGluIGxvY2FsU3RvcmFnZTonLCBjaGFuZ2VzWydkZXZpY2VJZCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydpc0RpYWxwYWRIaWRkZW4nXSAmJiAhdGhpcy5pc0RpYWxwYWRIaWRkZW4pIHtcbiAgICAgIHRoaXMuZ2V0Q29udGFjdExpc3QoKTtcbiAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kaWFsSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0sIDApO1xuICAgICAgaWYodGhpcy5pbmNvbWluZ0NhbGxEYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMucHVzaCh0aGlzLmluY29taW5nQ2FsbERhdGEpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCc0MDQnLCB0aGlzLmluY29taW5nQ2FsbERhdGEpXG4gICAgICAgICAgdGhpcy5nZXRVc2VySW5mb3JtYXRpb24odGhpcy5pbmNvbWluZ0NhbGxEYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZGQ1JylcbiAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydGcm9tJ107XG4gICAgICAgICAgY29uc29sZS5sb2coJzQxMScsIHRoaXMuaW5jb21pbmdDYWxsRGF0YSlcbiAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbih0aGlzLmluY29taW5nQ2FsbERhdGEpO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEuaW1nID0gdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmN1c3RvbVBhcmFtZXRlcnMuZ2V0KCdpbWFnZScpIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmlzSW5jb21pbmdDYWxsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEub24oJ2NhbmNlbCcsICgpID0+IHtcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbHNMaXN0ID0gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10gIT09IHRoaXMuaW5jb21pbmdDYWxsRGF0YS5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNicpXG4gICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxEYXRhLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEub24oJ2Rpc2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbmNvbWluZ0NhbGxzTGlzdCA9IHRoaXMuaW5jb21pbmdDYWxsc0xpc3QuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0ucGFyYW1ldGVyc1snQ2FsbFNpZCddICE9PSB0aGlzLmluY29taW5nQ2FsbERhdGEucGFyYW1ldGVyc1snQ2FsbFNpZCddKTtcbiAgICAgICAgICB0aGlzLmluY29taW5nQ2FsbERhdGEuZGlzY29ubmVjdCgpO1xuICAgICAgICAgIC8vIGlmKHRoaXMuaW5jb21pbmdDYWxsc0xpc3QubGVuZ3RoID09IDApe1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2coJ2RkNycpXG4gICAgICAgICAgLy8gICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29udGFjdEluZm8nXSAmJiB0aGlzLmNvbnRhY3RJbmZvKSB7XG4gICAgICBsZXQgY29udGFjdCA9IHRoaXMuY29udGFjdEluZm87XG4gICAgaWYgKGNvbnRhY3QubnVtYmVyKSB7XG4gICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IGZhbHNlO1xuICAgICAgaWYgKGNvbnRhY3QuaXNEaWFsRnJvbUhpc3RvcnkpIHtcbiAgICAgICAgLy9oYW5kbGUgZGlhbGluZyBmcm9tIGhpc3RvcnkgcGFnZVxuICAgICAgICBpZihjb250YWN0LmNhbGxlcklkID09ICdzbWFydERpYWxpbmcnKXtcbiAgICAgICAgIFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHsgbnVtYmVyOiBjb250YWN0LmZyb20gfTtcbiAgICAgICAgICB0aGlzLmlzU21hcnREaWFsQ2FsbCA9IHRydWU7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEucGhvbmUgPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBjb250YWN0Lm5hbWU7XG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltZztcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmZyb20gPSBjb250YWN0LmZyb207XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICBjb25zb2xlLmxvZygnMjc0JywgY29udGFjdClcbiAgICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnNDU0JywgY29udGFjdClcbiAgICAgICAgLy8gdGhpcy5pbmNvbWluZ0NhbGxzTGlzdC5wdXNoKGNvbnRhY3QpXG4gICAgICAgIHRoaXMuaW5pdGlhdGVDYWxsKCk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy5nZXRVc2VyQ2FsbFNldHRpbmcoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcyODInLCBjb250YWN0KVxuICAgICAgICB0aGlzLmdldFVzZXJJbmZvcm1hdGlvbihjb250YWN0KTtcbiAgICAgICAgY29uc29sZS5sb2coJzQ2NCcsIGNvbnRhY3QpXG4gICAgICAgIC8vIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QucHVzaChjb250YWN0KVxuICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGNvbnRhY3QuY2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycgfHwgY29udGFjdC5jYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykge1xuICAgICAgICAgIHRoaXMuZ2V0VXNlckNhbGxTZXR0aW5nKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbHBhZEhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBjb250YWN0Lm51bWJlcjtcbiAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNEaWFscGFkSGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGNvbnRhY3QubnVtYmVyO1xuICAgICAgICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IGNvbnRhY3QubmFtZTtcbiAgICAgICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3QuaW1nO1xuICAgICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gY29udGFjdC5udW1iZXI7XG4gICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgfVxuICB9XG4gIH1cbiAgcHJpdmF0ZSByZWdpc3RlckRyYWdFbGVtZW50KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbG1udCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcmFncGFyZW50MScpO1xuICAgICAgaWYgKCFlbG1udCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEcmFnIGVsZW1lbnQgbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHBvczEgPSAwLCBwb3MyID0gMCwgcG9zMyA9IDAsIHBvczQgPSAwO1xuXG4gICAgICBjb25zdCBkcmFnTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBwb3MzID0gZS5jbGllbnRYO1xuICAgICAgICBwb3M0ID0gZS5jbGllbnRZO1xuICAgICAgICBcbiAgICAgICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiBlbGVtZW50RHJhZyhtb3ZlRXZlbnQpO1xuICAgICAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBlbGVtZW50RHJhZyA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcG9zMSA9IHBvczMgLSBlLmNsaWVudFg7XG4gICAgICAgIHBvczIgPSBwb3M0IC0gZS5jbGllbnRZO1xuICAgICAgICBwb3MzID0gZS5jbGllbnRYO1xuICAgICAgICBwb3M0ID0gZS5jbGllbnRZO1xuICAgICAgICBcbiAgICAgICAgZWxtbnQuc3R5bGUudG9wID0gKGVsbW50Lm9mZnNldFRvcCAtIHBvczIpICsgJ3B4JztcbiAgICAgICAgZWxtbnQuc3R5bGUubGVmdCA9IChlbG1udC5vZmZzZXRMZWZ0IC0gcG9zMSkgKyAncHgnO1xuICAgICAgfTtcblxuICAgICAgLy8gQ2hlY2sgZm9yIGhlYWRlciBlbGVtZW50XG4gICAgICBjb25zdCBoZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbG1udC5pZCArICdoZWFkZXInKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaGVhZGVyLm9ubW91c2Vkb3duID0gZHJhZ01vdXNlRG93bjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsbW50Lm9ubW91c2Vkb3duID0gZHJhZ01vdXNlRG93bjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cbiAgfVxuXG4gIGFkZE51bWJlcihudW06IGFueSkge1xuICAgIGlmICggbnVtID09ICcjJyB8fCBudW0gPT0gJyonIHx8bnVtID09ICcrJyB8fCBOdW1iZXIuaXNJbnRlZ2VyKG51bSkpIHtcbiAgICAgIGlmIChudW0gPT0gJyMnKSB7XG4gICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi1oYXNoLS5tcDNgKS5wbGF5KCk7XG4gICAgICB9IGVsc2UgaWYgKG51bSA9PSAnKicpIHtcbiAgICAgICAgbmV3IEF1ZGlvKGAvYXNzZXRzL2RpYWwtdG9uZXMvZHRtZi9kdG1mLXN0YXItLm1wM2ApLnBsYXkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ldyBBdWRpbyhgL2Fzc2V0cy9kaWFsLXRvbmVzL2R0bWYvZHRtZi0ke251bX0tLm1wM2ApLnBsYXkoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kaWFsZWROdW1iZXIgKz0gbnVtO1xuICAgICAgdGhpcy5zaG93SW5wdXRDbGVhckJ0biA9IHRydWU7XG5cbiAgICAgIHRoaXMubnVtYmVyRGlhbGVkLmVtaXQodGhpcy5kaWFsZWROdW1iZXIpO1xuXG4gICAgICB0aGlzLm9uRGlhbElucHV0Q2hhbmdlKHRoaXMuZGlhbGVkTnVtYmVyKVxuICAgICAgLy8gdGhpcy5kaWFsSW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1lbHNlIGlmKG51bSA9PT0gJ3ZvaWNlbWFpbCcpe1xuICAgICAgLy8gdGhpcy5zaG93RGVkaWNhdGVkUG9wdXAgPSB0cnVlO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydleHRlbnNpb24vdm9pY2VtYWlsLycrdGhpcy50b2tlbl0pO1xuICAgIH1cbiAgfVxuICBcbiAgaGlkZURpYWxwYWQoKSB7XG4gICAgdGhpcy5pc0RpYWxwYWRIaWRkZW4gPSB0cnVlO1xuICAgIHRoaXMuY2xvc2VEaWFscGFkRXZlbnQuZW1pdCgpO1xuICAgIHRoaXMuY2xlYXJBbGxEaWFsZWQoKTtcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcbiAgfVxuICBcbiAgb25EaWFsSW5wdXRDaGFuZ2UoaW5wdXRWYWw6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICAvLyBVcGRhdGVkIHJlZ2V4IHRvIGluY2x1ZGUgeCwgWCwgZXh0LiwgRXh0LiwgYW5kICxcbiAgICAgIGNvbnN0IGlzTnVtZXJpY0lucHV0ID0gL15bXFxkXFxzK1xcLV0rJC8udGVzdChpbnB1dFZhbCk7XG4gICAgICBsZXQgbWFpbk51bWJlciA9IGlucHV0VmFsO1xuXG4gICAgICAvLyBDaGVjayBmb3IgZXh0ZW5zaW9uIGluZGljYXRvcnMgYW5kIHNwbGl0IHRoZSBpbnB1dFxuICAgICAgY29uc3QgZXh0TWF0Y2ggPSBpbnB1dFZhbC5tYXRjaCgvKHh8WHxleHRcXC58RXh0XFwufCwpKC4qKS8pO1xuICAgICAgaWYgKGV4dE1hdGNoKSB7XG4gICAgICAgIG1haW5OdW1iZXIgPSBpbnB1dFZhbC5zdWJzdHJpbmcoMCwgZXh0TWF0Y2guaW5kZXgpLnRyaW0oKTtcbiAgICAgICAgdGhpcy5jYWxsRGF0YS5leHROdW0gPSBleHRNYXRjaFsyXS50cmltKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhbml0aXplZE51bSA9IGlzTnVtZXJpY0lucHV0ID8gbWFpbk51bWJlci5yZXBsYWNlKC9bXFxzXFwtXSsvZywgJycpIDogbWFpbk51bWJlcjtcblxuICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IGlzTnVtZXJpY0lucHV0ID8gdGhpcy5zYW5pdGl6ZWROdW0gOiAnJztcbiAgICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSBpbnB1dFZhbC5sZW5ndGggPiAwO1xuXG4gICAgICBpZiAoaXNOdW1lcmljSW5wdXQpIHtcbiAgICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSBuZXcgQXNZb3VUeXBlKCkuaW5wdXQodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IGN1cnJlbnQgbnVtYmVyIHdoZW5ldmVyIGlucHV0IGNoYW5nZXNcbiAgICAgIHRoaXMubnVtYmVyRGlhbGVkLmVtaXQodGhpcy5kaWFsZWROdW1iZXIpO1xuXG4gICAgICBpZiAoaW5wdXRWYWwubGVuZ3RoID4gMikge1xuICAgICAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSB0aGlzLmNvbnRhY3RMaXN0LmZpbHRlcihjb250YWN0ID0+IHtcbiAgICAgICAgICBjb25zdCBmdWxsTmFtZSA9IGAke2NvbnRhY3QuZmlyc3ROYW1lfSAke2NvbnRhY3QubWlkZGxlTmFtZX0gJHtjb250YWN0Lmxhc3ROYW1lfWAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICByZXR1cm4gZnVsbE5hbWUuaW5jbHVkZXModGhpcy5zYW5pdGl6ZWROdW0udG9Mb3dlckNhc2UoKSkgfHwgY29udGFjdC5udW1iZXJzTGlzdC5zb21lKChudW06IGFueSkgPT4gbnVtLm51bWJlci5pbmNsdWRlcyh0aGlzLnNhbml0aXplZE51bSkpO1xuICAgICAgICB9KS5zbGljZSgwLCAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Rmlyc3RMZXR0ZXIobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZSA/IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiAnJztcbiAgfVxuICBjbGVhcklucHV0KCkge1xuICAgIGlmICh0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmRpYWxlZE51bWJlciA9IHRoaXMuZGlhbGVkTnVtYmVyLnNsaWNlKDAsIC0xKTtcbiAgICAgIHRoaXMuc2hvd0lucHV0Q2xlYXJCdG4gPSB0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggIT09IDA7XG5cbiAgICAgIHRoaXMub25EaWFsSW5wdXRDaGFuZ2UodGhpcy5kaWFsZWROdW1iZXIpXG4gICAgfVxuICB9XG4gIGNsZWFyQWxsRGlhbGVkKCkge1xuICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gJyc7XG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSAnJztcbiAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gZmFsc2U7XG4gIH1cbiAgZ2V0Q2FsbGVySWRMaXN0KCkge1xuICAgIHRoaXMuZXh0U2VydmljZS5kaXNwbGF5SUQodGhpcy50b2tlbiB8fCAnJykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgLy90aGlzLmNhbGxlcklkTGlzdCA9IHJlcy5jYWxsZXJJZExpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlID09PSBcIkMyQyBTb2Z0cGhvbmUgTnVtYmVyXCIpO1xuICAgICAgdGhpcy5jYWxsZXJJZExpc3QgPSByZXMuY2FsbGVySWRMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnZvaWNlRmVhdHVyZSA9PT0gdHJ1ZSk7XG4gICAgICAvLyB0aGlzLmNhbGxlcklkTGlzdCA9IHJlcy5jYWxsZXJJZExpc3Q7XG4gICAgICBpZiAodGhpcy5jYWxsZXJJZExpc3QubGVuZ3RoID09IDEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gdGhpcy5jYWxsZXJJZExpc3RbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5jYWxsUHJlZmVyZW5jZSA9PT0gJ2Fsd2F5c0FzaycgfHwgdGhpcy5jYWxsUHJlZmVyZW5jZSA9PT0gJ3NtYXJ0RGlhbGluZycpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9IHRoaXMuY2FsbGVySWRMaXN0LmZpbmQoaXRlbSA9PiAoaXRlbS5udW1iZXIgPT0gdGhpcy5jYWxsUHJlZmVyZW5jZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZ2V0Q29udGFjdExpc3QoKSB7XG4gICAgdGhpcy50d2lsaW9TZXJ2aWNlLmdldENvbnRhY3RMaXN0KCkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwLnJlc3BvbnNlID09ICdTdWNjZXNzJykge1xuICAgICAgICB0aGlzLmNvbnRhY3RMaXN0ID0gcmVzcC5waG9uZUJvb2s7XG4gICAgICB9XG4gICAgfSwgZXJyID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycilcbiAgICB9KVxuICB9XG4gIGdldEZ1bGxOYW1lKGNvbnRhY3Q6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGZ1bGxOYW1lID0gY29udGFjdC5maXJzdE5hbWUgfHwgJyc7XG4gICAgaWYgKGNvbnRhY3QubWlkZGxlTmFtZSkge1xuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubWlkZGxlTmFtZX1gO1xuICAgIH1cbiAgICBpZiAoY29udGFjdC5sYXN0TmFtZSkge1xuICAgICAgZnVsbE5hbWUgKz0gYCAke2NvbnRhY3QubGFzdE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bGxOYW1lLnRyaW0oKTtcbiAgfVxuXG5cbiAgdG9nZ2xlQ2FsbGVySWREaXYoKSB7XG4gICAgdGhpcy5pc0NhbGxlcklkSGlkZGVuID0gIXRoaXMuaXNDYWxsZXJJZEhpZGRlbjtcbiAgfVxuXG4gIG9uQ29udGFjdFNlbGVjdChjb250YWN0OiBhbnkpIHtcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IGNvbnRhY3QubnVtYmVyc0xpc3RbMF0ubnVtYmVyO1xuICAgIHRoaXMuY2FsbERhdGEubmFtZSA9IHRoaXMuZ2V0RnVsbE5hbWUoY29udGFjdCk7XG4gICAgdGhpcy5jYWxsRGF0YS5pbWcgPSBjb250YWN0LmltYWdlIHx8ICdhc3NldHMvaW1hZ2VzL3VzZXIuanBnJztcbiAgICB0aGlzLm9uRGlhbElucHV0Q2hhbmdlKHRoaXMuZGlhbGVkTnVtYmVyKTtcbiAgICB0aGlzLmZpbHRlcmVkQ29udGFjdExpc3QgPSBbXTtcbiAgfVxuXG4gIGVuZENhbGwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUubG9nKCdFbmRpbmcgY2FsbCcpO1xuICAgICAgY29uc29sZS5sb2coJ2RkOCcpXG4gICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdCA9IFtdO1xuICAgICAgXG4gICAgICAvLyBSZXNldCBjYWxsIGRhdGFcbiAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gICAgICAgIHBob25lOiAnJyxcbiAgICAgICAgbmFtZTogJycsXG4gICAgICAgIGltZzogJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnLFxuICAgICAgICBpc0luY29taW5nQ2FsbDogZmFsc2UsXG4gICAgICAgIGRpYWw6IGZhbHNlLFxuICAgICAgICBkaXNwbGF5TnVtOiAnJyxcbiAgICAgICAgZXh0TnVtOiAnJ1xuICAgICAgfTtcbiAgICAgIFxuICAgICAgLy8gUmVzZXQgZGlhbGVkIG51bWJlclxuICAgICAgdGhpcy5kaWFsZWROdW1iZXIgPSAnJztcbiAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gJyc7XG4gICAgICBcbiAgICAgIC8vIEVtaXQgZW5kIGNhbGwgZXZlbnRcbiAgICAgIHRoaXMuZW5kQ2FsbEV2ZW50LmVtaXQoKTtcbiAgICAgIGNvbnNvbGUubG9nKCdDYWxsIGVuZGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGVuZENhbGw6JywgZXJyb3IpO1xuICAgICAgLy8gRXZlbiBpZiB0aGVyZSdzIGFuIGVycm9yLCB0cnkgdG8gcmVzZXQgdGhlIHN0YXRlXG4gICAgICBjb25zb2xlLmxvZygnZGQ5JylcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5jYWxsRGF0YSA9IHtcbiAgICAgICAgcGhvbmU6ICcnLFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgaW1nOiAnYXNzZXRzL2ltYWdlcy91c2VyLmpwZycsXG4gICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgICAgICAgZGlhbDogZmFsc2UsXG4gICAgICAgIGRpc3BsYXlOdW06ICcnLFxuICAgICAgICBleHROdW06ICcnXG4gICAgICB9O1xuICAgICAgdGhpcy5lbmRDYWxsRXZlbnQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcbiAgLy8gICB0cnkge1xuICAvLyAgICAgY29uc29sZS5sb2coJ0luaXRpYXRpbmcgY2FsbCB3aXRoIG51bWJlcjonLCB0aGlzLmRpYWxlZE51bWJlcik7XG4gICAgICBcbiAgLy8gICAgIGlmICghdGhpcy5kaWFsZWROdW1iZXIgJiYgdGhpcy5sYXN0RGlhbGVkKSB7XG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdVc2luZyBsYXN0IGRpYWxlZCBudW1iZXI6JywgdGhpcy5sYXN0RGlhbGVkLm51bWJlcik7XG4gIC8vICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gdGhpcy5sYXN0RGlhbGVkLm51bWJlcjtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgY29uc3QgaXNJbnZhbGlkID0gYXdhaXQgdGhpcy5pc0ludmFsaWROdW1iZXIoKTtcbiAgLy8gICAgIGlmIChpc0ludmFsaWQpIHtcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBudW1iZXIgZm9ybWF0Jyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgdGhpcy5zYXZlTGFzdERpYWxlZCgpO1xuICAvLyAgICAgdGhpcy5pc1NhdmVkQ29udGFjdERpYWxsZWQoKTtcbiAgICAgIFxuICAvLyAgICAgLy8gQ2hlY2sgcGF5bWVudCBzdGF0dXNcbiAgLy8gICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PT0gJ3RydWUnO1xuICAvLyAgICAgaWYgKHRoaXMuaXNQYXltZW50RHVlKSB7XG4gIC8vICAgICAgIGNvbnNvbGUud2FybignUGF5bWVudCBpcyBkdWUnKTtcbiAgLy8gICAgICAgc3dhbCgnV2FybmluZycsICdQbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGF5bWVudCBpcyBkdWUuIFRvIGNvbnRpbnVlIHVzaW5nIG91ciBzZXJ2aWNlcywga2luZGx5IHN1YnNjcmliZSB0byBhdm9pZCBpbnRlcnJ1cHRpb25zLicpO1xuICAvLyAgICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgICB9XG5cbiAgLy8gICAgIC8vIENoZWNrIGlmIGRpYWxpbmcgb3duIG51bWJlclxuICAvLyAgICAgaWYgKHRoaXMuc2FuaXRpemVkTnVtID09PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHdpbGlvTnVtYmVyJykpIHtcbiAgLy8gICAgICAgY29uc29sZS5lcnJvcignQXR0ZW1wdGVkIHRvIGRpYWwgb3duIG51bWJlcicpO1xuICAvLyAgICAgICBzd2FsKCdFcnJvcicsICdZb3UgY2Fubm90IGRpYWwgeW91ciBvd24gbnVtYmVyJyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgLy8gQ2hlY2sgbWljcm9waG9uZSBwZXJtaXNzaW9uc1xuICAvLyAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAvLyAgICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XG4gIC8vICAgICAgIGNvbnNvbGUud2FybignTWljcm9waG9uZSBwZXJtaXNzaW9uIG5vdCBncmFudGVkJyk7XG4gIC8vICAgICAgIGF3YWl0IHRoaXMuYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTtcbiAgLy8gICAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgICAgfVxuXG4gIC8vICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdObyBjYWxsZXIgSUQgc2VsZWN0ZWQnKTtcbiAgLy8gICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IHRydWU7XG4gIC8vICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnUGxlYXNlIHNlbGVjdCBhIEMyQyBudW1iZXIgdG8gY2FsbCBmcm9tJyk7XG4gIC8vICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZTtcbiAgLy8gICAgICAgfSwgMzAwMCk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgY29uc29sZS5sb2coJ0dldHRpbmcgbnVtYmVyIHdpdGggY291bnRyeSBjb2RlLi4uJyk7XG4gIC8vICAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSAnJztcbiAgICAgIFxuICAvLyAgICAgdHJ5IHtcbiAgLy8gICAgICAgYXdhaXQgdGhpcy5nZXRUb051bWJlcih0aGlzLnNhbml0aXplZE51bSk7XG4gIC8vICAgICB9IGNhdGNoIChlcnJvcikge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBnZXR0aW5nIG51bWJlciB3aXRoIGNvdW50cnkgY29kZTonLCBlcnJvcik7XG4gIC8vICAgICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnRXJyb3IgcHJvY2Vzc2luZyBudW1iZXIuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgaWYgKHRoaXMudGVybWluYXRlQ2FsbCkge1xuICAvLyAgICAgICBjb25zb2xlLmxvZygnQ2FsbCB0ZXJtaW5hdGVkIGJ5IHVzZXInKTtcbiAgLy8gICAgICAgdGhpcy50ZXJtaW5hdGVDYWxsID0gZmFsc2U7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgLy8gUHJlcGFyZSBjYWxsIGRhdGFcbiAgLy8gICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gIC8vICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gIC8vICAgICAgIHBob25lOiB0aGlzLnNhbml0aXplZE51bSxcbiAgLy8gICAgICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxuICAvLyAgICAgICBkaWFsOiB0cnVlLFxuICAvLyAgICAgICBmcm9tOiB0aGlzLmlzU21hcnREaWFsQ2FsbCA/IHRoaXMuY2FsbERhdGEuZnJvbSA6IHRoaXMuc2VsZWN0ZWRDYWxsZXJJZC5udW1iZXIsXG4gIC8vICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIC8vICAgICB9O1xuXG4gIC8vICAgICBjb25zb2xlLmxvZygnSW5pdGlhdGluZyBjYWxsIHdpdGggZGF0YTonLCB0aGlzLmNhbGxEYXRhKTtcbiAgLy8gICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gIC8vICAgICB0aGlzLmNhbGxJbml0aWF0ZWQuZW1pdCh7IC4uLnRoaXMuY2FsbERhdGEgfSk7XG4gICAgICBcbiAgLy8gICAgIHJldHVybiB0cnVlO1xuICAgICAgXG4gIC8vICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgLy8gICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGluaXRpYXRlQ2FsbDonLCBlcnJvcik7XG4gIC8vICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ0ZhaWxlZCB0byBpbml0aWF0ZSBjYWxsLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAvLyAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gZmFsc2U7XG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyAgICAgLy90aGlzLmNsZWFyQWxsRGlhbGVkKCk7XG4gIC8vICAgLy8gfSBlbHNlIHtcbiAgLy8gICAvLyAgIHN3YWwoJ0Vycm9yJywgJ1RyaWFsIHBlcmlvZCBpcyBvdmVyLiBQbGVhc2Ugc2V0dXAgcGF5bWVudCBtZXRob2QgdG8gY29udGludWUgc2VydmljZXMnKVxuICAvLyAgIC8vIH1cbiAgLy8gfVxuXG5cbiAgLy8gIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcbiAgLy8gICBpZiAoIXRoaXMuZGlhbGVkTnVtYmVyICYmIHRoaXMubGFzdERpYWxlZCkge1xuICAvLyAgICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmxhc3REaWFsZWQubnVtYmVyO1xuICAvLyAgIH1cbiAgLy8gICBjb25zdCBpc0ludmFsaWQgPSBhd2FpdCB0aGlzLmlzSW52YWxpZE51bWJlcigpO1xuICAvLyAgIGlmIChpc0ludmFsaWQpIHtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vICAgdGhpcy5zYXZlTGFzdERpYWxlZCgpO1xuICAvLyAgIHRoaXMuaXNTYXZlZENvbnRhY3REaWFsbGVkKCk7XG4gIC8vICAgLy9sZXQgaXNDYWxsZXJJZFNldCA9IGF3YWl0IHRoaXMuaXNDYWxsZXJJZFNldCgpO1xuICAvLyAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgIGlmICh0aGlzLmlzUGF5bWVudER1ZSkge1xuICAvLyAgICAgc3dhbCgnV2FybmluZycsICdQbGVhc2Ugbm90ZSB0aGF0IHlvdXIgcGF5bWVudCBpcyBkdWUsIFRvIGNvbnRpbnVlIG9uIHlvdXIgc2VydmljZXMga2luZGx5IHN1YnNjcmliZSB0byB1c2UgdW5pbnRlcnJ1cHRlZCBzZXJ2aWNlcy4nKTtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9XG4gIC8vICAgdGhpcy5pc1RyaWFsUGVyaW9kT3ZlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0cmlhbE92ZXInKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgIC8vIGlmICghdGhpcy5pc1RyaWFsUGVyaW9kT3Zlcikge1xuICAvLyAgICAgaWYgKHRoaXMuc2FuaXRpemVkTnVtID09IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0d2lsaW9OdW1iZXInKSkge1xuICAvLyAgICAgICBzd2FsKCdFcnJvcicsICdZb3UgY2FuIG5vdCBkaWFsIHRoaXMgbnVtYmVyJyk7XG4gIC8vICAgICAgIHJldHVybjtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAvLyAgICAgaWYgKGhhc1Blcm1pc3Npb24pIHtcbiAgLy8gICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCkge1xuICAvLyAgICAgICAgIC8vY2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBiaW5kZWQgZnJvbSBwcmV2aW91cyBjYWxsXG4gIC8vICAgICAgICAgdGhpcy5jYWxsRGF0YS5kaXNwbGF5TnVtID0gJyc7XG4gIC8vICAgICAgICAgLy8gZ2V0IG51bWJlciB0byBiZSBkaWFsbGVkIGZyb20gYmFja2VuZFxuICAvLyAgICAgICAgIGF3YWl0IHRoaXMuZ2V0VG9OdW1iZXIodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAvLyAgICAgICAgIGlmICh0aGlzLnRlcm1pbmF0ZUNhbGwpIHtcbiAgLy8gICAgICAgICAgIHRoaXMudGVybWluYXRlQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgcmV0dXJuO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgICB0aGlzLmNhbGxEYXRhLnBob25lID0gdGhpcy5zYW5pdGl6ZWROdW07XG4gIC8vICAgICAgICAgdGhpcy5jYWxsRGF0YS5pc0luY29taW5nQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgIHRoaXMuY2FsbERhdGEuZGlhbCA9IHRydWU7XG4gIC8vICAgICAgICAgaWYgKCF0aGlzLmlzU21hcnREaWFsQ2FsbCkge1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcjtcbiAgLy8gICAgICAgICB9XG4gICAgICAgICAgXG4gIC8vICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgICAgICB0aGlzLmNhbGxEYXRhID0ge1xuICAvLyAgICAgICAgICAgICAgIC4uLnRoaXMuY2FsbERhdGEsXG4gIC8vICAgICAgICAgICAgICAgcGhvbmU6IHRoaXMuc2FuaXRpemVkTnVtLFxuICAvLyAgICAgICAgICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgLy8gICAgICAgICAgICAgICBkaWFsOiB0cnVlLFxuICAvLyAgICAgICAgICAgICAgIGZyb206IHRoaXMuaXNTbWFydERpYWxDYWxsID8gdGhpcy5jYWxsRGF0YS5mcm9tIDogdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcixcbiAgLy8gICAgICAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAvLyAgICAgICAgICAgICB9O1xuXG4gIC8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbml0aWF0aW5nIGNhbGwgd2l0aCBkYXRhOicsIHRoaXMuY2FsbERhdGEpO1xuICAvLyAgICAgICAgICAgICB0aGlzLmlzQ2FsbEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAvLyAgICAgICAgICAgICB0aGlzLmNhbGxJbml0aWF0ZWQuZW1pdCh7IC4uLnRoaXMuY2FsbERhdGEgfSk7XG4gIC8vICAgICAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgdGhpcy5zaGFrZURlZGljYXRlZEJ0biA9IHRydWU7XG4gIC8vICAgICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdTZWxlY3QgYSBDMkMgbnVtYmVyIHRvIGNhbGwnKTtcbiAgLy8gICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgLy8gICAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZTtcbiAgLy8gICAgICAgICB9LCAzMDAwKTtcbiAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgLy90aGlzLmNhbGxpbmdPcGVuRXZlbnQuZW1pdCh7IHBob25lOiB0aGlzLmRpYWxlZE51bWJlciB9KTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGF3YWl0IHRoaXMuYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIC8vdGhpcy5jbGVhckFsbERpYWxlZCgpO1xuICAvLyAgIC8vIH0gZWxzZSB7XG4gIC8vICAgLy8gICBzd2FsKCdFcnJvcicsICdUcmlhbCBwZXJpb2QgaXMgb3Zlci4gUGxlYXNlIHNldHVwIHBheW1lbnQgbWV0aG9kIHRvIGNvbnRpbnVlIHNlcnZpY2VzJylcbiAgLy8gICAvLyB9XG4gIC8vIH1cblxuXG4gIC8vIGFzeW5jIGluaXRpYXRlQ2FsbCgpIHtcbiAgLy8gICB0cnl7XG4gIC8vICAgICBpZiAoIXRoaXMuZGlhbGVkTnVtYmVyICYmIHRoaXMubGFzdERpYWxlZCkge1xuICAvLyAgICAgICB0aGlzLnNhbml0aXplZE51bSA9IHRoaXMubGFzdERpYWxlZC5udW1iZXI7XG4gIC8vICAgICB9XG5cbiAgLy8gICAgIGNvbnN0IGlzSW52YWxpZCA9IGF3YWl0IHRoaXMuaXNJbnZhbGlkTnVtYmVyKCk7XG4gIC8vICAgICBpZiAoaXNJbnZhbGlkKSB7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMuc2F2ZUxhc3REaWFsZWQoKTtcbiAgLy8gICAgIHRoaXMuaXNTYXZlZENvbnRhY3REaWFsbGVkKCk7XG4gIC8vICAgICAvL2xldCBpc0NhbGxlcklkU2V0ID0gYXdhaXQgdGhpcy5pc0NhbGxlcklkU2V0KCk7XG5cbiAgLy8gICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgICAgaWYgKHRoaXMuaXNQYXltZW50RHVlKSB7XG4gIC8vICAgICAgIHN3YWwoJ1dhcm5pbmcnLCAnUGxlYXNlIG5vdGUgdGhhdCB5b3VyIHBheW1lbnQgaXMgZHVlLCBUbyBjb250aW51ZSBvbiB5b3VyIHNlcnZpY2VzIGtpbmRseSBzdWJzY3JpYmUgdG8gdXNlIHVuaW50ZXJydXB0ZWQgc2VydmljZXMuJyk7XG4gIC8vICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgIH1cblxuICAvLyAgICAgdGhpcy5pc1RyaWFsUGVyaW9kT3ZlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0cmlhbE92ZXInKSA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAvLyAgICAgLy8gaWYgKCF0aGlzLmlzVHJpYWxQZXJpb2RPdmVyKSB7XG4gIC8vICAgICAgIGlmICh0aGlzLnNhbml0aXplZE51bSA9PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHdpbGlvTnVtYmVyJykpIHtcbiAgLy8gICAgICAgICBzd2FsKCdFcnJvcicsICdZb3UgY2FuIG5vdCBkaWFsIHRoaXMgbnVtYmVyJyk7XG4gIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAvLyAgICAgICBpZiAoaGFzUGVybWlzc2lvbikge1xuICAvLyAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQpIHtcbiAgLy8gICAgICAgICAgIC8vY2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBiaW5kZWQgZnJvbSBwcmV2aW91cyBjYWxsXG4gIC8vICAgICAgICAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSAnJztcbiAgLy8gICAgICAgICAgIC8vIGdldCBudW1iZXIgdG8gYmUgZGlhbGxlZCBmcm9tIGJhY2tlbmRcbiAgLy8gICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0VG9OdW1iZXIodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAvLyAgICAgICAgICAgaWYgKHRoaXMudGVybWluYXRlQ2FsbCkge1xuICAvLyAgICAgICAgICAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcbiAgLy8gICAgICAgICAgICAgcmV0dXJuO1xuICAvLyAgICAgICAgICAgfVxuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IHRoaXMuc2FuaXRpemVkTnVtO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5pc0luY29taW5nQ2FsbCA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5kaWFsID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgIGlmICghdGhpcy5pc1NtYXJ0RGlhbENhbGwpIHtcbiAgLy8gICAgICAgICAgICAgdGhpcy5jYWxsRGF0YS5mcm9tID0gdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcjtcbiAgLy8gICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAvLyAgICAgICAgICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgICAgICAgIHRoaXMuY2FsbERhdGEgPSB7XG4gIC8vICAgICAgICAgICAgICAgICAuLi50aGlzLmNhbGxEYXRhLFxuICAvLyAgICAgICAgICAgICAgICAgcGhvbmU6IHRoaXMuc2FuaXRpemVkTnVtLFxuICAvLyAgICAgICAgICAgICAgICAgaXNJbmNvbWluZ0NhbGw6IGZhbHNlLFxuICAvLyAgICAgICAgICAgICAgICAgZGlhbDogdHJ1ZSxcbiAgLy8gICAgICAgICAgICAgICAgIGZyb206IHRoaXMuaXNTbWFydERpYWxDYWxsID8gdGhpcy5jYWxsRGF0YS5mcm9tIDogdGhpcy5zZWxlY3RlZENhbGxlcklkLm51bWJlcixcbiAgLy8gICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpXG4gIC8vICAgICAgICAgICAgICAgfTtcblxuICAvLyAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJbml0aWF0aW5nIGNhbGwgd2l0aCBkYXRhOicsIHRoaXMuY2FsbERhdGEpO1xuICAvLyAgICAgICAgICAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gIC8vICAgICAgICAgICAgICAgdGhpcy5jYWxsSW5pdGlhdGVkLmVtaXQoeyAuLi50aGlzLmNhbGxEYXRhIH0pO1xuICAvLyAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdTZWxlY3QgYSBDMkMgbnVtYmVyIHRvIGNhbGwnKTtcbiAgLy8gICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAvLyAgICAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB9LCAzMDAwKTtcbiAgLy8gICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICAgLy90aGlzLmNhbGxpbmdPcGVuRXZlbnQuZW1pdCh7IHBob25lOiB0aGlzLmRpYWxlZE51bWJlciB9KTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICBhd2FpdCB0aGlzLmFza0Zvck1pY3JvcGhvbmVQZXJtaXNzaW9uKCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgLy90aGlzLmNsZWFyQWxsRGlhbGVkKCk7XG4gIC8vICAgICAvLyB9IGVsc2Uge1xuICAvLyAgICAgLy8gICBzd2FsKCdFcnJvcicsICdUcmlhbCBwZXJpb2QgaXMgb3Zlci4gUGxlYXNlIHNldHVwIHBheW1lbnQgbWV0aG9kIHRvIGNvbnRpbnVlIHNlcnZpY2VzJylcbiAgLy8gICAgIC8vIH1cbiAgLy8gICB9Y2F0Y2goZSl7XG4gIC8vICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBpbml0aWF0ZUNhbGw6JywgZSk7XG5cbiAgLy8gICAgIHRoaXMuc2hvd0RpYWxBbGVydCgnRmFpbGVkIHRvIGluaXRpYXRlIGNhbGwuIFBsZWFzZSB0cnkgYWdhaW4uJyk7XG5cbiAgLy8gICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyB9XG5cblxuICBhc3luYyBpbml0aWF0ZUNhbGwoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5kaWFsZWROdW1iZXIgJiYgdGhpcy5sYXN0RGlhbGVkKSB7XG4gICAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gdGhpcy5sYXN0RGlhbGVkLm51bWJlcjtcbiAgICAgIH1cbiAgXG4gICAgICBjb25zdCBpc0ludmFsaWQgPSBhd2FpdCB0aGlzLmlzSW52YWxpZE51bWJlcigpO1xuICAgICAgaWYgKGlzSW52YWxpZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmVMYXN0RGlhbGVkKCk7XG4gICAgICB0aGlzLmlzU2F2ZWRDb250YWN0RGlhbGxlZCgpO1xuICBcbiAgICAgIHRoaXMuaXNQYXltZW50RHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3BheW1lbnREdWUnKSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIGlmICh0aGlzLmlzUGF5bWVudER1ZSkge1xuICAgICAgICBzd2FsKCdXYXJuaW5nJywgJ1BsZWFzZSBub3RlIHRoYXQgeW91ciBwYXltZW50IGlzIGR1ZSwgVG8gY29udGludWUgb24geW91ciBzZXJ2aWNlcyBraW5kbHkgc3Vic2NyaWJlIHRvIHVzZSB1bmludGVycnVwdGVkIHNlcnZpY2VzLicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgdGhpcy5pc1RyaWFsUGVyaW9kT3ZlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0cmlhbE92ZXInKSA9PT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIFxuICAgICAgaWYgKHRoaXMuc2FuaXRpemVkTnVtID09PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHdpbGlvTnVtYmVyJykpIHtcbiAgICAgICAgc3dhbCgnRXJyb3InLCAnWW91IGNhbiBub3QgZGlhbCB0aGlzIG51bWJlcicpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgY29uc3QgaGFzUGVybWlzc2lvbiA9IGF3YWl0IHRoaXMuY2hlY2tNaWNyb3Bob25lUGVybWlzc2lvbigpO1xuICAgICAgaWYgKCFoYXNQZXJtaXNzaW9uKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXNrRm9yTWljcm9waG9uZVBlcm1pc3Npb24oKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICBcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENhbGxlcklkKSB7XG4gICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ1NlbGVjdCBhIEMyQyBudW1iZXIgdG8gY2FsbCcpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XG4gICAgICAgIH0sIDMwMDApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgLy8gQ2xlYXIgZGlzcGxheU51bSBpZiB2YWx1ZSBpcyBib3VuZCBmcm9tIHByZXZpb3VzIGNhbGxcbiAgICAgIHRoaXMuY2FsbERhdGEuZGlzcGxheU51bSA9ICcnO1xuICAgICAgXG4gICAgICAvLyBHZXQgbnVtYmVyIHRvIGJlIGRpYWxlZCBmcm9tIGJhY2tlbmRcbiAgICAgIGF3YWl0IHRoaXMuZ2V0VG9OdW1iZXIodGhpcy5zYW5pdGl6ZWROdW0pO1xuICAgICAgaWYgKHRoaXMudGVybWluYXRlQ2FsbCkge1xuICAgICAgICB0aGlzLnRlcm1pbmF0ZUNhbGwgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICBcbiAgICAgIC8vIFVwZGF0ZSBjYWxsIGRhdGEgaW4gYSBzaW5nbGUgb3BlcmF0aW9uXG4gICAgICB0aGlzLmNhbGxEYXRhID0ge1xuICAgICAgICAuLi50aGlzLmNhbGxEYXRhLFxuICAgICAgICBwaG9uZTogdGhpcy5zYW5pdGl6ZWROdW0sXG4gICAgICAgIGlzSW5jb21pbmdDYWxsOiBmYWxzZSxcbiAgICAgICAgZGlhbDogdHJ1ZSxcbiAgICAgICAgZnJvbTogdGhpcy5pc1NtYXJ0RGlhbENhbGwgPyB0aGlzLmNhbGxEYXRhLmZyb20gOiB0aGlzLnNlbGVjdGVkQ2FsbGVySWQubnVtYmVyLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfTtcbiAgXG4gICAgICAvLyBjb25zb2xlLmxvZygnSW5pdGlhdGluZyBjYWxsIHdpdGggZGF0YTonLCB0aGlzLmNhbGxEYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKCdkZDEwJylcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICB0aGlzLmNhbGxJbml0aWF0ZWQuZW1pdCh7IC4uLnRoaXMuY2FsbERhdGEgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgaW4gaW5pdGlhdGVDYWxsOicsIGUpO1xuICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdGYWlsZWQgdG8gaW5pdGlhdGUgY2FsbC4gUGxlYXNlIHRyeSBhZ2Fpbi4nKTtcbiAgICAgIGNvbnNvbGUubG9nKCdkZDExJylcbiAgICAgIHRoaXMuaXNDYWxsSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGlzSW52YWxpZE51bWJlcigpIHtcbiAgICB0cnkge1xuICAgICAgaWYodGhpcy5zYW5pdGl6ZWROdW0gPT0gJycpe1xuICAgICAgICB0aGlzLnNob3dEaWFsQWxlcnQoJ0ludmFsaWQgTnVtYmVyJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsaWROdW1iZXJQYXR0ZXJuID0gL15bK1xcZFxccygpLV0qJC87IC8vIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBtYXRjaCB2YWxpZCBjaGFyYWN0ZXJzXG4gICAgICBjb25zdCBwaG9uZU51bWJlciA9IHRoaXMuc2FuaXRpemVkTnVtO1xuICAgICAgaWYgKCF2YWxpZE51bWJlclBhdHRlcm4udGVzdChwaG9uZU51bWJlcikpIHtcbiAgICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdJbnZhbGlkIE51bWJlcicpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5zaG93RGlhbEFsZXJ0KCdJbnZhbGlkIE51bWJlcicpO1xuICAgICAgcmV0dXJuIHRydWU7IC8vIFJldHVybiB0cnVlIGlmIGFuIGVycm9yIG9jY3VycmVkLCBtZWFuaW5nIHRoZSBudW1iZXIgaXMgaW52YWxpZFxuICAgIH1cbiAgfVxuICBcbiAgc2F2ZUxhc3REaWFsZWQoKSB7XG4gICAgY29uc3QgY29udGFjdCA9IHRoaXMuZmlsdGVyZWRDb250YWN0TGlzdC5maW5kKChjOiBhbnkpID0+IGMubnVtYmVyc0xpc3Quc29tZSgobjogYW55KSA9PiBuLm51bWJlciA9PT0gdGhpcy5kaWFsZWROdW1iZXIpKTtcbiAgICBpZiAoY29udGFjdCkge1xuICAgICAgdGhpcy5sYXN0RGlhbGVkID0ge1xuICAgICAgICBuYW1lOiBjb250YWN0Lm5hbWUsXG4gICAgICAgIGltYWdlOiBjb250YWN0LmltYWdlLFxuICAgICAgICBudW1iZXI6IHRoaXMuZGlhbGVkTnVtYmVyXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZih0aGlzLmRpYWxlZE51bWJlcil7XG4gICAgICAgIHRoaXMubGFzdERpYWxlZCA9IHsgbnVtYmVyOiB0aGlzLmRpYWxlZE51bWJlciB9O1xuICAgICAgfVxuICAgICAgXG4gICAgfVxuICB9XG4gIGlzU2F2ZWRDb250YWN0RGlhbGxlZCgpe1xuICAgIGxldCBwaG9uZU51bSA9IHRoaXMuc2FuaXRpemVkTnVtLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIGxldCBjb250YWN0ID0gIHRoaXMuY29udGFjdExpc3QuZmlsdGVyKChjb250YWN0OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBjb250YWN0Lm51bWJlcnNMaXN0LnNvbWUoKG51bTogYW55KSA9PiBudW0ubnVtYmVyID09PSBwaG9uZU51bSlcbiAgICB9KTtcbiAgICBpZihjb250YWN0Lmxlbmd0aCl7XG4gICAgICB0aGlzLmNhbGxEYXRhLm5hbWUgPSBgJHtjb250YWN0WzBdLmZpcnN0TmFtZX0gJHtjb250YWN0WzBdLm1pZGRsZU5hbWV9ICR7Y29udGFjdFswXS5sYXN0TmFtZX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmNhbGxEYXRhLmltZyA9IGNvbnRhY3RbMF0uaW1hZ2UgfHwgJ2Fzc2V0cy9pbWFnZXMvdXNlci5qcGcnO1xuICAgICAgdGhpcy5jYWxsRGF0YS5waG9uZSA9IHRoaXMuc2FuaXRpemVkTnVtO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHNob3dEaWFsQWxlcnQobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWFsQWxlcnQgPSB7XG4gICAgICBtc2c6IG1lc3NhZ2UsXG4gICAgICBzaG93OiB0cnVlXG4gICAgfTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGlhbEFsZXJ0LnNob3cgPSBmYWxzZTtcbiAgICB9LCAzMDAwKTtcbiAgfVxuICBhc3luYyBpc0NhbGxlcklkU2V0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0a24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZXh0X3Rva2VuJyk7XG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHRoaXMuZXh0U2VydmljZS5mZXRjaENhbGxlcklkKHRrbiB8fCAnJykudG9Qcm9taXNlKCk7XG4gICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RyaWFsT3ZlcicsIHJlcy50cmlhbE92ZXIpO1xuICAgICAgICB0aGlzLnR3aWxpb1NlcnZpY2UuaXNUcmlhbE92ZXIubmV4dChyZXMudHJpYWxPdmVyKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3BheW1lbnREdWUnLCByZXMucGF5bWVudER1ZSk7XG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZS5pc1BheW1lbnREdWUubmV4dChyZXMucGF5bWVudER1ZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzLmNhbGxlcmlkKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYWxsZXJJRCcsIHJlcy5jYWxsZXJpZCk7XG5cbiAgICAgICAgdGhpcy5leHRTZXJ2aWNlLmNoYW5nZU1lc3NhZ2UocmVzLmNhbGxlcmlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYWxsZXJJRCcsICdOb3Qgc2V0Jyk7XG4gICAgICAgIHRoaXMuZXh0U2VydmljZS5jaGFuZ2VNZXNzYWdlKCdOb3Qgc2V0Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NhbGxlcklEJykgIT09ICdOb3Qgc2V0Jyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGFzeW5jIGNoZWNrTWljcm9waG9uZVBlcm1pc3Npb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgYXVkaW86IHRydWUgfSk7XG4gICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICgoZXJyb3IgYXMgYW55KS5uYW1lID09PSAnTm90QWxsb3dlZEVycm9yJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIGFza0Zvck1pY3JvcGhvbmVQZXJtaXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pO1xuICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignVXNlciBkZW5pZWQgbWljcm9waG9uZSBwZXJtaXNzaW9uOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbiAgLy8gYmVsb3cgZnVuY3Rpb24gaXMgdG8gZ2V0IHRoZSBjb3VudHJ5IGNvZGUgd2l0aCBudW1iZXIgZnJvbSBzZXJ2ZXIgXG4gIGFzeW5jIGdldFRvTnVtYmVyKGRpYWxlZE51bWJlcjogc3RyaW5nKSB7XG4gICAgXG4gICAgICBpZiAoZGlhbGVkTnVtYmVyWzBdICE9PSAnKycpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBjYXNlIHdoZW4gdXNlciBnZW9sb2NhdGlvbiBkaWFsIGNvZGUgaXMgb25cbiAgICAgICAgbGV0IGlwQWRkcmVzczogYW55ID0gYXdhaXQgdGhpcy5pcFNlcnZpY2UuZ2V0SXBBZGRyZXNzSW5mbygpLnRvUHJvbWlzZSgpO1xuICAgICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IHRoaXMudHdpbGlvU2VydmljZS5nZXRUb051bWJlcihkaWFsZWROdW1iZXIsaXBBZGRyZXNzLmFkZHJlc3MuY291bnRyeUNvZGUpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAocmVzLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICB0aGlzLnRvYXN0VGltZW91dCA9IHJlcy50aW1lSW50ZXJ2YWwgKiAxMDAwO1xuICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd051bWJlclRvYXN0KHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICBpc0FsZXJ0RW5hYmxlKCkge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXNBbGVydEVuYWJsZScpO1xuICB9XG4gIGFzeW5jIHNob3dOdW1iZXJUb2FzdChkYXRhOiBhbnkpIHtcbiAgICBjb25zdCBpc0FsZXJ0T24gPSAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2lzQ291bnRyeUNvZGVUb2FzdE9uJykpO1xuICAgIGlmIChpc0FsZXJ0T24gPT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FsbE51bWJlclRvYXN0Lm51bWJlciA9IGRhdGEudG9OdW1iZXI7XG4gICAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtID0gZGF0YS5kaXNwbGF5TnVtYmVyO1xuICAgIH1cbiAgICBcbiAgICBcbiAgICB0aGlzLmNhbGxEYXRhLmRpc3BsYXlOdW0gPSBkYXRhLmRpc3BsYXlOdW1iZXI7XG4gICAgLy90aGlzLmNhbGxEYXRhLnBob25lID0gZGF0YS50b051bWJlcjtcbiAgICBhd2FpdCB0aGlzLmRlbGF5KHRoaXMudG9hc3RUaW1lb3V0KTtcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IGRhdGEudG9OdW1iZXI7XG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSBkYXRhLnRvTnVtYmVyO1xuICAgIHRoaXMuY2FsbE51bWJlclRvYXN0LnNob3cgPSBmYWxzZTtcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5udW1iZXIgPSAnJztcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5kaXNwbGF5TnVtID0gJyc7XG4gIH1cbiAgZGVsYXkobXM6IG51bWJlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuICBpc01pbmltaXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBvbk1pbmltaXNlKGlzTWluaW1pc2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc01pbmltaXNlZCA9IGlzTWluaW1pc2VkO1xuICAgIHRoaXMubWluaW1pc2VFdmVudC5lbWl0KGlzTWluaW1pc2VkKTtcbiAgfVxuICBoYW5kbGVOdW1iZXJQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhIHx8ICh3aW5kb3cgYXMgYW55KS5jbGlwYm9hcmREYXRhO1xuICAgIGNvbnN0IHBhc3RlZERhdGEgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcblxuICAgIC8vIExvZyB0aGUgcGFzdGVkIGNvbnRlbnQgdG8gdGhlIGNvbnNvbGVcbiAgICBpZihwYXN0ZWREYXRhKXtcbiAgICAgIHRoaXMuZGlhbGVkTnVtYmVyID0gcGFzdGVkRGF0YTtcbiAgICAgIHRoaXMuc2FuaXRpemVkTnVtID0gcGFzdGVkRGF0YTtcbiAgICB9XG4gICAgXG4gIH1cbiAgb25FbnRlcihudW06c3RyaW5nKSB7XG4gICAgLy8gY29uc29sZS5sb2cobnVtLCAnbnVtYmVyIGZuJylcbiAgICB0aGlzLmRpYWxlZE51bWJlciA9IHRoaXMuZGlhbGVkTnVtYmVyICtudW07XG4gICAgdGhpcy5zYW5pdGl6ZWROdW0gPSB0aGlzLmRpYWxlZE51bWJlcjtcbiAgICB0aGlzLnNob3dJbnB1dENsZWFyQnRuID0gdHJ1ZTtcbiAgICB0aGlzLm51bWJlckRpYWxlZC5lbWl0KHRoaXMuZGlhbGVkTnVtYmVyKTtcbiAgfVxuICBcbiAgZ2V0VXNlckNhbGxTZXR0aW5nKCkge1xuICAgIGNvbnN0IHRrbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdleHRfdG9rZW4nKTtcbiAgICB0aGlzLmV4dFNlcnZpY2UuZmV0Y2hDYWxsZXJJZCh0a24gfHwgJycpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcC5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgIC8vdGhpcy5jYWxsUHJlZmVybmNlID0gcmVzcC51c2VyU2V0dGluZztcbiAgICAgICAgdGhpcy5jYWxsUHJlZmVyZW5jZSA9IHJlc3AuY2FsbGVyaWQ7XG4gICAgICAgIHRoaXMuZ2V0Q2FsbGVySWRMaXN0KCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBvbkRlZGljYXRlZE51bVNlbGVjdChpZDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZENhbGxlcklkID0gaWQ7XG4gICAgdGhpcy5pc0NhbGxlcklkSGlkZGVuID0gdHJ1ZTtcbiAgICB0aGlzLmV4dFNlcnZpY2Uuc2V0Q2FsbGVySWQoaWQpO1xuICB9XG4gIGNhbmNlbERpYWxOdW1iZXIoKSB7XG4gICAgdGhpcy50ZXJtaW5hdGVDYWxsID0gdHJ1ZTtcbiAgICB0aGlzLmNhbGxOdW1iZXJUb2FzdC5zaG93ID0gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVEaXZLZXlkb3duKGV2OmFueSl7XG4gICAgaWYodGhpcy5kaWFsZWROdW1iZXIubGVuZ3RoID09IDApe1xuICAgICAgdGhpcy5kaWFsSW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgaWYgKGV2LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGRpYWxwYWQgaXMgb3BlblxuICAgICAgaWYgKCF0aGlzLmlzRGlhbHBhZEhpZGRlbikge1xuICAgICAgICBpZih0aGlzLmRpYWxlZE51bWJlci5sZW5ndGggPiAyICYmIHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCl7XG4gICAgICAgICAgdGhpcy5pbml0aWF0ZUNhbGwoKTtcbiAgICAgICAgfVxuICAgICAgICBpZighdGhpcy5zZWxlY3RlZENhbGxlcklkKXtcbiAgICAgICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gdHJ1ZTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSBmYWxzZTtcbiAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgb25DYWxsQnRuTW91c2VFbnRlcihldjogYW55KSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkQ2FsbGVySWQgfHwgKHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9PSAnYWx3YXlzQXNrJykgfHwgKHRoaXMuc2VsZWN0ZWRDYWxsZXJJZCA9PSAnc21hcnREaWFsaW5nJykpIHtcbiAgICAgIHRoaXMuc2hha2VEZWRpY2F0ZWRCdG4gPSB0cnVlO1xuICAgIH1cblxuICB9XG4gIG9uQ2FsbEJ0bk1vdXNlTGVhdmUoZXY6IGFueSkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZENhbGxlcklkIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ2Fsd2F5c0FzaycpIHx8ICh0aGlzLnNlbGVjdGVkQ2FsbGVySWQgPT0gJ3NtYXJ0RGlhbGluZycpKSB7XG4gICAgICB0aGlzLnNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGFjY2VwdE5ld0luY29taW5nQ2FsbChjYWxsOiBDYWxsKSB7XG4gICAgLy9maXJzdCBjdXQgdGhlIGN1cnJlbnQgY2FsbFxuICAgIC8vdGhpcy5jYWxsRGF0YSA9IGNhbGw7XG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxEYXRhID0gY2FsbDtcbiAgfVxuICByZWplY3ROZXdJbmNvbWluZ0NhbGwoY2FsbDogQ2FsbCkge1xuICAgIGNhbGwucmVqZWN0KCk7XG4gICAgdGhpcy5uZXdJbmNvbWluZ0NhbGxzID0gdGhpcy5uZXdJbmNvbWluZ0NhbGxzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gY2FsbC5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSB0aGlzLmluY29taW5nQ2FsbHNMaXN0LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLnBhcmFtZXRlcnMuQ2FsbFNpZCAhPT0gY2FsbC5wYXJhbWV0ZXJzWydDYWxsU2lkJ10pO1xuICB9XG4gIG5ld0luY29taW5nQ2FsbEluaXRpYXRlZCgpIHtcbiAgICBjb25zb2xlLmxvZygnZGQxMicpXG4gICAgdGhpcy5pc0NhbGxJblByb2dyZXNzID0gdHJ1ZTtcbiAgICB0aGlzLm5ld0luY29taW5nQ2FsbHMgPSBbXTtcbiAgICB0aGlzLmluY29taW5nQ2FsbEluaXRpYXRlZC5lbWl0KCk7XG4gIH1cbiAgaW5jb21pbmdDYWxsc05ld0luZm8oZGF0YTphbnkpe1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc0xpc3QgPSBkYXRhO1xuICAgIHRoaXMuaW5jb21pbmdDYWxsc05ld0luZm9FdmVudC5lbWl0KGRhdGEpO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2xlYW5pbmcgdXAgQzJjRGlhbHBhZENvbXBvbmVudCcpO1xuICAgICAgXG4gICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgLy8gQ2xlYW4gdXAgVHdpbGlvIGRldmljZSB3aGVuIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICAgIGlmICh0aGlzLnR3aWxpb1NlcnZpY2VbJ2RldmljZSddKSB7XG4gICAgICAgIHRoaXMudHdpbGlvU2VydmljZVsnZGV2aWNlJ10uZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBFbmQgYW55IGFjdGl2ZSBjYWxsXG4gICAgICBpZiAodGhpcy5pc0NhbGxJblByb2dyZXNzKSB7XG4gICAgICAgIHRoaXMuZW5kQ2FsbCgpO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDbGVhciBhbnkgdGltZW91dHMgb3IgaW50ZXJ2YWxzIGlmIHRoZXkgZXhpc3RcbiAgICAgIGlmICh0aGlzLnRvYXN0VGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b2FzdFRpbWVvdXQpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zb2xlLmxvZygnQzJjRGlhbHBhZENvbXBvbmVudCBjbGVhbnVwIGNvbXBsZXRlJyk7XG4gICAgICBcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZHVyaW5nIGNvbXBvbmVudCBjbGVhbnVwOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJkcmFncGFyZW50MVwiIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6aXNEaWFscGFkSGlkZGVuID8gJ25vbmUnOiAnYmxvY2snfVwiPlxyXG4gIDxsaWItY2FsbC1wcm9ncmVzcyAqbmdJZj1cImlzQ2FsbEluUHJvZ3Jlc3NcIlxyXG4gICAoZW5kQ2FsbEV2ZW50KT1cImVuZENhbGwoKVwiXHJcbiAgIChtaW5pbWlzZUV2ZW50KT1cIm9uTWluaW1pc2UoJGV2ZW50KVwiXHJcbiAgIChpbmNvbWluZ0NhbGxJbml0aWF0ZWQpPVwibmV3SW5jb21pbmdDYWxsSW5pdGlhdGVkKClcIlxyXG4gICBbbmV3SW5jb21pbmdDYWxsRGF0YV09XCJuZXdJbmNvbWluZ0NhbGxEYXRhXCJcclxuICAgW2RldmljZUlkXT1cImRldmljZUlkXCJcclxuICAgW25ld0luY29taW5nQ2FsbHNMaXN0XT1cImluY29taW5nQ2FsbHNMaXN0XCJcclxuICAgKGluY29taW5nQ2FsbHNOZXdJbmZvKT1cImluY29taW5nQ2FsbHNOZXdJbmZvKCRldmVudClcIlxyXG4gICBbc2VsZWN0ZWRDYWxsZXJJZF09XCJzZWxlY3RlZENhbGxlcklkXCJcclxuICAgW2NhbGxEYXRhXT1cImNhbGxEYXRhXCI+XHJcbiAgPC9saWItY2FsbC1wcm9ncmVzcz5cclxuICA8ZGl2IGNsYXNzPVwiZGlhbHBhZC1jb250YWluZXJcIiAqbmdJZj1cIiFpc0NhbGxJblByb2dyZXNzXCIgW25nQ2xhc3NdPVwieydtaW5pLWRpYWxwYWQnOiBpc01pbmltaXNlZH1cIiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bik9XCJoYW5kbGVEaXZLZXlkb3duKCRldmVudClcIj5cclxuICAgIDxkaXYgaWQ9XCJ0b3BQYW5lbFwiIFtuZ1N0eWxlXT1cInsnaGVpZ2h0JzogY2FsbGVySWRMaXN0Lmxlbmd0aCA/ICc0MCUnIDogJzM5JSd9XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkaWFscGFkLWFsZXJ0c1wiICpuZ0lmPVwiZGlhbEFsZXJ0LnNob3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibm8tc2VsZWN0aW9uLWFsZXJ0XCI+XHJcbiAgICAgICAgICA8IS0tIDxwIGNsYXNzPVwibWItMFwiPlNlbGVjdCBDMkMgbnVtYmVyIHRvIGNhbGw8L3A+IC0tPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+e3tkaWFsQWxlcnQubXNnfX08L3A+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXRpbWVzXCIgKGNsaWNrKT1cInNoYWtlRGVkaWNhdGVkQnRuID0gZmFsc2VcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGlhbHBhZC1hbGVydHNcIiAqbmdJZj1cImNhbGxOdW1iZXJUb2FzdC5zaG93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpYWxib3gtcG9wMSBhbGVydCBmYWRlIHNob3dcIiBbbmdDbGFzc109XCJjYWxsTnVtYmVyVG9hc3QudHlwZVwiIHJvbGU9XCJhbGVydFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgbXktYXV0byB0ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgICBZb3UnciBjYWxsaW5nIDxzdHJvbmc+e3tjYWxsTnVtYmVyVG9hc3QuZGlzcGxheU51bX19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLWRpc2MgcC0wIHB4LTFcIiAoY2xpY2spPVwiY2FuY2VsRGlhbE51bWJlcigpXCI+Q2FuY2VsIENhbGw8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpbmsgYnRuLXN1Y2Nlc3MgYnRuLWRpc2MgcC0wIHB4LTJcIj5Db250aW51ZTwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMCAxOHB4XCIgKHBhc3RlKT1cImhhbmRsZU51bWJlclBhc3RlKCRldmVudClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTJcIj5cclxuICAgICAgICAgIDxwPjwvcD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBkaWFsLWNsb3NlLWJ0blwiIChjbGljayk9XCJoaWRlRGlhbHBhZCgpXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwiI2ZmZmZmZlwiPjxwYXRoIGQ9XCJtMjU2LTIwMC01Ni01NiAyMjQtMjI0LTIyNC0yMjQgNTYtNTYgMjI0IDIyNCAyMjQtMjI0IDU2IDU2LTIyNCAyMjQgMjI0IDIyNC01NiA1Ni0yMjQtMjI0LTIyNCAyMjRaXCIvPjwvc3ZnPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiICNkaWFsSW5wdXQgcGxhY2Vob2xkZXI9XCJFbnRlciBhIG5hbWUgb3IgbnVtYmVyXCIgdGFiaW5kZXg9XCIxXCIgWyhuZ01vZGVsKV09XCJkaWFsZWROdW1iZXJcIiAobmdNb2RlbENoYW5nZSk9XCJvbkRpYWxJbnB1dENoYW5nZSgkZXZlbnQpXCIvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIiBpZD1cImlucHV0LWNsZWFyLWJ0blwiIChjbGljayk9XCJjbGVhcklucHV0KClcIiAqbmdJZj1cInNob3dJbnB1dENsZWFyQnRuXCI+XHJcbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCI1MHB4XCIgaGVpZ2h0PVwiMzBweFwiIHZpZXdCb3g9XCIwIDEwIDQwIDYwXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiIHZlcnNpb249XCIxLjFcIiBiYXNlUHJvZmlsZT1cImZ1bGxcIiBlbmFibGUtYmFja2dyb3VuZD1cIm5ldyAwIDAgNzYuMDAgNzYuMDBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxyXG4gICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCIjNWQ2MDYxXCIgZmlsbC1vcGFjaXR5PVwiMVwiIHN0cm9rZS13aWR0aD1cIjAuMlwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgZD1cIk0gNDcuNTI4Miw0Mi45NDk3TCA0Mi41Nzg0LDM4TCA0Ny41MjgyLDMzLjA1MDJMIDQ0Ljk0OTcsMzAuNDcxOEwgNDAsMzUuNDIxNkwgMzUuMDUwMiwzMC40NzE4TCAzMi40NzE4LDMzLjA1MDJMIDM3LjQyMTYsMzhMIDMyLjQ3MTgsNDIuOTQ5N0wgMzUuMDUwMiw0NS41MjgyTCA0MCw0MC41Nzg0TCA0NC45NDk3LDQ1LjUyODJMIDQ3LjUyODIsNDIuOTQ5NyBaIE0gMTguMDE0Nyw0MS41MzU1TCAyNi45NjQ2LDUwLjQ4NTRDIDI4LjA2ODMsNTEuNTg5IDI5LDUyIDMxLDUyTCA1Miw1MkMgNTQuNzYxNCw1MiA1Nyw0OS43NjE0IDU3LDQ3TCA1NywyOUMgNTcsMjYuMjM4NiA1NC43NjE0LDI0IDUyLDI0TCAzMSwyNEMgMjksMjQgMjguMDY4MywyNC40MTEzIDI2Ljk2NDYsMjUuNTE0OUwgMTguMDE0NywzNC40NjQ1QyAxNi4wNjIxLDM2LjQxNzEgMTYuMDYyMSwzOS41ODI5IDE4LjAxNDcsNDEuNTM1NSBaIE0gMzEsNDlDIDMwLDQ5IDI5LjYwNDgsNDguODgyOCAyOS4wODYsNDguMzY0MUwgMjAuMTM2MSwzOS40MTQyQyAxOS4zNTUsMzguNjMzMiAxOS4zNTUsMzcuMzY2OSAyMC4xMzYxLDM2LjU4NThMIDI5LjA4NiwyNy42MzYyQyAyOS42MDQ4LDI3LjExNzUgMzAsMjcgMzEsMjcuMDAwMUwgNTIsMjcuMDAwMUMgNTMuMTA0NiwyNy4wMDAxIDU0LDI3Ljg5NTUgNTQsMjkuMDAwMUwgNTQsNDcuMDAwMUMgNTQsNDguMTA0NiA1My4xMDQ2LDQ5LjAwMDEgNTIsNDkuMDAwMUwgMzEsNDkgWiBcIi8+XHJcbiAgICAgICAgICAgIDwvc3ZnPiAgICAgICAgXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWluZm8taWNvblwiIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiIHRvb2x0aXBDbGFzcz1cImlucHV0LXRvb2x0aXBcIiBuZ2JUb29sdGlwPVwiRm9yIGV4dGVuc2lvbiBkaWFsaW5nLCB1c2UgZm9ybWF0cyBsaWtlICsxMjM0NTY3ODkxMCB4MTIzLCsxMjM0NTY3ODkxMCBleHQuMTIzLCArMTIzNDU2Nzg5MTAsMTIzXCI+PGkgY2xhc3M9XCJmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImd1aWRlXCIgKm5nSWY9XCJjYWxsZXJJZExpc3QubGVuZ3RoICYmICEoZGlhbGVkTnVtYmVyLmxlbmd0aCA+IDIpXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImd1aWRldGV4dFwiPlBsZWFzZSBlbnRlciBhIG51bWJlciBvciBzZWxlY3QgYSBzYXZlZCBjb250YWN0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImlucHV0LWVycm9yXCIgKm5nSWY9XCJkaWFsQWxlcnQuc2hvd1wiPlxyXG4gICAgICAgICAgPHNwYW4+e3tkaWFsQWxlcnQubXNnfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdC1jYXJkXCIgKm5nRm9yPVwibGV0IGNvbnRhY3Qgb2YgZmlsdGVyZWRDb250YWN0TGlzdFwiIChjbGljayk9XCJvbkNvbnRhY3RTZWxlY3QoY29udGFjdClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtaW1nXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNvbnRhY3QuaW1hZ2VcIiBhbHQ9XCJ1c2VyIGltYWdlXCIgbG9hZGluZz1cImxhenlcIiAqbmdJZj1cImNvbnRhY3QuaW1hZ2UgZWxzZSBhbHBoYU5hbWVcIi8+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhbHBoYU5hbWU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRhY3QtYWxwaGEtaW1nXCI+e3tnZXRGaXJzdExldHRlcihjb250YWN0LmZpcnN0TmFtZSl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhY3QtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNHB4XCIgY2xhc3M9XCJjb250YWN0LW5hbWVcIj57e2dldEZ1bGxOYW1lKGNvbnRhY3QpIH19PC9wPlxyXG4gICAgICAgICAgICAgIDxwPnt7Y29udGFjdC5udW1iZXJzTGlzdFswXS5udW1iZXJ9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzdmdcclxuICAgICAgICAgIGNsYXNzPVwid2F2ZXNcIlxyXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxyXG4gICAgICAgICAgdmlld0JveD1cIjAgMjQgMTUwIDI4XCJcclxuICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCJcclxuICAgICAgICAgIHNoYXBlLXJlbmRlcmluZz1cImF1dG9cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGlkPVwiZ2VudGxlLXdhdmVcIlxyXG4gICAgICAgICAgICAgIGQ9XCJNLTE2MCA0NGMzMCAwIDU4LTE4IDg4LTE4cyA1OCAxOCA4OCAxOCA1OC0xOCA4OC0xOCA1OCAxOCA4OCAxOCB2NDRoLTM1MnpcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgPGcgY2xhc3M9XCJwYXJhbGxheFwiPlxyXG4gICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXHJcbiAgICAgICAgICAgICAgeD1cIjQ4XCJcclxuICAgICAgICAgICAgICB5PVwiMFwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC43KVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2dlbnRsZS13YXZlXCJcclxuICAgICAgICAgICAgICB4PVwiNDhcIlxyXG4gICAgICAgICAgICAgIHk9XCIzXCJcclxuICAgICAgICAgICAgICBmaWxsPVwicmdiYSgyNTUsMjU1LDI1NSwwLjUpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPCEtLSA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNnZW50bGUtd2F2ZVwiXHJcbiAgICAgICAgICAgICAgeD1cIjQ4XCJcclxuICAgICAgICAgICAgICB5PVwiNVwiXHJcbiAgICAgICAgICAgICAgZmlsbD1cInJnYmEoMjU1LDI1NSwyNTUsMC4zKVwiXHJcbiAgICAgICAgICAgIC8+IC0tPlxyXG4gICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjZ2VudGxlLXdhdmVcIiB4PVwiNDhcIiB5PVwiN1wiIGZpbGw9XCIjZmZmXCIgLz5cclxuICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyXCIgKm5nSWY9XCIhaXNNaW5pbWlzZWRcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImRpYWwtYnRuXCIgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlwYWRWYWw7bGV0IGkgPSBpbmRleFwiXHJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoa2V5Lm51bSlcIiAoY2xpY2spPVwiYWRkTnVtYmVyKGtleS5udW0pXCJcclxuICAgICAgW25nU3R5bGVdPVwieydtYXJnaW4tdG9wJzoga2V5LnRleHQgPT09ICcrJyA/ICczcHgnIDogJzAnfVwiXHJcbiAgICAgICBbdGFiaW5kZXhdPVwiZGlhbGVkTnVtYmVyLmxlbmd0aCA/ICcwJzogaSsyXCIgbG9uZ1ByZXNzIChsb25nUHJlc3MpPVwiYWRkTnVtYmVyKGtleS50ZXh0KVwiIHNob3J0UHJlc3MgKHNob3J0UHJlc3MpPVwiYWRkTnVtYmVyKGtleS5udW0pXCI+XHJcbiAgICAgICAge3trZXkubnVtfX0gXHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJrZXkubnVtID09IDE7ZWxzZSBvdGhlclRoYW5PbmVcIiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdm9pY2VtYWlsXCI+XHJcbiAgICAgICAgICB2b2ljZW1haWxcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlclRoYW5PbmU+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1hbGJoYWJldHNcIiBbbmdDbGFzc109XCJ7J3BsdXNTaWduJzoga2V5LnRleHQgPT09ICcrJ31cIj57e2tleS50ZXh0ID8ga2V5LnRleHQgOiAnJm5ic3A7J319PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsbC1idG4tY29udGFpbmVyXCIgKm5nSWY9XCIhaXNNaW5pbWlzZWRcIiAobW91c2VlbnRlcik9XCJvbkNhbGxCdG5Nb3VzZUVudGVyKCRldmVudClcIiAobW91c2VsZWF2ZSk9XCJvbkNhbGxCdG5Nb3VzZUxlYXZlKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhbGwtYnRuXCIgKGNsaWNrKT1cImluaXRpYXRlQ2FsbCgpXCIgW3RhYmluZGV4XT1cImRpYWxlZE51bWJlci5sZW5ndGggPyAnMic6ICcxNSdcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsncG9pbnRlci1ldmVudHMnOiBkaWFsZWROdW1iZXIubGVuZ3RoICYmIHNlbGVjdGVkQ2FsbGVySWQgPyAnYXV0bycgOiAnbm9uZScsICdvcGFjaXR5JzogZGlhbGVkTnVtYmVyLmxlbmd0aCAmJiBzZWxlY3RlZENhbGxlcklkID8gJzEnIDogJzAuNSd9XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgIGNhbGxcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY2FsbGVySWRMaXN0Lmxlbmd0aCAmJiAhaXNNaW5pbWlzZWRcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzaG93bkNhbGxlcklkXCIgKm5nSWY9XCJzZWxlY3RlZENhbGxlcklkOyBlbHNlIGFza0Jsb2NrXCIgKGNsaWNrKT1cInRvZ2dsZUNhbGxlcklkRGl2KClcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZENhbGxlcklkPy5pc29Db2RlPy50b0xvd2VyQ2FzZSgpXCI+PC9zcGFuPlxyXG4gICAgICAgICAge3tzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNhc2tCbG9jaz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hvd25DYWxsZXJJZFwiICAoY2xpY2spPVwidG9nZ2xlQ2FsbGVySWREaXYoKVwiIFtuZ0NsYXNzXT1cInsgJ3RpbHQtc2hha2luZyc6IHNoYWtlRGVkaWNhdGVkQnRuIH1cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJtYi0wXCI+U2VsZWN0IEMyQyBudW1iZXI8L2g1PlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtMlwiIHN0eWxlPVwib3BhY2l0eTouODttYXJnaW4tdG9wOjJweFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9pY29uX2Rvd25fYXJyb3cuc3ZnXCIgYWx0PVwiZG93blwiIHdpZHRoPVwiMTBweFwiPlxyXG4gICAgICAgICAgICA8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd24gbWwtMiB0ZXh0LWJsdWVcIiBzdHlsZT1cIm1hcmdpbi10b3A6MnB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJndWlkZTJcIiAqbmdJZj1cInNoYWtlRGVkaWNhdGVkQnRuXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJndWlkZXRleHRcIj5QbGVhc2Ugc2VsZWN0IGEgbnVtYmVyIGZyb20gYmVsb3cgZHJvcGRvd248L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGg7IGVsc2Ugbm9DYWxsZXJJZE1lc3NhZ2VcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxsZXItaWQtbGlzdC1jb250YWluZXJcIiAqbmdJZj1cImNhbGxlcklkTGlzdC5sZW5ndGggJiYgIWlzTWluaW1pc2VkXCIgaWQ9XCJjYWxsZXJJZENvbnRhaW5lclwiICBbbmdDbGFzc109XCJ7J3Zpc2libGUnOiAhaXNDYWxsZXJJZEhpZGRlbn1cIiA+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW5cIj5cclxuICAgICAgICA8IS0tIDxoND5TZWxlY3QgQzJDIFNvZnRwaG9uZSBOdW1iZXI8L2g0PiAtLT5cclxuICAgICAgICAgPGg0Pk1ha2Ugb3V0Z29pbmcgY2FsbCB1c2luZzwvaDQ+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXHJcbiAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaXNDYWxsZXJJZEhpZGRlbiA9IHRydWVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIGNsb3NlXHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhbGxlcklkIG9mIGNhbGxlcklkTGlzdFwiPlxyXG4gICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRDYWxsZXJJZENsYXNzJzogY2FsbGVySWQ/Lm51bWJlciA9PSBzZWxlY3RlZENhbGxlcklkPy5udW1iZXJ9XCIgKGNsaWNrKT1cIm9uRGVkaWNhdGVkTnVtU2VsZWN0KGNhbGxlcklkKVwiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY2FsbGVySWQ/Lmlzb0NvZGU/LnRvTG93ZXJDYXNlKClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3tjYWxsZXJJZD8ubnVtYmVyfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7Y2FsbGVySWQ/LmNvdW50cnlOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9DYWxsZXJJZE1lc3NhZ2U+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibm8tY2FsbGVyLWlkLW1lc3NhZ2VcIj5UbyBtYWtlIGFueSB2b2ljZSBjYWxscywgcGxlYXNlIDxhIHJvdXRlckxpbms9XCIvZXh0ZW5zaW9uL2RlZGljYXRlZG51bWJlci97e3Rva2VufX1cIiBjbGFzcz1cImNsaWNrLWhlcmUtbGlua1wiIHRpdGxlPVwiU2V0dGluZ3MgPiBDMkMgTnVtYmVyXCI+c3Vic2NyaWJlPC9hPiB0byBhIHZvaWNlIGNhcGFibGUgQzJDIE51bWJlci5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJkZWRpY2F0ZWQtb3ZlcmxheVwiICpuZ0lmPVwic2hvd0RlZGljYXRlZFBvcHVwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGRlZGljYXRlZE51bVBvcHVwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGNob29zZURlZGljYXRlZEhlYWRlclwiPlxyXG4gICAgICAgICAgPGg1PkNob29zZSBDMkMgTnVtYmVyPC9oNT5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBkaWFsLWNsb3NlLWJ0blwiIChjbGljayk9XCJzaG93RGVkaWNhdGVkUG9wdXAgPSBmYWxzZVwiPmNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZGVkaWNhdGVkTnVtTGlzdFwiPlxyXG4gICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjYWxsZXJJZCBvZiBjYWxsZXJJZExpc3RcIj5cclxuICAgICAgICAgICAgICA8bGkgW25nQ2xhc3NdPVwieydzZWxlY3RlZENhbGxlcklkQ2xhc3MnOiBjYWxsZXJJZD8ubnVtYmVyID09IHNlbGVjdGVkQ2FsbGVySWQ/Lm51bWJlcn1cIiAoY2xpY2spPVwic2hvd0RlZGljYXRlZFBvcHVwID0gZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY2FsbGVySWQ/Lmlzb0NvZGU/LnRvTG93ZXJDYXNlKClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIHt7Y2FsbGVySWQ/Lm51bWJlcn19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7Y2FsbGVySWQ/LmNvdW50cnlOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5jb21pbmctY2FsbC13aWRnZXRcIiAqbmdGb3I9XCJsZXQgY2FsbCBvZiBuZXdJbmNvbWluZ0NhbGxzO2xldCBpID0gaW5kZXhcIiBbbmdTdHlsZV09XCJ7J3RvcCc6ICgzMCArIGkgKiA3MikgKyAncHgnfVwiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmMtdXNlci1pbWdcIj5cclxuICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy91c2VyLmpwZ1wiIGFsdD1cInVzZXIgaW1hZ2VcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiaW5jLXVzZXItbmFtZVwiPnt7Y2FsbC5jdXN0b21QYXJhbWV0ZXJzLmdldCgnbmFtZScpfX08L3A+XHJcbiAgICAgICAgPHA+e3tjYWxsLnBhcmFtZXRlcnMuRnJvbX19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJpbmMtY2FsbC1idG4gaW5jLWFjY2VwdC1idG4gbXItMlwiIChjbGljayk9XCJhY2NlcHROZXdJbmNvbWluZ0NhbGwoY2FsbClcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlXCI+XHJcbiAgICAgICAgICAgIGNhbGxcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiaW5jLWNhbGwtYnRuIGluYy1yZWplY3QtYnRuXCIgKGNsaWNrKT1cInJlamVjdE5ld0luY29taW5nQ2FsbChjYWxsKVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgc3R5bGU9XCJjb2xvcjogd2hpdGVcIj5cclxuICAgICAgICAgICAgY2FsbF9lbmRcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|