@tsi-developpement/tsi-shared-ui 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -244,7 +244,6 @@ export class ReportingComponent {
|
|
|
244
244
|
console.error('Error downloading the PDF', error);
|
|
245
245
|
}
|
|
246
246
|
});
|
|
247
|
-
this.notificationService.success('shared_reporting_redirected_to_print_report_successfully');
|
|
248
247
|
});
|
|
249
248
|
this._dialogRef.onClose.subscribe((val) => {
|
|
250
249
|
this._closeModal(val);
|
|
@@ -672,4 +671,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
672
671
|
type: ViewChild,
|
|
673
672
|
args: ['wrapper', { read: ElementRef }]
|
|
674
673
|
}] } });
|
|
675
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXVCLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNFLE9BQU8sRUFBNkMsT0FBTyxFQUE4QixNQUFNLGNBQWMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDRCQUE0QixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR3JMLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIs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ImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy90b29sdGlwUG9zaXRpb24uZW51bSc7XHJcbmltcG9ydCB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgTW9kYWxTaXplRW51bSwgSHR0cE1ldGhvZFR5cGUsIFRzaVJlcG9ydFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IElNb2RhbFNpemUsIElQYWdlZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgT3B0aW9uYWxFbmRwb2ludHMsIFJlcG9ydFRlbXBsYXRlUmVzcG9uc2UsIEZpY2hpZXIsIFJlcG9ydFRvUHJpbnQsIFNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmljaGllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWNoaWVyL2ZpY2hpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IHF1ZXJ5UGFyYW1OYW1lc0NvbnN0IH0gZnJvbSAnLi4vLi4vY29uc3RzL3F1ZXJ5UGFyYW1OYW1lcy5jb25zdCc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBMYXlvdXRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0L2xheW91dC1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY29yZEluZm9Qb3B1cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWNvcmQtaW5mby1wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSWRlbnRpdHlNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhvcml6YXRpb24vaWRlbnRpdHktbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwb3J0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydGluZy9yZXBvcnRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IG9wZW5NYW5hZ2VJbXBvcnRFeHBvcnRNb2RhbCwgb3Blbk1hbmFnZVJlcG9ydGluZ0NvbXBvbmVudCwgb3Blbk1vZGFsVXBsb2FkR3JpZCwgb3Blbk5vdGVzTGlzdCwgb3BlblRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tb2RhbC1vcGVuLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9lcnJvci1yZXNwb25zZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBSb3V0ZXMgfSBmcm9tICcuLi8uLi9yb3V0ZXMvYXBwLnJvdXRlcyc7XHJcbmltcG9ydCB7IE1hbmFnZVJlcG9ydGluZ1JvdXRlcyB9IGZyb20gJy4uLy4uL3JvdXRlcy9tYW5hZ2UtcmVwb3J0aW5nLnJvdXRlcyc7XHJcbmltcG9ydCB7IFRzaVNlbmRNYWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLXNlbmQtbWFpbC90c2ktc2VuZC1tYWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbktleXMgfSBmcm9tICcuLi8uLi9jb25zdHMvbG9jYWxpemF0aW9uLWtleSc7XHJcbmltcG9ydCB7IEVtYWlsSW5mb3JtYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi9lbWFpbC1pbmZvcm1hdGlvbic7XHJcbmltcG9ydCB7IE1haWxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwbGljYXRpb24vbWFpbGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwb3J0aW5nSW5mb3JtYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVwb3J0aW5nL3JlcG9ydGluZy1pbmZvcm1hdGlvbic7XHJcbmltcG9ydCB7IFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL3RzaS1tb2RhbC5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVwb3J0aW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnRpbmcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcG9ydGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvLyNyZWdpb24gcHJvcGVydGllc1xyXG4gIHJlcG9ydFRvUHJpbnRJZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIHRvU2VuZEVtYWlsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGxvY2FsaXplPyA9IGluamVjdChMb2NhbGl6ZVBpcGUpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyA9ICdzaGFyZWRfcmVwb3J0aW5nX2Vycm9yX29jY3VyZWQnO1xyXG4gIG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uTGFyZ2U7XHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9yZXBvcnREaXNjcmltaW5hdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gcGFyYW1ldHJlOiBQYXJhbWV0cmVzQXBwbGljYXRpb25QYWllID0gbmV3IFBhcmFtZXRyZXNBcHBsaWNhdGlvblBhaWUoKTtcclxuICBASW5wdXQoKSBzaG93SW1wb3J0RXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Tm90ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLy8jcmVnaW9uIElucHV0IHByb3BlcnRpZXNcclxuICBASW5wdXQoKSBmb3JtTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8vPSBgJHtHZXN0aW9uQ29tbWVyY2lhbGVTZWdtZW50cy5mYWN0dXJlVmVudGV9LzE2NWVjNWZkLTRkMzQtNDU0Ni1hZTE1LTAwNDRlNzA4YjlkOWA7XHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgaXNGb3JtRW5kcG9pbnRQYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNIdG1sVGVtcGxhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBvcHRpb25hbEVuZHBvaW50cz86IE9wdGlvbmFsRW5kcG9pbnRzO1xyXG4gIEBJbnB1dCgpIGJ1c2luZXNzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VkQ29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgaHR0cE1ldGhvZFR5cGU/OiBzdHJpbmdcclxuICBASW5wdXQoKSByZXF1ZXN0RGF0YT86IGFueTtcclxuICBASW5wdXQoKSBjdXN0b21SZXBvcnRpbmdNb2RlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwYWdlZFJlcXVlc3Q/OiBJUGFnZWRSZXF1ZXN0O1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHJlcG9ydERpc2NyaW1pbmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXBvcnREaXNjcmltaW5hdG9yO1xyXG4gIH1cclxuXHJcbiAgc2V0IHJlcG9ydERpc2NyaW1pbmF0b3IodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fcmVwb3J0RGlzY3JpbWluYXRvciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgX25vbWJyZURvY3VtZW50c0pvaW50czogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKVxyXG4gIGdldCBub21icmVEb2N1bWVudHNKb2ludHMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9ub21icmVEb2N1bWVudHNKb2ludHM7XHJcbiAgfVxyXG5cclxuICBzZXQgbm9tYnJlRG9jdW1lbnRzSm9pbnRzKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25vbWJyZURvY3VtZW50c0pvaW50cyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29uZmlnTW9kZUJ1dHRvbklkOiBzdHJpbmcgPSAnc2hvdy1oaWRlLWNvbmZpZy1idXR0b24nO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1VaWRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSXRlbVVpZHMobGlzdFVpZHM6IEFycmF5PGFueT5bXSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtVWlkcyA9IGxpc3RVaWRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZWxlY3RlZEl0ZW1VaWRzKCk6IEFycmF5PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbVVpZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mcm9tVHNpRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZnJvbVRzaUZvcm0odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Zyb21Uc2lGb3JtID0gdmFsdWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnJvbVRzaUZvcm0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZnJvbVRzaUZvcm1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2N1c3RvbVNlbmRNYWlsTW9kZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbVNlbmRNYWlsTW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY3VzdG9tU2VuZE1haWxNb2RlID0gdmFsdWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tU2VuZE1haWxNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbVNlbmRNYWlsTW9kZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVwb3J0aW5nSW5mb3JtYXRpb24/OiBSZXBvcnRpbmdJbmZvcm1hdGlvblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVwb3J0aW5nSW5mb3JtYXRpb24odmFsdWU6IFJlcG9ydGluZ0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9yZXBvcnRpbmdJbmZvcm1hdGlvbiA9IHZhbHVlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlcG9ydGluZ0luZm9ybWF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcG9ydGluZ0luZm9ybWF0aW9uXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIHJlZnJlc2hEYXRhOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlZE1vZGFsRmlsZVVwbG9hZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVEZXNpZ25Nb2RlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgd3JhcHBlclJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICByZXBvcnRzOiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlW10gPSBbXTtcclxuICBzaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XHJcblxyXG4gIGdldCBpc1JlcG9ydEZvckZpY2hlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmZvcm1FbmRwb2ludD8uaW5jbHVkZXMoJ2dldGFsbHBhZ2VkJyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY3RvclxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcG9ydGluZ1NlcnZpY2U6IFJlcG9ydGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGlkZW50aXR5TWFuYWdlclNlcnZpY2U6IElkZW50aXR5TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBUc2lNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjb3JkSW5mb1BvcHVwU2VydmljZTogUmVjb3JkSW5mb1BvcHVwU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbGF5b3V0SGVscGVyU2VydmljZTogTGF5b3V0SGVscGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBfZmljaGllclNlcnZpY2U6IEZpY2hpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9tYWlsaW5nU2VydmljZTogTWFpbGluZ1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy9oYW5kbGUgTGlmZWN5Y2xlIEhvb2tzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGhhbmRsZSBldmVudHNcclxuICBvblByaW50RGVmYXVsdChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAuZ2V0RGVmYXVsdFJlcG9ydCh0aGlzLmZvcm1OYW1lLCB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogUmVwb3J0VGVtcGxhdGVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5fdmlld1JlcG9ydChkYXRhPy51aWQsIGRhdGEpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwb3J0UGRmKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXREZWZhdWx0UmVwb3J0KHRoaXMuZm9ybU5hbWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuX2V4cG9ydFBkZihkYXRhLnVpZCwgZGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtTmFtZShmb3JtTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5yZXBvcnREaXNjcmltaW5hdG9yKVxyXG4gICAgICByZXR1cm4gYCR7Zm9ybU5hbWV9XyR7dGhpcy5yZXBvcnREaXNjcmltaW5hdG9yfWA7XHJcbiAgICBlbHNlIHJldHVybiBmb3JtTmFtZTtcclxuICB9XHJcblxyXG4gIG9uU2VuZFBkZihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZW5kTWFpbE1vZGUpIHtcclxuICAgICAgdGhpcy50b1NlbmRFbWFpbCA9IHRoaXMucmVwb3J0aW5nSW5mb3JtYXRpb24/LmRlc3RpbmF0aW9uQWRkcmVzc1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAuZ2V0RGVmYXVsdFJlcG9ydCh0aGlzLmZvcm1OYW1lLCB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5fc2VuZFBkZihkYXRhLnVpZCwgZGF0YSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAnc2hhcmVkX3JlcG9ydGluZ19ub19kZWZhdWx0X3JlcG9ydF9mb3VuZCdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VuZFBkZihcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtRW5kcG9pbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9ybUVuZHBvaW50ICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXJlcG9ydEluZm9ybWF0aW9uKSB7XHJcbiAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbiA9IHRoaXMucmVwb3J0cy5maW5kKCh4KSA9PiB4LnVpZCA9PSBpZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2F2ZVN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgICAgbGV0IG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uWE1lZGl1bTtcclxuICAgICAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgIGRhdGE6IHsgc2F2ZVN1YmplY3QsIGVtYWlsOiB0aGlzLnRvU2VuZEVtYWlsIH0sXHJcbiAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHdpZHRoOiBtb2RhbFNpemUud2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IG1vZGFsU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihcclxuICAgICAgICAgIFRzaVNlbmRNYWlsQ29tcG9uZW50LFxyXG4gICAgICAgICAgY29uZlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2F2ZVN1YmplY3Quc3Vic2NyaWJlKCh2YWw6IEVtYWlsSW5mb3JtYXRpb24pID0+IHtcclxuICAgICAgICAgIGlmICghdmFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdmFsLnRvQWRkcmVzcykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdmFsLnN1YmplY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcmVwb3J0VG9QcmludCA9IHRoaXMuX25ld1JlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbiEucmVwb3J0VHlwZSxcclxuICAgICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24hLnJlc3RFbmRwb2ludFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leHBvcnRSZXBvcnRGaWxlVG9QZGYocmVwb3J0VG9QcmludClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiBhc3luYyAoYmxvYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnUmVwb3J0LnBkZicsIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBibG9iLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IGF0dGFjaG1lbnRzOiBGaWxlW10gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMucHVzaChuZXdGaWxlKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9tYWlsaW5nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC5zZW5kTWFpbChcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbC50b0FkZHJlc3MhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsLnN1YmplY3QhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsLm1lc3NhZ2UgPz8gXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsLmNjQWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxpemF0aW9uS2V5cy5zZW50U3VjY2Vzc0Z1bGx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRvd25sb2FkaW5nIHRoZSBQREYnLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAnc2hhcmVkX3JlcG9ydGluZ19yZWRpcmVjdGVkX3RvX3ByaW50X3JlcG9ydF9zdWNjZXNzZnVsbHknXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9leHBvcnRQZGYoXHJcbiAgICBpZDogc3RyaW5nLFxyXG4gICAgcmVwb3J0SW5mb3JtYXRpb24/OiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybUVuZHBvaW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmZvcm1FbmRwb2ludCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFyZXBvcnRJbmZvcm1hdGlvbikge1xyXG4gICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24gPSB0aGlzLnJlcG9ydHMuZmluZCgoeCkgPT4geC51aWQgPT0gaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFyZXBvcnRJbmZvcm1hdGlvbiB8fCAhcmVwb3J0SW5mb3JtYXRpb24ucmVzdEVuZHBvaW50KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcmVwb3J0VG9QcmludCA9IHRoaXMuX25ld1JlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uIS5yZXBvcnRUeXBlLFxyXG4gICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24hLnJlc3RFbmRwb2ludFxyXG4gICAgICAgIClcclxuXHJcbiAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlXHJcbiAgICAgICAgICAuZXhwb3J0UmVwb3J0RmlsZVRvUGRmKHJlcG9ydFRvUHJpbnQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmV4dDogKGJsb2IpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSAnUmVwb3J0LnBkZic7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgICAgICAgICAgYS5jbGljaygpO1xyXG5cclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgdGhlIFBERicsIGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfcmVkaXJlY3RlZF90b19wcmludF9yZXBvcnRfc3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldE5vbWJyZUZpY2hpZXIoKSB7XHJcbiAgICBpZiAodGhpcy5pZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2ZpY2hpZXJTZXJ2aWNlXHJcbiAgICAgICAgLkdldE5vbWJyZUZpY2hpZXJKb2ludEJ5SWQodGhpcy5pZCA/PyBcIlwiKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzID0gZGF0YTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvd1VwbG9hZERpYWxvZygpIHtcclxuXHJcbiAgICBjb25zdCBjb25mID0ge1xyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZSEud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VGaWxlTWFuYWdlQ29tcG9uZW50KCkpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGJhc2U2NENvbnRlbnQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoYXJyYXlCdWZmZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWNoaWVyVG9TZW5kID0gbmV3IEZpY2hpZXIoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRhdGVGaWNoaWVyID0gbmV3IERhdGUoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm5vbSA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm9iamV0ID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5ub21GaWNoaWVyQ29tcGxldCA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5jb250ZW51ID0gYmFzZTY0Q29udGVudDtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnRhYmxlTGllZSA9IHRoaXMuYnVzaW5lc3NDbGFzcztcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnBrZXkgPSB0aGlzLmlkO1xyXG4gICAgICAgIGZpY2hpZXJUb1NlbmQudHlwZUZpY2hpZXIgPSAnNDM3QzA4RDUtQzE2OS00MTY3LThEMzctRjhBQzZDOTA1RTIzJzsgLy8gVE9ETzogTW9tb1xyXG5cclxuICAgICAgICB0aGlzLl9maWNoaWVyU2VydmljZS5jcmVhdGUoZmljaGllclRvU2VuZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3ModGhpcy5sKFwiRmljaGllciBlbnJlZ2lzdHLDqSAhXCIpKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmwoXCJFcnJldXIgbG9ycyBkZSBs4oCZZW5yZWdpc3RyZW1lbnQgIVwiKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dEaWFsb2coKSB7XHJcbiAgICB0aGlzLl9vcGVuTW9kYWwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNob3dFeHBvcnRJbXBvcnREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSBhd2FpdCBvcGVuTWFuYWdlSW1wb3J0RXhwb3J0TW9kYWwodGhpcy5faW5qZWN0b3IsIHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5mb3JtTmFtZSwgdGhpcy5wYWdlZFJlcXVlc3QpXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwsIHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJlc2VudGF0aW9uRGVzaWduZXJDb25maWcoKSB7XHJcbiAgICBpZiAodGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5pc0Rlc2lnbk1vZGUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZnJvbVRzaUZvcm0pIHtcclxuICAgICAgdGhpcy50b2dnbGVEZXNpZ25Nb2RlLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuX2Rlc2lnbk1vZGVGb3JtU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5fZGVzaWduTW9kZUxpc3RTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfdmlld1JlcG9ydChcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICAvLyBjYXNlIHRoZXJlIGlzIGRlZmF1bHQgcmVwb3J0XHJcbiAgICAgIGlmICh0aGlzLmZvcm1FbmRwb2ludCAhPSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtRW5kcG9pbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVwb3J0SW5mb3JtYXRpb24pIHtcclxuICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uID0gdGhpcy5yZXBvcnRzLmZpbmQoKHgpID0+IHgudWlkID09IGlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghcmVwb3J0SW5mb3JtYXRpb24gfHwgIXJlcG9ydEluZm9ybWF0aW9uLnJlc3RFbmRwb2ludCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlXHJcbiAgICAgICAgICAuYWRkUmVwb3J0VG9QcmludChcclxuICAgICAgICAgICAgdGhpcy5fbmV3UmVwb3J0VG9QcmludChcclxuICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbj8ucmVwb3J0VHlwZSxcclxuICAgICAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbj8ucmVzdEVuZHBvaW50XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiBkYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRUb1ByaW50SWQgPSBkYXRhLnVpZDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2UuZ2V0UmVwb3J0VGVtcGxhdGVCeUlkKGlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW5hbnRVaWQgPSB0aGlzLmlkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpPy50ZW5hbnRVaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybFZpZXdlciA9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXBvcnRUeXBlID09PSBUc2lSZXBvcnRUeXBlLkxpc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHVybFZpZXdlciA9IGAke1NlZ21lbnQucmVwb3J0aW5nU2VydmljZUJhc2V9L3JlcG9ydC12aWV3ZXIvJHt0aGlzLnJlcG9ydFRvUHJpbnRJZH0/JHtxdWVyeVBhcmFtTmFtZXNDb25zdC50ZW5hbnRVaWR9PSR7dGVuYW50VWlkfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnJlcG9ydFR5cGUgPT09IFRzaVJlcG9ydFR5cGUuRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB1cmxWaWV3ZXIgPSBgJHtTZWdtZW50LmFwcEJhc2VIcmVmfS8ke0FwcFJvdXRlcy5hcHB9LyR7QXBwUm91dGVzLmRhc2hib2FyZH0vJHtNYW5hZ2VSZXBvcnRpbmdSb3V0ZXMuZGFzaGJvYXJkVmlld2VyfT8ke3F1ZXJ5UGFyYW1OYW1lc0NvbnN0LnJlcG9ydFRvUHJpbnR9PSR7dGhpcy5yZXBvcnRUb1ByaW50SWR9JiR7cXVlcnlQYXJhbU5hbWVzQ29uc3QudGVuYW50VWlkfT0ke3RlbmFudFVpZH1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5yZXBvcnRUeXBlID09PSBUc2lSZXBvcnRUeXBlLlJURikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXJsVmlld2VyID0gYCR7U2VnbWVudC5yZXBvcnRpbmdTZXJ2aWNlQmFzZX0vbWFpbG1lcmdlLXJlYWRvbmx5bW9kZS8ke3RoaXMucmVwb3J0VG9QcmludElkfT8ke3F1ZXJ5UGFyYW1OYW1lc0NvbnN0LnRlbmFudFVpZH09JHt0ZW5hbnRVaWR9YDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybFZpZXdlciwgJ19ibGFuaycpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX3JlZGlyZWN0ZWRfdG9fcHJpbnRfcmVwb3J0X3N1Y2Nlc3NmdWxseSdcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodGhpcy5lcnJvck1lc3NhZ2VLZXkpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBubyBkZWZhdWx0IHJlcG9ydFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uZXdSZXBvcnRUb1ByaW50KFxyXG4gICAgdWlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRUeXBlOiBudW1iZXIsXHJcbiAgICByZXN0RW5kcG9pbnQ/OiBzdHJpbmcsXHJcbiAgICBtb2R1bGU/OiBzdHJpbmcsXHJcbiAgICBvcmRlcj86IG51bWJlcixcclxuICAgIHNob3J0TmFtZT86IHN0cmluZyxcclxuICAgIGRpc3BsYXk/OiBib29sZWFuXHJcbiAgKTogUmVwb3J0VG9QcmludCB7XHJcbiAgICBsZXQgdG9rZW4gPSB0aGlzLmlkZW50aXR5TWFuYWdlclNlcnZpY2UuZ2V0QXV0aFRva2VuKCk7XHJcbiAgICBsZXQgdXNlcm5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9XHJcbiAgICAgIHRoaXMuaWRlbnRpdHlNYW5hZ2VyU2VydmljZS5wYXJzZU15QXV0aFRva2VuKCkubmFtZTtcclxuICAgIGlmICh1c2VybmFtZSkge1xyXG4gICAgICBpZiAodWlkICYmIC8qdGhpcy5vdGhlckZvcm1FbmRwb2ludCAmJiB0aGlzLm90aGVyRm9ybU5hbWUgJiYqLyB0b2tlbikge1xyXG4gICAgICAgIGxldCBuZXdSZXBvcnRUb1ByaW50OiBSZXBvcnRUb1ByaW50ID0ge1xyXG4gICAgICAgICAgcmVwb3J0VGVtcGxhdGVVaWQ6IHVpZCxcclxuICAgICAgICAgIHJlc3RFbmRwb2ludDogdGhpcy5pc1JlcG9ydEZvckZpY2hlXHJcbiAgICAgICAgICAgID8gdGhpcy5yZXBvcnRpbmdTZXJ2aWNlLmluc2VydE5ld1VpZEluUmVzdEVuZFBvaW50KHJlc3RFbmRwb2ludCwgdGhpcy5pZCkgPz9cclxuICAgICAgICAgICAgdGhpcy5mb3JtRW5kcG9pbnRcclxuICAgICAgICAgICAgOiB0aGlzLmZvcm1FbmRwb2ludCxcclxuICAgICAgICAgIHJlcXVlc3REYXRhOiAhdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlID8gdGhpcy5mb3JtRW5kcG9pbnRCb2R5IDogdGhpcy5yZXF1ZXN0RGF0YSxcclxuICAgICAgICAgIGZvcm1OYW1lOiB0aGlzLmZvcm1OYW1lLFxyXG4gICAgICAgICAgcmVwb3J0VHlwZTogcmVwb3J0VHlwZSxcclxuICAgICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcclxuICAgICAgICAgIHVzZXJUb2tlbjogcmVwb3J0VHlwZSA9PSBUc2lSZXBvcnRUeXBlLkRhc2hib2FyZCA/IHVuZGVmaW5lZCA6IHRva2VuLFxyXG4gICAgICAgICAgaXNQYWdlZDogdGhpcy5pc0Zvcm1FbmRwb2ludFBhZ2VkID09IHRydWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICBodG1sRmlsdGVyc1RleHQ6IHRoaXMuZmlsdGVyc0h0bWxUZW1wbGF0ZSxcclxuICAgICAgICAgIG9wdGlvbmFsRW5kcG9pbnRzSnNvbjogdGhpcy5vcHRpb25hbEVuZHBvaW50cyxcclxuICAgICAgICAgIG1vZHVsZTogbW9kdWxlLFxyXG4gICAgICAgICAgb3JkZXI6IG9yZGVyLFxyXG4gICAgICAgICAgc2hvcnROYW1lOiBzaG9ydE5hbWUsXHJcbiAgICAgICAgICBkaXNwbGF5OiBkaXNwbGF5LFxyXG4gICAgICAgICAgaHR0cE1ldGhvZFR5cGU6IHRoaXMuZ2V0SHR0cE1ldGhvZFR5cGUoKVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiBuZXdSZXBvcnRUb1ByaW50O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgJ3NvbWUgb2YgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgOiB1c2VyIHRva2VuLCBmb3JtTmFtZSwgZm9ybUVuZHBvaW50IG9yIHNlbGVjdGVkUmVwb3J0IGhhdmUgbm90IGJlZW4gc2V0ICEnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXCJwcm9wZXJ0eSAnVXNlck5hbWUgJyBvZiBjdXJyZW50IHVzZXIgaGF2ZSBub3QgYmVlbiBzZXQgIVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX29wZW5Nb2RhbCgpIHtcclxuICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnO1xyXG4gICAgY29uZiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG90aGVyRm9ybU5hbWU6IHRoaXMuZm9ybU5hbWUsXHJcbiAgICAgICAgb3RoZXJGb3JtRW5kcG9pbnQ6IHRoaXMuZm9ybUVuZHBvaW50LFxyXG4gICAgICAgIGZvcm1FbmRwb2ludEJvZHk6IHRoaXMuZm9ybUVuZHBvaW50Qm9keSxcclxuICAgICAgICBpc0Zvcm1FbmRwb2ludFBhZ2VkOiB0aGlzLmlzRm9ybUVuZHBvaW50UGFnZWQsXHJcbiAgICAgICAgZmlsdGVyc0h0bWxUZW1wbGF0ZTogdGhpcy5maWx0ZXJzSHRtbFRlbXBsYXRlLFxyXG4gICAgICAgIG9wdGlvbmFsRW5kcG9pbnRzOiB0aGlzLm9wdGlvbmFsRW5kcG9pbnRzLFxyXG4gICAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICByZXBvcnREaXNjcmltaW5hdG9yOiB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IsXHJcbiAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgcmVxdWVzdERhdGE6IHRoaXMucmVxdWVzdERhdGEsXHJcbiAgICAgICAgY3VzdG9tUmVwb3J0aW5nTW9kZTogdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlLFxyXG4gICAgICAgIGh0dHBNZXRob2RUeXBlOiB0aGlzLmdldEh0dHBNZXRob2RUeXBlKCksXHJcbiAgICAgIH0sXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gYXdhaXQgb3Blbk1hbmFnZVJlcG9ydGluZ0NvbXBvbmVudCh0aGlzLl9pbmplY3RvciwgY29uZik7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRIdHRwTWV0aG9kVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmlzUmVwb3J0Rm9yRmljaGUgJiYgIXRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSkge1xyXG4gICAgICByZXR1cm4gSHR0cE1ldGhvZFR5cGUuR0VUO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmh0dHBNZXRob2RUeXBlICYmIHRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwTWV0aG9kVHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiBIdHRwTWV0aG9kVHlwZS5QT1NUO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VGaWxlTWFuYWdlQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZWRNb2RhbEZpbGVVcGxvYWQuZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbCh2YWw/OiBhbnksIHJlZnJlc2hEYXRhOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMucmVmcmVzaERhdGEuZW1pdChyZWZyZXNoRGF0YSk7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWY/LmRlc3Ryb3koKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLl9nZXRBbGxSZXBvcnRzKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xyXG4gIH1cclxuXHJcbiAgaGlkZUNvbnRleHRNZW51KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9O1xyXG4gICAgLy8gdGhpcy5yZXBvcnRzID0gW107XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdENvbnRleHRPcHRpb24oaXRlbTogUmVwb3J0VGVtcGxhdGVSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdmlld1JlcG9ydChpdGVtLnVpZCk7XHJcbiAgICB0aGlzLmhpZGVDb250ZXh0TWVudSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UmVwb3J0cygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucmVwb3J0cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXRSZXBvcnRzKFxyXG4gICAgICAgICAgdGhpcy5mb3JtTmFtZSA/PyAnJyxcclxuICAgICAgICAgIHRoaXMucmVwb3J0RGlzY3JpbWluYXRvclxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZUtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRBbGxSZXBvcnRzKGNsaWNrWDogbnVtYmVyLCBjbGlja1k6IG51bWJlcikge1xyXG4gICAgYXdhaXQgdGhpcy5nZXRSZXBvcnRzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmVwb3J0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLndyYXBwZXJSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbiA9IHtcclxuICAgICAgICB4OiBjbGlja1ggLSByZWN0LmxlZnQsXHJcbiAgICAgICAgeTogY2xpY2tZIC0gcmVjdC50b3AsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIHZpZXdOb3RlcygpIHtcclxuICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5Ob3Rlc0xpc3QodGhpcy5faW5qZWN0b3IpXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICB9XHJcblxyXG4gIHZpZXdJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLmlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yZWNvcmRJbmZvUG9wdXBTZXJ2aWNlXHJcbiAgICAgICAgLmdldEluZm8odGhpcy5idXNpbmVzc0NsYXNzISwgdGhpcy5pZClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgbGV0IG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uRXh0cmFMYXJnZTtcclxuICAgICAgICAgICAgbGV0IHRleHQgPVxyXG4gICAgICAgICAgICAgICdVSUQgOiAgJyArXHJcbiAgICAgICAgICAgICAgdGhpcy5pZCArXHJcbiAgICAgICAgICAgICAgJzxCUj5DcmVhdGVkIGJ5IDogICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEuY3JlYXRpb25Vc2VyICtcclxuICAgICAgICAgICAgICAnPEJSPk1vZGlmaWVkIGJ5IDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5tb2RpZlVzZXIgK1xyXG4gICAgICAgICAgICAgICc8QlI+Q3JlYXRlZCBvbiA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEuZGF0ZVNhaXNpZSArXHJcbiAgICAgICAgICAgICAgJzxCUj5Nb2RpZmllZCBvbiA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEuZGF0ZU1vZGlmO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgVWlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgY3JlYXRpb25Vc2VyOiBkYXRhLmNyZWF0aW9uVXNlcixcclxuICAgICAgICAgICAgICAgIG1vZGlmVXNlcjogZGF0YS5tb2RpZlVzZXIsXHJcbiAgICAgICAgICAgICAgICBkYXRlU2Fpc2llOiBkYXRhLmRhdGVTYWlzaWUsXHJcbiAgICAgICAgICAgICAgICBkYXRlTW9kaWY6IGRhdGEuZGF0ZU1vZGlmLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc5MHJlbScsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAnODByZW0nLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmID0gYXdhaXQgb3BlblRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBiaW5hcnkgPSAnJztcclxuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcclxuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBidG9hKGJpbmFyeSk7XHJcbiAgfVxyXG5cclxuICBoaWRlKHZhbD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX2RpYWxvZ1JlZiAhPSBudWxsICYmIHRoaXMuX2RpYWxvZ1JlZiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHZhbCA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kZXN0cm95KCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHZhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMubG9jYWxpemUgIT0gbnVsbFxyXG4gICAgICAmJiB0aGlzLmxvY2FsaXplICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIG14LTJcIj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImZvcm1FbmRwb2ludCB8fCBidXNpbmVzc0NsYXNzXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cIm1hbmFnZV9yZXBvcnRzX2J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbaWNvblNyY109XCInLi9hc3NldHMvaWNvbnMvaWNvbi1wcmludGVyLWdyb3VwLXdoaXRlLnBuZydcIlxyXG4gICAgICBbaWNvbldpZHRoXT1cIjIwXCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX21hbmFnZV9yZXBvcnRzJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cInNob3dEaWFsb2coKVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwicHJpbnRfZGVmYXVsdF9yZXBvcnRfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4td3JhcHBlclwiXHJcbiAgICAjd3JhcHBlclxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktcHJpbnQgcC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnRcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfcmlnaHRDbGljaydcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJvblByaW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgKHJpZ2h0Q2xpY2spPVwib25SaWdodENsaWNrKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgPCEtLSBgc2hhcmVkX3JlcG9ydGluZ19wcmludF9yZXBvcnRgIGtleSBmb3IgYEltcHJpbWVyYCB0ZXh0ICAocmVwbGFjZSBpdCBhcyB2YWx1ZSBvciB0b29sdGlwIGlmIG5lZWQgaXQpIC0tPlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzaG93Q29udGV4dE1lbnVcIlxyXG4gICAgICBjbGFzcz1cImNvbnRleHQtbWVudVwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAndG9wLnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi55LFxyXG4gICAgICAgICdsZWZ0LnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi54XHJcbiAgICAgIH1cIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJoaWRlQ29udGV4dE1lbnUoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdGb3I9XCJsZXQgcmVwb3J0IG9mIHJlcG9ydHNcIlxyXG4gICAgICAgIGNsYXNzPVwibWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwib25TZWxlY3RDb250ZXh0T3B0aW9uKHJlcG9ydClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgcmVwb3J0Lm5hbWUgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJidXNpbmVzc0NsYXNzICYmIHNob3dVcGxvYWRCdXR0b25cIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiYXR0YWNobWVudF9idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLXBhcGVyY2xpcCBwLWJ1dHRvbi1pY29uXCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfYWN0aW9uc19hdHRhY2htZW50J1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cInNob3dVcGxvYWREaWFsb2coKVwiXHJcbiAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgICA8c3BhbiAqbmdJZj1cIm5vbWJyZURvY3VtZW50c0pvaW50cyAmJiBub21icmVEb2N1bWVudHNKb2ludHMgPiAwXCIgY2xhc3M9XCJjdXN0b20tYmFkZ2VcIj5cclxuICAgICAge3sgbm9tYnJlRG9jdW1lbnRzSm9pbnRzIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2VuZF9yZXBvcnRfYnlfZW1haWxfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1zZW5kIHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX3NlbmRfbWFpbCdcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJvblNlbmRQZGYoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJidXNpbmVzc0NsYXNzICYmIHNob3dJbXBvcnRFeHBvcnRCdXR0b25cIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0X2V4cG9ydF9idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLWFycm93LXJpZ2h0LWFycm93LWxlZnQgcC1idXR0b24taWNvblwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19tYW5hZ2VfZXhwb3J0X2ltcG9ydCdcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd0V4cG9ydEltcG9ydERpYWxvZygpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93Tm90ZUJ1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hhcmVkX3Nob3dfbm90ZXNfYnV0dG9uXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBpZD1cInt7IGNvbmZpZ01vZGVCdXR0b25JZCB9fVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktY29tbWVudCBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3RzaV9jb21wb25lbnRfZ2VzdGlvbl9kZXNfbm90ZXMnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24td2FybmluZyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IHRleHQtd2hpdGVcIlxyXG4gICAgICAoY2xpY2spPVwidmlld05vdGVzKClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwic2hvd0luZm9CdXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNoYXJlZF9zaG93X2luZm9fYnV0dG9uXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBpZD1cIidzaG93LWluZm8tYnV0dG9uJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktaW5mbyBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2FjdGlvbnNfaW5mbydcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1pbmZvIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHkgdGV4dC13aGl0ZVwiXHJcbiAgICAgIChjbGljayk9XCJ2aWV3SW5mbygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBpZD1cInt7IGNvbmZpZ01vZGVCdXR0b25JZCB9fVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktZXllIHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfdHNpX2NvbXBvbmVudF9jb25maWdfc2hvd19oaWRlJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3MgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJwcmVzZW50YXRpb25EZXNpZ25lckNvbmZpZygpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8ZGl2ICpuZ0lmPVwic2hvd0NvbnRleHRNZW51XCJcclxuICBjbGFzcz1cImNvbnRleHQtbWVudVwiXHJcbiAgW25nU3R5bGVdPVwie1xyXG4gICAgJ3RvcC5weCc6IGNvbnRleHRNZW51UG9zaXRpb24ueSxcclxuICAgICdsZWZ0LnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi54XHJcbiAgfVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwiaGlkZUNvbnRleHRNZW51KClcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0c1wiXHJcbiAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXHJcbiAgICAoY2xpY2spPVwib25TZWxlY3RDb250ZXh0T3B0aW9uKHJlcG9ydClcIj5cclxuICAgIHt7cmVwb3J0Lm5hbWV9fVxyXG4gIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcbiJdfQ==
|
|
674
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXVCLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNFLE9BQU8sRUFBNkMsT0FBTyxFQUE4QixNQUFNLGNBQWMsQ0FBQztBQUU5RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDRCQUE0QixFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBR3JMLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIs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K0hDLFVBQVUsNkJDaEsxQyw0dU1BbUxBOzs0RkRsSmEsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGVBQWU7MmFBY2hCLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU1GLDBCQUEwQjtzQkFEN0IsS0FBSztnQkFTSSxNQUFNO3NCQUFmLE1BQU07Z0JBRUUsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFZRixxQkFBcUI7c0JBRHhCLEtBQUs7Z0JBY0YsRUFBRTtzQkFETCxLQUFLO2dCQVNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFJSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBWUssV0FBVztzQkFEckIsS0FBSztnQkFXSyxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBWUssb0JBQW9CO3NCQUQ5QixLQUFLO2dCQVlJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFLUCxVQUFVO3NCQURULFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy90b29sdGlwUG9zaXRpb24uZW51bSc7XHJcbmltcG9ydCB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi9lbmQtcG9pbnRzJztcclxuaW1wb3J0IHsgTW9kYWxTaXplRW51bSwgSHR0cE1ldGhvZFR5cGUsIFRzaVJlcG9ydFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IElNb2RhbFNpemUsIElQYWdlZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgT3B0aW9uYWxFbmRwb2ludHMsIFJlcG9ydFRlbXBsYXRlUmVzcG9uc2UsIEZpY2hpZXIsIFJlcG9ydFRvUHJpbnQsIFNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgRmljaGllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWNoaWVyL2ZpY2hpZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IHF1ZXJ5UGFyYW1OYW1lc0NvbnN0IH0gZnJvbSAnLi4vLi4vY29uc3RzL3F1ZXJ5UGFyYW1OYW1lcy5jb25zdCc7XHJcbmltcG9ydCB7IExvY2FsaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBMYXlvdXRIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0L2xheW91dC1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlY29yZEluZm9Qb3B1cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWNvcmQtaW5mby1wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24vdHNpLW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSWRlbnRpdHlNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhvcml6YXRpb24vaWRlbnRpdHktbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwb3J0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlcG9ydGluZy9yZXBvcnRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IG9wZW5NYW5hZ2VJbXBvcnRFeHBvcnRNb2RhbCwgb3Blbk1hbmFnZVJlcG9ydGluZ0NvbXBvbmVudCwgb3Blbk1vZGFsVXBsb2FkR3JpZCwgb3Blbk5vdGVzTGlzdCwgb3BlblRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tb2RhbC1vcGVuLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcbmltcG9ydCB7IEVycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi9lcnJvci1yZXNwb25zZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBSb3V0ZXMgfSBmcm9tICcuLi8uLi9yb3V0ZXMvYXBwLnJvdXRlcyc7XHJcbmltcG9ydCB7IE1hbmFnZVJlcG9ydGluZ1JvdXRlcyB9IGZyb20gJy4uLy4uL3JvdXRlcy9tYW5hZ2UtcmVwb3J0aW5nLnJvdXRlcyc7XHJcbmltcG9ydCB7IFRzaVNlbmRNYWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vdHNpLXNlbmQtbWFpbC90c2ktc2VuZC1tYWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbktleXMgfSBmcm9tICcuLi8uLi9jb25zdHMvbG9jYWxpemF0aW9uLWtleSc7XHJcbmltcG9ydCB7IEVtYWlsSW5mb3JtYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24vY29uZmlndXJhdGlvbi9lbWFpbC1pbmZvcm1hdGlvbic7XHJcbmltcG9ydCB7IE1haWxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwbGljYXRpb24vbWFpbGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVwb3J0aW5nSW5mb3JtYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVwb3J0aW5nL3JlcG9ydGluZy1pbmZvcm1hdGlvbic7XHJcbmltcG9ydCB7IFRzaU1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsL3RzaS1tb2RhbC5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVwb3J0aW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnRpbmcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcG9ydGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvLyNyZWdpb24gcHJvcGVydGllc1xyXG4gIHJlcG9ydFRvUHJpbnRJZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIHRvU2VuZEVtYWlsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGxvY2FsaXplPyA9IGluamVjdChMb2NhbGl6ZVBpcGUpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyA9ICdzaGFyZWRfcmVwb3J0aW5nX2Vycm9yX29jY3VyZWQnO1xyXG4gIG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uTGFyZ2U7XHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9yZXBvcnREaXNjcmltaW5hdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gcGFyYW1ldHJlOiBQYXJhbWV0cmVzQXBwbGljYXRpb25QYWllID0gbmV3IFBhcmFtZXRyZXNBcHBsaWNhdGlvblBhaWUoKTtcclxuICBASW5wdXQoKSBzaG93SW1wb3J0RXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Tm90ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLy8jcmVnaW9uIElucHV0IHByb3BlcnRpZXNcclxuICBASW5wdXQoKSBmb3JtTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8vPSBgJHtHZXN0aW9uQ29tbWVyY2lhbGVTZWdtZW50cy5mYWN0dXJlVmVudGV9LzE2NWVjNWZkLTRkMzQtNDU0Ni1hZTE1LTAwNDRlNzA4YjlkOWA7XHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgaXNGb3JtRW5kcG9pbnRQYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNIdG1sVGVtcGxhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBvcHRpb25hbEVuZHBvaW50cz86IE9wdGlvbmFsRW5kcG9pbnRzO1xyXG4gIEBJbnB1dCgpIGJ1c2luZXNzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VkQ29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgaHR0cE1ldGhvZFR5cGU/OiBzdHJpbmdcclxuICBASW5wdXQoKSByZXF1ZXN0RGF0YT86IGFueTtcclxuICBASW5wdXQoKSBjdXN0b21SZXBvcnRpbmdNb2RlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwYWdlZFJlcXVlc3Q/OiBJUGFnZWRSZXF1ZXN0O1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHJlcG9ydERpc2NyaW1pbmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXBvcnREaXNjcmltaW5hdG9yO1xyXG4gIH1cclxuXHJcbiAgc2V0IHJlcG9ydERpc2NyaW1pbmF0b3IodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fcmVwb3J0RGlzY3JpbWluYXRvciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgX25vbWJyZURvY3VtZW50c0pvaW50czogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKVxyXG4gIGdldCBub21icmVEb2N1bWVudHNKb2ludHMoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9ub21icmVEb2N1bWVudHNKb2ludHM7XHJcbiAgfVxyXG5cclxuICBzZXQgbm9tYnJlRG9jdW1lbnRzSm9pbnRzKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX25vbWJyZURvY3VtZW50c0pvaW50cyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaWQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5faWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBpZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29uZmlnTW9kZUJ1dHRvbklkOiBzdHJpbmcgPSAnc2hvdy1oaWRlLWNvbmZpZy1idXR0b24nO1xyXG5cclxuICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1VaWRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSXRlbVVpZHMobGlzdFVpZHM6IEFycmF5PGFueT5bXSkge1xyXG4gICAgdGhpcy5fc2VsZWN0ZWRJdGVtVWlkcyA9IGxpc3RVaWRzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZWxlY3RlZEl0ZW1VaWRzKCk6IEFycmF5PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbVVpZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mcm9tVHNpRm9ybTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZnJvbVRzaUZvcm0odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Zyb21Uc2lGb3JtID0gdmFsdWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZnJvbVRzaUZvcm0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZnJvbVRzaUZvcm1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2N1c3RvbVNlbmRNYWlsTW9kZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGN1c3RvbVNlbmRNYWlsTW9kZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY3VzdG9tU2VuZE1haWxNb2RlID0gdmFsdWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VzdG9tU2VuZE1haWxNb2RlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbVNlbmRNYWlsTW9kZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVwb3J0aW5nSW5mb3JtYXRpb24/OiBSZXBvcnRpbmdJbmZvcm1hdGlvblxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVwb3J0aW5nSW5mb3JtYXRpb24odmFsdWU6IFJlcG9ydGluZ0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9yZXBvcnRpbmdJbmZvcm1hdGlvbiA9IHZhbHVlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlcG9ydGluZ0luZm9ybWF0aW9uKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlcG9ydGluZ0luZm9ybWF0aW9uXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIHJlZnJlc2hEYXRhOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlZE1vZGFsRmlsZVVwbG9hZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVEZXNpZ25Nb2RlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgd3JhcHBlclJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICByZXBvcnRzOiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlW10gPSBbXTtcclxuICBzaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XHJcblxyXG4gIGdldCBpc1JlcG9ydEZvckZpY2hlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmZvcm1FbmRwb2ludD8uaW5jbHVkZXMoJ2dldGFsbHBhZ2VkJyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY3RvclxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfdHNpTW9kYWxTZXJ2aWNlOiBUc2lNb2RhbFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcG9ydGluZ1NlcnZpY2U6IFJlcG9ydGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGlkZW50aXR5TWFuYWdlclNlcnZpY2U6IElkZW50aXR5TWFuYWdlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBUc2lNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjb3JkSW5mb1BvcHVwU2VydmljZTogUmVjb3JkSW5mb1BvcHVwU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbGF5b3V0SGVscGVyU2VydmljZTogTGF5b3V0SGVscGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBfZmljaGllclNlcnZpY2U6IEZpY2hpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9tYWlsaW5nU2VydmljZTogTWFpbGluZ1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy9oYW5kbGUgTGlmZWN5Y2xlIEhvb2tzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGhhbmRsZSBldmVudHNcclxuICBvblByaW50RGVmYXVsdChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAuZ2V0RGVmYXVsdFJlcG9ydCh0aGlzLmZvcm1OYW1lLCB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogUmVwb3J0VGVtcGxhdGVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5fdmlld1JlcG9ydChkYXRhPy51aWQsIGRhdGEpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwb3J0UGRmKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXREZWZhdWx0UmVwb3J0KHRoaXMuZm9ybU5hbWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuX2V4cG9ydFBkZihkYXRhLnVpZCwgZGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtTmFtZShmb3JtTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5yZXBvcnREaXNjcmltaW5hdG9yKVxyXG4gICAgICByZXR1cm4gYCR7Zm9ybU5hbWV9XyR7dGhpcy5yZXBvcnREaXNjcmltaW5hdG9yfWA7XHJcbiAgICBlbHNlIHJldHVybiBmb3JtTmFtZTtcclxuICB9XHJcblxyXG4gIG9uU2VuZFBkZihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXN0b21TZW5kTWFpbE1vZGUpIHtcclxuICAgICAgdGhpcy50b1NlbmRFbWFpbCA9IHRoaXMucmVwb3J0aW5nSW5mb3JtYXRpb24/LmRlc3RpbmF0aW9uQWRkcmVzc1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAuZ2V0RGVmYXVsdFJlcG9ydCh0aGlzLmZvcm1OYW1lLCB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5fc2VuZFBkZihkYXRhLnVpZCwgZGF0YSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAnc2hhcmVkX3JlcG9ydGluZ19ub19kZWZhdWx0X3JlcG9ydF9mb3VuZCdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2VuZFBkZihcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtRW5kcG9pbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9ybUVuZHBvaW50ICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXJlcG9ydEluZm9ybWF0aW9uKSB7XHJcbiAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbiA9IHRoaXMucmVwb3J0cy5maW5kKCh4KSA9PiB4LnVpZCA9PSBpZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2F2ZVN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICAgICAgbGV0IG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uWE1lZGl1bTtcclxuICAgICAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgIGRhdGE6IHsgc2F2ZVN1YmplY3QsIGVtYWlsOiB0aGlzLnRvU2VuZEVtYWlsIH0sXHJcbiAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHdpZHRoOiBtb2RhbFNpemUud2lkdGgsXHJcbiAgICAgICAgICBoZWlnaHQ6IG1vZGFsU2l6ZS5oZWlnaHQsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSB0aGlzLl90c2lNb2RhbFNlcnZpY2Uub3BlbihcclxuICAgICAgICAgIFRzaVNlbmRNYWlsQ29tcG9uZW50LFxyXG4gICAgICAgICAgY29uZlxyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2F2ZVN1YmplY3Quc3Vic2NyaWJlKCh2YWw6IEVtYWlsSW5mb3JtYXRpb24pID0+IHtcclxuICAgICAgICAgIGlmICghdmFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdmFsLnRvQWRkcmVzcykge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdmFsLnN1YmplY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgcmVwb3J0VG9QcmludCA9IHRoaXMuX25ld1JlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbiEucmVwb3J0VHlwZSxcclxuICAgICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24hLnJlc3RFbmRwb2ludFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5leHBvcnRSZXBvcnRGaWxlVG9QZGYocmVwb3J0VG9QcmludClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiBhc3luYyAoYmxvYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCAnUmVwb3J0LnBkZicsIHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBibG9iLnR5cGUsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgbGV0IGF0dGFjaG1lbnRzOiBGaWxlW10gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudHMucHVzaChuZXdGaWxlKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLl9tYWlsaW5nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgIC5zZW5kTWFpbChcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbC50b0FkZHJlc3MhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsLnN1YmplY3QhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsLm1lc3NhZ2UgPz8gXCJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsLmNjQWRkcmVzc1xyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxpemF0aW9uS2V5cy5zZW50U3VjY2Vzc0Z1bGx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRvd25sb2FkaW5nIHRoZSBQREYnLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9leHBvcnRQZGYoXHJcbiAgICBpZDogc3RyaW5nLFxyXG4gICAgcmVwb3J0SW5mb3JtYXRpb24/OiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoaWQgIT0gdW5kZWZpbmVkICYmIGlkICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuZm9ybUVuZHBvaW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmZvcm1FbmRwb2ludCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFyZXBvcnRJbmZvcm1hdGlvbikge1xyXG4gICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24gPSB0aGlzLnJlcG9ydHMuZmluZCgoeCkgPT4geC51aWQgPT0gaWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFyZXBvcnRJbmZvcm1hdGlvbiB8fCAhcmVwb3J0SW5mb3JtYXRpb24ucmVzdEVuZHBvaW50KSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcmVwb3J0VG9QcmludCA9IHRoaXMuX25ld1JlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uIS5yZXBvcnRUeXBlLFxyXG4gICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24hLnJlc3RFbmRwb2ludFxyXG4gICAgICAgIClcclxuXHJcbiAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlXHJcbiAgICAgICAgICAuZXhwb3J0UmVwb3J0RmlsZVRvUGRmKHJlcG9ydFRvUHJpbnQpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbmV4dDogKGJsb2IpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgIGEuaHJlZiA9IHVybDtcclxuICAgICAgICAgICAgICAgIGEuZG93bmxvYWQgPSAnUmVwb3J0LnBkZic7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgICAgICAgICAgYS5jbGljaygpO1xyXG5cclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgdGhlIFBERicsIGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKFxyXG4gICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfcmVkaXJlY3RlZF90b19wcmludF9yZXBvcnRfc3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldE5vbWJyZUZpY2hpZXIoKSB7XHJcbiAgICBpZiAodGhpcy5pZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2ZpY2hpZXJTZXJ2aWNlXHJcbiAgICAgICAgLkdldE5vbWJyZUZpY2hpZXJKb2ludEJ5SWQodGhpcy5pZCA/PyBcIlwiKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzID0gZGF0YTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvd1VwbG9hZERpYWxvZygpIHtcclxuXHJcbiAgICBjb25zdCBjb25mID0ge1xyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZSEud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VGaWxlTWFuYWdlQ29tcG9uZW50KCkpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGJhc2U2NENvbnRlbnQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoYXJyYXlCdWZmZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWNoaWVyVG9TZW5kID0gbmV3IEZpY2hpZXIoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRhdGVGaWNoaWVyID0gbmV3IERhdGUoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm5vbSA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm9iamV0ID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5ub21GaWNoaWVyQ29tcGxldCA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5jb250ZW51ID0gYmFzZTY0Q29udGVudDtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnRhYmxlTGllZSA9IHRoaXMuYnVzaW5lc3NDbGFzcztcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnBrZXkgPSB0aGlzLmlkO1xyXG4gICAgICAgIGZpY2hpZXJUb1NlbmQudHlwZUZpY2hpZXIgPSAnNDM3QzA4RDUtQzE2OS00MTY3LThEMzctRjhBQzZDOTA1RTIzJzsgLy8gVE9ETzogTW9tb1xyXG5cclxuICAgICAgICB0aGlzLl9maWNoaWVyU2VydmljZS5jcmVhdGUoZmljaGllclRvU2VuZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3ModGhpcy5sKFwiRmljaGllciBlbnJlZ2lzdHLDqSAhXCIpKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmwoXCJFcnJldXIgbG9ycyBkZSBs4oCZZW5yZWdpc3RyZW1lbnQgIVwiKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dEaWFsb2coKSB7XHJcbiAgICB0aGlzLl9vcGVuTW9kYWwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNob3dFeHBvcnRJbXBvcnREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSBhd2FpdCBvcGVuTWFuYWdlSW1wb3J0RXhwb3J0TW9kYWwodGhpcy5faW5qZWN0b3IsIHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5mb3JtTmFtZSwgdGhpcy5wYWdlZFJlcXVlc3QpXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwsIHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJlc2VudGF0aW9uRGVzaWduZXJDb25maWcoKSB7XHJcbiAgICBpZiAodGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5pc0Rlc2lnbk1vZGUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZnJvbVRzaUZvcm0pIHtcclxuICAgICAgdGhpcy50b2dnbGVEZXNpZ25Nb2RlLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuX2Rlc2lnbk1vZGVGb3JtU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5fZGVzaWduTW9kZUxpc3RTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfdmlld1JlcG9ydChcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICAvLyBjYXNlIHRoZXJlIGlzIGRlZmF1bHQgcmVwb3J0XHJcbiAgICAgIGlmICh0aGlzLmZvcm1FbmRwb2ludCAhPSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtRW5kcG9pbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVwb3J0SW5mb3JtYXRpb24pIHtcclxuICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uID0gdGhpcy5yZXBvcnRzLmZpbmQoKHgpID0+IHgudWlkID09IGlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghcmVwb3J0SW5mb3JtYXRpb24gfHwgIXJlcG9ydEluZm9ybWF0aW9uLnJlc3RFbmRwb2ludCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlXHJcbiAgICAgICAgICAuYWRkUmVwb3J0VG9QcmludChcclxuICAgICAgICAgICAgdGhpcy5fbmV3UmVwb3J0VG9QcmludChcclxuICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbj8ucmVwb3J0VHlwZSxcclxuICAgICAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbj8ucmVzdEVuZHBvaW50XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCAmJiBkYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRUb1ByaW50SWQgPSBkYXRhLnVpZDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2UuZ2V0UmVwb3J0VGVtcGxhdGVCeUlkKGlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW5hbnRVaWQgPSB0aGlzLmlkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpPy50ZW5hbnRVaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybFZpZXdlciA9IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXBvcnRUeXBlID09PSBUc2lSZXBvcnRUeXBlLkxpc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHVybFZpZXdlciA9IGAke1NlZ21lbnQucmVwb3J0aW5nU2VydmljZUJhc2V9L3JlcG9ydC12aWV3ZXIvJHt0aGlzLnJlcG9ydFRvUHJpbnRJZH0/JHtxdWVyeVBhcmFtTmFtZXNDb25zdC50ZW5hbnRVaWR9PSR7dGVuYW50VWlkfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLnJlcG9ydFR5cGUgPT09IFRzaVJlcG9ydFR5cGUuRGFzaGJvYXJkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB1cmxWaWV3ZXIgPSBgJHtTZWdtZW50LmFwcEJhc2VIcmVmfS8ke0FwcFJvdXRlcy5hcHB9LyR7QXBwUm91dGVzLmRhc2hib2FyZH0vJHtNYW5hZ2VSZXBvcnRpbmdSb3V0ZXMuZGFzaGJvYXJkVmlld2VyfT8ke3F1ZXJ5UGFyYW1OYW1lc0NvbnN0LnJlcG9ydFRvUHJpbnR9PSR7dGhpcy5yZXBvcnRUb1ByaW50SWR9JiR7cXVlcnlQYXJhbU5hbWVzQ29uc3QudGVuYW50VWlkfT0ke3RlbmFudFVpZH1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5yZXBvcnRUeXBlID09PSBUc2lSZXBvcnRUeXBlLlJURikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXJsVmlld2VyID0gYCR7U2VnbWVudC5yZXBvcnRpbmdTZXJ2aWNlQmFzZX0vbWFpbG1lcmdlLXJlYWRvbmx5bW9kZS8ke3RoaXMucmVwb3J0VG9QcmludElkfT8ke3F1ZXJ5UGFyYW1OYW1lc0NvbnN0LnRlbmFudFVpZH09JHt0ZW5hbnRVaWR9YDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybFZpZXdlciwgJ19ibGFuaycpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2VzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX3JlZGlyZWN0ZWRfdG9fcHJpbnRfcmVwb3J0X3N1Y2Nlc3NmdWxseSdcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodGhpcy5lcnJvck1lc3NhZ2VLZXkpO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHsgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBubyBkZWZhdWx0IHJlcG9ydFxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9uZXdSZXBvcnRUb1ByaW50KFxyXG4gICAgdWlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRUeXBlOiBudW1iZXIsXHJcbiAgICByZXN0RW5kcG9pbnQ/OiBzdHJpbmcsXHJcbiAgICBtb2R1bGU/OiBzdHJpbmcsXHJcbiAgICBvcmRlcj86IG51bWJlcixcclxuICAgIHNob3J0TmFtZT86IHN0cmluZyxcclxuICAgIGRpc3BsYXk/OiBib29sZWFuXHJcbiAgKTogUmVwb3J0VG9QcmludCB7XHJcbiAgICBsZXQgdG9rZW4gPSB0aGlzLmlkZW50aXR5TWFuYWdlclNlcnZpY2UuZ2V0QXV0aFRva2VuKCk7XHJcbiAgICBsZXQgdXNlcm5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9XHJcbiAgICAgIHRoaXMuaWRlbnRpdHlNYW5hZ2VyU2VydmljZS5wYXJzZU15QXV0aFRva2VuKCkubmFtZTtcclxuICAgIGlmICh1c2VybmFtZSkge1xyXG4gICAgICBpZiAodWlkICYmIC8qdGhpcy5vdGhlckZvcm1FbmRwb2ludCAmJiB0aGlzLm90aGVyRm9ybU5hbWUgJiYqLyB0b2tlbikge1xyXG4gICAgICAgIGxldCBuZXdSZXBvcnRUb1ByaW50OiBSZXBvcnRUb1ByaW50ID0ge1xyXG4gICAgICAgICAgcmVwb3J0VGVtcGxhdGVVaWQ6IHVpZCxcclxuICAgICAgICAgIHJlc3RFbmRwb2ludDogdGhpcy5pc1JlcG9ydEZvckZpY2hlXHJcbiAgICAgICAgICAgID8gdGhpcy5yZXBvcnRpbmdTZXJ2aWNlLmluc2VydE5ld1VpZEluUmVzdEVuZFBvaW50KHJlc3RFbmRwb2ludCwgdGhpcy5pZCkgPz9cclxuICAgICAgICAgICAgdGhpcy5mb3JtRW5kcG9pbnRcclxuICAgICAgICAgICAgOiB0aGlzLmZvcm1FbmRwb2ludCxcclxuICAgICAgICAgIHJlcXVlc3REYXRhOiAhdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlID8gdGhpcy5mb3JtRW5kcG9pbnRCb2R5IDogdGhpcy5yZXF1ZXN0RGF0YSxcclxuICAgICAgICAgIGZvcm1OYW1lOiB0aGlzLmZvcm1OYW1lLFxyXG4gICAgICAgICAgcmVwb3J0VHlwZTogcmVwb3J0VHlwZSxcclxuICAgICAgICAgIHVzZXJuYW1lOiB1c2VybmFtZSxcclxuICAgICAgICAgIHVzZXJUb2tlbjogcmVwb3J0VHlwZSA9PSBUc2lSZXBvcnRUeXBlLkRhc2hib2FyZCA/IHVuZGVmaW5lZCA6IHRva2VuLFxyXG4gICAgICAgICAgaXNQYWdlZDogdGhpcy5pc0Zvcm1FbmRwb2ludFBhZ2VkID09IHRydWUgPyB0cnVlIDogZmFsc2UsXHJcbiAgICAgICAgICBodG1sRmlsdGVyc1RleHQ6IHRoaXMuZmlsdGVyc0h0bWxUZW1wbGF0ZSxcclxuICAgICAgICAgIG9wdGlvbmFsRW5kcG9pbnRzSnNvbjogdGhpcy5vcHRpb25hbEVuZHBvaW50cyxcclxuICAgICAgICAgIG1vZHVsZTogbW9kdWxlLFxyXG4gICAgICAgICAgb3JkZXI6IG9yZGVyLFxyXG4gICAgICAgICAgc2hvcnROYW1lOiBzaG9ydE5hbWUsXHJcbiAgICAgICAgICBkaXNwbGF5OiBkaXNwbGF5LFxyXG4gICAgICAgICAgaHR0cE1ldGhvZFR5cGU6IHRoaXMuZ2V0SHR0cE1ldGhvZFR5cGUoKVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJldHVybiBuZXdSZXBvcnRUb1ByaW50O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgJ3NvbWUgb2YgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgOiB1c2VyIHRva2VuLCBmb3JtTmFtZSwgZm9ybUVuZHBvaW50IG9yIHNlbGVjdGVkUmVwb3J0IGhhdmUgbm90IGJlZW4gc2V0ICEnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgRXJyb3IoXCJwcm9wZXJ0eSAnVXNlck5hbWUgJyBvZiBjdXJyZW50IHVzZXIgaGF2ZSBub3QgYmVlbiBzZXQgIVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX29wZW5Nb2RhbCgpIHtcclxuICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnO1xyXG4gICAgY29uZiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG90aGVyRm9ybU5hbWU6IHRoaXMuZm9ybU5hbWUsXHJcbiAgICAgICAgb3RoZXJGb3JtRW5kcG9pbnQ6IHRoaXMuZm9ybUVuZHBvaW50LFxyXG4gICAgICAgIGZvcm1FbmRwb2ludEJvZHk6IHRoaXMuZm9ybUVuZHBvaW50Qm9keSxcclxuICAgICAgICBpc0Zvcm1FbmRwb2ludFBhZ2VkOiB0aGlzLmlzRm9ybUVuZHBvaW50UGFnZWQsXHJcbiAgICAgICAgZmlsdGVyc0h0bWxUZW1wbGF0ZTogdGhpcy5maWx0ZXJzSHRtbFRlbXBsYXRlLFxyXG4gICAgICAgIG9wdGlvbmFsRW5kcG9pbnRzOiB0aGlzLm9wdGlvbmFsRW5kcG9pbnRzLFxyXG4gICAgICAgIGJ1c2luZXNzQ2xhc3M6IHRoaXMuYnVzaW5lc3NDbGFzcyxcclxuICAgICAgICByZXBvcnREaXNjcmltaW5hdG9yOiB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IsXHJcbiAgICAgICAgaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgcmVxdWVzdERhdGE6IHRoaXMucmVxdWVzdERhdGEsXHJcbiAgICAgICAgY3VzdG9tUmVwb3J0aW5nTW9kZTogdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlLFxyXG4gICAgICAgIGh0dHBNZXRob2RUeXBlOiB0aGlzLmdldEh0dHBNZXRob2RUeXBlKCksXHJcbiAgICAgIH0sXHJcbiAgICAgIHN0eWxlQ2xhc3M6ICcnLFxyXG4gICAgICB3aWR0aDogdGhpcy5tb2RhbFNpemUud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmID0gYXdhaXQgb3Blbk1hbmFnZVJlcG9ydGluZ0NvbXBvbmVudCh0aGlzLl9pbmplY3RvciwgY29uZik7XHJcblxyXG4gICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgfVxyXG5cclxuICBnZXRIdHRwTWV0aG9kVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLmlzUmVwb3J0Rm9yRmljaGUgJiYgIXRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSkge1xyXG4gICAgICByZXR1cm4gSHR0cE1ldGhvZFR5cGUuR0VUO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmh0dHBNZXRob2RUeXBlICYmIHRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwTWV0aG9kVHlwZTtcclxuICAgIH1cclxuICAgIHJldHVybiBIdHRwTWV0aG9kVHlwZS5QT1NUO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VGaWxlTWFuYWdlQ29tcG9uZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZWRNb2RhbEZpbGVVcGxvYWQuZW1pdCh0cnVlKTtcclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xvc2VNb2RhbCh2YWw/OiBhbnksIHJlZnJlc2hEYXRhOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIHRoaXMucmVmcmVzaERhdGEuZW1pdChyZWZyZXNoRGF0YSk7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWY/LmRlc3Ryb3koKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLl9nZXRBbGxSZXBvcnRzKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xyXG4gIH1cclxuXHJcbiAgaGlkZUNvbnRleHRNZW51KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9O1xyXG4gICAgLy8gdGhpcy5yZXBvcnRzID0gW107XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdENvbnRleHRPcHRpb24oaXRlbTogUmVwb3J0VGVtcGxhdGVSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdmlld1JlcG9ydChpdGVtLnVpZCk7XHJcbiAgICB0aGlzLmhpZGVDb250ZXh0TWVudSgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UmVwb3J0cygpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMucmVwb3J0cyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG4gICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXRSZXBvcnRzKFxyXG4gICAgICAgICAgdGhpcy5mb3JtTmFtZSA/PyAnJyxcclxuICAgICAgICAgIHRoaXMucmVwb3J0RGlzY3JpbWluYXRvclxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZUtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRBbGxSZXBvcnRzKGNsaWNrWDogbnVtYmVyLCBjbGlja1k6IG51bWJlcikge1xyXG4gICAgYXdhaXQgdGhpcy5nZXRSZXBvcnRzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucmVwb3J0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLndyYXBwZXJSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgIHRoaXMuY29udGV4dE1lbnVQb3NpdGlvbiA9IHtcclxuICAgICAgICB4OiBjbGlja1ggLSByZWN0LmxlZnQsXHJcbiAgICAgICAgeTogY2xpY2tZIC0gcmVjdC50b3AsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIHZpZXdOb3RlcygpIHtcclxuICAgIGNvbnN0IHJlZiA9IGF3YWl0IG9wZW5Ob3Rlc0xpc3QodGhpcy5faW5qZWN0b3IpXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICB9XHJcblxyXG4gIHZpZXdJbmZvKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlkICE9IHVuZGVmaW5lZCAmJiB0aGlzLmlkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5yZWNvcmRJbmZvUG9wdXBTZXJ2aWNlXHJcbiAgICAgICAgLmdldEluZm8odGhpcy5idXNpbmVzc0NsYXNzISwgdGhpcy5pZClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgYXN5bmMgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgbGV0IG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uRXh0cmFMYXJnZTtcclxuICAgICAgICAgICAgbGV0IHRleHQgPVxyXG4gICAgICAgICAgICAgICdVSUQgOiAgJyArXHJcbiAgICAgICAgICAgICAgdGhpcy5pZCArXHJcbiAgICAgICAgICAgICAgJzxCUj5DcmVhdGVkIGJ5IDogICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEuY3JlYXRpb25Vc2VyICtcclxuICAgICAgICAgICAgICAnPEJSPk1vZGlmaWVkIGJ5IDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5tb2RpZlVzZXIgK1xyXG4gICAgICAgICAgICAgICc8QlI+Q3JlYXRlZCBvbiA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEuZGF0ZVNhaXNpZSArXHJcbiAgICAgICAgICAgICAgJzxCUj5Nb2RpZmllZCBvbiA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEuZGF0ZU1vZGlmO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgVWlkOiB0aGlzLmlkLFxyXG4gICAgICAgICAgICAgICAgY3JlYXRpb25Vc2VyOiBkYXRhLmNyZWF0aW9uVXNlcixcclxuICAgICAgICAgICAgICAgIG1vZGlmVXNlcjogZGF0YS5tb2RpZlVzZXIsXHJcbiAgICAgICAgICAgICAgICBkYXRlU2Fpc2llOiBkYXRhLmRhdGVTYWlzaWUsXHJcbiAgICAgICAgICAgICAgICBkYXRlTW9kaWY6IGRhdGEuZGF0ZU1vZGlmLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc5MHJlbScsXHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAnODByZW0nLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmID0gYXdhaXQgb3BlblRzaVBvcHVwVGV4dFZpZXdlckNvbXBvbmVudCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuX2Nsb3NlTW9kYWwodmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgYXJyYXlCdWZmZXJUb0Jhc2U2NChidWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBiaW5hcnkgPSAnJztcclxuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcclxuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBidG9hKGJpbmFyeSk7XHJcbiAgfVxyXG5cclxuICBoaWRlKHZhbD86IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX2RpYWxvZ1JlZiAhPSBudWxsICYmIHRoaXMuX2RpYWxvZ1JlZiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHZhbCA9PSBmYWxzZSkge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kZXN0cm95KCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHZhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMubG9jYWxpemUgIT0gbnVsbFxyXG4gICAgICAmJiB0aGlzLmxvY2FsaXplICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2NhbGl6ZS50cmFuc2Zvcm0oa2V5KTtcclxuICAgIH1cclxuICAgIHJldHVybiBrZXk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIG14LTJcIj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImZvcm1FbmRwb2ludCB8fCBidXNpbmVzc0NsYXNzXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cIm1hbmFnZV9yZXBvcnRzX2J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBbaWNvblNyY109XCInLi9hc3NldHMvaWNvbnMvaWNvbi1wcmludGVyLWdyb3VwLXdoaXRlLnBuZydcIlxyXG4gICAgICBbaWNvbldpZHRoXT1cIjIwXCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX21hbmFnZV9yZXBvcnRzJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cInNob3dEaWFsb2coKVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwicHJpbnRfZGVmYXVsdF9yZXBvcnRfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4td3JhcHBlclwiXHJcbiAgICAjd3JhcHBlclxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktcHJpbnQgcC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnRcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfcmlnaHRDbGljaydcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJvblByaW50RGVmYXVsdCgkZXZlbnQpXCJcclxuICAgICAgKHJpZ2h0Q2xpY2spPVwib25SaWdodENsaWNrKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgPCEtLSBgc2hhcmVkX3JlcG9ydGluZ19wcmludF9yZXBvcnRgIGtleSBmb3IgYEltcHJpbWVyYCB0ZXh0ICAocmVwbGFjZSBpdCBhcyB2YWx1ZSBvciB0b29sdGlwIGlmIG5lZWQgaXQpIC0tPlxyXG5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzaG93Q29udGV4dE1lbnVcIlxyXG4gICAgICBjbGFzcz1cImNvbnRleHQtbWVudVwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAndG9wLnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi55LFxyXG4gICAgICAgICdsZWZ0LnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi54XHJcbiAgICAgIH1cIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJoaWRlQ29udGV4dE1lbnUoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdGb3I9XCJsZXQgcmVwb3J0IG9mIHJlcG9ydHNcIlxyXG4gICAgICAgIGNsYXNzPVwibWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwib25TZWxlY3RDb250ZXh0T3B0aW9uKHJlcG9ydClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgcmVwb3J0Lm5hbWUgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJidXNpbmVzc0NsYXNzICYmIHNob3dVcGxvYWRCdXR0b25cIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiYXR0YWNobWVudF9idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLXBhcGVyY2xpcCBwLWJ1dHRvbi1pY29uXCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfYWN0aW9uc19hdHRhY2htZW50J1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cInNob3dVcGxvYWREaWFsb2coKVwiXHJcbiAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgICA8c3BhbiAqbmdJZj1cIm5vbWJyZURvY3VtZW50c0pvaW50cyAmJiBub21icmVEb2N1bWVudHNKb2ludHMgPiAwXCIgY2xhc3M9XCJjdXN0b20tYmFkZ2VcIj5cclxuICAgICAge3sgbm9tYnJlRG9jdW1lbnRzSm9pbnRzIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2VuZF9yZXBvcnRfYnlfZW1haWxfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1zZW5kIHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX3NlbmRfbWFpbCdcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJvblNlbmRQZGYoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJidXNpbmVzc0NsYXNzICYmIHNob3dJbXBvcnRFeHBvcnRCdXR0b25cIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwiaW1wb3J0X2V4cG9ydF9idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLWFycm93LXJpZ2h0LWFycm93LWxlZnQgcC1idXR0b24taWNvblwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19tYW5hZ2VfZXhwb3J0X2ltcG9ydCdcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd0V4cG9ydEltcG9ydERpYWxvZygpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93Tm90ZUJ1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hhcmVkX3Nob3dfbm90ZXNfYnV0dG9uXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBpZD1cInt7IGNvbmZpZ01vZGVCdXR0b25JZCB9fVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktY29tbWVudCBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3RzaV9jb21wb25lbnRfZ2VzdGlvbl9kZXNfbm90ZXMnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24td2FybmluZyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IHRleHQtd2hpdGVcIlxyXG4gICAgICAoY2xpY2spPVwidmlld05vdGVzKClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwic2hvd0luZm9CdXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNoYXJlZF9zaG93X2luZm9fYnV0dG9uXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBpZD1cIidzaG93LWluZm8tYnV0dG9uJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktaW5mbyBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2FjdGlvbnNfaW5mbydcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1pbmZvIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHkgdGV4dC13aGl0ZVwiXHJcbiAgICAgIChjbGljayk9XCJ2aWV3SW5mbygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBpZD1cInt7IGNvbmZpZ01vZGVCdXR0b25JZCB9fVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktZXllIHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfdHNpX2NvbXBvbmVudF9jb25maWdfc2hvd19oaWRlJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3MgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJwcmVzZW50YXRpb25EZXNpZ25lckNvbmZpZygpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPCEtLSA8ZGl2ICpuZ0lmPVwic2hvd0NvbnRleHRNZW51XCJcclxuICBjbGFzcz1cImNvbnRleHQtbWVudVwiXHJcbiAgW25nU3R5bGVdPVwie1xyXG4gICAgJ3RvcC5weCc6IGNvbnRleHRNZW51UG9zaXRpb24ueSxcclxuICAgICdsZWZ0LnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi54XHJcbiAgfVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwiaGlkZUNvbnRleHRNZW51KClcIj5cclxuICA8ZGl2ICpuZ0Zvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0c1wiXHJcbiAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXHJcbiAgICAoY2xpY2spPVwib25TZWxlY3RDb250ZXh0T3B0aW9uKHJlcG9ydClcIj5cclxuICAgIHt7cmVwb3J0Lm5hbWV9fVxyXG4gIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcbiJdfQ==
|
|
@@ -9207,7 +9207,6 @@ class ReportingComponent {
|
|
|
9207
9207
|
console.error('Error downloading the PDF', error);
|
|
9208
9208
|
}
|
|
9209
9209
|
});
|
|
9210
|
-
this.notificationService.success('shared_reporting_redirected_to_print_report_successfully');
|
|
9211
9210
|
});
|
|
9212
9211
|
this._dialogRef.onClose.subscribe((val) => {
|
|
9213
9212
|
this._closeModal(val);
|