@acorex/components 1.3.84 → 1.3.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/acorex-components.metadata.json +1 -1
- package/bundles/acorex-components.umd.js +12 -10
- package/bundles/acorex-components.umd.js.map +1 -1
- package/bundles/acorex-components.umd.min.js +1 -1
- package/bundles/acorex-components.umd.min.js.map +1 -1
- package/esm2015/lib/selectbox/selectbox.component.js +10 -9
- package/esm5/lib/selectbox/selectbox.component.js +13 -11
- package/fesm2015/acorex-components.js +9 -8
- package/fesm2015/acorex-components.js.map +1 -1
- package/fesm5/acorex-components.js +12 -10
- package/fesm5/acorex-components.js.map +1 -1
- package/package.json +1 -1
|
@@ -83,7 +83,6 @@ let AXSelectBoxComponent = AXSelectBoxComponent_1 = class AXSelectBoxComponent e
|
|
|
83
83
|
if (this.itemsChange) {
|
|
84
84
|
this.itemsChange.emit(v);
|
|
85
85
|
}
|
|
86
|
-
debugger;
|
|
87
86
|
if (this.itemsStatusObserver) {
|
|
88
87
|
this.itemsStatusObserver.next(this.items.length);
|
|
89
88
|
}
|
|
@@ -267,7 +266,6 @@ let AXSelectBoxComponent = AXSelectBoxComponent_1 = class AXSelectBoxComponent e
|
|
|
267
266
|
}
|
|
268
267
|
else {
|
|
269
268
|
if (Array.isArray(v)) {
|
|
270
|
-
debugger;
|
|
271
269
|
if (this.selectedItems.length > v.length) {
|
|
272
270
|
this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));
|
|
273
271
|
}
|
|
@@ -275,15 +273,20 @@ let AXSelectBoxComponent = AXSelectBoxComponent_1 = class AXSelectBoxComponent e
|
|
|
275
273
|
let addId = [];
|
|
276
274
|
v.forEach((vId) => {
|
|
277
275
|
addId.push({
|
|
278
|
-
|
|
276
|
+
[this.valueField]: vId
|
|
279
277
|
});
|
|
280
278
|
});
|
|
281
|
-
let newId = differenceBy(addId, this.selectedItems,
|
|
279
|
+
let newId = differenceBy(addId, this.selectedItems, this.valueField);
|
|
282
280
|
let vv = [];
|
|
283
281
|
newId.forEach((rc) => {
|
|
284
|
-
vv.push(rc[
|
|
282
|
+
vv.push(rc[this.valueField]);
|
|
285
283
|
});
|
|
286
|
-
this.
|
|
284
|
+
this.items
|
|
285
|
+
.filter((c) => vv.includes(c[this.valueField]))
|
|
286
|
+
.forEach((res) => {
|
|
287
|
+
this.selectedItems.push(res);
|
|
288
|
+
});
|
|
289
|
+
// this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));
|
|
287
290
|
this.setSelectedItemsChange(this.selectedItems);
|
|
288
291
|
}
|
|
289
292
|
// this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));
|
|
@@ -323,7 +326,6 @@ let AXSelectBoxComponent = AXSelectBoxComponent_1 = class AXSelectBoxComponent e
|
|
|
323
326
|
if (this.mode == 'single') {
|
|
324
327
|
this.showCheckBox = false;
|
|
325
328
|
}
|
|
326
|
-
debugger;
|
|
327
329
|
if (!this.remoteOperation || (this.remoteOperation && this.hasSelectedValue)) {
|
|
328
330
|
this.refresh();
|
|
329
331
|
}
|
|
@@ -817,7 +819,6 @@ let AXSelectBoxComponent = AXSelectBoxComponent_1 = class AXSelectBoxComponent e
|
|
|
817
819
|
.pipe(debounceTime(100))
|
|
818
820
|
.pipe(distinctUntilChanged())
|
|
819
821
|
.subscribe((c) => {
|
|
820
|
-
debugger;
|
|
821
822
|
callbackfn();
|
|
822
823
|
});
|
|
823
824
|
}
|
|
@@ -989,4 +990,4 @@ AXSelectBoxComponent = AXSelectBoxComponent_1 = __decorate([
|
|
|
989
990
|
__metadata("design:paramtypes", [ChangeDetectorRef, ElementRef, NgZone])
|
|
990
991
|
], AXSelectBoxComponent);
|
|
991
992
|
export { AXSelectBoxComponent };
|
|
992
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9zZWxlY3Rib3gvc2VsZWN0Ym94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBK0Qsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsV0FBVztJQUMvRCxZQUFZLFNBQWMsRUFBUyxhQUFvQixFQUFTLGNBQTJC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LENBQUMsT0FBTyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxRQUFR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U0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGVBQWU7UUFDekIsMDNLQUF5QztRQUN6QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtRQUMvQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7UUFDckMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLHNCQUFvQixFQUFFLENBQUM7S0FDcEYsQ0FBQztxQ0FxRnlCLGlCQUFpQixFQUFlLFVBQVUsRUFBZ0IsTUFBTTtHQXBGOUUsb0JBQW9CLENBczRCaEM7U0F0NEJZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIElucHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIE5nWm9uZSxcclxuICBRdWVyeUxpc3QsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIFRlbXBsYXRlUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEJhc2VJbnB1dENvbXBvbmVudCwgQVhFbGVtZW50U2l6ZSwgQVhWYWxpZGF0YWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgfSBmcm9tICcuLi9kYXRhLXNvdXJjZS9yZWFkLXBhcmFtJztcclxuaW1wb3J0IHsgQVhCYXNlRXZlbnQgfSBmcm9tICcuLi9iYXNlL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IGRpZmZlcmVuY2VCeSB9IGZyb20gJ2xvZGFzaCc7XHJcbmV4cG9ydCBjbGFzcyBBWFNlbGVjdEJveFNlbGVjdGlvbkNoYW5nZWRFdmVudCBleHRlbmRzIEFYQmFzZUV2ZW50IHtcclxuICBjb25zdHJ1Y3Rvcihjb21wb25lbnQ6IGFueSwgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBwdWJsaWMgc2VsZWN0ZWRWYWx1ZXM6IGFueVtdIHwgYW55KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XHJcbiAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXNlbGVjdC1ib3gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYVmFsaWRhdGFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNlbGVjdEJveENvbXBvbmVudCB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhTZWxlY3RCb3hDb21wb25lbnQgZXh0ZW5kcyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQVhCYXNlU2l6YWJsZUNvbXBvbmVudCwgQVhCYXNlSW5wdXRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHNob3dEcm9wRG93bkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcm93SW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBzcGFuOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgdGV4dGJveDogQVhUZXh0Qm94Q29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKCdsaXN0Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBsaXN0Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2VyY2hCb3gnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBzZXJjaEJveDogQVhTZWFyY2hCb3hDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RleHRCb3hTZWxlY3RCb3gnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHRleHRCb3hTZWxlY3RCb3g6IEFYVGV4dEJveENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgc2hvd0NoZWNrQm94OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcnRsOiBib29sZWFuID0gQVhDb25maWcuZ2V0KCdsYXlvdXQucnRsJyk7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBzaXplOiBBWEVsZW1lbnRTaXplID0gJ21kJztcclxuXHJcbiAgQElucHV0KCkgYWxsb3dOdWxsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgdGV4dEFsaWduOiAncmlnaHQnIHwgJ2xlZnQnIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIGJ1ZmZlclNpemU6IG51bWJlciA9IDEwMDtcclxuXHJcbiAgQElucHV0KCkgcmVtb3RlT3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIHRoaXMgaW5wdXQgaXMgUHJpdmF0ZSBhbmQgb25seSB1c2UgaW4gTE9WXHJcblxyXG4gIGN1cnJlbnRmb2N1c2VkSW5kZXg6IG51bWJlciA9IC0xO1xyXG4gIHNob3dMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNraXA6IG51bWJlciA9IC0xO1xyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIC8vIEBJbnB1dCgpXHJcbiAgLy8gY2hpcHNXaWR0aDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHRvdGFsQ291bnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhU291cmNlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XHJcblxyXG4gIHByaXZhdGUgX2RhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogQVhEYXRhU291cmNlQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlID8gdGhpcy5fZGF0YVNvdXJjZSA6IHRoaXMuX2NvbnRlbnREYXRhU291cmNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBkYXRhU291cmNlKHY6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCkge1xyXG4gICAgdGhpcy5fZGF0YVNvdXJjZSA9IHY7XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGlvbiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwcml2YXRlIF9jb250ZW50VmFsaWRhdGlvbjogQVhWYWxpZGF0aW9uO1xyXG5cclxuICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IEFYVmFsaWRhdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGlvbiA/IHRoaXMuX3ZhbGlkYXRpb24gOiB0aGlzLl9jb250ZW50VmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGlvbih2OiBBWFZhbGlkYXRpb24pIHtcclxuICAgIHRoaXMuX3ZhbGlkYXRpb24gPSB2O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdkJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkcm9wZG93bjogQVhEcm9wZG93bkNvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KCkgYWxsb3dTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHRleHRGaWVsZDogc3RyaW5nID0gJ3RleHQnO1xyXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQ6IHN0cmluZyA9ICd2YWx1ZSc7XHJcbiAgQElucHV0KCkgbW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XHJcbiAgaXRlbVJlbW92ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBwcml2YXRlIF9pdGVtczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGl0ZW1zKHY6IGFueVtdKSB7XHJcbiAgICB0aGlzLl9pdGVtcyA9IHY7XHJcbiAgICBpZiAodGhpcy5pdGVtc0NoYW5nZSkge1xyXG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodik7XHJcbiAgICB9XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyLm5leHQodGhpcy5pdGVtcy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0ZWRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1zRmlsdGVyZWQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgZHJvcERvd25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhTZWxlY3RCb3hTZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFNlbGVjdEJveFNlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSXRlbXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMgfHwgW107XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRJdGVtcyh2OiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zQ2hhbmdlKHYpO1xyXG4gICAgLy8gaWYgKCF2KSB7XHJcbiAgICAvLyAgIHYgPSBbXTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBjb25zdCBvbGQgPSB0aGlzLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAvLyBpZiAoSlNPTi5zdHJpbmdpZnkob2xkKSAhPT0gSlNPTi5zdHJpbmdpZnkodikpIHtcclxuICAgIC8vICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMubW9kZSA9PSAnc2luZ2xlJyA/IHYuc2xpY2UoMCwgMSkgOiBbLi4ubmV3IFNldCh2KV07IC8vWy4uLm5ldyBTZXQodlswXSldIDogWy4uLm5ldyBTZXQodildO1xyXG4gICAgLy8gICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGMpID0+IChjLnNlbGVjdGVkID0gdHJ1ZSkpO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgLy8gICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgLy8gICB0aGlzLndhaXRGb3JEYXRhKCgpID0+IHtcclxuICAgIC8vICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgLy8gICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChjKSA9PiAoYy5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuc29tZSgoaSkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09IGNbdGhpcy52YWx1ZUZpZWxkXSkpKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRJdGVtc0NoYW5nZSh2OiBhbnlbXSkge1xyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIHYgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbGQgPSB0aGlzLnNlbGVjdGVkSXRlbXM7XHJcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkob2xkKSAhPT0gSlNPTi5zdHJpbmdpZnkodikpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMubW9kZSA9PSAnc2luZ2xlJyA/IHYuc2xpY2UoMCwgMSkgOiBbLi4ubmV3IFNldCh2KV07IC8vWy4uLm5ldyBTZXQodlswXSldIDogWy4uLm5ldyBTZXQodildO1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGMpID0+IChjLnNlbGVjdGVkID0gdHJ1ZSkpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLndhaXRGb3JEYXRhKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChjKSA9PiAoYy5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuc29tZSgoaSkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09IGNbdGhpcy52YWx1ZUZpZWxkXSkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5yb3dUZW1wbGF0ZSA9PT0gdW5kZWZpbmVkICYmIHRoaXMucm93SW5wdXRUZW1wbGF0ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5yb3dUZW1wbGF0ZSA9IHRoaXMucm93SW5wdXRUZW1wbGF0ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJ0bCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucnRsID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZGlyZWN0aW9uJykgPT09ICdydGwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsZWQoZSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJlxyXG4gICAgICB0aGlzLnRvdGFsQ291bnQgPiB0aGlzLml0ZW1zLmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgIT0gMCAmJlxyXG4gICAgICB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgLSAzMDAgPCA1MFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLnNraXAgIT09IHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5za2lwID0gdGhpcy5pdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XHJcbiAgICAgICAgcGFyYW1zLnNraXAgPSB0aGlzLml0ZW1zLmxlbmd0aDtcclxuICAgICAgICBwYXJhbXMudGFrZSA9IHRoaXMuYnVmZmVyU2l6ZTsgLy8qIChNYXRoLmZsb29yKHRoaXMuaXRlbXMubGVuZ3RoIC8gdGhpcy5idWZmZXJTaXplKSArIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLnRleHRib3gpIHtcclxuICAgICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHNldFNlbGVjdGVkSXRlbXModjogYW55W10sIGlzVXNlcklucHV0OiBib29sZWFuKSB7XHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgaWYgKGlzVXNlcklucHV0KSB7XHJcbiAgICAgIGNoYW5nZWQgPSBKU09OLnN0cmluZ2lmeSh2KSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHY7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoKTtcclxuICAgIGlmIChpc1VzZXJJbnB1dCAmJiBjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hDaGFuZ2VPYnNlcnZlcjogYW55O1xyXG5cclxuICBkZWxheTogbnVtYmVyID0gNTAwO1xyXG5cclxuICB0ZXh0Q2hhbmdlZChlKSB7XHJcbiAgICBpZiAoKGUudmFsdWUgPT09IG51bGwgfHwgZS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGUudmFsdWUgPT09ICcnKSAmJiAoZS5vbGRWYWx1ZSA9PT0gbnVsbCB8fCBlLm9sZFZhbHVlID09PSB1bmRlZmluZWQgfHwgZS5vbGRWYWx1ZSA9PT0gJycpKSB7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSAtMTtcclxuICAgICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgICAgIC8vICB0aGlzLnNlYXJjaFRleHQgPSBlLnZhbHVlO1xyXG4gICAgICAgIC8vIHRoaXMudGV4dCA9IGUudmFsdWU7XHJcbiAgICAgICAgLy8gdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICAgIGxldCB0ID0gdGhpcy5pdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0OyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMucG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuaXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5pdGVtcy5wb3AoKTtcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcclxuICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IHRoaXMudGV4dDtcclxuICAgICAgICAvLyBwYXJhbXMuc2VhcmNoVGV4dCA9IGUudmFsdWU7XHJcbiAgICAgICAgcGFyYW1zLnNraXAgPSAwO1xyXG4gICAgICAgIHBhcmFtcy50YWtlID0gdGhpcy5idWZmZXJTaXplO1xyXG4gICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CdXR0b25DbGljayhlKSB7XHJcbiAgICBjb25zb2xlLmxvZygnb25CdXR0b25DbGljaycsIGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEluZGV4KHNpZ246IC0xIHwgMSB8IG51bGwgPSBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoc2lnbiA9PSBudWxsKSB7XHJcbiAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSB0aGlzLml0ZW1zXHJcbiAgICAgICAgICAuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSlcclxuICAgICAgICAgIC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IHRoaXMuaXRlbXMuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbXNbdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDFdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2lnbiA9PT0gLTEgPyB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXgtLSA6IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xyXG4gICAgICB0aGlzLml0ZW1zRmlsdGVyZWQgPSB0aGlzLml0ZW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy50ZXh0XHJcbiAgICAgICAgPyB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gKGNbdGhpcy50ZXh0RmllbGRdIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnRleHQudG9Mb3dlckNhc2UoKSkpXHJcbiAgICAgICAgOiB0aGlzLml0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9XHJcbiAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA8IDBcclxuICAgICAgICA/IDBcclxuICAgICAgICA6IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA+PSB0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoIC0gMVxyXG4gICAgICAgIDogdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4O1xyXG4gICAgLy9cclxuICAgIC8vIHNldCBzY3JvbGxcclxuICAgIGlmICh0aGlzLmxpc3RDb250YWluZXIpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtRGl2ID0gdGhpcy5saXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgLmxpc3QtaXRlbTpudGgtY2hpbGQoJHt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXh9KWApO1xyXG4gICAgICAgIGlmIChpdGVtRGl2KSB7XHJcbiAgICAgICAgICBpdGVtRGl2LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZFZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10gfCBhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBzZWxlY3RlZFZhbHVlcygpOiBhbnlbXSB8IGFueSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSlbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSkgfHwgW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWVzKHY6IGFueVtdIHwgYW55KSB7XHJcbiAgICBpZiAodGhpcy5jb21wYXJlU2VsZWN0ZWRWYWx1ZXModikpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHYgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAodiAhPSBbXSAmJiB2ICE9ICcnICYmIHYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMud2FpdEZvckRhdGEoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiB2ID09IGNbdGhpcy52YWx1ZUZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gdiA9PSBjW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xyXG4gICAgICAgICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gdi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IHYuaW5jbHVkZXMoY1t0aGlzLnZhbHVlRmllbGRdKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBhZGRJZCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdi5mb3JFYWNoKCh2SWQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgYWRkSWQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgSUQ6IHZJZFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBuZXdJZCA9IGRpZmZlcmVuY2VCeShhZGRJZCwgdGhpcy5zZWxlY3RlZEl0ZW1zLCAnSUQnKTtcclxuICAgICAgICAgICAgICAgIGxldCB2diA9IFtdO1xyXG4gICAgICAgICAgICAgICAgbmV3SWQuZm9yRWFjaCgocmMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdnYucHVzaChyY1snSUQnXSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiB2di5pbmNsdWRlcyhjW3RoaXMudmFsdWVGaWVsZF0pKVswXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXNDaGFuZ2UodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gdi5pbmNsdWRlcyhjW3RoaXMudmFsdWVGaWVsZF0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IHYgPT09IGNbdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcclxuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmVTZWxlY3RlZFZhbHVlcyhuZXdWYWx1ZTogYW55W10gfCBhbnkpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XHJcbiAgICByZXR1cm4gKGN1cnJlbnRWYWx1ZSA9PSBudWxsICYmIG5ld1ZhbHVlID09IG51bGwpIHx8IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRWYWx1ZSkgPT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRWYWx1ZXModjogYW55W10gfCBhbnksIGlzVXNlcklucHV0OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBjaGFuZ2VkID0gaXNVc2VySW5wdXQgPyAhdGhpcy5jb21wYXJlU2VsZWN0ZWRWYWx1ZXModikgOiBmYWxzZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSB2O1xyXG4gICAgaWYgKGlzVXNlcklucHV0ICYmIGNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChuZXcgQVhTZWxlY3RCb3hTZWxlY3Rpb25DaGFuZ2VkRXZlbnQodGhpcywgdGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnNlbGVjdGVkVmFsdWVzKSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5idWZmZXJTaXplIDwgMTApIHtcclxuICAgICAgdGhpcy5idWZmZXJTaXplID0gMTA7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NoZWNrQm94ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gfHwgKHRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMuaGFzU2VsZWN0ZWRWYWx1ZSkpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRyb3Bkb3duVG9nZ2xlKGUpIHtcclxuICAgIHRoaXMudGV4dCA9ICcnO1xyXG4gICAgaWYgKHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zZXJjaEJveCkge1xyXG4gICAgICAgICAgdGhpcy5zZXJjaEJveC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAvLyBpZiAoIXRoaXMuYWxsb3dTZWFyY2gpIHtcclxuICAgIC8vICAgICBpZiAodGhpcy5yZWFkb25seSA9PSBmYWxzZSkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLml0ZW1SZW1vdmUgPSB0cnVlO1xyXG4gICAgLy8gICAgICAgICB0aGlzLnJlYWRvbmx5ID0gdHJ1ZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLmluaXRWYWxpZGF0aW9uKHRoaXMucmVmLCAnc2VsZWN0ZWRJdGVtcycsIHRoaXMudmFsaWRhdGlvbik7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIGlmICh0aGlzLmFsbG93U2VhcmNoID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5mZXRjaCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZC5zdWJzY3JpYmUoKGMpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kYXRhUmVjZWl2ZWQoYy5kYXRhLnJlc3VsdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRhdGFSZWNlaXZlZChkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hUZXh0ICYmIHRoaXMuc2VhcmNoVGV4dCAhPSBudWxsICYmIHRoaXMuc2VhcmNoVGV4dCAhPT0gJycpIHtcclxuICAgICAgICBpZiAoZGF0YS50b3RhbENvdW50KSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAvL3RoaXMuaXRlbXMgPSBkYXRhLml0ZW1zO1xyXG4gICAgICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xyXG4gICAgICAgICAgICAvLyAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlci5uZXh0KHRoaXMuaXRlbXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEudG90YWxDb3VudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IGRhdGEuaXRlbXM7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5pdGVtc1N0YXR1c09ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyLm5leHQodGhpcy5pdGVtcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLml0ZW1zID09IHVuZGVmaW5lZCA/IDAgOiBkYXRhLml0ZW1zLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5pdGVtcyAmJiBkYXRhLml0ZW1zLmxlbmd0aCA9PT0gZGF0YS50b3RhbENvdW50KSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcyA9IGRhdGEuaXRlbXM7XHJcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS5pdGVtcy5sZW5ndGg7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS50b3RhbENvdW50KSB7XHJcbiAgICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKChlbG0pID0+IHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcclxuICAgICAgICAvLyAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlci5uZXh0KHRoaXMuaXRlbXMubGVuZ3RoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS50b3RhbENvdW50O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoZWxtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goZWxtKTtcclxuICAgICAgICAgIC8vIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcclxuICAgICAgICAgIC8vICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyLm5leHQodGhpcy5pdGVtcy5sZW5ndGgpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEubGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLml0ZW1zID0gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XHJcblxyXG4gIGZldGNoKHBhcmFtczogQVhEYXRhU291cmNlUmVhZFBhcmFtcyA9IHt9KSB7XHJcbiAgICAvLyAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmV0Y2gocGFyYW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcclxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xyXG4gICAgICBwYXJhbXMuc2tpcCA9IDA7XHJcbiAgICAgIHRoaXMuc2tpcCA9IDA7XHJcbiAgICAgIHBhcmFtcy50YWtlID0gdGhpcy5idWZmZXJTaXplO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICAvLyB0aGlzLml0ZW1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgLy8gICB0aGlzLml0ZW1zLnBvcCgpO1xyXG4gICAgICAvLyB9KTtcclxuXHJcbiAgICAgIGxldCB0ID0gdGhpcy5pdGVtcy5sZW5ndGg7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5wb3AoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZldGNoKHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJdGVtUmVtb3ZlQ2xpY2soaXRlbSkge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlcyhudWxsLCB0cnVlKTtcclxuICAgICAgLy8gdGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgIC8vIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpdGVtKTtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSAhPT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdKSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZpbHRlcihjID0+IGMgIT09IGl0ZW0pO1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgLy8gdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGV4dCA9ICcnO1xyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzVGV4dEJveChlKSB7fVxyXG4gIG9uVGV4dEJveENsaWNrKGUpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkID09IGZhbHNlICYmIHRoaXMucmVhZG9ubHkgPT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJdGVtQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXTtcclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZXModmFsdWUsIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5zZWxlY3RlZFZhbHVlcy5zbGljZSgwKTtcclxuICAgICAgaWYgKGV4aXN0cy5pbmNsdWRlcyh2YWx1ZSkpIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd051bGwgPT0gdHJ1ZSB8fCAodGhpcy5hbGxvd051bGwgPT0gZmFsc2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1SZW1vdmVDbGljayhpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhpc3RzLnB1c2godmFsdWUpO1xyXG4gICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBleGlzdHM7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlcyhleGlzdHMsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLnRleHQgPSAnJztcclxuICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIC8vIGlmIChlLnN0b3BQcm9wYWdhdGlvbigpID09IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAvLyB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcclxuICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5RXZlbnRTZWFyY2goZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudGV4dEJveFNlbGVjdEJveC5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICB0aGlzLnRleHQgPSBudWxsO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnRleHRCb3hTZWxlY3RCb3guZm9jdXMoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSAmJiB0aGlzLmdldEl0ZW1zKCkubGVuZ3RoID4gMCAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCArIChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQnlJbmRleCh0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duLmlzT3Blbikge1xyXG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEluZGV4KGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbigpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcmNoQm94KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXJjaEJveC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGlmIChlLmtleSA9PSAnRW50ZXInICYmIHRoaXMuZHJvcGRvd24uaXNPcGVuICYmIHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xyXG4gICAgLy8gICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcclxuICAgIC8vICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5kcm9wZG93bi5mb2N1cygpO1xyXG4gICAgLy8gICAgIH0sIDApO1xyXG4gICAgLy8gfVxyXG4gICAgLy9lLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgLy9lLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nICYmIGUua2V5ID09ICdFbnRlcicgJiYgdGhpcy5kcm9wZG93bi5pc09wZW4pIHtcclxuICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xyXG4gICAgICAgIHRoaXMuaXRlbXNGaWx0ZXJlZCA9IHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbXNGaWx0ZXJlZC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaXRlbXNGaWx0ZXJlZCA9IHRoaXMuaXRlbXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMuaXRlbXNGaWx0ZXJlZFt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdW3RoaXMudmFsdWVGaWVsZF0pLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICB0aGlzLm1vZGUgPT0gJ211bHRpcGxlJ1xyXG4gICAgICApIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd051bGwgPT0gdHJ1ZSB8fCAodGhpcy5hbGxvd051bGwgPT0gZmFsc2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudGV4dCAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGMpID0+XHJcbiAgICAgICAgICAgICAgICBjICE9PVxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKVt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0gIT09IHRoaXMuaXRlbXNbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5tb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zRmlsdGVyZWRbMF0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zRmlsdGVyZWRbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy5pdGVtc0ZpbHRlcmVkLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtc0ZpbHRlcmVkLCB0cnVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRleHRCb3hTZWxlY3RCb3guZm9jdXMoKTtcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaXNDaGFyKHN0cjogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHN0ci5pbmNsdWRlcygnU2hpZnQnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ1RhYicpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnQ29udHJvbCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnQWx0JykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdDYXBzTG9jaycpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnTWV0YScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnQ29udGV4dE1lbnUnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0VudGVyJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdCYWNrc3BhY2UnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ1ByaW50U2NyZWVuJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdTY3JvbGxMb2NrJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdQYXVzZScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnSG9tZScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRW5kJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdJbnNlcnQnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ1BhZ2VVcCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRGVsZXRlJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdQYWdlRG93bicpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnTnVtTG9jaycpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRXNjYXBlJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdBcnJvdycpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygn2ZFGMScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjInKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0YzJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGNCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjUnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0Y2JykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGNycpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjgnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0Y5JykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGMTAnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0YxMScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjEyJylcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUtleUV2ZW50KGU6IGFueSkge1xyXG4gICAgLy8gY29uc3QgTnVtYmVyTWludXNQYXR0ZXJuID0gL1thLXpBLVowLTlcXC1dL2c7XHJcbiAgICAvLyBjb25zdCBGYXJzaSA9IC9b2b7ahtis2K3YrtmH2LnYutmB2YLYq9i12LbYtNiz24zYqNmE2KfYqtmG2YXaqdqv2YjYptiv2LDYsdiy2LfYuNqY2KTYpdij2KHZi9mM2Y3ZjtmP2ZDZkVxcc10rJC87XHJcbiAgICAvLyAgY29uc3QgaW5wdXRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlKTtcclxuICAgIC8vIGNvbnN0IHBhdHRlcm5FbiA9IC9eW2EtekEtWjAtOV0qJC87XHJcbiAgICAvLyBjb25zdCBwYXR0ZXJuID0gL15bXFx1MDYwMC1cXHUwNkZGXFxzXSskLztcclxuICAgIGNvbnN0IGlucHV0Q2hhciA9IGUua2V5O1xyXG4gICAgaWYgKFxyXG4gICAgICAoaW5wdXRDaGFyICE9ICdCYWNrc3BhY2UnICYmXHJcbiAgICAgICAgaW5wdXRDaGFyICE9ICdCYWNrc3BhY2UnICYmXHJcbiAgICAgICAgaW5wdXRDaGFyICE9ICdUYWInICYmXHJcbiAgICAgICAgaW5wdXRDaGFyICE9ICdFbnRlcicgJiZcclxuICAgICAgICBpbnB1dENoYXIgIT0gJ0VzY2FwZScgJiZcclxuICAgICAgICBpbnB1dENoYXIgIT0gJ0Fycm93RG93bicgJiZcclxuICAgICAgICBpbnB1dENoYXIgIT0gJ0Fycm93VXAnKSB8fFxyXG4gICAgICBlLmNvZGUgPT09ICdTcGFjZScgfHxcclxuICAgICAgZS5jdHJsS2V5ID09IHRydWVcclxuICAgICkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGUua2V5ID09PSAnQmFja3NwYWNlJyAmJlxyXG4gICAgICBlLnR5cGUgPT09ICdrZXlkb3duJyAmJlxyXG4gICAgICAoKHRoaXMuYWxsb3dOdWxsID09PSB0cnVlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB8fCAodGhpcy5hbGxvd051bGwgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxKSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucG9wKCk7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudGV4dEJveFNlbGVjdEJveC5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgSU5QVVQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSk7XHJcbiAgICBpZiAodGhpcy5pc0NoYXIoZS5rZXkpICYmIHRoaXMuYWxsb3dTZWFyY2ggJiYgZS5jdHJsS2V5ID09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd24ub3BlbigpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zZXJjaEJveCkge1xyXG4gICAgICAgICAgdGhpcy5zZXJjaEJveC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMCk7XHJcbiAgICAgIHRoaXMudGV4dCA9IGUua2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgdGhpcy50ZXh0ID0gbnVsbDtcclxuICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnRleHRCb3hTZWxlY3RCb3guZm9jdXMoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9XHJcbiAgICBpZiAoKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSAmJiB0aGlzLmdldEl0ZW1zKCkubGVuZ3RoID4gMCAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQnlJbmRleCh0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggKyAoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XHJcbiAgICAgICAgICAvLyAgdGhpcy5zZXRTZWxlY3RlZEluZGV4KChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpKTtcclxuICAgICAgICAgIGlmICh0aGlzLmFsbG93U2VhcmNoID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJbmRleChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VyY2hCb3guZm9jdXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcclxuICAgICAgICAgIGlmICh0aGlzLmFsbG93U2VhcmNoID09IHRydWUpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VyY2hCb3guZm9jdXMoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFsbG93U2VhcmNoID09PSBmYWxzZSkge1xyXG4gICAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicgJiYgZS5rZXkgPT0gJ0VudGVyJyAmJiB0aGlzLmRyb3Bkb3duLmlzT3Blbikge1xyXG4gICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLnZhbHVlRmllbGRdID09PSB0aGlzLml0ZW1zRmlsdGVyZWRbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XVt0aGlzLnZhbHVlRmllbGRdKS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICB0aGlzLm1vZGUgPT0gJ211bHRpcGxlJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dOdWxsID09IHRydWUgfHwgKHRoaXMuYWxsb3dOdWxsID09IGZhbHNlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxKSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudGV4dCAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChjKSA9PlxyXG4gICAgICAgICAgICAgICAgICBjICE9PVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gKGNbdGhpcy50ZXh0RmllbGRdIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnRleHQudG9Mb3dlckNhc2UoKSkpW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSAhPT0gdGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5tb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNGaWx0ZXJlZFswXSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zRmlsdGVyZWRbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50ZXh0ICYmIHRoaXMuaXRlbXNGaWx0ZXJlZC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtc0ZpbHRlcmVkLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0Qm94U2VsZWN0Qm94LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXh0Ym94LmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEl0ZW1CeUluZGV4KGluZGV4OiBudW1iZXIpIHtcclxuICAgIGxldCBpdGVtID0gW107XHJcbiAgICBpZiAoIXRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudGV4dCAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNGaWx0ZXJlZCA9IHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSk7XHJcblxyXG4gICAgICBpdGVtID0gdGhpcy5pdGVtc0ZpbHRlcmVkW2luZGV4XTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW0gPSB0aGlzLml0ZW1zW2luZGV4XTtcclxuICAgIH1cclxuICAgIC8vXHJcbiAgICAvLyAgY29uc3QgaXRlbSA9IHRoaXMudGV4dCA/IHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSlbaW5kZXhdIDogdGhpcy5pdGVtc1tpbmRleF07XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXMoW2l0ZW1dLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1zKCk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLml0ZW1zID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJ1xyXG4gICAgICA/IHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSlcclxuICAgICAgOiB0aGlzLml0ZW1zO1xyXG4gIH1cclxuXHJcbiAgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaXRlbVt0aGlzLnZhbHVlRmllbGRdKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpdGVtc1N0YXR1c09ic2VydmVyOiBhbnk7XHJcbiAgcHJpdmF0ZSB3YWl0Rm9yRGF0YShjYWxsYmFja2ZuOiAoKSA9PiB2b2lkKSB7XHJcbiAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgY2FsbGJhY2tmbigpO1xyXG4gICAgfSBlbHNlIGlmICghdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyKSB7XHJcbiAgICAgIE9ic2VydmFibGUuY3JlYXRlKChvYnNlcnZlcikgPT4ge1xyXG4gICAgICAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlciA9IG9ic2VydmVyO1xyXG4gICAgICB9KVxyXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxyXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgZGVidWdnZXI7XHJcblxyXG4gICAgICAgICAgY2FsbGJhY2tmbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
993
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9zZWxlY3Rib3gvc2VsZWN0Ym94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsWUFBWSxFQUNaLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBK0Qsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN0QyxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsV0FBVztJQUMvRCxZQUFZLFNBQWMsRUFBUyxhQUFvQixFQUFTLGNBQTJC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TSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQzFCLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3BCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3RCLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FB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QUdsRjtJQURDLEtBQUssRUFBRTs7OzBEQU9QO0FBOVNVLG9CQUFvQjtJQVJoQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsZUFBZTtRQUN6QiwwM0tBQXlDO1FBQ3pDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1FBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtRQUNyQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsc0JBQW9CLEVBQUUsQ0FBQztLQUNwRixDQUFDO3FDQXFGeUIsaUJBQWlCLEVBQWUsVUFBVSxFQUFnQixNQUFNO0dBcEY5RSxvQkFBb0IsQ0FzNEJoQztTQXQ0Qlksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRWxlbWVudFJlZixcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgTmdab25lLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgVGVtcGxhdGVSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBWFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuLi90ZXh0Ym94L3RleHRib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYQmFzZUlucHV0Q29tcG9uZW50LCBBWEVsZW1lbnRTaXplLCBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuaW1wb3J0IHsgQVhEYXRhU291cmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UvZGF0YXNvdXJjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhEYXRhU291cmNlUmVhZFBhcmFtcyB9IGZyb20gJy4uL2RhdGEtc291cmNlL3JlYWQtcGFyYW0nO1xyXG5pbXBvcnQgeyBBWEJhc2VFdmVudCB9IGZyb20gJy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQVhTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgZGlmZmVyZW5jZUJ5IH0gZnJvbSAnbG9kYXNoJztcclxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94U2VsZWN0aW9uQ2hhbmdlZEV2ZW50IGV4dGVuZHMgQVhCYXNlRXZlbnQge1xyXG4gIGNvbnN0cnVjdG9yKGNvbXBvbmVudDogYW55LCBwdWJsaWMgc2VsZWN0ZWRJdGVtczogYW55W10sIHB1YmxpYyBzZWxlY3RlZFZhbHVlczogYW55W10gfCBhbnkpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtc2VsZWN0LWJveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBob3N0OiB7IHN0eWxlOiAnZGlzcGxheTogY29udGVudHM7JyB9LFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQVhWYWxpZGF0YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFNlbGVjdEJveENvbXBvbmVudCBleHRlbmRzIEFYVmFsaWRhdGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBWEJhc2VTaXphYmxlQ29tcG9uZW50LCBBWEJhc2VJbnB1dENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgc2hvd0Ryb3BEb3duQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICByb3dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KClcclxuICByb3dJbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoQVhUZXh0Qm94Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHNwYW46IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICB0ZXh0Ym94OiBBWFRleHRCb3hDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2xpc3RDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGxpc3RDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICBAVmlld0NoaWxkKCdzZXJjaEJveCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHNlcmNoQm94OiBBWFNlYXJjaEJveENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgndGV4dEJveFNlbGVjdEJveCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgdGV4dEJveFNlbGVjdEJveDogQVhUZXh0Qm94Q29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKSBzaG93Q2hlY2tCb3g6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBydGw6IGJvb2xlYW4gPSBBWENvbmZpZy5nZXQoJ2xheW91dC5ydGwnKTtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHNpemU6IEFYRWxlbWVudFNpemUgPSAnbWQnO1xyXG5cclxuICBASW5wdXQoKSBhbGxvd051bGw6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKSB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgYnVmZmVyU2l6ZTogbnVtYmVyID0gMTAwO1xyXG5cclxuICBASW5wdXQoKSByZW1vdGVPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gdGhpcyBpbnB1dCBpcyBQcml2YXRlIGFuZCBvbmx5IHVzZSBpbiBMT1ZcclxuXHJcbiAgY3VycmVudGZvY3VzZWRJbmRleDogbnVtYmVyID0gLTE7XHJcbiAgc2hvd0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2tpcDogbnVtYmVyID0gLTE7XHJcbiAgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcbiAgLy8gQElucHV0KClcclxuICAvLyBjaGlwc1dpZHRoOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBWERhdGFTb3VyY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcclxuXHJcbiAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogQVhEYXRhU291cmNlQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBBWERhdGFTb3VyY2VDb21wb25lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UgPyB0aGlzLl9kYXRhU291cmNlIDogdGhpcy5fY29udGVudERhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGRhdGFTb3VyY2UodjogQVhEYXRhU291cmNlQ29tcG9uZW50KSB7XHJcbiAgICB0aGlzLl9kYXRhU291cmNlID0gdjtcclxuICB9XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQVhWYWxpZGF0aW9uLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnRWYWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XHJcblxyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHZhbGlkYXRpb24oKTogQVhWYWxpZGF0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uID8gdGhpcy5fdmFsaWRhdGlvbiA6IHRoaXMuX2NvbnRlbnRWYWxpZGF0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCB2YWxpZGF0aW9uKHY6IEFYVmFsaWRhdGlvbikge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbiA9IHY7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2QnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRyb3Bkb3duOiBBWERyb3Bkb3duQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKSBhbGxvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgdGV4dEZpZWxkOiBzdHJpbmcgPSAndGV4dCc7XHJcbiAgQElucHV0KCkgdmFsdWVGaWVsZDogc3RyaW5nID0gJ3ZhbHVlJztcclxuICBASW5wdXQoKSBtb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgPSAnc2luZ2xlJztcclxuICBpdGVtUmVtb3ZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgX2l0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpdGVtcygpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaXRlbXModjogYW55W10pIHtcclxuICAgIHRoaXMuX2l0ZW1zID0gdjtcclxuICAgIGlmICh0aGlzLml0ZW1zQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh2KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcclxuICAgICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyLm5leHQodGhpcy5pdGVtcy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFzU2VsZWN0ZWRWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1zRmlsdGVyZWQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbiAgZHJvcERvd25EaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhTZWxlY3RCb3hTZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFNlbGVjdEJveFNlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkSXRlbXMoKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMgfHwgW107XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRJdGVtcyh2OiBhbnlbXSkge1xyXG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zQ2hhbmdlKHYpO1xyXG4gICAgLy8gaWYgKCF2KSB7XHJcbiAgICAvLyAgIHYgPSBbXTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBjb25zdCBvbGQgPSB0aGlzLnNlbGVjdGVkSXRlbXM7XHJcbiAgICAvLyBpZiAoSlNPTi5zdHJpbmdpZnkob2xkKSAhPT0gSlNPTi5zdHJpbmdpZnkodikpIHtcclxuICAgIC8vICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMubW9kZSA9PSAnc2luZ2xlJyA/IHYuc2xpY2UoMCwgMSkgOiBbLi4ubmV3IFNldCh2KV07IC8vWy4uLm5ldyBTZXQodlswXSldIDogWy4uLm5ldyBTZXQodildO1xyXG4gICAgLy8gICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGMpID0+IChjLnNlbGVjdGVkID0gdHJ1ZSkpO1xyXG4gICAgLy8gICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuICAgIC8vICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgLy8gICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgLy8gICB0aGlzLndhaXRGb3JEYXRhKCgpID0+IHtcclxuICAgIC8vICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgLy8gICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChjKSA9PiAoYy5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuc29tZSgoaSkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09IGNbdGhpcy52YWx1ZUZpZWxkXSkpKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRJdGVtc0NoYW5nZSh2OiBhbnlbXSkge1xyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIHYgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvbGQgPSB0aGlzLnNlbGVjdGVkSXRlbXM7XHJcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkob2xkKSAhPT0gSlNPTi5zdHJpbmdpZnkodikpIHtcclxuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMubW9kZSA9PSAnc2luZ2xlJyA/IHYuc2xpY2UoMCwgMSkgOiBbLi4ubmV3IFNldCh2KV07IC8vWy4uLm5ldyBTZXQodlswXSldIDogWy4uLm5ldyBTZXQodildO1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGMpID0+IChjLnNlbGVjdGVkID0gdHJ1ZSkpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xyXG4gICAgICB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB0aGlzLndhaXRGb3JEYXRhKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcykge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKChjKSA9PiAoYy5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuc29tZSgoaSkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09IGNbdGhpcy52YWx1ZUZpZWxkXSkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5yb3dUZW1wbGF0ZSA9PT0gdW5kZWZpbmVkICYmIHRoaXMucm93SW5wdXRUZW1wbGF0ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5yb3dUZW1wbGF0ZSA9IHRoaXMucm93SW5wdXRUZW1wbGF0ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJ0bCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucnRsID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZGlyZWN0aW9uJykgPT09ICdydGwnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsZWQoZSkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJlxyXG4gICAgICB0aGlzLnRvdGFsQ291bnQgPiB0aGlzLml0ZW1zLmxlbmd0aCAmJlxyXG4gICAgICB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgIT0gMCAmJlxyXG4gICAgICB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgLSAzMDAgPCA1MFxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLnNraXAgIT09IHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5za2lwID0gdGhpcy5pdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XHJcbiAgICAgICAgcGFyYW1zLnNraXAgPSB0aGlzLml0ZW1zLmxlbmd0aDtcclxuICAgICAgICBwYXJhbXMudGFrZSA9IHRoaXMuYnVmZmVyU2l6ZTsgLy8qIChNYXRoLmZsb29yKHRoaXMuaXRlbXMubGVuZ3RoIC8gdGhpcy5idWZmZXJTaXplKSArIDEpO1xyXG4gICAgICAgIGlmICh0aGlzLnRleHRib3gpIHtcclxuICAgICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIHNldFNlbGVjdGVkSXRlbXModjogYW55W10sIGlzVXNlcklucHV0OiBib29sZWFuKSB7XHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgaWYgKGlzVXNlcklucHV0KSB7XHJcbiAgICAgIGNoYW5nZWQgPSBKU09OLnN0cmluZ2lmeSh2KSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHY7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoKTtcclxuICAgIGlmIChpc1VzZXJJbnB1dCAmJiBjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hDaGFuZ2VPYnNlcnZlcjogYW55O1xyXG5cclxuICBkZWxheTogbnVtYmVyID0gNTAwO1xyXG5cclxuICB0ZXh0Q2hhbmdlZChlKSB7XHJcbiAgICBpZiAoKGUudmFsdWUgPT09IG51bGwgfHwgZS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGUudmFsdWUgPT09ICcnKSAmJiAoZS5vbGRWYWx1ZSA9PT0gbnVsbCB8fCBlLm9sZFZhbHVlID09PSB1bmRlZmluZWQgfHwgZS5vbGRWYWx1ZSA9PT0gJycpKSB7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSAtMTtcclxuICAgICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xyXG4gICAgICAgIC8vICB0aGlzLnNlYXJjaFRleHQgPSBlLnZhbHVlO1xyXG4gICAgICAgIC8vIHRoaXMudGV4dCA9IGUudmFsdWU7XHJcbiAgICAgICAgLy8gdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICAgIGxldCB0ID0gdGhpcy5pdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0OyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMucG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMuaXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIC8vICAgdGhpcy5pdGVtcy5wb3AoKTtcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcclxuICAgICAgICBwYXJhbXMuc2VhcmNoVGV4dCA9IHRoaXMudGV4dDtcclxuICAgICAgICAvLyBwYXJhbXMuc2VhcmNoVGV4dCA9IGUudmFsdWU7XHJcbiAgICAgICAgcGFyYW1zLnNraXAgPSAwO1xyXG4gICAgICAgIHBhcmFtcy50YWtlID0gdGhpcy5idWZmZXJTaXplO1xyXG4gICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CdXR0b25DbGljayhlKSB7XHJcbiAgICBjb25zb2xlLmxvZygnb25CdXR0b25DbGljaycsIGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEluZGV4KHNpZ246IC0xIHwgMSB8IG51bGwgPSBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoc2lnbiA9PSBudWxsKSB7XHJcbiAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSB0aGlzLml0ZW1zXHJcbiAgICAgICAgICAuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSlcclxuICAgICAgICAgIC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9IHRoaXMuaXRlbXMuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbXNbdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDFdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2lnbiA9PT0gLTEgPyB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXgtLSA6IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xyXG4gICAgICB0aGlzLml0ZW1zRmlsdGVyZWQgPSB0aGlzLml0ZW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy50ZXh0XHJcbiAgICAgICAgPyB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gKGNbdGhpcy50ZXh0RmllbGRdIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnRleHQudG9Mb3dlckNhc2UoKSkpXHJcbiAgICAgICAgOiB0aGlzLml0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA9XHJcbiAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA8IDBcclxuICAgICAgICA/IDBcclxuICAgICAgICA6IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA+PSB0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoXHJcbiAgICAgICAgPyB0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoIC0gMVxyXG4gICAgICAgIDogdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4O1xyXG4gICAgLy9cclxuICAgIC8vIHNldCBzY3JvbGxcclxuICAgIGlmICh0aGlzLmxpc3RDb250YWluZXIpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtRGl2ID0gdGhpcy5saXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgLmxpc3QtaXRlbTpudGgtY2hpbGQoJHt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXh9KWApO1xyXG4gICAgICAgIGlmIChpdGVtRGl2KSB7XHJcbiAgICAgICAgICBpdGVtRGl2LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3RlZFZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdIHwgYW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10gfCBhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBzZWxlY3RlZFZhbHVlcygpOiBhbnlbXSB8IGFueSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSlbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSkgfHwgW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWVzKHY6IGFueVtdIHwgYW55KSB7XHJcbiAgICBpZiAodGhpcy5jb21wYXJlU2VsZWN0ZWRWYWx1ZXModikpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHYgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAodiAhPSBbXSAmJiB2ICE9ICcnICYmIHYgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMud2FpdEZvckRhdGEoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiB2ID09IGNbdGhpcy52YWx1ZUZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gdiA9PSBjW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gdi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IHYuaW5jbHVkZXMoY1t0aGlzLnZhbHVlRmllbGRdKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBhZGRJZCA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdi5mb3JFYWNoKCh2SWQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgYWRkSWQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudmFsdWVGaWVsZF06IHZJZFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBuZXdJZCA9IGRpZmZlcmVuY2VCeShhZGRJZCwgdGhpcy5zZWxlY3RlZEl0ZW1zLCB0aGlzLnZhbHVlRmllbGQpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZ2ID0gW107XHJcbiAgICAgICAgICAgICAgICBuZXdJZC5mb3JFYWNoKChyYykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB2di5wdXNoKHJjW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zXHJcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IHZ2LmluY2x1ZGVzKGNbdGhpcy52YWx1ZUZpZWxkXSkpXHJcbiAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChyZXMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChyZXMpO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIC8vICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gdnYuaW5jbHVkZXMoY1t0aGlzLnZhbHVlRmllbGRdKSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zQ2hhbmdlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAvLyAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IHYuaW5jbHVkZXMoY1t0aGlzLnZhbHVlRmllbGRdKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodikge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiB2ID09PSBjW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlcyk7XHJcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wYXJlU2VsZWN0ZWRWYWx1ZXMobmV3VmFsdWU6IGFueVtdIHwgYW55KSB7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnNlbGVjdGVkVmFsdWVzO1xyXG4gICAgcmV0dXJuIChjdXJyZW50VmFsdWUgPT0gbnVsbCAmJiBuZXdWYWx1ZSA9PSBudWxsKSB8fCBKU09OLnN0cmluZ2lmeShjdXJyZW50VmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNlbGVjdGVkVmFsdWVzKHY6IGFueVtdIHwgYW55LCBpc1VzZXJJbnB1dDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgY2hhbmdlZCA9IGlzVXNlcklucHV0ID8gIXRoaXMuY29tcGFyZVNlbGVjdGVkVmFsdWVzKHYpIDogZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gdjtcclxuICAgIGlmIChpc1VzZXJJbnB1dCAmJiBjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQobmV3IEFYU2VsZWN0Qm94U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KHRoaXMsIHRoaXMuc2VsZWN0ZWRJdGVtcywgdGhpcy5zZWxlY3RlZFZhbHVlcykpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYnVmZmVyU2l6ZSA8IDEwKSB7XHJcbiAgICAgIHRoaXMuYnVmZmVyU2l6ZSA9IDEwO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLnNob3dDaGVja0JveCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiB8fCAodGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy5oYXNTZWxlY3RlZFZhbHVlKSkge1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcbiAgZHJvcGRvd25Ub2dnbGUoZSkge1xyXG4gICAgdGhpcy50ZXh0ID0gJyc7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bi5pc09wZW4pIHtcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlcmNoQm94KSB7XHJcbiAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIC8vIGlmICghdGhpcy5hbGxvd1NlYXJjaCkge1xyXG4gICAgLy8gICAgIGlmICh0aGlzLnJlYWRvbmx5ID09IGZhbHNlKSB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuaXRlbVJlbW92ZSA9IHRydWU7XHJcbiAgICAvLyAgICAgICAgIHRoaXMucmVhZG9ubHkgPSB0cnVlO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxuICAgIHRoaXMuaW5pdFZhbGlkYXRpb24odGhpcy5yZWYsICdzZWxlY3RlZEl0ZW1zJywgdGhpcy52YWxpZGF0aW9uKTtcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLmZldGNoKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5kYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRhdGFSZWNlaXZlZChjLmRhdGEucmVzdWx0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGF0YVJlY2VpdmVkKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaFRleHQgJiYgdGhpcy5zZWFyY2hUZXh0ICE9IG51bGwgJiYgdGhpcy5zZWFyY2hUZXh0ICE9PSAnJykge1xyXG4gICAgICAgIGlmIChkYXRhLnRvdGFsQ291bnQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5pdGVtcyA9IGRhdGEuaXRlbXM7XHJcbiAgICAgICAgICAgIGRhdGEuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5pdGVtc1N0YXR1c09ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIC8vICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyLm5leHQodGhpcy5pdGVtcy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS50b3RhbENvdW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGEuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgLy8gICB0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIubmV4dCh0aGlzLml0ZW1zLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEuaXRlbXMgPT0gdW5kZWZpbmVkID8gMCA6IGRhdGEuaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChkYXRhLml0ZW1zICYmIGRhdGEuaXRlbXMubGVuZ3RoID09PSBkYXRhLnRvdGFsQ291bnQpIHtcclxuICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcclxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLml0ZW1zLmxlbmd0aDtcclxuICAgICAgfSBlbHNlIGlmIChkYXRhLnRvdGFsQ291bnQpIHtcclxuICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goKGVsbSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGVsbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gaWYgKHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xyXG4gICAgICAgIC8vICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyLm5leHQodGhpcy5pdGVtcy5sZW5ndGgpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLnRvdGFsQ291bnQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YS5mb3JFYWNoKChlbG0pID0+IHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xyXG4gICAgICAgICAgLy8gICB0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIubmV4dCh0aGlzLml0ZW1zLmxlbmd0aCk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBkYXRhO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcclxuXHJcbiAgZmV0Y2gocGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge30pIHtcclxuICAgIC8vICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5zaG93TG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5mZXRjaChwYXJhbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHBhcmFtczogQVhEYXRhU291cmNlUmVhZFBhcmFtcyA9IHt9O1xyXG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XHJcbiAgICAgIHBhcmFtcy5za2lwID0gMDtcclxuICAgICAgdGhpcy5za2lwID0gMDtcclxuICAgICAgcGFyYW1zLnRha2UgPSB0aGlzLmJ1ZmZlclNpemU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyB0aGlzLml0ZW1zID0gW107XHJcbiAgICAgIC8vIHRoaXMuaXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAvLyAgIHRoaXMuaXRlbXMucG9wKCk7XHJcbiAgICAgIC8vIH0pO1xyXG5cclxuICAgICAgbGV0IHQgPSB0aGlzLml0ZW1zLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0OyBpKyspIHtcclxuICAgICAgICB0aGlzLml0ZW1zLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUl0ZW1SZW1vdmVDbGljayhpdGVtKSB7XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWVzKG51bGwsIHRydWUpO1xyXG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgLy8gdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGMgIT09IGl0ZW0pO1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXMoXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLnZhbHVlRmllbGRdICE9PSBpdGVtW3RoaXMudmFsdWVGaWVsZF0pLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgICAgLy8gdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlsdGVyKGMgPT4gYyAhPT0gaXRlbSk7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSXRlbXMpO1xyXG4gICAgICAvLyB0aGlzLmNsZWFyVmFsaWRhdGlvblN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50ZXh0ID0gJyc7XHJcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXNUZXh0Qm94KGUpIHt9XHJcbiAgb25UZXh0Qm94Q2xpY2soZSkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgPT0gZmFsc2UgJiYgdGhpcy5yZWFkb25seSA9PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gaXRlbVt0aGlzLnZhbHVlRmllbGRdO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlcyh2YWx1ZSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBleGlzdHMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLnNsaWNlKDApO1xyXG4gICAgICBpZiAoZXhpc3RzLmluY2x1ZGVzKHZhbHVlKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93TnVsbCA9PSB0cnVlIHx8ICh0aGlzLmFsbG93TnVsbCA9PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlSXRlbVJlbW92ZUNsaWNrKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleGlzdHMucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFZhbHVlcyA9IGV4aXN0cztcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWVzKGV4aXN0cywgdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMudGV4dCA9ICcnO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKGUuc3RvcFByb3BhZ2F0aW9uKCkgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIC8vIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zZXJjaEJveCkge1xyXG4gICAgICAgIHRoaXMuc2VyY2hCb3guZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVLZXlFdmVudFNlYXJjaChlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50ZXh0Qm94U2VsZWN0Qm94LmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgIHRoaXMudGV4dCA9IG51bGw7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudGV4dEJveFNlbGVjdEJveC5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICAgIGlmICgoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpICYmIHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggPiAwICYmIGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ICsgKGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1CeUluZGV4KHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKCk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaWYgKGUua2V5ID09ICdFbnRlcicgJiYgdGhpcy5kcm9wZG93bi5pc09wZW4gJiYgdGhpcy5tb2RlID09ICdzaW5nbGUnKSB7XHJcbiAgICAvLyAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xyXG4gICAgLy8gICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICB0aGlzLmRyb3Bkb3duLmZvY3VzKCk7XHJcbiAgICAvLyAgICAgfSwgMCk7XHJcbiAgICAvLyB9XHJcbiAgICAvL2Uuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAvL2UucHJldmVudERlZmF1bHQoKTtcclxuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAoZS50eXBlID09PSAna2V5ZG93bicgJiYgZS5rZXkgPT0gJ0VudGVyJyAmJiB0aGlzLmRyb3Bkb3duLmlzT3Blbikge1xyXG4gICAgICBpZiAoIXRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudGV4dCAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICBpZiAodGhpcy5pdGVtc0ZpbHRlcmVkLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSA9PT0gdGhpcy5pdGVtc0ZpbHRlcmVkW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1bdGhpcy52YWx1ZUZpZWxkXSkubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIHRoaXMubW9kZSA9PSAnbXVsdGlwbGUnXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICh0aGlzLmFsbG93TnVsbCA9PSB0cnVlIHx8ICh0aGlzLmFsbG93TnVsbCA9PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICAgICAoYykgPT5cclxuICAgICAgICAgICAgICAgIGMgIT09XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gKGNbdGhpcy50ZXh0RmllbGRdIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnRleHQudG9Mb3dlckNhc2UoKSkpW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSAhPT0gdGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdW3RoaXMudmFsdWVGaWVsZF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudGV4dCAmJiB0aGlzLnRleHQgIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNGaWx0ZXJlZC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNGaWx0ZXJlZFswXSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNGaWx0ZXJlZFt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2godGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMudGV4dCAmJiB0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zRmlsdGVyZWQsIHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMudGV4dEJveFNlbGVjdEJveC5mb2N1cygpO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBpc0NoYXIoc3RyOiBzdHJpbmcpIHtcclxuICAgIGlmIChcclxuICAgICAgc3RyLmluY2x1ZGVzKCdTaGlmdCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnVGFiJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdDb250cm9sJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdBbHQnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0NhcHNMb2NrJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdNZXRhJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdDb250ZXh0TWVudScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRW50ZXInKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0JhY2tzcGFjZScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnUHJpbnRTY3JlZW4nKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ1Njcm9sbExvY2snKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ1BhdXNlJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdIb21lJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdFbmQnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0luc2VydCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnUGFnZVVwJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdEZWxldGUnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ1BhZ2VEb3duJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdOdW1Mb2NrJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdFc2NhcGUnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0Fycm93JykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCfZkUYxJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGMicpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjMnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0Y0JykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGNScpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjYnKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0Y3JykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGOCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjknKSB8fFxyXG4gICAgICBzdHIuaW5jbHVkZXMoJ0YxMCcpIHx8XHJcbiAgICAgIHN0ci5pbmNsdWRlcygnRjExJykgfHxcclxuICAgICAgc3RyLmluY2x1ZGVzKCdGMTInKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5RXZlbnQoZTogYW55KSB7XHJcbiAgICAvLyBjb25zdCBOdW1iZXJNaW51c1BhdHRlcm4gPSAvW2EtekEtWjAtOVxcLV0vZztcclxuICAgIC8vIGNvbnN0IEZhcnNpID0gL1vZvtqG2KzYrdiu2YfYudi62YHZgtir2LXYtti02LPbjNio2YTYp9iq2YbZhdqp2q/ZiNim2K/YsNix2LLYt9i42pjYpNil2KPYodmL2YzZjdmO2Y/ZkNmRXFxzXSskLztcclxuICAgIC8vICBjb25zdCBpbnB1dENoYXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUuY2hhckNvZGUpO1xyXG4gICAgLy8gY29uc3QgcGF0dGVybkVuID0gL15bYS16QS1aMC05XSokLztcclxuICAgIC8vIGNvbnN0IHBhdHRlcm4gPSAvXltcXHUwNjAwLVxcdTA2RkZcXHNdKyQvO1xyXG4gICAgY29uc3QgaW5wdXRDaGFyID0gZS5rZXk7XHJcbiAgICBpZiAoXHJcbiAgICAgIChpbnB1dENoYXIgIT0gJ0JhY2tzcGFjZScgJiZcclxuICAgICAgICBpbnB1dENoYXIgIT0gJ0JhY2tzcGFjZScgJiZcclxuICAgICAgICBpbnB1dENoYXIgIT0gJ1RhYicgJiZcclxuICAgICAgICBpbnB1dENoYXIgIT0gJ0VudGVyJyAmJlxyXG4gICAgICAgIGlucHV0Q2hhciAhPSAnRXNjYXBlJyAmJlxyXG4gICAgICAgIGlucHV0Q2hhciAhPSAnQXJyb3dEb3duJyAmJlxyXG4gICAgICAgIGlucHV0Q2hhciAhPSAnQXJyb3dVcCcpIHx8XHJcbiAgICAgIGUuY29kZSA9PT0gJ1NwYWNlJyB8fFxyXG4gICAgICBlLmN0cmxLZXkgPT0gdHJ1ZVxyXG4gICAgKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgZS5rZXkgPT09ICdCYWNrc3BhY2UnICYmXHJcbiAgICAgIGUudHlwZSA9PT0gJ2tleWRvd24nICYmXHJcbiAgICAgICgodGhpcy5hbGxvd051bGwgPT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHx8ICh0aGlzLmFsbG93TnVsbCA9PT0gZmFsc2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wb3AoKTtcclxuICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50ZXh0Qm94U2VsZWN0Qm94LmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBJTlBVVCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKTtcclxuICAgIGlmICh0aGlzLmlzQ2hhcihlLmtleSkgJiYgdGhpcy5hbGxvd1NlYXJjaCAmJiBlLmN0cmxLZXkgPT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlcmNoQm94KSB7XHJcbiAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAwKTtcclxuICAgICAgdGhpcy50ZXh0ID0gZS5rZXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICB0aGlzLnRleHQgPSBudWxsO1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudGV4dEJveFNlbGVjdEJveC5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuICAgIGlmICgoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpICYmIHRoaXMuZ2V0SXRlbXMoKS5sZW5ndGggPiAwICYmIGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1CeUluZGV4KHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCArIChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bi5pc09wZW4pIHtcclxuICAgICAgICAgIC8vICB0aGlzLnNldFNlbGVjdGVkSW5kZXgoKGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSkpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEluZGV4KGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZXJjaEJveCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXJjaEJveC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbigpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZXJjaEJveCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXJjaEJveC5mb2N1cygpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdrZXlkb3duJyAmJiBlLmtleSA9PSAnRW50ZXInICYmIHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XHJcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0gPT09IHRoaXMuaXRlbXNGaWx0ZXJlZFt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdW3RoaXMudmFsdWVGaWVsZF0pLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIHRoaXMubW9kZSA9PSAnbXVsdGlwbGUnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hbGxvd051bGwgPT0gdHJ1ZSB8fCAodGhpcy5hbGxvd051bGwgPT0gZmFsc2UgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGMpID0+XHJcbiAgICAgICAgICAgICAgICAgIGMgIT09XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKSlbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLnZhbHVlRmllbGRdICE9PSB0aGlzLml0ZW1zW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1bdGhpcy52YWx1ZUZpZWxkXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNGaWx0ZXJlZC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2godGhpcy5pdGVtc0ZpbHRlcmVkWzBdKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNGaWx0ZXJlZFt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2godGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy5pdGVtc0ZpbHRlcmVkLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zRmlsdGVyZWQsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRCb3hTZWxlY3RCb3guZm9jdXMoKTtcclxuICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRleHRib3guZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkSXRlbUJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IGl0ZW0gPSBbXTtcclxuICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcclxuICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKTtcclxuXHJcbiAgICAgIGl0ZW0gPSB0aGlzLml0ZW1zRmlsdGVyZWRbaW5kZXhdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbSA9IHRoaXMuaXRlbXNbaW5kZXhdO1xyXG4gICAgfVxyXG4gICAgLy9cclxuICAgIC8vICBjb25zdCBpdGVtID0gdGhpcy50ZXh0ID8gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKVtpbmRleF0gOiB0aGlzLml0ZW1zW2luZGV4XTtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtcyhbaXRlbV0sIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRJbmRleCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMudGV4dCAmJiB0aGlzLnRleHQgIT09ICcnXHJcbiAgICAgID8gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKVxyXG4gICAgICA6IHRoaXMuaXRlbXM7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1TZWxlY3RlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLnZhbHVlRmllbGRdID09PSBpdGVtW3RoaXMudmFsdWVGaWVsZF0pLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGl0ZW1zU3RhdHVzT2JzZXJ2ZXI6IGFueTtcclxuICBwcml2YXRlIHdhaXRGb3JEYXRhKGNhbGxiYWNrZm46ICgpID0+IHZvaWQpIHtcclxuICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICBjYWxsYmFja2ZuKCk7XHJcbiAgICB9IGVsc2UgaWYgKCF0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcclxuICAgICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pdGVtc1N0YXR1c09ic2VydmVyID0gb2JzZXJ2ZXI7XHJcbiAgICAgIH0pXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXHJcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XHJcbiAgICAgICAgICBjYWxsYmFja2ZuKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|