@yibozhang/pro-table 16.1.6 → 16.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/page-public/antd-form.mjs +339 -10
- package/esm2022/lib/pro-table.component.mjs +1 -2
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/yibozhang-pro-table.mjs +338 -10
- package/fesm2022/yibozhang-pro-table.mjs.map +1 -1
- package/lib/page-public/antd-form.d.ts +27 -2
- package/lib/page-public/antd-form.d.ts.map +1 -1
- package/lib/pro-table.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/public-api.d.ts.map +1 -1
|
@@ -150,7 +150,6 @@ export class ProTableComponent {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
async ngOnInit() {
|
|
153
|
-
console.log('aaa');
|
|
154
153
|
this._searchParams = {};
|
|
155
154
|
this.formateInnerColumns(this.columns);
|
|
156
155
|
await this.setSearchParams(this.columns);
|
|
@@ -1078,4 +1077,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1078
1077
|
type: HostListener,
|
|
1079
1078
|
args: ["window:resize"]
|
|
1080
1079
|
}] } });
|
|
1081
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byby10YWJsZS9zcmMvbGliL3Byby10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm8tdGFibGUvc3JjL2xpYi9wcm8tdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFXLE1BQU0sV0FBVyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVdoRixPQUFPLEVBQUUsdUJBQXVCLEVBQStCLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8saUJBQWlCO0lBNEpsQjtJQTNKRCxhQUFhLEdBQVksSUFBSSxDQUFDO0lBRTlCLFlBQVksR0FBWSxJQUFJLENBQUM7SUFFN0IsS0FBSyxHQUFrQixJQUFJLENBQUM7SUFFNUIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUV2QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRTFCLE9BQU8sR0FBcUIsRUFBRSxDQUFDO0lBRS9CLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFFOUIsYUFBYSxHQUFZLElBQUksQ0FBQztJQUU5QixjQUFjLEdBQVcsSUFBSSxDQUFDO0lBRTlCLFlBQVksR0FBVyxJQUFJLENBQUM7SUFFNUIsVUFBVSxHQUFXLE1BQU0sQ0FBQztJ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QkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUVHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUVvQixZQUFZO3NCQUF0QyxZQUFZO3VCQUFDLFdBQVc7Z0JBRUssZUFBZTtzQkFBNUMsWUFBWTt1QkFBQyxjQUFjO2dCQUVFLFlBQVk7c0JBQXpDLGVBQWU7dUJBQUMsV0FBVztnQkErRDVCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGNsb25lRGVlcCwgaGFzSW4sIGlzTmlsLCBkZWJvdW5jZSwgaXNFcXVhbCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHsgUFJPX1RBQkxFX0RFRkFVTFRfQ09MVU1OLCBQUk9fVEFCTEVfREVGQVVMVF9QUk9QUyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQge1xyXG4gIEF1dG9Db21wbGV0ZUZpZWxkUHJvcHMsXHJcbiAgQ2hlY2tib3hGaWVsZFByb3BzLFxyXG4gIE9wdGlvbnNUeXBlLFxyXG4gIFByb1RhYmxlQ29sdW1uLFxyXG4gIFByb1RhYmxlUGFnZUluZm8sXHJcbiAgUHJvVGFibGVSZXF1ZXN0UmVzdWx0LFxyXG4gIFByb1RhYmxlVmFsdWVzQ2hhbmdlLFxyXG4gIFNlbGVjdEZpZWxkUHJvcHMsXHJcbn0gZnJvbSBcIi4vdHlwZVwiO1xyXG5pbXBvcnQgeyBQUk9fVEFCTEVfQ09MVU1OX1JFTU9URSwgUHJvVGFibGVSZW1vdGVDb2x1bW5TZXJ2aWNlIH0gZnJvbSBcIi4vdG9rZW5zXCI7XHJcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgbGFzdFZhbHVlRnJvbSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtcHJvLXRhYmxlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9wcm8tdGFibGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vcHJvLXRhYmxlLmNvbXBvbmVudC5sZXNzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xyXG4gIEBJbnB1dCgpIHNob3dTZWFyY2hCdG46IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q2xlYXJCdG46IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlTmFtZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KCkgbXVsdGlSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgY29sdW1uczogUHJvVGFibGVDb2x1bW5bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBzaG93U2VhcmNoQmFyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0FjdGlvbkJhcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpcm1CdG5UZXh0OiBzdHJpbmcgPSBcIuafpeivolwiO1xyXG5cclxuICBASW5wdXQoKSBjbGVhckJ0blRleHQ6IHN0cmluZyA9IFwi5riF56m6XCI7XHJcblxyXG4gIEBJbnB1dCgpIGxhYmVsV2lkdGg6IHN0cmluZyA9IFwiOTBweFwiO1xyXG5cclxuICBASW5wdXQoKSBsYWJlbEFsaWduOiBzdHJpbmcgPSBcInJpZ2h0XCI7XHJcblxyXG4gIEBJbnB1dCgpIGZvcm1JdGVtV2lkdGg6IHN0cmluZyA9IFwiMzMwcHhcIjtcclxuXHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZTogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYm9yZGVyZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBvdXRlckJvcmRlcmVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd1BhZ2luYXRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBmcm9udFBhZ2luYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2Nyb2xsOiB7IHg/OiBzdHJpbmcgfCBudW1iZXI7IHk/OiBzdHJpbmcgfCBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSByZXF1ZXN0OiAocGFyYW1zOiBhbnkpID0+IFByb21pc2U8UHJvVGFibGVSZXF1ZXN0UmVzdWx0PjtcclxuXHJcbiAgQElucHV0KCkgc3VtbWFyeURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8g5o6S5bqP5qih5byP77yabG9jYWwg5pys5Zyw5o6S5bqP77ybc2VydmVyIOWcqOe6v+aOkuW6j++8iOaPkOS6pOe7meaOpeWPo++8iVxyXG4gIEBJbnB1dCgpIHNvcnRNb2RlOiBcImxvY2FsXCIgfCBcInNlcnZlclwiID0gXCJsb2NhbFwiO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q29sdW1uU2V0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyDmmK/lkKblvIDlkK/lpJrliJfmjpLluo/vvIjpu5jorqTljZXliJfvvIlcclxuICBASW5wdXQoKSBtdWx0aXBsZVNvcnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIOWIpOaWreihjOaYr+WQpuemgeeUqOeahOWHveaVsFxyXG4gIEBJbnB1dCgpIHJvd0Rpc2FibGVkOiAoZGF0YTogYW55KSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJlcmVuZGVyT25SZXNpemU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyDmmK/lkKboh6rliqjop6blj5Hor7fmsYJcclxuICBASW5wdXQoKSBhdXRvVHJpZ2dlclJlcXVlc3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBjdXN0b21UYWJsZVJlbmRlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0RiQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uVmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9UYWJsZVZhbHVlc0NoYW5nZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uUmVzZXRGb3JtQmVmb3JlUmVsb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoXCJhY3Rpb25CYXJcIikgYWN0aW9uQmFyVHBsITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChcIkltZ0FjdGlvbkJhclwiKSBpbWdBY3Rpb25CYXJUcGwhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlUmVmKSBhbGxUZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIHByaXZhdGUgX3NhdmVkU2VhcmNoUGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcbiAgLy8g5a2Y5YKo5omA5pyJ6Ieq5a6a5LmJ5qih5p2/55qE5byV55SoXHJcbiAgcHJpdmF0ZSBjdXN0b21UZW1wbGF0ZXMgPSBuZXcgTWFwPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj4oKTtcclxuXHJcbiAgLy8g6K6w5b2V5ZCE5YiX5o6S5bqP54q25oCB77yaJ2FzY2VuZCcgfCAnZGVzY2VuZCcgfCBudWxsXHJcblxyXG4gIHByaXZhdGUgX3NvcnRNYXA6IFJlY29yZDxzdHJpbmcsIFwiYXNjZW5kXCIgfCBcImRlc2NlbmRcIiB8IG51bGw+ID0ge307XHJcblxyXG4gIC8vIOiusOW9leWkmuWIl+aOkuW6j+eahOS8mOWFiOe6p++8iOWQjuiuvue9rueahOS8mOWFiO+8iVxyXG4gIHByaXZhdGUgX3NvcnRQcmlvcml0eTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgLy8g5a2Y5YKo5q+P5LiqIGF1dG9Db21wbGV0ZSDlrZfmrrXnmoTpmLLmipblh73mlbBcclxuICBwcml2YXRlIF9hdXRvQ29tcGxldGVEZWJvdW5jZU1hcDogTWFwPHN0cmluZywgKGV2ZW50OiBFdmVudCkgPT4gdm9pZD4gPVxyXG4gICAgbmV3IE1hcCgpO1xyXG5cclxuXHJcbiAgX2NvbHVtbnM6IFByb1RhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcbiAgLy8g562b6YCJ6KGo5Y2V5pWw5o2u5a2Y5YKoXHJcbiAgX3NlYXJjaFBhcmFtczogYW55ID0ge307XHJcblxyXG4gIC8vIOetm+mAieihqOWNlWxpc3TmuLLmn5PmlbDmja5cclxuICBfc2VhcmNoRmlsZWRDb2x1bW5zOiBQcm9UYWJsZUNvbHVtbltdID0gW107XHJcblxyXG4gIF9wYWdlSW5mbzogUHJvVGFibGVQYWdlSW5mbyA9IHtcclxuICAgIHBhZ2VJbmRleDogMSxcclxuICAgIHBhZ2VTaXplOiAxNSxcclxuICAgIHRvdGFsOiAxMDAsXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IFsxMCwgMTUsIDIwLCA1MCwgMTAwLCA1MDAsIDEwMDBdLFxyXG4gIH07XHJcblxyXG4gIF9sb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIF9zZWxlY3RlZFRhYmxlUm93OiBhbnkgPSBudWxsO1xyXG5cclxuICAvLyDpgInkuK3nmoTooYzmlbDmja7vvIjnlKjkuo7lpI3pgInmoYbpgInmi6nvvIktIOS/neeVmeeUqOS6juWFvOWuueaAp1xyXG4gIF9zZWxlY3RlZFJvd3M6IGFueVtdID0gW107XHJcblxyXG4gIC8vIOWFqOmAieeKtuaAgVxyXG4gIF9jaGVja2VkQWxsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIOWNiumAieeKtuaAge+8iOmDqOWIhumAieS4re+8iVxyXG4gIF9pbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIOi/nOeoi2NvbHVtbnNcclxuICBfc2VydmVyQ29sdW1uczogUHJvVGFibGVDb2x1bW5bXSA9IFtdO1xyXG5cclxuICAvLyDlrZjlgqggYXV0b0NvbXBsZXRlIOWtl+auteeahOaVsOaNrua6kFxyXG4gIF9hdXRvQ29tcGxldGVEYXRhU291cmNlczogUmVjb3JkPHN0cmluZywgYW55W10+ID0ge307XHJcblxyXG4gIC8vIOaOp+WItuihqOagvOaYvuekuueKtuaAge+8jOeUqOS6jumHjeaWsOaMgui9vVxyXG4gIF9zaG93VGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyDliqjmgIHliJfliqDovb3lrozmiJDmoIflv5fvvIzpu5jorqQgdHJ1Ze+8iOaXoOWKqOaAgeWIl+aXtuebtOaOpeaYvuekuu+8iVxyXG4gIF9jb2x1bW5zUmVhZHk6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyDpmLLmipblrprml7blmajvvIznlKjkuo7nqpflj6PlpKflsI/osIPmlbRcclxuICBwcml2YXRlIHJlc2l6ZURlYm91bmNlOiBhbnk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICBpZiAoIXRoaXMucmVyZW5kZXJPblJlc2l6ZSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLnJlc2l6ZURlYm91bmNlKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZURlYm91bmNlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc2l6ZURlYm91bmNlID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIOmAmui/hyBuZ0lmIOmHjeaWsOaMgui9veihqOagvFxyXG4gICAgICB0aGlzLl9zaG93VGFibGUgPSBmYWxzZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2hvd1RhYmxlID0gdHJ1ZTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9LCAxNTApO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBASW5qZWN0KFBST19UQUJMRV9DT0xVTU5fUkVNT1RFKVxyXG4gICAgcHJpdmF0ZSBjb2x1bW5SZW1vdGU6IFByb1RhYmxlUmVtb3RlQ29sdW1uU2VydmljZSB8IG51bGwsXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZldGNoUmVtb3RlQ29sdW1ucygpIHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5SZW1vdGU/LmdldENvbCB8fCAhdGhpcy50YWJsZU5hbWUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbHVtblJlbW90ZS5nZXRDb2wodGhpcy50YWJsZU5hbWUsIHRoaXMubXVsdGlSb3cpO1xyXG4gICAgICByZXR1cm4gcmVzO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHBlcnNpc3RSZW1vdGVDb2x1bW5zKGNvbHVtbnM6IGFueVtdKSB7XHJcbiAgICBpZiAoIXRoaXMuY29sdW1uUmVtb3RlPy5zZXRDb2wgfHwgIXRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb2x1bW5SZW1vdGUuc2V0Q29sKFxyXG4gICAgICAgIHRoaXMudGFibGVOYW1lLFxyXG4gICAgICAgIGNvbHVtbnMsXHJcbiAgICAgICAgdGhpcy5tdWx0aVJvdyxcclxuICAgICAgKTtcclxuICAgICAgaWYgKHJlc3VsdCAmJiBpc09ic2VydmFibGUocmVzdWx0KSkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBsYXN0VmFsdWVGcm9tKHJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7ICAgXHJcbiAgICBjb25zb2xlLmxvZygnYWFhJyk7XHJcbiAgICB0aGlzLl9zZWFyY2hQYXJhbXMgPSB7fTtcclxuICAgIHRoaXMuZm9ybWF0ZUlubmVyQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgYXdhaXQgdGhpcy5zZXRTZWFyY2hQYXJhbXModGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICAvLyDkvb/nlKggUHJveHkg5YyF6KOFIF9zZWFyY2hQYXJhbXPvvIzmi6bmiKrooajljZXpobnlgLzlj5jljJblubblkJHlpJblj5Hlh7rkuovku7ZcclxuICAgIHRoaXMuX3NlYXJjaFBhcmFtcyA9IHRoaXMuY3JlYXRlU2VhcmNoUGFyYW1zUHJveHkodGhpcy5fc2VhcmNoUGFyYW1zKTtcclxuICAgIGlmICh0aGlzLmF1dG9UcmlnZ2VyUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZU5hbWUgJiYgdGhpcy5jb2x1bW5SZW1vdGUpIHtcclxuICAgICAgdGhpcy5fY29sdW1uc1JlYWR5ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXJ5RHluYW1pY0NvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIC8vIOiHquWKqOazqOWGjOaJgOacieiHquWumuS5ieaooeadv1xyXG4gICAgLy8g5rOo5oSP77ya5q2k5pe25omA5pyJIENvbnRlbnRDaGlsZCDlkowgQ29udGVudENoaWxkcmVuIOmDveW3suWIneWni+WMluWujOaIkFxyXG4gICAgdGhpcy5hdXRvUmVnaXN0ZXJUZW1wbGF0ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcXVlcnlEeW5hbWljQ29sdW1ucygpIHtcclxuICAgIGlmICghdGhpcy50YWJsZU5hbWUgfHwgIXRoaXMuY29sdW1uUmVtb3RlKSByZXR1cm47XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmZldGNoUmVtb3RlQ29sdW1ucygpO1xyXG4gICAgICBpZiAoIXJlcykgcmV0dXJuO1xyXG4gICAgICBpZiAocmVzLmNvZGUgPT09IDApIHtcclxuICAgICAgICBjb25zdCBfdGFiQ29sdW1uID0gcmVzLmRhdGEudGFiQ29sdW1uLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0uaGVhZGVyLFxyXG4gICAgICAgICAgICBwcm9wOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBzb3J0TmFtZTogaXRlbS5zb3J0TmFtZSxcclxuICAgICAgICAgICAgaGlkZUluVGFibGU6ICFpdGVtLmlzU2hvdyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fc2VydmVyQ29sdW1ucyA9IF90YWJDb2x1bW4uZmlsdGVyKChjb2wpID0+XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMuc29tZSgobG9jYWxDb2wpID0+IGxvY2FsQ29sLnByb3AgPT09IGNvbC5wcm9wKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGFibGVDb2x1bW5zKHRoaXMuX3NlcnZlckNvbHVtbnMpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlcy5jb2RlID09PSAxMCkge1xyXG4gICAgICAgIC8vIOWmguaenOacquiuvue9ruaOpeWPo+i/lOWbnu+8jOmcgOimgem7mOiupOiwg+eUqOS4gOasoeS/ruaUueWHveaVsOWIneWni+WMluaVsOaNrlxyXG4gICAgICAgIGNvbnN0IGluaXRDb2x1bW5zID0gdGhpcy5jb2x1bW5zXHJcbiAgICAgICAgICAuZmlsdGVyKChjb2wpID0+ICFjb2wuYXV4aWxpYXJ5Q29sdW1uKVxyXG4gICAgICAgICAgLm1hcCgoY29sdW1uKSA9PiAoe1xyXG4gICAgICAgICAgICBmaWVsZDogY29sdW1uLnByb3AsXHJcbiAgICAgICAgICAgIGlzU2hvdzogdHJ1ZSxcclxuICAgICAgICAgICAgaGVhZGVyOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgIHNvcnROYW1lOiBjb2x1bW4uc29ydE5hbWUgfHwgbnVsbCxcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICBjb25zdCBpbml0UmVzID0gYXdhaXQgdGhpcy5wZXJzaXN0UmVtb3RlQ29sdW1ucyhpbml0Q29sdW1ucyk7XHJcbiAgICAgICAgaWYgKGluaXRSZXMpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMucXVlcnlEeW5hbWljQ29sdW1ucygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5fY29sdW1uc1JlYWR5ID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0ZUlubmVyQ29sdW1ucyhjb2x1bW5zOiBQcm9UYWJsZUNvbHVtbltdKSB7XHJcbiAgICB0aGlzLl9jb2x1bW5zID0gY29sdW1uc1xyXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5oaWRlSW5UYWJsZSlcclxuICAgICAgLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7IC4uLlBST19UQUJMRV9ERUZBVUxUX0NPTFVNTiwgLi4uaXRlbSB9IGFzIFByb1RhYmxlQ29sdW1uO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOiHquWKqOazqOWGjOaooeadv+eahOaWueazlVxyXG4gIHByaXZhdGUgYXV0b1JlZ2lzdGVyVGVtcGxhdGVzKCkge1xyXG4gICAgLy8g6I635Y+W5omA5pyJ5qih5p2/XHJcbiAgICBjb25zdCBhbGxUZW1wbGF0ZXNBcnJheSA9IHRoaXMuYWxsVGVtcGxhdGVzLnRvQXJyYXkoKTtcclxuXHJcbiAgICAvLyDojrflj5bmiYDmnInpnIDopoHoh6rlrprkuYnmqKHmnb/nmoTliJdcclxuICAgIGNvbnN0IGNvbHVtbnNXaXRoQ3VzdG9tUmVuZGVyID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgIChjb2wpID0+IGNvbC5jdXN0b21SZW5kZXIsXHJcbiAgICApO1xyXG5cclxuICAgIC8vIOiOt+WPluaJgOaciemcgOimgeiHquWumuS5iWxhYmVs5qih5p2/55qE5YiX77yI5L2/55So5Y6f5aeLY29sdW1uc++8jOehruS/nemhuuW6j+ato+ehru+8iVxyXG4gICAgY29uc3QgY29sdW1uc1dpdGhDdXN0b21MYWJlbCA9IHRoaXMuY29sdW1ucy5maWx0ZXIoXHJcbiAgICAgIChjb2wpID0+IGNvbC5jdXN0b21MYWJlbFJlbmRlcixcclxuICAgICk7XHJcblxyXG4gICAgLy8g6K6h566X6ZyA6KaB55qE5qih5p2/5oC75pWwXHJcbiAgICBjb25zdCBjdXN0b21SZW5kZXJDb3VudCA9IGNvbHVtbnNXaXRoQ3VzdG9tUmVuZGVyLmxlbmd0aDtcclxuICAgIGNvbnN0IHRvdGFsTmVlZGVkVGVtcGxhdGVzID1cclxuICAgICAgY3VzdG9tUmVuZGVyQ291bnQgKyBjb2x1bW5zV2l0aEN1c3RvbUxhYmVsLmxlbmd0aDtcclxuXHJcbiAgICAvLyDor4bliKvlubbmjpLpmaTnibnmrormqKHmnb/vvIhhY3Rpb25CYXIg5ZKMIGltZ0FjdGlvbkJhcu+8iVxyXG4gICAgY29uc3Qgc3BlY2lhbFRlbXBsYXRlSW5kaWNlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICAgIC8vIOWwneivleaJvuWIsCBhY3Rpb25CYXJUcGwg5ZyoIGFsbFRlbXBsYXRlc0FycmF5IOS4reeahOS9jee9rlxyXG4gICAgaWYgKHRoaXMuYWN0aW9uQmFyVHBsKSB7XHJcbiAgICAgIGNvbnN0IGFjdGlvbkJhckluZGV4ID0gdGhpcy5maW5kVGVtcGxhdGVJbmRleChcclxuICAgICAgICBhbGxUZW1wbGF0ZXNBcnJheSxcclxuICAgICAgICB0aGlzLmFjdGlvbkJhclRwbCxcclxuICAgICAgKTtcclxuICAgICAgaWYgKGFjdGlvbkJhckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHNwZWNpYWxUZW1wbGF0ZUluZGljZXMuYWRkKGFjdGlvbkJhckluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOWwneivleaJvuWIsCBpbWdBY3Rpb25CYXJUcGwg5ZyoIGFsbFRlbXBsYXRlc0FycmF5IOS4reeahOS9jee9rlxyXG4gICAgaWYgKHRoaXMuaW1nQWN0aW9uQmFyVHBsKSB7XHJcbiAgICAgIGNvbnN0IGltZ0FjdGlvbkJhckluZGV4ID0gdGhpcy5maW5kVGVtcGxhdGVJbmRleChcclxuICAgICAgICBhbGxUZW1wbGF0ZXNBcnJheSxcclxuICAgICAgICB0aGlzLmltZ0FjdGlvbkJhclRwbCxcclxuICAgICAgKTtcclxuICAgICAgaWYgKGltZ0FjdGlvbkJhckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHNwZWNpYWxUZW1wbGF0ZUluZGljZXMuYWRkKGltZ0FjdGlvbkJhckluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOaXoOazlemAmui/h+W8leeUqOaJvuWIsOeJueauiuaooeadv++8jOS9v+eUqOWkh+eUqOetlueVpVxyXG4gICAgLy8g5aSH55So562W55Wl77ya5YGH6K6+5pyA5ZCO55qE5qih5p2/5piv54m55q6K5qih5p2/XHJcbiAgICBjb25zdCBzcGVjaWFsVGVtcGxhdGVDb3VudCA9XHJcbiAgICAgICh0aGlzLmFjdGlvbkJhclRwbCA/IDEgOiAwKSArICh0aGlzLmltZ0FjdGlvbkJhclRwbCA/IDEgOiAwKTtcclxuICAgIGlmIChzcGVjaWFsVGVtcGxhdGVJbmRpY2VzLnNpemUgPT09IDAgJiYgc3BlY2lhbFRlbXBsYXRlQ291bnQgPiAwKSB7XHJcbiAgICAgIGZvciAoXHJcbiAgICAgICAgbGV0IGkgPSBhbGxUZW1wbGF0ZXNBcnJheS5sZW5ndGggLSBzcGVjaWFsVGVtcGxhdGVDb3VudDtcclxuICAgICAgICBpIDwgYWxsVGVtcGxhdGVzQXJyYXkubGVuZ3RoO1xyXG4gICAgICAgIGkrK1xyXG4gICAgICApIHtcclxuICAgICAgICBzcGVjaWFsVGVtcGxhdGVJbmRpY2VzLmFkZChpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOaPkOWPluWIl+aooeadv++8iOaOkumZpOeJueauiuaooeadv++8iVxyXG4gICAgY29uc3QgY29sdW1uVGVtcGxhdGVzOiBUZW1wbGF0ZVJlZjxhbnk+W10gPSBbXTtcclxuICAgIGFsbFRlbXBsYXRlc0FycmF5LmZvckVhY2goKHRwbCwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFzcGVjaWFsVGVtcGxhdGVJbmRpY2VzLmhhcyhpbmRleCkpIHtcclxuICAgICAgICBjb2x1bW5UZW1wbGF0ZXMucHVzaCh0cGwpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDpqozor4HmqKHmnb/mlbDph49cclxuICAgIGlmIChjb2x1bW5UZW1wbGF0ZXMubGVuZ3RoICE9PSB0b3RhbE5lZWRlZFRlbXBsYXRlcykge1xyXG4gICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgYFByb1RhYmxlOiDmqKHmnb/mlbDph4/kuI3ljLnphY3vvIHpnIDopoEgJHt0b3RhbE5lZWRlZFRlbXBsYXRlc30g5Liq5YiX5qih5p2/77yM5a6e6ZmF5pyJICR7Y29sdW1uVGVtcGxhdGVzLmxlbmd0aH0g5Liq44CC6K+35qOA5p+lIGN1c3RvbVJlbmRlciDlkowgY3VzdG9tTGFiZWxSZW5kZXIg6YWN572u44CCYCxcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDms6jlhozoh6rlrprkuYnmuLLmn5PmqKHmnb9cclxuICAgIGNvbHVtbnNXaXRoQ3VzdG9tUmVuZGVyLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgdGVtcGxhdGVOYW1lID0gY29sdW1uLmN1c3RvbVJlbmRlciE7XHJcbiAgICAgIGlmIChpbmRleCA8IGNvbHVtblRlbXBsYXRlcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5zZXQodGVtcGxhdGVOYW1lLCBjb2x1bW5UZW1wbGF0ZXNbaW5kZXhdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgYFByb1RhYmxlOiDmnKrmib7liLDmqKHmnb8gXCIke3RlbXBsYXRlTmFtZX1cIu+8jOe0ouW8lSAke2luZGV4fSDotoXlh7rojIPlm7RgLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOazqOWGjOiHquWumuS5iWxhYmVs5qih5p2/77yI5LuOIGN1c3RvbVJlbmRlckNvdW50IOS5i+WQjuW8gOWni++8iVxyXG4gICAgY29sdW1uc1dpdGhDdXN0b21MYWJlbC5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRlbXBsYXRlTmFtZSA9IGNvbHVtbi5jdXN0b21MYWJlbFJlbmRlciE7XHJcbiAgICAgIGNvbnN0IHRlbXBsYXRlSW5kZXggPSBjdXN0b21SZW5kZXJDb3VudCArIGluZGV4O1xyXG4gICAgICBpZiAodGVtcGxhdGVJbmRleCA8IGNvbHVtblRlbXBsYXRlcy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5zZXQodGVtcGxhdGVOYW1lLCBjb2x1bW5UZW1wbGF0ZXNbdGVtcGxhdGVJbmRleF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICBgUHJvVGFibGU6IOacquaJvuWIsGxhYmVs5qih5p2/IFwiJHt0ZW1wbGF0ZU5hbWV9XCLvvIzntKLlvJUgJHt0ZW1wbGF0ZUluZGV4fSDotoXlh7rojIPlm7RgLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g5bCd6K+V5Zyo5pWw57uE5Lit5om+5Yiw5qih5p2/55qE57Si5byV77yI5L2/55So5aSa56eN5q+U6L6D5pa55byP77yJXHJcbiAgcHJpdmF0ZSBmaW5kVGVtcGxhdGVJbmRleChcclxuICAgIHRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdLFxyXG4gICAgdGFyZ2V0OiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICk6IG51bWJlciB7XHJcbiAgICAvLyDmlrnms5Ux77ya5byV55So55u4562J5oCnXHJcbiAgICBsZXQgaW5kZXggPSB0ZW1wbGF0ZXMuaW5kZXhPZih0YXJnZXQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkgcmV0dXJuIGluZGV4O1xyXG5cclxuICAgIC8vIOaWueazlTLvvJrpgJrov4cgZWxlbWVudFJlZiDmr5TovoNcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRSZWYgPSAodGFyZ2V0IGFzIGFueSkuZWxlbWVudFJlZjtcclxuICAgICAgaWYgKHRhcmdldEVsZW1lbnRSZWYpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXBsYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3QgdHBsRWxlbWVudFJlZiA9ICh0ZW1wbGF0ZXNbaV0gYXMgYW55KS5lbGVtZW50UmVmO1xyXG4gICAgICAgICAgaWYgKHRwbEVsZW1lbnRSZWYgPT09IHRhcmdldEVsZW1lbnRSZWYpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIOW/veeVpemUmeivr1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOaWueazlTPvvJrpgJrov4cgQW5ndWxhciDlhoXpg6jlsZ7mgKfmr5TovoNcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldENvbnRhaW5lciA9ICh0YXJnZXQgYXMgYW55KS5fZGVjbGFyYXRpb25UQ29udGFpbmVyO1xyXG4gICAgICBpZiAodGFyZ2V0Q29udGFpbmVyKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZW1wbGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IHRwbENvbnRhaW5lciA9ICh0ZW1wbGF0ZXNbaV0gYXMgYW55KS5fZGVjbGFyYXRpb25UQ29udGFpbmVyO1xyXG4gICAgICAgICAgaWYgKHRwbENvbnRhaW5lciA9PT0gdGFyZ2V0Q29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyDlv73nlaXplJnor69cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICAvLyDorr7nva7nrZvpgInooajljZXpu5jorqTlsZ7mgKdcclxuICBwcml2YXRlIHNldFNlYXJjaEZvcm1EZWZhdWx0UHJvcChjb2x1bW5zOiBQcm9UYWJsZUNvbHVtbltdKSB7XHJcbiAgICBjb2x1bW5zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKGl0ZW0udmFsdWVUeXBlKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZmllbGRQcm9wcykge1xyXG4gICAgICAgICAgaXRlbS5maWVsZFByb3BzID0ge1xyXG4gICAgICAgICAgICAuLi5QUk9fVEFCTEVfREVGQVVMVF9QUk9QU1tpdGVtLnZhbHVlVHlwZV0sXHJcbiAgICAgICAgICAgIC4uLml0ZW0uZmllbGRQcm9wcyxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGl0ZW0uZmllbGRQcm9wcyA9IHsgLi4uUFJPX1RBQkxFX0RFRkFVTFRfUFJPUFNbaXRlbS52YWx1ZVR5cGVdIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOWKqOaAgeiuvue9rk9wdGlvbnNcclxuICBwcml2YXRlIHNldFNlbGVjdFJlcXVlc3QoY29sdW1uczogUHJvVGFibGVDb2x1bW5bXSkge1xyXG4gICAgY29sdW1ucy5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKGl0ZW0uZmllbGRQcm9wcyAmJiBoYXNJbihpdGVtLmZpZWxkUHJvcHMsIFwicmVxdWVzdFwiKSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgKFxyXG4gICAgICAgICAgICBpdGVtLmZpZWxkUHJvcHMgYXMgU2VsZWN0RmllbGRQcm9wc1xyXG4gICAgICAgICAgKS5yZXF1ZXN0Py4oKTtcclxuICAgICAgICAgIChpdGVtLmZpZWxkUHJvcHMgYXMgU2VsZWN0RmllbGRQcm9wcykub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIChpdGVtLmZpZWxkUHJvcHMgYXMgU2VsZWN0RmllbGRQcm9wcykub3B0aW9ucyA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNldFNlYXJjaFBhcmFtcyhjb2x1bW5zOiBQcm9UYWJsZUNvbHVtbltdKSB7XHJcbiAgICB0aGlzLl9zZWFyY2hGaWxlZENvbHVtbnMgPSBbXTtcclxuICAgIGNvbHVtbnNcclxuICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZsYWcgPSAhaXRlbS5oaWRlSW5TZWFyY2ggJiYgaXRlbS52YWx1ZVR5cGU7XHJcbiAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgIHRoaXMuX3NlYXJjaEZpbGVkQ29sdW1ucy5wdXNoKGNsb25lRGVlcChpdGVtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmbGFnO1xyXG4gICAgICB9KVxyXG4gICAgICAuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gY29sdW1uLmZpZWxkUHJvcHM/Lm5hbWUgfHwgY29sdW1uLnByb3A7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IFBST19UQUJMRV9ERUZBVUxUX1BST1BTW2NvbHVtbi52YWx1ZVR5cGVdLnZhbHVlO1xyXG5cclxuICAgICAgICAvLyDlr7nkuo5jaGVja2JveOexu+Wei++8jOS7jm9wdGlvbnPkuK3mib7lh7pjaGVja2Vk5Li6dHJ1ZeeahOmhueS9nOS4uum7mOiupOWAvFxyXG4gICAgICAgIGlmIChjb2x1bW4udmFsdWVUeXBlID09PSBcImNoZWNrYm94XCIpIHtcclxuICAgICAgICAgIGNvbnN0IGNoZWNrZWRWYWx1ZXMgPSAoY29sdW1uLmZpZWxkUHJvcHM/Lm9wdGlvbnMgfHwgW10pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKG9wdDogT3B0aW9uc1R5cGUpID0+IG9wdC5jaGVja2VkKVxyXG4gICAgICAgICAgICAubWFwKChvcHQ6IE9wdGlvbnNUeXBlKSA9PiBvcHQudmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5fc2VhcmNoUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICBjaGVja2VkVmFsdWVzLmxlbmd0aCA+IDAgPyBjaGVja2VkVmFsdWVzIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl9zZWFyY2hQYXJhbXNba2V5XSA9IGNvbHVtbi5maWVsZFByb3BzPy52YWx1ZSB8fCBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDliJ3lp4vljJYgYXV0b0NvbXBsZXRlIOaVsOaNrua6kFxyXG4gICAgICAgIGlmIChjb2x1bW4udmFsdWVUeXBlID09PSBcImF1dG9Db21wbGV0ZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLl9hdXRvQ29tcGxldGVEYXRhU291cmNlc1trZXldID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyDmoLnmja7liJfnmoQgb3JkZXIg5a2X5q616L+b6KGM5o6S5bqP77yM5pyq6K6+572uIG9yZGVyIOeahOaUvuWcqOacgOWQjlxyXG4gICAgdGhpcy5fc2VhcmNoRmlsZWRDb2x1bW5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGFPcmRlciA9IGlzTmlsKGE/Lm9yZGVyKSA/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIDogYS5vcmRlcjtcclxuICAgICAgY29uc3QgYk9yZGVyID0gaXNOaWwoYj8ub3JkZXIpID8gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgOiBiLm9yZGVyO1xyXG4gICAgICBpZiAoYU9yZGVyID09PSBiT3JkZXIpIHJldHVybiAwO1xyXG4gICAgICByZXR1cm4gYU9yZGVyIC0gYk9yZGVyO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRTZWFyY2hGb3JtRGVmYXVsdFByb3AodGhpcy5fc2VhcmNoRmlsZWRDb2x1bW5zKTtcclxuXHJcbiAgICAvLyDlubblj5HliqDovb3miYDmnInpnIDopoHlvILmraXojrflj5bnmoTpgInpoblcclxuICAgIHRoaXMuc2V0U2VsZWN0UmVxdWVzdCh0aGlzLl9zZWFyY2hGaWxlZENvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVUYWJsZUNvbHVtbnMoaW5qZWN0Q29sdW1uczogUHJvVGFibGVDb2x1bW5bXSkge1xyXG4gICAgLy8g6L+c56iL5YiX55u05o6l5L2c5Li65p2l5rqQ77yM6L+H5ruk5o6J5pys5Zyw5LiN5a2Y5Zyo55qE5YiX77yM5bm25LuO5pys5Zyw5YiX6KGl5YWF5riy5p+T6YWN572uXHJcbiAgICBjb25zdCByZW1vdGVDb2x1bW5zID0gaW5qZWN0Q29sdW1uc1xyXG4gICAgICAuZmlsdGVyKChpbmplY3RDb2wpID0+XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnNvbWUoKGNvbCkgPT4gY29sLnByb3AgPT09IGluamVjdENvbC5wcm9wKSxcclxuICAgICAgKVxyXG4gICAgICAubWFwKChpbmplY3RDb2wpID0+IHtcclxuICAgICAgICBjb25zdCBsb2NhbENvbCA9IHRoaXMuY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5wcm9wID09PSBpbmplY3RDb2wucHJvcCk7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4ubG9jYWxDb2wsIC4uLmluamVjdENvbCB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAvLyDovoXliqnliJflj5boh6rmnKzlnLDvvIzkv53mjIHlnKjljp/lp4vkvY3nva7vvIjpppbpg6ggLyDlsL7pg6jvvIlcclxuICAgIGNvbnN0IGZpcnN0Tm9uQXV4SW5kZXggPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAoYykgPT4gIWMuYXV4aWxpYXJ5Q29sdW1uLFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGxhc3ROb25BdXhJbmRleCA9XHJcbiAgICAgIHRoaXMuY29sdW1ucy5sZW5ndGggLVxyXG4gICAgICAxIC1cclxuICAgICAgWy4uLnRoaXMuY29sdW1uc10ucmV2ZXJzZSgpLmZpbmRJbmRleCgoYykgPT4gIWMuYXV4aWxpYXJ5Q29sdW1uKTtcclxuICAgIGNvbnN0IGhlYWRBdXhpbGlhcnkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAoY29sLCBpKSA9PiBjb2wuYXV4aWxpYXJ5Q29sdW1uICYmIGkgPCBmaXJzdE5vbkF1eEluZGV4LFxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRhaWxBdXhpbGlhcnkgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAoY29sLCBpKSA9PiBjb2wuYXV4aWxpYXJ5Q29sdW1uICYmIGkgPiBsYXN0Tm9uQXV4SW5kZXgsXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuZm9ybWF0ZUlubmVyQ29sdW1ucyhbLi4uaGVhZEF1eGlsaWFyeSwgLi4ucmVtb3RlQ29sdW1ucywgLi4udGFpbEF1eGlsaWFyeV0pO1xyXG4gIH1cclxuXHJcbiAgLy8g6YCa6L+HIFByb3h5IOebkeWQrCBfc2VhcmNoUGFyYW1zIOeahOWxnuaAp+WPmOabtFxyXG4gIHByaXZhdGUgY3JlYXRlU2VhcmNoUGFyYW1zUHJveHkodGFyZ2V0OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgY29uc3QgaGFuZGxlcjogUHJveHlIYW5kbGVyPGFueT4gPSB7XHJcbiAgICAgIHNldChvYmo6IGFueSwgcHJvcDogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gU3RyaW5nKHByb3ApO1xyXG4gICAgICAgIGNvbnN0IG9sZFZhbCA9IG9ialtrZXldO1xyXG4gICAgICAgIGlmIChvbGRWYWwgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG9ialtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHNlbGYub25WYWx1ZXNDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICAgIHBhcmFtczogc2VsZi5nZXRTZWFyY2hQYXJhbXMoKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG5ldyBQcm94eSh0YXJnZXQsIGhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckVtcHR5U2VhcmNoUGFyYW1zKCkge1xyXG4gICAgY29uc3QgY2xvbmVTZWFyY2hQYXJhbXMgPSBjbG9uZURlZXAodGhpcy5fc2VhcmNoUGFyYW1zKTtcclxuICAgIHJldHVybiBjbG9uZVNlYXJjaFBhcmFtcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTZXJ2ZXJTb3J0UGF5bG9hZCgpIHtcclxuICAgIC8vIOaehOW7uua/gOa0u+aOkuW6j+mbhuWQiO+8iOaMieS8mOWFiOe6p+S7juS9juWIsOmrmO+8jOacq+WwvuS8mOWFiO+8iVxyXG4gICAgY29uc3QgYWN0aXZlS2V5cyA9IHRoaXMuX3NvcnRQcmlvcml0eS5maWx0ZXIoKGspID0+ICEhdGhpcy5fc29ydE1hcFtrXSk7XHJcbiAgICBpZiAoYWN0aXZlS2V5cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG4gICAgY29uc3Qgc29ydHMgPSBhY3RpdmVLZXlzLm1hcCgoZmllbGQpID0+IHtcclxuICAgICAgLy8g5p+l5om+5a+55bqU55qE5YiX6YWN572u77yM5LyY5YWI5L2/55Soc29ydE5hbWXlrZfmrrVcclxuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5wcm9wID09PSBmaWVsZCk7XHJcbiAgICAgIGNvbnN0IHNvcnRGaWVsZCA9IGNvbHVtbj8uc29ydE5hbWUgfHwgZmllbGQ7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmllbGQ6IHNvcnRGaWVsZCxcclxuICAgICAgICBvcmRlcjogdGhpcy5fc29ydE1hcFtmaWVsZF0hLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZVNvcnQpIHtcclxuICAgICAgcmV0dXJuIHNvcnRzOyAvLyDku6XmlbDnu4TlvaLlvI/mj5DkuqTlpJrliJfmjpLluo9cclxuICAgIH1cclxuICAgIGNvbnN0IFtmaXJzdF0gPSBzb3J0cztcclxuICAgIHJldHVybiBmaXJzdDsgLy8g5YW85a655Y2V5YiX57uT5p6EIHsgZmllbGQsIG9yZGVyIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc29ydERhdGFTb3VyY2VJblBsYWNlKCkge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNvdXJjZSkgfHwgdGhpcy5kYXRhU291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYWN0aXZlS2V5cyA9IHRoaXMuX3NvcnRQcmlvcml0eS5maWx0ZXIoKGspID0+ICEhdGhpcy5fc29ydE1hcFtrXSk7XHJcbiAgICBpZiAoYWN0aXZlS2V5cy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICAvLyDlpI3liLbkuIDku73kvJjlhYjnuqfvvIzku47liY3liLDlkI7kvJjlhYjnuqfku47kvY7liLDpq5jvvIjmnIDlkI7orr7nva7nmoTlrZfmrrXkvJjlhYjvvIlcclxuICAgIGNvbnN0IGtleXNJblByaW9yaXR5ID0gWy4uLmFjdGl2ZUtleXNdO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSBrZXlzSW5Qcmlvcml0eS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0ga2V5c0luUHJpb3JpdHlbaV07XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLl9zb3J0TWFwW2ZpZWxkXSE7XHJcbiAgICAgICAgY29uc3QgYXYgPSBhPy5bZmllbGRdO1xyXG4gICAgICAgIGNvbnN0IGJ2ID0gYj8uW2ZpZWxkXTtcclxuICAgICAgICBjb25zdCBjbXAgPSB0aGlzLmNvbXBhcmVWYWx1ZXMoYXYsIGJ2KTtcclxuICAgICAgICBpZiAoY21wICE9PSAwKSByZXR1cm4gb3JkZXIgPT09IFwiYXNjZW5kXCIgPyBjbXAgOiAtY21wO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmVWYWx1ZXMoYVZhbDogYW55LCBiVmFsOiBhbnkpOiBudW1iZXIge1xyXG4gICAgaWYgKGFWYWwgPT0gbnVsbCAmJiBiVmFsID09IG51bGwpIHJldHVybiAwO1xyXG4gICAgaWYgKGFWYWwgPT0gbnVsbCkgcmV0dXJuIC0xO1xyXG4gICAgaWYgKGJWYWwgPT0gbnVsbCkgcmV0dXJuIDE7XHJcbiAgICBpZiAoYVZhbCBpbnN0YW5jZW9mIERhdGUgJiYgYlZhbCBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgcmV0dXJuIGFWYWwuZ2V0VGltZSgpIC0gYlZhbC5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGFWYWwgPT09IFwiYm9vbGVhblwiICYmIHR5cGVvZiBiVmFsID09PSBcImJvb2xlYW5cIikge1xyXG4gICAgICByZXR1cm4gYVZhbCA9PT0gYlZhbCA/IDAgOiBhVmFsID8gMSA6IC0xO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBhVmFsID09PSBcIm51bWJlclwiICYmIHR5cGVvZiBiVmFsID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgIHJldHVybiBhVmFsIC0gYlZhbDtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgYVZhbCA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgYlZhbCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICByZXR1cm4gYVZhbC5sb2NhbGVDb21wYXJlKGJWYWwpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgYU51bSA9IE51bWJlcihhVmFsKTtcclxuICAgIGNvbnN0IGJOdW0gPSBOdW1iZXIoYlZhbCk7XHJcbiAgICBpZiAoIWlzTmFOKGFOdW0pICYmICFpc05hTihiTnVtKSkgcmV0dXJuIGFOdW0gLSBiTnVtO1xyXG4gICAgcmV0dXJuIFN0cmluZyhhVmFsKS5sb2NhbGVDb21wYXJlKFN0cmluZyhiVmFsKSk7XHJcbiAgfVxyXG5cclxuICAvLyDmiafooYwgYXV0b0NvbXBsZXRlIOaVsOaNrua6kOafpeivou+8iOWunumZheaJp+ihjOmAu+i+ke+8iVxyXG4gIHByaXZhdGUgZXhlY3V0ZUF1dG9Db21wbGV0ZURhdGFTb3VyY2UoZXZlbnQ6IEV2ZW50LCBjb2x1bW46IFByb1RhYmxlQ29sdW1uKSB7XHJcbiAgICBjb25zdCBmaWVsZEtleSA9IGNvbHVtbi5maWVsZFByb3BzPy5uYW1lIHx8IGNvbHVtbi5wcm9wO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgKGNvbHVtbi5maWVsZFByb3BzIGFzIEF1dG9Db21wbGV0ZUZpZWxkUHJvcHMpLmRhdGFTb3VyY2UgJiZcclxuICAgICAgdHlwZW9mIChjb2x1bW4uZmllbGRQcm9wcyBhcyBBdXRvQ29tcGxldGVGaWVsZFByb3BzKS5kYXRhU291cmNlID09PVxyXG4gICAgICAgIFwiZnVuY3Rpb25cIlxyXG4gICAgKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKGNvbHVtbi5maWVsZFByb3BzIGFzIEF1dG9Db21wbGV0ZUZpZWxkUHJvcHMpLmRhdGFTb3VyY2UoXHJcbiAgICAgICAgICBldmVudCxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIOWmguaenOi/lOWbnueahOaYryBQcm9taXNl77yM5aSE55CG5byC5q2l57uT5p6cXHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgIHJlc3VsdFxyXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2F1dG9Db21wbGV0ZURhdGFTb3VyY2VzW2ZpZWxkS2V5XSA9IGRhdGEgfHwgW107XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiQXV0b0NvbXBsZXRlIGRhdGFTb3VyY2UgZXJyb3I6XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgICB0aGlzLl9hdXRvQ29tcGxldGVEYXRhU291cmNlc1tmaWVsZEtleV0gPSBbXTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIOWQjOatpei/lOWbnue7k+aenFxyXG4gICAgICAgICAgdGhpcy5fYXV0b0NvbXBsZXRlRGF0YVNvdXJjZXNbZmllbGRLZXldID0gcmVzdWx0IHx8IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiQXV0b0NvbXBsZXRlIGRhdGFTb3VyY2UgZXJyb3I6XCIsIGVycm9yKTtcclxuICAgICAgICB0aGlzLl9hdXRvQ29tcGxldGVEYXRhU291cmNlc1tmaWVsZEtleV0gPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlYXJjaFBhcmFtcyhvcHRpb25zPzoge1xyXG4gICAgdXNlU2F2ZWQ/OiBib29sZWFuOyAvLyDkvb/nlKjmnIDov5HkuIDmrKHmn6Xor6Lmj5DkuqTnmoTlj4LmlbDvvIzpu5jorqTkuLogZmFsc2XvvJtmYWxzZSDkuLrlvZPliY3ooajljZXlgLxcclxuICB9KTogYW55IHtcclxuICAgIGNvbnN0IHsgdXNlU2F2ZWQgPSBmYWxzZSB9ID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IHJhd1BhcmFtcyA9IHVzZVNhdmVkID8gdGhpcy5fc2F2ZWRTZWFyY2hQYXJhbXMgOiB0aGlzLl9zZWFyY2hQYXJhbXM7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBjbG9uZURlZXAocmF3UGFyYW1zIHx8IHt9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXgsXHJcbiAgICAgICAgcGFnZVNpemU6IHRoaXMuX3BhZ2VJbmZvLnBhZ2VTaXplLFxyXG4gICAgICB9LFxyXG4gICAgICAvLyDlnKjnur/mjpLluo/mqKHlvI/vvJrmiormjpLluo/lr7nosaHmj5DkuqTnu5nmjqXlj6NcclxuICAgICAgLi4uKHRoaXMuc29ydE1vZGUgPT09IFwic2VydmVyXCJcclxuICAgICAgICA/IHsgc29ydDogdGhpcy5idWlsZFNlcnZlclNvcnRQYXlsb2FkKCkgfVxyXG4gICAgICAgIDoge30pLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWxvYWQoYWZ0ZXJEZWxldGU/OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmhhbmRsZVF1ZXJ5KGFmdGVyRGVsZXRlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRGaWVsZHNWYWx1ZShmaWVsZHM6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcclxuICAgIE9iamVjdC5rZXlzKGZpZWxkcykuZm9yRWFjaCgoaykgPT4ge1xyXG4gICAgICB0aGlzLl9zZWFyY2hQYXJhbXNba10gPSBmaWVsZHNba107IC8vIOS/neeVmSBQcm94ee+8jOmAkOmhuei1i+WAvOinpuWPkeaLpuaIqlxyXG5cclxuICAgICAgLy8gY2hlY2tib3gg57G75Z6L6ZyA6KaB5ZCM5q2l5pu05pawIG9wdGlvbnMg55qEIGNoZWNrZWQg54q25oCB77yM5ZCm5YiZIFVJIOS4jeS8muWTjeW6lFxyXG4gICAgICBjb25zdCB0YXJnZXRDb2x1bW4gPSB0aGlzLl9zZWFyY2hGaWxlZENvbHVtbnMuZmluZChcclxuICAgICAgICAoaXRlbSkgPT4gKGl0ZW0uZmllbGRQcm9wcz8ubmFtZSB8fCBpdGVtLnByb3ApID09PSBrLFxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uPy52YWx1ZVR5cGUgPT09IFwiY2hlY2tib3hcIikge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlczogYW55W10gPSBBcnJheS5pc0FycmF5KGZpZWxkc1trXSkgPyBmaWVsZHNba10gOiBbXTtcclxuICAgICAgICBjb25zdCB0YXJnZXRGaWVsZFByb3BzID0gdGFyZ2V0Q29sdW1uLmZpZWxkUHJvcHMgYXMgQ2hlY2tib3hGaWVsZFByb3BzO1xyXG4gICAgICAgIGlmICh0YXJnZXRGaWVsZFByb3BzPy5vcHRpb25zKSB7XHJcbiAgICAgICAgICB0YXJnZXRGaWVsZFByb3BzLm9wdGlvbnMgPSB0YXJnZXRGaWVsZFByb3BzLm9wdGlvbnMubWFwKFxyXG4gICAgICAgICAgICAoaXRlbTogT3B0aW9uc1R5cGUpID0+ICh7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgICBjaGVja2VkOiB2YWx1ZXMuaW5jbHVkZXMoaXRlbS52YWx1ZSksXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEZpZWxkVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuX3NlYXJjaFBhcmFtc1trZXldID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJTZWxlY3RlZFJvdygpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldENvbHVtbnMoXHJcbiAgICBjb2x1bW5zOiBQcm9UYWJsZUNvbHVtbltdLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgcmVsb2FkPzogYm9vbGVhbjsgLy8g5piv5ZCm6YeN5paw5Yqg6L295pWw5o2u77yM6buY6K6k5Li6IGZhbHNlXHJcbiAgICB9LFxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8g5pu05pawIGNvbHVtbnMg6L6T5YWl5bGe5oCnXHJcbiAgICB0aGlzLmNvbHVtbnMgPSBjbG9uZURlZXAoY29sdW1ucyk7XHJcblxyXG4gICAgLy8g6YeN5paw5qC85byP5YyW5YaF6YOo5YiXXHJcbiAgICB0aGlzLmZvcm1hdGVJbm5lckNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICAvLyDph43mlrDorr7nva7mkJzntKLlj4LmlbDvvIjlvILmraXmk43kvZzvvIlcclxuICAgIC8vIOWFiOa4heepuuaXp+eahOaQnOe0ouWPguaVsO+8jOmBv+WFjeaXp+aVsOaNruaui+eVmVxyXG4gICAgdGhpcy5fc2VhcmNoUGFyYW1zID0ge307XHJcbiAgICBhd2FpdCB0aGlzLnNldFNlYXJjaFBhcmFtcyh0aGlzLmNvbHVtbnMpO1xyXG5cclxuICAgIC8vIOmHjeaWsOWIm+W7uiBQcm94ee+8jOehruS/neihqOWNlemhueWAvOWPmOWMluiDveato+W4uOinpuWPkeS6i+S7tlxyXG4gICAgdGhpcy5fc2VhcmNoUGFyYW1zID0gdGhpcy5jcmVhdGVTZWFyY2hQYXJhbXNQcm94eSh0aGlzLl9zZWFyY2hQYXJhbXMpO1xyXG5cclxuICAgIC8vIOmHjeaWsOazqOWGjOaooeadv++8iOWmguaenOe7hOS7tuW3sue7j+WIneWni+WMluWujOaIkO+8iVxyXG4gICAgaWYgKHRoaXMuYWxsVGVtcGxhdGVzKSB7XHJcbiAgICAgIHRoaXMuYXV0b1JlZ2lzdGVyVGVtcGxhdGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aaC5p6c6K6+572u5LqGIHJlbG9hZCDpgInpobnkuLogdHJ1Ze+8jOWImemHjeaWsOafpeivouaVsOaNrlxyXG4gICAgaWYgKG9wdGlvbnM/LnJlbG9hZCA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRSb3dEYXRhPFQgPSBhbnk+KCk6IFQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkVGFibGVSb3c7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2hlY2tlZFJvd3M8VCA9IGFueT4oKTogVFtdIHtcclxuICAgIGlmICghdGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgLy8g6L+U5Zue5b2T5YmN5pWw5o2u5rqQ5Lit5omA5pyJIGNoZWNrZWQg5Li6IHRydWUg55qE6aG5XHJcbiAgICAvLyDms6jmhI/vvJrlpoLmnpzpnIDopoHojrflj5bmiYDmnInpobXnmoTpgInkuK3pobnvvIzpnIDopoHpgY3ljobmiYDmnInmlbDmja7mupDmiJbkvb/nlKggX3NlbGVjdGVkUm93SWRzXHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlLmZpbHRlcigocm93KSA9PiByb3cuY2hlY2tlZCA9PT0gdHJ1ZSkgYXMgVFtdO1xyXG4gIH1cclxuXHJcbiAgLy8g6I635Y+W5oyH5a6a5ZCN56ew55qE5qih5p2/XHJcbiAgZ2V0VGVtcGxhdGUobmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLmN1c3RvbVRlbXBsYXRlcy5nZXQobmFtZSkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFRvb2xUaXBUZXh0VmFsdWUoY29sdW1uOiBQcm9UYWJsZUNvbHVtbiwgZGF0YTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGtleSA9XHJcbiAgICAgIGNvbHVtbi5jdXN0b21SZW5kZXIgJiYgdGhpcy5nZXRUZW1wbGF0ZShjb2x1bW4uY3VzdG9tUmVuZGVyKVxyXG4gICAgICAgID8gXCJcIlxyXG4gICAgICAgIDogY29sdW1uLmVsbGlwc2lzXHJcbiAgICAgICAgICA/IGNvbHVtbi5wcm9wXHJcbiAgICAgICAgICA6IFwiXCI7XHJcbiAgICByZXR1cm4gIWtleSA/IFwiXCIgOiBkYXRhW2tleV07XHJcbiAgfVxyXG5cclxuICBnZXRUYWJsZVJvd0NoZWNrZWQoZGF0YTogYW55KSB7XHJcbiAgICAvLyDlkK/nlKjlpI3pgInmoYbml7bvvJrooYzpq5jkuq7lupTkuI7lpI3pgInmoYbpgInkuK3nirbmgIHkuIDoh7TvvIjmlK/mjIHlpJrpgInvvIlcclxuICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1Jvd0NoZWNrZWQoZGF0YSk7XHJcbiAgICB9XHJcbiAgICAvLyDmnKrlkK/nlKjlpI3pgInmoYbml7bvvJrku43nhLbkvb/nlKjljZXpgInooYzpq5jkuq5cclxuICAgIGlmICghdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdykgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuX3NlbGVjdGVkVGFibGVSb3cpID09PSBKU09OLnN0cmluZ2lmeShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8vIOajgOafpeihjOaYr+WQpuiiq+emgeeUqFxyXG4gIGlzUm93RGlzYWJsZWQoZGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0NoZWNrYm94KSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdGhpcy5yb3dEaXNhYmxlZCA/IHRoaXMucm93RGlzYWJsZWQoZGF0YSkgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIOajgOafpeihjOaYr+WQpuiiq+WkjemAieahhumAieS4re+8iOaVsOaNrumpseWKqOaooeW8j++8iVxyXG4gIGlzUm93Q2hlY2tlZChkYXRhOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5zaG93Q2hlY2tib3gpIHJldHVybiBmYWxzZTtcclxuICAgIC8vIOebtOaOpeivu+WPluaVsOaNruWvueixoeeahCBjaGVja2VkIOWxnuaAp1xyXG4gICAgcmV0dXJuIGRhdGEuY2hlY2tlZCA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIOWIh+aNouihjOeahOmAieS4reeKtuaAge+8iOaVsOaNrumpseWKqOaooeW8j++8jOS/neeVmeeUqOS6juWFvOWuue+8iVxyXG4gIHRvZ2dsZVJvd0NoZWNrZWQoZGF0YTogYW55LCBjaGVja2VkOiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIOmYu+atouS6i+S7tuWGkuazoe+8jOmBv+WFjeinpuWPkeihjOeCueWHu1xyXG4gICAgfVxyXG4gICAgLy8g5aaC5p6c6KGM6KKr56aB55So77yM5LiN5YWB6K645YiH5o2i6YCJ5Lit54q25oCBXHJcbiAgICBpZiAodGhpcy5pc1Jvd0Rpc2FibGVkKGRhdGEpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDnm7TmjqXorr7nva7mlbDmja7lr7nosaHnmoQgY2hlY2tlZCDlsZ7mgKdcclxuICAgIGRhdGEuY2hlY2tlZCA9IGNoZWNrZWQ7XHJcblxyXG4gICAgLy8g5ZCM5q2l5pu05pawIF9zZWxlY3RlZFJvd3PvvIjnlKjkuo7lhbzlrrnmgKfvvIlcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRSb3dzLmZpbmRJbmRleCgocm93KSA9PlxyXG4gICAgICB0aGlzLmlzU2FtZVJvdyhyb3csIGRhdGEpLFxyXG4gICAgKTtcclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MucHVzaChkYXRhKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDli77pgInlpI3pgInmoYbml7blkIzmraXorr7nva7pq5jkuq7pgInkuK3ooYxcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IGRhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiLpeW9k+WJjemrmOS6ruihjOS4uuivpeihjO+8jOWImeWPlua2iOmrmOS6rlxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyAmJlxyXG4gICAgICAgIHRoaXMuaXNTYW1lUm93KHRoaXMuX3NlbGVjdGVkVGFibGVSb3csIGRhdGEpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVDaGVja0FsbFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgLy8g5pu05paw5YWo6YCJ54q25oCB77yI5pWw5o2u6amx5Yqo5qih5byP77yJXHJcbiAgdXBkYXRlQ2hlY2tBbGxTdGF0dXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0NoZWNrYm94IHx8ICFBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNvdXJjZSkpIHtcclxuICAgICAgdGhpcy5fY2hlY2tlZEFsbCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIOWPquiuoeeul+WPr+eUqOeahOihjO+8iOacquemgeeUqOeahOihjO+8iVxyXG4gICAgY29uc3QgYXZhaWxhYmxlUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoXHJcbiAgICAgIChyb3cpID0+ICF0aGlzLmlzUm93RGlzYWJsZWQocm93KSxcclxuICAgICk7XHJcbiAgICAvLyDln7rkuo7mlbDmja7lr7nosaHnmoQgY2hlY2tlZCDlsZ7mgKforqHnrpdcclxuICAgIGNvbnN0IGNoZWNrZWRDb3VudCA9IGF2YWlsYWJsZVJvd3MuZmlsdGVyKFxyXG4gICAgICAocm93KSA9PiByb3cuY2hlY2tlZCA9PT0gdHJ1ZSxcclxuICAgICkubGVuZ3RoO1xyXG4gICAgY29uc3QgdG90YWxDb3VudCA9IGF2YWlsYWJsZVJvd3MubGVuZ3RoO1xyXG4gICAgdGhpcy5fY2hlY2tlZEFsbCA9XHJcbiAgICAgIHRvdGFsQ291bnQgPiAwICYmIGNoZWNrZWRDb3VudCA+IDAgJiYgY2hlY2tlZENvdW50ID09PSB0b3RhbENvdW50O1xyXG4gICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGNoZWNrZWRDb3VudCA+IDAgJiYgY2hlY2tlZENvdW50IDwgdG90YWxDb3VudDtcclxuICB9XHJcblxyXG4gIC8vIOWFqOmAiS/lj5bmtojlhajpgInvvIjmlbDmja7pqbHliqjmqKHlvI/vvIlcclxuICB0b2dnbGVDaGVja0FsbChjaGVja2VkOiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5Y+q5aSE55CG5Y+v55So55qE6KGM77yI5pyq56aB55So55qE6KGM77yJXHJcbiAgICBjb25zdCBhdmFpbGFibGVSb3dzID0gdGhpcy5kYXRhU291cmNlLmZpbHRlcihcclxuICAgICAgKHJvdykgPT4gIXRoaXMuaXNSb3dEaXNhYmxlZChyb3cpLFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyDmibnph4/orr7nva4gY2hlY2tlZCDlsZ7mgKdcclxuICAgIGF2YWlsYWJsZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICAgIHJvdy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIOWQjOatpeabtOaWsCBfc2VsZWN0ZWRSb3dz77yI55So5LqO5YW85a655oCn77yJXHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MgPSBbLi4uYXZhaWxhYmxlUm93c107XHJcbiAgICAgIC8vIOWQjOatpeiuvue9rumrmOS6rumAieS4reihjOS4uuesrOS4gOadoeWPr+mAieaVsOaNrlxyXG4gICAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID1cclxuICAgICAgICBhdmFpbGFibGVSb3dzLmxlbmd0aCA+IDAgPyBhdmFpbGFibGVSb3dzWzBdIDogbnVsbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cyA9IFtdO1xyXG4gICAgICAvLyDlj5bmtojpq5jkuq5cclxuICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVDaGVja0FsbFN0YXR1cygpO1xyXG4gIH1cclxuXHJcbiAgLy8g6I635Y+W6YCJ5Lit55qE6KGM5pWw5o2u77yI5L+d55WZ55So5LqO5YW85a655oCn77yJXHJcbiAgZ2V0U2VsZWN0ZWRSb3dzKCk6IGFueVtdIHtcclxuICAgIHJldHVybiB0aGlzLmdldENoZWNrZWRSb3dzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDlpITnkIbooYwgY2hlY2tib3gg5Y+Y5YyW5LqL5Lu277yI5pWw5o2u6amx5Yqo5qih5byP77yJXHJcbiAgaGFuZGxlUm93Q2hlY2tlZENoYW5nZShkYXRhOiBhbnksIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzUm93RGlzYWJsZWQoZGF0YSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOaVsOaNruWvueixoeeahCBjaGVja2VkIOWxnuaAp+W3sue7j+mAmui/h+WPjOWQkee7keWumuiHquWKqOabtOaWsFxyXG4gICAgLy8g6L+Z6YeM5Y+q6ZyA6KaB5ZCM5q2l5pu05pawIF9zZWxlY3RlZFJvd3NcclxuXHJcbiAgICAvLyDlkIzmraXmm7TmlrAgX3NlbGVjdGVkUm93c++8iOeUqOS6juWFvOWuueaAp++8iVxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9zZWxlY3RlZFJvd3MuZmluZEluZGV4KChyb3cpID0+XHJcbiAgICAgIHRoaXMuaXNTYW1lUm93KHJvdywgZGF0YSksXHJcbiAgICApO1xyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5wdXNoKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOWLvumAieWkjemAieahhuaXtuWQjOatpeiuvue9rumrmOS6rumAieS4reihjFxyXG4gICAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID0gZGF0YTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g6Iul5b2T5YmN6auY5Lqu6KGM5Li66K+l6KGM77yM5YiZ5Y+W5raI6auY5LquXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ICYmXHJcbiAgICAgICAgdGhpcy5pc1NhbWVSb3codGhpcy5fc2VsZWN0ZWRUYWJsZVJvdywgZGF0YSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDmm7TmlrDlhajpgInnirbmgIFcclxuICAgIHRoaXMudXBkYXRlQ2hlY2tBbGxTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIC8vIOWIt+aWsOWFqOmAieeKtuaAge+8iOeUqOS6juWFtuS7luWcuuaZr++8iVxyXG4gIHJlZnJlc2hDaGVja0FsbFN0YXR1cygpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRlQ2hlY2tBbGxTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluihjOeahOWUr+S4gOagh+ivhu+8iOeUqOS6jui3qOmhtemAieS4re+8iVxyXG4gIHByaXZhdGUgZ2V0Um93SWQoZGF0YTogYW55KTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBkYXRhLmlkID8/IGRhdGEua2V5ID8/IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8vIOWIpOaWreS4pOihjOaYr+WQpuS4uuWQjOS4gOihjFxyXG4gIHByaXZhdGUgaXNTYW1lUm93KHJvdzE6IGFueSwgcm93MjogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpZDEgPSB0aGlzLmdldFJvd0lkKHJvdzEpO1xyXG4gICAgY29uc3QgaWQyID0gdGhpcy5nZXRSb3dJZChyb3cyKTtcclxuXHJcbiAgICBpZiAoaWQxICE9PSB1bmRlZmluZWQgJiYgaWQyICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGlkMSA9PT0gaWQyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGZhbGxiYWNrIOWIsCBKU09OIOavlOi+g1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHJvdzEpID09PSBKU09OLnN0cmluZ2lmeShyb3cyKTtcclxuICB9XHJcblxyXG4gIC8vIOa4heepuumAieS4reeahOihjO+8iOaVsOaNrumpseWKqOaooeW8j++8iVxyXG4gIGNsZWFyU2VsZWN0ZWRSb3dzKCkge1xyXG4gICAgLy8g5riF56m65b2T5YmN5pWw5o2u5rqQ5Lit5omA5pyJ6aG555qEIGNoZWNrZWQg54q25oCBXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5mb3JFYWNoKChyb3cpID0+IHtcclxuICAgICAgICByb3cuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MgPSBbXTtcclxuICAgIHRoaXMuX2NoZWNrZWRBbGwgPSBmYWxzZTtcclxuICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlRmllbGRDaGVja0JveENoYW5nZShjaGVja0JveE9wdGlvbnM6IE9wdGlvbnNUeXBlW10sIGtleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNldEZpZWxkc1ZhbHVlKHtcclxuICAgICAgW2tleV06IGNoZWNrQm94T3B0aW9uc1xyXG4gICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZClcclxuICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLnZhbHVlKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU2VhcmNoKCkge1xyXG4gICAgdGhpcy5fc2F2ZWRTZWFyY2hQYXJhbXMgPSB0aGlzLmNsZWFyRW1wdHlTZWFyY2hQYXJhbXMoKTtcclxuICAgIHRoaXMuX3BhZ2VJbmZvLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNldEZvcm0oKSB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLl9zZWFyY2hQYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBjb25zdCB0YXJnZXRDb2x1bW4gPSB0aGlzLl9zZWFyY2hGaWxlZENvbHVtbnMuZmluZCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoaXRlbS5maWVsZFByb3BzPy5uYW1lIHx8IGl0ZW0ucHJvcCkgPT09IGtleTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyDlr7nkuo5jaGVja2JveOexu+Wei++8jOmcgOimgeeJueauiuWkhOeQhum7mOiupOWAvFxyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uPy52YWx1ZVR5cGUgPT09IFwiY2hlY2tib3hcIikge1xyXG4gICAgICAgIC8vIOS7juWOn+Wni2NvbHVtbnPphY3nva7kuK3ojrflj5bliJ3lp4vphY3nva7vvIzku6Xnoa7kv53kvb/nlKjmraPnoa7nmoTpu5jorqTlgLxcclxuICAgICAgICBjb25zdCBvcmlnaW5hbENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKGl0ZW0uZmllbGRQcm9wcz8ubmFtZSB8fCBpdGVtLnByb3ApID09PSBrZXk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOS7juWOn+Wni29wdGlvbnPkuK3mib7lh7pjaGVja2Vk5Li6dHJ1ZeeahOmhueS9nOS4uum7mOiupOWAvFxyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRmllbGRQcm9wcyA9IG9yaWdpbmFsQ29sdW1uPy5maWVsZFByb3BzIGFzXHJcbiAgICAgICAgICB8IENoZWNrYm94RmllbGRQcm9wc1xyXG4gICAgICAgICAgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgY2hlY2tlZFZhbHVlcyA9IChvcmlnaW5hbEZpZWxkUHJvcHM/Lm9wdGlvbnMgfHwgW10pXHJcbiAgICAgICAgICAuZmlsdGVyKChvcHQ6IE9wdGlvbnNUeXBlKSA9PiBvcHQuY2hlY2tlZClcclxuICAgICAgICAgIC5tYXAoKG9wdDogT3B0aW9uc1R5cGUpID0+IG9wdC52YWx1ZSk7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID1cclxuICAgICAgICAgIGNoZWNrZWRWYWx1ZXMubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICA/IGNoZWNrZWRWYWx1ZXNcclxuICAgICAgICAgICAgOiBQUk9fVEFCTEVfREVGQVVMVF9QUk9QU1t0YXJnZXRDb2x1bW4udmFsdWVUeXBlXS52YWx1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFyYW1zW2tleV0gPSBkZWZhdWx0VmFsdWU7XHJcblxyXG4gICAgICAgIC8vIOagueaNrum7mOiupOWAvOaBouWkjW9wdGlvbnPnmoRjaGVja2Vk54q25oCB77yM5L2/55So5Y6f5aeLb3B0aW9uc+eahOe7k+aehFxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZXMgPSBBcnJheS5pc0FycmF5KGRlZmF1bHRWYWx1ZSkgPyBkZWZhdWx0VmFsdWUgOiBbXTtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbE9wdGlvbnMgPSBvcmlnaW5hbEZpZWxkUHJvcHM/Lm9wdGlvbnMgfHwgW107XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0RmllbGRQcm9wcyA9IHRhcmdldENvbHVtbi5maWVsZFByb3BzIGFzIENoZWNrYm94RmllbGRQcm9wcztcclxuICAgICAgICB0YXJnZXRGaWVsZFByb3BzLm9wdGlvbnMgPSBvcmlnaW5hbE9wdGlvbnMubWFwKChpdGVtOiBPcHRpb25zVHlwZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgY2hlY2tlZDogZGVmYXVsdFZhbHVlcy5pbmNsdWRlcyhpdGVtLnZhbHVlKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fc2VhcmNoUGFyYW1zW2tleV0gPSB0YXJnZXRDb2x1bW4/LmZpZWxkUHJvcHNcclxuICAgICAgICAgID8gdGFyZ2V0Q29sdW1uPy5maWVsZFByb3BzLnZhbHVlIHx8XHJcbiAgICAgICAgICAgIFBST19UQUJMRV9ERUZBVUxUX1BST1BTW3RhcmdldENvbHVtbi52YWx1ZVR5cGVdLnZhbHVlXHJcbiAgICAgICAgICA6IFBST19UQUJMRV9ERUZBVUxUX1BST1BTW3RhcmdldENvbHVtbi52YWx1ZVR5cGVdLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zYXZlZFNlYXJjaFBhcmFtcyA9IHt9O1xyXG4gICAgdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4ID0gMTtcclxuICAgIHRoaXMub25SZXNldEZvcm1CZWZvcmVSZWxvYWQuZW1pdCgpO1xyXG4gICAgdGhpcy5oYW5kbGVRdWVyeSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGFnZUluZGV4Q2hhbmdlKHBhZ2VJbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXggPSBwYWdlSW5kZXg7XHJcbiAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLl9wYWdlSW5mby5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4ID0gMTtcclxuICAgIHRoaXMuaGFuZGxlUXVlcnkoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZVF1ZXJ5KGFmdGVyRGVsZXRlPzogYm9vbGVhbikge1xyXG4gICAgLy8g5Yig6Zmk5ZCO5Yi35paw5LiU5b2T5YmN6aG15LuF5Ymp5LiA5p2h6K6w5b2V5pe277yM6Iul5LiN5Zyo56ys5LiA6aG15YiZ5YWI5Zue6YCA5LiA6aG1XHJcbiAgICBpZiAoXHJcbiAgICAgIGFmdGVyRGVsZXRlICYmXHJcbiAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5kYXRhU291cmNlKSAmJlxyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoID09PSAxICYmXHJcbiAgICAgIHRoaXMuX3BhZ2VJbmZvLnBhZ2VJbmRleCA+IDFcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXggPSB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXggLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2xvYWRpbmcgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMucmVxdWVzdCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdCh7XHJcbiAgICAgICAgICBwYXJhbXM6IHRoaXMuY2xlYXJFbXB0eVNlYXJjaFBhcmFtcygpLFxyXG4gICAgICAgICAgcGFnZUluZm86IHtcclxuICAgICAgICAgICAgcGFnZUluZGV4OiB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXgsXHJcbiAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLl9wYWdlSW5mby5wYWdlU2l6ZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyDlnKjnur/mjpLluo/mqKHlvI/vvJrmiormjpLluo/lr7nosaHmj5DkuqTnu5nmjqXlj6NcclxuICAgICAgICAgIC4uLih0aGlzLnNvcnRNb2RlID09PSBcInNlcnZlclwiXHJcbiAgICAgICAgICAgID8geyBzb3J0OiB0aGlzLmJ1aWxkU2VydmVyU29ydFBheWxvYWQoKSB9XHJcbiAgICAgICAgICAgIDoge30pLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDmn6Xor6LlkI7pu5jorqTkuI3kv53nlZnot6jpobXpgInkuK3nirbmgIHvvJrmr4/mrKHov5Tlm57nmoTmlbDmja7lnYfliJ3lp4vljJbkuLrmnKrpgInkuK1cclxuICAgICAgICBpZiAodGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IChyZXN1bHQuZGF0YSB8fCBbXSkubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSByZXN1bHQuZGF0YSB8fCBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc3VtbWFyeURhdGEgPSByZXN1bHQuc3VtbWFyeURhdGEgfHwgbnVsbDtcclxuICAgICAgICAvLyDmnKzlnLDmjpLluo/mqKHlvI/vvJrmi7/liLDmlbDmja7lkI7lnKjliY3nq6/mjpLluo9cclxuICAgICAgICBpZiAodGhpcy5zb3J0TW9kZSA9PT0gXCJsb2NhbFwiKSB7XHJcbiAgICAgICAgICB0aGlzLnNvcnREYXRhU291cmNlSW5QbGFjZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9wYWdlSW5mby50b3RhbCA9IHJlc3VsdC50b3RhbCB8fCAwO1xyXG4gICAgICAgIC8vIOWPlua2iOi3qOmhteWkmumAie+8muafpeivouWQjua4heepuumAieS4reeKtuaAgVxyXG4gICAgICAgIGlmICh0aGlzLnNob3dDaGVja2JveCkge1xyXG4gICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkUm93cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwi5p+l6K+i5aSx6LSlOlwiLCBlcnJvcik7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gW107XHJcbiAgICAgICAgdGhpcy5fcGFnZUluZm8udG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMuc3VtbWFyeURhdGEgPSBudWxsO1xyXG4gICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS53YXJuKFwi5pyq5o+Q5L6bIF9yZXF1ZXN0IOWbnuiwg+WHveaVsFwiKTtcclxuICAgICAgdGhpcy5fbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g6Kem5Y+R5YiX5o6S5bqP5Y+Y5pu0XHJcbiAgb25Tb3J0Q2hhbmdlKHNvcnRLZXk6IHN0cmluZywgc29ydE9yZGVyOiBcImFzY2VuZFwiIHwgXCJkZXNjZW5kXCIgfCBudWxsKSB7XHJcbiAgICAvLyDljZXliJfmjpLluo/vvJrph43nva7lhbblroPliJfvvJvlpJrliJfmjpLluo/vvJrkv53nlZnlhbblroPliJdcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZVNvcnQpIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5fc29ydE1hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKGtleSAhPT0gc29ydEtleSkgdGhpcy5fc29ydE1hcFtrZXldID0gbnVsbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zb3J0TWFwW3NvcnRLZXldID0gc29ydE9yZGVyO1xyXG5cclxuICAgIC8vIOe7tOaKpOS8mOWFiOe6p+mYn+WIl++8muacieW6j+WIl+S4lOmdnuepuiAtPiDnva7kuo7mnKvlsL7vvJvkuLrnqbogLT4g56e76ZmkXHJcbiAgICB0aGlzLl9zb3J0UHJpb3JpdHkgPSB0aGlzLl9zb3J0UHJpb3JpdHkuZmlsdGVyKChrKSA9PiBrICE9PSBzb3J0S2V5KTtcclxuICAgIGlmIChzb3J0T3JkZXIpIHtcclxuICAgICAgdGhpcy5fc29ydFByaW9yaXR5LnB1c2goc29ydEtleSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc29ydE1vZGUgPT09IFwibG9jYWxcIikge1xyXG4gICAgICB0aGlzLnNvcnREYXRhU291cmNlSW5QbGFjZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g5Zyo57q/5o6S5bqP77ya6YeN5paw6K+35rGCXHJcbiAgICAgIHRoaXMuaGFuZGxlUXVlcnkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFNvcnRPcmRlcihzb3J0S2V5OiBzdHJpbmcpOiBcImFzY2VuZFwiIHwgXCJkZXNjZW5kXCIgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0TWFwW3NvcnRLZXldIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVUYWJsZVJvd0NsaWNrKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IGRhdGE7XHJcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3ggJiYgIXRoaXMuaXNSb3dEaXNhYmxlZChkYXRhKSkge1xyXG4gICAgICAvLyDlhYjmuIXnqbrmiYDmnInpgInkuK3ooYxcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzID0gW107XHJcbiAgICAgIGNvbnN0IG5leHRDaGVja2VkID0gIXRoaXMuaXNSb3dDaGVja2VkKGRhdGEpO1xyXG4gICAgICB0aGlzLnRvZ2dsZVJvd0NoZWNrZWQoZGF0YSwgbmV4dENoZWNrZWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vblJvd0NsaWNrLmVtaXQodGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVUYWJsZVJvd0RiQ2xpY2soZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID0gZGF0YTtcclxuICAgIHRoaXMub25Sb3dEYkNsaWNrLmVtaXQodGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb2x1bW5zU2V0dGluZ0NvbmZpcm0oKSB7XHJcbiAgICB0aGlzLnF1ZXJ5RHluYW1pY0NvbHVtbnMoKTtcclxuICB9XHJcblxyXG4gIC8vIOWkhOeQhiBhdXRvQ29tcGxldGUg6L6T5YWl5LqL5Lu277yI5bim6Ziy5oqW77yJXHJcbiAgaGFuZGxlQXV0b0NvbXBsZXRlSW5wdXQoZXZlbnQ6IEV2ZW50LCBjb2x1bW46IFByb1RhYmxlQ29sdW1uKSB7XHJcbiAgICBjb25zdCBmaWVsZEtleSA9IGNvbHVtbi5maWVsZFByb3BzPy5uYW1lIHx8IGNvbHVtbi5wcm9wO1xyXG5cclxuICAgIC8vIOWmguaenOivpeWtl+autei/mOayoeaciemYsuaKluWHveaVsO+8jOWIm+W7uuS4gOS4qlxyXG4gICAgaWYgKCF0aGlzLl9hdXRvQ29tcGxldGVEZWJvdW5jZU1hcC5oYXMoZmllbGRLZXkpKSB7XHJcbiAgICAgIGNvbnN0IGRlYm91bmNlZEZuID0gZGVib3VuY2UoKGV2dDogRXZlbnQpID0+IHtcclxuICAgICAgICAvLyDph43mlrDmn6Xmib7lr7nlupTnmoQgY29sdW1u77yM56Gu5L+d5L2/55So5pyA5paw55qE6YWN572uXHJcbiAgICAgICAgY29uc3QgY3VycmVudENvbHVtbiA9IHRoaXMuX3NlYXJjaEZpbGVkQ29sdW1ucy5maW5kKFxyXG4gICAgICAgICAgKGNvbCkgPT4gKGNvbC5maWVsZFByb3BzPy5uYW1lIHx8IGNvbC5wcm9wKSA9PT0gZmllbGRLZXksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY3VycmVudENvbHVtbikge1xyXG4gICAgICAgICAgdGhpcy5leGVjdXRlQXV0b0NvbXBsZXRlRGF0YVNvdXJjZShldnQsIGN1cnJlbnRDb2x1bW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMzAwKTsgLy8gMzAwbXMg6Ziy5oqW5bu26L+fXHJcbiAgICAgIHRoaXMuX2F1dG9Db21wbGV0ZURlYm91bmNlTWFwLnNldChmaWVsZEtleSwgZGVib3VuY2VkRm4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOiwg+eUqOmYsuaKluWHveaVsFxyXG4gICAgY29uc3QgZGVib3VuY2VkRm4gPSB0aGlzLl9hdXRvQ29tcGxldGVEZWJvdW5jZU1hcC5nZXQoZmllbGRLZXkpO1xyXG4gICAgaWYgKGRlYm91bmNlZEZuKSB7XHJcbiAgICAgIGRlYm91bmNlZEZuKGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOiOt+WPliBhdXRvQ29tcGxldGUg55qE5pWw5o2u5rqQXHJcbiAgZ2V0QXV0b0NvbXBsZXRlRGF0YVNvdXJjZShjb2x1bW46IFByb1RhYmxlQ29sdW1uKTogYW55W10ge1xyXG4gICAgY29uc3QgZmllbGRLZXkgPSBjb2x1bW4uZmllbGRQcm9wcz8ubmFtZSB8fCBjb2x1bW4ucHJvcDtcclxuICAgIHJldHVybiB0aGlzLl9hdXRvQ29tcGxldGVEYXRhU291cmNlc1tmaWVsZEtleV0gfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZFByb3BzKGNvbHVtbjogUHJvVGFibGVDb2x1bW4pOiBhbnkge1xyXG4gICAgcmV0dXJuIGNvbHVtbi5maWVsZFByb3BzO1xyXG4gIH1cclxuXHJcbiAgLy8g6I635Y+W5oyH5a6a5ZCN56ew55qEbGFiZWzmqKHmnb9cclxuICBnZXRMYWJlbFRlbXBsYXRlKG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5jdXN0b21UZW1wbGF0ZXMuZ2V0KG5hbWUpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyDojrflj5YgZm9ybS1pdGVtIOeahOWKqOaAgeexu+WQjVxyXG4gIGdldEZvcm1JdGVtQ2xhc3NOYW1lKGNvbHVtbjogUHJvVGFibGVDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZmllbGROYW1lID0gdGhpcy5nZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcDtcclxuICAgIHJldHVybiBgcHJvLXRhYmxlLSR7ZmllbGROYW1lfS1mb3JtLWl0ZW1gO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLXBhZ2UtY29udGFpbmVyXHJcbiAgW3RpdGxlXT1cInRpdGxlXCJcclxuICBbc2hvd0hlYWRlcl09XCJzaG93U2VhcmNoQmFyXCJcclxuICBuZ0NsYXNzPVwicHJvLXRhYmxlLWNvbnRhaW5lclwiXHJcbj5cclxuICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cclxuICAgIDxhcHAtdGFibGUtc2VhcmNoLWJhclxyXG4gICAgICAqbmdJZj1cInNob3dTZWFyY2hCYXJcIlxyXG4gICAgICBbbGFiZWxXaWR0aF09XCJsYWJlbFdpZHRoXCJcclxuICAgICAgW2xhYmVsQWxpZ25dPVwibGFiZWxBbGlnblwiXHJcbiAgICAgIFtmb3JtSXRlbVdpZHRoXT1cImZvcm1JdGVtV2lkdGhcIlxyXG4gICAgPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2xlZnRDb250ZW50PlxyXG4gICAgICAgIDxuei1mb3JtLWl0ZW1cclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgX3NlYXJjaEZpbGVkQ29sdW1uc1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRGb3JtSXRlbUNsYXNzTmFtZShjb2x1bW4pXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bnotZm9ybS1sYWJlbCAqbmdJZj1cIiFnZXRGaWVsZFByb3BzKGNvbHVtbikuaGlkZUxhYmVsXCIgbnpOb0NvbG9uPlxyXG4gICAgICAgICAgICA8IS0tIOajgOafpeaYr+WQpuacieiHquWumuS5iWxhYmVs5qih5p2/IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jdXN0b21MYWJlbFJlbmRlciAmJlxyXG4gICAgICAgICAgICAgICAgICBnZXRMYWJlbFRlbXBsYXRlKGNvbHVtbi5jdXN0b21MYWJlbFJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGRlZmF1bHRMYWJlbFxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRMYWJlbFRlbXBsYXRlKGNvbHVtbi5jdXN0b21MYWJlbFJlbmRlcilcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICBmaWVsZFByb3BzOiBnZXRGaWVsZFByb3BzKGNvbHVtbilcclxuICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IGdldEZpZWxkUHJvcHMoY29sdW1uKS5sYWJlbCB8fCBjb2x1bW4udGl0bGUgfX1cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbnotZm9ybS1sYWJlbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgKm5nSWY9XCJjb2x1bW4udmFsdWVUeXBlID09PSAnaW5wdXQnXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIG56LWlucHV0XHJcbiAgICAgICAgICAgICAgW25hbWVdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikucGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiXHJcbiAgICAgICAgICAgICAgICBfc2VhcmNoUGFyYW1zW2dldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgKm5nSWY9XCJjb2x1bW4udmFsdWVUeXBlID09PSAnaW5wdXRQbGF0ZSdcIj5cclxuICAgICAgICAgICAgPGFwcC1wbGF0ZS1pbnB1dFxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxyXG4gICAgICAgICAgICAgICAgX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9hcHAtcGxhdGUtaW5wdXQ+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgKm5nSWY9XCJjb2x1bW4udmFsdWVUeXBlID09PSAnc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcclxuICAgICAgICAgICAgICAgIF9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbbnpBbGxvd0NsZWFyXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5hbGxvd0NsZWFyXCJcclxuICAgICAgICAgICAgICBbbnpQbGFjZUhvbGRlcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikucGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXCJcclxuICAgICAgICAgICAgICBbbnpPcHRpb25zXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5vcHRpb25zXCJcclxuICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbnotc2VsZWN0PlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ3NlbGVjdE11bHRpcGxlJ1wiPlxyXG4gICAgICAgICAgICA8bnotc2VsZWN0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcclxuICAgICAgICAgICAgICAgIF9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbbnpBbGxvd0NsZWFyXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5hbGxvd0NsZWFyXCJcclxuICAgICAgICAgICAgICBbbnpQbGFjZUhvbGRlcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikucGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXCJcclxuICAgICAgICAgICAgICBbbnpPcHRpb25zXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5vcHRpb25zXCJcclxuICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIG56TW9kZT1cIm11bHRpcGxlXCJcclxuICAgICAgICAgICAgICBbbnpNYXhUYWdDb3VudF09XCIyXCJcclxuICAgICAgICAgICAgICBbbnpNYXhUYWdQbGFjZWhvbGRlcl09XCJuek1heFRhZ1BsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbbnpDdXN0b21UZW1wbGF0ZV09XCJkZWZhdWx0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNuek1heFRhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgK1xyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICAgICAgICA/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlIGxldC1zZWxlY3RlZD5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkLm56TGFiZWwubGVuZ3RoID4gNCA/IHNlbGVjdGVkLm56TGFiZWwuc3Vic3RyaW5nKDAsIDQpICsgJy4uLicgOiBzZWxlY3RlZC5uekxhYmVsIH19XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uei1zZWxlY3Q+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgKm5nSWY9XCJjb2x1bW4udmFsdWVUeXBlID09PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgPG56LWRhdGUtcGlja2VyXHJcbiAgICAgICAgICAgICAgW256U2hvd1RpbWVdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnNob3dUaW1lXCJcclxuICAgICAgICAgICAgICBbbnpGb3JtYXRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICBbbnpBbGxvd0NsZWFyXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5hbGxvd0NsZWFyXCJcclxuICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiXHJcbiAgICAgICAgICAgICAgICBfc2VhcmNoUGFyYW1zW2dldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW256TW9kZV09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikubW9kZVwiXHJcbiAgICAgICAgICAgID48L256LWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2NoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICA8bnotY2hlY2tib3gtZ3JvdXBcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICBnZXRGaWVsZFByb3BzKGNvbHVtbikubm9TdHlsZVxyXG4gICAgICAgICAgICAgICAgICA/ICdwcm8tdGFibGUtY2hlY2tib3hncm91cC1ub3N0eWxlJ1xyXG4gICAgICAgICAgICAgICAgICA6ICcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5vcHRpb25zXCJcclxuICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIlxyXG4gICAgICAgICAgICAgICAgaGFuZGxlRmllbGRDaGVja0JveENoYW5nZShcclxuICAgICAgICAgICAgICAgICAgJGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICBnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L256LWNoZWNrYm94LWdyb3VwPlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2F1dG9Db21wbGV0ZSdcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgbnotaW5wdXRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxyXG4gICAgICAgICAgICAgICAgX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbik/Lm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAoaW5wdXQpPVwiaGFuZGxlQXV0b0NvbXBsZXRlSW5wdXQoJGV2ZW50LCBjb2x1bW4pXCJcclxuICAgICAgICAgICAgICBbbnpBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKT8uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbik/LnBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPG56LWF1dG9jb21wbGV0ZVxyXG4gICAgICAgICAgICAgIFtuekJhY2tmaWxsXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5iYWNrRmlsbFwiXHJcbiAgICAgICAgICAgICAgW256RGVmYXVsdEFjdGl2ZUZpcnN0T3B0aW9uXT1cIlxyXG4gICAgICAgICAgICAgICAgZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRlZmF1bHRBY3RpdmVGaXJzdE9wdGlvblxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW256V2lkdGhdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLndpZHRoXCJcclxuICAgICAgICAgICAgICAjYXV0b1xyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG56LWF1dG8tb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdldEF1dG9Db21wbGV0ZURhdGFTb3VyY2UoY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgICBbbnpWYWx1ZV09XCJcclxuICAgICAgICAgICAgICAgICAgZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnJldHVybkZ1bGxEYXRhID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW256TGFiZWxdPVwib3B0aW9uLmxhYmVsXCJcclxuICAgICAgICAgICAgICAgIFtuekRpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgPC9uei1hdXRvLW9wdGlvbj5cclxuICAgICAgICAgICAgPC9uei1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgKm5nSWY9XCJjb2x1bW4udmFsdWVUeXBlID09PSAnY3VzdG9tJ1wiPlxyXG4gICAgICAgICAgICA8YXBwLWR5bmFtaWMtc2VhcmNoLWZpZWxkXHJcbiAgICAgICAgICAgICAgW2NvbXBvbmVudF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuY29tcG9uZW50XCJcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwiX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcF1cIlxyXG4gICAgICAgICAgICAgIFtwcm9wc109XCJnZXRGaWVsZFByb3BzKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgIHNldEZpZWxkVmFsdWUoZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3AsICRldmVudClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZHluYW1pYy1zZWFyY2gtZmllbGQ+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICAgIDxuei1mb3JtLWNvbnRyb2wgKm5nSWY9XCJjb2x1bW4udmFsdWVUeXBlID09PSAnaW5wdXROdW1iZXInXCI+XHJcbiAgICAgICAgICAgIDxuei1pbnB1dC1udW1iZXJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiJzEwMCUnXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxyXG4gICAgICAgICAgICAgICAgX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtuelBsYWNlSG9sZGVyXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5wbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICBbbnpGb3JtYXR0ZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmZvcm1hdHRlclBlcmNlbnRcIlxyXG4gICAgICAgICAgICAgIFtuelBhcnNlcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikucGFyc2VyUGVyY2VudFwiXHJcbiAgICAgICAgICAgID48L256LWlucHV0LW51bWJlcj5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgIDwvbnotZm9ybS1pdGVtPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2FjdGlvblRleHRCdG4+XHJcbiAgICAgICAgPG56LXNwYWNlIFtuelNpemVdPVwiNFwiPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG56U3BhY2VJdGVtICpuZ0lmPVwic2hvd1NlYXJjaEJ0blwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelR5cGU9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImhhbmRsZVNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29uZmlybUJ0blRleHQgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG56U3BhY2VJdGVtICpuZ0lmPVwic2hvd0NsZWFyQnRuXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbnotYnV0dG9uIChjbGljayk9XCJoYW5kbGVSZXNldEZvcm0oKVwiPlxyXG4gICAgICAgICAgICAgIHt7IGNsZWFyQnRuVGV4dCB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uei1zcGFjZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNhY3Rpb25JbWdCdG4+XHJcbiAgICAgICAgPG56LXNwYWNlPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImltZ0FjdGlvbkJhclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG56U3BhY2VJdGVtIGNsYXNzPVwic2V0dGluZy1zcGFjZS1pdGVtXCIgKm5nSWY9XCJzaG93Q29sdW1uU2V0dGluZ1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBuei10b29sdGlwIG56VG9vbHRpcFRpdGxlPVwi6K6+572u5a2X5q61XCI+XHJcbiAgICAgICAgICAgICAgPGFwcC1jb2xtdW5zLXNldHRpbmdcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkQ29sdW1uc109XCJfc2VydmVyQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVOYW1lXT1cInRhYmxlTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAoYWZ0ZXJDb25maXJtKT1cImhhbmRsZUNvbHVtbnNTZXR0aW5nQ29uZmlybSgpXCJcclxuICAgICAgICAgICAgICA+PC9hcHAtY29sbXVucy1zZXR0aW5nPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbnotc3BhY2U+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2FwcC10YWJsZS1zZWFyY2gtYmFyPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjYm9keT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QWN0aW9uQmFyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbkJhclRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVRhYmxlUmVuZGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UYWJsZVJlbmRlclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bnotdGFibGVcclxuICAgICAgKm5nSWY9XCIhY3VzdG9tVGFibGVSZW5kZXIgJiYgX3Nob3dUYWJsZSAmJiBfY29sdW1uc1JlYWR5XCJcclxuICAgICAgI2R5bmFtaWNUYWJsZVxyXG4gICAgICBuelNpemU9XCJzbWFsbFwiXHJcbiAgICAgIG56U2hvd1NpemVDaGFuZ2VyXHJcbiAgICAgIFtuekJvcmRlcmVkXT1cImJvcmRlcmVkXCJcclxuICAgICAgW256T3V0ZXJCb3JkZXJlZF09XCJvdXRlckJvcmRlcmVkXCJcclxuICAgICAgW256RGF0YV09XCJkYXRhU291cmNlXCJcclxuICAgICAgW256UGFnZUluZGV4XT1cIl9wYWdlSW5mby5wYWdlSW5kZXhcIlxyXG4gICAgICBbbnpQYWdlU2l6ZV09XCJfcGFnZUluZm8ucGFnZVNpemVcIlxyXG4gICAgICBbbnpUb3RhbF09XCJfcGFnZUluZm8udG90YWxcIlxyXG4gICAgICBbbnpQYWdlU2l6ZU9wdGlvbnNdPVwiX3BhZ2VJbmZvLnBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAgIFtuelNob3dQYWdpbmF0aW9uXT1cInNob3dQYWdpbmF0aW9uXCJcclxuICAgICAgW256U2hvd1RvdGFsXT1cInRvdGFsVGVtcGxhdGVcIlxyXG4gICAgICBbbnpMb2FkaW5nXT1cIl9sb2FkaW5nXCJcclxuICAgICAgW256RnJvbnRQYWdpbmF0aW9uXT1cImZyb250UGFnaW5hdGlvblwiXHJcbiAgICAgIFtuelNjcm9sbF09XCJzY3JvbGxcIlxyXG4gICAgICAobnpQYWdlSW5kZXhDaGFuZ2UpPVwiaGFuZGxlUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAobnpQYWdlU2l6ZUNoYW5nZSk9XCJoYW5kbGVQYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDwhLS0g5aSN6YCJ5qGG5YiX77yI5b2TIHNob3dDaGVja2JveD10cnVlIOaXtuaYvuekuu+8iSAtLT5cclxuICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtueldpZHRoXT1cIic1MHB4J1wiXHJcbiAgICAgICAgICAgIFtuekFsaWduXT1cIidjZW50ZXInXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIlxyXG4gICAgICAgICAgICBbKG56Q2hlY2tlZCldPVwiX2NoZWNrZWRBbGxcIlxyXG4gICAgICAgICAgICBbbnpJbmRldGVybWluYXRlXT1cIl9pbmRldGVybWluYXRlXCJcclxuICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJ0b2dnbGVDaGVja0FsbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICA+PC90aD5cclxuICAgICAgICAgIDx0aFxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIF9jb2x1bW5zXCJcclxuICAgICAgICAgICAgW256V2lkdGhdPVwiY29sdW1uLndpZHRoXCJcclxuICAgICAgICAgICAgW256QWxpZ25dPVwiY29sdW1uLmFsaWduXCJcclxuICAgICAgICAgICAgW256TGVmdF09XCJjb2x1bW4uZml4ZWRMZWZ0XCJcclxuICAgICAgICAgICAgW256UmlnaHRdPVwiY29sdW1uLmZpeGVkUmlnaHRcIlxyXG4gICAgICAgICAgICBbbnpTaG93U29ydF09XCIhIWNvbHVtbi5zb3J0ZXJcIlxyXG4gICAgICAgICAgICBbbnpTb3J0T3JkZXJdPVwiZ2V0U29ydE9yZGVyKGNvbHVtbi5wcm9wKVwiXHJcbiAgICAgICAgICAgIChuelNvcnRPcmRlckNoYW5nZSk9XCJvblNvcnRDaGFuZ2UoY29sdW1uLnByb3AsICRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBjb2x1bW4udGl0bGUgfX1cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuXHJcbiAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHJcclxuICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhOyBsZXQgaSA9IGluZGV4OyBvZjogZHluYW1pY1RhYmxlLmRhdGFcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnYW50LXRhYmxlLWN1c3RvbS1yb3ctc2VsZWN0ZWQnOiAhIWdldFRhYmxlUm93Q2hlY2tlZChkYXRhKSxcclxuICAgICAgICAgICAgJ2FudC10YWJsZS1jdXN0b20tcm93LWV2ZW4nOiBpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgJ2FudC10YWJsZS1jdXN0b20tcm93LW9kZCc6IGkgJSAyICE9PSAwXHJcbiAgICAgICAgICB9XCJcclxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVUYWJsZVJvd0NsaWNrKGRhdGEpXCJcclxuICAgICAgICAgIChkYmxjbGljayk9XCJoYW5kbGVUYWJsZVJvd0RiQ2xpY2soZGF0YSlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0g5aSN6YCJ5qGG5YiX77yI5b2TIHNob3dDaGVja2JveD10cnVlIOaXtuaYvuekuu+8iSAtLT5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtuekFsaWduXT1cIidjZW50ZXInXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IHdpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cImRhdGEuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgIFtuekRpc2FibGVkXT1cImlzUm93RGlzYWJsZWQoZGF0YSlcIlxyXG4gICAgICAgICAgICAobnpDaGVja2VkQ2hhbmdlKT1cImhhbmRsZVJvd0NoZWNrZWRDaGFuZ2UoZGF0YSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgPjwvdGQ+XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY29sdW1uc1wiXHJcbiAgICAgICAgICAgIFtuekxlZnRdPVwiY29sdW1uLmZpeGVkTGVmdFwiXHJcbiAgICAgICAgICAgIFtuelJpZ2h0XT1cImNvbHVtbi5maXhlZFJpZ2h0XCJcclxuICAgICAgICAgICAgW256QWxpZ25dPVwiY29sdW1uLmFsaWduXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdwcm8tbm93cmFwJzogdHJ1ZVxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPCEtLSDmo4Dmn6XmmK/lkKbmnInoh6rlrprkuYnmqKHmnb8gLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmN1c3RvbVJlbmRlciAmJiBnZXRUZW1wbGF0ZShjb2x1bW4uY3VzdG9tUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICBwYWdlSW5mbzogX3BhZ2VJbmZvXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIOm7mOiupOa4suafk+mAu+i+kSAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWNvbHVtbi5jdXN0b21SZW5kZXIgfHwgIWdldFRlbXBsYXRlKGNvbHVtbi5jdXN0b21SZW5kZXIpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uZWxsaXBzaXNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm8tZWxsaXBzaXNcIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZGF0YVtjb2x1bW4ucHJvcF1cIlxyXG4gICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICdjYWxjKCcgKyBjb2x1bW4ud2lkdGggKyAnIC0gMjVweCknXHJcbiAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5wcm9wXSB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uZWxsaXBzaXNcIj5cclxuICAgICAgICAgICAgICAgIHt7IGRhdGFbY29sdW1uLnByb3BdIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDx0ciAqbmdJZj1cInN1bW1hcnlEYXRhICYmIF9wYWdlSW5mby50b3RhbCA+IDBcIj5cclxuICAgICAgICAgIDwhLS0g5rGH5oC76KGM55qE5aSN6YCJ5qGG5YiX77yI5b2TIHNob3dDaGVja2JveD10cnVlIOaXtuaYvuekuu+8jOS9huS4uuepuu+8iSAtLT5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlOGU4ZThcIlxyXG4gICAgICAgICAgPjwvdGQ+XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbjsgbGV0IGkgPSBpbmRleDsgb2Y6IF9jb2x1bW5zXCJcclxuICAgICAgICAgICAgW256TGVmdF09XCJjb2x1bW4uZml4ZWRMZWZ0XCJcclxuICAgICAgICAgICAgW256UmlnaHRdPVwiY29sdW1uLmZpeGVkUmlnaHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZThlOGU4XCJcclxuICAgICAgICAgICAgW256QWxpZ25dPVwiY29sdW1uLmFsaWduXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpID09PSAwXCI+5oC76K6hPC9zcGFuPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSAhPT0gMCAmJiBjb2x1bW4uc3VtbWFyeVwiPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uc3VtbWFyeT8uZm9ybWF0XHJcbiAgICAgICAgICAgICAgICAgID8gY29sdW1uLnN1bW1hcnk/LmZvcm1hdChcclxuICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnlEYXRhW2NvbHVtbi5zdW1tYXJ5Py5uYW1lIHx8IGNvbHVtbi5wcm9wXVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgOiBzdW1tYXJ5RGF0YVtjb2x1bW4uc3VtbWFyeT8ubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0b3RhbFRlbXBsYXRlIGxldC10b3RhbFxyXG4gICAgICAgID7lhbEge3sgX3BhZ2VJbmZvLnRvdGFsIH19IOadoeiusOW9lTwvbmctdGVtcGxhdGVcclxuICAgICAgPlxyXG4gICAgPC9uei10YWJsZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2FwcC1wYWdlLWNvbnRhaW5lcj5cclxuIl19
|
|
1080
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byby10YWJsZS9zcmMvbGliL3Byby10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm8tdGFibGUvc3JjL2xpYi9wcm8tdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFXLE1BQU0sV0FBVyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVdoRixPQUFPLEVBQUUsdUJBQXVCLEVBQStCLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8saUJBQWlCO0lBNEpsQjtJQTNKRCxhQUFhLEdBQVksSUFBSSxDQUFDO0lBRTlCLFlBQVksR0FBWSxJQUFJLENBQUM7SUFFN0IsS0FBSyxHQUFrQixJQUFJLENBQUM7SUFFNUIsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUV2QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRTFCLE9BQU8sR0FBcUIsRUFBRSxDQUFDO0lBRS9CLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFFOUIsYUFBYSxHQUFZLElBQUksQ0FBQztJQUU5QixjQUFjLEdBQVcsSUFBSSxDQUFDO0lBRTlCLFlBQVksR0FBVyxJQUFJLENBQUM7SUFFNUIsVUFBVSxHQUFXLE1BQU0sQ0FBQztJ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Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFFb0IsWUFBWTtzQkFBdEMsWUFBWTt1QkFBQyxXQUFXO2dCQUVLLGVBQWU7c0JBQTVDLFlBQVk7dUJBQUMsY0FBYztnQkFFRSxZQUFZO3NCQUF6QyxlQUFlO3VCQUFDLFdBQVc7Z0JBK0Q1QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBUZW1wbGF0ZVJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAsIGhhc0luLCBpc05pbCwgZGVib3VuY2UsIGlzRXF1YWwgfSBmcm9tIFwibG9kYXNoLWVzXCI7XHJcbmltcG9ydCB7IFBST19UQUJMRV9ERUZBVUxUX0NPTFVNTiwgUFJPX1RBQkxFX0RFRkFVTFRfUFJPUFMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcclxuaW1wb3J0IHtcclxuICBBdXRvQ29tcGxldGVGaWVsZFByb3BzLFxyXG4gIENoZWNrYm94RmllbGRQcm9wcyxcclxuICBPcHRpb25zVHlwZSxcclxuICBQcm9UYWJsZUNvbHVtbixcclxuICBQcm9UYWJsZVBhZ2VJbmZvLFxyXG4gIFByb1RhYmxlUmVxdWVzdFJlc3VsdCxcclxuICBQcm9UYWJsZVZhbHVlc0NoYW5nZSxcclxuICBTZWxlY3RGaWVsZFByb3BzLFxyXG59IGZyb20gXCIuL3R5cGVcIjtcclxuaW1wb3J0IHsgUFJPX1RBQkxFX0NPTFVNTl9SRU1PVEUsIFByb1RhYmxlUmVtb3RlQ29sdW1uU2VydmljZSB9IGZyb20gXCIuL3Rva2Vuc1wiO1xyXG5pbXBvcnQgeyBpc09ic2VydmFibGUsIGxhc3RWYWx1ZUZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXByby10YWJsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vcHJvLXRhYmxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3Byby10YWJsZS5jb21wb25lbnQubGVzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcclxuICBASW5wdXQoKSBzaG93U2VhcmNoQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NsZWFyQnRuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSB0YWJsZU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpIG11bHRpUm93OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IFByb1RhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgc2hvd1NlYXJjaEJhcjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBY3Rpb25CYXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSBjb25maXJtQnRuVGV4dDogc3RyaW5nID0gXCLmn6Xor6JcIjtcclxuXHJcbiAgQElucHV0KCkgY2xlYXJCdG5UZXh0OiBzdHJpbmcgPSBcIua4heepulwiO1xyXG5cclxuICBASW5wdXQoKSBsYWJlbFdpZHRoOiBzdHJpbmcgPSBcIjkwcHhcIjtcclxuXHJcbiAgQElucHV0KCkgbGFiZWxBbGlnbjogc3RyaW5nID0gXCJyaWdodFwiO1xyXG5cclxuICBASW5wdXQoKSBmb3JtSXRlbVdpZHRoOiBzdHJpbmcgPSBcIjMzMHB4XCI7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2U6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGJvcmRlcmVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgb3V0ZXJCb3JkZXJlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dQYWdpbmF0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgZnJvbnRQYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNjcm9sbDogeyB4Pzogc3RyaW5nIHwgbnVtYmVyOyB5Pzogc3RyaW5nIHwgbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgcmVxdWVzdDogKHBhcmFtczogYW55KSA9PiBQcm9taXNlPFByb1RhYmxlUmVxdWVzdFJlc3VsdD47XHJcblxyXG4gIEBJbnB1dCgpIHN1bW1hcnlEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIOaOkuW6j+aooeW8j++8mmxvY2FsIOacrOWcsOaOkuW6j++8m3NlcnZlciDlnKjnur/mjpLluo/vvIjmj5DkuqTnu5nmjqXlj6PvvIlcclxuICBASW5wdXQoKSBzb3J0TW9kZTogXCJsb2NhbFwiIHwgXCJzZXJ2ZXJcIiA9IFwibG9jYWxcIjtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NvbHVtblNldHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8g5piv5ZCm5byA5ZCv5aSa5YiX5o6S5bqP77yI6buY6K6k5Y2V5YiX77yJXHJcbiAgQElucHV0KCkgbXVsdGlwbGVTb3J0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dDaGVja2JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyDliKTmlq3ooYzmmK/lkKbnpoHnlKjnmoTlh73mlbBcclxuICBASW5wdXQoKSByb3dEaXNhYmxlZDogKGRhdGE6IGFueSkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSByZXJlbmRlck9uUmVzaXplOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8g5piv5ZCm6Ieq5Yqo6Kem5Y+R6K+35rGCXHJcbiAgQElucHV0KCkgYXV0b1RyaWdnZXJSZXF1ZXN0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgY3VzdG9tVGFibGVSZW5kZXI/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25Sb3dEYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvVGFibGVWYWx1ZXNDaGFuZ2U+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvblJlc2V0Rm9ybUJlZm9yZVJlbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAQ29udGVudENoaWxkKFwiYWN0aW9uQmFyXCIpIGFjdGlvbkJhclRwbCE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoXCJJbWdBY3Rpb25CYXJcIikgaW1nQWN0aW9uQmFyVHBsITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZVJlZikgYWxsVGVtcGxhdGVzITogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICBwcml2YXRlIF9zYXZlZFNlYXJjaFBhcmFtczogYW55ID0ge307XHJcblxyXG4gIC8vIOWtmOWCqOaJgOacieiHquWumuS5ieaooeadv+eahOW8leeUqFxyXG4gIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzID0gbmV3IE1hcDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+KCk7XHJcblxyXG4gIC8vIOiusOW9leWQhOWIl+aOkuW6j+eKtuaAge+8midhc2NlbmQnIHwgJ2Rlc2NlbmQnIHwgbnVsbFxyXG5cclxuICBwcml2YXRlIF9zb3J0TWFwOiBSZWNvcmQ8c3RyaW5nLCBcImFzY2VuZFwiIHwgXCJkZXNjZW5kXCIgfCBudWxsPiA9IHt9O1xyXG5cclxuICAvLyDorrDlvZXlpJrliJfmjpLluo/nmoTkvJjlhYjnuqfvvIjlkI7orr7nva7nmoTkvJjlhYjvvIlcclxuICBwcml2YXRlIF9zb3J0UHJpb3JpdHk6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIC8vIOWtmOWCqOavj+S4qiBhdXRvQ29tcGxldGUg5a2X5q6155qE6Ziy5oqW5Ye95pWwXHJcbiAgcHJpdmF0ZSBfYXV0b0NvbXBsZXRlRGVib3VuY2VNYXA6IE1hcDxzdHJpbmcsIChldmVudDogRXZlbnQpID0+IHZvaWQ+ID1cclxuICAgIG5ldyBNYXAoKTtcclxuXHJcblxyXG4gIF9jb2x1bW5zOiBQcm9UYWJsZUNvbHVtbltdID0gW107XHJcblxyXG4gIC8vIOetm+mAieihqOWNleaVsOaNruWtmOWCqFxyXG4gIF9zZWFyY2hQYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuICAvLyDnrZvpgInooajljZVsaXN05riy5p+T5pWw5o2uXHJcbiAgX3NlYXJjaEZpbGVkQ29sdW1uczogUHJvVGFibGVDb2x1bW5bXSA9IFtdO1xyXG5cclxuICBfcGFnZUluZm86IFByb1RhYmxlUGFnZUluZm8gPSB7XHJcbiAgICBwYWdlSW5kZXg6IDEsXHJcbiAgICBwYWdlU2l6ZTogMTUsXHJcbiAgICB0b3RhbDogMTAwLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiBbMTAsIDE1LCAyMCwgNTAsIDEwMCwgNTAwLCAxMDAwXSxcclxuICB9O1xyXG5cclxuICBfbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBfc2VsZWN0ZWRUYWJsZVJvdzogYW55ID0gbnVsbDtcclxuXHJcbiAgLy8g6YCJ5Lit55qE6KGM5pWw5o2u77yI55So5LqO5aSN6YCJ5qGG6YCJ5oup77yJLSDkv53nlZnnlKjkuo7lhbzlrrnmgKdcclxuICBfc2VsZWN0ZWRSb3dzOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyDlhajpgInnirbmgIFcclxuICBfY2hlY2tlZEFsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyDljYrpgInnirbmgIHvvIjpg6jliIbpgInkuK3vvIlcclxuICBfaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyDov5znqItjb2x1bW5zXHJcbiAgX3NlcnZlckNvbHVtbnM6IFByb1RhYmxlQ29sdW1uW10gPSBbXTtcclxuXHJcbiAgLy8g5a2Y5YKoIGF1dG9Db21wbGV0ZSDlrZfmrrXnmoTmlbDmja7mupBcclxuICBfYXV0b0NvbXBsZXRlRGF0YVNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IHt9O1xyXG5cclxuICAvLyDmjqfliLbooajmoLzmmL7npLrnirbmgIHvvIznlKjkuo7ph43mlrDmjILovb1cclxuICBfc2hvd1RhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8g5Yqo5oCB5YiX5Yqg6L295a6M5oiQ5qCH5b+X77yM6buY6K6kIHRydWXvvIjml6DliqjmgIHliJfml7bnm7TmjqXmmL7npLrvvIlcclxuICBfY29sdW1uc1JlYWR5OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8g6Ziy5oqW5a6a5pe25Zmo77yM55So5LqO56qX5Y+j5aSn5bCP6LCD5pW0XHJcbiAgcHJpdmF0ZSByZXNpemVEZWJvdW5jZTogYW55O1xyXG5cclxuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgaWYgKCF0aGlzLnJlcmVuZGVyT25SZXNpemUpIHJldHVybjtcclxuXHJcbiAgICBpZiAodGhpcy5yZXNpemVEZWJvdW5jZSkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVEZWJvdW5jZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNpemVEZWJvdW5jZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyDpgJrov4cgbmdJZiDph43mlrDmjILovb3ooajmoLxcclxuICAgICAgdGhpcy5fc2hvd1RhYmxlID0gZmFsc2U7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Nob3dUYWJsZSA9IHRydWU7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSwgMTUwKTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAT3B0aW9uYWwoKVxyXG4gICAgQEluamVjdChQUk9fVEFCTEVfQ09MVU1OX1JFTU9URSlcclxuICAgIHByaXZhdGUgY29sdW1uUmVtb3RlOiBQcm9UYWJsZVJlbW90ZUNvbHVtblNlcnZpY2UgfCBudWxsLFxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFJlbW90ZUNvbHVtbnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuY29sdW1uUmVtb3RlPy5nZXRDb2wgfHwgIXRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jb2x1bW5SZW1vdGUuZ2V0Q29sKHRoaXMudGFibGVOYW1lLCB0aGlzLm11bHRpUm93KTtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBwZXJzaXN0UmVtb3RlQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgaWYgKCF0aGlzLmNvbHVtblJlbW90ZT8uc2V0Q29sIHx8ICF0aGlzLnRhYmxlTmFtZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29sdW1uUmVtb3RlLnNldENvbChcclxuICAgICAgICB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBjb2x1bW5zLFxyXG4gICAgICAgIHRoaXMubXVsdGlSb3csXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChyZXN1bHQgJiYgaXNPYnNlcnZhYmxlKHJlc3VsdCkpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgbGFzdFZhbHVlRnJvbShyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4geyAgIFxyXG4gICAgdGhpcy5fc2VhcmNoUGFyYW1zID0ge307XHJcbiAgICB0aGlzLmZvcm1hdGVJbm5lckNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGF3YWl0IHRoaXMuc2V0U2VhcmNoUGFyYW1zKHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgLy8g5L2/55SoIFByb3h5IOWMheijhSBfc2VhcmNoUGFyYW1z77yM5oum5oiq6KGo5Y2V6aG55YC85Y+Y5YyW5bm25ZCR5aSW5Y+R5Ye65LqL5Lu2XHJcbiAgICB0aGlzLl9zZWFyY2hQYXJhbXMgPSB0aGlzLmNyZWF0ZVNlYXJjaFBhcmFtc1Byb3h5KHRoaXMuX3NlYXJjaFBhcmFtcyk7XHJcbiAgICBpZiAodGhpcy5hdXRvVHJpZ2dlclJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVOYW1lICYmIHRoaXMuY29sdW1uUmVtb3RlKSB7XHJcbiAgICAgIHRoaXMuX2NvbHVtbnNSZWFkeSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWVyeUR5bmFtaWNDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAvLyDoh6rliqjms6jlhozmiYDmnInoh6rlrprkuYnmqKHmnb9cclxuICAgIC8vIOazqOaEj++8muatpOaXtuaJgOaciSBDb250ZW50Q2hpbGQg5ZKMIENvbnRlbnRDaGlsZHJlbiDpg73lt7LliJ3lp4vljJblrozmiJBcclxuICAgIHRoaXMuYXV0b1JlZ2lzdGVyVGVtcGxhdGVzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHF1ZXJ5RHluYW1pY0NvbHVtbnMoKSB7XHJcbiAgICBpZiAoIXRoaXMudGFibGVOYW1lIHx8ICF0aGlzLmNvbHVtblJlbW90ZSkgcmV0dXJuO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5mZXRjaFJlbW90ZUNvbHVtbnMoKTtcclxuICAgICAgaWYgKCFyZXMpIHJldHVybjtcclxuICAgICAgaWYgKHJlcy5jb2RlID09PSAwKSB7XHJcbiAgICAgICAgY29uc3QgX3RhYkNvbHVtbiA9IHJlcy5kYXRhLnRhYkNvbHVtbi5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLmhlYWRlcixcclxuICAgICAgICAgICAgcHJvcDogaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgc29ydE5hbWU6IGl0ZW0uc29ydE5hbWUsXHJcbiAgICAgICAgICAgIGhpZGVJblRhYmxlOiAhaXRlbS5pc1Nob3csXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3NlcnZlckNvbHVtbnMgPSBfdGFiQ29sdW1uLmZpbHRlcigoY29sKSA9PlxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnNvbWUoKGxvY2FsQ29sKSA9PiBsb2NhbENvbC5wcm9wID09PSBjb2wucHJvcCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVRhYmxlQ29sdW1ucyh0aGlzLl9zZXJ2ZXJDb2x1bW5zKTtcclxuICAgICAgfSBlbHNlIGlmIChyZXMuY29kZSA9PT0gMTApIHtcclxuICAgICAgICAvLyDlpoLmnpzmnKrorr7nva7mjqXlj6Pov5Tlm57vvIzpnIDopoHpu5jorqTosIPnlKjkuIDmrKHkv67mlLnlh73mlbDliJ3lp4vljJbmlbDmja5cclxuICAgICAgICBjb25zdCBpbml0Q29sdW1ucyA9IHRoaXMuY29sdW1uc1xyXG4gICAgICAgICAgLmZpbHRlcigoY29sKSA9PiAhY29sLmF1eGlsaWFyeUNvbHVtbilcclxuICAgICAgICAgIC5tYXAoKGNvbHVtbikgPT4gKHtcclxuICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5wcm9wLFxyXG4gICAgICAgICAgICBpc1Nob3c6IHRydWUsXHJcbiAgICAgICAgICAgIGhlYWRlcjogY29sdW1uLnRpdGxlLFxyXG4gICAgICAgICAgICBzb3J0TmFtZTogY29sdW1uLnNvcnROYW1lIHx8IG51bGwsXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgY29uc3QgaW5pdFJlcyA9IGF3YWl0IHRoaXMucGVyc2lzdFJlbW90ZUNvbHVtbnMoaW5pdENvbHVtbnMpO1xyXG4gICAgICAgIGlmIChpbml0UmVzKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnF1ZXJ5RHluYW1pY0NvbHVtbnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2NvbHVtbnNSZWFkeSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdGVJbm5lckNvbHVtbnMoY29sdW1uczogUHJvVGFibGVDb2x1bW5bXSkge1xyXG4gICAgdGhpcy5fY29sdW1ucyA9IGNvbHVtbnNcclxuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaGlkZUluVGFibGUpXHJcbiAgICAgIC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4geyAuLi5QUk9fVEFCTEVfREVGQVVMVF9DT0xVTU4sIC4uLml0ZW0gfSBhcyBQcm9UYWJsZUNvbHVtbjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDoh6rliqjms6jlhozmqKHmnb/nmoTmlrnms5VcclxuICBwcml2YXRlIGF1dG9SZWdpc3RlclRlbXBsYXRlcygpIHtcclxuICAgIC8vIOiOt+WPluaJgOacieaooeadv1xyXG4gICAgY29uc3QgYWxsVGVtcGxhdGVzQXJyYXkgPSB0aGlzLmFsbFRlbXBsYXRlcy50b0FycmF5KCk7XHJcblxyXG4gICAgLy8g6I635Y+W5omA5pyJ6ZyA6KaB6Ieq5a6a5LmJ5qih5p2/55qE5YiXXHJcbiAgICBjb25zdCBjb2x1bW5zV2l0aEN1c3RvbVJlbmRlciA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAoY29sKSA9PiBjb2wuY3VzdG9tUmVuZGVyLFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyDojrflj5bmiYDmnInpnIDopoHoh6rlrprkuYlsYWJlbOaooeadv+eahOWIl++8iOS9v+eUqOWOn+Wni2NvbHVtbnPvvIznoa7kv53pobrluo/mraPnoa7vvIlcclxuICAgIGNvbnN0IGNvbHVtbnNXaXRoQ3VzdG9tTGFiZWwgPSB0aGlzLmNvbHVtbnMuZmlsdGVyKFxyXG4gICAgICAoY29sKSA9PiBjb2wuY3VzdG9tTGFiZWxSZW5kZXIsXHJcbiAgICApO1xyXG5cclxuICAgIC8vIOiuoeeul+mcgOimgeeahOaooeadv+aAu+aVsFxyXG4gICAgY29uc3QgY3VzdG9tUmVuZGVyQ291bnQgPSBjb2x1bW5zV2l0aEN1c3RvbVJlbmRlci5sZW5ndGg7XHJcbiAgICBjb25zdCB0b3RhbE5lZWRlZFRlbXBsYXRlcyA9XHJcbiAgICAgIGN1c3RvbVJlbmRlckNvdW50ICsgY29sdW1uc1dpdGhDdXN0b21MYWJlbC5sZW5ndGg7XHJcblxyXG4gICAgLy8g6K+G5Yir5bm25o6S6Zmk54m55q6K5qih5p2/77yIYWN0aW9uQmFyIOWSjCBpbWdBY3Rpb25CYXLvvIlcclxuICAgIGNvbnN0IHNwZWNpYWxUZW1wbGF0ZUluZGljZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcclxuXHJcbiAgICAvLyDlsJ3or5Xmib7liLAgYWN0aW9uQmFyVHBsIOWcqCBhbGxUZW1wbGF0ZXNBcnJheSDkuK3nmoTkvY3nva5cclxuICAgIGlmICh0aGlzLmFjdGlvbkJhclRwbCkge1xyXG4gICAgICBjb25zdCBhY3Rpb25CYXJJbmRleCA9IHRoaXMuZmluZFRlbXBsYXRlSW5kZXgoXHJcbiAgICAgICAgYWxsVGVtcGxhdGVzQXJyYXksXHJcbiAgICAgICAgdGhpcy5hY3Rpb25CYXJUcGwsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChhY3Rpb25CYXJJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBzcGVjaWFsVGVtcGxhdGVJbmRpY2VzLmFkZChhY3Rpb25CYXJJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDlsJ3or5Xmib7liLAgaW1nQWN0aW9uQmFyVHBsIOWcqCBhbGxUZW1wbGF0ZXNBcnJheSDkuK3nmoTkvY3nva5cclxuICAgIGlmICh0aGlzLmltZ0FjdGlvbkJhclRwbCkge1xyXG4gICAgICBjb25zdCBpbWdBY3Rpb25CYXJJbmRleCA9IHRoaXMuZmluZFRlbXBsYXRlSW5kZXgoXHJcbiAgICAgICAgYWxsVGVtcGxhdGVzQXJyYXksXHJcbiAgICAgICAgdGhpcy5pbWdBY3Rpb25CYXJUcGwsXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbWdBY3Rpb25CYXJJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBzcGVjaWFsVGVtcGxhdGVJbmRpY2VzLmFkZChpbWdBY3Rpb25CYXJJbmRleCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDlpoLmnpzml6Dms5XpgJrov4flvJXnlKjmib7liLDnibnmrormqKHmnb/vvIzkvb/nlKjlpIfnlKjnrZbnlaVcclxuICAgIC8vIOWkh+eUqOetlueVpe+8muWBh+iuvuacgOWQjueahOaooeadv+aYr+eJueauiuaooeadv1xyXG4gICAgY29uc3Qgc3BlY2lhbFRlbXBsYXRlQ291bnQgPVxyXG4gICAgICAodGhpcy5hY3Rpb25CYXJUcGwgPyAxIDogMCkgKyAodGhpcy5pbWdBY3Rpb25CYXJUcGwgPyAxIDogMCk7XHJcbiAgICBpZiAoc3BlY2lhbFRlbXBsYXRlSW5kaWNlcy5zaXplID09PSAwICYmIHNwZWNpYWxUZW1wbGF0ZUNvdW50ID4gMCkge1xyXG4gICAgICBmb3IgKFxyXG4gICAgICAgIGxldCBpID0gYWxsVGVtcGxhdGVzQXJyYXkubGVuZ3RoIC0gc3BlY2lhbFRlbXBsYXRlQ291bnQ7XHJcbiAgICAgICAgaSA8IGFsbFRlbXBsYXRlc0FycmF5Lmxlbmd0aDtcclxuICAgICAgICBpKytcclxuICAgICAgKSB7XHJcbiAgICAgICAgc3BlY2lhbFRlbXBsYXRlSW5kaWNlcy5hZGQoaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyDmj5Dlj5bliJfmqKHmnb/vvIjmjpLpmaTnibnmrormqKHmnb/vvIlcclxuICAgIGNvbnN0IGNvbHVtblRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XHJcbiAgICBhbGxUZW1wbGF0ZXNBcnJheS5mb3JFYWNoKCh0cGwsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICghc3BlY2lhbFRlbXBsYXRlSW5kaWNlcy5oYXMoaW5kZXgpKSB7XHJcbiAgICAgICAgY29sdW1uVGVtcGxhdGVzLnB1c2godHBsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8g6aqM6K+B5qih5p2/5pWw6YePXHJcbiAgICBpZiAoY29sdW1uVGVtcGxhdGVzLmxlbmd0aCAhPT0gdG90YWxOZWVkZWRUZW1wbGF0ZXMpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBQcm9UYWJsZTog5qih5p2/5pWw6YeP5LiN5Yy56YWN77yB6ZyA6KaBICR7dG90YWxOZWVkZWRUZW1wbGF0ZXN9IOS4quWIl+aooeadv++8jOWunumZheaciSAke2NvbHVtblRlbXBsYXRlcy5sZW5ndGh9IOS4quOAguivt+ajgOafpSBjdXN0b21SZW5kZXIg5ZKMIGN1c3RvbUxhYmVsUmVuZGVyIOmFjee9ruOAgmAsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5rOo5YaM6Ieq5a6a5LmJ5riy5p+T5qih5p2/XHJcbiAgICBjb2x1bW5zV2l0aEN1c3RvbVJlbmRlci5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IHRlbXBsYXRlTmFtZSA9IGNvbHVtbi5jdXN0b21SZW5kZXIhO1xyXG4gICAgICBpZiAoaW5kZXggPCBjb2x1bW5UZW1wbGF0ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXMuc2V0KHRlbXBsYXRlTmFtZSwgY29sdW1uVGVtcGxhdGVzW2luZGV4XSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIGBQcm9UYWJsZTog5pyq5om+5Yiw5qih5p2/IFwiJHt0ZW1wbGF0ZU5hbWV9XCLvvIzntKLlvJUgJHtpbmRleH0g6LaF5Ye66IyD5Zu0YCxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDms6jlhozoh6rlrprkuYlsYWJlbOaooeadv++8iOS7jiBjdXN0b21SZW5kZXJDb3VudCDkuYvlkI7lvIDlp4vvvIlcclxuICAgIGNvbHVtbnNXaXRoQ3VzdG9tTGFiZWwuZm9yRWFjaCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCB0ZW1wbGF0ZU5hbWUgPSBjb2x1bW4uY3VzdG9tTGFiZWxSZW5kZXIhO1xyXG4gICAgICBjb25zdCB0ZW1wbGF0ZUluZGV4ID0gY3VzdG9tUmVuZGVyQ291bnQgKyBpbmRleDtcclxuICAgICAgaWYgKHRlbXBsYXRlSW5kZXggPCBjb2x1bW5UZW1wbGF0ZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXMuc2V0KHRlbXBsYXRlTmFtZSwgY29sdW1uVGVtcGxhdGVzW3RlbXBsYXRlSW5kZXhdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgYFByb1RhYmxlOiDmnKrmib7liLBsYWJlbOaooeadvyBcIiR7dGVtcGxhdGVOYW1lfVwi77yM57Si5byVICR7dGVtcGxhdGVJbmRleH0g6LaF5Ye66IyD5Zu0YCxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIOWwneivleWcqOaVsOe7hOS4reaJvuWIsOaooeadv+eahOe0ouW8le+8iOS9v+eUqOWkmuenjeavlOi+g+aWueW8j++8iVxyXG4gIHByaXZhdGUgZmluZFRlbXBsYXRlSW5kZXgoXHJcbiAgICB0ZW1wbGF0ZXM6IFRlbXBsYXRlUmVmPGFueT5bXSxcclxuICAgIHRhcmdldDogVGVtcGxhdGVSZWY8YW55PixcclxuICApOiBudW1iZXIge1xyXG4gICAgLy8g5pa55rOVMe+8muW8leeUqOebuOetieaAp1xyXG4gICAgbGV0IGluZGV4ID0gdGVtcGxhdGVzLmluZGV4T2YodGFyZ2V0KTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpIHJldHVybiBpbmRleDtcclxuXHJcbiAgICAvLyDmlrnms5Uy77ya6YCa6L+HIGVsZW1lbnRSZWYg5q+U6L6DXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB0YXJnZXRFbGVtZW50UmVmID0gKHRhcmdldCBhcyBhbnkpLmVsZW1lbnRSZWY7XHJcbiAgICAgIGlmICh0YXJnZXRFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZW1wbGF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNvbnN0IHRwbEVsZW1lbnRSZWYgPSAodGVtcGxhdGVzW2ldIGFzIGFueSkuZWxlbWVudFJlZjtcclxuICAgICAgICAgIGlmICh0cGxFbGVtZW50UmVmID09PSB0YXJnZXRFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyDlv73nlaXplJnor69cclxuICAgIH1cclxuXHJcbiAgICAvLyDmlrnms5Uz77ya6YCa6L+HIEFuZ3VsYXIg5YaF6YOo5bGe5oCn5q+U6L6DXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB0YXJnZXRDb250YWluZXIgPSAodGFyZ2V0IGFzIGFueSkuX2RlY2xhcmF0aW9uVENvbnRhaW5lcjtcclxuICAgICAgaWYgKHRhcmdldENvbnRhaW5lcikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcGxhdGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBjb25zdCB0cGxDb250YWluZXIgPSAodGVtcGxhdGVzW2ldIGFzIGFueSkuX2RlY2xhcmF0aW9uVENvbnRhaW5lcjtcclxuICAgICAgICAgIGlmICh0cGxDb250YWluZXIgPT09IHRhcmdldENvbnRhaW5lcikge1xyXG4gICAgICAgICAgICByZXR1cm4gaTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgLy8g5b+955Wl6ZSZ6K+vXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6+572u562b6YCJ6KGo5Y2V6buY6K6k5bGe5oCnXHJcbiAgcHJpdmF0ZSBzZXRTZWFyY2hGb3JtRGVmYXVsdFByb3AoY29sdW1uczogUHJvVGFibGVDb2x1bW5bXSkge1xyXG4gICAgY29sdW1ucy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLnZhbHVlVHlwZSkge1xyXG4gICAgICAgIGlmIChpdGVtLmZpZWxkUHJvcHMpIHtcclxuICAgICAgICAgIGl0ZW0uZmllbGRQcm9wcyA9IHtcclxuICAgICAgICAgICAgLi4uUFJPX1RBQkxFX0RFRkFVTFRfUFJPUFNbaXRlbS52YWx1ZVR5cGVdLFxyXG4gICAgICAgICAgICAuLi5pdGVtLmZpZWxkUHJvcHMsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpdGVtLmZpZWxkUHJvcHMgPSB7IC4uLlBST19UQUJMRV9ERUZBVUxUX1BST1BTW2l0ZW0udmFsdWVUeXBlXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDliqjmgIHorr7nva5PcHRpb25zXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RSZXF1ZXN0KGNvbHVtbnM6IFByb1RhYmxlQ29sdW1uW10pIHtcclxuICAgIGNvbHVtbnMubWFwKGFzeW5jIChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmZpZWxkUHJvcHMgJiYgaGFzSW4oaXRlbS5maWVsZFByb3BzLCBcInJlcXVlc3RcIikpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IChcclxuICAgICAgICAgICAgaXRlbS5maWVsZFByb3BzIGFzIFNlbGVjdEZpZWxkUHJvcHNcclxuICAgICAgICAgICkucmVxdWVzdD8uKCk7XHJcbiAgICAgICAgICAoaXRlbS5maWVsZFByb3BzIGFzIFNlbGVjdEZpZWxkUHJvcHMpLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAoaXRlbS5maWVsZFByb3BzIGFzIFNlbGVjdEZpZWxkUHJvcHMpLm9wdGlvbnMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRTZWFyY2hQYXJhbXMoY29sdW1uczogUHJvVGFibGVDb2x1bW5bXSkge1xyXG4gICAgdGhpcy5fc2VhcmNoRmlsZWRDb2x1bW5zID0gW107XHJcbiAgICBjb2x1bW5zXHJcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcclxuICAgICAgICBjb25zdCBmbGFnID0gIWl0ZW0uaGlkZUluU2VhcmNoICYmIGl0ZW0udmFsdWVUeXBlO1xyXG4gICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICB0aGlzLl9zZWFyY2hGaWxlZENvbHVtbnMucHVzaChjbG9uZURlZXAoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgICAgfSlcclxuICAgICAgLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGNvbHVtbi5maWVsZFByb3BzPy5uYW1lIHx8IGNvbHVtbi5wcm9wO1xyXG4gICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSBQUk9fVEFCTEVfREVGQVVMVF9QUk9QU1tjb2x1bW4udmFsdWVUeXBlXS52YWx1ZTtcclxuXHJcbiAgICAgICAgLy8g5a+55LqOY2hlY2tib3jnsbvlnovvvIzku45vcHRpb25z5Lit5om+5Ye6Y2hlY2tlZOS4unRydWXnmoTpobnkvZzkuLrpu5jorqTlgLxcclxuICAgICAgICBpZiAoY29sdW1uLnZhbHVlVHlwZSA9PT0gXCJjaGVja2JveFwiKSB7XHJcbiAgICAgICAgICBjb25zdCBjaGVja2VkVmFsdWVzID0gKGNvbHVtbi5maWVsZFByb3BzPy5vcHRpb25zIHx8IFtdKVxyXG4gICAgICAgICAgICAuZmlsdGVyKChvcHQ6IE9wdGlvbnNUeXBlKSA9PiBvcHQuY2hlY2tlZClcclxuICAgICAgICAgICAgLm1hcCgob3B0OiBPcHRpb25zVHlwZSkgPT4gb3B0LnZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuX3NlYXJjaFBhcmFtc1trZXldID1cclxuICAgICAgICAgICAgY2hlY2tlZFZhbHVlcy5sZW5ndGggPiAwID8gY2hlY2tlZFZhbHVlcyA6IGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fc2VhcmNoUGFyYW1zW2tleV0gPSBjb2x1bW4uZmllbGRQcm9wcz8udmFsdWUgfHwgZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8g5Yid5aeL5YyWIGF1dG9Db21wbGV0ZSDmlbDmja7mupBcclxuICAgICAgICBpZiAoY29sdW1uLnZhbHVlVHlwZSA9PT0gXCJhdXRvQ29tcGxldGVcIikge1xyXG4gICAgICAgICAgdGhpcy5fYXV0b0NvbXBsZXRlRGF0YVNvdXJjZXNba2V5XSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8g5qC55o2u5YiX55qEIG9yZGVyIOWtl+autei/m+ihjOaOkuW6j++8jOacquiuvue9riBvcmRlciDnmoTmlL7lnKjmnIDlkI5cclxuICAgIHRoaXMuX3NlYXJjaEZpbGVkQ29sdW1ucy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBhT3JkZXIgPSBpc05pbChhPy5vcmRlcikgPyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiA6IGEub3JkZXI7XHJcbiAgICAgIGNvbnN0IGJPcmRlciA9IGlzTmlsKGI/Lm9yZGVyKSA/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSIDogYi5vcmRlcjtcclxuICAgICAgaWYgKGFPcmRlciA9PT0gYk9yZGVyKSByZXR1cm4gMDtcclxuICAgICAgcmV0dXJuIGFPcmRlciAtIGJPcmRlcjtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0U2VhcmNoRm9ybURlZmF1bHRQcm9wKHRoaXMuX3NlYXJjaEZpbGVkQ29sdW1ucyk7XHJcblxyXG4gICAgLy8g5bm25Y+R5Yqg6L295omA5pyJ6ZyA6KaB5byC5q2l6I635Y+W55qE6YCJ6aG5XHJcbiAgICB0aGlzLnNldFNlbGVjdFJlcXVlc3QodGhpcy5fc2VhcmNoRmlsZWRDb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVGFibGVDb2x1bW5zKGluamVjdENvbHVtbnM6IFByb1RhYmxlQ29sdW1uW10pIHtcclxuICAgIC8vIOi/nOeoi+WIl+ebtOaOpeS9nOS4uuadpea6kO+8jOi/h+a7pOaOieacrOWcsOS4jeWtmOWcqOeahOWIl++8jOW5tuS7juacrOWcsOWIl+ihpeWFhea4suafk+mFjee9rlxyXG4gICAgY29uc3QgcmVtb3RlQ29sdW1ucyA9IGluamVjdENvbHVtbnNcclxuICAgICAgLmZpbHRlcigoaW5qZWN0Q29sKSA9PlxyXG4gICAgICAgIHRoaXMuY29sdW1ucy5zb21lKChjb2wpID0+IGNvbC5wcm9wID09PSBpbmplY3RDb2wucHJvcCksXHJcbiAgICAgIClcclxuICAgICAgLm1hcCgoaW5qZWN0Q29sKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbG9jYWxDb2wgPSB0aGlzLmNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wucHJvcCA9PT0gaW5qZWN0Q29sLnByb3ApO1xyXG4gICAgICAgIHJldHVybiB7IC4uLmxvY2FsQ29sLCAuLi5pbmplY3RDb2wgfTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8g6L6F5Yqp5YiX5Y+W6Ieq5pys5Zyw77yM5L+d5oyB5Zyo5Y6f5aeL5L2N572u77yI6aaW6YOoIC8g5bC+6YOo77yJXHJcbiAgICBjb25zdCBmaXJzdE5vbkF1eEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGMpID0+ICFjLmF1eGlsaWFyeUNvbHVtbixcclxuICAgICk7XHJcbiAgICBjb25zdCBsYXN0Tm9uQXV4SW5kZXggPVxyXG4gICAgICB0aGlzLmNvbHVtbnMubGVuZ3RoIC1cclxuICAgICAgMSAtXHJcbiAgICAgIFsuLi50aGlzLmNvbHVtbnNdLnJldmVyc2UoKS5maW5kSW5kZXgoKGMpID0+ICFjLmF1eGlsaWFyeUNvbHVtbik7XHJcbiAgICBjb25zdCBoZWFkQXV4aWxpYXJ5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcihcclxuICAgICAgKGNvbCwgaSkgPT4gY29sLmF1eGlsaWFyeUNvbHVtbiAmJiBpIDwgZmlyc3ROb25BdXhJbmRleCxcclxuICAgICk7XHJcbiAgICBjb25zdCB0YWlsQXV4aWxpYXJ5ID0gdGhpcy5jb2x1bW5zLmZpbHRlcihcclxuICAgICAgKGNvbCwgaSkgPT4gY29sLmF1eGlsaWFyeUNvbHVtbiAmJiBpID4gbGFzdE5vbkF1eEluZGV4LFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmZvcm1hdGVJbm5lckNvbHVtbnMoWy4uLmhlYWRBdXhpbGlhcnksIC4uLnJlbW90ZUNvbHVtbnMsIC4uLnRhaWxBdXhpbGlhcnldKTtcclxuICB9XHJcblxyXG4gIC8vIOmAmui/hyBQcm94eSDnm5HlkKwgX3NlYXJjaFBhcmFtcyDnmoTlsZ7mgKflj5jmm7RcclxuICBwcml2YXRlIGNyZWF0ZVNlYXJjaFBhcmFtc1Byb3h5KHRhcmdldDogYW55KSB7XHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIGNvbnN0IGhhbmRsZXI6IFByb3h5SGFuZGxlcjxhbnk+ID0ge1xyXG4gICAgICBzZXQob2JqOiBhbnksIHByb3A6IHN0cmluZyB8IHN5bWJvbCwgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyhwcm9wKTtcclxuICAgICAgICBjb25zdCBvbGRWYWwgPSBvYmpba2V5XTtcclxuICAgICAgICBpZiAob2xkVmFsID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBzZWxmLm9uVmFsdWVzQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgICBwYXJhbXM6IHNlbGYuZ2V0U2VhcmNoUGFyYW1zKCksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiBuZXcgUHJveHkodGFyZ2V0LCBoYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJFbXB0eVNlYXJjaFBhcmFtcygpIHtcclxuICAgIGNvbnN0IGNsb25lU2VhcmNoUGFyYW1zID0gY2xvbmVEZWVwKHRoaXMuX3NlYXJjaFBhcmFtcyk7XHJcbiAgICByZXR1cm4gY2xvbmVTZWFyY2hQYXJhbXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU2VydmVyU29ydFBheWxvYWQoKSB7XHJcbiAgICAvLyDmnoTlu7rmv4DmtLvmjpLluo/pm4blkIjvvIjmjInkvJjlhYjnuqfku47kvY7liLDpq5jvvIzmnKvlsL7kvJjlhYjvvIlcclxuICAgIGNvbnN0IGFjdGl2ZUtleXMgPSB0aGlzLl9zb3J0UHJpb3JpdHkuZmlsdGVyKChrKSA9PiAhIXRoaXMuX3NvcnRNYXBba10pO1xyXG4gICAgaWYgKGFjdGl2ZUtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHNvcnRzID0gYWN0aXZlS2V5cy5tYXAoKGZpZWxkKSA9PiB7XHJcbiAgICAgIC8vIOafpeaJvuWvueW6lOeahOWIl+mFjee9ru+8jOS8mOWFiOS9v+eUqHNvcnROYW1l5a2X5q61XHJcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuX2NvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wucHJvcCA9PT0gZmllbGQpO1xyXG4gICAgICBjb25zdCBzb3J0RmllbGQgPSBjb2x1bW4/LnNvcnROYW1lIHx8IGZpZWxkO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpZWxkOiBzb3J0RmllbGQsXHJcbiAgICAgICAgb3JkZXI6IHRoaXMuX3NvcnRNYXBbZmllbGRdISxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGVTb3J0KSB7XHJcbiAgICAgIHJldHVybiBzb3J0czsgLy8g5Lul5pWw57uE5b2i5byP5o+Q5Lqk5aSa5YiX5o6S5bqPXHJcbiAgICB9XHJcbiAgICBjb25zdCBbZmlyc3RdID0gc29ydHM7XHJcbiAgICByZXR1cm4gZmlyc3Q7IC8vIOWFvOWuueWNleWIl+e7k+aehCB7IGZpZWxkLCBvcmRlciB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnREYXRhU291cmNlSW5QbGFjZSgpIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpIHx8IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGggPT09IDApIHJldHVybjtcclxuICAgIGNvbnN0IGFjdGl2ZUtleXMgPSB0aGlzLl9zb3J0UHJpb3JpdHkuZmlsdGVyKChrKSA9PiAhIXRoaXMuX3NvcnRNYXBba10pO1xyXG4gICAgaWYgKGFjdGl2ZUtleXMubGVuZ3RoID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgLy8g5aSN5Yi25LiA5Lu95LyY5YWI57qn77yM5LuO5YmN5Yiw5ZCO5LyY5YWI57qn5LuO5L2O5Yiw6auY77yI5pyA5ZCO6K6+572u55qE5a2X5q615LyY5YWI77yJXHJcbiAgICBjb25zdCBrZXlzSW5Qcmlvcml0eSA9IFsuLi5hY3RpdmVLZXlzXTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0ga2V5c0luUHJpb3JpdHkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGtleXNJblByaW9yaXR5W2ldO1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gdGhpcy5fc29ydE1hcFtmaWVsZF0hO1xyXG4gICAgICAgIGNvbnN0IGF2ID0gYT8uW2ZpZWxkXTtcclxuICAgICAgICBjb25zdCBidiA9IGI/LltmaWVsZF07XHJcbiAgICAgICAgY29uc3QgY21wID0gdGhpcy5jb21wYXJlVmFsdWVzKGF2LCBidik7XHJcbiAgICAgICAgaWYgKGNtcCAhPT0gMCkgcmV0dXJuIG9yZGVyID09PSBcImFzY2VuZFwiID8gY21wIDogLWNtcDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wYXJlVmFsdWVzKGFWYWw6IGFueSwgYlZhbDogYW55KTogbnVtYmVyIHtcclxuICAgIGlmIChhVmFsID09IG51bGwgJiYgYlZhbCA9PSBudWxsKSByZXR1cm4gMDtcclxuICAgIGlmIChhVmFsID09IG51bGwpIHJldHVybiAtMTtcclxuICAgIGlmIChiVmFsID09IG51bGwpIHJldHVybiAxO1xyXG4gICAgaWYgKGFWYWwgaW5zdGFuY2VvZiBEYXRlICYmIGJWYWwgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHJldHVybiBhVmFsLmdldFRpbWUoKSAtIGJWYWwuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBhVmFsID09PSBcImJvb2xlYW5cIiAmJiB0eXBlb2YgYlZhbCA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgcmV0dXJuIGFWYWwgPT09IGJWYWwgPyAwIDogYVZhbCA/IDEgOiAtMTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgYVZhbCA9PT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgYlZhbCA9PT0gXCJudW1iZXJcIikge1xyXG4gICAgICByZXR1cm4gYVZhbCAtIGJWYWw7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGFWYWwgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGJWYWwgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgcmV0dXJuIGFWYWwubG9jYWxlQ29tcGFyZShiVmFsKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGFOdW0gPSBOdW1iZXIoYVZhbCk7XHJcbiAgICBjb25zdCBiTnVtID0gTnVtYmVyKGJWYWwpO1xyXG4gICAgaWYgKCFpc05hTihhTnVtKSAmJiAhaXNOYU4oYk51bSkpIHJldHVybiBhTnVtIC0gYk51bTtcclxuICAgIHJldHVybiBTdHJpbmcoYVZhbCkubG9jYWxlQ29tcGFyZShTdHJpbmcoYlZhbCkpO1xyXG4gIH1cclxuXHJcbiAgLy8g5omn6KGMIGF1dG9Db21wbGV0ZSDmlbDmja7mupDmn6Xor6LvvIjlrp7pmYXmiafooYzpgLvovpHvvIlcclxuICBwcml2YXRlIGV4ZWN1dGVBdXRvQ29tcGxldGVEYXRhU291cmNlKGV2ZW50OiBFdmVudCwgY29sdW1uOiBQcm9UYWJsZUNvbHVtbikge1xyXG4gICAgY29uc3QgZmllbGRLZXkgPSBjb2x1bW4uZmllbGRQcm9wcz8ubmFtZSB8fCBjb2x1bW4ucHJvcDtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIChjb2x1bW4uZmllbGRQcm9wcyBhcyBBdXRvQ29tcGxldGVGaWVsZFByb3BzKS5kYXRhU291cmNlICYmXHJcbiAgICAgIHR5cGVvZiAoY29sdW1uLmZpZWxkUHJvcHMgYXMgQXV0b0NvbXBsZXRlRmllbGRQcm9wcykuZGF0YVNvdXJjZSA9PT1cclxuICAgICAgICBcImZ1bmN0aW9uXCJcclxuICAgICkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IChjb2x1bW4uZmllbGRQcm9wcyBhcyBBdXRvQ29tcGxldGVGaWVsZFByb3BzKS5kYXRhU291cmNlKFxyXG4gICAgICAgICAgZXZlbnQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyDlpoLmnpzov5Tlm57nmoTmmK8gUHJvbWlzZe+8jOWkhOeQhuW8guatpee7k+aenFxyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLl9hdXRvQ29tcGxldGVEYXRhU291cmNlc1tmaWVsZEtleV0gPSBkYXRhIHx8IFtdO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkF1dG9Db21wbGV0ZSBkYXRhU291cmNlIGVycm9yOlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYXV0b0NvbXBsZXRlRGF0YVNvdXJjZXNbZmllbGRLZXldID0gW107XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyDlkIzmraXov5Tlm57nu5PmnpxcclxuICAgICAgICAgIHRoaXMuX2F1dG9Db21wbGV0ZURhdGFTb3VyY2VzW2ZpZWxkS2V5XSA9IHJlc3VsdCB8fCBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkF1dG9Db21wbGV0ZSBkYXRhU291cmNlIGVycm9yOlwiLCBlcnJvcik7XHJcbiAgICAgICAgdGhpcy5fYXV0b0NvbXBsZXRlRGF0YVNvdXJjZXNbZmllbGRLZXldID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWFyY2hQYXJhbXMob3B0aW9ucz86IHtcclxuICAgIHVzZVNhdmVkPzogYm9vbGVhbjsgLy8g5L2/55So5pyA6L+R5LiA5qyh5p+l6K+i5o+Q5Lqk55qE5Y+C5pWw77yM6buY6K6k5Li6IGZhbHNl77ybZmFsc2Ug5Li65b2T5YmN6KGo5Y2V5YC8XHJcbiAgfSk6IGFueSB7XHJcbiAgICBjb25zdCB7IHVzZVNhdmVkID0gZmFsc2UgfSA9IG9wdGlvbnMgfHwge307XHJcbiAgICBjb25zdCByYXdQYXJhbXMgPSB1c2VTYXZlZCA/IHRoaXMuX3NhdmVkU2VhcmNoUGFyYW1zIDogdGhpcy5fc2VhcmNoUGFyYW1zO1xyXG4gICAgY29uc3QgcGFyYW1zID0gY2xvbmVEZWVwKHJhd1BhcmFtcyB8fCB7fSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGFyYW1zLFxyXG4gICAgICBwYWdlSW5mbzoge1xyXG4gICAgICAgIHBhZ2VJbmRleDogdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4LFxyXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLl9wYWdlSW5mby5wYWdlU2l6ZSxcclxuICAgICAgfSxcclxuICAgICAgLy8g5Zyo57q/5o6S5bqP5qih5byP77ya5oqK5o6S5bqP5a+56LGh5o+Q5Lqk57uZ5o6l5Y+jXHJcbiAgICAgIC4uLih0aGlzLnNvcnRNb2RlID09PSBcInNlcnZlclwiXHJcbiAgICAgICAgPyB7IHNvcnQ6IHRoaXMuYnVpbGRTZXJ2ZXJTb3J0UGF5bG9hZCgpIH1cclxuICAgICAgICA6IHt9KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVsb2FkKGFmdGVyRGVsZXRlPzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5oYW5kbGVRdWVyeShhZnRlckRlbGV0ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RmllbGRzVmFsdWUoZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goKGspID0+IHtcclxuICAgICAgdGhpcy5fc2VhcmNoUGFyYW1zW2tdID0gZmllbGRzW2tdOyAvLyDkv53nlZkgUHJveHnvvIzpgJDpobnotYvlgLzop6blj5Hmi6bmiKpcclxuXHJcbiAgICAgIC8vIGNoZWNrYm94IOexu+Wei+mcgOimgeWQjOatpeabtOaWsCBvcHRpb25zIOeahCBjaGVja2VkIOeKtuaAge+8jOWQpuWImSBVSSDkuI3kvJrlk43lupRcclxuICAgICAgY29uc3QgdGFyZ2V0Q29sdW1uID0gdGhpcy5fc2VhcmNoRmlsZWRDb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+IChpdGVtLmZpZWxkUHJvcHM/Lm5hbWUgfHwgaXRlbS5wcm9wKSA9PT0gayxcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldENvbHVtbj8udmFsdWVUeXBlID09PSBcImNoZWNrYm94XCIpIHtcclxuICAgICAgICBjb25zdCB2YWx1ZXM6IGFueVtdID0gQXJyYXkuaXNBcnJheShmaWVsZHNba10pID8gZmllbGRzW2tdIDogW107XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0RmllbGRQcm9wcyA9IHRhcmdldENvbHVtbi5maWVsZFByb3BzIGFzIENoZWNrYm94RmllbGRQcm9wcztcclxuICAgICAgICBpZiAodGFyZ2V0RmllbGRQcm9wcz8ub3B0aW9ucykge1xyXG4gICAgICAgICAgdGFyZ2V0RmllbGRQcm9wcy5vcHRpb25zID0gdGFyZ2V0RmllbGRQcm9wcy5vcHRpb25zLm1hcChcclxuICAgICAgICAgICAgKGl0ZW06IE9wdGlvbnNUeXBlKSA9PiAoe1xyXG4gICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogdmFsdWVzLmluY2x1ZGVzKGl0ZW0udmFsdWUpLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRGaWVsZFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLl9zZWFyY2hQYXJhbXNba2V5XSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyU2VsZWN0ZWRSb3coKSB7XHJcbiAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRDb2x1bW5zKFxyXG4gICAgY29sdW1uczogUHJvVGFibGVDb2x1bW5bXSxcclxuICAgIG9wdGlvbnM/OiB7XHJcbiAgICAgIHJlbG9hZD86IGJvb2xlYW47IC8vIOaYr+WQpumHjeaWsOWKoOi9veaVsOaNru+8jOm7mOiupOS4uiBmYWxzZVxyXG4gICAgfSxcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIOabtOaWsCBjb2x1bW5zIOi+k+WFpeWxnuaAp1xyXG4gICAgdGhpcy5jb2x1bW5zID0gY2xvbmVEZWVwKGNvbHVtbnMpO1xyXG5cclxuICAgIC8vIOmHjeaWsOagvOW8j+WMluWGhemDqOWIl1xyXG4gICAgdGhpcy5mb3JtYXRlSW5uZXJDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgLy8g6YeN5paw6K6+572u5pCc57Si5Y+C5pWw77yI5byC5q2l5pON5L2c77yJXHJcbiAgICAvLyDlhYjmuIXnqbrml6fnmoTmkJzntKLlj4LmlbDvvIzpgb/lhY3ml6fmlbDmja7mrovnlZlcclxuICAgIHRoaXMuX3NlYXJjaFBhcmFtcyA9IHt9O1xyXG4gICAgYXdhaXQgdGhpcy5zZXRTZWFyY2hQYXJhbXModGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICAvLyDph43mlrDliJvlu7ogUHJveHnvvIznoa7kv53ooajljZXpobnlgLzlj5jljJbog73mraPluLjop6blj5Hkuovku7ZcclxuICAgIHRoaXMuX3NlYXJjaFBhcmFtcyA9IHRoaXMuY3JlYXRlU2VhcmNoUGFyYW1zUHJveHkodGhpcy5fc2VhcmNoUGFyYW1zKTtcclxuXHJcbiAgICAvLyDph43mlrDms6jlhozmqKHmnb/vvIjlpoLmnpznu4Tku7blt7Lnu4/liJ3lp4vljJblrozmiJDvvIlcclxuICAgIGlmICh0aGlzLmFsbFRlbXBsYXRlcykge1xyXG4gICAgICB0aGlzLmF1dG9SZWdpc3RlclRlbXBsYXRlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOiuvue9ruS6hiByZWxvYWQg6YCJ6aG55Li6IHRydWXvvIzliJnph43mlrDmn6Xor6LmlbDmja5cclxuICAgIGlmIChvcHRpb25zPy5yZWxvYWQgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5oYW5kbGVRdWVyeSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNlbGVjdGVkUm93RGF0YTxUID0gYW55PigpOiBUIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFRhYmxlUm93O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENoZWNrZWRSb3dzPFQgPSBhbnk+KCk6IFRbXSB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIC8vIOi/lOWbnuW9k+WJjeaVsOaNrua6kOS4reaJgOaciSBjaGVja2VkIOS4uiB0cnVlIOeahOmhuVxyXG4gICAgLy8g5rOo5oSP77ya5aaC5p6c6ZyA6KaB6I635Y+W5omA5pyJ6aG155qE6YCJ5Lit6aG577yM6ZyA6KaB6YGN5Y6G5omA5pyJ5pWw5o2u5rqQ5oiW5L2/55SoIF9zZWxlY3RlZFJvd0lkc1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoKHJvdykgPT4gcm93LmNoZWNrZWQgPT09IHRydWUpIGFzIFRbXTtcclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluaMh+WumuWQjeensOeahOaooeadv1xyXG4gIGdldFRlbXBsYXRlKG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHtcclxuICAgIGlmICghbmFtZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5jdXN0b21UZW1wbGF0ZXMuZ2V0KG5hbWUpIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sVGlwVGV4dFZhbHVlKGNvbHVtbjogUHJvVGFibGVDb2x1bW4sIGRhdGE6IGFueSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBrZXkgPVxyXG4gICAgICBjb2x1bW4uY3VzdG9tUmVuZGVyICYmIHRoaXMuZ2V0VGVtcGxhdGUoY29sdW1uLmN1c3RvbVJlbmRlcilcclxuICAgICAgICA/IFwiXCJcclxuICAgICAgICA6IGNvbHVtbi5lbGxpcHNpc1xyXG4gICAgICAgICAgPyBjb2x1bW4ucHJvcFxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgcmV0dXJuICFrZXkgPyBcIlwiIDogZGF0YVtrZXldO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFibGVSb3dDaGVja2VkKGRhdGE6IGFueSkge1xyXG4gICAgLy8g5ZCv55So5aSN6YCJ5qGG5pe277ya6KGM6auY5Lqu5bqU5LiO5aSN6YCJ5qGG6YCJ5Lit54q25oCB5LiA6Ie077yI5pSv5oyB5aSa6YCJ77yJXHJcbiAgICBpZiAodGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNSb3dDaGVja2VkKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgLy8g5pyq5ZCv55So5aSN6YCJ5qGG5pe277ya5LuN54S25L2/55So5Y2V6YCJ6KGM6auY5LquXHJcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkVGFibGVSb3cpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZWxlY3RlZFRhYmxlUm93KSA9PT0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyDmo4Dmn6XooYzmmK/lkKbooqvnpoHnlKhcclxuICBpc1Jvd0Rpc2FibGVkKGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLnNob3dDaGVja2JveCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIHRoaXMucm93RGlzYWJsZWQgPyB0aGlzLnJvd0Rpc2FibGVkKGRhdGEpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLyDmo4Dmn6XooYzmmK/lkKbooqvlpI3pgInmoYbpgInkuK3vvIjmlbDmja7pqbHliqjmqKHlvI/vvIlcclxuICBpc1Jvd0NoZWNrZWQoZGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0NoZWNrYm94KSByZXR1cm4gZmFsc2U7XHJcbiAgICAvLyDnm7TmjqXor7vlj5bmlbDmja7lr7nosaHnmoQgY2hlY2tlZCDlsZ7mgKdcclxuICAgIHJldHVybiBkYXRhLmNoZWNrZWQgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyDliIfmjaLooYznmoTpgInkuK3nirbmgIHvvIjmlbDmja7pqbHliqjmqKHlvI/vvIzkv53nlZnnlKjkuo7lhbzlrrnvvIlcclxuICB0b2dnbGVSb3dDaGVja2VkKGRhdGE6IGFueSwgY2hlY2tlZDogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyDpmLvmraLkuovku7blhpLms6HvvIzpgb/lhY3op6blj5HooYzngrnlh7tcclxuICAgIH1cclxuICAgIC8vIOWmguaenOihjOiiq+emgeeUqO+8jOS4jeWFgeiuuOWIh+aNoumAieS4reeKtuaAgVxyXG4gICAgaWYgKHRoaXMuaXNSb3dEaXNhYmxlZChkYXRhKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g55u05o6l6K6+572u5pWw5o2u5a+56LGh55qEIGNoZWNrZWQg5bGe5oCnXHJcbiAgICBkYXRhLmNoZWNrZWQgPSBjaGVja2VkO1xyXG5cclxuICAgIC8vIOWQjOatpeabtOaWsCBfc2VsZWN0ZWRSb3dz77yI55So5LqO5YW85a655oCn77yJXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkUm93cy5maW5kSW5kZXgoKHJvdykgPT5cclxuICAgICAgdGhpcy5pc1NhbWVSb3cocm93LCBkYXRhKSxcclxuICAgICk7XHJcbiAgICBpZiAoY2hlY2tlZCkge1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLnB1c2goZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8g5Yu+6YCJ5aSN6YCJ5qGG5pe25ZCM5q2l6K6+572u6auY5Lqu6YCJ5Lit6KGMXHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBkYXRhO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDoi6XlvZPliY3pq5jkuq7ooYzkuLror6XooYzvvIzliJnlj5bmtojpq5jkuq5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgJiZcclxuICAgICAgICB0aGlzLmlzU2FtZVJvdyh0aGlzLl9zZWxlY3RlZFRhYmxlUm93LCBkYXRhKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlQ2hlY2tBbGxTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIC8vIOabtOaWsOWFqOmAieeKtuaAge+8iOaVsOaNrumpseWKqOaooeW8j++8iVxyXG4gIHVwZGF0ZUNoZWNrQWxsU3RhdHVzKCkge1xyXG4gICAgaWYgKCF0aGlzLnNob3dDaGVja2JveCB8fCAhQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpKSB7XHJcbiAgICAgIHRoaXMuX2NoZWNrZWRBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyDlj6rorqHnrpflj6/nlKjnmoTooYzvvIjmnKrnpoHnlKjnmoTooYzvvIlcclxuICAgIGNvbnN0IGF2YWlsYWJsZVJvd3MgPSB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyKFxyXG4gICAgICAocm93KSA9PiAhdGhpcy5pc1Jvd0Rpc2FibGVkKHJvdyksXHJcbiAgICApO1xyXG4gICAgLy8g5Z+65LqO5pWw5o2u5a+56LGh55qEIGNoZWNrZWQg5bGe5oCn6K6h566XXHJcbiAgICBjb25zdCBjaGVja2VkQ291bnQgPSBhdmFpbGFibGVSb3dzLmZpbHRlcihcclxuICAgICAgKHJvdykgPT4gcm93LmNoZWNrZWQgPT09IHRydWUsXHJcbiAgICApLmxlbmd0aDtcclxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSBhdmFpbGFibGVSb3dzLmxlbmd0aDtcclxuICAgIHRoaXMuX2NoZWNrZWRBbGwgPVxyXG4gICAgICB0b3RhbENvdW50ID4gMCAmJiBjaGVja2VkQ291bnQgPiAwICYmIGNoZWNrZWRDb3VudCA9PT0gdG90YWxDb3VudDtcclxuICAgIHRoaXMuX2luZGV0ZXJtaW5hdGUgPSBjaGVja2VkQ291bnQgPiAwICYmIGNoZWNrZWRDb3VudCA8IHRvdGFsQ291bnQ7XHJcbiAgfVxyXG5cclxuICAvLyDlhajpgIkv5Y+W5raI5YWo6YCJ77yI5pWw5o2u6amx5Yqo5qih5byP77yJXHJcbiAgdG9nZ2xlQ2hlY2tBbGwoY2hlY2tlZDogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWPquWkhOeQhuWPr+eUqOeahOihjO+8iOacquemgeeUqOeahOihjO+8iVxyXG4gICAgY29uc3QgYXZhaWxhYmxlUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIoXHJcbiAgICAgIChyb3cpID0+ICF0aGlzLmlzUm93RGlzYWJsZWQocm93KSxcclxuICAgICk7XHJcblxyXG4gICAgLy8g5om56YeP6K6+572uIGNoZWNrZWQg5bGe5oCnXHJcbiAgICBhdmFpbGFibGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xyXG4gICAgICByb3cuY2hlY2tlZCA9IGNoZWNrZWQ7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDlkIzmraXmm7TmlrAgX3NlbGVjdGVkUm93c++8iOeUqOS6juWFvOWuueaAp++8iVxyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzID0gWy4uLmF2YWlsYWJsZVJvd3NdO1xyXG4gICAgICAvLyDlkIzmraXorr7nva7pq5jkuq7pgInkuK3ooYzkuLrnrKzkuIDmnaHlj6/pgInmlbDmja5cclxuICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9XHJcbiAgICAgICAgYXZhaWxhYmxlUm93cy5sZW5ndGggPiAwID8gYXZhaWxhYmxlUm93c1swXSA6IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MgPSBbXTtcclxuICAgICAgLy8g5Y+W5raI6auY5LquXHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXBkYXRlQ2hlY2tBbGxTdGF0dXMoKTtcclxuICB9XHJcblxyXG4gIC8vIOiOt+WPlumAieS4reeahOihjOaVsOaNru+8iOS/neeVmeeUqOS6juWFvOWuueaAp++8iVxyXG4gIGdldFNlbGVjdGVkUm93cygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkUm93cygpO1xyXG4gIH1cclxuXHJcbiAgLy8g5aSE55CG6KGMIGNoZWNrYm94IOWPmOWMluS6i+S7tu+8iOaVsOaNrumpseWKqOaooeW8j++8iVxyXG4gIGhhbmRsZVJvd0NoZWNrZWRDaGFuZ2UoZGF0YTogYW55LCBjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pc1Jvd0Rpc2FibGVkKGRhdGEpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlbDmja7lr7nosaHnmoQgY2hlY2tlZCDlsZ7mgKflt7Lnu4/pgJrov4flj4zlkJHnu5Hlrproh6rliqjmm7TmlrBcclxuICAgIC8vIOi/memHjOWPqumcgOimgeWQjOatpeabtOaWsCBfc2VsZWN0ZWRSb3dzXHJcblxyXG4gICAgLy8g5ZCM5q2l5pu05pawIF9zZWxlY3RlZFJvd3PvvIjnlKjkuo7lhbzlrrnmgKfvvIlcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRSb3dzLmZpbmRJbmRleCgocm93KSA9PlxyXG4gICAgICB0aGlzLmlzU2FtZVJvdyhyb3csIGRhdGEpLFxyXG4gICAgKTtcclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcclxuICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MucHVzaChkYXRhKTtcclxuICAgICAgfVxyXG4gICAgICAvLyDli77pgInlpI3pgInmoYbml7blkIzmraXorr7nva7pq5jkuq7pgInkuK3ooYxcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IGRhdGE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiLpeW9k+WJjemrmOS6ruihjOS4uuivpeihjO+8jOWImeWPlua2iOmrmOS6rlxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyAmJlxyXG4gICAgICAgIHRoaXMuaXNTYW1lUm93KHRoaXMuX3NlbGVjdGVkVGFibGVSb3csIGRhdGEpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5pu05paw5YWo6YCJ54q25oCBXHJcbiAgICB0aGlzLnVwZGF0ZUNoZWNrQWxsU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDliLfmlrDlhajpgInnirbmgIHvvIjnlKjkuo7lhbbku5blnLrmma/vvIlcclxuICByZWZyZXNoQ2hlY2tBbGxTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUNoZWNrQWxsU3RhdHVzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDojrflj5booYznmoTllK/kuIDmoIfor4bvvIjnlKjkuo7ot6jpobXpgInkuK3vvIlcclxuICBwcml2YXRlIGdldFJvd0lkKGRhdGE6IGFueSk6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gZGF0YS5pZCA/PyBkYXRhLmtleSA/PyB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvLyDliKTmlq3kuKTooYzmmK/lkKbkuLrlkIzkuIDooYxcclxuICBwcml2YXRlIGlzU2FtZVJvdyhyb3cxOiBhbnksIHJvdzI6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQxID0gdGhpcy5nZXRSb3dJZChyb3cxKTtcclxuICAgIGNvbnN0IGlkMiA9IHRoaXMuZ2V0Um93SWQocm93Mik7XHJcblxyXG4gICAgaWYgKGlkMSAhPT0gdW5kZWZpbmVkICYmIGlkMiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiBpZDEgPT09IGlkMjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBmYWxsYmFjayDliLAgSlNPTiDmr5TovoNcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShyb3cxKSA9PT0gSlNPTi5zdHJpbmdpZnkocm93Mik7XHJcbiAgfVxyXG5cclxuICAvLyDmuIXnqbrpgInkuK3nmoTooYzvvIjmlbDmja7pqbHliqjmqKHlvI/vvIlcclxuICBjbGVhclNlbGVjdGVkUm93cygpIHtcclxuICAgIC8vIOa4heepuuW9k+WJjeaVsOaNrua6kOS4reaJgOaciemhueeahCBjaGVja2VkIOeKtuaAgVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhU291cmNlKSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCgocm93KSA9PiB7XHJcbiAgICAgICAgcm93LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzID0gW107XHJcbiAgICB0aGlzLl9jaGVja2VkQWxsID0gZmFsc2U7XHJcbiAgICB0aGlzLl9pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLl9zZWxlY3RlZFRhYmxlUm93ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpZWxkQ2hlY2tCb3hDaGFuZ2UoY2hlY2tCb3hPcHRpb25zOiBPcHRpb25zVHlwZVtdLCBrZXk6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZXRGaWVsZHNWYWx1ZSh7XHJcbiAgICAgIFtrZXldOiBjaGVja0JveE9wdGlvbnNcclxuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmNoZWNrZWQpXHJcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSksXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVNlYXJjaCgpIHtcclxuICAgIHRoaXMuX3NhdmVkU2VhcmNoUGFyYW1zID0gdGhpcy5jbGVhckVtcHR5U2VhcmNoUGFyYW1zKCk7XHJcbiAgICB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXggPSAxO1xyXG4gICAgdGhpcy5oYW5kbGVRdWVyeSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUmVzZXRGb3JtKCkge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5fc2VhcmNoUGFyYW1zKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgdGFyZ2V0Q29sdW1uID0gdGhpcy5fc2VhcmNoRmlsZWRDb2x1bW5zLmZpbmQoKGl0ZW0pID0+IHtcclxuICAgICAgICByZXR1cm4gKGl0ZW0uZmllbGRQcm9wcz8ubmFtZSB8fCBpdGVtLnByb3ApID09PSBrZXk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g5a+55LqOY2hlY2tib3jnsbvlnovvvIzpnIDopoHnibnmrorlpITnkIbpu5jorqTlgLxcclxuICAgICAgaWYgKHRhcmdldENvbHVtbj8udmFsdWVUeXBlID09PSBcImNoZWNrYm94XCIpIHtcclxuICAgICAgICAvLyDku47ljp/lp4tjb2x1bW5z6YWN572u5Lit6I635Y+W5Yid5aeL6YWN572u77yM5Lul56Gu5L+d5L2/55So5q2j56Gu55qE6buY6K6k5YC8XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChpdGVtLmZpZWxkUHJvcHM/Lm5hbWUgfHwgaXRlbS5wcm9wKSA9PT0ga2V5O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDku47ljp/lp4tvcHRpb25z5Lit5om+5Ye6Y2hlY2tlZOS4unRydWXnmoTpobnkvZzkuLrpu5jorqTlgLxcclxuICAgICAgICBjb25zdCBvcmlnaW5hbEZpZWxkUHJvcHMgPSBvcmlnaW5hbENvbHVtbj8uZmllbGRQcm9wcyBhc1xyXG4gICAgICAgICAgfCBDaGVja2JveEZpZWxkUHJvcHNcclxuICAgICAgICAgIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IGNoZWNrZWRWYWx1ZXMgPSAob3JpZ2luYWxGaWVsZFByb3BzPy5vcHRpb25zIHx8IFtdKVxyXG4gICAgICAgICAgLmZpbHRlcigob3B0OiBPcHRpb25zVHlwZSkgPT4gb3B0LmNoZWNrZWQpXHJcbiAgICAgICAgICAubWFwKChvcHQ6IE9wdGlvbnNUeXBlKSA9PiBvcHQudmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9XHJcbiAgICAgICAgICBjaGVja2VkVmFsdWVzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgPyBjaGVja2VkVmFsdWVzXHJcbiAgICAgICAgICAgIDogUFJPX1RBQkxFX0RFRkFVTFRfUFJPUFNbdGFyZ2V0Q29sdW1uLnZhbHVlVHlwZV0udmFsdWU7XHJcblxyXG4gICAgICAgIHRoaXMuX3NlYXJjaFBhcmFtc1trZXldID0gZGVmYXVsdFZhbHVlO1xyXG5cclxuICAgICAgICAvLyDmoLnmja7pu5jorqTlgLzmgaLlpI1vcHRpb25z55qEY2hlY2tlZOeKtuaAge+8jOS9v+eUqOWOn+Wni29wdGlvbnPnmoTnu5PmnoRcclxuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWVzID0gQXJyYXkuaXNBcnJheShkZWZhdWx0VmFsdWUpID8gZGVmYXVsdFZhbHVlIDogW107XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxPcHRpb25zID0gb3JpZ2luYWxGaWVsZFByb3BzPy5vcHRpb25zIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldEZpZWxkUHJvcHMgPSB0YXJnZXRDb2x1bW4uZmllbGRQcm9wcyBhcyBDaGVja2JveEZpZWxkUHJvcHM7XHJcbiAgICAgICAgdGFyZ2V0RmllbGRQcm9wcy5vcHRpb25zID0gb3JpZ2luYWxPcHRpb25zLm1hcCgoaXRlbTogT3B0aW9uc1R5cGUpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGNoZWNrZWQ6IGRlZmF1bHRWYWx1ZXMuaW5jbHVkZXMoaXRlbS52YWx1ZSksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3NlYXJjaFBhcmFtc1trZXldID0gdGFyZ2V0Q29sdW1uPy5maWVsZFByb3BzXHJcbiAgICAgICAgICA/IHRhcmdldENvbHVtbj8uZmllbGRQcm9wcy52YWx1ZSB8fFxyXG4gICAgICAgICAgICBQUk9fVEFCTEVfREVGQVVMVF9QUk9QU1t0YXJnZXRDb2x1bW4udmFsdWVUeXBlXS52YWx1ZVxyXG4gICAgICAgICAgOiBQUk9fVEFCTEVfREVGQVVMVF9QUk9QU1t0YXJnZXRDb2x1bW4udmFsdWVUeXBlXS52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fc2F2ZWRTZWFyY2hQYXJhbXMgPSB7fTtcclxuICAgIHRoaXMuX3BhZ2VJbmZvLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB0aGlzLm9uUmVzZXRGb3JtQmVmb3JlUmVsb2FkLmVtaXQoKTtcclxuICAgIHRoaXMuaGFuZGxlUXVlcnkoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVBhZ2VJbmRleENoYW5nZShwYWdlSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4ID0gcGFnZUluZGV4O1xyXG4gICAgdGhpcy5oYW5kbGVRdWVyeSgpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5fcGFnZUluZm8ucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMuX3BhZ2VJbmZvLnBhZ2VJbmRleCA9IDE7XHJcbiAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYW5kbGVRdWVyeShhZnRlckRlbGV0ZT86IGJvb2xlYW4pIHtcclxuICAgIC8vIOWIoOmZpOWQjuWIt+aWsOS4lOW9k+WJjemhteS7heWJqeS4gOadoeiusOW9leaXtu+8jOiLpeS4jeWcqOesrOS4gOmhteWImeWFiOWbnumAgOS4gOmhtVxyXG4gICAgaWYgKFxyXG4gICAgICBhZnRlckRlbGV0ZSAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNvdXJjZSkgJiZcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgICB0aGlzLl9wYWdlSW5mby5wYWdlSW5kZXggPiAxXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4ID0gdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4IC0gMTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnJlcXVlc3QpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLmNsZWFyRW1wdHlTZWFyY2hQYXJhbXMoKSxcclxuICAgICAgICAgIHBhZ2VJbmZvOiB7XHJcbiAgICAgICAgICAgIHBhZ2VJbmRleDogdGhpcy5fcGFnZUluZm8ucGFnZUluZGV4LFxyXG4gICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5fcGFnZUluZm8ucGFnZVNpemUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLy8g5Zyo57q/5o6S5bqP5qih5byP77ya5oqK5o6S5bqP5a+56LGh5o+Q5Lqk57uZ5o6l5Y+jXHJcbiAgICAgICAgICAuLi4odGhpcy5zb3J0TW9kZSA9PT0gXCJzZXJ2ZXJcIlxyXG4gICAgICAgICAgICA/IHsgc29ydDogdGhpcy5idWlsZFNlcnZlclNvcnRQYXlsb2FkKCkgfVxyXG4gICAgICAgICAgICA6IHt9KSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g5p+l6K+i5ZCO6buY6K6k5LiN5L+d55WZ6Leo6aG16YCJ5Lit54q25oCB77ya5q+P5qyh6L+U5Zue55qE5pWw5o2u5Z2H5Yid5aeL5YyW5Li65pyq6YCJ5LitXHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSAocmVzdWx0LmRhdGEgfHwgW10pLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgICAgY2hlY2tlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlID0gcmVzdWx0LmRhdGEgfHwgW107XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnN1bW1hcnlEYXRhID0gcmVzdWx0LnN1bW1hcnlEYXRhIHx8IG51bGw7XHJcbiAgICAgICAgLy8g5pys5Zyw5o6S5bqP5qih5byP77ya5ou/5Yiw5pWw5o2u5ZCO5Zyo5YmN56uv5o6S5bqPXHJcbiAgICAgICAgaWYgKHRoaXMuc29ydE1vZGUgPT09IFwibG9jYWxcIikge1xyXG4gICAgICAgICAgdGhpcy5zb3J0RGF0YVNvdXJjZUluUGxhY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcGFnZUluZm8udG90YWwgPSByZXN1bHQudG90YWwgfHwgMDtcclxuICAgICAgICAvLyDlj5bmtojot6jpobXlpJrpgInvvJrmn6Xor6LlkI7muIXnqbrpgInkuK3nirbmgIFcclxuICAgICAgICBpZiAodGhpcy5zaG93Q2hlY2tib3gpIHtcclxuICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZFJvd3MoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIuafpeivouWksei0pTpcIiwgZXJyb3IpO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3BhZ2VJbmZvLnRvdGFsID0gMDtcclxuICAgICAgICB0aGlzLnN1bW1hcnlEYXRhID0gbnVsbDtcclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIuacquaPkOS+myBfcmVxdWVzdCDlm57osIPlh73mlbBcIik7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOinpuWPkeWIl+aOkuW6j+WPmOabtFxyXG4gIG9uU29ydENoYW5nZShzb3J0S2V5OiBzdHJpbmcsIHNvcnRPcmRlcjogXCJhc2NlbmRcIiB8IFwiZGVzY2VuZFwiIHwgbnVsbCkge1xyXG4gICAgLy8g5Y2V5YiX5o6S5bqP77ya6YeN572u5YW25a6D5YiX77yb5aSa5YiX5o6S5bqP77ya5L+d55WZ5YW25a6D5YiXXHJcbiAgICBpZiAoIXRoaXMubXVsdGlwbGVTb3J0KSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuX3NvcnRNYXApLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChrZXkgIT09IHNvcnRLZXkpIHRoaXMuX3NvcnRNYXBba2V5XSA9IG51bGw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc29ydE1hcFtzb3J0S2V5XSA9IHNvcnRPcmRlcjtcclxuXHJcbiAgICAvLyDnu7TmiqTkvJjlhYjnuqfpmJ/liJfvvJrmnInluo/liJfkuJTpnZ7nqbogLT4g572u5LqO5pyr5bC+77yb5Li656m6IC0+IOenu+mZpFxyXG4gICAgdGhpcy5fc29ydFByaW9yaXR5ID0gdGhpcy5fc29ydFByaW9yaXR5LmZpbHRlcigoaykgPT4gayAhPT0gc29ydEtleSk7XHJcbiAgICBpZiAoc29ydE9yZGVyKSB7XHJcbiAgICAgIHRoaXMuX3NvcnRQcmlvcml0eS5wdXNoKHNvcnRLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNvcnRNb2RlID09PSBcImxvY2FsXCIpIHtcclxuICAgICAgdGhpcy5zb3J0RGF0YVNvdXJjZUluUGxhY2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOWcqOe6v+aOkuW6j++8mumHjeaWsOivt+axglxyXG4gICAgICB0aGlzLmhhbmRsZVF1ZXJ5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTb3J0T3JkZXIoc29ydEtleTogc3RyaW5nKTogXCJhc2NlbmRcIiB8IFwiZGVzY2VuZFwiIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc29ydE1hcFtzb3J0S2V5XSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlVGFibGVSb3dDbGljayhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkVGFibGVSb3cgPSBkYXRhO1xyXG4gICAgaWYgKHRoaXMuc2hvd0NoZWNrYm94ICYmICF0aGlzLmlzUm93RGlzYWJsZWQoZGF0YSkpIHtcclxuICAgICAgLy8g5YWI5riF56m65omA5pyJ6YCJ5Lit6KGMXHJcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cyA9IFtdO1xyXG4gICAgICBjb25zdCBuZXh0Q2hlY2tlZCA9ICF0aGlzLmlzUm93Q2hlY2tlZChkYXRhKTtcclxuICAgICAgdGhpcy50b2dnbGVSb3dDaGVja2VkKGRhdGEsIG5leHRDaGVja2VkKTtcclxuICAgIH1cclxuICAgIHRoaXMub25Sb3dDbGljay5lbWl0KHRoaXMuX3NlbGVjdGVkVGFibGVSb3cpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlVGFibGVSb3dEYkNsaWNrKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRUYWJsZVJvdyA9IGRhdGE7XHJcbiAgICB0aGlzLm9uUm93RGJDbGljay5lbWl0KHRoaXMuX3NlbGVjdGVkVGFibGVSb3cpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ29sdW1uc1NldHRpbmdDb25maXJtKCkge1xyXG4gICAgdGhpcy5xdWVyeUR5bmFtaWNDb2x1bW5zKCk7XHJcbiAgfVxyXG5cclxuICAvLyDlpITnkIYgYXV0b0NvbXBsZXRlIOi+k+WFpeS6i+S7tu+8iOW4pumYsuaKlu+8iVxyXG4gIGhhbmRsZUF1dG9Db21wbGV0ZUlucHV0KGV2ZW50OiBFdmVudCwgY29sdW1uOiBQcm9UYWJsZUNvbHVtbikge1xyXG4gICAgY29uc3QgZmllbGRLZXkgPSBjb2x1bW4uZmllbGRQcm9wcz8ubmFtZSB8fCBjb2x1bW4ucHJvcDtcclxuXHJcbiAgICAvLyDlpoLmnpzor6XlrZfmrrXov5jmsqHmnInpmLLmipblh73mlbDvvIzliJvlu7rkuIDkuKpcclxuICAgIGlmICghdGhpcy5fYXV0b0NvbXBsZXRlRGVib3VuY2VNYXAuaGFzKGZpZWxkS2V5KSkge1xyXG4gICAgICBjb25zdCBkZWJvdW5jZWRGbiA9IGRlYm91bmNlKChldnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgLy8g6YeN5paw5p+l5om+5a+55bqU55qEIGNvbHVtbu+8jOehruS/neS9v+eUqOacgOaWsOeahOmFjee9rlxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb2x1bW4gPSB0aGlzLl9zZWFyY2hGaWxlZENvbHVtbnMuZmluZChcclxuICAgICAgICAgIChjb2wpID0+IChjb2wuZmllbGRQcm9wcz8ubmFtZSB8fCBjb2wucHJvcCkgPT09IGZpZWxkS2V5LFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRDb2x1bW4pIHtcclxuICAgICAgICAgIHRoaXMuZXhlY3V0ZUF1dG9Db21wbGV0ZURhdGFTb3VyY2UoZXZ0LCBjdXJyZW50Q29sdW1uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDMwMCk7IC8vIDMwMG1zIOmYsuaKluW7tui/n1xyXG4gICAgICB0aGlzLl9hdXRvQ29tcGxldGVEZWJvdW5jZU1hcC5zZXQoZmllbGRLZXksIGRlYm91bmNlZEZuKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDosIPnlKjpmLLmipblh73mlbBcclxuICAgIGNvbnN0IGRlYm91bmNlZEZuID0gdGhpcy5fYXV0b0NvbXBsZXRlRGVib3VuY2VNYXAuZ2V0KGZpZWxkS2V5KTtcclxuICAgIGlmIChkZWJvdW5jZWRGbikge1xyXG4gICAgICBkZWJvdW5jZWRGbihldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDojrflj5YgYXV0b0NvbXBsZXRlIOeahOaVsOaNrua6kFxyXG4gIGdldEF1dG9Db21wbGV0ZURhdGFTb3VyY2UoY29sdW1uOiBQcm9UYWJsZUNvbHVtbik6IGFueVtdIHtcclxuICAgIGNvbnN0IGZpZWxkS2V5ID0gY29sdW1uLmZpZWxkUHJvcHM/Lm5hbWUgfHwgY29sdW1uLnByb3A7XHJcbiAgICByZXR1cm4gdGhpcy5fYXV0b0NvbXBsZXRlRGF0YVNvdXJjZXNbZmllbGRLZXldIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZ2V0RmllbGRQcm9wcyhjb2x1bW46IFByb1RhYmxlQ29sdW1uKTogYW55IHtcclxuICAgIHJldHVybiBjb2x1bW4uZmllbGRQcm9wcztcclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluaMh+WumuWQjeensOeahGxhYmVs5qih5p2/XHJcbiAgZ2V0TGFiZWxUZW1wbGF0ZShuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB7XHJcbiAgICBpZiAoIW5hbWUpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tVGVtcGxhdGVzLmdldChuYW1lKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8g6I635Y+WIGZvcm0taXRlbSDnmoTliqjmgIHnsbvlkI1cclxuICBnZXRGb3JtSXRlbUNsYXNzTmFtZShjb2x1bW46IFByb1RhYmxlQ29sdW1uKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IHRoaXMuZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3A7XHJcbiAgICByZXR1cm4gYHByby10YWJsZS0ke2ZpZWxkTmFtZX0tZm9ybS1pdGVtYDtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1wYWdlLWNvbnRhaW5lclxyXG4gIFt0aXRsZV09XCJ0aXRsZVwiXHJcbiAgW3Nob3dIZWFkZXJdPVwic2hvd1NlYXJjaEJhclwiXHJcbiAgbmdDbGFzcz1cInByby10YWJsZS1jb250YWluZXJcIlxyXG4+XHJcbiAgPG5nLXRlbXBsYXRlICNoZWFkZXI+XHJcbiAgICA8YXBwLXRhYmxlLXNlYXJjaC1iYXJcclxuICAgICAgKm5nSWY9XCJzaG93U2VhcmNoQmFyXCJcclxuICAgICAgW2xhYmVsV2lkdGhdPVwibGFiZWxXaWR0aFwiXHJcbiAgICAgIFtsYWJlbEFsaWduXT1cImxhYmVsQWxpZ25cIlxyXG4gICAgICBbZm9ybUl0ZW1XaWR0aF09XCJmb3JtSXRlbVdpZHRoXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlICNsZWZ0Q29udGVudD5cclxuICAgICAgICA8bnotZm9ybS1pdGVtXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIF9zZWFyY2hGaWxlZENvbHVtbnNcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Rm9ybUl0ZW1DbGFzc05hbWUoY29sdW1uKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG56LWZvcm0tbGFiZWwgKm5nSWY9XCIhZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmhpZGVMYWJlbFwiIG56Tm9Db2xvbj5cclxuICAgICAgICAgICAgPCEtLSDmo4Dmn6XmmK/lkKbmnInoh6rlrprkuYlsYWJlbOaooeadvyAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uY3VzdG9tTGFiZWxSZW5kZXIgJiZcclxuICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxUZW1wbGF0ZShjb2x1bW4uY3VzdG9tTGFiZWxSZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBkZWZhdWx0TGFiZWxcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0TGFiZWxUZW1wbGF0ZShjb2x1bW4uY3VzdG9tTGFiZWxSZW5kZXIpXCJcclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcclxuICAgICAgICAgICAgICAgICAgZmllbGRQcm9wczogZ2V0RmllbGRQcm9wcyhjb2x1bW4pXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMYWJlbD5cclxuICAgICAgICAgICAgICB7eyBnZXRGaWVsZFByb3BzKGNvbHVtbikubGFiZWwgfHwgY29sdW1uLnRpdGxlIH19XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L256LWZvcm0tbGFiZWw+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2lucHV0J1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBuei1pbnB1dFxyXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxyXG4gICAgICAgICAgICAgICAgX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2lucHV0UGxhdGUnXCI+XHJcbiAgICAgICAgICAgIDxhcHAtcGxhdGUtaW5wdXRcclxuICAgICAgICAgICAgICBbbmFtZV09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcclxuICAgICAgICAgICAgICAgIF9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvYXBwLXBsYXRlLWlucHV0PlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ3NlbGVjdCdcIj5cclxuICAgICAgICAgICAgPG56LXNlbGVjdFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiXHJcbiAgICAgICAgICAgICAgICBfc2VhcmNoUGFyYW1zW2dldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW256QWxsb3dDbGVhcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuYWxsb3dDbGVhclwiXHJcbiAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICBbbmFtZV09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcFwiXHJcbiAgICAgICAgICAgICAgW256T3B0aW9uc109XCJnZXRGaWVsZFByb3BzKGNvbHVtbikub3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L256LXNlbGVjdD5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgICAgPG56LWZvcm0tY29udHJvbCAqbmdJZj1cImNvbHVtbi52YWx1ZVR5cGUgPT09ICdzZWxlY3RNdWx0aXBsZSdcIj5cclxuICAgICAgICAgICAgPG56LXNlbGVjdFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiXHJcbiAgICAgICAgICAgICAgICBfc2VhcmNoUGFyYW1zW2dldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW256QWxsb3dDbGVhcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuYWxsb3dDbGVhclwiXHJcbiAgICAgICAgICAgICAgW256UGxhY2VIb2xkZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICBbbmFtZV09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcFwiXHJcbiAgICAgICAgICAgICAgW256T3B0aW9uc109XCJnZXRGaWVsZFByb3BzKGNvbHVtbikub3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICBuek1vZGU9XCJtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgW256TWF4VGFnQ291bnRdPVwiMlwiXHJcbiAgICAgICAgICAgICAgW256TWF4VGFnUGxhY2Vob2xkZXJdPVwibnpNYXhUYWdQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgW256Q3VzdG9tVGVtcGxhdGVdPVwiZGVmYXVsdFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbnpNYXhUYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICtcclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIF9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGhcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wbGF0ZSBsZXQtc2VsZWN0ZWQ+XHJcbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5uekxhYmVsLmxlbmd0aCA+IDQgPyBzZWxlY3RlZC5uekxhYmVsLnN1YnN0cmluZygwLCA0KSArICcuLi4nIDogc2VsZWN0ZWQubnpMYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbnotc2VsZWN0PlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxuei1kYXRlLXBpY2tlclxyXG4gICAgICAgICAgICAgIFtuelNob3dUaW1lXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5zaG93VGltZVwiXHJcbiAgICAgICAgICAgICAgW256Rm9ybWF0XT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5mb3JtYXRcIlxyXG4gICAgICAgICAgICAgIFtuelBsYWNlSG9sZGVyXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5wbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgW256QWxsb3dDbGVhcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuYWxsb3dDbGVhclwiXHJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxyXG4gICAgICAgICAgICAgICAgX3NlYXJjaFBhcmFtc1tnZXRGaWVsZFByb3BzKGNvbHVtbikubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtuek1vZGVdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm1vZGVcIlxyXG4gICAgICAgICAgICA+PC9uei1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgICAgPG56LWZvcm0tY29udHJvbCAqbmdJZj1cImNvbHVtbi52YWx1ZVR5cGUgPT09ICdjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgPG56LWNoZWNrYm94LWdyb3VwXHJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5vU3R5bGVcclxuICAgICAgICAgICAgICAgICAgPyAncHJvLXRhYmxlLWNoZWNrYm94Z3JvdXAtbm9zdHlsZSdcclxuICAgICAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikub3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW256RGlzYWJsZWRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJcclxuICAgICAgICAgICAgICAgIGhhbmRsZUZpZWxkQ2hlY2tCb3hDaGFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICRldmVudCxcclxuICAgICAgICAgICAgICAgICAgZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uei1jaGVja2JveC1ncm91cD5cclxuICAgICAgICAgIDwvbnotZm9ybS1jb250cm9sPlxyXG4gICAgICAgICAgPG56LWZvcm0tY29udHJvbCAqbmdJZj1cImNvbHVtbi52YWx1ZVR5cGUgPT09ICdhdXRvQ29tcGxldGUnXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIG56LWlucHV0XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcclxuICAgICAgICAgICAgICAgIF9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pPy5uYW1lIHx8IGNvbHVtbi5wcm9wXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImhhbmRsZUF1dG9Db21wbGV0ZUlucHV0KCRldmVudCwgY29sdW1uKVwiXHJcbiAgICAgICAgICAgICAgW256QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbik/LmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pPy5wbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxuei1hdXRvY29tcGxldGVcclxuICAgICAgICAgICAgICBbbnpCYWNrZmlsbF09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikuYmFja0ZpbGxcIlxyXG4gICAgICAgICAgICAgIFtuekRlZmF1bHRBY3RpdmVGaXJzdE9wdGlvbl09XCJcclxuICAgICAgICAgICAgICAgIGdldEZpZWxkUHJvcHMoY29sdW1uKS5kZWZhdWx0QWN0aXZlRmlyc3RPcHRpb25cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIFtueldpZHRoXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS53aWR0aFwiXHJcbiAgICAgICAgICAgICAgI2F1dG9cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuei1hdXRvLW9wdGlvblxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBnZXRBdXRvQ29tcGxldGVEYXRhU291cmNlKGNvbHVtbilcIlxyXG4gICAgICAgICAgICAgICAgW256VmFsdWVdPVwiXHJcbiAgICAgICAgICAgICAgICAgIGdldEZpZWxkUHJvcHMoY29sdW1uKS5yZXR1cm5GdWxsRGF0YSA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuekxhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgIDwvbnotYXV0by1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbnotYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2N1c3RvbSdcIj5cclxuICAgICAgICAgICAgPGFwcC1keW5hbWljLXNlYXJjaC1maWVsZFxyXG4gICAgICAgICAgICAgIFtjb21wb25lbnRdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLmNvbXBvbmVudFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BdXCJcclxuICAgICAgICAgICAgICBbcHJvcHNdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pXCJcclxuICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiXHJcbiAgICAgICAgICAgICAgICBzZXRGaWVsZFZhbHVlKGdldEZpZWxkUHJvcHMoY29sdW1uKS5uYW1lIHx8IGNvbHVtbi5wcm9wLCAkZXZlbnQpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvYXBwLWR5bmFtaWMtc2VhcmNoLWZpZWxkPlxyXG4gICAgICAgICAgPC9uei1mb3JtLWNvbnRyb2w+XHJcbiAgICAgICAgICA8bnotZm9ybS1jb250cm9sICpuZ0lmPVwiY29sdW1uLnZhbHVlVHlwZSA9PT0gJ2lucHV0TnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICA8bnotaW5wdXQtbnVtYmVyXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIicxMDAlJ1wiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJcclxuICAgICAgICAgICAgICAgIF9zZWFyY2hQYXJhbXNbZ2V0RmllbGRQcm9wcyhjb2x1bW4pLm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbbnpQbGFjZUhvbGRlcl09XCJnZXRGaWVsZFByb3BzKGNvbHVtbikucGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgIFtuekRpc2FibGVkXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgW256Rm9ybWF0dGVyXT1cImdldEZpZWxkUHJvcHMoY29sdW1uKS5mb3JtYXR0ZXJQZXJjZW50XCJcclxuICAgICAgICAgICAgICBbbnpQYXJzZXJdPVwiZ2V0RmllbGRQcm9wcyhjb2x1bW4pLnBhcnNlclBlcmNlbnRcIlxyXG4gICAgICAgICAgICA+PC9uei1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICA8L256LWZvcm0tY29udHJvbD5cclxuICAgICAgICA8L256LWZvcm0taXRlbT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNhY3Rpb25UZXh0QnRuPlxyXG4gICAgICAgIDxuei1zcGFjZSBbbnpTaXplXT1cIjRcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuelNwYWNlSXRlbSAqbmdJZj1cInNob3dTZWFyY2hCdG5cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gbnpUeXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJoYW5kbGVTZWFyY2goKVwiPlxyXG4gICAgICAgICAgICAgIHt7IGNvbmZpcm1CdG5UZXh0IH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuelNwYWNlSXRlbSAqbmdJZj1cInNob3dDbGVhckJ0blwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlUmVzZXRGb3JtKClcIj5cclxuICAgICAgICAgICAgICB7eyBjbGVhckJ0blRleHQgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbnotc3BhY2U+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWN0aW9uSW1nQnRuPlxyXG4gICAgICAgIDxuei1zcGFjZT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWdBY3Rpb25CYXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuelNwYWNlSXRlbSBjbGFzcz1cInNldHRpbmctc3BhY2UtaXRlbVwiICpuZ0lmPVwic2hvd0NvbHVtblNldHRpbmdcIj5cclxuICAgICAgICAgICAgPHNwYW4gbnotdG9vbHRpcCBuelRvb2x0aXBUaXRsZT1cIuiuvue9ruWtl+autVwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtY29sbXVucy1zZXR0aW5nXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZENvbHVtbnNdPVwiX3NlcnZlckNvbHVtbnNcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlTmFtZV09XCJ0YWJsZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgKGFmdGVyQ29uZmlybSk9XCJoYW5kbGVDb2x1bW5zU2V0dGluZ0NvbmZpcm0oKVwiXHJcbiAgICAgICAgICAgICAgPjwvYXBwLWNvbG11bnMtc2V0dGluZz5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L256LXNwYWNlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9hcHAtdGFibGUtc2VhcmNoLWJhcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2JvZHk+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0FjdGlvbkJhclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhY3Rpb25CYXJUcGxcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21UYWJsZVJlbmRlclwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGFibGVSZW5kZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG56LXRhYmxlXHJcbiAgICAgICpuZ0lmPVwiIWN1c3RvbVRhYmxlUmVuZGVyICYmIF9zaG93VGFibGUgJiYgX2NvbHVtbnNSZWFkeVwiXHJcbiAgICAgICNkeW5hbWljVGFibGVcclxuICAgICAgbnpTaXplPVwic21hbGxcIlxyXG4gICAgICBuelNob3dTaXplQ2hhbmdlclxyXG4gICAgICBbbnpCb3JkZXJlZF09XCJib3JkZXJlZFwiXHJcbiAgICAgIFtuek91dGVyQm9yZGVyZWRdPVwib3V0ZXJCb3JkZXJlZFwiXHJcbiAgICAgIFtuekRhdGFdPVwiZGF0YVNvdXJjZVwiXHJcbiAgICAgIFtuelBhZ2VJbmRleF09XCJfcGFnZUluZm8ucGFnZUluZGV4XCJcclxuICAgICAgW256UGFnZVNpemVdPVwiX3BhZ2VJbmZvLnBhZ2VTaXplXCJcclxuICAgICAgW256VG90YWxdPVwiX3BhZ2VJbmZvLnRvdGFsXCJcclxuICAgICAgW256UGFnZVNpemVPcHRpb25zXT1cIl9wYWdlSW5mby5wYWdlU2l6ZU9wdGlvbnNcIlxyXG4gICAgICBbbnpTaG93UGFnaW5hdGlvbl09XCJzaG93UGFnaW5hdGlvblwiXHJcbiAgICAgIFtuelNob3dUb3RhbF09XCJ0b3RhbFRlbXBsYXRlXCJcclxuICAgICAgW256TG9hZGluZ109XCJfbG9hZGluZ1wiXHJcbiAgICAgIFtuekZyb250UGFnaW5hdGlvbl09XCJmcm9udFBhZ2luYXRpb25cIlxyXG4gICAgICBbbnpTY3JvbGxdPVwic2Nyb2xsXCJcclxuICAgICAgKG56UGFnZUluZGV4Q2hhbmdlKT1cImhhbmRsZVBhZ2VJbmRleENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKG56UGFnZVNpemVDaGFuZ2UpPVwiaGFuZGxlUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDx0aGVhZD5cclxuICAgICAgICA8dHI+XHJcbiAgICAgICAgICA8IS0tIOWkjemAieahhuWIl++8iOW9kyBzaG93Q2hlY2tib3g9dHJ1ZSDml7bmmL7npLrvvIkgLS0+XHJcbiAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hcIlxyXG4gICAgICAgICAgICBbbnpXaWR0aF09XCInNTBweCdcIlxyXG4gICAgICAgICAgICBbbnpBbGlnbl09XCInY2VudGVyJ1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyXCJcclxuICAgICAgICAgICAgWyhuekNoZWNrZWQpXT1cIl9jaGVja2VkQWxsXCJcclxuICAgICAgICAgICAgW256SW5kZXRlcm1pbmF0ZV09XCJfaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICAgIChuekNoZWNrZWRDaGFuZ2UpPVwidG9nZ2xlQ2hlY2tBbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgPjwvdGg+XHJcbiAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBfY29sdW1uc1wiXHJcbiAgICAgICAgICAgIFtueldpZHRoXT1cImNvbHVtbi53aWR0aFwiXHJcbiAgICAgICAgICAgIFtuekFsaWduXT1cImNvbHVtbi5hbGlnblwiXHJcbiAgICAgICAgICAgIFtuekxlZnRdPVwiY29sdW1uLmZpeGVkTGVmdFwiXHJcbiAgICAgICAgICAgIFtuelJpZ2h0XT1cImNvbHVtbi5maXhlZFJpZ2h0XCJcclxuICAgICAgICAgICAgW256U2hvd1NvcnRdPVwiISFjb2x1bW4uc29ydGVyXCJcclxuICAgICAgICAgICAgW256U29ydE9yZGVyXT1cImdldFNvcnRPcmRlcihjb2x1bW4ucHJvcClcIlxyXG4gICAgICAgICAgICAobnpTb3J0T3JkZXJDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKGNvbHVtbi5wcm9wLCAkZXZlbnQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICA8dGJvZHk+XHJcbiAgICAgICAgPHRyXHJcbiAgICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YTsgbGV0IGkgPSBpbmRleDsgb2Y6IGR5bmFtaWNUYWJsZS5kYXRhXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ2FudC10YWJsZS1jdXN0b20tcm93LXNlbGVjdGVkJzogISFnZXRUYWJsZVJvd0NoZWNrZWQoZGF0YSksXHJcbiAgICAgICAgICAgICdhbnQtdGFibGUtY3VzdG9tLXJvdy1ldmVuJzogaSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICdhbnQtdGFibGUtY3VzdG9tLXJvdy1vZGQnOiBpICUgMiAhPT0gMFxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlVGFibGVSb3dDbGljayhkYXRhKVwiXHJcbiAgICAgICAgICAoZGJsY2xpY2spPVwiaGFuZGxlVGFibGVSb3dEYkNsaWNrKGRhdGEpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIOWkjemAieahhuWIl++8iOW9kyBzaG93Q2hlY2tib3g9dHJ1ZSDml7bmmL7npLrvvIkgLS0+XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hcIlxyXG4gICAgICAgICAgICBbbnpBbGlnbl09XCInY2VudGVyJ1wiXHJcbiAgICAgICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyB3aWR0aDogNTBweFwiXHJcbiAgICAgICAgICAgIFsobnpDaGVja2VkKV09XCJkYXRhLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICBbbnpEaXNhYmxlZF09XCJpc1Jvd0Rpc2FibGVkKGRhdGEpXCJcclxuICAgICAgICAgICAgKG56Q2hlY2tlZENoYW5nZSk9XCJoYW5kbGVSb3dDaGVja2VkQ2hhbmdlKGRhdGEsICRldmVudClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgID48L3RkPlxyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgX2NvbHVtbnNcIlxyXG4gICAgICAgICAgICBbbnpMZWZ0XT1cImNvbHVtbi5maXhlZExlZnRcIlxyXG4gICAgICAgICAgICBbbnpSaWdodF09XCJjb2x1bW4uZml4ZWRSaWdodFwiXHJcbiAgICAgICAgICAgIFtuekFsaWduXT1cImNvbHVtbi5hbGlnblwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAncHJvLW5vd3JhcCc6IHRydWVcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0g5qOA5p+l5piv5ZCm5pyJ6Ieq5a6a5LmJ5qih5p2/IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jdXN0b21SZW5kZXIgJiYgZ2V0VGVtcGxhdGUoY29sdW1uLmN1c3RvbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGVcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLFxyXG4gICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgcGFnZUluZm86IF9wYWdlSW5mb1xyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSDpu5jorqTmuLLmn5PpgLvovpEgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFjb2x1bW4uY3VzdG9tUmVuZGVyIHx8ICFnZXRUZW1wbGF0ZShjb2x1bW4uY3VzdG9tUmVuZGVyKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLmVsbGlwc2lzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvLWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImRhdGFbY29sdW1uLnByb3BdXCJcclxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnY2FsYygnICsgY29sdW1uLndpZHRoICsgJyAtIDI1cHgpJ1xyXG4gICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgZGF0YVtjb2x1bW4ucHJvcF0gfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLmVsbGlwc2lzXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBkYXRhW2NvbHVtbi5wcm9wXSB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgICA8dHIgKm5nSWY9XCJzdW1tYXJ5RGF0YSAmJiBfcGFnZUluZm8udG90YWwgPiAwXCI+XHJcbiAgICAgICAgICA8IS0tIOaxh+aAu+ihjOeahOWkjemAieahhuWIl++8iOW9kyBzaG93Q2hlY2tib3g9dHJ1ZSDml7bmmL7npLrvvIzkvYbkuLrnqbrvvIkgLS0+XHJcbiAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2hlY2tib3hcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImZvbnQtd2VpZ2h0OiBib2xkOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZThlOGU4XCJcclxuICAgICAgICAgID48L3RkPlxyXG4gICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW47IGxldCBpID0gaW5kZXg7IG9mOiBfY29sdW1uc1wiXHJcbiAgICAgICAgICAgIFtuekxlZnRdPVwiY29sdW1uLmZpeGVkTGVmdFwiXHJcbiAgICAgICAgICAgIFtuelJpZ2h0XT1cImNvbHVtbi5maXhlZFJpZ2h0XCJcclxuICAgICAgICAgICAgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U4ZThlOFwiXHJcbiAgICAgICAgICAgIFtuekFsaWduXT1cImNvbHVtbi5hbGlnblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaSA9PT0gMFwiPuaAu+iuoTwvc3Bhbj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgIT09IDAgJiYgY29sdW1uLnN1bW1hcnlcIj5cclxuICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLnN1bW1hcnk/LmZvcm1hdFxyXG4gICAgICAgICAgICAgICAgICA/IGNvbHVtbi5zdW1tYXJ5Py5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5RGF0YVtjb2x1bW4uc3VtbWFyeT8ubmFtZSB8fCBjb2x1bW4ucHJvcF1cclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgIDogc3VtbWFyeURhdGFbY29sdW1uLnN1bW1hcnk/Lm5hbWUgfHwgY29sdW1uLnByb3BdXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdG90YWxUZW1wbGF0ZSBsZXQtdG90YWxcclxuICAgICAgICA+5YWxIHt7IF9wYWdlSW5mby50b3RhbCB9fSDmnaHorrDlvZU8L25nLXRlbXBsYXRlXHJcbiAgICAgID5cclxuICAgIDwvbnotdGFibGU+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hcHAtcGFnZS1jb250YWluZXI+XHJcbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -22,4 +22,4 @@ export { ArrayFormService } from "./lib/page-public/array-form";
|
|
|
22
22
|
// Export modal width detector
|
|
23
23
|
export { initModalWidthDetector } from "./lib/utils/modal-width-detector";
|
|
24
24
|
export { initSelectWidthDetector } from "./lib/utils/select-width-detector";
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byby10YWJsZS9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELHFDQUFxQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFnQjlELHNDQUFzQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVdoRSw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgcHJvLXRhYmxlXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3Byby10YWJsZS5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3Byby10YWJsZS5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbnN0YW50c1wiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvdHlwZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvdG9rZW5zXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9wbGF0ZS1pbnB1dC9wbGF0ZS1wcmVmaXgtbG9hZC5zZXJ2aWNlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9wbGF0ZS1pbnB1dC9wbGF0ZS1pbnB1dC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3BsYXRlLWlucHV0L3BsYXRlLWlucHV0Lm1vZHVsZVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvcGFnZS1jb250YWluZXIvcGFnZS1jb250YWluZXIuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9wYWdlLWNvbnRhaW5lci9wYWdlLWNvbnRhaW5lci5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3RhYmxlLXNlYXJjaC1iYXIvdGFibGUtc2VhcmNoLWJhci5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3RhYmxlLXNlYXJjaC1iYXIvdGFibGUtc2VhcmNoLWJhci1tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2RpcmVjdGl2ZXMvdHJpbS1pbnB1dC5kaXJlY3RpdmVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2RpcmVjdGl2ZXMvdHJpbS1pbnB1dC5tb2R1bGVcIjtcclxuXHJcbi8vIEV4cG9ydCBhbnRkLWZvcm0gc2VydmljZSBhbmQgdHlwZXNcclxuZXhwb3J0IHsgQW50ZEZvcm1TZXJ2aWNlIH0gZnJvbSBcIi4vbGliL3BhZ2UtcHVibGljL2FudGQtZm9ybVwiO1xyXG5leHBvcnQgdHlwZSB7XHJcbiAgRmllbGRFcnJvck1lc3NhZ2UsXHJcbiAgRmllbGRFcnJvck1lc3NhZ2VzLFxyXG4gIEZpZWxkQ29uZmlnLFxyXG4gIEZvcm1Hcm91cENvbmZpZyxcclxuICBGb3JtQXJyYXlDb25maWcsXHJcbiAgRm9ybU1vZGlmeVR5cGUsXHJcbiAgRm9ybUNvbmZpZyxcclxuICBXYXRjaE9wdGlvbnMsXHJcbiAgQWRkRmllbGRzQ29uZmlnT3B0aW9ucyxcclxuICBBZGRGaWVsZHNDb25maWdSZXN1bHQsXHJcbiAgUmVtb3ZlRmllbGRzQ29uZmlnT3B0aW9ucyxcclxuICBSZW1vdmVGaWVsZHNDb25maWdSZXN1bHQsXHJcbn0gZnJvbSBcIi4vbGliL3BhZ2UtcHVibGljL2FudGQtZm9ybVwiO1xyXG5cclxuLy8gRXhwb3J0IGFycmF5LWZvcm0gc2VydmljZSBhbmQgdHlwZXNcclxuZXhwb3J0IHsgQXJyYXlGb3JtU2VydmljZSB9IGZyb20gXCIuL2xpYi9wYWdlLXB1YmxpYy9hcnJheS1mb3JtXCI7XHJcbmV4cG9ydCB0eXBlIHtcclxuICBWYWxpZGF0aW9uUmVzdWx0LFxyXG4gIEZpZWxkVmFsaWRhdG9yLFxyXG4gIEZpZWxkQ29uZmlnIGFzIEFycmF5RmllbGRDb25maWcsXHJcbiAgQXJyYXlGb3JtUm93LFxyXG4gIEFycmF5Rm9ybUNvbmZpZyxcclxuICBBcnJheUZvcm1TdG9yZUl0ZW0sXHJcbiAgQXJyYXlGb3JtU3RvcmUsXHJcbn0gZnJvbSBcIi4vbGliL3BhZ2UtcHVibGljL2FycmF5LWZvcm1cIjtcclxuXHJcbi8vIEV4cG9ydCBtb2RhbCB3aWR0aCBkZXRlY3RvclxyXG5leHBvcnQgeyBpbml0TW9kYWxXaWR0aERldGVjdG9yIH0gZnJvbSBcIi4vbGliL3V0aWxzL21vZGFsLXdpZHRoLWRldGVjdG9yXCI7XHJcbmV4cG9ydCB7IGluaXRTZWxlY3RXaWR0aERldGVjdG9yIH0gZnJvbSBcIi4vbGliL3V0aWxzL3NlbGVjdC13aWR0aC1kZXRlY3RvclwiO1xyXG4iXX0=
|