mmhglobal-dynamicform 2.28.1 → 2.28.2
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/README.md +3 -0
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +6 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +5 -0
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +5 -0
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
|
|
4
4
|
|
|
5
5
|
## Changelog
|
|
6
|
+
`2.28.2`<br/>
|
|
7
|
+
[zselectmultiple] - added resetInfiniteData function to reset the variable used for inifinite data.
|
|
8
|
+
|
|
6
9
|
`2.28.1`<br/>
|
|
7
10
|
[zbuttons, zworkflowbuttons] - #4071: Allow button without label. Default: Show label. (Use ShowLabel property) <br/>
|
|
8
11
|
[zinput-container] - #3606: Fields in the same row are not aligned when 1 of them has IsRequired = true. <br/>
|
|
@@ -365,6 +365,11 @@ export class ZselectmultipleComponent extends InputFieldBase {
|
|
|
365
365
|
return; // Early return to avoid unnecessary checks
|
|
366
366
|
}
|
|
367
367
|
}
|
|
368
|
+
resetInfiniteData() {
|
|
369
|
+
ZComponentHelper.cancelGetInfiniteData;
|
|
370
|
+
this.infiniteDataLoaded = false;
|
|
371
|
+
this.infinitezData = [];
|
|
372
|
+
}
|
|
368
373
|
handleClose(event) {
|
|
369
374
|
}
|
|
370
375
|
handleBlur() {
|
|
@@ -610,4 +615,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
610
615
|
type: ViewChild,
|
|
611
616
|
args: ["selectComponent"]
|
|
612
617
|
}] } });
|
|
613
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pzZWxlY3RtdWx0aXBsZS96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNlbGVjdG11bHRpcGxlL3pzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFLeEUsOEJBQThCO0FBQzlCLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFHakQsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV4RSxPQUFPLEVBRU8sZ0JBQWdCLEVBQ0csb0JBQW9CLEVBQXlCLDhCQUE4QixFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFDL0ksTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVN6QixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsY0FBYztJQWlEMUQsWUFDUyxnQkFBbUMsRUFDbEMsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFlBQTBCLEVBQzFCLFlBQTBCO1FBRWxDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBTmhCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFB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Q0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLDhCQUE4QixDQUFDLFFBQVE7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hDLEtBQUssOEJBQThCLENBQUMsV0FBVztnQkFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzFCLEtBQUssOEJBQThCLENBQUMsZUFBZTtnQkFDakQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzlCLEtBQUssOEJBQThCLENBQUMsWUFBWTtnQkFDOUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDcEM7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7O3FIQXZyQlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isa21CQzNCckMsNnRXQStKQTsyRkRwSWEsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHFCQUFxQjsyTkFNQyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNNLHFCQUFxQjtzQkFBeEQsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBQ1IsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNNLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNFLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50IH0gZnJvbSBcImlvbmljLXNlbGVjdGFibGVcIjtcclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIE9ic2VydmFibGUsIG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgdGFwLCBkZWxheSwgbWFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7IFxyXG5pbXBvcnQgeyBDb21ib0JveENvbXBvbmVudCwgRHJvcERvd25GaWx0ZXJTZXR0aW5ncywgRHJvcERvd25MaXN0Q29tcG9uZW50LCBNdWx0aVNlbGVjdENvbXBvbmVudCwgTXVsdGlTZWxlY3RUcmVlQ29tcG9uZW50IH0gZnJvbSBcIkBwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWRyb3Bkb3duc1wiO1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtcclxuICBSZXNvdXJjZUFwaVNlcnZpY2UsIFdlYkFwaVNlcnZpY2UsIENhY2hlU2VydmljZSwgRmllbGRTZXJ2aWNlLFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCwgQ2xpY2thYmxlSWNvbnMsXHJcbiAgWlNlbGVjdE11bHRpcGxlVGVtcGxhdGVQYXJhbXMsIFpTZWxlY3RQb3N0QXBpUGFyYW1zLCB6U2VsZWN0TXVsdGlwbGVQYXJhbXMsIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93biwgU2lnbmFsVHlwZSwgRHJvcGRvd25TZWFyY2hPcGVyYXRvclxyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenNlbGVjdG11bHRpcGxlXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgWnNlbGVjdG11bHRpcGxlQ29tcG9uZW50IGV4dGVuZHMgSW5wdXRGaWVsZEJhc2UgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcImNvbWJvYm94Q29tcG9uZW50XCIpIGNvbWJvYm94Q29tcG9uZW50OiBDb21ib0JveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwiZHJvcGRvd25saXN0Q29tcG9uZW50XCIpIGRyb3Bkb3dubGlzdENvbXBvbmVudDogRHJvcERvd25MaXN0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJtdWx0aXNlbGVjdFwiKSBtdWx0aXNlbGVjdDogTXVsdGlTZWxlY3RDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcIm11bHRpc2VsZWN0dHJlZVwiKSBtdWx0aXNlbGVjdHRyZWU6IE11bHRpU2VsZWN0VHJlZUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwic2VsZWN0Q29tcG9uZW50XCIpIHNlbGVjdENvbXBvbmVudDogSW9uaWNTZWxlY3RhYmxlQ29tcG9uZW50O1xyXG5cclxuICBwdWJsaWMgY29tcG9uZW50VHlwZTogSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duO1xyXG4gIHByaXZhdGUgYWxsRGF0YUl0ZW1zID0gW107XHJcbiAgaWNvbkxpc3Q6IENsaWNrYWJsZUljb25zW107XHJcbiAgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBtb2RlbHpEYXRhOiBBcnJheTxhbnk+O1xyXG4gIGluZmluaXRlekRhdGE6IEFycmF5PGFueT4gPSBbXTtcclxuICBpbmZpbml0ZVNlYXJjaFRleHQgPSBudWxsO1xyXG4gIC8vIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHRvZ2dsZVNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIGl0ZW1WYWx1ZUZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1UZXh0RmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbURhdGFGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGVtcGxhdGUgPSBcInt7aXRlbVtpdGVtVGV4dEZpZWxkXX19XCI7XHJcbiAgaW5maW5pdGVTY3JvbGxQYWdlTm8gPSAwO1xyXG4gIGluZmluaXRlRGF0YUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgYWxsb3dDdXN0b21WYWx1ZSA9IGZhbHNlO1xyXG4gIGF1dG9DbG9zZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHBhcnNlZEl0ZW1zRGF0YTogYW55W107XHJcbiAgZGF0YUluZm86IHt9ID0ge1xyXG4gICAgXCJpdGVtc1Jlc291cmNlVVJMXCI6IFwiXCIsXHJcbiAgICBcIm9wdGlvbkZpbHRlcnNcIjogXCJcIixcclxuICAgIFwidG90YWxDb3VudFwiOiAwXHJcbiAgfTtcclxuICBwcml2YXRlIGRlYm91bmNlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBldmVudFN1YnNjcmlwdGlvbnMgPSBuZXcgQXJyYXk8U3Vic2NyaXB0aW9uPigpO1xyXG4gIHB1YmxpYyBleHBhbmRlZEtleXM7XHJcbiAgcHVibGljIGNvbXBvbmVudFNldHRpbmdzID0ge1xyXG4gICAga2VuZG9NdWx0aVNlbGVjdFRyZWVTdW1tYXJ5VGFnOiA5OTk5OTksXHJcbiAgICBwb3B1cFNldHRpbmdzOiBudWxsLFxyXG4gICAgZXhwYW5kT25GaWx0ZXI6IHtcclxuICAgICAgZXhwYW5kTWF0Y2hlczogdHJ1ZSxcclxuICAgICAgZXhwYW5kZWRPbkNsZWFyOiBcImluaXRpYWxcIixcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBwcml2YXRlIGxvYWRJbmZpbml0ZURhdGFTdWI6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHB1YmxpYyBmaWx0ZXJTZXR0aW5nczogRHJvcERvd25GaWx0ZXJTZXR0aW5ncyA9IHtcclxuICAgIGNhc2VTZW5zaXRpdmU6IGZhbHNlLFxyXG4gICAgb3BlcmF0b3I6IFwiY29udGFpbnNcIixcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHdlYkFwaVNlcnZpY2U6IFdlYkFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmaWVsZFNlcnZpY2U6IEZpZWxkU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2aXJ0dWFsOiBhbnkgPSB7XHJcbiAgICBpdGVtSGVpZ2h0OiAyOCxcclxuICAgIHBhZ2VTaXplOiAxNVxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXRDb21wb25lbnRUb1VzZSgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVVSVNpZ25hbCgpO1xyXG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7XHJcbiAgICBzdXBlci5zZXR1cENvbXBvbmVudFNldHRpbmdzKHRoaXMuY29tcG9uZW50U2V0dGluZ3MpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRTZWxlY3RNdWx0aXBsZVRleHRWYWx1ZSh0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucywgdGhpcyk7XHJcblxyXG4gICAgLy8gW0Ryb3Bkb3dubGlzdCBNdWx0aXBsZV0gLSBhdXRvIGNsb3NlIG1lbnUgd2hlbiBsb3NlIGZvY3VzLlxyXG4gICAgaWYgKHRoaXMuZGF0YS5BdXRvQ2xvc2UgPT09IGZhbHNlKSB0aGlzLmF1dG9DbG9zZSA9IHRoaXMuZGF0YS5BdXRvQ2xvc2U7XHJcblxyXG4gICAgLy8gSGFuZGxlIENsaWNrYWJsZSBJY29uc1xyXG4gICAgdGhpcy5pY29uTGlzdCA9IHRoaXMuZGF0YS5DbGlja2FibGVJY29ucztcclxuICAgIGlmICh0aGlzLmljb25MaXN0KSB7XHJcbiAgICAgIGlmICh0aGlzLmljb25MaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmljb25MaXN0LmZvckVhY2goKGk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGkuVG9vbHRpcCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGkuVG9vbHRpcCA9IFwiXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpLlRvb2x0aXAgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgaS5Ub29sdGlwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIERlZmF1bHQgcG9zaXRpb24gdG9wLiByaWdodCB8IGJvdHRvbSB8IHRvcCB8IGxlZnRcclxuICAgICAgICAgIGlmIChpLlBvc2l0aW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaS5Qb3NpdGlvbiA9IFwidG9wXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuYWxsb3dDdXN0b21WYWx1ZSA9IHRoaXMuZGF0YS5BbGxvd0N1c3RvbVZhbHVlIHx8IGZhbHNlOyAvLyBBbGxvdyBlbnRlciB0ZXh0IGluIGRyb3Bkb3duYm94XHJcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5kYXRhLlZhbHVlO1xyXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZGF0YTtcclxuICAgIGNvbnN0IHpNb2RlbCA9IHRoaXMuZ3JvdXAuek1vZGVsO1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiA0IFN0eWxlcyBvZiBkZWNsYXJlIHRoZSBjb21wb25lbnTvv71zIG9wdGlvbiBsaXN0IGRhdGEgc291cmNlLlxyXG4gICAgICogU3R5bGUgIzEgLSBGaWVsZC5TZWxlY3RPcHRpb25zIGRlZmluZWQgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0IHRoYXQgY29udGFpbiB0ZXh0IGFuZCB2YWx1ZS5cclxuICAgICAqIFN0eWxlICMyIC0gRmllbGQuU2VsZWN0T3B0aW9ucyBkZWZpbmVkIGFzIGEgcGhhc2UgbGlrZSDvv71pdGVtLklkIGFzIGl0ZW0uTmFtZSBmb3IgaXRlbSBpbiBncm91cC56RGF0YS5Qcm9qZWN0T3B0aW9uc++/vS5cclxuICAgICAqIFN0eWxlICMzIC0gRmllbGQuT3B0aW9uUmVzb3VyY2VVUkwgZGVmaW5lZCB0aGUgbmFtZSBvZiByZXNvdXJjZSBzZXJ2ZXIgYXBpLlxyXG4gICAgICogU3R5bGUgIzQgLSBGaWVsZC5JbmZpbml0ZVNjcm9sbCQgZGVmaW5lZCB0aGUgbWV0aG9kIG5hbWUgYXMg77+9Z3JvdXAuZ2V0TW9yZURhdGFBc1Njcm9sbO+/vS5cclxuICAgICAqL1xyXG5cclxuICAgIGlmIChkYXRhLkhhc0luZmluaXRlU2Nyb2xsICYmIGRhdGEuSW5maW5pdGVTY3JvbGwkKSB7XHJcbiAgICAgIC8vIHdoZW4gaW5maW5pdGllIHNjcm9sbFxyXG4gICAgICBsZXQgcmVjb3JkSWQgPSBudWxsO1xyXG4gICAgICBpZiAoek1vZGVsICYmIHpNb2RlbFtmaWVsZFZhbHVlXSkge1xyXG4gICAgICAgIC8vIGdldCB6TW9kZWwgVmFsdWVcclxuICAgICAgICByZWNvcmRJZCA9IHpNb2RlbFtmaWVsZFZhbHVlXS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZ2V0ekRhdGFGb3J6TW9kZWwkOiBPYnNlcnZhYmxlPGFueT4gPSBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShudWxsLCAnJywgdGhpcywgcmVjb3JkSWQpO1xyXG4gICAgICBpZiAoZ2V0ekRhdGFGb3J6TW9kZWwkKSB7XHJcbiAgICAgICAgZ2V0ekRhdGFGb3J6TW9kZWwkLnN1YnNjcmliZSgoemRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuTmFtZSwgJyAtIGluaXRpYWwgekRhdGEgbG9hZDogJywgemRhdGEpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaXNNb2JpbGVTY3JlZW4oKSkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gU3R5bGUgIzEsICMyLCAjM1xyXG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGRhdGEuSXNSZXF1aXJlZCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5kYXRhLk9wdGlvblJlc291cmNlVVJMKSB7XHJcbiAgICAgICAgdGhpcy5sYXp5TG9hZERhdGFPcHRpb25zKCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25EYXRhID0gcmVzLmRhdGFTZXQgPyByZXMuZGF0YVNldCA6IHJlcztcclxuXHJcbiAgICAgICAgICBpZiAob3B0aW9uRGF0YSAmJiBvcHRpb25EYXRhLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5kYXRhLkRpc2FibGVBdXRvRmlyc3RTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvU2VsZWN0Rmlyc3RPcHRpb24oaXNSZXF1aXJlZCwgb3B0aW9uRGF0YVswXSwgZmllbGRWYWx1ZSwgek1vZGVsLklkKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyTG9hZHpEYXRhT3B0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhLlNlbGVjdE9wdGlvbnMpICYmIHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSB7XHJcbiAgICAgICAgICAvL3NraXAgZXZhbCBpZiBzZWxlY3RvcHRpb25zIGlzIGV4aXN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uRGF0YSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLml0ZW1EYXRhRmllbGQpO1xyXG4gICAgICAgICAgLy8gYXBwZW5kIGRhdGEgdmlhIHRpbWVvdXQgYWZ0ZXIgZGF0YSBpcyBsb2FkZWQuXHJcbiAgICAgICAgICBpZiAob3B0aW9uRGF0YSAmJiBvcHRpb25EYXRhLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5kYXRhLkRpc2FibGVBdXRvRmlyc3RTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgY29uc3QgdGhpc0NvbXBvbmVudCA9IHRoaXM7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgIHRoaXNDb21wb25lbnQuYXV0b1NlbGVjdEZpcnN0T3B0aW9uKGlzUmVxdWlyZWQsIG9wdGlvbkRhdGFbMF0sIGZpZWxkVmFsdWUsIHRoaXNDb21wb25lbnQuZ3JvdXAuek1vZGVsLklkKTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5TZWFyY2hPcGVyYXRvciA9PT0gRHJvcGRvd25TZWFyY2hPcGVyYXRvci5TdGFydHNXaXRoKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyU2V0dGluZ3Mub3BlcmF0b3IgPSAnc3RhcnRzV2l0aCc7XHJcbiAgICB9IFxyXG5cclxuICAgIHN1cGVyLmZvY3VzT25EZWZhdWx0KHRoaXMuZm9jdXMuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmV2ZW50U3Vic2NyaXB0aW9ucykge1xyXG4gICAgICBpZiAoZSAmJiAhZS5jbG9zZWQpIHtcclxuICAgICAgICBlLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEF1dG8gc2VsZWN0IGZpcnN0IG9wdGlvbiAoaWYgcmVxdWlyZWQgJiBvbmx5IDEgb3B0aW9uKVxyXG4gIHByaXZhdGUgYXV0b1NlbGVjdEZpcnN0T3B0aW9uKHJlcXVpcmVkOiBib29sZWFuLCBkYXRhOiBhbnksIHpNb2RlbFByb3BlcnR5TmFtZTogc3RyaW5nLCBpZDogYW55KSB7XHJcbiAgICBpZiAoWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShpZCkgJiYgcmVxdWlyZWQpIHtcclxuICAgICAgdmFyIG9wdGlvbklkID0gZGF0YS5JZDtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5NdWx0aXBsZSkge1xyXG4gICAgICAgIG9wdGlvbklkID0gW29wdGlvbklkXTtcclxuICAgICAgfVxyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoek1vZGVsUHJvcGVydHlOYW1lLCBvcHRpb25JZCwgdGhpcy5ncm91cCk7XHJcblxyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2hhbmdlLFxyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIGRhdGE6IHsgWyd2YWx1ZSddOiBvcHRpb25JZCwgZmllbGQ6IHRoaXMuZGF0YSB9XHJcbiAgICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGUgIzNcclxuICBsYXp5TG9hZERhdGFPcHRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXNvdXJjZVVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcclxuICAgICAgdGhpcy5kYXRhLk9wdGlvblJlc291cmNlVVJMXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclBhcmFtID0gbmV3IFpTZWxlY3RQb3N0QXBpUGFyYW1zKCk7XHJcbiAgICBmaWx0ZXJQYXJhbS5zb3J0cyA9IHRoaXMuZGF0YS5PcHRpb25Tb3J0O1xyXG4gICAgZmlsdGVyUGFyYW0uY29sdW1ucyA9IHRoaXMuZGF0YS5PcHRpb25Db2x1bW5zO1xyXG4gICAgZmlsdGVyUGFyYW0uZmlsdGVycyA9IHRoaXMuZGF0YS5PcHRpb25GaWx0ZXI7XHJcblxyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0RGF0YU9wdGlvbnMoXHJcbiAgICAgIHRoaXMuZGF0YS5PcHRpb25OYW1lLFxyXG4gICAgICBmaWx0ZXJQYXJhbSxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgcmVzb3VyY2VVcmwsXHJcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLFxyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZGF0YVsnRGlzYWJsZUNhY2hlJ11cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBTdHlsZSAjNCwgdXNlZCBpbiBpb25pYy1zZWxlY3RhYmxlXHJcbiAgZ2V0SW5maW5pdGVEYXRhKGV2ZW50OiB7XHJcbiAgICBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShldmVudC5jb21wb25lbnQsIGV2ZW50LnRleHQsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXNEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbmZpbml0ZXpEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuT3B0aW9uTmFtZSB8fCB0aGlzLml0ZW1EYXRhRmllbGQgfHwgJ2dyb3VwLnpEYXRhLicgKyB0aGlzLmRhdGEuTmFtZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSAmJiAhdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0pIHtcclxuICAgICAgLy8gcmV0dXJuIHNlbGVjdGlvbk9wdGlvbnM7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5pdGVtRGF0YUZpZWxkID0gb3B0aW9uTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCd6RGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbb3B0aW9uTmFtZV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLndhcm4odGhpcy5kYXRhLk5hbWUsICcgLSBJbnZhbGlkIHNldHRpbmcgZm9yIE9wdGlvbk5hbWU6ICcsIG9wdGlvbk5hbWUpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHRleHQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQgKG9uU2VhcmNoKTogXCIsIGV2ZW50KTtcclxuICAgIC8vIGV2ZW50LmNvbXBvbmVudCBpcyBmb3IgbW9iaWxlIG9ubHlcclxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50ZXh0OyBcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IGV2ZW50LmNvbXBvbmVudDtcclxuXHJcbiAgICAvLyBTdGFydCBzZWFyY2ggYW5kIGVuYWJsZSBpbmZpbml0ZSBzY3JvbGxpbmcgb24gdGhlIGNvbXBvbmVudCBpZiBhdmFpbGFibGVcclxuICAgIGNvbXBvbmVudD8uc3RhcnRTZWFyY2goKTtcclxuICAgIGNvbXBvbmVudD8uZW5hYmxlSW5maW5pdGVTY3JvbGwoKTtcclxuXHJcbiAgICAvLyBSZXNldCBwYWdpbmcgYW5kIGNsZWFyIGRhdGEgaWYgbmV3IHNlYXJjaCB0ZXh0IGlzIGRldGVjdGVkIG9yIGluZmluaXRlIHNjcm9sbGluZyBpcyBlbmFibGVkXHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIGlmIChzZWFyY2hUZXJtICE9PSBudWxsICYmIHNlYXJjaFRlcm0gIT09IHRoaXMuaW5maW5pdGVTZWFyY2hUZXh0KSB7XHJcbiAgICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgICAgICAgdGhpcy5tb2RlbHpEYXRhID0gW107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbmZpbml0ZURhdGFMb2FkZWQgPSBmYWxzZTtcclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5jYW5jZWxHZXRJbmZpbml0ZURhdGE7XHJcbiAgICAgIHRoaXMuZ2V0SW5maW5pdGVEYXRhKGV2ZW50KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyBSZXNldCBzY3JvbGwgcGFnZSwgZW1wdHkgaXRlbXNcclxuICAgICAgdGhpcy5pbmZpbml0ZVNjcm9sbFBhZ2VObyA9IDA7XHJcbiAgICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJlcGFyZSBkZWZhdWx0IHBhcmFtZXRlcnMgZm9yIGl0ZW0gZmlsdGVyaW5nXHJcbiAgICAgIGNvbnN0IHBhcmFtczogelNlbGVjdE11bHRpcGxlUGFyYW1zID0ge1xyXG4gICAgICAgIHJlZmVySWQ6IG51bGwsXHJcbiAgICAgICAgcGFnZU5vOiAwLFxyXG4gICAgICAgIHBhZ2VTaXplOiAyMCxcclxuICAgICAgICBzb3J0Q29sdW1uTmFtZTogXCJcIixcclxuICAgICAgICBzb3J0T3JkZXI6IFwiXCIsXHJcbiAgICAgICAgc29ydENvbHVtbk5hbWVzOiBbXSxcclxuICAgICAgICBzb3J0T3JkZXJzOiBbXSxcclxuICAgICAgICBmaWx0ZXJQYXJhbXM6IFtdLFxyXG4gICAgICAgIHBhcmFtZXRlcnM6IFwiXCJcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IHNlYXJjaEJ5ID0gdGhpcy5kYXRhLlNlYXJjaEZpZWxkcyA/PyB0aGlzLml0ZW1UZXh0RmllbGQ7XHJcbiAgICAgIGNvbnN0IGl0ZW1zRGF0YSA9IHRoaXMuZ2V0SXRlbXNEYXRhKCk7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBaQ29tcG9uZW50SGVscGVyLmZpbHRlclNlYXJjaEl0ZW1zKFxyXG4gICAgICAgIGl0ZW1zRGF0YSxcclxuICAgICAgICBzZWFyY2hUZXJtLFxyXG4gICAgICAgIHNlYXJjaEJ5LFxyXG4gICAgICAgIHBhcmFtcy5wYWdlTm8sXHJcbiAgICAgICAgcGFyYW1zLnBhZ2VTaXplLFxyXG4gICAgICAgIHRoaXMuZGF0YS5TZWFyY2hPcGVyYXRvclxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5jaGVja0FsbG93Q3VzdG9tVmFsdWUoc2VhcmNoQnksIHNlYXJjaFRlcm0sIGZpbHRlcmVkSXRlbXMsIGl0ZW1zRGF0YSk7XHJcbiAgICAgICBcclxuICAgICAgLy8gVXBkYXRlIGNvbXBvbmVudCBpdGVtcyBhbmQgaGFuZGxlIHNlYXJjaCBjb21wbGV0aW9uXHJcbiAgICAgIGlmIChjb21wb25lbnQpIHtcclxuICAgICAgICBjb21wb25lbnQuaXRlbXMgPSBbLi4uY29tcG9uZW50Lml0ZW1zLCAuLi5maWx0ZXJlZEl0ZW1zXTtcclxuICAgICAgICBjb21wb25lbnQuZW5kSW5maW5pdGVTY3JvbGwoKTtcclxuICAgICAgICBjb21wb25lbnQuZW5kU2VhcmNoKCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja0FsbG93Q3VzdG9tVmFsdWUoc2VhcmNoQnk6IHN0cmluZywgc2VhcmNoVGVybTpzdHJpbmcsIGZpbHRlcmVkSXRlbXM6IGFueVtdLCBpdGVtc0RhdGE/OiBhbnkpIHtcclxuICAgIC8vIEFsbG93IGN1c3RvbSB2YWx1ZSB1bmxlc3MgYSBkaXJlY3QgbWF0Y2ggaXMgZm91bmRcclxuICAgIHRoaXMuYWxsb3dDdXN0b21WYWx1ZSA9IHRoaXMuZGF0YS5BbGxvd0N1c3RvbVZhbHVlO1xyXG4gICAgbGV0IHNlYXJjaEZpZWxkczogc3RyaW5nW107XHJcbiAgICBpZiAoc2VhcmNoQnkpIHtcclxuICAgICAgc2VhcmNoRmllbGRzID0gc2VhcmNoQnkucmVwbGFjZSgvXFxzL2csIFwiXCIpLnNwbGl0KFwiLFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNlYXJjaEZpZWxkcyA9IE9iamVjdC5rZXlzKGl0ZW1zRGF0YVswXSk7XHJcbiAgICB9XHJcbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZmlsdGVyaXRlbXMgdG8gY2hlY2sgaWYgYW55IGl0ZW0gbWF0Y2hlcyBzZWFyY2hUZXh0IGluIGFueSBvZiB0aGUgc2VhcmNoRmllbGRzIFxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlcmVkSXRlbXMpIHtcclxuICAgICAgLy8gQ2hlY2sgZWFjaCBzZWFyY2hGaWVsZCBmb3Igc2VhcmNoVGV4dFxyXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHNlYXJjaEZpZWxkcykge1xyXG4gICAgICAgIGlmIChpdGVtW2ZpZWxkXSAmJiBpdGVtW2ZpZWxkXSA9PT0gc2VhcmNoVGVybSkge1xyXG4gICAgICAgICAgdGhpcy5hbGxvd0N1c3RvbVZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhazsgLy8gQnJlYWsgdGhlIGlubmVyIGxvb3Agc2luY2Ugd2UndmUgZm91bmQgYSBtYXRjaFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAgICAgIFxyXG4gIGhhbmRsZUZpbHRlcihzZWFyY2hUZXJtOiBhbnksIGp1c3RPbmVUaW1lPzogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QgJiYgdGhpcy5kYXRhLlNlYXJjaExlbmd0aCkge1xyXG4gICAgICBjb25zdCBtZWV0c0xlbmd0aENvbmRpdGlvbiA9IHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggJiYgdGhpcy5kYXRhLlNlYXJjaExlbmd0aCA8PSBzZWFyY2hUZXJtLmxlbmd0aDtcclxuICAgICAgdGhpcy5tdWx0aXNlbGVjdC50b2dnbGUobWVldHNMZW5ndGhDb25kaXRpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNlYXJjaEJ5ID0gdGhpcy5kYXRhLlNlYXJjaEZpZWxkcyA/PyB0aGlzLml0ZW1UZXh0RmllbGQ7XHJcbiAgICBjb25zdCBpdGVtc0RhdGEgPSB0aGlzLmdldEl0ZW1zRGF0YSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuQWxsb3dDdXN0b21WYWx1ZSkge1xyXG4gICAgICB0aGlzLmNoZWNrQWxsb3dDdXN0b21WYWx1ZShzZWFyY2hCeSwgc2VhcmNoVGVybSwgaXRlbXNEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZVN1Yikge1xyXG4gICAgICB0aGlzLmRlYm91bmNlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kZWJvdW5jZVN1YiA9IG9mKFtdKS5waXBlKFxyXG4gICAgICB0YXAoKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gdHJ1ZSkpLFxyXG4gICAgICBkZWxheSg1MDApLFxyXG4gICAgICB0YXAoKCkgPT4gdGhpcy5wZXJmb3JtU2VhcmNoKHNlYXJjaFRlcm0pKSxcclxuICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IGZhbHNlKSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwZXJmb3JtU2VhcmNoKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IHNlYXJjaEFjdGlvbiA9ICgpID0+IHtcclxuICAgICAgdGhpcy5vblNlYXJjaCh7IGNvbXBvbmVudDogbnVsbCwgdGV4dDogdmFsdWUgfSk7XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5hZnRlckxvYWR6RGF0YU9wdGlvbnMoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZGF0YS5TZWFyY2hMZW5ndGggfHwgdGhpcy5kYXRhLlNlYXJjaExlbmd0aCA8PSB2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgc2VhcmNoQWN0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVMYXp5TG9hZEZpbHRlcih2YWx1ZTogYW55LCBqdXN0T25lVGltZT86IGJvb2xlYW4pIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVib3VuY2VTdWIgPSBvZihbXSkucGlwZShkZWxheSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwLmFmdGVyTG9hZHpEYXRhT3B0aW9ucykge1xyXG4gICAgICAgICAgdGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnModGhpcy5ncm91cCwgdGhpcy5kYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPcGVuKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgaWYoIXRoaXMuaW5maW5pdGVEYXRhTG9hZGVkKXtcclxuICAgICAgICB0aGlzLmluZmluaXRlRGF0YUxvYWRlZCA9IHRydWU7IFxyXG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyBFbnN1cmUgbXVsdGlzZWxlY3QgdmFsdWUgbWVldHMgdGhlIHNlYXJjaCBsZW5ndGggcmVxdWlyZW1lbnRcclxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggJiYgdGhpcy5tdWx0aXNlbGVjdC52YWx1ZS5sZW5ndGggPCB0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjsgLy8gRWFybHkgcmV0dXJuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNoZWNrc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xvc2UoZXZlbnQ/OiBFdmVudCkgeyBcclxuICB9XHJcblxyXG4gIGhhbmRsZUJsdXIoKSB7XHJcbiAgICAvLyB0aGlzLmhhbmRsZUNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SXRlbVRlbXBsYXRlKFxyXG4gICAgaXRlbTogYW55LFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGl0ZW1WYWx1ZUZpZWxkOiBzdHJpbmcsXHJcbiAgICBpdGVtVGV4dEZpZWxkOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIFRvRE86IGl0ZW1WYWx1ZUZpZWxkIGFuZCBpdGVtVGV4dEZpZWxkXHJcbiAgICBpZiAodGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZSk7XHJcblxyXG4gICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jKHtcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgaXRlbVZhbHVlRmllbGQsXHJcbiAgICAgICAgaXRlbVRleHRGaWVsZFxyXG4gICAgICB9IGFzIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbVRleHRGaWVsZCkge1xyXG4gICAgICByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJldHVybiBpdGVtW2l0ZW1UZXh0RmllbGRdO1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtKS5qb2luKFwiLCBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFkZEl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25BZGRJdGVtKTtcclxuICAgIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGYuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYygpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGRlY2xhcmF0aW9uIG9mIE9uQWRkSXRlbTogJywgZik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAvLyBDb21wb25lbnQgYmFzaWMgZnVuY3Rpb25cclxuICBjbGVhckRhdGEoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBcIlwiLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIGNsZWFySXRlbXMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xlYXIoKTtcclxuICAgICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbmZpcm1JdGVtcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jb25maXJtKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVJdGVtcygpIHtcclxuICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LnRvZ2dsZUl0ZW1zKHRoaXMudG9nZ2xlU2VsZWN0YWJsZSk7XHJcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdGFibGUgPSAhdGhpcy50b2dnbGVTZWxlY3RhYmxlO1xyXG5cclxuICAgIC8vIENvbmZpcm0gaXRlbXMgYW5kIGNsb3NlIFNlbGVjdCBwYWdlXHJcbiAgICAvLyB3aXRob3V0IGhhdmluZyB0aGUgdXNlciB0byBjbGljayBDb25maXJtIGJ1dHRvbi5cclxuICAgIC8vIHRoaXMuY29uZmlybSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRGlzYWJsZSBPcGVuIE9uIEZvY3VzXHJcbiAgZGlzYWJsZU9wZW5PbkZvY3VzKGNvbWJvYm94Q29tcG9uZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuRGlzYWJsZU9wZW5PbkZvY3VzKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBjb21ib2JveENvbXBvbmVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE9uQ2hhbmdlXHJcbiAgcHVibGljIG9uQ2hhbmdlX2Rlc2t0b3AoZXZlbnQ6IGFueSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UobnVsbCwgZXZlbnQpXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlX21vYmlsZShldmVudDogeyBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDsgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBzdXBlci5vbkNoYW5nZShldmVudClcclxuICAgIGNvbnN0IGZjID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICB0aGlzLmhhbmRsZUNsb3NlKG51bGwpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc3VwZXIuZ2V0SXNSZXF1aXJlZFZhbHVlKCkgJiYgKGV2ZW50LnZhbHVlID09PSBudWxsIHx8IGV2ZW50LnZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICBmYy5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZjLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwgJiYgISF0aGlzLmRhdGEuSW5maW5pdGVTY3JvbGwkKSB7XHJcbiAgICAgIGNvbnN0IHRleHRGaWVsZCA9IHRoaXMuaXRlbVRleHRGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5pdGVtVmFsdWVGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBsZXQgemRhdGFNb2RlbCA9IFtdO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB6ZGF0YU1vZGVsID0gdGhpcy5pbmZpbml0ZXpEYXRhLmZpbHRlcih4ID0+IHhbdmFsdWVGaWVsZF0gPT09IHZhbHVlKTtcclxuICAgICAgICB0aGlzLm1vZGVsekRhdGEgPSB6ZGF0YU1vZGVsLnNsaWNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuekRhdGFbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDEyKV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDYpXSA9IHpkYXRhTW9kZWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE11bHRpIFNlbGVjdGlvbiBUcmVlXHJcbiAgcHVibGljIGhhc0NoaWxkcmVuID0gKGRhdGFpdGVtOiBhbnkpOiBib29sZWFuID0+ICEhZGF0YWl0ZW1bJ2l0ZW1zJ107XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNdWx0aVNlbGVjdFRyZWVGaWx0ZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJzZWRJdGVtc0RhdGEgPSB0aGlzLm9uTXVsdGlTZWxlY3RUcmVlU2VhcmNoKHRoaXMuZ2V0SXRlbXNEYXRhKCksIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk11bHRpU2VsZWN0VHJlZVNlYXJjaChpdGVtczogYW55W10sIHNlYXJjaGVkVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5zKGl0ZW1bdGhpcy5pdGVtVGV4dEZpZWxkXSwgc2VhcmNoZWRUZXh0KSkge1xyXG4gICAgICAgIGFjYy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW1bJ2l0ZW1zJ10gJiYgaXRlbVsnaXRlbXMnXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgbmV3SXRlbXMgPSB0aGlzLm9uTXVsdGlTZWxlY3RUcmVlU2VhcmNoKGl0ZW1bJ2l0ZW1zJ10sIHNlYXJjaGVkVGV4dCk7XHJcblxyXG4gICAgICAgIGlmIChuZXdJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBfaXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pO1xyXG4gICAgICAgICAgX2l0ZW1bJ2l0ZW1zJ10gPSBuZXdJdGVtcztcclxuXHJcbiAgICAgICAgICBhY2MucHVzaChfaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IFxyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnRhaW5zKHRleHQ6IHN0cmluZywgc2VhcmNoZWRUZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoKHNlYXJjaGVkVGV4dCB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTZWxlY3RPcHRpb24odmFsdWU6IGFueSkge1xyXG4gICAgY29uc3Qgb3B0aW9uTmFtZSA9IHRoaXMuZGF0YS5PcHRpb25OYW1lIHx8IHRoaXMuaXRlbURhdGFGaWVsZDtcclxuICAgIHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zID0gT2JqZWN0LmFzc2lnbihbXSwgdmFsdWUpO1xyXG4gICAgdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmNvbWJvYm94Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuY29tYm9ib3hDb21wb25lbnQuZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xyXG4gICAgICB0aGlzLm11bHRpc2VsZWN0LmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3R0cmVlKSB7XHJcbiAgICAgIHRoaXMubXVsdGlzZWxlY3R0cmVlLmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJvcGRvd25saXN0Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25saXN0Q29tcG9uZW50LmZvY3VzKCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb21wb25lbnRUb1VzZSgpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSW50ZXJuYWxDb21wb25lbnRUeXBlICYmIE9iamVjdC52YWx1ZXMoSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duKS5pbmNsdWRlcyh0aGlzLmRhdGEuSW50ZXJuYWxDb21wb25lbnRUeXBlIGFzIGFueSkpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRUeXBlID0gdGhpcy5kYXRhLkludGVybmFsQ29tcG9uZW50VHlwZSBhcyBhbnk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghdGhpcy5kYXRhLk11bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5jb21ib2JveDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YS5NdWx0aXBsZSAmJiAhdGhpcy5kYXRhLkVuYWJsZUNoZWNrYm94KSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50VHlwZSA9IEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5tdWx0aXNlbGVjdDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZGF0YS5NdWx0aXBsZSAmJiB0aGlzLmRhdGEuRW5hYmxlQ2hlY2tib3gpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRUeXBlID0gSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLm11bHRpc2VsZWN0dHJlZTtcclxuICAgICAgdGhpcy5zZXR1cERhdGFJdGVtcygpO1xyXG4gICAgICB0aGlzLnNldERlZmF1bHRFeHBhbmRhYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RGF0YUl0ZW1zKCk6IEFycmF5PGFueT4ge1xyXG4gICAgY29uc3QgbW9kZWxWYWx1ZSA9IHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICByZXR1cm4gdGhpcy5hbGxEYXRhSXRlbXMuZmlsdGVyKHggPT4gbW9kZWxWYWx1ZS5pbmNsdWRlcyh4W3RoaXMuaXRlbVZhbHVlRmllbGQgfHwgJ0lkJ10pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBEYXRhSXRlbXMoKSB7XHJcbiAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIGlmIChtb2RlbFZhbHVlICYmIG1vZGVsVmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlRGF0YVdpdGhvdXRIaWVyYXJjaHkodGhpcy5nZXRJdGVtc0RhdGEoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlRGF0YVdpdGhvdXRIaWVyYXJjaHkoZGF0YUl0ZW1zKSB7XHJcbiAgICBmb3IgKGNvbnN0IGRhdGFJdGVtIG9mIGRhdGFJdGVtcykge1xyXG4gICAgICB0aGlzLmFsbERhdGFJdGVtcy5wdXNoKGRhdGFJdGVtKTtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YUl0ZW0uVmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZURhdGFXaXRob3V0SGllcmFyY2h5KGRhdGFJdGVtLlZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERlZmF1bHRFeHBhbmRhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5UcmVlTGlzdEluaXRpYWxseUV4cGFuZGVkRGF0YUlkcykge1xyXG4gICAgICBjb25zdCBpZExpc3QgPSB0eXBlb2YgdGhpcy5kYXRhLlRyZWVMaXN0SW5pdGlhbGx5RXhwYW5kZWREYXRhSWRzID09ICdzdHJpbmcnID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKHRoaXMuZGF0YS5UcmVlTGlzdEluaXRpYWxseUV4cGFuZGVkRGF0YUlkcyBhcyBzdHJpbmcsIHRoaXMuZ3JvdXApIDogdGhpcy5kYXRhLlRyZWVMaXN0SW5pdGlhbGx5RXhwYW5kZWREYXRhSWRzO1xyXG4gICAgICBpZiAoaWRMaXN0ICYmIEFycmF5LmlzQXJyYXkoaWRMaXN0KSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRLZXlzID0gaWRMaXN0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFmdGVyTG9hZHpEYXRhT3B0aW9ucygpIHtcclxuICAgIGlmICh0aGlzLmdyb3VwLmFmdGVyTG9hZHpEYXRhT3B0aW9ucykge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImdyb3VwLmFmdGVyTG9hZHpEYXRhT3B0aW9ucyB0cmlnZ2VyZWQuXCIgKyB0aGlzLmRhdGEpO1xyXG4gICAgICB0aGlzLmdyb3VwLmFmdGVyTG9hZHpEYXRhT3B0aW9ucyh0aGlzLmdyb3VwLCB0aGlzLmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENsb3NlIGRyb3AtZG93biBzZWxlY3Rpb24gdXBvbiBwYWdlIHNjcm9sbFxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVUlTaWduYWwoKSB7XHJcbiAgICB0aGlzLmV2ZW50U3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UudWlTaWduYWxTZXJ2aWNlLnN1YnNjcmliZVRvRXZlbnQoU2lnbmFsVHlwZS5QYWdlU2Nyb2xsU3RhcnQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZURvd25Ecm9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VEb3duRHJvcCgpIHtcclxuICAgIGNvbnN0IGNvbXAgPSB0aGlzLmdldENvbXBvbmVudEluVXNlQnlUeXBlKCk7XHJcbiAgICBpZiAoY29tcCAmJiBjb21wLmlzT3Blbikge1xyXG4gICAgICBjb21wLnRvZ2dsZShmYWxzZSk7XHJcbiAgICAgIGNvbXAuYmx1cigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb21wb25lbnRJblVzZUJ5VHlwZSgpOiBDb21ib0JveENvbXBvbmVudCB8IERyb3BEb3duTGlzdENvbXBvbmVudCB8IE11bHRpU2VsZWN0Q29tcG9uZW50IHwgTXVsdGlTZWxlY3RUcmVlQ29tcG9uZW50IHtcclxuICAgIHN3aXRjaCAodGhpcy5jb21wb25lbnRUeXBlKSB7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLmNvbWJvYm94OlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJvYm94Q29tcG9uZW50O1xyXG4gICAgICBjYXNlIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5tdWx0aXNlbGVjdDpcclxuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXNlbGVjdDtcclxuICAgICAgY2FzZSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24ubXVsdGlzZWxlY3R0cmVlOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpc2VsZWN0dHJlZTtcclxuICAgICAgY2FzZSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24uZHJvcGRvd25saXN0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3dubGlzdENvbXBvbmVudDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInpzZWxlY3RtdWx0aXBsZS1jb250YWluZXIgZTF0YWctc3R5bGVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZVwiPlxyXG4gIDxpb25pYy1zZWxlY3RhYmxlICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiICNzZWxlY3RDb21wb25lbnQgaXRlbS1jb250ZW50IHNlYXJjaEZhaWxUZXh0PVwiTm90aGluZyBmb3VuZCA6KFwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ29sb3I9XCJwcmltYXJ5XCIgY2xlYXJCdXR0b25UZXh0PVwiQ2xlYXJcIiBbKG5nTW9kZWwpXT1cImdyb3VwLnpNb2RlbFtkYXRhLlZhbHVlXVwiIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZ2V0SXRlbXNEYXRhKClcIiBbaXRlbVZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIiBbaXRlbVRleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2FuQWRkSXRlbV09XCIhIWRhdGEuT25BZGRJdGVtXCIgW2NhbkNsZWFyXT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NhblNlYXJjaF09XCIhZGF0YVsnZGlzYWJsZS1zZWFyY2gnXVwiIFtzaG91bGRGb2N1c1NlYXJjaGJhcl09XCIhZGF0YVsnZGlzYWJsZS1zZWFyY2gnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2hhc0luZmluaXRlU2Nyb2xsXT1cIiEhZGF0YS5IYXNJbmZpbml0ZVNjcm9sbFwiIFtpc011bHRpcGxlXT1cImRhdGEuTXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0VuYWJsZWRdPVwiISghIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3VsZFN0b3JlSXRlbVZhbHVlXT1cInRydWVcIiAob25TZWFyY2gpPVwib25TZWFyY2goJGV2ZW50KVwiIChvbkluZmluaXRlU2Nyb2xsKT1cImdldEluZmluaXRlRGF0YSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAob25BZGRJdGVtKT1cIm9uQWRkSXRlbSgkZXZlbnQpXCIgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlX21vYmlsZSgkZXZlbnQpXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlSXRlbUljb25UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaXNJdGVtU2VsZWN0ZWQ9XCJpc0l0ZW1TZWxlY3RlZFwiPlxyXG4gICAgICA8ZmEtaWNvbiBzbG90PVwic3RhcnRcIiBjbGFzcz1cImlzSXRlbVNlbGVjdGVkIGUxdGFnLXN0eWxlMlwiIHNpemU9XCJzbVwiIFtpY29uXT1cIlsnZmFyJywgaXNJdGVtU2VsZWN0ZWQgPyAnY2hlY2stY2lyY2xlJzogJ2NpcmNsZSddXCJcclxuICAgICAgICAgICAgICAgW3N0eWxlc109XCJ7J2NvbG9yJzogaXNJdGVtU2VsZWN0ZWQgPyAnZG9kZ2VyQmx1ZScgOiAnbGlnaHRHcmF5J31cIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTJcIj48L2ZhLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVDbG9zZUJ1dHRvblRlbXBsYXRlPlxyXG4gICAgICA8IS0tIDxpb24taWNvbiBuYW1lPVwiY2xvc2UtY2lyY2xlXCI+PC9pb24taWNvbj4gLS0+XHJcbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIid0aW1lcy1jaXJjbGUnXCIgc2l6ZT1cIm1kXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTNcIj48L2ZhLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVUaXRsZVRlbXBsYXRlPlxyXG4gICAgICA8c3BhbiBjbGFzcz1lMXRhZy1zdHlsZTQgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU0XCI+e3tkYXRhLkxhYmVsfX08L3NwYW4+XHJcbiAgICAgIDxpb24tdGV4dCAqbmdJZj1cImdldElzUmVxdWlyZWRWYWx1ZSgpXCIgY29sb3I9XCJkYW5nZXJcIj4qPC9pb24tdGV4dD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZUl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj57eyBnZXRJdGVtVGVtcGxhdGUoaXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb25pYy1zZWxlY3RhYmxlPlxyXG4gIDxrZW5kby1jb21ib2JveCAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGNvbXBvbmVudFR5cGUgPT0gJ2NvbWJvYm94J1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgI2NvbWJvYm94Q29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImdldEl0ZW1zRGF0YSgpIHwgenNlbGVjdFRyYW5zbGF0aW9uUGFyc2VyIDogaXRlbVRleHRGaWVsZCA6IGRhdGEgOiBncm91cCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tXT1cImFsbG93Q3VzdG9tVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBba2VuZG9Ecm9wRG93bkZpbHRlcl09XCJmaWx0ZXJTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzdWdnZXN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbZmlsdGVyYWJsZV09XCJkYXRhLkZpbHRlcmFibGUgPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbb3Blbk9uRm9jdXNdPVwiZGlzYWJsZU9wZW5PbkZvY3VzKGNvbWJvYm94Q29tcG9uZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZV9kZXNrdG9wKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZUZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxdPVwiZGF0YS5Jc0VuYWJsZVZpcnR1YWxpemF0aW9uID09IHRydWUgPyB2aXJ0dWFsIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgIChvcGVuKT1cImhhbmRsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRhdGEuQ2xlYXJCdXR0b24gPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0NvbWJvQm94SXRlbVRlbXBsYXRlIGxldC1kYXRhSXRlbT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbY2xhc3MuenNlbGVjdC12aXJ0dWFsaXphdGlvbl09XCJkYXRhLklzRW5hYmxlVmlydHVhbGl6YXRpb25cIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj57eyBnZXRJdGVtVGVtcGxhdGUoZGF0YUl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX08L3NwYW4+XHJcbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ0ZW1wbGF0ZVwiPnt7IGRhdGFJdGVtLnZhbHVlIH19PC9zcGFuPiB7eyBkYXRhSXRlbS50ZXh0IH19IC0tPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2tlbmRvLWNvbWJvYm94PlxyXG4gIDxrZW5kby1tdWx0aXNlbGVjdCAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICYmIGNvbXBvbmVudFR5cGUgPT0gJ211bHRpc2VsZWN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgI211bHRpc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImdldEl0ZW1zRGF0YSgpIHwgenNlbGVjdFRyYW5zbGF0aW9uUGFyc2VyIDogaXRlbVRleHRGaWVsZCA6IGRhdGEgOiBncm91cCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tXT1cImFsbG93Q3VzdG9tVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZmlsdGVyYWJsZV09XCJkYXRhLkZpbHRlcmFibGUgPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2hlY2tib3hlc109XCJkYXRhLkVuYWJsZUNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJhdXRvQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICBba2VuZG9Ecm9wRG93bkZpbHRlcl09XCJmaWx0ZXJTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZV9kZXNrdG9wKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZUZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKG9wZW4pPVwiaGFuZGxlT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwiZGF0YS5DbGVhckJ1dHRvbiA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvTXVsdGlTZWxlY3RJdGVtVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPnt7IGdldEl0ZW1UZW1wbGF0ZShkYXRhSXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1tdWx0aXNlbGVjdD5cclxuICA8a2VuZG8tbXVsdGlzZWxlY3R0cmVlICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgICYmIGNvbXBvbmVudFR5cGUgPT0gJ211bHRpc2VsZWN0dHJlZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgI211bHRpc2VsZWN0dHJlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAga2VuZG9NdWx0aVNlbGVjdFRyZWVFeHBhbmRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBba2VuZG9NdWx0aVNlbGVjdFRyZWVIaWVyYXJjaHlCaW5kaW5nXT1cImdldEl0ZW1zRGF0YSgpIHwgenNlbGVjdFRyYW5zbGF0aW9uUGFyc2VyIDogaXRlbVRleHRGaWVsZCA6IGRhdGEgOiBncm91cCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtrZW5kb011bHRpU2VsZWN0VHJlZVN1bW1hcnlUYWddPVwiY29tcG9uZW50U2V0dGluZ3Mua2VuZG9NdWx0aVNlbGVjdFRyZWVTdW1tYXJ5VGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuRmllbGQ9XCJWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaGFzQ2hpbGRyZW5dPVwiaGFzQ2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJpdGVtVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cIml0ZW1WYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZV9kZXNrdG9wKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFJdGVtc109XCJnZXREYXRhSXRlbXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiYXV0b0Nsb3NlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtleHBhbmRPbkZpbHRlcl09XCJjb21wb25lbnRTZXR0aW5ncy5leHBhbmRPbkZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyYWJsZV09XCJkYXRhLkZpbHRlcmFibGUgPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlckNoYW5nZSk9XCJoYW5kbGVNdWx0aVNlbGVjdFRyZWVGaWx0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAob3Blbik9XCJoYW5kbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbKGV4cGFuZGVkS2V5cyldPVwiZXhwYW5kZWRLZXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3B1cFNldHRpbmdzXT1cImNvbXBvbmVudFNldHRpbmdzLnBvcHVwU2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRhdGEuQ2xlYXJCdXR0b24gPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb011bHRpU2VsZWN0VHJlZU5vRGF0YVRlbXBsYXRlPlxyXG4gICAgICA8aDQ+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrLWljb24gay1pLXdhcm5pbmdcIj48L3NwYW4+PGJyIC8+PGJyIC8+XHJcbiAgICAgICAgTm8gcmVjb3JkIGZvdW5kLlxyXG4gICAgICA8L2g0PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2tlbmRvLW11bHRpc2VsZWN0dHJlZT5cclxuICA8a2VuZG8tZHJvcGRvd25saXN0ICAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpICAmJiBjb21wb25lbnRUeXBlID09ICdkcm9wZG93bmxpc3QnXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAjZHJvcGRvd25saXN0Q29tcG9uZW50XHJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImdldEl0ZW1zRGF0YSgpIHwgenNlbGVjdFRyYW5zbGF0aW9uUGFyc2VyIDogaXRlbVRleHRGaWVsZCA6IGRhdGEgOiBncm91cCB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVQcmltaXRpdmVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgW2FsbG93Q3VzdG9tXT1cImFsbG93Q3VzdG9tVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBba2VuZG9Ecm9wRG93bkZpbHRlcl09XCJmaWx0ZXJTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtzdWdnZXN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbZmlsdGVyYWJsZV09XCJkYXRhLkZpbHRlcmFibGUgPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICBbb3Blbk9uRm9jdXNdPVwiZGlzYWJsZU9wZW5PbkZvY3VzKGNvbWJvYm94Q29tcG9uZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF0YS5DbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZV9kZXNrdG9wKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZUZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxdPVwiZGF0YS5Jc0VuYWJsZVZpcnR1YWxpemF0aW9uID09IHRydWUgPyB2aXJ0dWFsIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgIChvcGVuKT1cImhhbmRsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGJsdXIpPVwiaGFuZGxlQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRhdGEuQ2xlYXJCdXR0b24gPT0gZmFsc2UgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb0Ryb3BEb3duTGlzdEl0ZW1UZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW2NsYXNzLnpzZWxlY3QtdmlydHVhbGl6YXRpb25dPVwiZGF0YS5Jc0VuYWJsZVZpcnR1YWxpemF0aW9uXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+e3sgZ2V0SXRlbVRlbXBsYXRlKGRhdGFJdGVtLCBkYXRhLCBncm91cCwgaXRlbVZhbHVlRmllbGQsIGl0ZW1UZXh0RmllbGQpIH19PC9zcGFuPlxyXG4gICAgICA8IS0tIDxzcGFuIGNsYXNzPVwidGVtcGxhdGVcIj57eyBkYXRhSXRlbS52YWx1ZSB9fTwvc3Bhbj4ge3sgZGF0YUl0ZW0udGV4dCB9fSAtLT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9rZW5kby1kcm9wZG93bmxpc3Q+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
618
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pzZWxlY3RtdWx0aXBsZS96c2VsZWN0bXVsdGlwbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNlbGVjdG11bHRpcGxlL3pzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBSzNGLDhCQUE4QjtBQUM5QixPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBTyxNQUFNLGdCQUFnQixDQUFDO0FBR2pELDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFeEUsT0FBTyxFQUVPLGdCQUFnQixFQUNHLG9CQUFvQixFQUF5Qiw4QkFBOEIsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQy9JLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTekIsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGNBQWM7SUFpRDFELFlBQ1MsZ0JBQW1DLEVBQ2xDLGtCQUFzQyxFQUN0QyxhQUE0QixFQUM1QixZQUEwQixFQUMxQixZQUEwQjtRQUVsQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQU5oQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJB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QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFDRSxlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBJb25pY1NlbGVjdGFibGVDb21wb25lbnQgfSBmcm9tIFwiaW9uaWMtc2VsZWN0YWJsZVwiO1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyB0YXAsIGRlbGF5LCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgQ29tYm9Cb3hDb21wb25lbnQsIERyb3BEb3duRmlsdGVyU2V0dGluZ3MsIERyb3BEb3duTGlzdENvbXBvbmVudCwgTXVsdGlTZWxlY3RDb21wb25lbnQsIE11bHRpU2VsZWN0VHJlZUNvbXBvbmVudCB9IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1kcm9wZG93bnNcIjtcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgSW5wdXRGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9pbnB1dGZpZWxkYmFzZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgUmVzb3VyY2VBcGlTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBDYWNoZVNlcnZpY2UsIEZpZWxkU2VydmljZSxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIENsaWNrYWJsZUljb25zLFxyXG4gIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zLCBaU2VsZWN0UG9zdEFwaVBhcmFtcywgelNlbGVjdE11bHRpcGxlUGFyYW1zLCBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24sIFNpZ25hbFR5cGUsIERyb3Bkb3duU2VhcmNoT3BlcmF0b3JcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpzZWxlY3RtdWx0aXBsZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venNlbGVjdG11bHRpcGxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFpzZWxlY3RtdWx0aXBsZUNvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoXCJjb21ib2JveENvbXBvbmVudFwiKSBjb21ib2JveENvbXBvbmVudDogQ29tYm9Cb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcImRyb3Bkb3dubGlzdENvbXBvbmVudFwiKSBkcm9wZG93bmxpc3RDb21wb25lbnQ6IERyb3BEb3duTGlzdENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKFwibXVsdGlzZWxlY3RcIikgbXVsdGlzZWxlY3Q6IE11bHRpU2VsZWN0Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoXCJtdWx0aXNlbGVjdHRyZWVcIikgbXVsdGlzZWxlY3R0cmVlOiBNdWx0aVNlbGVjdFRyZWVDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdENvbXBvbmVudFwiKSBzZWxlY3RDb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuXHJcbiAgcHVibGljIGNvbXBvbmVudFR5cGU6IEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bjtcclxuICBwcml2YXRlIGFsbERhdGFJdGVtcyA9IFtdO1xyXG4gIGljb25MaXN0OiBDbGlja2FibGVJY29uc1tdO1xyXG4gIGl0ZW1zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbW9kZWx6RGF0YTogQXJyYXk8YW55PjtcclxuICBpbmZpbml0ZXpEYXRhOiBBcnJheTxhbnk+ID0gW107XHJcbiAgaW5maW5pdGVTZWFyY2hUZXh0ID0gbnVsbDtcclxuICAvLyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICB0b2dnbGVTZWxlY3RhYmxlID0gdHJ1ZTtcclxuICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nID0gbnVsbDtcclxuICBpdGVtVGV4dEZpZWxkOiBzdHJpbmcgPSBudWxsO1xyXG4gIGl0ZW1EYXRhRmllbGQ6IHN0cmluZyA9IG51bGw7XHJcbiAgaXRlbVRlbXBsYXRlID0gXCJ7e2l0ZW1baXRlbVRleHRGaWVsZF19fVwiO1xyXG4gIGluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICBpbmZpbml0ZURhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGFsbG93Q3VzdG9tVmFsdWUgPSBmYWxzZTtcclxuICBhdXRvQ2xvc2U6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBwYXJzZWRJdGVtc0RhdGE6IGFueVtdO1xyXG4gIGRhdGFJbmZvOiB7fSA9IHtcclxuICAgIFwiaXRlbXNSZXNvdXJjZVVSTFwiOiBcIlwiLFxyXG4gICAgXCJvcHRpb25GaWx0ZXJzXCI6IFwiXCIsXHJcbiAgICBcInRvdGFsQ291bnRcIjogMFxyXG4gIH07XHJcbiAgcHJpdmF0ZSBkZWJvdW5jZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgZXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IEFycmF5PFN1YnNjcmlwdGlvbj4oKTtcclxuICBwdWJsaWMgZXhwYW5kZWRLZXlzO1xyXG4gIHB1YmxpYyBjb21wb25lbnRTZXR0aW5ncyA9IHtcclxuICAgIGtlbmRvTXVsdGlTZWxlY3RUcmVlU3VtbWFyeVRhZzogOTk5OTk5LFxyXG4gICAgcG9wdXBTZXR0aW5nczogbnVsbCxcclxuICAgIGV4cGFuZE9uRmlsdGVyOiB7XHJcbiAgICAgIGV4cGFuZE1hdGNoZXM6IHRydWUsXHJcbiAgICAgIGV4cGFuZGVkT25DbGVhcjogXCJpbml0aWFsXCIsXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8gcHJpdmF0ZSBsb2FkSW5maW5pdGVEYXRhU3ViOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgZmlsdGVyU2V0dGluZ3M6IERyb3BEb3duRmlsdGVyU2V0dGluZ3MgPSB7XHJcbiAgICBjYXNlU2Vuc2l0aXZlOiBmYWxzZSxcclxuICAgIG9wZXJhdG9yOiBcImNvbnRhaW5zXCIsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc291cmNlQXBpU2VydmljZTogUmVzb3VyY2VBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmlydHVhbDogYW55ID0ge1xyXG4gICAgaXRlbUhlaWdodDogMjgsXHJcbiAgICBwYWdlU2l6ZTogMTVcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2V0Q29tcG9uZW50VG9Vc2UoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVUlTaWduYWwoKTtcclxuICAgIHN1cGVyLnNldHVwSW5uZXJGaWVsZCgpO1xyXG4gICAgc3VwZXIuc2V0dXBDb21wb25lbnRTZXR0aW5ncyh0aGlzLmNvbXBvbmVudFNldHRpbmdzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0U2VsZWN0TXVsdGlwbGVUZXh0VmFsdWUodGhpcy5kYXRhLlNlbGVjdE9wdGlvbnMsIHRoaXMpO1xyXG5cclxuICAgIC8vIFtEcm9wZG93bmxpc3QgTXVsdGlwbGVdIC0gYXV0byBjbG9zZSBtZW51IHdoZW4gbG9zZSBmb2N1cy5cclxuICAgIGlmICh0aGlzLmRhdGEuQXV0b0Nsb3NlID09PSBmYWxzZSkgdGhpcy5hdXRvQ2xvc2UgPSB0aGlzLmRhdGEuQXV0b0Nsb3NlO1xyXG5cclxuICAgIC8vIEhhbmRsZSBDbGlja2FibGUgSWNvbnNcclxuICAgIHRoaXMuaWNvbkxpc3QgPSB0aGlzLmRhdGEuQ2xpY2thYmxlSWNvbnM7XHJcbiAgICBpZiAodGhpcy5pY29uTGlzdCkge1xyXG4gICAgICBpZiAodGhpcy5pY29uTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5pY29uTGlzdC5mb3JFYWNoKChpOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChpLlRvb2x0aXAgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpLlRvb2x0aXAgPSBcIlwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaS5Ub29sdGlwID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGkuVG9vbHRpcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBEZWZhdWx0IHBvc2l0aW9uIHRvcC4gcmlnaHQgfCBib3R0b20gfCB0b3AgfCBsZWZ0XHJcbiAgICAgICAgICBpZiAoaS5Qb3NpdGlvbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGkuUG9zaXRpb24gPSBcInRvcFwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmFsbG93Q3VzdG9tVmFsdWUgPSB0aGlzLmRhdGEuQWxsb3dDdXN0b21WYWx1ZSB8fCBmYWxzZTsgLy8gQWxsb3cgZW50ZXIgdGV4dCBpbiBkcm9wZG93bmJveFxyXG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZGF0YS5WYWx1ZTtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGE7XHJcbiAgICBjb25zdCB6TW9kZWwgPSB0aGlzLmdyb3VwLnpNb2RlbDtcclxuXHJcbiAgICAvKlxyXG4gICAgICogNCBTdHlsZXMgb2YgZGVjbGFyZSB0aGUgY29tcG9uZW5077+9cyBvcHRpb24gbGlzdCBkYXRhIHNvdXJjZS5cclxuICAgICAqIFN0eWxlICMxIC0gRmllbGQuU2VsZWN0T3B0aW9ucyBkZWZpbmVkIGFzIGFuIGFycmF5IG9mIG9iamVjdCB0aGF0IGNvbnRhaW4gdGV4dCBhbmQgdmFsdWUuXHJcbiAgICAgKiBTdHlsZSAjMiAtIEZpZWxkLlNlbGVjdE9wdGlvbnMgZGVmaW5lZCBhcyBhIHBoYXNlIGxpa2Ug77+9aXRlbS5JZCBhcyBpdGVtLk5hbWUgZm9yIGl0ZW0gaW4gZ3JvdXAuekRhdGEuUHJvamVjdE9wdGlvbnPvv70uXHJcbiAgICAgKiBTdHlsZSAjMyAtIEZpZWxkLk9wdGlvblJlc291cmNlVVJMIGRlZmluZWQgdGhlIG5hbWUgb2YgcmVzb3VyY2Ugc2VydmVyIGFwaS5cclxuICAgICAqIFN0eWxlICM0IC0gRmllbGQuSW5maW5pdGVTY3JvbGwkIGRlZmluZWQgdGhlIG1ldGhvZCBuYW1lIGFzIO+/vWdyb3VwLmdldE1vcmVEYXRhQXNTY3JvbGzvv70uXHJcbiAgICAgKi9cclxuXHJcbiAgICBpZiAoZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCAmJiBkYXRhLkluZmluaXRlU2Nyb2xsJCkge1xyXG4gICAgICAvLyB3aGVuIGluZmluaXRpZSBzY3JvbGxcclxuICAgICAgbGV0IHJlY29yZElkID0gbnVsbDtcclxuICAgICAgaWYgKHpNb2RlbCAmJiB6TW9kZWxbZmllbGRWYWx1ZV0pIHtcclxuICAgICAgICAvLyBnZXQgek1vZGVsIFZhbHVlXHJcbiAgICAgICAgcmVjb3JkSWQgPSB6TW9kZWxbZmllbGRWYWx1ZV0udG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGdldHpEYXRhRm9yek1vZGVsJDogT2JzZXJ2YWJsZTxhbnk+ID0gWkNvbXBvbmVudEhlbHBlci5nZXRJbmZpbml0ZURhdGEobnVsbCwgJycsIHRoaXMsIHJlY29yZElkKTtcclxuICAgICAgaWYgKGdldHpEYXRhRm9yek1vZGVsJCkge1xyXG4gICAgICAgIGdldHpEYXRhRm9yek1vZGVsJC5zdWJzY3JpYmUoKHpkYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhLk5hbWUsICcgLSBpbml0aWFsIHpEYXRhIGxvYWQ6ICcsIHpkYXRhKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgICAgICB0aGlzLmFmdGVyTG9hZHpEYXRhT3B0aW9ucygpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUZpbHRlcihudWxsLCB0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFN0eWxlICMxLCAjMiwgIzNcclxuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBkYXRhLklzUmVxdWlyZWQpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YS5PcHRpb25SZXNvdXJjZVVSTCkge1xyXG4gICAgICAgIHRoaXMubGF6eUxvYWREYXRhT3B0aW9ucygpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uRGF0YSA9IHJlcy5kYXRhU2V0ID8gcmVzLmRhdGFTZXQgOiByZXM7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdGlvbkRhdGEgJiYgb3B0aW9uRGF0YS5sZW5ndGggPT09IDEgJiYgIXRoaXMuZGF0YS5EaXNhYmxlQXV0b0ZpcnN0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b1NlbGVjdEZpcnN0T3B0aW9uKGlzUmVxdWlyZWQsIG9wdGlvbkRhdGFbMF0sIGZpZWxkVmFsdWUsIHpNb2RlbC5JZCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgdGhpcy5hZnRlckxvYWR6RGF0YU9wdGlvbnMoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSAmJiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucykge1xyXG4gICAgICAgICAgLy9za2lwIGV2YWwgaWYgc2VsZWN0b3B0aW9ucyBpcyBleGlzdFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkRhdGEgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5pdGVtRGF0YUZpZWxkKTtcclxuICAgICAgICAgIC8vIGFwcGVuZCBkYXRhIHZpYSB0aW1lb3V0IGFmdGVyIGRhdGEgaXMgbG9hZGVkLlxyXG4gICAgICAgICAgaWYgKG9wdGlvbkRhdGEgJiYgb3B0aW9uRGF0YS5sZW5ndGggPT09IDEgJiYgIXRoaXMuZGF0YS5EaXNhYmxlQXV0b0ZpcnN0U2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRoaXNDb21wb25lbnQgPSB0aGlzO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICB0aGlzQ29tcG9uZW50LmF1dG9TZWxlY3RGaXJzdE9wdGlvbihpc1JlcXVpcmVkLCBvcHRpb25EYXRhWzBdLCBmaWVsZFZhbHVlLCB0aGlzQ29tcG9uZW50Lmdyb3VwLnpNb2RlbC5JZCk7XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFmdGVyTG9hZHpEYXRhT3B0aW9ucygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuU2VhcmNoT3BlcmF0b3IgPT09IERyb3Bkb3duU2VhcmNoT3BlcmF0b3IuU3RhcnRzV2l0aCkge1xyXG4gICAgICB0aGlzLmZpbHRlclNldHRpbmdzLm9wZXJhdG9yID0gJ3N0YXJ0c1dpdGgnO1xyXG4gICAgfVxyXG5cclxuICAgIHN1cGVyLmZvY3VzT25EZWZhdWx0KHRoaXMuZm9jdXMuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZGVjcmVtZW50Q29tcG9uZW50Q291bnRlckZvckZpZWxkKHRoaXMuZGF0YSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLmV2ZW50U3Vic2NyaXB0aW9ucykge1xyXG4gICAgICBpZiAoZSAmJiAhZS5jbG9zZWQpIHtcclxuICAgICAgICBlLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEF1dG8gc2VsZWN0IGZpcnN0IG9wdGlvbiAoaWYgcmVxdWlyZWQgJiBvbmx5IDEgb3B0aW9uKVxyXG4gIHByaXZhdGUgYXV0b1NlbGVjdEZpcnN0T3B0aW9uKHJlcXVpcmVkOiBib29sZWFuLCBkYXRhOiBhbnksIHpNb2RlbFByb3BlcnR5TmFtZTogc3RyaW5nLCBpZDogYW55KSB7XHJcbiAgICBpZiAoWkNvbXBvbmVudEhlbHBlci5pc051bGxVbmRlZmluZWRFbXB0eShpZCkgJiYgcmVxdWlyZWQpIHtcclxuICAgICAgdmFyIG9wdGlvbklkID0gZGF0YS5JZDtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5NdWx0aXBsZSkge1xyXG4gICAgICAgIG9wdGlvbklkID0gW29wdGlvbklkXTtcclxuICAgICAgfVxyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUoek1vZGVsUHJvcGVydHlOYW1lLCBvcHRpb25JZCwgdGhpcy5ncm91cCk7XHJcblxyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2hhbmdlLFxyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIGRhdGE6IHsgWyd2YWx1ZSddOiBvcHRpb25JZCwgZmllbGQ6IHRoaXMuZGF0YSB9XHJcbiAgICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU3R5bGUgIzNcclxuICBsYXp5TG9hZERhdGFPcHRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXNvdXJjZVVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcclxuICAgICAgdGhpcy5kYXRhLk9wdGlvblJlc291cmNlVVJMXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlclBhcmFtID0gbmV3IFpTZWxlY3RQb3N0QXBpUGFyYW1zKCk7XHJcbiAgICBmaWx0ZXJQYXJhbS5zb3J0cyA9IHRoaXMuZGF0YS5PcHRpb25Tb3J0O1xyXG4gICAgZmlsdGVyUGFyYW0uY29sdW1ucyA9IHRoaXMuZGF0YS5PcHRpb25Db2x1bW5zO1xyXG4gICAgZmlsdGVyUGFyYW0uZmlsdGVycyA9IHRoaXMuZGF0YS5PcHRpb25GaWx0ZXI7XHJcblxyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0RGF0YU9wdGlvbnMoXHJcbiAgICAgIHRoaXMuZGF0YS5PcHRpb25OYW1lLFxyXG4gICAgICBmaWx0ZXJQYXJhbSxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgcmVzb3VyY2VVcmwsXHJcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLFxyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UsXHJcbiAgICAgIHRoaXMuZGF0YVsnRGlzYWJsZUNhY2hlJ11cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBTdHlsZSAjNCwgdXNlZCBpbiBpb25pYy1zZWxlY3RhYmxlXHJcbiAgZ2V0SW5maW5pdGVEYXRhKGV2ZW50OiB7XHJcbiAgICBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDtcclxuICAgIHRleHQ6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmdldEluZmluaXRlRGF0YShldmVudC5jb21wb25lbnQsIGV2ZW50LnRleHQsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXNEYXRhKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5IYXNJbmZpbml0ZVNjcm9sbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pbmZpbml0ZXpEYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSB0aGlzLmRhdGEuT3B0aW9uTmFtZSB8fCB0aGlzLml0ZW1EYXRhRmllbGQgfHwgJ2dyb3VwLnpEYXRhLicgKyB0aGlzLmRhdGEuTmFtZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zKSAmJiAhdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0pIHtcclxuICAgICAgLy8gcmV0dXJuIHNlbGVjdGlvbk9wdGlvbnM7XHJcbiAgICAgIC8vIHJldHVybiB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSB0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgdGhpcy5pdGVtRGF0YUZpZWxkID0gb3B0aW9uTmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCd6RGF0YS4nKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwW29wdGlvbk5hbWUuc2xpY2UoNildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBbb3B0aW9uTmFtZV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLndhcm4odGhpcy5kYXRhLk5hbWUsICcgLSBJbnZhbGlkIHNldHRpbmcgZm9yIE9wdGlvbk5hbWU6ICcsIG9wdGlvbk5hbWUpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goZXZlbnQ6IHsgY29tcG9uZW50OiBJb25pY1NlbGVjdGFibGVDb21wb25lbnQ7IHRleHQ6IHN0cmluZyB9KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhcIkF0IHpzZWxlY3RtdWx0aXBsZS5jb21wb25lbnQgKG9uU2VhcmNoKTogXCIsIGV2ZW50KTtcclxuICAgIC8vIGV2ZW50LmNvbXBvbmVudCBpcyBmb3IgbW9iaWxlIG9ubHlcclxuICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC50ZXh0O1xyXG4gICAgY29uc3QgY29tcG9uZW50ID0gZXZlbnQuY29tcG9uZW50O1xyXG5cclxuICAgIC8vIFN0YXJ0IHNlYXJjaCBhbmQgZW5hYmxlIGluZmluaXRlIHNjcm9sbGluZyBvbiB0aGUgY29tcG9uZW50IGlmIGF2YWlsYWJsZVxyXG4gICAgY29tcG9uZW50Py5zdGFydFNlYXJjaCgpO1xyXG4gICAgY29tcG9uZW50Py5lbmFibGVJbmZpbml0ZVNjcm9sbCgpO1xyXG5cclxuICAgIC8vIFJlc2V0IHBhZ2luZyBhbmQgY2xlYXIgZGF0YSBpZiBuZXcgc2VhcmNoIHRleHQgaXMgZGV0ZWN0ZWQgb3IgaW5maW5pdGUgc2Nyb2xsaW5nIGlzIGVuYWJsZWRcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwpIHtcclxuICAgICAgaWYgKHNlYXJjaFRlcm0gIT09IG51bGwgJiYgc2VhcmNoVGVybSAhPT0gdGhpcy5pbmZpbml0ZVNlYXJjaFRleHQpIHtcclxuICAgICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgICB0aGlzLm1vZGVsekRhdGEgPSBbXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmluZmluaXRlRGF0YUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLmNhbmNlbEdldEluZmluaXRlRGF0YTtcclxuICAgICAgdGhpcy5nZXRJbmZpbml0ZURhdGEoZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFJlc2V0IHNjcm9sbCBwYWdlLCBlbXB0eSBpdGVtc1xyXG4gICAgICB0aGlzLmluZmluaXRlU2Nyb2xsUGFnZU5vID0gMDtcclxuICAgICAgaWYgKGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbXBvbmVudC5pdGVtcyA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBQcmVwYXJlIGRlZmF1bHQgcGFyYW1ldGVycyBmb3IgaXRlbSBmaWx0ZXJpbmdcclxuICAgICAgY29uc3QgcGFyYW1zOiB6U2VsZWN0TXVsdGlwbGVQYXJhbXMgPSB7XHJcbiAgICAgICAgcmVmZXJJZDogbnVsbCxcclxuICAgICAgICBwYWdlTm86IDAsXHJcbiAgICAgICAgcGFnZVNpemU6IDIwLFxyXG4gICAgICAgIHNvcnRDb2x1bW5OYW1lOiBcIlwiLFxyXG4gICAgICAgIHNvcnRPcmRlcjogXCJcIixcclxuICAgICAgICBzb3J0Q29sdW1uTmFtZXM6IFtdLFxyXG4gICAgICAgIHNvcnRPcmRlcnM6IFtdLFxyXG4gICAgICAgIGZpbHRlclBhcmFtczogW10sXHJcbiAgICAgICAgcGFyYW1ldGVyczogXCJcIlxyXG4gICAgICB9O1xyXG5cclxuICAgICAgY29uc3Qgc2VhcmNoQnkgPSB0aGlzLmRhdGEuU2VhcmNoRmllbGRzID8/IHRoaXMuaXRlbVRleHRGaWVsZDtcclxuICAgICAgY29uc3QgaXRlbXNEYXRhID0gdGhpcy5nZXRJdGVtc0RhdGEoKTtcclxuICAgICAgY29uc3QgZmlsdGVyZWRJdGVtcyA9IFpDb21wb25lbnRIZWxwZXIuZmlsdGVyU2VhcmNoSXRlbXMoXHJcbiAgICAgICAgaXRlbXNEYXRhLFxyXG4gICAgICAgIHNlYXJjaFRlcm0sXHJcbiAgICAgICAgc2VhcmNoQnksXHJcbiAgICAgICAgcGFyYW1zLnBhZ2VObyxcclxuICAgICAgICBwYXJhbXMucGFnZVNpemUsXHJcbiAgICAgICAgdGhpcy5kYXRhLlNlYXJjaE9wZXJhdG9yXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNoZWNrQWxsb3dDdXN0b21WYWx1ZShzZWFyY2hCeSwgc2VhcmNoVGVybSwgZmlsdGVyZWRJdGVtcywgaXRlbXNEYXRhKTtcclxuXHJcbiAgICAgIC8vIFVwZGF0ZSBjb21wb25lbnQgaXRlbXMgYW5kIGhhbmRsZSBzZWFyY2ggY29tcGxldGlvblxyXG4gICAgICBpZiAoY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29tcG9uZW50Lml0ZW1zID0gWy4uLmNvbXBvbmVudC5pdGVtcywgLi4uZmlsdGVyZWRJdGVtc107XHJcbiAgICAgICAgY29tcG9uZW50LmVuZEluZmluaXRlU2Nyb2xsKCk7XHJcbiAgICAgICAgY29tcG9uZW50LmVuZFNlYXJjaCgpO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tBbGxvd0N1c3RvbVZhbHVlKHNlYXJjaEJ5OiBzdHJpbmcsIHNlYXJjaFRlcm06IHN0cmluZywgZmlsdGVyZWRJdGVtczogYW55W10sIGl0ZW1zRGF0YT86IGFueSkge1xyXG4gICAgLy8gQWxsb3cgY3VzdG9tIHZhbHVlIHVubGVzcyBhIGRpcmVjdCBtYXRjaCBpcyBmb3VuZFxyXG4gICAgdGhpcy5hbGxvd0N1c3RvbVZhbHVlID0gdGhpcy5kYXRhLkFsbG93Q3VzdG9tVmFsdWU7XHJcbiAgICBsZXQgc2VhcmNoRmllbGRzOiBzdHJpbmdbXTtcclxuICAgIGlmIChzZWFyY2hCeSkge1xyXG4gICAgICBzZWFyY2hGaWVsZHMgPSBzZWFyY2hCeS5yZXBsYWNlKC9cXHMvZywgXCJcIikuc3BsaXQoXCIsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VhcmNoRmllbGRzID0gT2JqZWN0LmtleXMoaXRlbXNEYXRhWzBdKTtcclxuICAgIH1cclxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBmaWx0ZXJpdGVtcyB0byBjaGVjayBpZiBhbnkgaXRlbSBtYXRjaGVzIHNlYXJjaFRleHQgaW4gYW55IG9mIHRoZSBzZWFyY2hGaWVsZHMgXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyZWRJdGVtcykge1xyXG4gICAgICAvLyBDaGVjayBlYWNoIHNlYXJjaEZpZWxkIGZvciBzZWFyY2hUZXh0XHJcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc2VhcmNoRmllbGRzKSB7XHJcbiAgICAgICAgaWYgKGl0ZW1bZmllbGRdICYmIGl0ZW1bZmllbGRdID09PSBzZWFyY2hUZXJtKSB7XHJcbiAgICAgICAgICB0aGlzLmFsbG93Q3VzdG9tVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrOyAvLyBCcmVhayB0aGUgaW5uZXIgbG9vcCBzaW5jZSB3ZSd2ZSBmb3VuZCBhIG1hdGNoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXIoc2VhcmNoVGVybTogYW55LCBqdXN0T25lVGltZT86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuZGF0YS5TZWFyY2hMZW5ndGgpIHtcclxuICAgICAgY29uc3QgbWVldHNMZW5ndGhDb25kaXRpb24gPSB0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoICYmIHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggPD0gc2VhcmNoVGVybS5sZW5ndGg7XHJcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QudG9nZ2xlKG1lZXRzTGVuZ3RoQ29uZGl0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWFyY2hCeSA9IHRoaXMuZGF0YS5TZWFyY2hGaWVsZHMgPz8gdGhpcy5pdGVtVGV4dEZpZWxkO1xyXG4gICAgY29uc3QgaXRlbXNEYXRhID0gdGhpcy5nZXRJdGVtc0RhdGEoKTtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLkFsbG93Q3VzdG9tVmFsdWUpIHtcclxuICAgICAgdGhpcy5jaGVja0FsbG93Q3VzdG9tVmFsdWUoc2VhcmNoQnksIHNlYXJjaFRlcm0sIGl0ZW1zRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGVib3VuY2VTdWIpIHtcclxuICAgICAgdGhpcy5kZWJvdW5jZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVib3VuY2VTdWIgPSBvZihbXSkucGlwZShcclxuICAgICAgdGFwKCgpID0+ICh0aGlzLmlzTG9hZGluZyA9IHRydWUpKSxcclxuICAgICAgZGVsYXkoNTAwKSxcclxuICAgICAgdGFwKCgpID0+IHRoaXMucGVyZm9ybVNlYXJjaChzZWFyY2hUZXJtKSksXHJcbiAgICAgIHRhcCgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCh2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBzZWFyY2hBY3Rpb24gPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWFyY2goeyBjb21wb25lbnQ6IG51bGwsIHRleHQ6IHZhbHVlIH0pO1xyXG4gICAgICBpZiAodGhpcy5ncm91cCkge1xyXG4gICAgICAgIHRoaXMuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoIHx8IHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggPD0gdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHNlYXJjaEFjdGlvbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlTGF6eUxvYWRGaWx0ZXIodmFsdWU6IGFueSwganVzdE9uZVRpbWU/OiBib29sZWFuKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLmRlYm91bmNlU3ViKSB7XHJcbiAgICAgIHRoaXMuZGVib3VuY2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRlYm91bmNlU3ViID0gb2YoW10pLnBpcGUoZGVsYXkoNTAwKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHsgY29tcG9uZW50OiBudWxsLCB0ZXh0OiB2YWx1ZSB9KTtcclxuICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcclxuICAgICAgICBpZiAodGhpcy5ncm91cC5hZnRlckxvYWR6RGF0YU9wdGlvbnMpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXAuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT3BlbihldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLkhhc0luZmluaXRlU2Nyb2xsKSB7XHJcbiAgICAgIGlmICghdGhpcy5pbmZpbml0ZURhdGFMb2FkZWQpIHtcclxuICAgICAgICB0aGlzLmluZmluaXRlRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXIobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBFbnN1cmUgbXVsdGlzZWxlY3QgdmFsdWUgbWVldHMgdGhlIHNlYXJjaCBsZW5ndGggcmVxdWlyZW1lbnRcclxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuZGF0YS5TZWFyY2hMZW5ndGggJiYgdGhpcy5tdWx0aXNlbGVjdC52YWx1ZS5sZW5ndGggPCB0aGlzLmRhdGEuU2VhcmNoTGVuZ3RoKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjsgLy8gRWFybHkgcmV0dXJuIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNoZWNrc1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRJbmZpbml0ZURhdGEoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmNhbmNlbEdldEluZmluaXRlRGF0YTtcclxuICAgIHRoaXMuaW5maW5pdGVEYXRhTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmluZmluaXRlekRhdGEgPSBbXTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNsb3NlKGV2ZW50PzogRXZlbnQpIHtcclxuICB9XHJcblxyXG4gIGhhbmRsZUJsdXIoKSB7XHJcbiAgICAvLyB0aGlzLmhhbmRsZUNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SXRlbVRlbXBsYXRlKFxyXG4gICAgaXRlbTogYW55LFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGl0ZW1WYWx1ZUZpZWxkOiBzdHJpbmcsXHJcbiAgICBpdGVtVGV4dEZpZWxkOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIFRvRE86IGl0ZW1WYWx1ZUZpZWxkIGFuZCBpdGVtVGV4dEZpZWxkXHJcbiAgICBpZiAodGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLkl0ZW1UZW1wbGF0ZSk7XHJcblxyXG4gICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jKHtcclxuICAgICAgICBpdGVtLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgaXRlbVZhbHVlRmllbGQsXHJcbiAgICAgICAgaXRlbVRleHRGaWVsZFxyXG4gICAgICB9IGFzIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zKTtcclxuICAgIH0gZWxzZSBpZiAoaXRlbVRleHRGaWVsZCkge1xyXG4gICAgICByZXR1cm4gaXRlbVtpdGVtVGV4dEZpZWxkXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJldHVybiBpdGVtW2l0ZW1UZXh0RmllbGRdO1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtKS5qb2luKFwiLCBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFkZEl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZiA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25BZGRJdGVtKTtcclxuICAgIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCBjYWxsRnVuYyA9IGYuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgIHJldHVybiBjYWxsRnVuYygpO1xyXG4gICAgfVxyXG4gICAgY29uc29sZS53YXJuKCdJbnZhbGlkIGRlY2xhcmF0aW9uIG9mIE9uQWRkSXRlbTogJywgZik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAvLyBDb21wb25lbnQgYmFzaWMgZnVuY3Rpb25cclxuICBjbGVhckRhdGEoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBcIlwiLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIGNsZWFySXRlbXMoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xlYXIoKTtcclxuICAgICAgdGhpcy5zZWxlY3RDb21wb25lbnQuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbmZpcm1JdGVtcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdENvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnNlbGVjdENvbXBvbmVudC5jb25maXJtKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b2dnbGVJdGVtcygpIHtcclxuICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LnRvZ2dsZUl0ZW1zKHRoaXMudG9nZ2xlU2VsZWN0YWJsZSk7XHJcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdGFibGUgPSAhdGhpcy50b2dnbGVTZWxlY3RhYmxlO1xyXG5cclxuICAgIC8vIENvbmZpcm0gaXRlbXMgYW5kIGNsb3NlIFNlbGVjdCBwYWdlXHJcbiAgICAvLyB3aXRob3V0IGhhdmluZyB0aGUgdXNlciB0byBjbGljayBDb25maXJtIGJ1dHRvbi5cclxuICAgIC8vIHRoaXMuY29uZmlybSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gRGlzYWJsZSBPcGVuIE9uIEZvY3VzXHJcbiAgZGlzYWJsZU9wZW5PbkZvY3VzKGNvbWJvYm94Q29tcG9uZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuRGlzYWJsZU9wZW5PbkZvY3VzKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBjb21ib2JveENvbXBvbmVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE9uQ2hhbmdlXHJcbiAgcHVibGljIG9uQ2hhbmdlX2Rlc2t0b3AoZXZlbnQ6IGFueSkge1xyXG4gICAgc3VwZXIub25DaGFuZ2UobnVsbCwgZXZlbnQpXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlX21vYmlsZShldmVudDogeyBjb21wb25lbnQ6IElvbmljU2VsZWN0YWJsZUNvbXBvbmVudDsgdmFsdWU6IGFueSB9KSB7XHJcbiAgICBzdXBlci5vbkNoYW5nZShldmVudClcclxuICAgIGNvbnN0IGZjID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICB0aGlzLmhhbmRsZUNsb3NlKG51bGwpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc3VwZXIuZ2V0SXNSZXF1aXJlZFZhbHVlKCkgJiYgKGV2ZW50LnZhbHVlID09PSBudWxsIHx8IGV2ZW50LnZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICkge1xyXG4gICAgICBmYy5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZjLnNldEVycm9ycyhudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZUluZmluaXRlU2Nyb2xsT25DaGFuZ2UoZXZlbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVJbmZpbml0ZVNjcm9sbE9uQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuSGFzSW5maW5pdGVTY3JvbGwgJiYgISF0aGlzLmRhdGEuSW5maW5pdGVTY3JvbGwkKSB7XHJcbiAgICAgIGNvbnN0IHRleHRGaWVsZCA9IHRoaXMuaXRlbVRleHRGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5pdGVtVmFsdWVGaWVsZC50b1N0cmluZygpO1xyXG4gICAgICBsZXQgemRhdGFNb2RlbCA9IFtdO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB6ZGF0YU1vZGVsID0gdGhpcy5pbmZpbml0ZXpEYXRhLmZpbHRlcih4ID0+IHhbdmFsdWVGaWVsZF0gPT09IHZhbHVlKTtcclxuICAgICAgICB0aGlzLm1vZGVsekRhdGEgPSB6ZGF0YU1vZGVsLnNsaWNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC56RGF0YS4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXAuekRhdGFbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDEyKV0gPSB6ZGF0YU1vZGVsO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbURhdGFGaWVsZC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIHRoaXMuZ3JvdXBbdGhpcy5pdGVtRGF0YUZpZWxkLnNsaWNlKDYpXSA9IHpkYXRhTW9kZWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE11bHRpIFNlbGVjdGlvbiBUcmVlXHJcbiAgcHVibGljIGhhc0NoaWxkcmVuID0gKGRhdGFpdGVtOiBhbnkpOiBib29sZWFuID0+ICEhZGF0YWl0ZW1bJ2l0ZW1zJ107XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNdWx0aVNlbGVjdFRyZWVGaWx0ZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXJzZWRJdGVtc0RhdGEgPSB0aGlzLm9uTXVsdGlTZWxlY3RUcmVlU2VhcmNoKHRoaXMuZ2V0SXRlbXNEYXRhKCksIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk11bHRpU2VsZWN0VHJlZVNlYXJjaChpdGVtczogYW55W10sIHNlYXJjaGVkVGV4dDogc3RyaW5nKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5zKGl0ZW1bdGhpcy5pdGVtVGV4dEZpZWxkXSwgc2VhcmNoZWRUZXh0KSkge1xyXG4gICAgICAgIGFjYy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW1bJ2l0ZW1zJ10gJiYgaXRlbVsnaXRlbXMnXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgbmV3SXRlbXMgPSB0aGlzLm9uTXVsdGlTZWxlY3RUcmVlU2VhcmNoKGl0ZW1bJ2l0ZW1zJ10sIHNlYXJjaGVkVGV4dCk7XHJcblxyXG4gICAgICAgIGlmIChuZXdJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCBfaXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pO1xyXG4gICAgICAgICAgX2l0ZW1bJ2l0ZW1zJ10gPSBuZXdJdGVtcztcclxuXHJcbiAgICAgICAgICBhY2MucHVzaChfaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udGFpbnModGV4dDogc3RyaW5nLCBzZWFyY2hlZFRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygoc2VhcmNoZWRUZXh0IHx8IFwiXCIpLnRvTG93ZXJDYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNlbGVjdE9wdGlvbih2YWx1ZTogYW55KSB7XHJcbiAgICBjb25zdCBvcHRpb25OYW1lID0gdGhpcy5kYXRhLk9wdGlvbk5hbWUgfHwgdGhpcy5pdGVtRGF0YUZpZWxkO1xyXG4gICAgdGhpcy5kYXRhLlNlbGVjdE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKFtdLCB2YWx1ZSk7XHJcbiAgICB0aGlzLmdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSA9IHRoaXMuZGF0YS5TZWxlY3RPcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZvY3VzKCkge1xyXG4gICAgaWYgKHRoaXMuY29tYm9ib3hDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5jb21ib2JveENvbXBvbmVudC5mb2N1cygpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XHJcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QuZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdHRyZWUpIHtcclxuICAgICAgdGhpcy5tdWx0aXNlbGVjdHRyZWUuZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bmxpc3RDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bmxpc3RDb21wb25lbnQuZm9jdXMoKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbXBvbmVudFRvVXNlKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5JbnRlcm5hbENvbXBvbmVudFR5cGUgJiYgT2JqZWN0LnZhbHVlcyhJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24pLmluY2x1ZGVzKHRoaXMuZGF0YS5JbnRlcm5hbENvbXBvbmVudFR5cGUgYXMgYW55KSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSB0aGlzLmRhdGEuSW50ZXJuYWxDb21wb25lbnRUeXBlIGFzIGFueTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCF0aGlzLmRhdGEuTXVsdGlwbGUpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRUeXBlID0gSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLmNvbWJvYm94O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRhLk11bHRpcGxlICYmICF0aGlzLmRhdGEuRW5hYmxlQ2hlY2tib3gpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRUeXBlID0gSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLm11bHRpc2VsZWN0O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5kYXRhLk11bHRpcGxlICYmIHRoaXMuZGF0YS5FbmFibGVDaGVja2JveCkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFR5cGUgPSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24ubXVsdGlzZWxlY3R0cmVlO1xyXG4gICAgICB0aGlzLnNldHVwRGF0YUl0ZW1zKCk7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEV4cGFuZGFibGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREYXRhSXRlbXMoKTogQXJyYXk8YW55PiB7XHJcbiAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXTtcclxuICAgIHJldHVybiB0aGlzLmFsbERhdGFJdGVtcy5maWx0ZXIoeCA9PiBtb2RlbFZhbHVlLmluY2x1ZGVzKHhbdGhpcy5pdGVtVmFsdWVGaWVsZCB8fCAnSWQnXSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFJdGVtcygpIHtcclxuICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgaWYgKG1vZGVsVmFsdWUgJiYgbW9kZWxWYWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVEYXRhV2l0aG91dEhpZXJhcmNoeSh0aGlzLmdldEl0ZW1zRGF0YSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9wdWxhdGVEYXRhV2l0aG91dEhpZXJhcmNoeShkYXRhSXRlbXMpIHtcclxuICAgIGZvciAoY29uc3QgZGF0YUl0ZW0gb2YgZGF0YUl0ZW1zKSB7XHJcbiAgICAgIHRoaXMuYWxsRGF0YUl0ZW1zLnB1c2goZGF0YUl0ZW0pO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhSXRlbS5WYWx1ZSkpIHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlRGF0YVdpdGhvdXRIaWVyYXJjaHkoZGF0YUl0ZW0uVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGVmYXVsdEV4cGFuZGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLlRyZWVMaXN0SW5pdGlhbGx5RXhwYW5kZWREYXRhSWRzKSB7XHJcbiAgICAgIGNvbnN0IGlkTGlzdCA9IHR5cGVvZiB0aGlzLmRhdGEuVHJlZUxpc3RJbml0aWFsbHlFeHBhbmRlZERhdGFJZHMgPT0gJ3N0cmluZycgPyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLlRyZWVMaXN0SW5pdGlhbGx5RXhwYW5kZWREYXRhSWRzIGFzIHN0cmluZywgdGhpcy5ncm91cCkgOiB0aGlzLmRhdGEuVHJlZUxpc3RJbml0aWFsbHlFeHBhbmRlZERhdGFJZHM7XHJcbiAgICAgIGlmIChpZExpc3QgJiYgQXJyYXkuaXNBcnJheShpZExpc3QpKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZEtleXMgPSBpZExpc3Q7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWZ0ZXJMb2FkekRhdGFPcHRpb25zKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JvdXAuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZ3JvdXAuYWZ0ZXJMb2FkekRhdGFPcHRpb25zIHRyaWdnZXJlZC5cIiArIHRoaXMuZGF0YSk7XHJcbiAgICAgIHRoaXMuZ3JvdXAuYWZ0ZXJMb2FkekRhdGFPcHRpb25zKHRoaXMuZ3JvdXAsIHRoaXMuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gQ2xvc2UgZHJvcC1kb3duIHNlbGVjdGlvbiB1cG9uIHBhZ2Ugc2Nyb2xsXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVVSVNpZ25hbCgpIHtcclxuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuY29tcG9uZW50U2VydmljZS51aVNpZ25hbFNlcnZpY2Uuc3Vic2NyaWJlVG9FdmVudChTaWduYWxUeXBlLlBhZ2VTY3JvbGxTdGFydCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlRG93bkRyb3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbG9zZURvd25Ecm9wKCkge1xyXG4gICAgY29uc3QgY29tcCA9IHRoaXMuZ2V0Q29tcG9uZW50SW5Vc2VCeVR5cGUoKTtcclxuICAgIGlmIChjb21wICYmIGNvbXAuaXNPcGVuKSB7XHJcbiAgICAgIGNvbXAudG9nZ2xlKGZhbHNlKTtcclxuICAgICAgY29tcC5ibHVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbXBvbmVudEluVXNlQnlUeXBlKCk6IENvbWJvQm94Q29tcG9uZW50IHwgRHJvcERvd25MaXN0Q29tcG9uZW50IHwgTXVsdGlTZWxlY3RDb21wb25lbnQgfCBNdWx0aVNlbGVjdFRyZWVDb21wb25lbnQge1xyXG4gICAgc3dpdGNoICh0aGlzLmNvbXBvbmVudFR5cGUpIHtcclxuICAgICAgY2FzZSBJbnRlcm5hbENvbXBvbmVudFR5cGVfRHJvcERvd24uY29tYm9ib3g6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tYm9ib3hDb21wb25lbnQ7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxDb21wb25lbnRUeXBlX0Ryb3BEb3duLm11bHRpc2VsZWN0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLm11bHRpc2VsZWN0O1xyXG4gICAgICBjYXNlIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5tdWx0aXNlbGVjdHRyZWU6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlzZWxlY3R0cmVlO1xyXG4gICAgICBjYXNlIEludGVybmFsQ29tcG9uZW50VHlwZV9Ecm9wRG93bi5kcm9wZG93bmxpc3Q6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd25saXN0Q29tcG9uZW50O1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwienNlbGVjdG11bHRpcGxlLWNvbnRhaW5lciBlMXRhZy1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlXCI+XHJcbiAgPGlvbmljLXNlbGVjdGFibGUgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCIgI3NlbGVjdENvbXBvbmVudCBpdGVtLWNvbnRlbnQgc2VhcmNoRmFpbFRleHQ9XCJOb3RoaW5nIGZvdW5kIDooXCJcclxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJDb2xvcj1cInByaW1hcnlcIiBjbGVhckJ1dHRvblRleHQ9XCJDbGVhclwiIFsobmdNb2RlbCldPVwiZ3JvdXAuek1vZGVsW2RhdGEuVmFsdWVdXCIgW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJnZXRJdGVtc0RhdGEoKVwiIFtpdGVtVmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiIFtpdGVtVGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjYW5BZGRJdGVtXT1cIiEhZGF0YS5PbkFkZEl0ZW1cIiBbY2FuQ2xlYXJdPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2FuU2VhcmNoXT1cIiFkYXRhWydkaXNhYmxlLXNlYXJjaCddXCIgW3Nob3VsZEZvY3VzU2VhcmNoYmFyXT1cIiFkYXRhWydkaXNhYmxlLXNlYXJjaCddXCJcclxuICAgICAgICAgICAgICAgICAgICBbaGFzSW5maW5pdGVTY3JvbGxdPVwiISFkYXRhLkhhc0luZmluaXRlU2Nyb2xsXCIgW2lzTXVsdGlwbGVdPVwiZGF0YS5NdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lzRW5hYmxlZF09XCIhKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2hvdWxkU3RvcmVJdGVtVmFsdWVdPVwidHJ1ZVwiIChvblNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgKG9uSW5maW5pdGVTY3JvbGwpPVwiZ2V0SW5maW5pdGVEYXRhKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChvbkFkZEl0ZW0pPVwib25BZGRJdGVtKCRldmVudClcIiAob25DaGFuZ2UpPVwib25DaGFuZ2VfbW9iaWxlKCRldmVudClcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIiBjbGFzcz1cImUxdGFnLXN0eWxlMVwiPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBpb25pY1NlbGVjdGFibGVJdGVtSWNvblRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pc0l0ZW1TZWxlY3RlZD1cImlzSXRlbVNlbGVjdGVkXCI+XHJcbiAgICAgIDxmYS1pY29uIHNsb3Q9XCJzdGFydFwiIGNsYXNzPVwiaXNJdGVtU2VsZWN0ZWQgZTF0YWctc3R5bGUyXCIgc2l6ZT1cInNtXCIgW2ljb25dPVwiWydmYXInLCBpc0l0ZW1TZWxlY3RlZCA/ICdjaGVjay1jaXJjbGUnOiAnY2lyY2xlJ11cIlxyXG4gICAgICAgICAgICAgICBbc3R5bGVzXT1cInsnY29sb3InOiBpc0l0ZW1TZWxlY3RlZCA/ICdkb2RnZXJCbHVlJyA6ICdsaWdodEdyYXknfVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMlwiPjwvZmEtaWNvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZUNsb3NlQnV0dG9uVGVtcGxhdGU+XHJcbiAgICAgIDwhLS0gPGlvbi1pY29uIG5hbWU9XCJjbG9zZS1jaXJjbGVcIj48L2lvbi1pY29uPiAtLT5cclxuICAgICAgPGZhLWljb24gW2ljb25dPVwiJ3RpbWVzLWNpcmNsZSdcIiBzaXplPVwibWRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIiBjbGFzcz1cImUxdGFnLXN0eWxlM1wiPjwvZmEtaWNvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIGlvbmljU2VsZWN0YWJsZVRpdGxlVGVtcGxhdGU+XHJcbiAgICAgIDxzcGFuIGNsYXNzPWUxdGFnLXN0eWxlNCBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTRcIj57e2RhdGEuTGFiZWx9fTwvc3Bhbj5cclxuICAgICAgPGlvbi10ZXh0ICpuZ0lmPVwiZ2V0SXNSZXF1aXJlZFZhbHVlKClcIiBjb2xvcj1cImRhbmdlclwiPio8L2lvbi10ZXh0PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgaW9uaWNTZWxlY3RhYmxlSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPnt7IGdldEl0ZW1UZW1wbGF0ZShpdGVtLCBkYXRhLCBncm91cCwgaXRlbVZhbHVlRmllbGQsIGl0ZW1UZXh0RmllbGQpIH19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2lvbmljLXNlbGVjdGFibGU+XHJcbiAgPGtlbmRvLWNvbWJvYm94ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgY29tcG9uZW50VHlwZSA9PSAnY29tYm9ib3gnXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAjY29tYm9ib3hDb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZ2V0SXRlbXNEYXRhKCkgfCB6c2VsZWN0VHJhbnNsYXRpb25QYXJzZXIgOiBpdGVtVGV4dEZpZWxkIDogZGF0YSA6IGdyb3VwIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxsb3dDdXN0b21dPVwiYWxsb3dDdXN0b21WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtrZW5kb0Ryb3BEb3duRmlsdGVyXT1cImZpbHRlclNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgW3N1Z2dlc3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cImRhdGEuRmlsdGVyYWJsZSA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtvcGVuT25Gb2N1c109XCJkaXNhYmxlT3Blbk9uRm9jdXMoY29tYm9ib3hDb21wb25lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlX2Rlc2t0b3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbdmlydHVhbF09XCJkYXRhLklzRW5hYmxlVmlydHVhbGl6YXRpb24gPT0gdHJ1ZSA/IHZpcnR1YWwgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgKG9wZW4pPVwiaGFuZGxlT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwiZGF0YS5DbGVhckJ1dHRvbiA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvQ29tYm9Cb3hJdGVtVGVtcGxhdGUgbGV0LWRhdGFJdGVtPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImUxdGFnLXN0eWxlNVwiIFtjbGFzcy56c2VsZWN0LXZpcnR1YWxpemF0aW9uXT1cImRhdGEuSXNFbmFibGVWaXJ0dWFsaXphdGlvblwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNVwiPnt7IGdldEl0ZW1UZW1wbGF0ZShkYXRhSXRlbSwgZGF0YSwgZ3JvdXAsIGl0ZW1WYWx1ZUZpZWxkLCBpdGVtVGV4dEZpZWxkKSB9fTwvc3Bhbj5cclxuICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInRlbXBsYXRlXCI+e3sgZGF0YUl0ZW0udmFsdWUgfX08L3NwYW4+IHt7IGRhdGFJdGVtLnRleHQgfX0gLS0+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tY29tYm9ib3g+XHJcbiAgPGtlbmRvLW11bHRpc2VsZWN0ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgY29tcG9uZW50VHlwZSA9PSAnbXVsdGlzZWxlY3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAjbXVsdGlzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZ2V0SXRlbXNEYXRhKCkgfCB6c2VsZWN0VHJhbnNsYXRpb25QYXJzZXIgOiBpdGVtVGV4dEZpZWxkIDogZGF0YSA6IGdyb3VwIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYWxsb3dDdXN0b21dPVwiYWxsb3dDdXN0b21WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cImRhdGEuRmlsdGVyYWJsZSA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjaGVja2JveGVzXT1cImRhdGEuRW5hYmxlQ2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cImF1dG9DbG9zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtrZW5kb0Ryb3BEb3duRmlsdGVyXT1cImZpbHRlclNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlX2Rlc2t0b3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAob3Blbik9XCJoYW5kbGVPcGVuKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkYXRhLkNsZWFyQnV0dG9uID09IGZhbHNlID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9NdWx0aVNlbGVjdEl0ZW1UZW1wbGF0ZSBsZXQtZGF0YUl0ZW0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZTF0YWctc3R5bGU1XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGU1XCI+e3sgZ2V0SXRlbVRlbXBsYXRlKGRhdGFJdGVtLCBkYXRhLCBncm91cCwgaXRlbVZhbHVlRmllbGQsIGl0ZW1UZXh0RmllbGQpIH19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2tlbmRvLW11bHRpc2VsZWN0PlxyXG4gIDxrZW5kby1tdWx0aXNlbGVjdHRyZWUgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKSAgJiYgY29tcG9uZW50VHlwZSA9PSAnbXVsdGlzZWxlY3R0cmVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAjbXVsdGlzZWxlY3R0cmVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBrZW5kb011bHRpU2VsZWN0VHJlZUV4cGFuZGFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtrZW5kb011bHRpU2VsZWN0VHJlZUhpZXJhcmNoeUJpbmRpbmddPVwiZ2V0SXRlbXNEYXRhKCkgfCB6c2VsZWN0VHJhbnNsYXRpb25QYXJzZXIgOiBpdGVtVGV4dEZpZWxkIDogZGF0YSA6IGdyb3VwIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2tlbmRvTXVsdGlTZWxlY3RUcmVlU3VtbWFyeVRhZ109XCJjb21wb25lbnRTZXR0aW5ncy5rZW5kb011bHRpU2VsZWN0VHJlZVN1bW1hcnlUYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5GaWVsZD1cIlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNDaGlsZHJlbl09XCJoYXNDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlUHJpbWl0aXZlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlX2Rlc2t0b3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YUl0ZW1zXT1cImdldERhdGFJdGVtcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJpc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCJhdXRvQ2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2V4cGFuZE9uRmlsdGVyXT1cImNvbXBvbmVudFNldHRpbmdzLmV4cGFuZE9uRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cImRhdGEuRmlsdGVyYWJsZSA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyQ2hhbmdlKT1cImhhbmRsZU11bHRpU2VsZWN0VHJlZUZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuKT1cImhhbmRsZU9wZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiaGFuZGxlQ2xvc2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFsoZXhwYW5kZWRLZXlzKV09XCJleHBhbmRlZEtleXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BvcHVwU2V0dGluZ3NdPVwiY29tcG9uZW50U2V0dGluZ3MucG9wdXBTZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwiZGF0YS5DbGVhckJ1dHRvbiA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvTXVsdGlTZWxlY3RUcmVlTm9EYXRhVGVtcGxhdGU+XHJcbiAgICAgIDxoND5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImstaWNvbiBrLWktd2FybmluZ1wiPjwvc3Bhbj48YnIgLz48YnIgLz5cclxuICAgICAgICBObyByZWNvcmQgZm91bmQuXHJcbiAgICAgIDwvaDQ+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tbXVsdGlzZWxlY3R0cmVlPlxyXG4gIDxrZW5kby1kcm9wZG93bmxpc3QgICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgICYmIGNvbXBvbmVudFR5cGUgPT0gJ2Ryb3Bkb3dubGlzdCdcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiXHJcbiAgICAgICAgICAgICAgICAgICNkcm9wZG93bmxpc3RDb21wb25lbnRcclxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZ2V0SXRlbXNEYXRhKCkgfCB6c2VsZWN0VHJhbnNsYXRpb25QYXJzZXIgOiBpdGVtVGV4dEZpZWxkIDogZGF0YSA6IGdyb3VwIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZVByaW1pdGl2ZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbYWxsb3dDdXN0b21dPVwiYWxsb3dDdXN0b21WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtrZW5kb0Ryb3BEb3duRmlsdGVyXT1cImZpbHRlclNldHRpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgW3N1Z2dlc3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtmaWx0ZXJhYmxlXT1cImRhdGEuRmlsdGVyYWJsZSA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtvcGVuT25Gb2N1c109XCJkaXNhYmxlT3Blbk9uRm9jdXMoY29tYm9ib3hDb21wb25lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlX2Rlc2t0b3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwiaGFuZGxlRmlsdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBbdmlydHVhbF09XCJkYXRhLklzRW5hYmxlVmlydHVhbGl6YXRpb24gPT0gdHJ1ZSA/IHZpcnR1YWwgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgKG9wZW4pPVwiaGFuZGxlT3BlbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsb3NlKT1cImhhbmRsZUNsb3NlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKClcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwiZGF0YS5DbGVhckJ1dHRvbiA9PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIGtlbmRvRHJvcERvd25MaXN0SXRlbVRlbXBsYXRlIGxldC1kYXRhSXRlbT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbY2xhc3MuenNlbGVjdC12aXJ0dWFsaXphdGlvbl09XCJkYXRhLklzRW5hYmxlVmlydHVhbGl6YXRpb25cIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIj57eyBnZXRJdGVtVGVtcGxhdGUoZGF0YUl0ZW0sIGRhdGEsIGdyb3VwLCBpdGVtVmFsdWVGaWVsZCwgaXRlbVRleHRGaWVsZCkgfX08L3NwYW4+XHJcbiAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJ0ZW1wbGF0ZVwiPnt7IGRhdGFJdGVtLnZhbHVlIH19PC9zcGFuPiB7eyBkYXRhSXRlbS50ZXh0IH19IC0tPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2tlbmRvLWRyb3Bkb3dubGlzdD5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -7550,6 +7550,11 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7550
7550
|
return; // Early return to avoid unnecessary checks
|
|
7551
7551
|
}
|
|
7552
7552
|
}
|
|
7553
|
+
resetInfiniteData() {
|
|
7554
|
+
ZComponentHelper.cancelGetInfiniteData;
|
|
7555
|
+
this.infiniteDataLoaded = false;
|
|
7556
|
+
this.infinitezData = [];
|
|
7557
|
+
}
|
|
7553
7558
|
handleClose(event) {
|
|
7554
7559
|
}
|
|
7555
7560
|
handleBlur() {
|