@gipisistemas/ng-core 1.1.4 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- package/bundles/gipisistemas-ng-core.umd.js +297 -7
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +7 -7
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -1
- package/core/utils/string.util.d.ts +4 -0
- package/esm2015/core/utils/string.util.js +27 -1
- package/esm2015/gipi-components.js +2 -1
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -2
- package/esm2015/shared/gipi-components/button/button.component.js +18 -2
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
- package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +4 -4
- package/esm2015/shared/gipi-components/split-button/split-button.component.js +243 -0
- package/esm2015/shared/shared.module.js +3 -1
- package/esm5/core/utils/string.util.js +27 -1
- package/esm5/gipi-components.js +2 -1
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +2 -2
- package/esm5/shared/gipi-components/button/button.component.js +22 -2
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +2 -2
- package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +4 -4
- package/esm5/shared/gipi-components/split-button/split-button.component.js +249 -0
- package/esm5/shared/shared.module.js +3 -1
- package/fesm2015/gipisistemas-ng-core.js +288 -9
- package/fesm2015/gipisistemas-ng-core.js.map +1 -1
- package/fesm5/gipisistemas-ng-core.js +297 -8
- package/fesm5/gipisistemas-ng-core.js.map +1 -1
- package/gipi-components.d.ts +1 -0
- package/gipisistemas-ng-core.metadata.json +1 -1
- package/package.json +1 -1
- package/shared/gipi-components/button/button.component.d.ts +14 -0
- package/shared/gipi-components/split-button/split-button.component.d.ts +60 -0
package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js
CHANGED
@@ -347,7 +347,7 @@ GIPIInputSearchComponent = GIPIInputSearchComponent_1 = __decorate([
|
|
347
347
|
Component({
|
348
348
|
selector: `gipi-input-search`,
|
349
349
|
exportAs: 'gipiInputSearch',
|
350
|
-
template: "<!-- Espa\u00E7o reservado para ajustar o deslocamento vertical dos elementos mat-option -->\n<input matInput\n class=\"mat-select-search-input mat-select-search-hidden\" />\n\n<!-- Note: o mat-datepicker-content mat-tab-header \u00E9 necess\u00E1rio para herdar as cores do tema do material, consulte PR n\u00BA 22 -->\n<div #innerSelectSearch\n class=\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\">\n\n <input class=\"mat-select-search-input mat-input-element\"\n aria-label=\"Pesquisa suspensa\"\n autocomplete=\"off\"\n type=\"text\"\n #searchSelectInput\n [placeholder]=\"placeholderLabel\"\n [formControl]=\"_formControl\"\n (keydown)=\"_handleKeydown($event)\"\n (keyup)=\"_handleKeyup($event)\"\n (blur)=\"onBlur()\">\n\n <mat-spinner *ngIf=\"searching\"\n class=\"mat-select-search-spinner\"\n diameter=\"16\">\n </mat-spinner>\n\n <button *ngIf=\"!hideClearSearchButton && value && !searching\"\n class=\"mat-select-search-clear\"\n aria-label=\"Limpar\"\n mat-icon-button\n (click)=\"_reset(true)\">\n <mat-icon> close </mat-icon>\n </button>\n\n <mat-divider> </mat-divider>\n</div>\n\n<div *ngIf=\"(_showNoEntriesFound$ | async) && !searching\"\n class=\"mat-select-search-no-entries-found\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n Nenhum registro foi encontrado\n</div>",
|
350
|
+
template: "<!-- Espa\u00E7o reservado para ajustar o deslocamento vertical dos elementos mat-option -->\n<input matInput\n class=\"mat-select-search-input mat-select-search-hidden\" />\n\n<!-- Note: o mat-datepicker-content mat-tab-header \u00E9 necess\u00E1rio para herdar as cores do tema do material, consulte PR n\u00BA 22 -->\n<div #innerSelectSearch\n class=\"mat-select-search-inner mat-typography mat-datepicker-content mat-tab-header\">\n\n <input class=\"mat-select-search-input mat-input-element\"\n aria-label=\"Pesquisa suspensa\"\n aria-hidden=\"false\"\n autocomplete=\"off\"\n type=\"text\"\n #searchSelectInput\n [placeholder]=\"placeholderLabel\"\n [formControl]=\"_formControl\"\n (keydown)=\"_handleKeydown($event)\"\n (keyup)=\"_handleKeyup($event)\"\n (blur)=\"onBlur()\">\n\n <mat-spinner *ngIf=\"searching\"\n class=\"mat-select-search-spinner\"\n diameter=\"16\">\n </mat-spinner>\n\n <button *ngIf=\"!hideClearSearchButton && value && !searching\"\n class=\"mat-select-search-clear\"\n aria-label=\"Limpar\"\n mat-icon-button\n (click)=\"_reset(true)\">\n <mat-icon> close </mat-icon>\n </button>\n\n <mat-divider> </mat-divider>\n</div>\n\n<div *ngIf=\"(_showNoEntriesFound$ | async) && !searching\"\n class=\"mat-select-search-no-entries-found\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n Nenhum registro foi encontrado\n</div>",
|
351
351
|
providers: [
|
352
352
|
{
|
353
353
|
provide: NG_VALUE_ACCESSOR,
|
@@ -371,4 +371,4 @@ GIPIInputSearchComponent = GIPIInputSearchComponent_1 = __decorate([
|
|
371
371
|
MatFormField])
|
372
372
|
], GIPIInputSearchComponent);
|
373
373
|
export { GIPIInputSearchComponent };
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvaW5wdXQtc2VsZWN0LXBhZ2VkL2lucHV0LXNlYXJjaC9pbnB1dC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2TixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW1CaEcsSUFBYSx3QkFB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QUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFvQyxFQUFFLENBQUMsMEJBQXdCLENBQUM7Z0JBQ3hGLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSjtRQUNELElBQUksRUFBRTtZQUNGLE9BQU8sRUFBRSxtQkFBbUI7U0FDL0I7UUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDbEQsQ0FBQztJQXVGTyxXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUdqQixXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDN0IsV0FBQSxRQUFRLEVBQUUsQ0FBQSxFQUFFLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO3FDQUpJLFNBQVM7UUFDcEIsaUJBQWlCO1FBQ25CLGFBQWE7UUFDWSxTQUFTO1FBQ0gsWUFBWTtHQTFGOUQsd0JBQXdCLENBZ1hwQztTQWhYWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEEsIERPV05fQVJST1csIEVORCwgRU5URVIsIEVTQ0FQRSwgSE9NRSwgTklORSwgU1BBQ0UsIFVQX0FSUk9XLCBaLCBaRVJPIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRPcHRpb24sIE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYGdpcGktaW5wdXQtc2VhcmNoYCxcbiAgICBleHBvcnRBczogJ2dpcGlJbnB1dFNlYXJjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBHSVBJSW5wdXRTZWFyY2hDb21wb25lbnQgPT4gR0lQSUlucHV0U2VhcmNoQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktaW5wdXQtc2VhcmNoJyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdJUElJbnB1dFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIC8vIFZhbG9yIGRlIHBlc3F1aXNhIGF0dWFsXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9sYXN0RXh0ZXJuYWxJbnB1dFZhbHVlOiBzdHJpbmc7XG5cbiAgICAvLyBSZWZlcsOqbmNpYSDDoHMgb3DDp8O1ZXMgTWF0U2VsZWN0XG4gICAgcHVibGljIF9vcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxNYXRPcHRpb24+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PE1hdE9wdGlvbj4+KG51bGwpO1xuICAgIHB1YmxpYyBzZXQgX29wdGlvbnMoX29wdGlvbnM6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQoX29wdGlvbnMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IF9vcHRpb25zKCk6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcHRpb25zTGlzdCQ6IE9ic2VydmFibGU8TWF0T3B0aW9uW10+ID0gdGhpcy5fb3B0aW9ucyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChfb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj4pOiBPYnNlcnZhYmxlPGFueT4gPT4gX29wdGlvbnNcbiAgICAgICAgICAgID8gX29wdGlvbnMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgob3B0aW9uczogYW55KTogYW55ID0+IG9wdGlvbnMudG9BcnJheSgpKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGg8TWF0T3B0aW9uW10+KF9vcHRpb25zLnRvQXJyYXkoKSksKVxuICAgICAgICAgICAgOiBvZihudWxsKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHByaXZhdGUgb3B0aW9uc0xlbmd0aCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMub3B0aW9uc0xpc3QkLnBpcGUoXG4gICAgICAgIG1hcCgob3B0aW9uczogTWF0T3B0aW9uW10pOiBudW1iZXIgPT4gb3B0aW9ucyA/IG9wdGlvbnMubGVuZ3RoIDogMClcbiAgICApO1xuXG4gICAgcHVibGljIF9mb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gICAgLy8gU2UgZGV2ZSBtb3N0cmFyIGEgbWVuc2FnZW0gc2VtIGVudHJhZGFzIGVuY29udHJhZGFzXG4gICAgcHVibGljIF9zaG93Tm9FbnRyaWVzRm91bmQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcyxcbiAgICAgICAgdGhpcy5vcHRpb25zTGVuZ3RoJFxuICAgIF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3ZhbHVlLCBvcHRpb25zTGVuZ3RoXTogW2FueSwgbnVtYmVyXSk6IGJvb2xlYW4gPT4gdmFsdWUgJiYgb3B0aW9uc0xlbmd0aCA9PT0gdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCkpXG4gICAgKTtcblxuICAgIC8vIFN1YmplY3QgZW1pdGlkbyBxdWFuZG8gbyBjb21wb25lbnRlIGZvaSBkZXN0cnXDrWRvXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGRlc2NlbmRlbnRlIGF0aXZvIHBhcmEgc3Vwb3J0ZSBBUklBLlxuICAgIHByaXZhdGUgYWN0aXZlRGVzY2VuZGFudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlckxhYmVsOiBzdHJpbmcgPSAnUGVzcXVpc2FyJztcblxuICAgIEBJbnB1dCgpIGNsZWFyU2VhcmNoSW5wdXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLy8gU2UgZGV2ZSBtb3N0cmFyIG8gaW5kaWNhZG9yIGRlIHBlc3F1aXNhIGVtIGFuZGFtZW50b1xuICAgIEBJbnB1dCgpIHNlYXJjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRGVzYXRpdmEgbyBmb2NvIGluaWNpYWwgZG8gY2FtcG8gZGUgZW50cmFkYVxuICAgIEBJbnB1dCgpIGRpc2FibGVJbml0aWFsRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIEF0aXZhciBsaW1wYXIgaW5wdXQgYW8gcHJlc3Npb25hciBlc2NhcGVcbiAgICBASW5wdXQoKSBlbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wZWRlIHF1ZSBhIGNoYXZlIGhvbWUvZW5kIHNlamEgcHJvcGFnYWRhIHBhcmEgbWF0LXNlbGVjdCxcbiAgICAgKiBwZXJtaXRpbmRvIG1vdmVyIG8gY3Vyc29yIGRlbnRybyBkYSBlbnRyYWRhIGRlIHBlc3F1aXNhIGVtIHZleiBkZSBuYXZlZ2FyIHBlbGFzIG9ww6fDtWVzXG4gICAgICovXG4gICAgQElucHV0KCkgcHJldmVudEhvbWVFbmRLZXlQcm9wYWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRGVzYXRpdmEgYSByb2xhZ2VtIHBhcmEgYXMgb3DDp8O1ZXMgYXRpdmFzIHF1YW5kbyBhIGxpc3RhIGRlIG9ww6fDtWVzIMOpIGFsdGVyYWRhLiDDmnRpbCBwYXJhIHBlc3F1aXNhIGRvIGxhZG8gZG8gc2Vydmlkb3JcbiAgICBASW5wdXQoKSBkaXNhYmxlU2Nyb2xsVG9BY3RpdmVPbk9wdGlvbnNDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBNb3N0cmFyL29jdWx0YXIgbyBib3TDo28gbGltcGFyIHBlc3F1aXNhIGRhIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICBASW5wdXQoKSBoaWRlQ2xlYXJTZWFyY2hCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICBAVmlld0NoaWxkKCdzZWFyY2hTZWxlY3RJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHNlYXJjaFNlbGVjdElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLy8gUmVmZXLDqm5jaWEgYW8gY2FtcG8gZGUgZW50cmFkYSBkZSBwZXNxdWlzYVxuICAgIEBWaWV3Q2hpbGQoJ2lubmVyU2VsZWN0U2VhcmNoJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5uZXJTZWxlY3RTZWFyY2g6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyBBZGljaW9uYSBhIGNsYXNzZSBtYXQtc2VsZWN0LXNlYXJjaC1pbnNpZGUtbWF0LW9wdGlvbiBzZSBvIGl0c3MtaW5wdXQtc2VhcmNoIGVzdGl2ZXJcbiAgICAvLyBkZW50cm8gZG8gbWF0LW9wdGlvblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWF0LXNlbGVjdC1zZWFyY2gtaW5zaWRlLW1hdC1vcHRpb24nKVxuICAgIGdldCBpc0luc2lkZU1hdE9wdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5tYXRPcHRpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTWF0U2VsZWN0KSBwdWJsaWMgbWF0U2VsZWN0OiBNYXRTZWxlY3QsXG4gICAgICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTWF0T3B0aW9uKSBwdWJsaWMgbWF0T3B0aW9uOiBNYXRPcHRpb24gPSBudWxsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1hdEZvcm1GaWVsZCkgcHVibGljIG1hdEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkID0gbnVsbCxcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIERlZmluaXIgY2xhc3NlIGRlIG9ww6fDo28gbWF0IHBlcnNvbmFsaXphZGEgc2UgbyBjb21wb25lbnRlIGZvaSBjb2xvY2FkbyBkZW50cm8gZGUgdW1hIG9ww6fDo28gbWF0XG4gICAgICAgIGlmICh0aGlzLm1hdE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnY29udGFpbnMtbWF0LXNlbGVjdC1zZWFyY2gnKTtcbiAgICAgICAgICAgIHRoaXMubWF0T3B0aW9uLl9nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignPGdpcGktc2VsZWN0LXNlYXJjaD4gZGV2ZSBzZXIgY29sb2NhZG8gZGVudHJvIGRlIHVtIGVsZW1lbnRvIDxtYXQtb3B0aW9uPicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUXVhbmRvIG8gcGFpbmVsIHN1c3BlbnNvIGRlIHNlbGXDp8OjbyDDqSBhYmVydG8gb3UgZmVjaGFkb1xuICAgICAgICB0aGlzLm1hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlbGF5KDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZvY2FyIG8gY2FtcG8gZGUgcGVzcXVpc2EgYW8gYWJyaXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVJbml0aWFsRm9jdXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBMaW1ww6EtbG8gYW8gZmVjaGFyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyU2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBEZWZpbmlyIG8gcHJpbWVpcm8gaXRlbSBhdGl2byBhcMOzcyBhcyBvcMOnw7VlcyBhbHRlcmFkYXNcbiAgICAgICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVmFyacOhdmVsIGRlIGZlY2hhbWVudG8gcGFyYSByYXN0cmVhciBhIHByaW1laXJhIG9ww6fDo28gbWFpcyByZWNlbnRlLlxuICAgICAgICAgICAgICAgICAgICAvLyBQYXJhIGV2aXRhciBxdWUgYSBsaXN0YSByb2xlIHBhcmEgbyB0b3BvIHF1YW5kbyBhcyBvcMOnw7VlcyBzw6NvIGFkaWNpb25hZGFzIGFvIGZpbmFsIGRhIGxpc3RhXG4gICAgICAgICAgICAgICAgICAgIC8vIChwb3IgZXhlbXBsbzogcm9sYWdlbSBpbmZpbml0YSksIGNvbXBhcmFtb3MgYXBlbmFzIGFzIGFsdGVyYcOnw7VlcyBuYXMgcHJpbWVpcmFzIG9ww6fDtWVzIHBhcmFcbiAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5hciBzZSBkZXZlbW9zIGRlZmluaXIgbyBwcmltZWlybyBpdGVtIGNvbW8gYXRpdm8uIElzc28gZXZpdGEgYSByb2xhZ2VtIGRlc25lY2Vzc8OhcmlhXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcmEgbyB0b3BvIGRhIGxpc3RhIHF1YW5kbyBhcyBvcMOnw7VlcyBzw6NvIGFuZXhhZGFzLCBtYXMgcGVybWl0ZSBxdWUgbyBwcmltZWlybyBpdGVtIGRhIGxpc3RhXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlamEgZGVmaW5pZG8gY29tbyBhdGl2byBwb3IgcGFkcsOjbyBxdWFuZG8gbsOjbyBow6Egc2VsZcOnw6NvIGF0aXZhLlxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNGaXJzdE9wdGlvbjogTWF0T3B0aW9uID0gdGhpcy5fb3B0aW9ucy50b0FycmF5KClbdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCldO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2aXRhciBvIGVycm8gXCJleHByZXNzaW9uIGhhcyBiZWVuIGNoYW5nZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnRlciBhIFF1ZXJ5TGlzdCBlbSB1bWEgbWF0cml6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zOiBNYXRPcHRpb25bXSA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPIHZlcmRhZGVpcm8gcHJpbWVpcm8gaXRlbSDDqSBjb21wZW5zYWRvIHBvciAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Rmlyc3RPcHRpb246IE1hdE9wdGlvbiA9IG9wdGlvbnNbdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxNYXRPcHRpb24+ID0gdGhpcy5tYXRTZWxlY3QuX2tleU1hbmFnZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5TWFuYWdlciAmJiB0aGlzLm1hdFNlbGVjdC5wYW5lbE9wZW4pIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmluaXIgcHJpbWVpcm8gaXRlbSBhdGl2byBlIGxhcmd1cmEgZGUgZW50cmFkYVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVyaWZpcXVlIHNlIGEgcHJpbWVpcmEgb3DDp8OjbyBuZXNzYXMgYWx0ZXJhw6fDtWVzIMOpIGRpZmVyZW50ZSBkYSBhbnRlcmlvci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE9wdGlvbklzQ2hhbmdlZDogYm9vbGVhbiA9ICF0aGlzLm1hdFNlbGVjdC5jb21wYXJlV2l0aChwcmV2aW91c0ZpcnN0T3B0aW9uLCBjdXJyZW50Rmlyc3RPcHRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0FTTzogQSBwcmltZWlyYSBvcMOnw6NvIMOpIGRpZmVyZW50ZSBhZ29yYS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmRpY2EgcXVlIGRldmVtb3MgZGVmaW5pLWxvIGNvbW8gYXRpdm8gZSByb2xhciBwYXJhIG8gdG9wby5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RPcHRpb25Jc0NoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIWtleU1hbmFnZXIuYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhb3B0aW9ucy5maW5kKChvcHRpb246IE1hdE9wdGlvbik6IGJvb2xlYW4gPT4gdGhpcy5tYXRTZWxlY3QuY29tcGFyZVdpdGgob3B0aW9uLCBrZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFndWFyZGUgYXMgYWx0ZXJhw6fDtWVzIG5hIGxhcmd1cmEgZG8gcGFpbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdHVhbGl6ZSBub3NzYSByZWZlcsOqbmNpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGaXJzdE9wdGlvbiA9IGN1cnJlbnRGaXJzdE9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIC8vIEFkaWNpb25lIG91IHJlbW92YSBhIGNsYXNzZSBjc3MgZGVwZW5kZW5kbyBzZSBkZXNlamEgbW9zdHJhciBhIG1lbnNhZ2VtIHNlbSBlbnRyYWRhcyBlbmNvbnRyYWRhc1xuICAgICAgICAvLyBvYnM6IGlzc28gw6kgaGFja3lcbiAgICAgICAgdGhpcy5fc2hvd05vRW50cmllc0ZvdW5kJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKHNob3dOb0VudHJpZXNGb3VuZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgLy8gRGVmaW5pciBuZW5odW1hIGNsYXNzZSBkZSBlbnRyYWRhIGVuY29udHJhZGEgbmEgbWF0LW9wdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMubWF0T3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNob3dOb0VudHJpZXNGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdE9wdGlvbi5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKCdtYXQtc2VsZWN0LXNlYXJjaC1uby1lbnRyaWVzLWZvdW5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LnJlbW92ZSgnbWF0LXNlbGVjdC1zZWFyY2gtbm8tZW50cmllcy1mb3VuZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVkaW1lbnNpb25lIGEgbGFyZ3VyYSBkZSBlbnRyYWRhIHF1YW5kbyBhIHZpZXdwb3J0IGZvciByZWRpbWVuc2lvbmFkYSxcbiAgICAgICAgLy8gb3Ugc2VqYSwgYSBsYXJndXJhIGRvIGFjaW9uYWRvciBwb2RlIHNlciByZWRpbWVuc2lvbmFkYS5cbiAgICAgICAgdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3B0aW9uc0xpc3QkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICApLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAvLyBBdHVhbGl6YXIgdmlzdWFsaXphw6fDo28gcXVhbmRvIGFzIG9ww6fDtWVzIGRpc3BvbsOtdmVpcyBtdWRhcmVtXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaGluZykge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoXzogYW55KTogdm9pZCA9PiB7IH07XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4gdmFsdWUgIT09IHRoaXMuX2xhc3RFeHRlcm5hbElucHV0VmFsdWUpLFxuICAgICAgICAgICAgdGFwKCgpOiBhbnkgPT4gdGhpcy5fbGFzdEV4dGVybmFsSW5wdXRWYWx1ZSA9IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICApLnN1YnNjcmliZShmbik7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhc3RFeHRlcm5hbElucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIHRlY2xhIHByZXNzaW9uYWRhIGNvbSBNYXRTZWxlY3QuXG4gICAgICogUGVybWl0ZSwgcG9yIGV4LiBzZWxlY2lvbmFuZG8gY29tIGEgdGVjbGEgZW50ZXIsIG5hdmVnYW5kbyBjb20gYXMgdGVjbGFzIGRlIHNldGEsIGV0Yy5cbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKi9cbiAgICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBFdml0ZSBhIHByb3BhZ2HDp8OjbyBkZSB0b2RvcyBvcyBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zIHBhcmEgZXZpdGFyIHByb2JsZW1hcyBkZSBzZWxlw6fDo29cbiAgICAgICAgaWYgKChldmVudC5rZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IEEgJiYgZXZlbnQua2V5Q29kZSA8PSBaKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPj0gWkVSTyAmJiBldmVudC5rZXlDb2RlIDw9IE5JTkUpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PT0gU1BBQ0UpXG4gICAgICAgICAgICB8fCAodGhpcy5wcmV2ZW50SG9tZUVuZEtleVByb3BhZ2F0aW9uICYmIChldmVudC5rZXlDb2RlID09PSBIT01FIHx8IGV2ZW50LmtleUNvZGUgPT09IEVORCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QubXVsdGlwbGUgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XG4gICAgICAgICAgICAvLyBSZWN1cGVyZSBvIGZvY28gYXDDs3MgYSBzZWxlw6fDo28gbcO6bHRpcGxhLCBwYXJhIHF1ZSBwb3NzYW1vcyBkaWdpdGFyIGFpbmRhIG1haXNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5fZm9jdXMoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYXNvIGVzcGVjaWFsLCBzZSBjbGljYXIgZW0gRXNjYXBlLCBzZSBhIGVudHJhZGEgZXN0aXZlciB2YXppYSwgZmVjaGUgbyBtZW51IHN1c3BlbnNvLCBjYXNvIGNvbnRyw6FyaW8sIGVzdmF6aWUgbyBjYW1wbyBkZSBwZXNxdWlzYVxuICAgICAgICBpZiAodGhpcy5lbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZCA9PT0gdHJ1ZSAmJiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXQodHJ1ZSk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIGF0aXZhw6fDo28gZGUgY2hhdmUgY29tIE1hdFNlbGVjdC5cbiAgICAgKiBQZXJtaXRlLCBwb3IgZXguIG8gYW7Dum5jaW8gZG8gRGVzY2VuZGVudGUgYXR1YWxtZW50ZSBhdGl2byBwb3IgbGVpdG9yZXMgZGUgdGVsYS5cbiAgICAgKi9cbiAgICBfaGFuZGxlS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGV2ZW50LmtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyaWFBY3RpdmVEZXNjZW5kYW50SWQ6IHN0cmluZyA9IHRoaXMubWF0U2VsZWN0Ll9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpLmZpbmRJbmRleCgoaXRlbTogTWF0T3B0aW9uKTogYm9vbGVhbiA9PiBpdGVtLmlkID09PSBhcmlhQWN0aXZlRGVzY2VuZGFudElkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc2VsZWN0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudCA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpW2luZGV4XS5fZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBhcmlhQWN0aXZlRGVzY2VuZGFudElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnNlbGVjdEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2NhbGl6YSBvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICAgKi9cbiAgICBwdWJsaWMgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU2VsZWN0SW5wdXQgfHwgIXRoaXMubWF0U2VsZWN0LnBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2FsdmUgZSByZXN0YXVyZSBvIHNjcm9sbFRvcCBkbyBwYWluZWwsIHBvaXMgc2Vyw6EgcmVkZWZpbmlkbyBwb3IgZm9jdXMgKClcbiAgICAgICAgLy8gb2JzOiBpc3NvIMOpIGhhY2t5XG4gICAgICAgIGNvbnN0IHBhbmVsOiBhbnkgPSB0aGlzLm1hdFNlbGVjdC5wYW5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxUb3A6IGFueSA9IHBhbmVsLnNjcm9sbFRvcDtcblxuICAgICAgICAvLyBTZXRhIG8gZm9jb1xuICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICBwYW5lbC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgbyB2YWxvciBkZSBwZXNxdWlzYSBhdHVhbFxuICAgICAqIEBwYXJhbSBmb2N1cyBzZSBkZXZlIGZvY2FyIGFww7NzIGEgcmVkZWZpbmnDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyBfcmVzZXQoZm9jdXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIERlZmluYSBhIGxhcmd1cmEgZG8gaW5uZXJTZWxlY3RTZWFyY2ggcGFyYSBhanVzdGFyIGF0w6kgbWVzbW8gYXMgYmFycmFzIGRlIHJvbGFnZW0gcGVyc29uYWxpemFkYXNcbiAgICAgKiAgRSBhcG9pYXIgdG9kb3Mgb3Mgc2lzdGVtYXMgZGUgb3BlcmHDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVJbnB1dFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaW5uZXJTZWxlY3RTZWFyY2ggfHwgIXRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHBhbmVsRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ21hdC1zZWxlY3QtcGFuZWwnKSkge1xuICAgICAgICAgICAgICAgIHBhbmVsRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhbmVsRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclNlbGVjdFNlYXJjaC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gcGFuZWxFbGVtZW50LmNsaWVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBvIGRlc2xvY2FtZW50byBwYXJhIG8gY29tcHJpbWVudG8gcXVlIHBvZGUgc2VyIGNhdXNhZG8gcGVsbyBtYXRPcHRpb24gb3BjaW9uYWwgdXNhZG8gY29tbyB1bWEgZW50cmFkYSBkZSBwZXNxdWlzYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE9wdGlvbnNMZW5ndGhPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMubWF0T3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnNlbGVjdEFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvaW5wdXQtc2VsZWN0LXBhZ2VkL2lucHV0LXNlYXJjaC9pbnB1dC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2TixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQW1CaEcsSUFBYSx3QkFB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QUFFO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFvQyxFQUFFLENBQUMsMEJBQXdCLENBQUM7Z0JBQ3hGLEtBQUssRUFBRSxJQUFJO2FBQ2Q7U0FDSjtRQUNELElBQUksRUFBRTtZQUNGLE9BQU8sRUFBRSxtQkFBbUI7U0FDL0I7UUFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDbEQsQ0FBQztJQXVGTyxXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUdqQixXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDN0IsV0FBQSxRQUFRLEVBQUUsQ0FBQSxFQUFFLFdBQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO3FDQUpJLFNBQVM7UUFDcEIsaUJBQWlCO1FBQ25CLGFBQWE7UUFDWSxTQUFTO1FBQ0gsWUFBWTtHQTFGOUQsd0JBQXdCLENBZ1hwQztTQWhYWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEEsIERPV05fQVJST1csIEVORCwgRU5URVIsIEVTQ0FQRSwgSE9NRSwgTklORSwgU1BBQ0UsIFVQX0FSUk9XLCBaLCBaRVJPIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFZpZXdwb3J0UnVsZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRPcHRpb24sIE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYGdpcGktaW5wdXQtc2VhcmNoYCxcbiAgICBleHBvcnRBczogJ2dpcGlJbnB1dFNlYXJjaCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2VhcmNoLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBHSVBJSW5wdXRTZWFyY2hDb21wb25lbnQgPT4gR0lQSUlucHV0U2VhcmNoQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktaW5wdXQtc2VhcmNoJyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdJUElJbnB1dFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIC8vIFZhbG9yIGRlIHBlc3F1aXNhIGF0dWFsXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9sYXN0RXh0ZXJuYWxJbnB1dFZhbHVlOiBzdHJpbmc7XG5cbiAgICAvLyBSZWZlcsOqbmNpYSDDoHMgb3DDp8O1ZXMgTWF0U2VsZWN0XG4gICAgcHVibGljIF9vcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5TGlzdDxNYXRPcHRpb24+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PE1hdE9wdGlvbj4+KG51bGwpO1xuICAgIHB1YmxpYyBzZXQgX29wdGlvbnMoX29wdGlvbnM6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+KSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQoX29wdGlvbnMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IF9vcHRpb25zKCk6IFF1ZXJ5TGlzdDxNYXRPcHRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcHRpb25zTGlzdCQ6IE9ic2VydmFibGU8TWF0T3B0aW9uW10+ID0gdGhpcy5fb3B0aW9ucyQucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChfb3B0aW9uczogUXVlcnlMaXN0PE1hdE9wdGlvbj4pOiBPYnNlcnZhYmxlPGFueT4gPT4gX29wdGlvbnNcbiAgICAgICAgICAgID8gX29wdGlvbnMuY2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgob3B0aW9uczogYW55KTogYW55ID0+IG9wdGlvbnMudG9BcnJheSgpKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGg8TWF0T3B0aW9uW10+KF9vcHRpb25zLnRvQXJyYXkoKSksKVxuICAgICAgICAgICAgOiBvZihudWxsKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIHByaXZhdGUgb3B0aW9uc0xlbmd0aCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMub3B0aW9uc0xpc3QkLnBpcGUoXG4gICAgICAgIG1hcCgob3B0aW9uczogTWF0T3B0aW9uW10pOiBudW1iZXIgPT4gb3B0aW9ucyA/IG9wdGlvbnMubGVuZ3RoIDogMClcbiAgICApO1xuXG4gICAgcHVibGljIF9mb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gICAgLy8gU2UgZGV2ZSBtb3N0cmFyIGEgbWVuc2FnZW0gc2VtIGVudHJhZGFzIGVuY29udHJhZGFzXG4gICAgcHVibGljIF9zaG93Tm9FbnRyaWVzRm91bmQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlQ2hhbmdlcyxcbiAgICAgICAgdGhpcy5vcHRpb25zTGVuZ3RoJFxuICAgIF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3ZhbHVlLCBvcHRpb25zTGVuZ3RoXTogW2FueSwgbnVtYmVyXSk6IGJvb2xlYW4gPT4gdmFsdWUgJiYgb3B0aW9uc0xlbmd0aCA9PT0gdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCkpXG4gICAgKTtcblxuICAgIC8vIFN1YmplY3QgZW1pdGlkbyBxdWFuZG8gbyBjb21wb25lbnRlIGZvaSBkZXN0cnXDrWRvXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGRlc2NlbmRlbnRlIGF0aXZvIHBhcmEgc3Vwb3J0ZSBBUklBLlxuICAgIHByaXZhdGUgYWN0aXZlRGVzY2VuZGFudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlckxhYmVsOiBzdHJpbmcgPSAnUGVzcXVpc2FyJztcblxuICAgIEBJbnB1dCgpIGNsZWFyU2VhcmNoSW5wdXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLy8gU2UgZGV2ZSBtb3N0cmFyIG8gaW5kaWNhZG9yIGRlIHBlc3F1aXNhIGVtIGFuZGFtZW50b1xuICAgIEBJbnB1dCgpIHNlYXJjaGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRGVzYXRpdmEgbyBmb2NvIGluaWNpYWwgZG8gY2FtcG8gZGUgZW50cmFkYVxuICAgIEBJbnB1dCgpIGRpc2FibGVJbml0aWFsRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIEF0aXZhciBsaW1wYXIgaW5wdXQgYW8gcHJlc3Npb25hciBlc2NhcGVcbiAgICBASW5wdXQoKSBlbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogSW1wZWRlIHF1ZSBhIGNoYXZlIGhvbWUvZW5kIHNlamEgcHJvcGFnYWRhIHBhcmEgbWF0LXNlbGVjdCxcbiAgICAgKiBwZXJtaXRpbmRvIG1vdmVyIG8gY3Vyc29yIGRlbnRybyBkYSBlbnRyYWRhIGRlIHBlc3F1aXNhIGVtIHZleiBkZSBuYXZlZ2FyIHBlbGFzIG9ww6fDtWVzXG4gICAgICovXG4gICAgQElucHV0KCkgcHJldmVudEhvbWVFbmRLZXlQcm9wYWdhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRGVzYXRpdmEgYSByb2xhZ2VtIHBhcmEgYXMgb3DDp8O1ZXMgYXRpdmFzIHF1YW5kbyBhIGxpc3RhIGRlIG9ww6fDtWVzIMOpIGFsdGVyYWRhLiDDmnRpbCBwYXJhIHBlc3F1aXNhIGRvIGxhZG8gZG8gc2Vydmlkb3JcbiAgICBASW5wdXQoKSBkaXNhYmxlU2Nyb2xsVG9BY3RpdmVPbk9wdGlvbnNDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBNb3N0cmFyL29jdWx0YXIgbyBib3TDo28gbGltcGFyIHBlc3F1aXNhIGRhIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICBASW5wdXQoKSBoaWRlQ2xlYXJTZWFyY2hCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFJlZmVyw6puY2lhIGFvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICBAVmlld0NoaWxkKCdzZWFyY2hTZWxlY3RJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHNlYXJjaFNlbGVjdElucHV0OiBFbGVtZW50UmVmO1xuXG4gICAgLy8gUmVmZXLDqm5jaWEgYW8gY2FtcG8gZGUgZW50cmFkYSBkZSBwZXNxdWlzYVxuICAgIEBWaWV3Q2hpbGQoJ2lubmVyU2VsZWN0U2VhcmNoJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgaW5uZXJTZWxlY3RTZWFyY2g6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyBBZGljaW9uYSBhIGNsYXNzZSBtYXQtc2VsZWN0LXNlYXJjaC1pbnNpZGUtbWF0LW9wdGlvbiBzZSBvIGl0c3MtaW5wdXQtc2VhcmNoIGVzdGl2ZXJcbiAgICAvLyBkZW50cm8gZG8gbWF0LW9wdGlvblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MubWF0LXNlbGVjdC1zZWFyY2gtaW5zaWRlLW1hdC1vcHRpb24nKVxuICAgIGdldCBpc0luc2lkZU1hdE9wdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5tYXRPcHRpb247XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTWF0U2VsZWN0KSBwdWJsaWMgbWF0U2VsZWN0OiBNYXRTZWxlY3QsXG4gICAgICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTWF0T3B0aW9uKSBwdWJsaWMgbWF0T3B0aW9uOiBNYXRPcHRpb24gPSBudWxsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1hdEZvcm1GaWVsZCkgcHVibGljIG1hdEZvcm1GaWVsZDogTWF0Rm9ybUZpZWxkID0gbnVsbCxcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIERlZmluaXIgY2xhc3NlIGRlIG9ww6fDo28gbWF0IHBlcnNvbmFsaXphZGEgc2UgbyBjb21wb25lbnRlIGZvaSBjb2xvY2FkbyBkZW50cm8gZGUgdW1hIG9ww6fDo28gbWF0XG4gICAgICAgIGlmICh0aGlzLm1hdE9wdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LmFkZCgnY29udGFpbnMtbWF0LXNlbGVjdC1zZWFyY2gnKTtcbiAgICAgICAgICAgIHRoaXMubWF0T3B0aW9uLl9nZXRIb3N0RWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignPGdpcGktc2VsZWN0LXNlYXJjaD4gZGV2ZSBzZXIgY29sb2NhZG8gZGVudHJvIGRlIHVtIGVsZW1lbnRvIDxtYXQtb3B0aW9uPicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUXVhbmRvIG8gcGFpbmVsIHN1c3BlbnNvIGRlIHNlbGXDp8OjbyDDqSBhYmVydG8gb3UgZmVjaGFkb1xuICAgICAgICB0aGlzLm1hdFNlbGVjdC5vcGVuZWRDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlbGF5KDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZvY2FyIG8gY2FtcG8gZGUgcGVzcXVpc2EgYW8gYWJyaXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVJbml0aWFsRm9jdXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBMaW1ww6EtbG8gYW8gZmVjaGFyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyU2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBEZWZpbmlyIG8gcHJpbWVpcm8gaXRlbSBhdGl2byBhcMOzcyBhcyBvcMOnw7VlcyBhbHRlcmFkYXNcbiAgICAgICAgdGhpcy5tYXRTZWxlY3Qub3BlbmVkQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMubWF0U2VsZWN0Lm9wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVmFyacOhdmVsIGRlIGZlY2hhbWVudG8gcGFyYSByYXN0cmVhciBhIHByaW1laXJhIG9ww6fDo28gbWFpcyByZWNlbnRlLlxuICAgICAgICAgICAgICAgICAgICAvLyBQYXJhIGV2aXRhciBxdWUgYSBsaXN0YSByb2xlIHBhcmEgbyB0b3BvIHF1YW5kbyBhcyBvcMOnw7VlcyBzw6NvIGFkaWNpb25hZGFzIGFvIGZpbmFsIGRhIGxpc3RhXG4gICAgICAgICAgICAgICAgICAgIC8vIChwb3IgZXhlbXBsbzogcm9sYWdlbSBpbmZpbml0YSksIGNvbXBhcmFtb3MgYXBlbmFzIGFzIGFsdGVyYcOnw7VlcyBuYXMgcHJpbWVpcmFzIG9ww6fDtWVzIHBhcmFcbiAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5hciBzZSBkZXZlbW9zIGRlZmluaXIgbyBwcmltZWlybyBpdGVtIGNvbW8gYXRpdm8uIElzc28gZXZpdGEgYSByb2xhZ2VtIGRlc25lY2Vzc8OhcmlhXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhcmEgbyB0b3BvIGRhIGxpc3RhIHF1YW5kbyBhcyBvcMOnw7VlcyBzw6NvIGFuZXhhZGFzLCBtYXMgcGVybWl0ZSBxdWUgbyBwcmltZWlybyBpdGVtIGRhIGxpc3RhXG4gICAgICAgICAgICAgICAgICAgIC8vIHNlamEgZGVmaW5pZG8gY29tbyBhdGl2byBwb3IgcGFkcsOjbyBxdWFuZG8gbsOjbyBow6Egc2VsZcOnw6NvIGF0aXZhLlxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNGaXJzdE9wdGlvbjogTWF0T3B0aW9uID0gdGhpcy5fb3B0aW9ucy50b0FycmF5KClbdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCldO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcHRpb25zLmNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2aXRhciBvIGVycm8gXCJleHByZXNzaW9uIGhhcyBiZWVuIGNoYW5nZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnRlciBhIFF1ZXJ5TGlzdCBlbSB1bWEgbWF0cml6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zOiBNYXRPcHRpb25bXSA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPIHZlcmRhZGVpcm8gcHJpbWVpcm8gaXRlbSDDqSBjb21wZW5zYWRvIHBvciAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50Rmlyc3RPcHRpb246IE1hdE9wdGlvbiA9IG9wdGlvbnNbdGhpcy5nZXRPcHRpb25zTGVuZ3RoT2Zmc2V0KCldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxNYXRPcHRpb24+ID0gdGhpcy5tYXRTZWxlY3QuX2tleU1hbmFnZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5TWFuYWdlciAmJiB0aGlzLm1hdFNlbGVjdC5wYW5lbE9wZW4pIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmluaXIgcHJpbWVpcm8gaXRlbSBhdGl2byBlIGxhcmd1cmEgZGUgZW50cmFkYVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVyaWZpcXVlIHNlIGEgcHJpbWVpcmEgb3DDp8OjbyBuZXNzYXMgYWx0ZXJhw6fDtWVzIMOpIGRpZmVyZW50ZSBkYSBhbnRlcmlvci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdE9wdGlvbklzQ2hhbmdlZDogYm9vbGVhbiA9ICF0aGlzLm1hdFNlbGVjdC5jb21wYXJlV2l0aChwcmV2aW91c0ZpcnN0T3B0aW9uLCBjdXJyZW50Rmlyc3RPcHRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0FTTzogQSBwcmltZWlyYSBvcMOnw6NvIMOpIGRpZmVyZW50ZSBhZ29yYS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbmRpY2EgcXVlIGRldmVtb3MgZGVmaW5pLWxvIGNvbW8gYXRpdm8gZSByb2xhciBwYXJhIG8gdG9wby5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RPcHRpb25Jc0NoYW5nZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIWtleU1hbmFnZXIuYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhb3B0aW9ucy5maW5kKChvcHRpb246IE1hdE9wdGlvbik6IGJvb2xlYW4gPT4gdGhpcy5tYXRTZWxlY3QuY29tcGFyZVdpdGgob3B0aW9uLCBrZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFndWFyZGUgYXMgYWx0ZXJhw6fDtWVzIG5hIGxhcmd1cmEgZG8gcGFpbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdHVhbGl6ZSBub3NzYSByZWZlcsOqbmNpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGaXJzdE9wdGlvbiA9IGN1cnJlbnRGaXJzdE9wdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIC8vIEFkaWNpb25lIG91IHJlbW92YSBhIGNsYXNzZSBjc3MgZGVwZW5kZW5kbyBzZSBkZXNlamEgbW9zdHJhciBhIG1lbnNhZ2VtIHNlbSBlbnRyYWRhcyBlbmNvbnRyYWRhc1xuICAgICAgICAvLyBvYnM6IGlzc28gw6kgaGFja3lcbiAgICAgICAgdGhpcy5fc2hvd05vRW50cmllc0ZvdW5kJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgKS5zdWJzY3JpYmUoKHNob3dOb0VudHJpZXNGb3VuZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgLy8gRGVmaW5pciBuZW5odW1hIGNsYXNzZSBkZSBlbnRyYWRhIGVuY29udHJhZGEgbmEgbWF0LW9wdGlvblxuICAgICAgICAgICAgaWYgKHRoaXMubWF0T3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNob3dOb0VudHJpZXNGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdE9wdGlvbi5fZ2V0SG9zdEVsZW1lbnQoKS5jbGFzc0xpc3QuYWRkKCdtYXQtc2VsZWN0LXNlYXJjaC1uby1lbnRyaWVzLWZvdW5kJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRPcHRpb24uX2dldEhvc3RFbGVtZW50KCkuY2xhc3NMaXN0LnJlbW92ZSgnbWF0LXNlbGVjdC1zZWFyY2gtbm8tZW50cmllcy1mb3VuZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVkaW1lbnNpb25lIGEgbGFyZ3VyYSBkZSBlbnRyYWRhIHF1YW5kbyBhIHZpZXdwb3J0IGZvciByZWRpbWVuc2lvbmFkYSxcbiAgICAgICAgLy8gb3Ugc2VqYSwgYSBsYXJndXJhIGRvIGFjaW9uYWRvciBwb2RlIHNlciByZWRpbWVuc2lvbmFkYS5cbiAgICAgICAgdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QucGFuZWxPcGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3B0aW9uc0xpc3QkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICApLnN1YnNjcmliZSgoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAvLyBBdHVhbGl6YXIgdmlzdWFsaXphw6fDo28gcXVhbmRvIGFzIG9ww6fDtWVzIGRpc3BvbsOtdmVpcyBtdWRhcmVtXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaGluZykge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9uVG91Y2hlZDogRnVuY3Rpb24gPSAoXzogYW55KTogdm9pZCA9PiB7IH07XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4gdmFsdWUgIT09IHRoaXMuX2xhc3RFeHRlcm5hbElucHV0VmFsdWUpLFxuICAgICAgICAgICAgdGFwKCgpOiBhbnkgPT4gdGhpcy5fbGFzdEV4dGVybmFsSW5wdXRWYWx1ZSA9IHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KVxuICAgICAgICApLnN1YnNjcmliZShmbik7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhc3RFeHRlcm5hbElucHV0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIHRlY2xhIHByZXNzaW9uYWRhIGNvbSBNYXRTZWxlY3QuXG4gICAgICogUGVybWl0ZSwgcG9yIGV4LiBzZWxlY2lvbmFuZG8gY29tIGEgdGVjbGEgZW50ZXIsIG5hdmVnYW5kbyBjb20gYXMgdGVjbGFzIGRlIHNldGEsIGV0Yy5cbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKi9cbiAgICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICAvLyBFdml0ZSBhIHByb3BhZ2HDp8OjbyBkZSB0b2RvcyBvcyBjYXJhY3RlcmVzIGFsZmFudW3DqXJpY29zIHBhcmEgZXZpdGFyIHByb2JsZW1hcyBkZSBzZWxlw6fDo29cbiAgICAgICAgaWYgKChldmVudC5rZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IEEgJiYgZXZlbnQua2V5Q29kZSA8PSBaKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPj0gWkVSTyAmJiBldmVudC5rZXlDb2RlIDw9IE5JTkUpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PT0gU1BBQ0UpXG4gICAgICAgICAgICB8fCAodGhpcy5wcmV2ZW50SG9tZUVuZEtleVByb3BhZ2F0aW9uICYmIChldmVudC5rZXlDb2RlID09PSBIT01FIHx8IGV2ZW50LmtleUNvZGUgPT09IEVORCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tYXRTZWxlY3QubXVsdGlwbGUgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XG4gICAgICAgICAgICAvLyBSZWN1cGVyZSBvIGZvY28gYXDDs3MgYSBzZWxlw6fDo28gbcO6bHRpcGxhLCBwYXJhIHF1ZSBwb3NzYW1vcyBkaWdpdGFyIGFpbmRhIG1haXNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5fZm9jdXMoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYXNvIGVzcGVjaWFsLCBzZSBjbGljYXIgZW0gRXNjYXBlLCBzZSBhIGVudHJhZGEgZXN0aXZlciB2YXppYSwgZmVjaGUgbyBtZW51IHN1c3BlbnNvLCBjYXNvIGNvbnRyw6FyaW8sIGVzdmF6aWUgbyBjYW1wbyBkZSBwZXNxdWlzYVxuICAgICAgICBpZiAodGhpcy5lbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZCA9PT0gdHJ1ZSAmJiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXQodHJ1ZSk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIGF0aXZhw6fDo28gZGUgY2hhdmUgY29tIE1hdFNlbGVjdC5cbiAgICAgKiBQZXJtaXRlLCBwb3IgZXguIG8gYW7Dum5jaW8gZG8gRGVzY2VuZGVudGUgYXR1YWxtZW50ZSBhdGl2byBwb3IgbGVpdG9yZXMgZGUgdGVsYS5cbiAgICAgKi9cbiAgICBfaGFuZGxlS2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGV2ZW50LmtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyaWFBY3RpdmVEZXNjZW5kYW50SWQ6IHN0cmluZyA9IHRoaXMubWF0U2VsZWN0Ll9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpLmZpbmRJbmRleCgoaXRlbTogTWF0T3B0aW9uKTogYm9vbGVhbiA9PiBpdGVtLmlkID09PSBhcmlhQWN0aXZlRGVzY2VuZGFudElkKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuc2VsZWN0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudCA9IHRoaXMuX29wdGlvbnMudG9BcnJheSgpW2luZGV4XS5fZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnLCBhcmlhQWN0aXZlRGVzY2VuZGFudElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bnNlbGVjdEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2NhbGl6YSBvIGNhbXBvIGRlIGVudHJhZGEgZGUgcGVzcXVpc2FcbiAgICAgKi9cbiAgICBwdWJsaWMgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU2VsZWN0SW5wdXQgfHwgIXRoaXMubWF0U2VsZWN0LnBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2FsdmUgZSByZXN0YXVyZSBvIHNjcm9sbFRvcCBkbyBwYWluZWwsIHBvaXMgc2Vyw6EgcmVkZWZpbmlkbyBwb3IgZm9jdXMgKClcbiAgICAgICAgLy8gb2JzOiBpc3NvIMOpIGhhY2t5XG4gICAgICAgIGNvbnN0IHBhbmVsOiBhbnkgPSB0aGlzLm1hdFNlbGVjdC5wYW5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzY3JvbGxUb3A6IGFueSA9IHBhbmVsLnNjcm9sbFRvcDtcblxuICAgICAgICAvLyBTZXRhIG8gZm9jb1xuICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICBwYW5lbC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgbyB2YWxvciBkZSBwZXNxdWlzYSBhdHVhbFxuICAgICAqIEBwYXJhbSBmb2N1cyBzZSBkZXZlIGZvY2FyIGFww7NzIGEgcmVkZWZpbmnDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyBfcmVzZXQoZm9jdXM/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Zvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgaWYgKGZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIERlZmluYSBhIGxhcmd1cmEgZG8gaW5uZXJTZWxlY3RTZWFyY2ggcGFyYSBhanVzdGFyIGF0w6kgbWVzbW8gYXMgYmFycmFzIGRlIHJvbGFnZW0gcGVyc29uYWxpemFkYXNcbiAgICAgKiAgRSBhcG9pYXIgdG9kb3Mgb3Mgc2lzdGVtYXMgZGUgb3BlcmHDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVJbnB1dFdpZHRoKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaW5uZXJTZWxlY3RTZWFyY2ggfHwgIXRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuaW5uZXJTZWxlY3RTZWFyY2gubmF0aXZlRWxlbWVudDtcbiAgICAgICAgbGV0IHBhbmVsRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgICAgIHdoaWxlIChlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ21hdC1zZWxlY3QtcGFuZWwnKSkge1xuICAgICAgICAgICAgICAgIHBhbmVsRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhbmVsRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5pbm5lclNlbGVjdFNlYXJjaC5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gcGFuZWxFbGVtZW50LmNsaWVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBvIGRlc2xvY2FtZW50byBwYXJhIG8gY29tcHJpbWVudG8gcXVlIHBvZGUgc2VyIGNhdXNhZG8gcGVsbyBtYXRPcHRpb24gb3BjaW9uYWwgdXNhZG8gY29tbyB1bWEgZW50cmFkYSBkZSBwZXNxdWlzYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE9wdGlvbnNMZW5ndGhPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMubWF0T3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnNlbGVjdEFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaFNlbGVjdElucHV0Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
@@ -175,7 +175,7 @@ let GIPIPopoverTrigger = class GIPIPopoverTrigger {
|
|
175
175
|
_subscribeToBackdrop() {
|
176
176
|
if (this._overlayRef) {
|
177
177
|
/** Only subscribe to backdrop if trigger event is click */
|
178
|
-
if (this.triggerEvent
|
178
|
+
if (this.triggerEvent !== 'hover' && this.backdropCloseOnClick) {
|
179
179
|
this._overlayRef.backdropClick()
|
180
180
|
.pipe(takeUntil(this.popoverClosed), takeUntil(this._onDestroy))
|
181
181
|
.subscribe(() => {
|
@@ -258,8 +258,8 @@ let GIPIPopoverTrigger = class GIPIPopoverTrigger {
|
|
258
258
|
_getOverlayConfig() {
|
259
259
|
const overlayState = new OverlayConfig();
|
260
260
|
overlayState.positionStrategy = this._getPosition();
|
261
|
-
/** Display overlay backdrop if trigger event is
|
262
|
-
if (this.triggerEvent
|
261
|
+
/** Display overlay backdrop if trigger event is different of hover */
|
262
|
+
if (this.triggerEvent !== 'hover') {
|
263
263
|
overlayState.hasBackdrop = true;
|
264
264
|
overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
|
265
265
|
}
|
@@ -511,4 +511,4 @@ GIPIPopoverTrigger = __decorate([
|
|
511
511
|
ChangeDetectorRef])
|
512
512
|
], GIPIPopoverTrigger);
|
513
513
|
export { GIPIPopoverTrigger };
|
514
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9wb3BvdmVyL3NoYXJlZC9wb3BvdmVyLXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RDs7O0dBR0c7QUFNSCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQTBFM0IsWUFD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LEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7eURBQXVCO0FBR2pCO0lBQTdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7d0RBQXNCO0FBR3ZCO0lBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7c0RBQW9CO0FBR25CO0lBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7c0RBQW9CO0FBR2pCO0lBQTdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7d0RBQXVCO0FBR2Q7SUFBckMsS0FBSyxDQUFDLDZCQUE2QixDQUFDOztnRUFBc0M7QUFHakU7SUFBVCxNQUFNLEVBQUU7OEJBQVMsWUFBWTtrREFBa0M7QUFHdEQ7SUFBVCxNQUFNLEVBQUU7OEJBQVMsWUFBWTtrREFBa0M7QUE0RWhFO0lBREMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztxQ0FDbkIsVUFBVTs7aURBSXhCO0FBR0Q7SUFEQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3FDQUNuQixVQUFVOztzREFPN0I7QUFHRDtJQURDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7cUNBQ25CLFVBQVU7O3NEQWdCN0I7QUFxVXNDO0lBQXRDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7cUNBQXlCLFVBQVU7OzBEQUl4RTtBQTlmUSxrQkFBa0I7SUFKOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixRQUFRLEVBQUUsZ0JBQWdCO0tBQzdCLENBQUM7SUErRU8sV0FBQSxRQUFRLEVBQUUsQ0FBQTtxQ0FITyxPQUFPO1FBQ0wsVUFBVTtRQUNILGdCQUFnQjtRQUNqQixjQUFjO1FBQ1osaUJBQWlCO0dBL0V4QyxrQkFBa0IsQ0ErZjlCO1NBL2ZZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBIb3Jpem9udGFsQ29ubmVjdGlvblBvcywgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiwgU2Nyb2xsU3RyYXRlZ3ksIFZlcnRpY2FsQ29ubmVjdGlvblBvcyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDb250YWluZXJSZWYsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgR0lQSURvbUhhbmRsZXIgfSBmcm9tICcuLi8uLi9kb20vZG9tLWhhbmRsZXInO1xuaW1wb3J0IHsgdGhyb3dQb3BvdmVyTWlzc2luZ0Vycm9yIH0gZnJvbSAnLi9wb3BvdmVyLWVycm9ycyc7XG5pbXBvcnQgeyBQb3BvdmVyUGFuZWwsIFRhcmdldCB9IGZyb20gJy4vcG9wb3Zlci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBvcG92ZXJQb3NpdGlvblgsIFBvcG92ZXJQb3NpdGlvblksIFBvcG92ZXJTY3JvbGxTdHJhdGVneSwgUG9wb3ZlclRyaWdnZXJFdmVudCB9IGZyb20gJy4vcG9wb3Zlci10eXBlcyc7XG5cbi8qKlxuICogRXN0YSBkaXJldGl2YSBkZXN0aW5hLXNlIGEgc2VyIHVzYWRhIGVtIGNvbmp1bnRvIGNvbSB1bWEgdGFnIGdpcGktcG9wb3Zlci5cbiAqIEVsZSDDqSByZXNwb25zw6F2ZWwgcG9yIGFsdGVybmFyIGEgZXhpYmnDp8OjbyBkYSBpbnN0w6JuY2lhIHBvcG92ZXIgZm9ybmVjaWRhLlxuICovXG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BvcG92ZXJUcmlnZ2VyRm9yXScsXG4gICAgZXhwb3J0QXM6ICdwb3BvdmVyVHJpZ2dlcidcbn0pXG5leHBvcnQgY2xhc3MgR0lQSVBvcG92ZXJUcmlnZ2VyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHsgLy8gdHNsaW50OmRpc2FibGUtbGluZTpkaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oYXNwb3B1cCcpIGFyaWFIYXNwb3B1cDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwb3BvdmVyT3BlbmVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwb3BvdmVyQ2xvc2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWw8YW55PjtcbiAgICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfcG9wb3Zlck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9oYWx0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfYmFja2Ryb3BTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9wb3NpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9tb3VzZW92ZXJUaW1lcjogYW55O1xuXG4gICAgLy8gdHJhY2tpbmcgaW5wdXQgdHlwZSBpcyBuZWNlc3Nhcnkgc28gaXQncyBwb3NzaWJsZSB0byBvbmx5IGF1dG8tZm9jdXNcbiAgICAvLyB0aGUgZmlyc3QgaXRlbSBvZiB0aGUgbGlzdCB3aGVuIHRoZSBwb3BvdmVyIGlzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkXG4gICAgcHJpdmF0ZSBfb3BlbmVkQnlNb3VzZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIGluc3RhbmNlIHRoYXQgdGhlIHRyaWdnZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclRyaWdnZXJGb3InKSBwb3BvdmVyOiBQb3BvdmVyUGFuZWw7XG5cbiAgICAvKiogUmVmZXJlbmNlcyB0aGUgcG9wb3ZlciB0YXJnZXQgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gICAgQElucHV0KCdwb3BvdmVyVGFyZ2V0QXQnKSB0YXJnZXRFbGVtZW50OiBUYXJnZXQ7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgaW4gdGhlIFggYXhpcyAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclBvc2l0aW9uWCcpIHBvc2l0aW9uWDogUG9wb3ZlclBvc2l0aW9uWDtcblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWSBheGlzICovXG4gICAgQElucHV0KCdwb3BvdmVyUG9zaXRpb25ZJykgcG9zaXRpb25ZOiBQb3BvdmVyUG9zaXRpb25ZO1xuXG4gICAgLyoqIFBvcG92ZXIgdHJpZ2dlciBldmVudCAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclRyaWdnZXJPbicpIHRyaWdnZXJFdmVudDogUG9wb3ZlclRyaWdnZXJFdmVudDtcblxuICAgIC8qKiBQb3BvdmVyIGRlbGF5ICovXG4gICAgQElucHV0KCdwb3BvdmVyRW50ZXJEZWxheScpIGVudGVyRGVsYXk6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGRlbGF5ICovXG4gICAgQElucHV0KCdwb3BvdmVyTGVhdmVEZWxheScpIGxlYXZlRGVsYXk6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIG92ZXJsYXAgdHJpZ2dlciAqL1xuICAgIEBJbnB1dCgncG9wb3Zlck92ZXJsYXBUcmlnZ2VyJykgb3ZlcmxhcFRyaWdnZXI6IGJvb2xlYW47XG5cbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHggKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJPZmZzZXRYJykgdGFyZ2V0T2Zmc2V0WDogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB5ICovXG4gICAgQElucHV0KCdwb3BvdmVyT2Zmc2V0WScpIHRhcmdldE9mZnNldFk6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IG9mZnNldCB4ICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dPZmZzZXRYJykgYXJyb3dPZmZzZXRYOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBhcnJvdyB3aWR0aCAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckFycm93V2lkdGgnKSBhcnJvd1dpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBhcnJvdyBjb2xvciAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckFycm93Q29sb3InKSBhcnJvd0NvbG9yOiBzdHJpbmc7XG5cbiAgICAvKiogUG9wb3ZlciBjb250YWluZXIgY2xvc2Ugb24gY2xpY2sgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJDbG9zZU9uQ2xpY2snKSBjbG9zZU9uQ2xpY2s6IGJvb2xlYW47XG5cbiAgICAvKiogUG9wb3ZlciBiYWNrZHJvcCBjbG9zZSBvbiBjbGljayAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckJhY2tkcm9wQ2xvc2VPbkNsaWNrJykgYmFja2Ryb3BDbG9zZU9uQ2xpY2s6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBwb3BvdmVyIGlzIG9wZW5lZC4gKi9cbiAgICBAT3V0cHV0KCkgb3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIHBvcG92ZXIgaXMgY2xvc2VkLiAqL1xuICAgIEBPdXRwdXQoKSBjbG9zZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkgeyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoZWNrUG9wb3ZlcigpO1xuICAgICAgICB0aGlzLl9zZXRDdXJyZW50Q29uZmlnKCk7XG4gICAgICAgIHRoaXMucG9wb3Zlci5jbG9zZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZVBvcG92ZXIoKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveVBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDdXJyZW50Q29uZmlnKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblggPT09ICdiZWZvcmUnIHx8IHRoaXMucG9zaXRpb25YID09PSAnYWZ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID0gdGhpcy5wb3NpdGlvblg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblkgPT09ICdhYm92ZScgfHwgdGhpcy5wb3NpdGlvblkgPT09ICdiZWxvdycpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPSB0aGlzLnBvc2l0aW9uWTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9IHRoaXMudHJpZ2dlckV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZW50ZXJEZWxheSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmVudGVyRGVsYXkgPSB0aGlzLmVudGVyRGVsYXk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sZWF2ZURlbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSA9IHRoaXMubGVhdmVEZWxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXBUcmlnZ2VyID09PSB0cnVlIHx8IHRoaXMub3ZlcmxhcFRyaWdnZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIub3ZlcmxhcFRyaWdnZXIgPSB0aGlzLm92ZXJsYXBUcmlnZ2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0T2Zmc2V0WCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFggPSB0aGlzLnRhcmdldE9mZnNldFg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXRPZmZzZXRZKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSA9IHRoaXMudGFyZ2V0T2Zmc2V0WTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFycm93T2Zmc2V0WCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmFycm93T2Zmc2V0WCA9IHRoaXMuYXJyb3dPZmZzZXRYO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJyb3dXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmFycm93V2lkdGggPSB0aGlzLmFycm93V2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcnJvd0NvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dDb2xvciA9IHRoaXMuYXJyb3dDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25DbGljayA9PT0gdHJ1ZSB8fCB0aGlzLmNsb3NlT25DbGljayA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5jbG9zZU9uQ2xpY2sgPSB0aGlzLmNsb3NlT25DbGljaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9wb3Zlci5zZXRDdXJyZW50U3R5bGVzKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gKi9cbiAgICBnZXQgcG9wb3Zlck9wZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9wb3BvdmVyT3BlbjsgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wb3ZlcigpO1xuICAgICAgICAgICAgfSwgdGhpcy5wb3BvdmVyLmVudGVyRGVsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VvdmVyVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVyT3Blbikge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5jbG9zZURpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5wb3BvdmVyLmxlYXZlRGVsYXkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBwb3BvdmVyIGJldHdlZW4gdGhlIG9wZW4gYW5kIGNsb3NlZCBzdGF0ZXMuICovXG4gICAgdG9nZ2xlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuID8gdGhpcy5jbG9zZVBvcG92ZXIoKSA6IHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHBvcG92ZXIuICovXG4gICAgb3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4gJiYgIXRoaXMuX2hhbHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZU92ZXJsYXkoKS5hdHRhY2godGhpcy5fcG9ydGFsKTtcblxuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl92aWV3Q29udGFpbmVyUmVmKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5fdmlld0NvbnRhaW5lclJlZi5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoOiBudW1iZXIgPSBHSVBJRG9tSGFuZGxlci5nZXRXaWR0aCgodGhpcy5fdmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGgpIHx8ICh0aGlzLnBvcG92ZXIucG9wb3ZlcldpZHRoID09PSAnYXV0bycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0JhY2tkcm9wKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0RldGFjaG1lbnRzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2luaXRQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBwb3BvdmVyLiAqL1xuICAgIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIHRoZSBwb3BvdmVyIGZyb20gdGhlIERPTS4gKi9cbiAgICBkZXN0cm95UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX21vdXNlb3ZlclRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VvdmVyVGltZXIpO1xuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHRoZSBwb3BvdmVyIHRyaWdnZXIuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYXBwLiAqL1xuICAgIGdldCBkaXIoKTogRGlyZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpciAmJiB0aGlzLl9kaXIudmFsdWUgPT09ICdydGwnID8gJ3J0bCcgOiAnbHRyJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgcG9wb3ZlciBjbG9zZXMgd2hlbiB0aGUgb3ZlcmxheSBiYWNrZHJvcCBpcyBjbGlja2VkLlxuICAgICogV2UgZG8gbm90IHVzZSBmaXJzdCgpIGhlcmUgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBub3QgY2F0Y2ggY2xpY2tzIGZyb20gd2l0aGluXG4gICAgKiB0aGUgcG9wb3ZlciwgYW5kIGl0IHdvdWxkIGZhaWwgdG8gdW5zdWJzY3JpYmUgcHJvcGVybHkuIEluc3RlYWQsIHdlIHVuc3Vic2NyaWJlXG4gICAgKiBleHBsaWNpdGx5IHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkIG9yIGRlc3Ryb3llZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICAvKiogT25seSBzdWJzY3JpYmUgdG8gYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xuICAgICAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnY2xpY2snICYmIHRoaXMuYmFja2Ryb3BDbG9zZU9uQ2xpY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIuX2VtaXRDbG9zZUV2ZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9EZXRhY2htZW50cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5wb3BvdmVyQ2xvc2VkKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRQb3BvdmVyQ2xvc2VkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIHBvcG92ZXIgc3RhdGUgdG8gb3BlbiBhbmQgZm9jdXNlcyB0aGUgZmlyc3QgaXRlbSBpZlxuICAgICogdGhlIHBvcG92ZXIgd2FzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfaW5pdFBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFBvcG92ZXJPcGVuZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIHJlc2V0cyB0aGUgcG9wb3ZlciB3aGVuIGl0J3MgY2xvc2VkLCBtb3N0IGltcG9ydGFudGx5IHJlc3RvcmluZ1xuICAgICogZm9jdXMgdG8gdGhlIHBvcG92ZXIgdHJpZ2dlciBpZiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9yZXNldFBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcblxuICAgICAgICAvLyBGb2N1cyBvbmx5IG5lZWRzIHRvIGJlIHJlc2V0IHRvIHRoZSBob3N0IGVsZW1lbnQgaWYgdGhlIHBvcG92ZXIgd2FzIG9wZW5lZFxuICAgICAgICAvLyBieSB0aGUga2V5Ym9hcmQgYW5kIG1hbnVhbGx5IHNoaWZ0ZWQgdG8gdGhlIGZpcnN0IHBvcG92ZXIgaXRlbS5cbiAgICAgICAgaWYgKCF0aGlzLl9vcGVuZWRCeU1vdXNlKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3BlbmVkQnlNb3VzZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBzZXQgc3RhdGUgcmF0aGVyIHRoYW4gdG9nZ2xlIHRvIHN1cHBvcnQgdHJpZ2dlcnMgc2hhcmluZyBhIHBvcG92ZXIgKi9cbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyT3BlbmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3BlbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogc2V0IHN0YXRlIHJhdGhlciB0aGFuIHRvZ2dsZSB0byBzdXBwb3J0IHRyaWdnZXJzIHNoYXJpbmcgYSBwb3BvdmVyICovXG4gICAgcHJpdmF0ZSBfc2V0UG9wb3ZlckNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3BlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDbG9zZWQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgYSB2YWxpZCBpbnN0YW5jZSBvZiBNZFBvcG92ZXIgaGFzIGJlZW4gcGFzc2VkIGludG9cbiAgICAqICBtZFBvcG92ZXJUcmlnZ2VyRm9yLiBJZiBub3QsIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG4gICAgKi9cbiAgICBwcml2YXRlIF9jaGVja1BvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5wb3BvdmVyKSB7XG4gICAgICAgICAgICB0aHJvd1BvcG92ZXJNaXNzaW5nRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICogIFRoaXMgbWV0aG9kIGNyZWF0ZXMgdGhlIG92ZXJsYXkgZnJvbSB0aGUgcHJvdmlkZWQgcG9wb3ZlcidzIHRlbXBsYXRlIGFuZCBzYXZlcyBpdHNcbiAgICAqICBPdmVybGF5UmVmIHNvIHRoYXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBET00gd2hlbiBvcGVuUG9wb3ZlciBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnBvcG92ZXIudGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpO1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9Qb3NpdGlvbnMoY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG5lZWRlZCB0byBjcmVhdGUgdGhlIG92ZXJsYXksIHRoZSBPdmVybGF5Q29uZmlnLlxuICAgICogQHJldHVybnMgT3ZlcmxheUNvbmZpZ1xuICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVN0YXRlID0gbmV3IE92ZXJsYXlDb25maWcoKTtcbiAgICAgICAgb3ZlcmxheVN0YXRlLnBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9nZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIC8qKiBEaXNwbGF5IG92ZXJsYXkgYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuYmFja2Ryb3BDbGFzcyA9ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCc7XG4gICAgICAgIH1cblxuICAgICAgICBvdmVybGF5U3RhdGUuZGlyZWN0aW9uID0gdGhpcy5kaXI7XG4gICAgICAgIG92ZXJsYXlTdGF0ZS5zY3JvbGxTdHJhdGVneSA9IHRoaXMuX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneSh0aGlzLnBvcG92ZXIuc2Nyb2xsU3RyYXRlZ3kpO1xuXG4gICAgICAgIHJldHVybiBvdmVybGF5U3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2Nyb2xsIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGNkay9vdmVybGF5LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneShzdHJhdGVneTogUG9wb3ZlclNjcm9sbFN0cmF0ZWd5KTogU2Nyb2xsU3RyYXRlZ3kge1xuICAgICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdub29wJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XG4gICAgICAgICAgICBjYXNlICdibG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICAgICAgY2FzZSAncmVwb3NpdGlvbic6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBMaXN0ZW5zIHRvIGNoYW5nZXMgaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5IGFuZCBzZXRzIHRoZSBjb3JyZWN0IGNsYXNzZXNcbiAgICAqIG9uIHRoZSBwb3BvdmVyIGJhc2VkIG9uIHRoZSBuZXcgcG9zaXRpb24uIFRoaXMgZW5zdXJlcyB0aGUgYW5pbWF0aW9uIG9yaWdpbiBpcyBhbHdheXNcbiAgICAqIGNvcnJlY3QsIGV2ZW4gaWYgYSBmYWxsYmFjayBwb3NpdGlvbiBpcyB1c2VkIGZvciB0aGUgb3ZlcmxheS5cbiAgICAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUG9zaXRpb25zKHBvc2l0aW9uOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24gPSBwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3Npc2lvblg6IFBvcG92ZXJQb3NpdGlvblggPSBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVggPT09ICdzdGFydCcgPyAnYWZ0ZXInIDogJ2JlZm9yZSc7XG4gICAgICAgICAgICBsZXQgcG9zaXNpb25ZOiBQb3BvdmVyUG9zaXRpb25ZID0gY2hhbmdlLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlZID09PSAndG9wJyA/ICdiZWxvdycgOiAnYWJvdmUnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlcikge1xuICAgICAgICAgICAgICAgIHBvc2lzaW9uWSA9IHBvc2lzaW9uWSA9PT0gJ2JlbG93JyA/ICdhYm92ZScgOiAnYmVsb3cnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID0gcG9zaXNpb25YO1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPSBwb3Npc2lvblk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5zZXRQb3NpdGlvbkNsYXNzZXMocG9zaXNpb25YLCBwb3Npc2lvblkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBwb3NpdGlvbiBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXksIHNvIHRoZSBwb3BvdmVyIGlzIHByb3Blcmx5IGNvbm5lY3RlZFxuICAgICogdG8gdGhlIHRyaWdnZXIuXG4gICAgKiBAcmV0dXJucyBDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5XG4gICAgKi9cbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBbb3JpZ2luWCwgb3JpZ2luRmFsbGJhY2tYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID09PSAnYmVmb3JlJyA/IFsnZW5kJywgJ3N0YXJ0J10gOiBbJ3N0YXJ0JywgJ2VuZCddO1xuXG4gICAgICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPT09ICdhYm92ZScgPyBbJ2JvdHRvbScsICd0b3AnXSA6IFsndG9wJywgJ2JvdHRvbSddO1xuXG4gICAgICAgIC8vIGxldCBvcmlnaW5ZID0gb3ZlcmxheVk7XG4gICAgICAgIC8vIGxldCBmYWxsYmFja09yaWdpblkgPSBvdmVybGF5RmFsbGJhY2tZO1xuXG4gICAgICAgIGxldCBvcmlnaW5ZOiAndG9wJyB8ICdib3R0b20nID0gb3ZlcmxheVk7XG4gICAgICAgIGxldCBvcmlnaW5GYWxsYmFja1k6ICd0b3AnIHwgJ2JvdHRvbScgPSBvdmVybGF5RmFsbGJhY2tZO1xuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2VuZCcgPSBvcmlnaW5YO1xuICAgICAgICBjb25zdCBvdmVybGF5RmFsbGJhY2tYOiAnc3RhcnQnIHwgJ2VuZCcgPSBvcmlnaW5GYWxsYmFja1g7XG5cbiAgICAgICAgLyoqIFJldmVyc2Ugb3ZlcmxheVkgYW5kIGZhbGxiYWNrT3ZlcmxheVkgd2hlbiBvdmVybGFwVHJpZ2dlciBpcyBmYWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlcikge1xuICAgICAgICAgICAgb3JpZ2luWSA9IG92ZXJsYXlZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgICAgICBvcmlnaW5GYWxsYmFja1kgPSBvdmVybGF5RmFsbGJhY2tZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb2Zmc2V0WDogbnVtYmVyID0gMDtcbiAgICAgICAgbGV0IG9mZnNldFk6IG51bWJlciA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFgpKSkge1xuICAgICAgICAgICAgb2Zmc2V0WCA9IE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkgJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSkpKSB7XG4gICAgICAgICAgICBvZmZzZXRZID0gTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3Igb3ZlcnJpZGluZyBwb3NpdGlvbiBlbGVtZW50LCB3aGVuIHBvcG92ZXJUYXJnZXRBdCBoYXMgYSB2YWxpZCBlbGVtZW50IHJlZmVyZW5jZS5cbiAgICAgICAgICogVXNlZnVsIGZvciBzdGlja2luZyBwb3BvdmVyIHRvIHBhcmVudCBlbGVtZW50IGFuZCBvZmZzZXR0aW5nIGFycm93IHRvIHRyaWdnZXIgZWxlbWVudC5cbiAgICAgICAgICogSWYgdW5kZWZpbmVkIGRlZmF1bHRzIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PiA9IHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRFbGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNvbnRhaW5lclBvc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLnRhcmdldEVsZW1lbnQuX2VsZW1lbnRSZWY7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbih0cnVlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblgsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRYKG9mZnNldFgpXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRZKG9mZnNldFkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsZWFuVXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIF9oYW5kbGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50ICYmICFpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fb3BlbmVkQnlNb3VzZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9wb3BvdmVyL3NoYXJlZC9wb3BvdmVyLXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RDs7O0dBR0c7QUFNSCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQTBFM0IsWUFD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LGdCQUFnQixDQUFDOzt5REFBdUI7QUFHakI7SUFBN0IsS0FBSyxDQUFDLHFCQUFxQixDQUFDOzt3REFBc0I7QUFHdkI7SUFBM0IsS0FBSyxDQUFDLG1CQUFtQixDQUFDOztzREFBb0I7QUFHbkI7SUFBM0IsS0FBSyxDQUFDLG1CQUFtQixDQUFDOztzREFBb0I7QUFHakI7SUFBN0IsS0FBSyxDQUFDLHFCQUFxQixDQUFDOzt3REFBdUI7QUFHZDtJQUFyQyxLQUFLLENBQUMsNkJBQTZCLENBQUM7O2dFQUFzQztBQUdqRTtJQUFULE1BQU0sRUFBRTs4QkFBUyxZQUFZO2tEQUFrQztBQUd0RDtJQUFULE1BQU0sRUFBRTs4QkFBUyxZQUFZO2tEQUFrQztBQTRFaEU7SUFEQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3FDQUNuQixVQUFVOztpREFJeEI7QUFHRDtJQURDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7cUNBQ25CLFVBQVU7O3NEQU83QjtBQUdEO0lBREMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztxQ0FDbkIsVUFBVTs7c0RBZ0I3QjtBQXFVc0M7SUFBdEMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztxQ0FBeUIsVUFBVTs7MERBSXhFO0FBOWZRLGtCQUFrQjtJQUo5QixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLFFBQVEsRUFBRSxnQkFBZ0I7S0FDN0IsQ0FBQztJQStFTyxXQUFBLFFBQVEsRUFBRSxDQUFBO3FDQUhPLE9BQU87UUFDTCxVQUFVO1FBQ0gsZ0JBQWdCO1FBQ2pCLGNBQWM7UUFDWixpQkFBaUI7R0EvRXhDLGtCQUFrQixDQStmOUI7U0EvZlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIEhvcml6b250YWxDb25uZWN0aW9uUG9zLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmLCBTY3JvbGxTdHJhdGVneSwgVmVydGljYWxDb25uZWN0aW9uUG9zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NvbnRhaW5lclJlZiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9vYmplY3QudXRpbCc7XG5pbXBvcnQgeyBTdHJpbmdVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS91dGlscy9zdHJpbmcudXRpbCc7XG5pbXBvcnQgeyBHSVBJRG9tSGFuZGxlciB9IGZyb20gJy4uLy4uL2RvbS9kb20taGFuZGxlcic7XG5pbXBvcnQgeyB0aHJvd1BvcG92ZXJNaXNzaW5nRXJyb3IgfSBmcm9tICcuL3BvcG92ZXItZXJyb3JzJztcbmltcG9ydCB7IFBvcG92ZXJQYW5lbCwgVGFyZ2V0IH0gZnJvbSAnLi9wb3BvdmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgUG9wb3ZlclBvc2l0aW9uWCwgUG9wb3ZlclBvc2l0aW9uWSwgUG9wb3ZlclNjcm9sbFN0cmF0ZWd5LCBQb3BvdmVyVHJpZ2dlckV2ZW50IH0gZnJvbSAnLi9wb3BvdmVyLXR5cGVzJztcblxuLyoqXG4gKiBFc3RhIGRpcmV0aXZhIGRlc3RpbmEtc2UgYSBzZXIgdXNhZGEgZW0gY29uanVudG8gY29tIHVtYSB0YWcgZ2lwaS1wb3BvdmVyLlxuICogRWxlIMOpIHJlc3BvbnPDoXZlbCBwb3IgYWx0ZXJuYXIgYSBleGliacOnw6NvIGRhIGluc3TDom5jaWEgcG9wb3ZlciBmb3JuZWNpZGEuXG4gKi9cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcG9wb3ZlclRyaWdnZXJGb3JdJyxcbiAgICBleHBvcnRBczogJ3BvcG92ZXJUcmlnZ2VyJ1xufSlcbmV4cG9ydCBjbGFzcyBHSVBJUG9wb3ZlclRyaWdnZXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgeyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lOmRpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhhc3BvcHVwJykgYXJpYUhhc3BvcHVwOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIHBvcG92ZXJPcGVuZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHBvcG92ZXJDbG9zZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBfcG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9wb3BvdmVyT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2hhbHQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9iYWNrZHJvcFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfZGV0YWNobWVudHNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgX21vdXNlb3ZlclRpbWVyOiBhbnk7XG5cbiAgICAvLyB0cmFja2luZyBpbnB1dCB0eXBlIGlzIG5lY2Vzc2FyeSBzbyBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgYXV0by1mb2N1c1xuICAgIC8vIHRoZSBmaXJzdCBpdGVtIG9mIHRoZSBsaXN0IHdoZW4gdGhlIHBvcG92ZXIgaXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmRcbiAgICBwcml2YXRlIF9vcGVuZWRCeU1vdXNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIFJlZmVyZW5jZXMgdGhlIHBvcG92ZXIgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gICAgQElucHV0KCdwb3BvdmVyVHJpZ2dlckZvcicpIHBvcG92ZXI6IFBvcG92ZXJQYW5lbDtcblxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIHRhcmdldCBpbnN0YW5jZSB0aGF0IHRoZSB0cmlnZ2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJUYXJnZXRBdCcpIHRhcmdldEVsZW1lbnQ6IFRhcmdldDtcblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWCBheGlzICovXG4gICAgQElucHV0KCdwb3BvdmVyUG9zaXRpb25YJykgcG9zaXRpb25YOiBQb3BvdmVyUG9zaXRpb25YO1xuXG4gICAgLyoqIFBvc2l0aW9uIG9mIHRoZSBwb3BvdmVyIGluIHRoZSBZIGF4aXMgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJQb3NpdGlvblknKSBwb3NpdGlvblk6IFBvcG92ZXJQb3NpdGlvblk7XG5cbiAgICAvKiogUG9wb3ZlciB0cmlnZ2VyIGV2ZW50ICovXG4gICAgQElucHV0KCdwb3BvdmVyVHJpZ2dlck9uJykgdHJpZ2dlckV2ZW50OiBQb3BvdmVyVHJpZ2dlckV2ZW50O1xuXG4gICAgLyoqIFBvcG92ZXIgZGVsYXkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJFbnRlckRlbGF5JykgZW50ZXJEZWxheTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgZGVsYXkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJMZWF2ZURlbGF5JykgbGVhdmVEZWxheTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgb3ZlcmxhcCB0cmlnZ2VyICovXG4gICAgQElucHV0KCdwb3BvdmVyT3ZlcmxhcFRyaWdnZXInKSBvdmVybGFwVHJpZ2dlcjogYm9vbGVhbjtcblxuICAgIC8qKiBQb3BvdmVyIHRhcmdldCBvZmZzZXQgeCAqL1xuICAgIEBJbnB1dCgncG9wb3Zlck9mZnNldFgnKSB0YXJnZXRPZmZzZXRYOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHkgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJPZmZzZXRZJykgdGFyZ2V0T2Zmc2V0WTogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgYXJyb3cgb2Zmc2V0IHggKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJBcnJvd09mZnNldFgnKSBhcnJvd09mZnNldFg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IHdpZHRoICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dXaWR0aCcpIGFycm93V2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IGNvbG9yICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dDb2xvcicpIGFycm93Q29sb3I6IHN0cmluZztcblxuICAgIC8qKiBQb3BvdmVyIGNvbnRhaW5lciBjbG9zZSBvbiBjbGljayAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckNsb3NlT25DbGljaycpIGNsb3NlT25DbGljazogYm9vbGVhbjtcblxuICAgIC8qKiBQb3BvdmVyIGJhY2tkcm9wIGNsb3NlIG9uIGNsaWNrICovXG4gICAgQElucHV0KCdwb3BvdmVyQmFja2Ryb3BDbG9zZU9uQ2xpY2snKSBiYWNrZHJvcENsb3NlT25DbGljazogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIHBvcG92ZXIgaXMgb3BlbmVkLiAqL1xuICAgIEBPdXRwdXQoKSBvcGVuZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgcG9wb3ZlciBpcyBjbG9zZWQuICovXG4gICAgQE91dHB1dCgpIGNsb3NlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHB1YmxpYyBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7IH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hlY2tQb3BvdmVyKCk7XG4gICAgICAgIHRoaXMuX3NldEN1cnJlbnRDb25maWcoKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlUG9wb3ZlcigpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEN1cnJlbnRDb25maWcoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWCA9PT0gJ2JlZm9yZScgfHwgdGhpcy5wb3NpdGlvblggPT09ICdhZnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblggPSB0aGlzLnBvc2l0aW9uWDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uWSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvc2l0aW9uWSA9PT0gJ2JlbG93Jykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWSA9IHRoaXMucG9zaXRpb25ZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID0gdGhpcy50cmlnZ2VyRXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbnRlckRlbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSA9IHRoaXMuZW50ZXJEZWxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxlYXZlRGVsYXkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5sZWF2ZURlbGF5ID0gdGhpcy5sZWF2ZURlbGF5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3ZlcmxhcFRyaWdnZXIgPT09IHRydWUgfHwgdGhpcy5vdmVybGFwVHJpZ2dlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlciA9IHRoaXMub3ZlcmxhcFRyaWdnZXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXRPZmZzZXRYKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCA9IHRoaXMudGFyZ2V0T2Zmc2V0WDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhcmdldE9mZnNldFkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZID0gdGhpcy50YXJnZXRPZmZzZXRZO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJyb3dPZmZzZXRYKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dPZmZzZXRYID0gdGhpcy5hcnJvd09mZnNldFg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcnJvd1dpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dXaWR0aCA9IHRoaXMuYXJyb3dXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFycm93Q29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5hcnJvd0NvbG9yID0gdGhpcy5hcnJvd0NvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VPbkNsaWNrID09PSB0cnVlIHx8IHRoaXMuY2xvc2VPbkNsaWNrID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNsb3NlT25DbGljayA9IHRoaXMuY2xvc2VPbkNsaWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMoKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBvcGVuLiAqL1xuICAgIGdldCBwb3BvdmVyT3BlbigpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuOyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlRW50ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFsdCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2hvdmVyJykge1xuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XG4gICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIuZW50ZXJEZWxheSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJywgWyckZXZlbnQnXSlcbiAgICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZW92ZXJUaW1lcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyLmNsb3NlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRvZ2dsZXMgdGhlIHBvcG92ZXIgYmV0d2VlbiB0aGUgb3BlbiBhbmQgY2xvc2VkIHN0YXRlcy4gKi9cbiAgICB0b2dnbGVQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW4gPyB0aGlzLmNsb3NlUG9wb3ZlcigpIDogdGhpcy5vcGVuUG9wb3ZlcigpO1xuICAgIH1cblxuICAgIC8qKiBPcGVucyB0aGUgcG9wb3Zlci4gKi9cbiAgICBvcGVuUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyT3BlbiAmJiAhdGhpcy5faGFsdCkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpLmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuXG4gICAgICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX3ZpZXdDb250YWluZXJSZWYpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGg6IG51bWJlciA9IEdJUElEb21IYW5kbGVyLmdldFdpZHRoKCh0aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkodGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCkgfHwgKHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGggPT09ICdhdXRvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvcG92ZXJXaWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvQmFja2Ryb3AoKTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvRGV0YWNobWVudHMoKTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdFBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHBvcG92ZXIuICovXG4gICAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0UG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFJlbW92ZXMgdGhlIHBvcG92ZXIgZnJvbSB0aGUgRE9NLiAqL1xuICAgIGRlc3Ryb3lQb3BvdmVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9tb3VzZW92ZXJUaW1lcik7XG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9jbGVhblVwU3Vic2NyaXB0aW9ucygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIHBvcG92ZXIgdHJpZ2dlci4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBhcHAuICovXG4gICAgZ2V0IGRpcigpOiBEaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlyICYmIHRoaXMuX2Rpci52YWx1ZSA9PT0gJ3J0bCcgPyAncnRsJyA6ICdsdHInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IHRoZSBwb3BvdmVyIGNsb3NlcyB3aGVuIHRoZSBvdmVybGF5IGJhY2tkcm9wIGlzIGNsaWNrZWQuXG4gICAgKiBXZSBkbyBub3QgdXNlIGZpcnN0KCkgaGVyZSBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIG5vdCBjYXRjaCBjbGlja3MgZnJvbSB3aXRoaW5cbiAgICAqIHRoZSBwb3BvdmVyLCBhbmQgaXQgd291bGQgZmFpbCB0byB1bnN1YnNjcmliZSBwcm9wZXJseS4gSW5zdGVhZCwgd2UgdW5zdWJzY3JpYmVcbiAgICAqIGV4cGxpY2l0bHkgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQgb3IgZGVzdHJveWVkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9CYWNrZHJvcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIC8qKiBPbmx5IHN1YnNjcmliZSB0byBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXG4gICAgICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgIT09ICdob3ZlcicgJiYgdGhpcy5iYWNrZHJvcENsb3NlT25DbGljaykge1xuICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMucG9wb3ZlckNsb3NlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5fZW1pdENsb3NlRXZlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb0RldGFjaG1lbnRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgcG9wb3ZlciBzdGF0ZSB0byBvcGVuIGFuZCBmb2N1c2VzIHRoZSBmaXJzdCBpdGVtIGlmXG4gICAgKiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9pbml0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UG9wb3Zlck9wZW5lZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgcmVzZXRzIHRoZSBwb3BvdmVyIHdoZW4gaXQncyBjbG9zZWQsIG1vc3QgaW1wb3J0YW50bHkgcmVzdG9yaW5nXG4gICAgKiBmb2N1cyB0byB0aGUgcG9wb3ZlciB0cmlnZ2VyIGlmIHRoZSBwb3BvdmVyIHdhcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX3Jlc2V0UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UG9wb3ZlckNsb3NlZCgpO1xuXG4gICAgICAgIC8vIEZvY3VzIG9ubHkgbmVlZHMgdG8gYmUgcmVzZXQgdG8gdGhlIGhvc3QgZWxlbWVudCBpZiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkXG4gICAgICAgIC8vIGJ5IHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2hpZnRlZCB0byB0aGUgZmlyc3QgcG9wb3ZlciBpdGVtLlxuICAgICAgICBpZiAoIXRoaXMuX29wZW5lZEJ5TW91c2UpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcGVuZWRCeU1vdXNlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIHNldCBzdGF0ZSByYXRoZXIgdGhhbiB0b2dnbGUgdG8gc3VwcG9ydCB0cmlnZ2VycyBzaGFyaW5nIGEgcG9wb3ZlciAqL1xuICAgIHByaXZhdGUgX3NldFBvcG92ZXJPcGVuZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyT3BlbmVkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBzZXQgc3RhdGUgcmF0aGVyIHRoYW4gdG9nZ2xlIHRvIHN1cHBvcnQgdHJpZ2dlcnMgc2hhcmluZyBhIHBvcG92ZXIgKi9cbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyQ2xvc2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlckNsb3NlZC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqICBUaGlzIG1ldGhvZCBjaGVja3MgdGhhdCBhIHZhbGlkIGluc3RhbmNlIG9mIE1kUG9wb3ZlciBoYXMgYmVlbiBwYXNzZWQgaW50b1xuICAgICogIG1kUG9wb3ZlclRyaWdnZXJGb3IuIElmIG5vdCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cbiAgICAqL1xuICAgIHByaXZhdGUgX2NoZWNrUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIpIHtcbiAgICAgICAgICAgIHRocm93UG9wb3Zlck1pc3NpbmdFcnJvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgb3ZlcmxheSBmcm9tIHRoZSBwcm92aWRlZCBwb3BvdmVyJ3MgdGVtcGxhdGUgYW5kIHNhdmVzIGl0c1xuICAgICogIE92ZXJsYXlSZWYgc28gdGhhdCBpdCBjYW4gYmUgYXR0YWNoZWQgdG8gdGhlIERPTSB3aGVuIG9wZW5Qb3BvdmVyIGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMucG9wb3Zlci50ZW1wbGF0ZVJlZiwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb1Bvc2l0aW9ucyhjb25maWcucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIGJ1aWxkcyB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgb3ZlcmxheSwgdGhlIE92ZXJsYXlDb25maWcuXG4gICAgKiBAcmV0dXJucyBPdmVybGF5Q29uZmlnXG4gICAgKi9cbiAgICBwcml2YXRlIF9nZXRPdmVybGF5Q29uZmlnKCk6IE92ZXJsYXlDb25maWcge1xuICAgICAgICBjb25zdCBvdmVybGF5U3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZygpO1xuICAgICAgICBvdmVybGF5U3RhdGUucG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX2dldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgLyoqIERpc3BsYXkgb3ZlcmxheSBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGRpZmZlcmVudCBvZiBob3ZlciAqL1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgIT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuYmFja2Ryb3BDbGFzcyA9ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCc7XG4gICAgICAgIH1cblxuICAgICAgICBvdmVybGF5U3RhdGUuZGlyZWN0aW9uID0gdGhpcy5kaXI7XG4gICAgICAgIG92ZXJsYXlTdGF0ZS5zY3JvbGxTdHJhdGVneSA9IHRoaXMuX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneSh0aGlzLnBvcG92ZXIuc2Nyb2xsU3RyYXRlZ3kpO1xuXG4gICAgICAgIHJldHVybiBvdmVybGF5U3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2Nyb2xsIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGNkay9vdmVybGF5LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneShzdHJhdGVneTogUG9wb3ZlclNjcm9sbFN0cmF0ZWd5KTogU2Nyb2xsU3RyYXRlZ3kge1xuICAgICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdub29wJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XG4gICAgICAgICAgICBjYXNlICdibG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICAgICAgY2FzZSAncmVwb3NpdGlvbic6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBMaXN0ZW5zIHRvIGNoYW5nZXMgaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5IGFuZCBzZXRzIHRoZSBjb3JyZWN0IGNsYXNzZXNcbiAgICAqIG9uIHRoZSBwb3BvdmVyIGJhc2VkIG9uIHRoZSBuZXcgcG9zaXRpb24uIFRoaXMgZW5zdXJlcyB0aGUgYW5pbWF0aW9uIG9yaWdpbiBpcyBhbHdheXNcbiAgICAqIGNvcnJlY3QsIGV2ZW4gaWYgYSBmYWxsYmFjayBwb3NpdGlvbiBpcyB1c2VkIGZvciB0aGUgb3ZlcmxheS5cbiAgICAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUG9zaXRpb25zKHBvc2l0aW9uOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24gPSBwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3Npc2lvblg6IFBvcG92ZXJQb3NpdGlvblggPSBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVggPT09ICdzdGFydCcgPyAnYWZ0ZXInIDogJ2JlZm9yZSc7XG4gICAgICAgICAgICBsZXQgcG9zaXNpb25ZOiBQb3BvdmVyUG9zaXRpb25ZID0gY2hhbmdlLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlZID09PSAndG9wJyA/ICdiZWxvdycgOiAnYWJvdmUnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlcikge1xuICAgICAgICAgICAgICAgIHBvc2lzaW9uWSA9IHBvc2lzaW9uWSA9PT0gJ2JlbG93JyA/ICdhYm92ZScgOiAnYmVsb3cnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID0gcG9zaXNpb25YO1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPSBwb3Npc2lvblk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5zZXRQb3NpdGlvbkNsYXNzZXMocG9zaXNpb25YLCBwb3Npc2lvblkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBwb3NpdGlvbiBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXksIHNvIHRoZSBwb3BvdmVyIGlzIHByb3Blcmx5IGNvbm5lY3RlZFxuICAgICogdG8gdGhlIHRyaWdnZXIuXG4gICAgKiBAcmV0dXJucyBDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5XG4gICAgKi9cbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBbb3JpZ2luWCwgb3JpZ2luRmFsbGJhY2tYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID09PSAnYmVmb3JlJyA/IFsnZW5kJywgJ3N0YXJ0J10gOiBbJ3N0YXJ0JywgJ2VuZCddO1xuXG4gICAgICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPT09ICdhYm92ZScgPyBbJ2JvdHRvbScsICd0b3AnXSA6IFsndG9wJywgJ2JvdHRvbSddO1xuXG4gICAgICAgIC8vIGxldCBvcmlnaW5ZID0gb3ZlcmxheVk7XG4gICAgICAgIC8vIGxldCBmYWxsYmFja09yaWdpblkgPSBvdmVybGF5RmFsbGJhY2tZO1xuXG4gICAgICAgIGxldCBvcmlnaW5ZOiAndG9wJyB8ICdib3R0b20nID0gb3ZlcmxheVk7XG4gICAgICAgIGxldCBvcmlnaW5GYWxsYmFja1k6ICd0b3AnIHwgJ2JvdHRvbScgPSBvdmVybGF5RmFsbGJhY2tZO1xuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2VuZCcgPSBvcmlnaW5YO1xuICAgICAgICBjb25zdCBvdmVybGF5RmFsbGJhY2tYOiAnc3RhcnQnIHwgJ2VuZCcgPSBvcmlnaW5GYWxsYmFja1g7XG5cbiAgICAgICAgLyoqIFJldmVyc2Ugb3ZlcmxheVkgYW5kIGZhbGxiYWNrT3ZlcmxheVkgd2hlbiBvdmVybGFwVHJpZ2dlciBpcyBmYWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlcikge1xuICAgICAgICAgICAgb3JpZ2luWSA9IG92ZXJsYXlZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgICAgICBvcmlnaW5GYWxsYmFja1kgPSBvdmVybGF5RmFsbGJhY2tZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb2Zmc2V0WDogbnVtYmVyID0gMDtcbiAgICAgICAgbGV0IG9mZnNldFk6IG51bWJlciA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFgpKSkge1xuICAgICAgICAgICAgb2Zmc2V0WCA9IE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkgJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSkpKSB7XG4gICAgICAgICAgICBvZmZzZXRZID0gTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3Igb3ZlcnJpZGluZyBwb3NpdGlvbiBlbGVtZW50LCB3aGVuIHBvcG92ZXJUYXJnZXRBdCBoYXMgYSB2YWxpZCBlbGVtZW50IHJlZmVyZW5jZS5cbiAgICAgICAgICogVXNlZnVsIGZvciBzdGlja2luZyBwb3BvdmVyIHRvIHBhcmVudCBlbGVtZW50IGFuZCBvZmZzZXR0aW5nIGFycm93IHRvIHRyaWdnZXIgZWxlbWVudC5cbiAgICAgICAgICogSWYgdW5kZWZpbmVkIGRlZmF1bHRzIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PiA9IHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRFbGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNvbnRhaW5lclBvc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLnRhcmdldEVsZW1lbnQuX2VsZW1lbnRSZWY7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbih0cnVlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblgsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRYKG9mZnNldFgpXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRZKG9mZnNldFkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsZWFuVXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIF9oYW5kbGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50ICYmICFpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fb3BlbmVkQnlNb3VzZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|