igniteui-angular 18.2.16 → 18.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/calendar/days-view/day-item.component.mjs +3 -2
- package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +2 -2
- package/esm2022/lib/services/exporter-common/base-export-service.mjs +5 -6
- package/esm2022/lib/simple-combo/simple-combo.component.mjs +2 -3
- package/fesm2022/igniteui-angular.mjs +8 -9
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/calendar/_calendar-theme.scss +25 -25
- package/lib/core/styles/components/chip/_chip-theme.scss +3 -1
- package/lib/core/styles/components/combo/_combo-theme.scss +8 -0
- package/lib/services/exporter-common/base-export-service.d.ts +1 -0
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -39,7 +39,8 @@ export class IgxDayItemComponent {
|
|
|
39
39
|
return this.elementRef.nativeElement;
|
|
40
40
|
}
|
|
41
41
|
get isSelectedCSS() {
|
|
42
|
-
const selectable = !this.isInactive ||
|
|
42
|
+
const selectable = !this.isInactive || this.isWithinPreviewRange ||
|
|
43
|
+
(this.isWithinRange && this.selection === "range");
|
|
43
44
|
return !this.isDisabled && selectable && this.selected;
|
|
44
45
|
}
|
|
45
46
|
get isInactive() {
|
|
@@ -197,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
197
198
|
type: HostBinding,
|
|
198
199
|
args: ['class.igx-days-view__date--single']
|
|
199
200
|
}] } });
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2RheXMtdmlldy9kYXktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvZGF5cy12aWV3L2RheS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFjLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUUvRjs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQkFBbUI7SUFVNUI7OztPQUdHO0lBQ0gsSUFDVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUSxDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQStCRCxJQUFZLFdBQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3JELENBQUM7SUFjRCxJ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Q0FBMEM7Z0JBTTVDLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsb0NBQW9DO2dCQVV0QyxhQUFhO3NCQUR2QixXQUFXO3VCQUFDLHFDQUFxQztnQkFNdkMsaUJBQWlCO3NCQUQzQixXQUFXO3VCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgRWxlbWVudFJlZiwgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbGVuZGFyU2VsZWN0aW9uIH0gZnJvbSAnLi4vY2FsZW5kYXInO1xuaW1wb3J0IHsgRGF0ZVJhbmdlRGVzY3JpcHRvciB9IGZyb20gJy4uLy4uL2NvcmUvZGF0ZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXkgfSBmcm9tICcuLi9jb21tb24vbW9kZWwnXG5pbXBvcnQgeyBhcmVTYW1lTW9udGgsIGlzTmV4dE1vbnRoLCBpc1ByZXZpb3VzTW9udGgsIGlzRGF0ZUluUmFuZ2VzIH0gZnJvbSAnLi4vY29tbW9uL2hlbHBlcnMnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZGF5LWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnZGF5LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4RGF5SXRlbUNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGF0ZTogQ2FsZW5kYXJEYXk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aWV3RGF0ZTogRGF0ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlbGVjdGlvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGRheSBpcyBzZWxlY3RlZFxuICAgICAqXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBkYXlcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZERhdGVzOiBEYXRlUmFuZ2VEZXNjcmlwdG9yW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGVjaWFsRGF0ZXM6IERhdGVSYW5nZURlc2NyaXB0b3JbXTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBoaWRlT3V0c2lkZURheXMgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0tbGFzdCcpXG4gICAgcHVibGljIGlzTGFzdEluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0tZmlyc3QnKVxuICAgIHB1YmxpYyBpc0ZpcnN0SW5SYW5nZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGlzV2l0aGluUmFuZ2UgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBpc1dpdGhpblByZXZpZXdSYW5nZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGhpZGVMZWFkaW5nRGF5cyA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGhpZGVUcmFpbGluZ0RheXMgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZ2V0IGhpZGVMZWFkaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlTGVhZGluZ0RheXMgJiYgdGhpcy5pc1ByZXZpb3VzTW9udGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaGlkZVRyYWlsaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlVHJhaWxpbmdEYXlzICYmIHRoaXMuaXNOZXh0TW9udGg7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGVTZWxlY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyRGF5PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vdXNlRW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbW91c2VMZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBtb3VzZURvd24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IGlzQ3VycmVudE1vbnRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYXJlU2FtZU1vbnRoKHRoaXMuZGF0ZSwgdGhpcy52aWV3RGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1ByZXZpb3VzTW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc1ByZXZpb3VzTW9udGgodGhpcy5kYXRlLCB0aGlzLnZpZXdEYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTmV4dE1vbnRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOZXh0TW9udGgodGhpcy5kYXRlLCB0aGlzLnZpZXdEYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLWFjdGl2ZScpXG4gICAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLXNlbGVjdGVkJylcbiAgICBwdWJsaWMgZ2V0IGlzU2VsZWN0ZWRDU1MoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VsZWN0YWJsZSA9XG4gICAgICAgICF0aGlzLmlzSW5hY3RpdmUgfHwgKHRoaXMuaXNXaXRoaW5SYW5nZSAmJiB0aGlzLnNlbGVjdGlvbiA9PT0gXCJyYW5nZVwiKTtcbiAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZCAmJiBzZWxlY3RhYmxlICYmIHRoaXMuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1pbmFjdGl2ZScpXG4gICAgcHVibGljIGdldCBpc0luYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNDdXJyZW50TW9udGg7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1oaWRkZW4nKVxuICAgIHB1YmxpYyBnZXQgaXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5oaWRlTGVhZGluZyB8fCB0aGlzLmhpZGVUcmFpbGluZykgJiYgdGhpcy5pc0luYWN0aXZlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0tY3VycmVudCcpXG4gICAgcHVibGljIGdldCBpc1RvZGF5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNJbmFjdGl2ZSAmJiB0aGlzLmRhdGUuZXF1YWxUbyhDYWxlbmRhckRheS50b2RheSk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS13ZWVrZW5kJylcbiAgICBwdWJsaWMgZ2V0IGlzV2Vla2VuZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZS53ZWVrZW5kO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkRGF0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc0RhdGVJblJhbmdlcyh0aGlzLmRhdGUsIHRoaXMuZGlzYWJsZWREYXRlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0ZvY3VzYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDdXJyZW50TW9udGggJiYgIXRoaXMuaXNIaWRkZW4gJiYgIXRoaXMuaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICB0aGlzLm1vdXNlRW50ZXIuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICAgIHRoaXMubW91c2VMZWF2ZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMubW91c2VEb3duLmVtaXQoKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLXJhbmdlJylcbiAgICBwdWJsaWMgZ2V0IGlzV2l0aGluUmFuZ2VDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc1NpbmdsZVNlbGVjdGlvbiAmJiB0aGlzLmlzV2l0aGluUmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1yYW5nZS1wcmV2aWV3JylcbiAgICBwdWJsaWMgZ2V0IGlzV2l0aGluUHJldmlld1JhbmdlQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNTaW5nbGVTZWxlY3Rpb24gJiYgdGhpcy5pc1dpdGhpblByZXZpZXdSYW5nZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLXNwZWNpYWwnKVxuICAgIHB1YmxpYyBnZXQgaXNTcGVjaWFsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc3BlY2lhbERhdGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIXRoaXMuaXNJbmFjdGl2ZSAmJiBpc0RhdGVJblJhbmdlcyh0aGlzLmRhdGUsIHRoaXMuc3BlY2lhbERhdGVzKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLWRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWRDU1MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSGlkZGVuIHx8IHRoaXMuaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLXNpbmdsZScpXG4gICAgcHVibGljIGdldCBpc1NpbmdsZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uICE9PSBDYWxlbmRhclNlbGVjdGlvbi5SQU5HRTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cbn1cbiIsIjxzcGFuXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzcz1cImlneC1kYXlzLXZpZXdfX2RhdGUtaW5uZXJcIlxuICAgIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4gICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NwYW4+XG4iXX0=
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2RheXMtdmlldy9kYXktaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY2FsZW5kYXIvZGF5cy12aWV3L2RheS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFjLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUUvRjs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQkFBbUI7SUFVNUI7OztPQUdHO0lBQ0gsSUFDVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUSxDQUFDLEtBQVU7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQStCRCxJQUFZLFdBQVc7UUFDbkIsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3JELENBQUM7SUFjRCxJ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QXVCO3NCQURqQyxXQUFXO3VCQUFDLDBDQUEwQztnQkFNNUMsU0FBUztzQkFEbkIsV0FBVzt1QkFBQyxvQ0FBb0M7Z0JBVXRDLGFBQWE7c0JBRHZCLFdBQVc7dUJBQUMscUNBQXFDO2dCQU12QyxpQkFBaUI7c0JBRDNCLFdBQVc7dUJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBFbGVtZW50UmVmLCBib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZWxlY3Rpb24gfSBmcm9tICcuLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBEYXRlUmFuZ2VEZXNjcmlwdG9yIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRlcyc7XG5pbXBvcnQgeyBDYWxlbmRhckRheSB9IGZyb20gJy4uL2NvbW1vbi9tb2RlbCdcbmltcG9ydCB7IGFyZVNhbWVNb250aCwgaXNOZXh0TW9udGgsIGlzUHJldmlvdXNNb250aCwgaXNEYXRlSW5SYW5nZXMgfSBmcm9tICcuLi9jb21tb24vaGVscGVycyc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1kYXktaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICdkYXktaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hEYXlJdGVtQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkYXRlOiBDYWxlbmRhckRheTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpZXdEYXRlOiBEYXRlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgZGF5IGlzIHNlbGVjdGVkXG4gICAgICpcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGRheVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgc2VsZWN0ZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkRGF0ZXM6IERhdGVSYW5nZURlc2NyaXB0b3JbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNwZWNpYWxEYXRlczogRGF0ZVJhbmdlRGVzY3JpcHRvcltdO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGhpZGVPdXRzaWRlRGF5cyA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1sYXN0JylcbiAgICBwdWJsaWMgaXNMYXN0SW5SYW5nZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1maXJzdCcpXG4gICAgcHVibGljIGlzRmlyc3RJblJhbmdlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgaXNXaXRoaW5SYW5nZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGlzV2l0aGluUHJldmlld1JhbmdlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgaGlkZUxlYWRpbmdEYXlzID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgaGlkZVRyYWlsaW5nRGF5cyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBnZXQgaGlkZUxlYWRpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVMZWFkaW5nRGF5cyAmJiB0aGlzLmlzUHJldmlvdXNNb250aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoaWRlVHJhaWxpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVUcmFpbGluZ0RheXMgJiYgdGhpcy5pc05leHRNb250aDtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGF0ZVNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJEYXk+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbW91c2VFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBtb3VzZUxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG1vdXNlRG93biA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBnZXQgaXNDdXJyZW50TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBhcmVTYW1lTW9udGgodGhpcy5kYXRlLCB0aGlzLnZpZXdEYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzUHJldmlvdXNNb250aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzUHJldmlvdXNNb250aCh0aGlzLmRhdGUsIHRoaXMudmlld0RhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNOZXh0TW9udGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05leHRNb250aCh0aGlzLmRhdGUsIHRoaXMudmlld0RhdGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0tYWN0aXZlJylcbiAgICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0tc2VsZWN0ZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNTZWxlY3RlZENTUygpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RhYmxlID1cbiAgICAgICAgIXRoaXMuaXNJbmFjdGl2ZSB8fCB0aGlzLmlzV2l0aGluUHJldmlld1JhbmdlIHx8XG4gICAgICAgICh0aGlzLmlzV2l0aGluUmFuZ2UgJiYgdGhpcy5zZWxlY3Rpb24gPT09IFwicmFuZ2VcIik7XG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQgJiYgc2VsZWN0YWJsZSAmJiB0aGlzLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0taW5hY3RpdmUnKVxuICAgIHB1YmxpYyBnZXQgaXNJbmFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzQ3VycmVudE1vbnRoO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0taGlkZGVuJylcbiAgICBwdWJsaWMgZ2V0IGlzSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuaGlkZUxlYWRpbmcgfHwgdGhpcy5oaWRlVHJhaWxpbmcpICYmIHRoaXMuaXNJbmFjdGl2ZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1kYXlzLXZpZXdfX2RhdGUtLWN1cnJlbnQnKVxuICAgIHB1YmxpYyBnZXQgaXNUb2RheSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzSW5hY3RpdmUgJiYgdGhpcy5kYXRlLmVxdWFsVG8oQ2FsZW5kYXJEYXkudG9kYXkpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0td2Vla2VuZCcpXG4gICAgcHVibGljIGdldCBpc1dlZWtlbmQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUud2Vla2VuZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZERhdGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNEYXRlSW5SYW5nZXModGhpcy5kYXRlLCB0aGlzLmRpc2FibGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNGb2N1c2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzQ3VycmVudE1vbnRoICYmICF0aGlzLmlzSGlkZGVuICYmICF0aGlzLmlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgdGhpcy5tb3VzZUVudGVyLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb3VzZUxlYXZlKCkge1xuICAgICAgICB0aGlzLm1vdXNlTGVhdmUuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm1vdXNlRG93bi5lbWl0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1yYW5nZScpXG4gICAgcHVibGljIGdldCBpc1dpdGhpblJhbmdlQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNTaW5nbGVTZWxlY3Rpb24gJiYgdGhpcy5pc1dpdGhpblJhbmdlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRheXMtdmlld19fZGF0ZS0tcmFuZ2UtcHJldmlldycpXG4gICAgcHVibGljIGdldCBpc1dpdGhpblByZXZpZXdSYW5nZUNTUygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzU2luZ2xlU2VsZWN0aW9uICYmIHRoaXMuaXNXaXRoaW5QcmV2aWV3UmFuZ2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1zcGVjaWFsJylcbiAgICBwdWJsaWMgZ2V0IGlzU3BlY2lhbCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNwZWNpYWxEYXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICF0aGlzLmlzSW5hY3RpdmUgJiYgaXNEYXRlSW5SYW5nZXModGhpcy5kYXRlLCB0aGlzLnNwZWNpYWxEYXRlcyk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCBpc0Rpc2FibGVkQ1NTKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0hpZGRlbiB8fCB0aGlzLmlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZGF5cy12aWV3X19kYXRlLS1zaW5nbGUnKVxuICAgIHB1YmxpYyBnZXQgaXNTaW5nbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAhPT0gQ2FsZW5kYXJTZWxlY3Rpb24uUkFOR0U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XG59XG4iLCI8c3BhblxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgY2xhc3M9XCJpZ3gtZGF5cy12aWV3X19kYXRlLWlubmVyXCJcbiAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIlxuICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9zcGFuPlxuIl19
|
|
@@ -404,7 +404,7 @@ export class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent
|
|
|
404
404
|
modifyExpression(expr) {
|
|
405
405
|
const lowerCaseFilterValues = new Set(Array.from(expr.expression.searchVal).map((value) => value.toLowerCase()));
|
|
406
406
|
this.grid.data.forEach(item => {
|
|
407
|
-
if (lowerCaseFilterValues.has(item[this.column.field]?.toLowerCase())) {
|
|
407
|
+
if (typeof item[this.column.field] === "string" && lowerCaseFilterValues.has(item[this.column.field]?.toLowerCase())) {
|
|
408
408
|
expr.expression.searchVal.add(item[this.column.field]);
|
|
409
409
|
}
|
|
410
410
|
});
|
|
@@ -659,4 +659,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
659
659
|
type: HostBinding,
|
|
660
660
|
args: ['style.max-height']
|
|
661
661
|
}] } });
|
|
662
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtc3R5bGUtZmlsdGVyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtZmlsdGVyaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtZmlsdGVyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0scURBQXFELENBQUM7QUFDMUgsT0FBTyxFQUFnQixVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGNBQWMsRUFBRSx1QkFBdUIsRUFB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T0EsWUFBWTtzQkFEbEIsTUFBTTtnQkFPQSxjQUFjO3NCQURwQixNQUFNO2dCQUlBLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFPeEMsOEJBQThCO3NCQURwQyxZQUFZO3VCQUFDLDhDQUE4QyxFQUFFLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFO2dCQU8vRyw4QkFBOEI7c0JBRHBDLFlBQVk7dUJBQUMsOENBQThDLEVBQUUsRUFBRSxJQUFJLEVBQUUsOENBQThDLEVBQUU7Z0JBTzVHLDRCQUE0QjtzQkFEckMsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPcEUsNEJBQTRCO3NCQURyQyxTQUFTO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU9uRSxNQUFNO3NCQURoQixLQUFLO2dCQTRFSyxTQUFTO3NCQURuQixLQUFLO2dCQXVDSyxTQUFTO3NCQUZuQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3QsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuLi8uLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsLCBmb3JtYXREYXRlLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IElneEZpbHRlckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGVyY2VudCwgZ2V0TG9jYWxlQ3VycmVuY3lDb2RlLCBOZ0lmLCBOZ0NsYXNzLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlRmlsdGVyaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZpbHRlcmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhwcmVzc2lvblVJLCBGaWx0ZXJMaXN0SXRlbSwgZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3QgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBHcmlkVHlwZSwgSUdYX0dSSURfQkFTRSB9IGZyb20gJy4uLy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL292ZXJsYXkvb3ZlcmxheSc7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgSWd4RXhjZWxTdHlsZVNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vZXhjZWwtc3R5bGUtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlQ29uZGl0aW9uYWxGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2V4Y2VsLXN0eWxlLWNvbmRpdGlvbmFsLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RXhjZWxTdHlsZUNsZWFyRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gJy4vZXhjZWwtc3R5bGUtY2xlYXItZmlsdGVycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RXhjZWxTdHlsZVNlbGVjdGluZ0NvbXBvbmVudCB9IGZyb20gJy4vZXhjZWwtc3R5bGUtc2VsZWN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlSGlkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1oaWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IElneEV4Y2VsU3R5bGVQaW5uaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1waW5uaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlTW92aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1tb3ZpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IElneEV4Y2VsU3R5bGVTb3J0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1zb3J0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1oZWFkZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhjZWwtc3R5bGUtY29sdW1uLW9wZXJhdGlvbnMsW2lneEV4Y2VsU3R5bGVDb2x1bW5PcGVyYXRpb25zXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hFeGNlbFN0eWxlQ29sdW1uT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlIHsgfVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lneC1leGNlbC1zdHlsZS1maWx0ZXItb3BlcmF0aW9ucyxbaWd4RXhjZWxTdHlsZUZpbHRlck9wZXJhdGlvbnNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEV4Y2VsU3R5bGVGaWx0ZXJPcGVyYXRpb25zVGVtcGxhdGVEaXJlY3RpdmUgeyB9XG5cbi8qKlxuICogQSBjb21wb25lbnQgdXNlZCBmb3IgcHJlc2VudGluZyBFeGNlbCBzdHlsZSBmaWx0ZXJpbmcgVUkgZm9yIGEgc3BlY2lmaWMgY29sdW1uLlxuICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBHcmlkLCBidXQgY291bGQgYWxzbyBiZSBob3N0ZWQgaW4gYSBjb250YWluZXIgb3V0c2lkZSBvZiBpdC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlneC1ncmlkLWV4Y2VsLXN0eWxlLWZpbHRlcmluZ1xuICogICAgIFtjb2x1bW5dPVwiZ3JpZDEuY29sdW1uc1swXVwiPlxuICogPC9pZ3gtZ3JpZC1leGNlbC1zdHlsZS1maWx0ZXJpbmc+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBCYXNlRmlsdGVyaW5nQ29tcG9uZW50LCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJZ3hHcmlkRXhjZWxTdHlsZUZpbHRlcmluZ0NvbXBvbmVudCkgfV0sXG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1leGNlbC1zdHlsZS1maWx0ZXJpbmcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9leGNlbC1zdHlsZS1maWx0ZXJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneEV4Y2VsU3R5bGVIZWFkZXJDb21wb25lbnQsIE5nSWYsIElneEV4Y2VsU3R5bGVTb3J0aW5nQ29tcG9uZW50LCBJZ3hFeGNlbFN0eWxlTW92aW5nQ29tcG9uZW50LCBJZ3hFeGNlbFN0eWxlUGlubmluZ0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZUhpZGluZ0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZVNlbGVjdGluZ0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZUNsZWFyRmlsdGVyc0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZUNvbmRpdGlvbmFsRmlsdGVyQ29tcG9uZW50LCBJZ3hFeGNlbFN0eWxlU2VhcmNoQ29tcG9uZW50LCBOZ0NsYXNzXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRXhjZWxTdHlsZUZpbHRlcmluZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leGNlbC1maWx0ZXInKVxuICAgIHB1YmxpYyBkZWZhdWx0Q2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZXhjZWwtZmlsdGVyX19zaXppbmcnKVxuICAgIHByb3RlY3RlZCBnZXQgc2hvdWxkQXBwbHlTaXplcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5fbWluSGVpZ2h0IHx8IHRoaXMuX21heEhlaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leGNlbC1maWx0ZXItLWlubGluZScpXG4gICAgcHVibGljIGlubGluZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nRW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzb3J0aW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNvbHVtbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uVHlwZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGxpc3REYXRhTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWFpbkRyb3Bkb3duJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHVibGljIG1haW5Ecm9wZG93bjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhjZWxTdHlsZUNvbHVtbk9wZXJhdGlvbnNUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBJZ3hFeGNlbFN0eWxlQ29sdW1uT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlIH0pXG4gICAgcHVibGljIGV4Y2VsQ29sdW1uT3BlcmF0aW9uc0RpcmVjdGl2ZTogSWd4RXhjZWxTdHlsZUNvbHVtbk9wZXJhdGlvbnNUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeGNlbFN0eWxlRmlsdGVyT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IElneEV4Y2VsU3R5bGVGaWx0ZXJPcGVyYXRpb25zVGVtcGxhdGVEaXJlY3RpdmUgfSlcbiAgICBwdWJsaWMgZXhjZWxGaWx0ZXJPcGVyYXRpb25zRGlyZWN0aXZlOiBJZ3hFeGNlbFN0eWxlRmlsdGVyT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0RXhjZWxDb2x1bW5PcGVyYXRpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRFeGNlbENvbHVtbk9wZXJhdGlvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRFeGNlbEZpbHRlck9wZXJhdGlvbnMnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdEV4Y2VsRmlsdGVyT3BlcmF0aW9uczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNvbHVtbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY29sdW1uKHZhbHVlOiBDb2x1bW5UeXBlKSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLmxpc3REYXRhID0gbmV3IEFycmF5PEZpbHRlckxpc3RJdGVtPigpO1xuICAgICAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KHRoaXMuX2NvbHVtbik7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zPy51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLnJlZ2lzdGVyU1ZHSWNvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zb3J0aW5nQ2hhbmdlZC5lbWl0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHRoaXMuZ3JpZC5jb2x1bW5QaW4uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmNkciBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5ncmlkLmNvbHVtblZpc2liaWxpdHlDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRldGVjdENoYW5nZXMoKSkpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmdyaWQuc29ydGluZ0V4cHJlc3Npb25zQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNvcnRpbmdDaGFuZ2VkLmVtaXQoKSkpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXQoKSkpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmdyaWQuY29sdW1uTW92aW5nRW5kLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBjb2x1bW4uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb2x1bW4oKTogQ29sdW1uVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwcmVzc2lvbnNMaXN0ID0gbmV3IEFycmF5PEV4cHJlc3Npb25VST4oKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0RGF0YSA9IG5ldyBBcnJheTxGaWx0ZXJMaXN0SXRlbT4oKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1bmlxdWVWYWx1ZXM6IElneEZpbHRlckl0ZW1bXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBJZ3hPdmVybGF5U2VydmljZTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVybGF5Q29tcG9uZW50SWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0hpZXJhcmNoaWNhbCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfbWluSGVpZ2h0O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWluaW11bSBoZWlnaHQuXG4gICAgICpcbiAgICAgKiBTZXR0aW5nIHZhbHVlIGluIHRlbXBsYXRlOlxuICAgICAqIGBgYHRzXG4gICAgICogW21pbkhlaWdodF09XCInPG51bWJlcj48dW5pdCAocHh8cmVtfGV0Yy4uKT4nXCJcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEV4YW1wbGUgZm9yIHNldHRpbmcgYSB2YWx1ZTpcbiAgICAgKiBgYGB0c1xuICAgICAqIFttaW5IZWlnaHRdPVwiJzcwMHB4J1wiXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1pbkhlaWdodCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fbWluSGVpZ2h0IHx8IHRoaXMuX21pbkhlaWdodCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21pbkhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1pbmltdW0gaGVpZ2h0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgbWluSGVpZ2h0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWluSGVpZ2h0ID0gdmFsdWU7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIF9tYXhIZWlnaHQ6IHN0cmluZztcbiAgICBwcml2YXRlIGNvbnRhaW5zTnVsbE9yRW1wdHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHNlbGVjdEFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICBwcml2YXRlIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGZpbHRlclZhbHVlcyA9IG5ldyBTZXQ8YW55PigpO1xuICAgIHByaXZhdGUgX2NvbHVtbjogQ29sdW1uVHlwZTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9vcmlnaW5hbERpc3BsYXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1heGltdW0gaGVpZ2h0LlxuICAgICAqXG4gICAgICogU2V0dGluZyB2YWx1ZSBpbiB0ZW1wbGF0ZTpcbiAgICAgKiBgYGB0c1xuICAgICAqIFttYXhIZWlnaHRdPVwiJzxudW1iZXI+PHVuaXQgKHB4fHJlbXxldGMuLik+J1wiXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBFeGFtcGxlIGZvciBzZXR0aW5nIGEgdmFsdWU6XG4gICAgICogYGBgdHNcbiAgICAgKiBbbWF4SGVpZ2h0XT1cIic3MDBweCdcIlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JylcbiAgICBwdWJsaWMgZ2V0IG1heEhlaWdodCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWF4SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBoZWlnaHQuXG4gICAgICovXG4gICAgcHVibGljIHNldCBtYXhIZWlnaHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tYXhIZWlnaHQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ3JpZCgpOiBHcmlkVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbj8uZ3JpZCA/PyB0aGlzLmdyaWRBUEk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKVxuICAgICAgICBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcm90ZWN0ZWQgZ3JpZEFQST86IEdyaWRUeXBlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjZHIsIGVsZW1lbnQsIHBsYXRmb3JtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBkZWxldGUgdGhpcy5vdmVybGF5Q29tcG9uZW50SWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbXB1dGVkU3R5bGVzID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGluaXRpYWxpemUoY29sdW1uOiBDb2x1bW5UeXBlLCBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICAgICAgaWYgKHRoaXMuX29yaWdpbmFsRGlzcGxheSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHRoaXMuX29yaWdpbmFsRGlzcGxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZ3JpZC5jb2x1bW5Nb3Zpbmcuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VEcm9wZG93bigpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25QaW4oKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNvbHVtbi5waW5uZWQgPSAhdGhpcy5jb2x1bW4ucGlubmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uU2VsZWN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RDb2x1bW4odGhpcy5jb2x1bW4uZmllbGQsIHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLnNpbmdsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdENvbHVtbih0aGlzLmNvbHVtbi5maWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2x1bW5TZWxlY3RhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkPy5jb2x1bW5TZWxlY3Rpb24gIT09IEdyaWRTZWxlY3Rpb25Nb2RlLm5vbmUgJiYgdGhpcy5jb2x1bW4/LnNlbGVjdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25IaWRlVG9nZ2xlKCkge1xuICAgICAgICB0aGlzLmNvbHVtbi50b2dnbGVWaXNpYmlsaXR5KCk7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlDb21wb25lbnRJZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VEcm9wZG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheUNvbXBvbmVudElkKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmhpZGUodGhpcy5vdmVybGF5Q29tcG9uZW50SWQpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5Q29tcG9uZW50SWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25LZXlEb3duKGV2ZW50QXJnczogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0ZpbHRlcmluZ0tleUNvbWJvKGV2ZW50QXJncykpIHtcbiAgICAgICAgICAgIGV2ZW50QXJncy5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnRBcmdzLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKSB7XG4gICAgICAgIHRoaXMuX29yaWdpbmFsRGlzcGxheSA9IHRoaXMuY29tcHV0ZWRTdHlsZXMuZGlzcGxheTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXRlY3RDaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbXB1dGVkU3R5bGVzO1xuXG4gICAgcHJvdGVjdGVkIGdldCBzaXplKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3R5bGVzPy5nZXRQcm9wZXJ0eVZhbHVlKCctLWNvbXBvbmVudC1zaXplJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25zTGlzdCA9IG5ldyBBcnJheTxFeHByZXNzaW9uVUk+KCk7XG4gICAgICAgIGdlbmVyYXRlRXhwcmVzc2lvbnNMaXN0KHRoaXMuY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgdGhpcy5ncmlkLmZpbHRlcmluZ0xvZ2ljLCB0aGlzLmV4cHJlc3Npb25zTGlzdCk7XG4gICAgICAgIHRoaXMucG9wdWxhdGVDb2x1bW5EYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcmVFeHByZXNzaW9uc1NlbGVjdGFibGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmV4cHJlc3Npb25zTGlzdC5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICh0aGlzLmV4cHJlc3Npb25zTGlzdFswXS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZXF1YWxzJyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnNMaXN0WzBdLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICdhdCcgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zTGlzdFswXS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAndHJ1ZScgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zTGlzdFswXS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZmFsc2UnIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uc0xpc3RbMF0uZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2VtcHR5JyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnNMaXN0WzBdLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICdpbicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGFibGVFeHByZXNzaW9uc0NvdW50ID0gdGhpcy5leHByZXNzaW9uc0xpc3QuZmlsdGVyKGV4cCA9PlxuICAgICAgICAgICAgKGV4cC5iZWZvcmVPcGVyYXRvciA9PT0gMSB8fCBleHAuYWZ0ZXJPcGVyYXRvciA9PT0gMSkgJiZcbiAgICAgICAgICAgIChleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2VxdWFscycgfHxcbiAgICAgICAgICAgICAgICBleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2F0JyB8fFxuICAgICAgICAgICAgICAgIGV4cC5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAndHJ1ZScgfHxcbiAgICAgICAgICAgICAgICBleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2ZhbHNlJyB8fFxuICAgICAgICAgICAgICAgIGV4cC5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZW1wdHknIHx8XG4gICAgICAgICAgICAgICAgZXhwLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICdpbicpKS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGFibGVFeHByZXNzaW9uc0NvdW50ID09PSB0aGlzLmV4cHJlc3Npb25zTGlzdC5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZUNvbHVtbkRhdGEoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkLnVuaXF1ZUNvbHVtblZhbHVlc1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbHVtblZhbHVlc1JlbW90ZWx5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbHVtblZhbHVlc0Zyb21EYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckNvbHVtblZhbHVlc1JlbW90ZWx5KCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGFydC5lbWl0KCk7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gdGhpcy5nZXRDb2x1bW5GaWx0ZXJFeHByZXNzaW9uc1RyZWUoKTtcblxuICAgICAgICBjb25zdCBwcmV2Q29sdW1uID0gdGhpcy5jb2x1bW47XG4gICAgICAgIHRoaXMuZ3JpZC51bmlxdWVDb2x1bW5WYWx1ZXNTdHJhdGVneSh0aGlzLmNvbHVtbiwgZXhwcmVzc2lvbnNUcmVlLCAodmFsdWVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbHVtbiB8fCB0aGlzLmNvbHVtbiAhPT0gcHJldkNvbHVtbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB2YWx1ZXMubWFwKHYgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICB0aGlzLnVuaXF1ZVZhbHVlcyA9IHRoaXMuY29sdW1uLnNvcnRTdHJhdGVneS5zb3J0KGl0ZW1zLCAndmFsdWUnLCBTb3J0aW5nRGlyZWN0aW9uLkFzYywgdGhpcy5jb2x1bW4uc29ydGluZ0lnbm9yZUNhc2UsXG4gICAgICAgICAgICAgICAgKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNvbHZlZFZhbHVlID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSBuZXcgRGF0ZSgpLnNldEhvdXJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLmdldFNlY29uZHMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlclZhbHVlcygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRW5kLmVtaXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDb2x1bW5WYWx1ZXNGcm9tRGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhcnQuZW1pdCgpO1xuXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZSA9IHRoaXMuZ2V0Q29sdW1uRmlsdGVyRXhwcmVzc2lvbnNUcmVlKCk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmdyaWQuZmlsdGVyU3RyYXRlZ3kuZ2V0RmlsdGVySXRlbXModGhpcy5jb2x1bW4sIGV4cHJlc3Npb25zVHJlZSk7XG4gICAgICAgIHByb21pc2UudGhlbigoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWVyYXJjaGljYWwgPSBpdGVtcy5sZW5ndGggPiAwICYmIGl0ZW1zLnNvbWUoaSA9PiBpLmNoaWxkcmVuICYmIGkuY2hpbGRyZW4ubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICB0aGlzLnVuaXF1ZVZhbHVlcyA9IGl0ZW1zO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJWYWx1ZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0VuZC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLnNvcnRpbmdDaGFuZ2VkLmVtaXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVzID0gdGhpcy5nZW5lcmF0ZUZpbHRlclZhbHVlcygpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlTGlzdERhdGEoKTtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uc0xpc3QuZm9yRWFjaChleHByID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlN0cmluZyAmJiB0aGlzLmNvbHVtbi5maWx0ZXJpbmdJZ25vcmVDYXNlXG4gICAgICAgICAgICAgICAgJiYgZXhwci5leHByZXNzaW9uLnNlYXJjaFZhbCAmJiBleHByLmV4cHJlc3Npb24uc2VhcmNoVmFsIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlFeHByZXNzaW9uKGV4cHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlRmlsdGVyVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBmb3JtYXRWYWx1ZSA9ICh2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcblxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9EYXRlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBwcm9jZXNzRXhwcmVzc2lvbiA9IChhcnI6IGFueVtdLCBlOiBhbnkpOiBhbnlbXSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnaW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hcnIsIC4uLkFycmF5LmZyb20oKGUuZXhwcmVzc2lvbi5zZWFyY2hWYWwgYXMgU2V0PGFueT4pLnZhbHVlcygpKS5tYXAodiA9PiBmb3JtYXRWYWx1ZSh2KSldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFsuLi5hcnIsIGZvcm1hdFZhbHVlKGUuZXhwcmVzc2lvbi5zZWFyY2hWYWwpXTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSBuZXcgU2V0PGFueT4odGhpcy5leHByZXNzaW9uc0xpc3QucmVkdWNlKHByb2Nlc3NFeHByZXNzaW9uLCBbXSkpO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb2RpZnlFeHByZXNzaW9uKGV4cHI6IEV4cHJlc3Npb25VSSkge1xuICAgICAgICBjb25zdCBsb3dlckNhc2VGaWx0ZXJWYWx1ZXMgPSBuZXcgU2V0KEFycmF5LmZyb20oZXhwci5leHByZXNzaW9uLnNlYXJjaFZhbCkubWFwKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICAgICAgdGhpcy5ncmlkLmRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChsb3dlckNhc2VGaWx0ZXJWYWx1ZXMuaGFzKGl0ZW1bdGhpcy5jb2x1bW4uZmllbGRdPy50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICAgIGV4cHIuZXhwcmVzc2lvbi5zZWFyY2hWYWwuYWRkKGl0ZW1bdGhpcy5jb2x1bW4uZmllbGRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUxpc3REYXRhKCkge1xuICAgICAgICB0aGlzLmxpc3REYXRhID0gbmV3IEFycmF5PEZpbHRlckxpc3RJdGVtPigpO1xuICAgICAgICBjb25zdCBzaG91bGRVcGRhdGVTZWxlY3Rpb24gPSB0aGlzLmFyZUV4cHJlc3Npb25zU2VsZWN0YWJsZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkJvb2xlYW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWRkQm9vbGVhbkl0ZW1zKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZEl0ZW1zKHNob3VsZFVwZGF0ZVNlbGVjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNIaWVyYXJjaGljYWwgJiYgdGhpcy5jb250YWluc051bGxPckVtcHR5KSB7XG4gICAgICAgICAgICBjb25zdCBibGFua3NJdGVtID0gdGhpcy5nZW5lcmF0ZUJsYW5rc0l0ZW0oc2hvdWxkVXBkYXRlU2VsZWN0aW9uKTtcbiAgICAgICAgICAgIHRoaXMubGlzdERhdGEudW5zaGlmdChibGFua3NJdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxpc3REYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkU2VsZWN0QWxsSXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy5jZHIgYXMgYW55KS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGlzdERhdGFMb2FkZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uRmlsdGVyRXhwcmVzc2lvbnNUcmVlKCkge1xuICAgICAgICBjb25zdCBncmlkRXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gdGhpcy5ncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnNUcmVlID0gbmV3IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZShncmlkRXhwcmVzc2lvbnNUcmVlLm9wZXJhdG9yLCBncmlkRXhwcmVzc2lvbnNUcmVlLmZpZWxkTmFtZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcGVyYW5kIG9mIGdyaWRFeHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgIGlmIChvcGVyYW5kIGluc3RhbmNlb2YgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uRXhwclRyZWUgPSBvcGVyYW5kIGFzIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uRXhwclRyZWUuZmllbGROYW1lID09PSB0aGlzLmNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMucHVzaChvcGVyYW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleHByZXNzaW9uc1RyZWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCb29sZWFuSXRlbXMoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51bmlxdWVWYWx1ZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckxpc3RJdGVtID0gbmV3IEZpbHRlckxpc3RJdGVtKCk7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2x1bW4uZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSAmJiB0aGlzLmV4cHJlc3Npb25zTGlzdC5maW5kKGV4cCA9PiBleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ3RydWUnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc0ZpbHRlcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IGZhbHNlICYmIHRoaXMuZXhwcmVzc2lvbnNMaXN0LmZpbmQoZXhwID0+IGV4cC5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZmFsc2UnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc0ZpbHRlcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc0ZpbHRlcmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0ubGFiZWwgPSB2YWx1ZSA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZmlsdGVyX3RydWUgOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2ZpbHRlcl9mYWxzZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0RGF0YS5wdXNoKGZpbHRlckxpc3RJdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWluc051bGxPckVtcHR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRJdGVtcyhzaG91bGRVcGRhdGVTZWxlY3Rpb246IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvbnRhaW5zTnVsbE9yRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IHRoaXMuZ2VuZXJhdGVGaWx0ZXJMaXN0SXRlbXModGhpcy51bmlxdWVWYWx1ZXMsIHNob3VsZFVwZGF0ZVNlbGVjdGlvbik7XG4gICAgICAgIHRoaXMuY29udGFpbnNOdWxsT3JFbXB0eSA9IHRoaXMudW5pcXVlVmFsdWVzLmxlbmd0aCA+IHRoaXMubGlzdERhdGEubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVGaWx0ZXJMaXN0SXRlbXModmFsdWVzOiBJZ3hGaWx0ZXJJdGVtW10sIHNob3VsZFVwZGF0ZVNlbGVjdGlvbjogYm9vbGVhbiwgcGFyZW50PzogRmlsdGVyTGlzdEl0ZW0pIHtcbiAgICAgICAgY29uc3QgZmlsdGVyTGlzdEl0ZW1zID0gW107XG4gICAgICAgIHZhbHVlcz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1ZhbHVlID0gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJyc7XG5cbiAgICAgICAgICAgIGlmIChoYXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlckxpc3RJdGVtID0gbmV3IEZpbHRlckxpc3RJdGVtKCk7XG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0ucGFyZW50ID0gcGFyZW50O1xuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0ubGFiZWwgPSBlbGVtZW50LmxhYmVsICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmxhYmVsIDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJJdGVtTGFiZWwodmFsdWUpO1xuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc0ZpbHRlcmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pc0ZpbHRlcmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwclZhbHVlID0gdGhpcy5nZXRFeHByZXNzaW9uVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVzLmhhcyhleHByVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uY2hpbGRyZW4gPSB0aGlzLmdlbmVyYXRlRmlsdGVyTGlzdEl0ZW1zKGVsZW1lbnQuY2hpbGRyZW4gPz8gZWxlbWVudC52YWx1ZT8uY2hpbGRyZW4sIHNob3VsZFVwZGF0ZVNlbGVjdGlvbiwgZmlsdGVyTGlzdEl0ZW0pO1xuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtcy5wdXNoKGZpbHRlckxpc3RJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlckxpc3RJdGVtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFNlbGVjdEFsbEl0ZW0oKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEFsbCA9IG5ldyBGaWx0ZXJMaXN0SXRlbSgpO1xuICAgICAgICBzZWxlY3RBbGwuaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQ7XG4gICAgICAgIHNlbGVjdEFsbC52YWx1ZSA9IHRoaXMuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbDtcbiAgICAgICAgc2VsZWN0QWxsLmxhYmVsID0gdGhpcy5ncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsO1xuICAgICAgICBzZWxlY3RBbGwuaW5kZXRlcm1pbmF0ZSA9IHRoaXMuc2VsZWN0QWxsSW5kZXRlcm1pbmF0ZTtcbiAgICAgICAgc2VsZWN0QWxsLmlzU3BlY2lhbCA9IHRydWU7XG4gICAgICAgIHNlbGVjdEFsbC5pc0ZpbHRlcmVkID0gdGhpcy5zZWxlY3RBbGxTZWxlY3RlZDtcbiAgICAgICAgdGhpcy5saXN0RGF0YS51bnNoaWZ0KHNlbGVjdEFsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUJsYW5rc0l0ZW0oc2hvdWxkVXBkYXRlU2VsZWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGJsYW5rcyA9IG5ldyBGaWx0ZXJMaXN0SXRlbSgpO1xuICAgICAgICBpZiAodGhpcy5jb2x1bW4uZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICBpZiAoc2hvdWxkVXBkYXRlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVzLmhhcyhudWxsKSkge1xuICAgICAgICAgICAgICAgICAgICBibGFua3MuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJsYW5rcy5pc0ZpbHRlcmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBibGFua3MuaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBibGFua3MuaXNGaWx0ZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJsYW5rcy5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJsYW5rcy5pc0ZpbHRlcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBibGFua3MudmFsdWUgPSBudWxsO1xuICAgICAgICBibGFua3MubGFiZWwgPSB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX2JsYW5rcztcbiAgICAgICAgYmxhbmtzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgYmxhbmtzLmlzU3BlY2lhbCA9IHRydWU7XG4gICAgICAgIGJsYW5rcy5pc0JsYW5rcyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIGJsYW5rcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbHRlckl0ZW1MYWJlbCh2YWx1ZTogYW55LCBhcHBseUZvcm1hdHRlciA9IHRydWUsIGRhdGE/OiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLmZvcm1hdHRlcikge1xuICAgICAgICAgICAgaWYgKGFwcGx5Rm9ybWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZvcm1hdHRlcih2YWx1ZSwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGRpc3BsYXksIGZvcm1hdCwgZGlnaXRzSW5mbywgY3VycmVuY3lDb2RlLCB0aW1lem9uZSB9ID0gdGhpcy5jb2x1bW4ucGlwZUFyZ3M7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZ3JpZC5sb2NhbGU7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZTpcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lOlxuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuVGltZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZSh2YWx1ZSwgZm9ybWF0LCBsb2NhbGUsIHRpbWV6b25lKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRDdXJyZW5jeSh2YWx1ZSwgY3VycmVuY3lDb2RlIHx8IGdldExvY2FsZUN1cnJlbmN5Q29kZShsb2NhbGUpLCBkaXNwbGF5LCBkaWdpdHNJbmZvLCBsb2NhbGUpO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXIodmFsdWUsIGxvY2FsZSwgZGlnaXRzSW5mbyk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5QZXJjZW50OlxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRQZXJjZW50KHZhbHVlLCBsb2NhbGUsIGRpZ2l0c0luZm8pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEV4cHJlc3Npb25WYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKS50b0RhdGVTdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29sdW1uLmRhdGFUeXBlID09PSBHcmlkQ29sdW1uRGF0YVR5cGUuVGltZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA/IG5ldyBEYXRlKHZhbHVlKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEV4Y2VsQ29sdW1uT3BlcmF0aW9ucz5cbiAgICA8aWd4LWV4Y2VsLXN0eWxlLWhlYWRlclxuICAgICAgICBbc2hvd0hpZGluZ109XCJzaXplICE9PSAnMycgJiYgIWNvbHVtbj8uZGlzYWJsZUhpZGluZ1wiXG4gICAgICAgIFtzaG93UGlubmluZ109XCJzaXplICE9PSAnMycgJiYgIWNvbHVtbj8uZGlzYWJsZVBpbm5pbmdcIlxuICAgICAgICBbc2hvd1NlbGVjdGluZ109XCJzaXplICE9PSAnMycgJiYgY29sdW1uU2VsZWN0YWJsZSgpXCJcbiAgICA+XG4gICAgPC9pZ3gtZXhjZWwtc3R5bGUtaGVhZGVyPlxuXG4gICAgPGlneC1leGNlbC1zdHlsZS1zb3J0aW5nICpuZ0lmPVwiY29sdW1uPy5zb3J0YWJsZVwiPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLXNvcnRpbmc+XG5cbiAgICA8aWd4LWV4Y2VsLXN0eWxlLW1vdmluZyAqbmdJZj1cImdyaWQ/Lm1vdmluZ1wiPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLW1vdmluZz5cblxuICAgIDxpZ3gtZXhjZWwtc3R5bGUtcGlubmluZyAqbmdJZj1cIiFjb2x1bW4/LmRpc2FibGVQaW5uaW5nICYmIHNpemUgPT09ICczJ1wiPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLXBpbm5pbmc+XG5cbiAgICA8aWd4LWV4Y2VsLXN0eWxlLWhpZGluZyAqbmdJZj1cIiFjb2x1bW4/LmRpc2FibGVIaWRpbmcgJiYgc2l6ZSA9PT0gJzMnXCI+XG4gICAgPC9pZ3gtZXhjZWwtc3R5bGUtaGlkaW5nPlxuXG4gICAgPGlneC1leGNlbC1zdHlsZS1zZWxlY3RpbmcgKm5nSWY9XCJjb2x1bW5TZWxlY3RhYmxlKCkgJiYgc2l6ZSA9PT0gJzMnXCI+XG4gICAgPC9pZ3gtZXhjZWwtc3R5bGUtc2VsZWN0aW5nPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0RXhjZWxGaWx0ZXJPcGVyYXRpb25zPlxuICAgIDxpZ3gtZXhjZWwtc3R5bGUtY2xlYXItZmlsdGVycz5cbiAgICA8L2lneC1leGNlbC1zdHlsZS1jbGVhci1maWx0ZXJzPlxuXG4gICAgPGlneC1leGNlbC1zdHlsZS1jb25kaXRpb25hbC1maWx0ZXI+XG4gICAgPC9pZ3gtZXhjZWwtc3R5bGUtY29uZGl0aW9uYWwtZmlsdGVyPlxuXG4gICAgPGlneC1leGNlbC1zdHlsZS1zZWFyY2g+XG4gICAgPC9pZ3gtZXhjZWwtc3R5bGUtc2VhcmNoPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGFydGljbGUgI21haW5Ecm9wZG93blxuICAgIGNsYXNzPVwiaWd4LWV4Y2VsLWZpbHRlcl9fbWVudVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnaWd4LWV4Y2VsLWZpbHRlcl9fc2l6aW5nJzogc2hvdWxkQXBwbHlTaXplcyxcbiAgICAgICAgJ2lneC1leGNlbC1maWx0ZXJfX21lbnUtLWNvc3knOiBzaXplID09PSAnMicsXG4gICAgICAgICdpZ3gtZXhjZWwtZmlsdGVyX19tZW51LS1jb21wYWN0Jzogc2l6ZSA9PT0gJzEnXG4gICAgfVwiXG4gICAgW2lkXT1cIm92ZXJsYXlDb21wb25lbnRJZFwiXG4gICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cIm1pbkhlaWdodFwiXG4gICAgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCJcbiAgICByb2xlPVwibWVudVwiPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuZXhjZWxDb2x1bW5PcGVyYXRpb25zRGlyZWN0aXZlOyBlbHNlIGRlZmF1bHRFeGNlbENvbHVtbk9wZXJhdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4Y2VsLXN0eWxlLWNvbHVtbi1vcGVyYXRpb25zLFtpZ3hFeGNlbFN0eWxlQ29sdW1uT3BlcmF0aW9uc11cIj5cbiAgICAgICAgPC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoaXMuZXhjZWxGaWx0ZXJPcGVyYXRpb25zRGlyZWN0aXZlOyBlbHNlIGRlZmF1bHRFeGNlbEZpbHRlck9wZXJhdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4Y2VsLXN0eWxlLWZpbHRlci1vcGVyYXRpb25zLFtpZ3hFeGNlbFN0eWxlRmlsdGVyT3BlcmF0aW9uc11cIj5cbiAgICAgICAgPC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9hcnRpY2xlPlxuIl19
|
|
662
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtc3R5bGUtZmlsdGVyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtZmlsdGVyaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZXhjZWwtc3R5bGUvZXhjZWwtc3R5bGUtZmlsdGVyaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0scURBQXFELENBQUM7QUFDMUgsT0FBTyxFQUFnQixVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQWdCLGNBQWMsRUFBRSx1QkFBdUIsRUFB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QkFEaEIsTUFBTTtnQkFPQSxXQUFXO3NCQURqQixNQUFNO2dCQU9BLGNBQWM7c0JBRHBCLE1BQU07Z0JBT0EsWUFBWTtzQkFEbEIsTUFBTTtnQkFPQSxjQUFjO3NCQURwQixNQUFNO2dCQUlBLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFPeEMsOEJBQThCO3NCQURwQyxZQUFZO3VCQUFDLDhDQUE4QyxFQUFFLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFO2dCQU8vRyw4QkFBOEI7c0JBRHBDLFlBQVk7dUJBQUMsOENBQThDLEVBQUUsRUFBRSxJQUFJLEVBQUUsOENBQThDLEVBQUU7Z0JBTzVHLDRCQUE0QjtzQkFEckMsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPcEUsNEJBQTRCO3NCQURyQyxTQUFTO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU9uRSxNQUFNO3NCQURoQixLQUFLO2dCQTRFSyxTQUFTO3NCQURuQixLQUFLO2dCQXVDSyxTQUFTO3NCQUZuQixLQUFLOztzQkFDTCxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3QsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuLi8uLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUnO1xuaW1wb3J0IHsgUGxhdGZvcm1VdGlsLCBmb3JtYXREYXRlLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IElneEZpbHRlckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0UGVyY2VudCwgZ2V0TG9jYWxlQ3VycmVuY3lDb2RlLCBOZ0lmLCBOZ0NsYXNzLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCYXNlRmlsdGVyaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZpbHRlcmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhwcmVzc2lvblVJLCBGaWx0ZXJMaXN0SXRlbSwgZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3QgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBHcmlkVHlwZSwgSUdYX0dSSURfQkFTRSB9IGZyb20gJy4uLy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL292ZXJsYXkvb3ZlcmxheSc7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgSWd4RXhjZWxTdHlsZVNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4vZXhjZWwtc3R5bGUtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlQ29uZGl0aW9uYWxGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2V4Y2VsLXN0eWxlLWNvbmRpdGlvbmFsLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RXhjZWxTdHlsZUNsZWFyRmlsdGVyc0NvbXBvbmVudCB9IGZyb20gJy4vZXhjZWwtc3R5bGUtY2xlYXItZmlsdGVycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4RXhjZWxTdHlsZVNlbGVjdGluZ0NvbXBvbmVudCB9IGZyb20gJy4vZXhjZWwtc3R5bGUtc2VsZWN0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlSGlkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1oaWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IElneEV4Y2VsU3R5bGVQaW5uaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1waW5uaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlTW92aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1tb3ZpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IElneEV4Y2VsU3R5bGVTb3J0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1zb3J0aW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hFeGNlbFN0eWxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9leGNlbC1zdHlsZS1oZWFkZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZXhjZWwtc3R5bGUtY29sdW1uLW9wZXJhdGlvbnMsW2lneEV4Y2VsU3R5bGVDb2x1bW5PcGVyYXRpb25zXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hFeGNlbFN0eWxlQ29sdW1uT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlIHsgfVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lneC1leGNlbC1zdHlsZS1maWx0ZXItb3BlcmF0aW9ucyxbaWd4RXhjZWxTdHlsZUZpbHRlck9wZXJhdGlvbnNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEV4Y2VsU3R5bGVGaWx0ZXJPcGVyYXRpb25zVGVtcGxhdGVEaXJlY3RpdmUgeyB9XG5cbi8qKlxuICogQSBjb21wb25lbnQgdXNlZCBmb3IgcHJlc2VudGluZyBFeGNlbCBzdHlsZSBmaWx0ZXJpbmcgVUkgZm9yIGEgc3BlY2lmaWMgY29sdW1uLlxuICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IGluIHRoZSBHcmlkLCBidXQgY291bGQgYWxzbyBiZSBob3N0ZWQgaW4gYSBjb250YWluZXIgb3V0c2lkZSBvZiBpdC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgaHRtbFxuICogPGlneC1ncmlkLWV4Y2VsLXN0eWxlLWZpbHRlcmluZ1xuICogICAgIFtjb2x1bW5dPVwiZ3JpZDEuY29sdW1uc1swXVwiPlxuICogPC9pZ3gtZ3JpZC1leGNlbC1zdHlsZS1maWx0ZXJpbmc+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBCYXNlRmlsdGVyaW5nQ29tcG9uZW50LCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJZ3hHcmlkRXhjZWxTdHlsZUZpbHRlcmluZ0NvbXBvbmVudCkgfV0sXG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1leGNlbC1zdHlsZS1maWx0ZXJpbmcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9leGNlbC1zdHlsZS1maWx0ZXJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneEV4Y2VsU3R5bGVIZWFkZXJDb21wb25lbnQsIE5nSWYsIElneEV4Y2VsU3R5bGVTb3J0aW5nQ29tcG9uZW50LCBJZ3hFeGNlbFN0eWxlTW92aW5nQ29tcG9uZW50LCBJZ3hFeGNlbFN0eWxlUGlubmluZ0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZUhpZGluZ0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZVNlbGVjdGluZ0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZUNsZWFyRmlsdGVyc0NvbXBvbmVudCwgSWd4RXhjZWxTdHlsZUNvbmRpdGlvbmFsRmlsdGVyQ29tcG9uZW50LCBJZ3hFeGNlbFN0eWxlU2VhcmNoQ29tcG9uZW50LCBOZ0NsYXNzXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRXhjZWxTdHlsZUZpbHRlcmluZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VGaWx0ZXJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leGNlbC1maWx0ZXInKVxuICAgIHB1YmxpYyBkZWZhdWx0Q2xhc3MgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZXhjZWwtZmlsdGVyX19zaXppbmcnKVxuICAgIHByb3RlY3RlZCBnZXQgc2hvdWxkQXBwbHlTaXplcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEodGhpcy5fbWluSGVpZ2h0IHx8IHRoaXMuX21heEhlaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leGNlbC1maWx0ZXItLWlubGluZScpXG4gICAgcHVibGljIGlubGluZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBsb2FkaW5nRW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzb3J0aW5nQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNvbHVtbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uVHlwZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGxpc3REYXRhTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWFpbkRyb3Bkb3duJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHVibGljIG1haW5Ecm9wZG93bjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhjZWxTdHlsZUNvbHVtbk9wZXJhdGlvbnNUZW1wbGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBJZ3hFeGNlbFN0eWxlQ29sdW1uT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlIH0pXG4gICAgcHVibGljIGV4Y2VsQ29sdW1uT3BlcmF0aW9uc0RpcmVjdGl2ZTogSWd4RXhjZWxTdHlsZUNvbHVtbk9wZXJhdGlvbnNUZW1wbGF0ZURpcmVjdGl2ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeGNlbFN0eWxlRmlsdGVyT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlLCB7IHJlYWQ6IElneEV4Y2VsU3R5bGVGaWx0ZXJPcGVyYXRpb25zVGVtcGxhdGVEaXJlY3RpdmUgfSlcbiAgICBwdWJsaWMgZXhjZWxGaWx0ZXJPcGVyYXRpb25zRGlyZWN0aXZlOiBJZ3hFeGNlbFN0eWxlRmlsdGVyT3BlcmF0aW9uc1RlbXBsYXRlRGlyZWN0aXZlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0RXhjZWxDb2x1bW5PcGVyYXRpb25zJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRFeGNlbENvbHVtbk9wZXJhdGlvbnM6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRFeGNlbEZpbHRlck9wZXJhdGlvbnMnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdEV4Y2VsRmlsdGVyT3BlcmF0aW9uczogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNvbHVtbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY29sdW1uKHZhbHVlOiBDb2x1bW5UeXBlKSB7XG4gICAgICAgIHRoaXMuX2NvbHVtbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLmxpc3REYXRhID0gbmV3IEFycmF5PEZpbHRlckxpc3RJdGVtPigpO1xuICAgICAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KHRoaXMuX2NvbHVtbik7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zPy51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW4pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLnJlZ2lzdGVyU1ZHSWNvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zb3J0aW5nQ2hhbmdlZC5lbWl0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IHRoaXMuZ3JpZC5jb2x1bW5QaW4uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoISh0aGlzLmNkciBhcyBWaWV3UmVmKS5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5ncmlkLmNvbHVtblZpc2liaWxpdHlDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRldGVjdENoYW5nZXMoKSkpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmdyaWQuc29ydGluZ0V4cHJlc3Npb25zQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNvcnRpbmdDaGFuZ2VkLmVtaXQoKSkpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmluaXQoKSkpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmdyaWQuY29sdW1uTW92aW5nRW5kLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBjb2x1bW4uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb2x1bW4oKTogQ29sdW1uVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwcmVzc2lvbnNMaXN0ID0gbmV3IEFycmF5PEV4cHJlc3Npb25VST4oKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBsaXN0RGF0YSA9IG5ldyBBcnJheTxGaWx0ZXJMaXN0SXRlbT4oKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyB1bmlxdWVWYWx1ZXM6IElneEZpbHRlckl0ZW1bXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJsYXlTZXJ2aWNlOiBJZ3hPdmVybGF5U2VydmljZTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVybGF5Q29tcG9uZW50SWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0hpZXJhcmNoaWNhbCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfbWluSGVpZ2h0O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbWluaW11bSBoZWlnaHQuXG4gICAgICpcbiAgICAgKiBTZXR0aW5nIHZhbHVlIGluIHRlbXBsYXRlOlxuICAgICAqIGBgYHRzXG4gICAgICogW21pbkhlaWdodF09XCInPG51bWJlcj48dW5pdCAocHh8cmVtfGV0Yy4uKT4nXCJcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEV4YW1wbGUgZm9yIHNldHRpbmcgYSB2YWx1ZTpcbiAgICAgKiBgYGB0c1xuICAgICAqIFttaW5IZWlnaHRdPVwiJzcwMHB4J1wiXG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IG1pbkhlaWdodCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fbWluSGVpZ2h0IHx8IHRoaXMuX21pbkhlaWdodCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21pbkhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1pbmltdW0gaGVpZ2h0LlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgbWluSGVpZ2h0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWluSGVpZ2h0ID0gdmFsdWU7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIF9tYXhIZWlnaHQ6IHN0cmluZztcbiAgICBwcml2YXRlIGNvbnRhaW5zTnVsbE9yRW1wdHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIHNlbGVjdEFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICBwcml2YXRlIHNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIGZpbHRlclZhbHVlcyA9IG5ldyBTZXQ8YW55PigpO1xuICAgIHByaXZhdGUgX2NvbHVtbjogQ29sdW1uVHlwZTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9vcmlnaW5hbERpc3BsYXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1heGltdW0gaGVpZ2h0LlxuICAgICAqXG4gICAgICogU2V0dGluZyB2YWx1ZSBpbiB0ZW1wbGF0ZTpcbiAgICAgKiBgYGB0c1xuICAgICAqIFttYXhIZWlnaHRdPVwiJzxudW1iZXI+PHVuaXQgKHB4fHJlbXxldGMuLik+J1wiXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBFeGFtcGxlIGZvciBzZXR0aW5nIGEgdmFsdWU6XG4gICAgICogYGBgdHNcbiAgICAgKiBbbWF4SGVpZ2h0XT1cIic3MDBweCdcIlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JylcbiAgICBwdWJsaWMgZ2V0IG1heEhlaWdodCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWF4SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWF4aW11bSBoZWlnaHQuXG4gICAgICovXG4gICAgcHVibGljIHNldCBtYXhIZWlnaHQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9tYXhIZWlnaHQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ3JpZCgpOiBHcmlkVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbj8uZ3JpZCA/PyB0aGlzLmdyaWRBUEk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKVxuICAgICAgICBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgQEluamVjdChJR1hfR1JJRF9CQVNFKSBwcm90ZWN0ZWQgZ3JpZEFQST86IEdyaWRUeXBlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjZHIsIGVsZW1lbnQsIHBsYXRmb3JtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zPy51bnN1YnNjcmliZSgpO1xuICAgICAgICBkZWxldGUgdGhpcy5vdmVybGF5Q29tcG9uZW50SWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbXB1dGVkU3R5bGVzID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGluaXRpYWxpemUoY29sdW1uOiBDb2x1bW5UeXBlLCBvdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UgPSBvdmVybGF5U2VydmljZTtcbiAgICAgICAgaWYgKHRoaXMuX29yaWdpbmFsRGlzcGxheSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHRoaXMuX29yaWdpbmFsRGlzcGxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZ3JpZC5jb2x1bW5Nb3Zpbmcuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VEcm9wZG93bigpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25QaW4oKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNvbHVtbi5waW5uZWQgPSAhdGhpcy5jb2x1bW4ucGlubmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uU2VsZWN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RDb2x1bW4odGhpcy5jb2x1bW4uZmllbGQsIHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLnNpbmdsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdENvbHVtbih0aGlzLmNvbHVtbi5maWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBjb2x1bW5TZWxlY3RhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkPy5jb2x1bW5TZWxlY3Rpb24gIT09IEdyaWRTZWxlY3Rpb25Nb2RlLm5vbmUgJiYgdGhpcy5jb2x1bW4/LnNlbGVjdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25IaWRlVG9nZ2xlKCkge1xuICAgICAgICB0aGlzLmNvbHVtbi50b2dnbGVWaXNpYmlsaXR5KCk7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlDb21wb25lbnRJZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VEcm9wZG93bigpIHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheUNvbXBvbmVudElkKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmhpZGUodGhpcy5vdmVybGF5Q29tcG9uZW50SWQpO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5Q29tcG9uZW50SWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25LZXlEb3duKGV2ZW50QXJnczogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5wbGF0Zm9ybS5pc0ZpbHRlcmluZ0tleUNvbWJvKGV2ZW50QXJncykpIHtcbiAgICAgICAgICAgIGV2ZW50QXJncy5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnRBcmdzLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhpZGUoKSB7XG4gICAgICAgIHRoaXMuX29yaWdpbmFsRGlzcGxheSA9IHRoaXMuY29tcHV0ZWRTdHlsZXMuZGlzcGxheTtcbiAgICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXRlY3RDaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbXB1dGVkU3R5bGVzO1xuXG4gICAgcHJvdGVjdGVkIGdldCBzaXplKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3R5bGVzPy5nZXRQcm9wZXJ0eVZhbHVlKCctLWNvbXBvbmVudC1zaXplJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0KCkge1xuICAgICAgICB0aGlzLmV4cHJlc3Npb25zTGlzdCA9IG5ldyBBcnJheTxFeHByZXNzaW9uVUk+KCk7XG4gICAgICAgIGdlbmVyYXRlRXhwcmVzc2lvbnNMaXN0KHRoaXMuY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgdGhpcy5ncmlkLmZpbHRlcmluZ0xvZ2ljLCB0aGlzLmV4cHJlc3Npb25zTGlzdCk7XG4gICAgICAgIHRoaXMucG9wdWxhdGVDb2x1bW5EYXRhKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcmVFeHByZXNzaW9uc1NlbGVjdGFibGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmV4cHJlc3Npb25zTGlzdC5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICh0aGlzLmV4cHJlc3Npb25zTGlzdFswXS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZXF1YWxzJyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnNMaXN0WzBdLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICdhdCcgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zTGlzdFswXS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAndHJ1ZScgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zTGlzdFswXS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZmFsc2UnIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5leHByZXNzaW9uc0xpc3RbMF0uZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2VtcHR5JyB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbnNMaXN0WzBdLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICdpbicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGFibGVFeHByZXNzaW9uc0NvdW50ID0gdGhpcy5leHByZXNzaW9uc0xpc3QuZmlsdGVyKGV4cCA9PlxuICAgICAgICAgICAgKGV4cC5iZWZvcmVPcGVyYXRvciA9PT0gMSB8fCBleHAuYWZ0ZXJPcGVyYXRvciA9PT0gMSkgJiZcbiAgICAgICAgICAgIChleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2VxdWFscycgfHxcbiAgICAgICAgICAgICAgICBleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2F0JyB8fFxuICAgICAgICAgICAgICAgIGV4cC5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAndHJ1ZScgfHxcbiAgICAgICAgICAgICAgICBleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2ZhbHNlJyB8fFxuICAgICAgICAgICAgICAgIGV4cC5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnZW1wdHknIHx8XG4gICAgICAgICAgICAgICAgZXhwLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICdpbicpKS5sZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGFibGVFeHByZXNzaW9uc0NvdW50ID09PSB0aGlzLmV4cHJlc3Npb25zTGlzdC5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3B1bGF0ZUNvbHVtbkRhdGEoKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkLnVuaXF1ZUNvbHVtblZhbHVlc1N0cmF0ZWd5KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbHVtblZhbHVlc1JlbW90ZWx5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbHVtblZhbHVlc0Zyb21EYXRhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbmRlckNvbHVtblZhbHVlc1JlbW90ZWx5KCkge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGFydC5lbWl0KCk7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gdGhpcy5nZXRDb2x1bW5GaWx0ZXJFeHByZXNzaW9uc1RyZWUoKTtcblxuICAgICAgICBjb25zdCBwcmV2Q29sdW1uID0gdGhpcy5jb2x1bW47XG4gICAgICAgIHRoaXMuZ3JpZC51bmlxdWVDb2x1bW5WYWx1ZXNTdHJhdGVneSh0aGlzLmNvbHVtbiwgZXhwcmVzc2lvbnNUcmVlLCAodmFsdWVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbHVtbiB8fCB0aGlzLmNvbHVtbiAhPT0gcHJldkNvbHVtbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSB2YWx1ZXMubWFwKHYgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICB0aGlzLnVuaXF1ZVZhbHVlcyA9IHRoaXMuY29sdW1uLnNvcnRTdHJhdGVneS5zb3J0KGl0ZW1zLCAndmFsdWUnLCBTb3J0aW5nRGlyZWN0aW9uLkFzYywgdGhpcy5jb2x1bW4uc29ydGluZ0lnbm9yZUNhc2UsXG4gICAgICAgICAgICAgICAgKG9iaiwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNvbHZlZFZhbHVlID0gb2JqW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlRpbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSBuZXcgRGF0ZSgpLnNldEhvdXJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLmdldFNlY29uZHMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFZhbHVlLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlclZhbHVlcygpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nRW5kLmVtaXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJDb2x1bW5WYWx1ZXNGcm9tRGF0YSgpIHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3RhcnQuZW1pdCgpO1xuXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZSA9IHRoaXMuZ2V0Q29sdW1uRmlsdGVyRXhwcmVzc2lvbnNUcmVlKCk7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmdyaWQuZmlsdGVyU3RyYXRlZ3kuZ2V0RmlsdGVySXRlbXModGhpcy5jb2x1bW4sIGV4cHJlc3Npb25zVHJlZSk7XG4gICAgICAgIHByb21pc2UudGhlbigoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNIaWVyYXJjaGljYWwgPSBpdGVtcy5sZW5ndGggPiAwICYmIGl0ZW1zLnNvbWUoaSA9PiBpLmNoaWxkcmVuICYmIGkuY2hpbGRyZW4ubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICB0aGlzLnVuaXF1ZVZhbHVlcyA9IGl0ZW1zO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJWYWx1ZXMoKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0VuZC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLnNvcnRpbmdDaGFuZ2VkLmVtaXQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW5kZXJWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVzID0gdGhpcy5nZW5lcmF0ZUZpbHRlclZhbHVlcygpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlTGlzdERhdGEoKTtcbiAgICAgICAgdGhpcy5leHByZXNzaW9uc0xpc3QuZm9yRWFjaChleHByID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlN0cmluZyAmJiB0aGlzLmNvbHVtbi5maWx0ZXJpbmdJZ25vcmVDYXNlXG4gICAgICAgICAgICAgICAgJiYgZXhwci5leHByZXNzaW9uLnNlYXJjaFZhbCAmJiBleHByLmV4cHJlc3Npb24uc2VhcmNoVmFsIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlFeHByZXNzaW9uKGV4cHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlRmlsdGVyVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBmb3JtYXRWYWx1ZSA9ICh2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcblxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmNvbHVtbi5kYXRhVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9EYXRlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBwcm9jZXNzRXhwcmVzc2lvbiA9IChhcnI6IGFueVtdLCBlOiBhbnkpOiBhbnlbXSA9PiB7XG4gICAgICAgICAgICBpZiAoZS5leHByZXNzaW9uLmNvbmRpdGlvbi5uYW1lID09PSAnaW4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hcnIsIC4uLkFycmF5LmZyb20oKGUuZXhwcmVzc2lvbi5zZWFyY2hWYWwgYXMgU2V0PGFueT4pLnZhbHVlcygpKS5tYXAodiA9PiBmb3JtYXRWYWx1ZSh2KSldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFsuLi5hcnIsIGZvcm1hdFZhbHVlKGUuZXhwcmVzc2lvbi5zZWFyY2hWYWwpXTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSBuZXcgU2V0PGFueT4odGhpcy5leHByZXNzaW9uc0xpc3QucmVkdWNlKHByb2Nlc3NFeHByZXNzaW9uLCBbXSkpO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb2RpZnlFeHByZXNzaW9uKGV4cHI6IEV4cHJlc3Npb25VSSkge1xuICAgICAgICBjb25zdCBsb3dlckNhc2VGaWx0ZXJWYWx1ZXMgPSBuZXcgU2V0KEFycmF5LmZyb20oZXhwci5leHByZXNzaW9uLnNlYXJjaFZhbCkubWFwKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZS50b0xvd2VyQ2FzZSgpKSk7XG5cbiAgICAgICAgdGhpcy5ncmlkLmRhdGEuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbVt0aGlzLmNvbHVtbi5maWVsZF0gPT09IFwic3RyaW5nXCIgJiYgbG93ZXJDYXNlRmlsdGVyVmFsdWVzLmhhcyhpdGVtW3RoaXMuY29sdW1uLmZpZWxkXT8udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICBleHByLmV4cHJlc3Npb24uc2VhcmNoVmFsLmFkZChpdGVtW3RoaXMuY29sdW1uLmZpZWxkXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVMaXN0RGF0YSgpIHtcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IG5ldyBBcnJheTxGaWx0ZXJMaXN0SXRlbT4oKTtcbiAgICAgICAgY29uc3Qgc2hvdWxkVXBkYXRlU2VsZWN0aW9uID0gdGhpcy5hcmVFeHByZXNzaW9uc1NlbGVjdGFibGUoKTtcblxuICAgICAgICBpZiAodGhpcy5jb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5Cb29sZWFuKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEJvb2xlYW5JdGVtcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRJdGVtcyhzaG91bGRVcGRhdGVTZWxlY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzSGllcmFyY2hpY2FsICYmIHRoaXMuY29udGFpbnNOdWxsT3JFbXB0eSkge1xuICAgICAgICAgICAgY29uc3QgYmxhbmtzSXRlbSA9IHRoaXMuZ2VuZXJhdGVCbGFua3NJdGVtKHNob3VsZFVwZGF0ZVNlbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhLnVuc2hpZnQoYmxhbmtzSXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5saXN0RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdEFsbEl0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMuY2RyIGFzIGFueSkuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3REYXRhTG9hZGVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtbkZpbHRlckV4cHJlc3Npb25zVHJlZSgpIHtcbiAgICAgICAgY29uc3QgZ3JpZEV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA9IHRoaXMuZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZSA9IG5ldyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUoZ3JpZEV4cHJlc3Npb25zVHJlZS5vcGVyYXRvciwgZ3JpZEV4cHJlc3Npb25zVHJlZS5maWVsZE5hbWUpO1xuXG4gICAgICAgIGZvciAoY29uc3Qgb3BlcmFuZCBvZiBncmlkRXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICBpZiAob3BlcmFuZCBpbnN0YW5jZW9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbkV4cHJUcmVlID0gb3BlcmFuZCBhcyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbkV4cHJUcmVlLmZpZWxkTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLnB1c2gob3BlcmFuZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZXhwcmVzc2lvbnNUcmVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQm9vbGVhbkl0ZW1zKCkge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudW5pcXVlVmFsdWVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJMaXN0SXRlbSA9IG5ldyBGaWx0ZXJMaXN0SXRlbSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgJiYgdGhpcy5leHByZXNzaW9uc0xpc3QuZmluZChleHAgPT4gZXhwLmV4cHJlc3Npb24uY29uZGl0aW9uLm5hbWUgPT09ICd0cnVlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSAmJiB0aGlzLmV4cHJlc3Npb25zTGlzdC5maW5kKGV4cCA9PiBleHAuZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZSA9PT0gJ2ZhbHNlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmlzRmlsdGVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmxhYmVsID0gdmFsdWUgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2ZpbHRlcl90cnVlIDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9maWx0ZXJfZmFsc2U7XG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdERhdGEucHVzaChmaWx0ZXJMaXN0SXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbnNOdWxsT3JFbXB0eSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkSXRlbXMoc2hvdWxkVXBkYXRlU2VsZWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb250YWluc051bGxPckVtcHR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGlzdERhdGEgPSB0aGlzLmdlbmVyYXRlRmlsdGVyTGlzdEl0ZW1zKHRoaXMudW5pcXVlVmFsdWVzLCBzaG91bGRVcGRhdGVTZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLmNvbnRhaW5zTnVsbE9yRW1wdHkgPSB0aGlzLnVuaXF1ZVZhbHVlcy5sZW5ndGggPiB0aGlzLmxpc3REYXRhLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlRmlsdGVyTGlzdEl0ZW1zKHZhbHVlczogSWd4RmlsdGVySXRlbVtdLCBzaG91bGRVcGRhdGVTZWxlY3Rpb246IGJvb2xlYW4sIHBhcmVudD86IEZpbHRlckxpc3RJdGVtKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckxpc3RJdGVtcyA9IFtdO1xuICAgICAgICB2YWx1ZXM/LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBoYXNWYWx1ZSA9IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnO1xuXG4gICAgICAgICAgICBpZiAoaGFzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJMaXN0SXRlbSA9IG5ldyBGaWx0ZXJMaXN0SXRlbSgpO1xuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmxhYmVsID0gZWxlbWVudC5sYWJlbCAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5sYWJlbCA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0RmlsdGVySXRlbUxhYmVsKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbS5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2x1bW4uZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyTGlzdEl0ZW0uaXNGaWx0ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRVcGRhdGVTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJWYWx1ZSA9IHRoaXMuZ2V0RXhwcmVzc2lvblZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlcy5oYXMoZXhwclZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmlzRmlsdGVyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxJbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGZpbHRlckxpc3RJdGVtLmNoaWxkcmVuID0gdGhpcy5nZW5lcmF0ZUZpbHRlckxpc3RJdGVtcyhlbGVtZW50LmNoaWxkcmVuID8/IGVsZW1lbnQudmFsdWU/LmNoaWxkcmVuLCBzaG91bGRVcGRhdGVTZWxlY3Rpb24sIGZpbHRlckxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICBmaWx0ZXJMaXN0SXRlbXMucHVzaChmaWx0ZXJMaXN0SXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJMaXN0SXRlbXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRTZWxlY3RBbGxJdGVtKCkge1xuICAgICAgICBjb25zdCBzZWxlY3RBbGwgPSBuZXcgRmlsdGVyTGlzdEl0ZW0oKTtcbiAgICAgICAgc2VsZWN0QWxsLmlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdEFsbFNlbGVjdGVkO1xuICAgICAgICBzZWxlY3RBbGwudmFsdWUgPSB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2V4Y2VsX3NlbGVjdF9hbGw7XG4gICAgICAgIHNlbGVjdEFsbC5sYWJlbCA9IHRoaXMuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbDtcbiAgICAgICAgc2VsZWN0QWxsLmluZGV0ZXJtaW5hdGUgPSB0aGlzLnNlbGVjdEFsbEluZGV0ZXJtaW5hdGU7XG4gICAgICAgIHNlbGVjdEFsbC5pc1NwZWNpYWwgPSB0cnVlO1xuICAgICAgICBzZWxlY3RBbGwuaXNGaWx0ZXJlZCA9IHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMubGlzdERhdGEudW5zaGlmdChzZWxlY3RBbGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVCbGFua3NJdGVtKHNob3VsZFVwZGF0ZVNlbGVjdGlvbikge1xuICAgICAgICBjb25zdCBibGFua3MgPSBuZXcgRmlsdGVyTGlzdEl0ZW0oKTtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkge1xuICAgICAgICAgICAgaWYgKHNob3VsZFVwZGF0ZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlcy5oYXMobnVsbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYmxhbmtzLmlzU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBibGFua3MuaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYmxhbmtzLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYmxhbmtzLmlzRmlsdGVyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBibGFua3MuaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICBibGFua3MuaXNGaWx0ZXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgYmxhbmtzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgYmxhbmtzLmxhYmVsID0gdGhpcy5ncmlkLnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF9leGNlbF9ibGFua3M7XG4gICAgICAgIGJsYW5rcy5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIGJsYW5rcy5pc1NwZWNpYWwgPSB0cnVlO1xuICAgICAgICBibGFua3MuaXNCbGFua3MgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBibGFua3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJJdGVtTGFiZWwodmFsdWU6IGFueSwgYXBwbHlGb3JtYXR0ZXIgPSB0cnVlLCBkYXRhPzogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5mb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgIGlmIChhcHBseUZvcm1hdHRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5mb3JtYXR0ZXIodmFsdWUsIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBkaXNwbGF5LCBmb3JtYXQsIGRpZ2l0c0luZm8sIGN1cnJlbmN5Q29kZSwgdGltZXpvbmUgfSA9IHRoaXMuY29sdW1uLnBpcGVBcmdzO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmdyaWQubG9jYWxlO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5jb2x1bW4uZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGU6XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdERhdGUodmFsdWUsIGZvcm1hdCwgbG9jYWxlLCB0aW1lem9uZSk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0Q3VycmVuY3kodmFsdWUsIGN1cnJlbmN5Q29kZSB8fCBnZXRMb2NhbGVDdXJyZW5jeUNvZGUobG9jYWxlKSwgZGlzcGxheSwgZGlnaXRzSW5mbywgbG9jYWxlKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLk51bWJlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0TnVtYmVyKHZhbHVlLCBsb2NhbGUsIGRpZ2l0c0luZm8pO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuUGVyY2VudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0UGVyY2VudCh2YWx1ZSwgbG9jYWxlLCBkaWdpdHNJbmZvKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRFeHByZXNzaW9uVmFsdWUodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkRhdGUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkudG9EYXRlU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLkRhdGVUaW1lKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpLnRvSVNPU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gR3JpZENvbHVtbkRhdGFUeXBlLlRpbWUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgOiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2RlZmF1bHRFeGNlbENvbHVtbk9wZXJhdGlvbnM+XG4gICAgPGlneC1leGNlbC1zdHlsZS1oZWFkZXJcbiAgICAgICAgW3Nob3dIaWRpbmddPVwic2l6ZSAhPT0gJzMnICYmICFjb2x1bW4/LmRpc2FibGVIaWRpbmdcIlxuICAgICAgICBbc2hvd1Bpbm5pbmddPVwic2l6ZSAhPT0gJzMnICYmICFjb2x1bW4/LmRpc2FibGVQaW5uaW5nXCJcbiAgICAgICAgW3Nob3dTZWxlY3RpbmddPVwic2l6ZSAhPT0gJzMnICYmIGNvbHVtblNlbGVjdGFibGUoKVwiXG4gICAgPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLWhlYWRlcj5cblxuICAgIDxpZ3gtZXhjZWwtc3R5bGUtc29ydGluZyAqbmdJZj1cImNvbHVtbj8uc29ydGFibGVcIj5cbiAgICA8L2lneC1leGNlbC1zdHlsZS1zb3J0aW5nPlxuXG4gICAgPGlneC1leGNlbC1zdHlsZS1tb3ZpbmcgKm5nSWY9XCJncmlkPy5tb3ZpbmdcIj5cbiAgICA8L2lneC1leGNlbC1zdHlsZS1tb3Zpbmc+XG5cbiAgICA8aWd4LWV4Y2VsLXN0eWxlLXBpbm5pbmcgKm5nSWY9XCIhY29sdW1uPy5kaXNhYmxlUGlubmluZyAmJiBzaXplID09PSAnMydcIj5cbiAgICA8L2lneC1leGNlbC1zdHlsZS1waW5uaW5nPlxuXG4gICAgPGlneC1leGNlbC1zdHlsZS1oaWRpbmcgKm5nSWY9XCIhY29sdW1uPy5kaXNhYmxlSGlkaW5nICYmIHNpemUgPT09ICczJ1wiPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLWhpZGluZz5cblxuICAgIDxpZ3gtZXhjZWwtc3R5bGUtc2VsZWN0aW5nICpuZ0lmPVwiY29sdW1uU2VsZWN0YWJsZSgpICYmIHNpemUgPT09ICczJ1wiPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLXNlbGVjdGluZz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEV4Y2VsRmlsdGVyT3BlcmF0aW9ucz5cbiAgICA8aWd4LWV4Y2VsLXN0eWxlLWNsZWFyLWZpbHRlcnM+XG4gICAgPC9pZ3gtZXhjZWwtc3R5bGUtY2xlYXItZmlsdGVycz5cblxuICAgIDxpZ3gtZXhjZWwtc3R5bGUtY29uZGl0aW9uYWwtZmlsdGVyPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLWNvbmRpdGlvbmFsLWZpbHRlcj5cblxuICAgIDxpZ3gtZXhjZWwtc3R5bGUtc2VhcmNoPlxuICAgIDwvaWd4LWV4Y2VsLXN0eWxlLXNlYXJjaD5cbjwvbmctdGVtcGxhdGU+XG5cbjxhcnRpY2xlICNtYWluRHJvcGRvd25cbiAgICBjbGFzcz1cImlneC1leGNlbC1maWx0ZXJfX21lbnVcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2lneC1leGNlbC1maWx0ZXJfX3NpemluZyc6IHNob3VsZEFwcGx5U2l6ZXMsXG4gICAgICAgICdpZ3gtZXhjZWwtZmlsdGVyX19tZW51LS1jb3N5Jzogc2l6ZSA9PT0gJzInLFxuICAgICAgICAnaWd4LWV4Y2VsLWZpbHRlcl9fbWVudS0tY29tcGFjdCc6IHNpemUgPT09ICcxJ1xuICAgIH1cIlxuICAgIFtpZF09XCJvdmVybGF5Q29tcG9uZW50SWRcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICBbc3R5bGUubWluLWhlaWdodF09XCJtaW5IZWlnaHRcIlxuICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1heEhlaWdodFwiXG4gICAgcm9sZT1cIm1lbnVcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmV4Y2VsQ29sdW1uT3BlcmF0aW9uc0RpcmVjdGl2ZTsgZWxzZSBkZWZhdWx0RXhjZWxDb2x1bW5PcGVyYXRpb25zXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1leGNlbC1zdHlsZS1jb2x1bW4tb3BlcmF0aW9ucyxbaWd4RXhjZWxTdHlsZUNvbHVtbk9wZXJhdGlvbnNdXCI+XG4gICAgICAgIDwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aGlzLmV4Y2VsRmlsdGVyT3BlcmF0aW9uc0RpcmVjdGl2ZTsgZWxzZSBkZWZhdWx0RXhjZWxGaWx0ZXJPcGVyYXRpb25zXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1leGNlbC1zdHlsZS1maWx0ZXItb3BlcmF0aW9ucyxbaWd4RXhjZWxTdHlsZUZpbHRlck9wZXJhdGlvbnNdXCI+XG4gICAgICAgIDwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvYXJ0aWNsZT5cbiJdfQ==
|