myrtex-mf-competition 1.0.95 → 1.0.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/modules/competition-header/components/competition-header.component.mjs +8 -8
- package/esm2020/lib/modules/competition-header/services/competition-header.service.mjs +6 -21
- package/fesm2015/myrtex-mf-competition.mjs +12 -26
- package/fesm2015/myrtex-mf-competition.mjs.map +1 -1
- package/fesm2020/myrtex-mf-competition.mjs +11 -26
- package/fesm2020/myrtex-mf-competition.mjs.map +1 -1
- package/lib/modules/competition-header/services/competition-header.service.d.ts +0 -1
- package/package.json +1 -1
|
@@ -182,15 +182,15 @@ export class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
182
182
|
if (result) {
|
|
183
183
|
this.competition = result;
|
|
184
184
|
this._accessService.checkPermission(this.getAccessControl(CAN_AGREEMENT_COMPETITION))
|
|
185
|
-
.subscribe(result => this._canAgreementVersionAccess = true); // TODO
|
|
185
|
+
.subscribe(result => this._canAgreementVersionAccess = true); // TODO true => result
|
|
186
186
|
this._accessService.checkPermission(this.getAccessControl(CAN_CREATE_COMPETITION_VERSION))
|
|
187
|
-
.subscribe(result => this._canCreateVersionAccess = true); // TODO
|
|
187
|
+
.subscribe(result => this._canCreateVersionAccess = true); // TODO true => result
|
|
188
188
|
this._accessService.checkPermission(this.getAccessControl(CAN_PUBLIC_COMPETITION))
|
|
189
|
-
.subscribe(result => this._canPublicVersionAccess = true); // TODO
|
|
189
|
+
.subscribe(result => this._canPublicVersionAccess = true); // TODO true => result
|
|
190
190
|
this._accessService.checkPermission(this.getAccessControl(CAN_COMPLETE_COMPETITION))
|
|
191
|
-
.subscribe(result => this._canCompleteEntityAccess = true); // TODO
|
|
191
|
+
.subscribe(result => this._canCompleteEntityAccess = true); // TODO true => result
|
|
192
192
|
this._accessService.checkPermission(this.getAccessControl(CAN_CANCEL_COMPETITION))
|
|
193
|
-
.subscribe(result => this._canCancelEntityAccess = true); // TODO
|
|
193
|
+
.subscribe(result => this._canCancelEntityAccess = true); // TODO true => result
|
|
194
194
|
}
|
|
195
195
|
}));
|
|
196
196
|
this.appendSubscription(this.store.pipe(select(selectCompetitionType)).subscribe(result => {
|
|
@@ -294,8 +294,8 @@ export class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
294
294
|
title: 'Направление документа на согласование',
|
|
295
295
|
okLabel: 'Отправить',
|
|
296
296
|
cancelLabel: 'Отменить',
|
|
297
|
-
pdfUrl: `/m-data/minfin/pdf-competition/${selectedItem.id}`,
|
|
298
|
-
xmlUrl: `/m-data/minfin/xml-competition/${selectedItem.id}`,
|
|
297
|
+
pdfUrl: `/m-data/minfin/pdf-competition/${this.competition?.id}?versionId=${selectedItem.id}`,
|
|
298
|
+
xmlUrl: `/m-data/minfin/xml-competition/${this.competition?.id}?versionId=${selectedItem.id}`,
|
|
299
299
|
provider: 'empty'
|
|
300
300
|
}, () => {
|
|
301
301
|
this.alertService.showMessage('', 'Ожидайте. Выполняется отправка на согласование.', MessageSeverity.wait);
|
|
@@ -460,4 +460,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
460
460
|
}], selectedCompetitionVersionInfo: [{
|
|
461
461
|
type: Output
|
|
462
462
|
}] } });
|
|
463
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHNDQUFzQyxFQUN0QyxtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQiw4QkFBOEIsRUFDOUIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtDQUFrQyxFQUNs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N0IsNkJBQTZCLDBlQUUxQix1Q0FBdUMsdUVDdkV2RCxraWFBd0tBOzRGRG5HYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0Usd0JBQXdCOzJNQU0zQixxQkFBcUI7c0JBRDNCLFlBQVk7dUJBQUMsdUNBQXVDO2dCQUk5QyxxQkFBcUI7c0JBRDNCLEtBQUs7Z0JBSUMsZ0NBQWdDO3NCQUR0QyxLQUFLO2dCQUlDLGtDQUFrQztzQkFEeEMsS0FBSztnQkFJQyxrQ0FBa0M7c0JBRHhDLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLDhCQUE4QjtzQkFEcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBDb21wZXRpdGlvblZlcnNpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb21wZXRpdGlvbi12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBDb21wZXRpdGlvbk1vZGVFbnVtLFxyXG4gIENvbXBldGl0aW9uU3RhdHVzRW51bSxcclxuICBDb21wZXRpdGlvblN0YXR1c0VudW1MYWJlbCxcclxuICBEaWFsb2dDb2xvcixcclxuICBEaWFsb2dUeXBlLFxyXG4gIEFsZXJ0U2VydmljZSxcclxuICBVblN1YnNjcmliZXIsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25Db25maWcsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25MYWJlbCxcclxuICBDb21wZXRpdGlvbkNvbmZpZ01vZGVsLFxyXG4gIENhbmNlbENvbXBldGl0aW9uVHlwZUVudW0sXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuICBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25UeXBlRW51bSxcclxuICBNZXNzYWdlU2V2ZXJpdHksIHNlbGVjdFVzZXJJbmZvXHJcbn0gZnJvbSAnbXlydGV4LW1mLXVpLWNvbXBvc2l0ZSc7XHJcbmltcG9ydCB7XHJcbiAgYWN0aXZhdGVDb21wZXRpdGlvbixcclxuICBjYW5jZWxDb21wZXRpdGlvbixcclxuICBjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLFxyXG4gIGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyxcclxuICBjb21wbGV0ZUNvbXBldGl0aW9uLFxyXG4gIGNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbixcclxuICBkZWxldGVDb21wZXRpdGlvblZlcnNpb24sXHJcbiAgbG9hZENvbXBldGl0aW9uSGVhZGVyLFxyXG4gIHBhdXNlQ29tcGV0aXRpb24sXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25WZXJzaW9uXHJcbn0gZnJvbSAnLi4vc3RvcmUvY29tcGV0aXRpb24taGVhZGVyLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wZXRpdGlvblN0YXR1c01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgc2VsZWN0QWN0aXZpdHlJZCxcclxuICBzZWxlY3RDb21wZXRpdGlvblNlbGVjdGVkVmVyc2lvbklkLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uU3RhdHVzLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uVHlwZSxcclxuICBzZWxlY3RDb21wZXRpdGlvblZlcnNpb25zLFxyXG4gIHNlbGVjdE1hbnVhbFZlcnNpb25TdGF0dXNDaGFuZ2VkXHJcbn0gZnJvbSAnLi4vc3RvcmUvY29tcGV0aXRpb24taGVhZGVyLnNlbGVjdG9yJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25IZWFkZXJDdXN0b21CdXR0b25zRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jb21wZXRpdGlvbi1oZWFkZXItY3VzdG9tLWJ1dHRvbnMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25SZWplY3Rpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFNpZ25TZXJ2aWNlIH0gZnJvbSAnbXlydGV4LW1mLXNpZ25lcic7XHJcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFQkxpbmtzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZWItbGlua3MubW9kZWwnO1xyXG5pbXBvcnQge0FjY2Vzc1NlcnZpY2UsIENoZWNrUGVybWlzc2lvbk1vZGVsfSBmcm9tICdteXJ0ZXgtbWYtYXV0aCc7XHJcbmltcG9ydCB7XHJcbiAgQ0FOX0FHUkVFTUVOVF9DT01QRVRJVElPTixcclxuICBDQU5fQ0FOQ0VMX0NPTVBFVElUSU9OLFxyXG4gIENBTl9DT01QTEVURV9DT01QRVRJVElPTixcclxuICBDQU5fQ1JFQVRFX0NPTVBFVElUSU9OX1ZFUlNJT04sXHJcbiAgQ0FOX1BVQkxJQ19DT01QRVRJVElPTixcclxuICBDT01QRVRJVElPTl9FTlRJVFlfTkFNRVxyXG59IGZyb20gJy4uL2NvbnN0YW50cy9jb21wZXRpdGlvbi1wZXJtaXNzaW9uLmNvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIHZhbGlkYXRlVmVyc2lvbkZuID0gKChwYXJhbTogc3RyaW5nLCBvblZhbGlkYXRlZDogKCkgPT4gdm9pZCkgPT4gdm9pZCk7XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XHJcbiAgICBDcnlwdG9JbnRlcmNlcHRvcjogYW55O1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29tcGV0aXRpb24taGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliQ29tcGV0aXRpb25IZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBVblN1YnNjcmliZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQ29tcGV0aXRpb25IZWFkZXJDdXN0b21CdXR0b25zRGlyZWN0aXZlKVxyXG4gIHB1YmxpYyBjdXN0b21CdXR0b25zVGVtcGxhdGUhOiBDb21wZXRpdGlvbkhlYWRlckN1c3RvbUJ1dHRvbnNEaXJlY3RpdmU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhbGlkYXRlVmVyc2lvbkFjdGlvbjogdW5kZWZpbmVkIHwgdmFsaWRhdGVWZXJzaW9uRm4gPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkNyZWF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2FuVmFsaWRhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkFjdGl2YXRlVmVyc2lvbk9uQWN0aXZpdHlQZXJpb2QgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc0RpcnR5ID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RlZENvbXBldGl0aW9uVmVyc2lvbkluZm8gPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBldGl0aW9uVmVyc2lvbk1vZGVsPigpO1xyXG5cclxuICBwdWJsaWMgY29tcGV0aXRpb246IENvbXBldGl0aW9uU3RhdHVzTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHZlcnNpb25zOiBDb21wZXRpdGlvblZlcnNpb25Nb2RlbFtdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkOiBDb21wZXRpdGlvblZlcnNpb25Nb2RlbCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2VsZWN0ZWRWZXJzaW9uID0gJyc7XHJcbiAgcHVibGljIGNvbXBldGl0aW9uU3RhdHVzRW51bSA9IENvbXBldGl0aW9uU3RhdHVzRW51bTtcclxuICBwdWJsaWMgY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bSA9IENhbmNlbENvbXBldGl0aW9uVHlwZUVudW07XHJcbiAgcHVibGljIGNvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0gPSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtO1xyXG4gIHB1YmxpYyBjb21wZXRpdGlvbkxhYmVsID0gJyc7XHJcbiAgcHVibGljIHNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsID0gJ9Ce0YLQvNC10L3QuNGC0Ywg0L7RgtCx0L7RgCc7XHJcbiAgcHVibGljIGNvbXBldGl0aW9uQ29uZmlnOiBDb21wZXRpdGlvbkNvbmZpZ01vZGVsIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93Q29tcGxldGVDb21wZXRpdGlvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXN0b3JlQnV0dG9uTmFtZSA9ICfQktC+0LfQvtCx0L3QvtCy0LjRgtGMJztcclxuICBwcml2YXRlIF9hY3Rpdml0eUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZWJMaW5rc01vZGVsOiBFQkxpbmtzTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfY29tcGV0aXRpb25UeXBlOiBDb21wZXRpdGlvblR5cGVFbnVtIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuQ3JlYXRlVmVyc2lvbkFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5Db21wbGV0ZUVudGl0eUFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhbkNhbmNlbEVudGl0eUFjY2VzcyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpZ25TZXJ2aWNlOiBTaWduU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hY2Nlc3NTZXJ2aWNlOiBBY2Nlc3NTZXJ2aWNlLCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNFbnVtTGFiZWwoKSB7XHJcbiAgICBpZiAodGhpcy52ZXJzaW9ucyAmJiB0aGlzLnZlcnNpb25zLmxlbmd0aCA9PSAxICYmIHRoaXMuc2VsZWN0ZWRcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZC5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWxbdGhpcy5zZWxlY3RlZC5zdGF0dXNdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb24gPyBDb21wZXRpdGlvblN0YXR1c0VudW1MYWJlbFt0aGlzLmNvbXBldGl0aW9uLnN0YXR1c10gOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNDc3NDbGFzcygpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy52ZXJzaW9ucy5sZW5ndGggPT0gMSAmJiB0aGlzLnNlbGVjdGVkXHJcbiAgICAgICYmICh0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgfHwgQ29tcGV0aXRpb25TdGF0dXNFbnVtLk5ldykgPD0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgICcnOiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlLFxyXG4gICAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICcnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5OZXdcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgIT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5Db21wbGV0ZWQsXHJcbiAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSxcclxuICAgICAgJ2NvbG9yLW9yYW5nZSc6IHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmcsXHJcbiAgICAgICdjb2xvci1yZWQnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5DYW5jZWxlZFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5DcmVhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkNyZWF0ZVZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5jYW5DcmVhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgICAmJiB0aGlzLmlzTGFzdFZlcnNpb25cclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wZXRpdGlvbi5tb2RlID4gQ29tcGV0aXRpb25Nb2RlRW51bS5CYXNlXHJcbiAgICAgICYmICgodGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmUgJiYgIXRoaXMuY29tcGV0aXRpb24uaXNSZXN1bHRQcm90b2NvbEFwcHJvdmVkKVxyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uU3RheWluZyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkRlbGV0ZVZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQ3JlYXRlVmVyc2lvbkFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IHRoaXMuY29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAmJiB0aGlzLnZlcnNpb25zXHJcbiAgICAgICYmIHRoaXMudmVyc2lvbnMubGVuZ3RoID4gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQWN0aXZhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgJiYgdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2Vzc1xyXG4gICAgJiYgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgIT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpXHJcbiAgICAgICAgfHwgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQ29uZmlybWVkXHJcbiAgICAgICAgICAgIHx8IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uKVxyXG4gICAgICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8ubW9kZSA9PT0gQ29tcGV0aXRpb25Nb2RlRW51bS5WZXJzaW9uZWRFeHRlbmRlZCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhY3RpdmF0ZVZlcnNpb25EaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmlzRGlydHlcclxuICAgICAgfHwgIXRoaXMuX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3NcclxuICAgICAgfHwgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgIT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpXHJcbiAgICAgICAgfHwgKHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5Db25maXJtZWRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgPT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGVWZXJzaW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5IHx8ICF0aGlzLl9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjcmVhdGVWZXJzaW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5IHx8ICF0aGlzLl9jYW5DcmVhdGVWZXJzaW9uQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBiYWNrVG9FZGl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5WYWxpZGF0ZVZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYW5WYWxpZGF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kXHJcbiAgICAgICYmIHRoaXMuX2NhbkFncmVlbWVudFZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0XHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgPT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWRcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzICE9PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ2FuY2VsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzTGFzdFZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy52ZXJzaW9ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBtID0gTWF0aC5tYXgoLi4udGhpcy52ZXJzaW9ucy5tYXAoeCA9PiB4Lm51bSkpO1xyXG4gICAgICByZXR1cm4gbSA9PT0gdGhpcy5zZWxlY3RlZD8ubnVtO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93UmVqZWN0aW9uUmVhc29uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZD8ucmVqZWN0aW9uUmVhc29uICYmXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICB8fCB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZlcnNpb25TdGF0dXNDbGFzcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJyc6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiDQmtC+0L3RgtC10LrRgdGCINC00LvRjyDQutCw0YHRgtC+0LzQvdGL0YUg0LrQvdC+0L/QvtC6LCDQvNC+0LbQtdGCINGA0LDRgdGI0LjRgNGP0YLRjNGB0Y8gKi9cclxuICBwdWJsaWMgZ2V0IGN1c3RvbUJ1dHRvbnNUZW1wbGF0ZUNvbnRleHQoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjdGl2aXR5SWQ6IHRoaXMuX2FjdGl2aXR5SWQsXHJcbiAgICAgIGNvbXBldGl0aW9uSWQ6IHRoaXMuY29tcGV0aXRpb24/LmlkLFxyXG4gICAgICBjb21wZXRpdGlvblZlcnNpb25JZDogdGhpcy5zZWxlY3RlZD8uaWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhblJldHVyblRvRWRpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dFYkxpbmsoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbiAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMudmVyc2lvbnMuc29tZSh4ID0+IHguc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ29tcGxldGVDb21wZXRpdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5Db21wbGV0ZUVudGl0eUFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWRcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uLmlzUmVzdWx0UHJvdG9jb2xBcHByb3ZlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ2FuY2VsQ29tcGV0aXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQ2FuY2VsRW50aXR5QWNjZXNzXHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24gIT09IHVuZGVmaW5lZFxyXG4gICAgICAmJiAodGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmdcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkNhbmNlbGVkKVxyXG4gICAgICAmJiB0aGlzLnNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobG9hZENvbXBldGl0aW9uSGVhZGVyKCkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblZlcnNpb25zKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLnZlcnNpb25zID0gcmVzdWx0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25TZWxlY3RlZFZlcnNpb25JZCkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblN0YXR1cykpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5jb21wZXRpdGlvbiA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX0FHUkVFTUVOVF9DT01QRVRJVElPTikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLl9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzID0gdHJ1ZSk7IC8vIFRPRE8gZmFsc2UgPT4gcmVzdWx0XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9DUkVBVEVfQ09NUEVUSVRJT05fVkVSU0lPTikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLl9jYW5DcmVhdGVWZXJzaW9uQWNjZXNzID0gdHJ1ZSk7IC8vIFRPRE8gZmFsc2UgPT4gcmVzdWx0XHJcbiAgICAgICAgdGhpcy5fYWNjZXNzU2VydmljZS5jaGVja1Blcm1pc3Npb24odGhpcy5nZXRBY2Nlc3NDb250cm9sKENBTl9QVUJMSUNfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2VzcyA9IHRydWUpOyAvLyBUT0RPIGZhbHNlID0+IHJlc3VsdFxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQ09NUExFVEVfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuQ29tcGxldGVFbnRpdHlBY2Nlc3MgPSB0cnVlKTsgLy8gVE9ETyBmYWxzZSA9PiByZXN1bHRcclxuICAgICAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX0NBTkNFTF9DT01QRVRJVElPTikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLl9jYW5DYW5jZWxFbnRpdHlBY2Nlc3MgPSB0cnVlKTsgLy8gVE9ETyBmYWxzZSA9PiByZXN1bHRcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblR5cGUpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX2NvbXBldGl0aW9uVHlwZSA9IHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbkxhYmVsKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuY29tcGV0aXRpb25MYWJlbCA9IHJlc3VsdDtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0QWN0aXZpdHlJZCkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLl9hY3Rpdml0eUlkID0gcmVzdWx0O1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbkNvbmZpZykpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5jb21wZXRpdGlvbkNvbmZpZyA9IHJlc3VsdDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25MYWJlbCkge1xyXG4gICAgICAgICAgdGhpcy5jYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5jYW5jZWxDb21wZXRpdGlvbkxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5jb21wZXRpdGlvbkNvbmZpZy5jYW5jZWxDb21wZXRpdGlvblR5cGVcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlID4gdGhpcy5jYW5jZWxDb21wZXRpdGlvblR5cGVFbnVtLkRpc2FibGVkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbiA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2hvd0NvbXBsZXRlQ29tcGV0aXRpb25CdXR0b24gPSB0aGlzLmNvbXBldGl0aW9uQ29uZmlnLnNob3dDb21wbGV0ZUNvbXBldGl0aW9uQnV0dG9uO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnLnJlc3RvcmVCdXR0b25OYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3RvcmVCdXR0b25OYW1lID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5yZXN0b3JlQnV0dG9uTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0TWFudWFsVmVyc2lvblN0YXR1c0NoYW5nZWQpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgLy8g0L/RgNC+0LjQt9C+0YjQu9C+INGA0YPRh9C90L7QtSDQuNC30LzQtdC90LXQvdC40LUg0YHRgtCw0YLRg9GB0LAsINGC0L7Qu9C60LDQtdC8INC00LDQu9GM0YjQtSDQv9C+INGC0LDQudC80LDRg9GC0YNcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICAgIHZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5Db25maXJtZWRcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDAwKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5zZXR0aW5nc1NlcnZpY2UuZ2V0U2VsZWxlY3Rpb25FZGl0RWJMaW5rcygpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLl9lYkxpbmtzTW9kZWwgPSByZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsKHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWxbdmFsdWUgYXMgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwodmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0dyb3VwcGluZ0xhYmVsW3ZhbHVlIGFzIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW1dO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgdGl0bGU6IGDQpNC+0YDQvNC40YDQvtCy0LDQvdC40LUg0LjQt9C80LXQvdC10L3QuNC5YCxcclxuICAgICAgbWVzc2FnZTpcclxuICAgICAgICBgJHt0aGlzLmdldFdhcm5pbmdNZXNzYWdlSHRtbCgn0JLQvdC40LzQsNC90LjQtSEg0KTQvtGA0LzQuNGA0L7QstCw0L3QuNC1INC40LfQvNC10L3QtdC90LjQuSDQv9GA0LjQstC10LTQtdGCINC6INGB0L7Qt9C00LDQvdC40Y4g0L3QvtCy0L7QuSDQstC10YDRgdC40Lgg0L7RgtCx0L7RgNCwJyl9XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgINCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGB0YTQvtGA0LzQuNGA0L7QstCw0YLRjCDQuNC30LzQtdC90LXQvdC40Y8/XHJcbiAgICAgICAgICAgIDwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY3JlYXRlQ29tcGV0aXRpb25WZXJzaW9uKCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKHtcclxuICAgICAgICB0aXRsZTogYNCf0YPQsdC70LjQutCw0YbQuNGPICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfdCwYCxcclxuICAgICAgICBtZXNzYWdlOiBgJHt0aGlzLmdldFdhcm5pbmdNZXNzYWdlSHRtbCgpfVxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICDQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtC/0YPQsdC70LjQutC+0LLQsNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P1xyXG4gICAgICAgICAgICA8L3A+YCxcclxuICAgICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICAgIHR5cGU6IERpYWxvZ1R5cGUuY29uZmlybSxcclxuICAgICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgICBva0NhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgIHZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB2YWxpZGF0ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG5cclxuICAgICAgaWYgKHRoaXMudmFsaWRhdGVWZXJzaW9uQWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZlcnNpb25BY3Rpb24oc2VsZWN0ZWRJdGVtLmlkLCAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNpZ25TZXJ2aWNlLnNpZ24oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ9Cd0LDQv9GA0LDQstC70LXQvdC40LUg0LTQvtC60YPQvNC10L3RgtCwINC90LAg0YHQvtCz0LvQsNGB0L7QstCw0L3QuNC1JyxcclxuICAgICAgICAgICAgb2tMYWJlbDogJ9Ce0YLQv9GA0LDQstC40YLRjCcsXHJcbiAgICAgICAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgICAgICAgIHBkZlVybDogYC9tLWRhdGEvbWluZmluL3BkZi1jb21wZXRpdGlvbi8ke3NlbGVjdGVkSXRlbS5pZH1gLFxyXG4gICAgICAgICAgICB4bWxVcmw6IGAvbS1kYXRhL21pbmZpbi94bWwtY29tcGV0aXRpb24vJHtzZWxlY3RlZEl0ZW0uaWR9YCxcclxuICAgICAgICAgICAgcHJvdmlkZXI6ICdlbXB0eSdcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoJycsICfQntC20LjQtNCw0LnRgtC1LiDQktGL0L/QvtC70L3Rj9C10YLRgdGPINC+0YLQv9GA0LDQstC60LAg0L3QsCDRgdC+0LPQu9Cw0YHQvtCy0LDQvdC40LUuJywgTWVzc2FnZVNldmVyaXR5LndhaXQpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgICAgdmVyc2lvbklkOiBzZWxlY3RlZEl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLlZhbGlkYXRpb25cclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQo9C00LDQu9C40YLRjCDQstC10YDRgdC40Y4gICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfdCwP2AsXHJcbiAgICAgICAgYCR7dGhpcy5nZXRXYXJuaW5nTWVzc2FnZUh0bWwoKX1cclxuICAgICAgPHA+XHJcbiAgICAgICAg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0LLQtdGA0YHQuNGOICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsPy50b0xvd2VyQ2FzZSgpfdCwP1xyXG4gICAgICA8L3A+YCxcclxuICAgICAgICBEaWFsb2dUeXBlLmNvbmZpcm0sIChvaykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChkZWxldGVDb21wZXRpdGlvblZlcnNpb24oe3ZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkfSkpO1xyXG4gICAgICAgIH0sIHVuZGVmaW5lZCwgbnVsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIERpYWxvZ0NvbG9yLnJlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzdG9yZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coYNCS0L7Qt9C+0LHQvdC+0LLQuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aXZhdGVDb21wZXRpdGlvbigpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhdXNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J/RgNC40L7RgdGC0LDQvdC+0LLQuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gocGF1c2VDb21wZXRpdGlvbigpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnICYmIHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlID09IHRoaXMuY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bS5XaXRoVmFsaWRhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uKHt2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZH0pKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J7RgtC80LXQvdC40YLRjCAke3RoaXMuY29tcGV0aXRpb25MYWJlbH0/YCwgbnVsbCwgRGlhbG9nVHlwZS5jb25maXJtLCAob2spID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNhbmNlbENvbXBldGl0aW9uKCkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21wbGV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coe1xyXG4gICAgICB0aXRsZTogYNCX0LDQstC10YDRiNC10L3QuNC1INC+0YLQsdC+0YDQsGAsXHJcbiAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgYDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5LWJhbm5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pY29uIGljb24tYXR0ZW50aW9uIGljb24tZm9udC0xNiBpY29uLWNvbG9yLW9yYW5nZSBtci0yXCI+PC9kaXY+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgINCt0YLQviDQtNC10LnRgdGC0LLQuNC1INC90LXQvtCx0YDQsNGC0LjQvNC+LiDQn9C+0YHQu9C1INC10LPQviDQstGL0L/QvtC70L3QtdC90LjRjyDQvtGC0LzQtdC90LjRgtGMINGA0LXQt9GD0LvRjNGC0LDRgiDQvdC10LLQvtC30LzQvtC20L3QvlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0J/QvtC00YLQstC10YDQttC00LDRjyDQtNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSwg0LLRi8Kg0L/QvtC00YLQstC10YDQttC00LDQtdGC0LUg0LrQvtGA0YDQtdC60YLQvdC+0YHRgtGMINC/0YDQvtGC0L7QutC+0LvQsCDQuMKg0L7RgtGB0YPRgtGB0YLQstC40LUg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0LLCoNC10LPQvsKg0LrQvtGA0YDQtdC60YLQuNGA0L7QstC60LUuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0KHQutC+0YDRgNC10LrRgtC40YDQvtCy0LDRgtGMINC40YLQvtCz0L7QstGL0Lkg0L/RgNC+0YLQvtC60L7QuyDQstC+0LfQvNC+0LbQvdC+INGC0L7Qu9GM0LrQviDQssKg0YLQtdGH0LXQvdC40LUgMjDCoNC60LDQu9C10L3QtNCw0YDQvdGL0YUg0LTQvdC10Lkg0YHQvsKg0LTQvdGPwqDRg9GC0LLQtdGA0LbQtNC10L3QuNGPINC10LPQvsKg0L/QtdGA0LLQvtC5INCy0LXRgNGB0LjQuCDQuMKg0LTQvsKg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LTQsNC90L3QvtCz0L4g0LTQtdC50YHRgtCy0LjRjy5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+XHJcbiAgICAgICAgICDQldGB0LvQuMKg0LLRi8Kg0L3QtcKg0YPQstC10YDQtdC90Ysg0LLCoNC60L7RgNGA0LXQutGC0L3QvtGB0YLQuCDQv9GA0L7RgtC+0LrQvtC70LAsINC/0YDQuMKg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0YHRhNC+0YDQvNC40YDRg9C50YLQtSDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+wqDQtdCz0L7CoNC+0YLQutC70L7QvdC10L3QuNC4INC4wqDQv9C+0LTQv9C40YjQuNGC0LUg0L3QvtCy0YPRjiDQstC10YDRgdC40Y4uXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgINCX0LDQstC10YDRiNC40YLRjCDQvtGC0LHQvtGAP1xyXG4gICAgICAgIDwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGxldGVDb21wZXRpdGlvbigpKTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSgn0JfQsNCy0LXRgNGI0LXQvdC40LUg0L7RgtCx0L7RgNCwINC80L7QttC10YIg0LfQsNC90Y/RgtGMINC90LXQutC+0YLQvtGA0L7QtSDQstGA0LXQvNGPLicsXHJcbiAgICAgICAgICAn0J7QsdC90L7QstC40YLQtSDRgdGC0YDQsNC90LjRhtGDINC40LvQuCDQstC10YDQvdC40YLQtdGB0Ywg0L/QvtC30LbQtScsIE1lc3NhZ2VTZXZlcml0eS5pbmZvKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0VmVyc2lvbihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbih7dmVyc2lvbklkOiBpZH0pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiYWNrVG9FZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQtSDRgtC10LrRg9GJ0LXQuSDQstC10YDRgdC40LhgLFxyXG4gICAgICBg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YLQtdC60YPRidGD0Y4g0LLQtdGA0YHQuNGOICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsLnRvTG93ZXJDYXNlKCl9YWAsXHJcbiAgICAgIERpYWxvZ1R5cGUuY29uZmlybSxcclxuICAgICAgKG9rKSA9PiB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICB2ZXJzaW9uSWQ6IHRoaXMuc2VsZWN0ZWQuaWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdW5kZWZpbmVkLCBudWxsLCAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsIHVuZGVmaW5lZCwgRGlhbG9nQ29sb3IueWVsbG93KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93UmVqZWN0aW9uKG1vZGVsOiBDb21wZXRpdGlvblJlamVjdGlvbk1vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQn9GA0LjRh9C40L3QsCDQvtGC0LrQu9C+0L3QtdC90LjRj2AsXHJcbiAgICAgIGAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlfX2F1dGhvclwiPlxyXG4gICAgICAgICAgPHNwYW4+JHttb2RlbC5hdXRob3J9PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+JHttb2RlbC5jcmVhdGVkRGF0ZX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1ib2R5X190ZXh0XCI+JHttb2RlbC5yZWFzb259PC9wPlxyXG4gICAgICBgLCBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBudWxsLCB1bmRlZmluZWQsICcnLCBEaWFsb2dDb2xvci55ZWxsb3cpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZGlyZWN0VG9FYigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBldGl0aW9uICE9IHVuZGVmaW5lZCAmJiB0aGlzLl9jb21wZXRpdGlvblR5cGUgIT0gdW5kZWZpbmVkICYmIHRoaXMuX2ViTGlua3NNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGxpbmsgPSAnJztcclxuXHJcbiAgICAgIGlmICh0aGlzLl9jb21wZXRpdGlvblR5cGUgPT0gQ29tcGV0aXRpb25UeXBlRW51bS5Tb2NpYWxPcmRlcikge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc29jaWFsT3JkZXJ9LyNTb2NpYWxPcmRlckFncmVlbWVudGA7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29tcGV0aXRpb25UeXBlID09IENvbXBldGl0aW9uVHlwZUVudW0uUmVnaW9uKSB7XHJcbiAgICAgICAgbGluayA9IGAke3RoaXMuX2ViTGlua3NNb2RlbC5zdWJzaWR5fS8jQWdyZWVtZW50U3Vic2lkeU5vbkZlZGVyYWxgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc3Vic2lkeX0vI0FncmVlbWVudFN1YnNpZHlSZWdpc3RyeWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy5zZWxlY3RlZFZlcnNpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMudmVyc2lvbnMuZmluZChzID0+IHMuaWQgPT09IHRoaXMuc2VsZWN0ZWRWZXJzaW9uKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbXBldGl0aW9uVmVyc2lvbkluZm8uZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0V2FybmluZ01lc3NhZ2VIdG1sKGN1c3RvbVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWN1c3RvbVRleHQpIHtcclxuICAgICAgY3VzdG9tVGV4dCA9ICfQktC90LjQvNCw0L3QuNC1ISDQlNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSDQvdC10LvRjNC30Y8g0L7RgtC80LXQvdC40YLRjCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJiZy1uZXdzIHB4LTMgcmFkaXVzLTQgbWItMyBkLWZsZXhcIiBzdHlsZT1cInBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTMpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTYuNTY1NyAyLjQxNjY3QzcuMjcxMzUgMS4xOTQ0NCA5LjAzNTQ4IDEuMTk0NDQgOS43NDExMyAyLjQxNjY3TDE1LjIyNiAxMS45MTY3QzE1LjkzMTYgMTMuMTM4OSAxNS4wNDk1IDE0LjY2NjcgMTMuNjM4MiAxNC42NjY3SDIuNjY4NTlDMS4yNTcyOSAxNC42NjY3IDAuMzc1MjI1IDEzLjEzODkgMS4wODA4NyAxMS45MTY3TDYuNTY1NyAyLjQxNjY3Wk04Ljg3NTEgMi45MTY2N0M4LjU1NDM1IDIuMzYxMTEgNy43NTI0OCAyLjM2MTExIDcuNDMxNzMgMi45MTY2N0wxLjk0NjkgMTIuNDE2N0MxLjYyNjE1IDEyLjk3MjIgMi4wMjcwOSAxMy42NjY3IDIuNjY4NTkgMTMuNjY2N0gxMy42MzgyQzE0LjI3OTcgMTMuNjY2NyAxNC42ODA3IDEyLjk3MjIgMTQuMzU5OSAxMi40MTY3TDguODc1MSAyLjkxNjY3Wk04LjE1MzQyIDYuMTY2NjdDOC40Mjk1NiA2LjE2NjY3IDguNjUzNDIgNi4zOTA1MiA4LjY1MzQyIDYuNjY2NjdWOS4zMzMzM0M4LjY1MzQyIDkuNjA5NDggOC40Mjk1NiA5LjgzMzMzIDguMTUzNDIgOS44MzMzM0M3Ljg3NzI3IDkuODMzMzMgNy42NTM0MiA5LjYwOTQ4IDcuNjUzNDIgOS4zMzMzM1Y2LjY2NjY3QzcuNjUzNDIgNi4zOTA1MiA3Ljg3NzI3IDYuMTY2NjcgOC4xNTM0MiA2LjE2NjY3Wk04LjE1MzQyIDEwLjgzMzNDOC40Mjk1NiAxMC44MzMzIDguNjUzNDIgMTEuMDU3MiA4LjY1MzQyIDExLjMzMzNWMTJDOC42NTM0MiAxMi4yNzYxIDguNDI5NTYgMTIuNSA4LjE1MzQyIDEyLjVDNy44NzcyNyAxMi41IDcuNjUzNDIgMTIuMjc2MSA3LjY1MzQyIDEyVjExLjMzMzNDNy42NTM0MiAxMS4wNTcyIDcuODc3MjcgMTAuODMzMyA4LjE1MzQyIDEwLjgzMzNaXCIgZmlsbD1cIiNEOTc1MDhcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0wIHRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgJHtjdXN0b21UZXh0fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY2Nlc3NDb250cm9sKHBlcm1pc3Npb246IHN0cmluZyk6IENoZWNrUGVybWlzc2lvbk1vZGVsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBlcm1pc3Npb24sXHJcbiAgICAgIG9iamVjdFR5cGU6IENPTVBFVElUSU9OX0VOVElUWV9OQU1FLFxyXG4gICAgICBvYmplY3RJZDogdGhpcy5jb21wZXRpdGlvbj8uaWRcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lclwiICpuZ0lmPVwic2VsZWN0ZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWJsb2NrXCI+XHJcbiAgICAgIDwhLS0g0J3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTE2MCBtci0zXCI+XHJcbiAgICAgICAgPCEtLSDQstGB0YLQsNCy0LjRgtGMINC90LDQt9Cy0LDQvdC40LUg0YHRg9GJ0L3QvtGB0YLQuCwg0LvQuNCx0L4gXCLQodGD0LHRgdC40LTQuNGPXCIg0LvQuNCx0L4gXCLQntGC0LHQvtGAXCIgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiIG15Q29tcGV0aXRpb25MYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPCEtLSDQvdCw0LfQstCw0L3QuNC1INGB0YPQsdGB0LjQtNC40Lgv0L7RgtCx0L7RgNCwIC0tPlxyXG4gICAgICAgIDwhLS0g0L7Qs9GA0LDQvdC40YfQuNGC0Ywg0LTQu9C40L3RgyDQvdCw0LfQstCw0L3QuNGPINCyIDQ0INGB0LjQvNCy0L7Qu9C+0LIgLS0+XHJcbiAgICAgICAgPCEtLSDQstGB0YLQsNCy0LjRgtGMINCyINGC0YPQu9GC0LjQvyDQv9C+0LvQvdC+0LUg0L3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RleHQgdGV4dC1ub3JtYWxcIiBbbXJ4Q2RrVG9vbHRpcF09XCJzZWxlY3RlZC5uYW1lXCIgW3Rvb2x0aXBNYXhXaWR0aF09XCIzMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5zaG9ydE5hbWUgPyBzZWxlY3RlZC5zaG9ydE5hbWUgOiAn0J3QtSDRg9C60LDQt9Cw0L0nIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINGB0YLQsNGC0YPRgSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTExMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgINCh0YLQsNGC0YPRgVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwhLS0g0YHRgtCw0YLRg9GBINGB0YPQsdGB0LjQtNC40Lgv0L7RgtCx0L7RgNCwIC0tPlxyXG4gICAgICAgIDwhLS0g0LTQu9GPINC30LDQtNCw0L3QuNGPINGG0LLQtdGC0LAg0LTQvtCx0LDQstC70Y/RgtGMINC60LvQsNGB0YHRizog0L7RgNCw0L3QttC10LLRi9C5IC0gXCJjb2xvci1vcmFuZ2VcIiwg0LfQtdC70LXQvdGL0LkgLSBcImNvbG9yLWdyZWVuXCIgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190ZXh0XCIgW25nQ2xhc3NdPVwiY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbXBldGl0aW9uQWdncmVnYXRlU3RhdHVzRW51bUxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tINGB0LXQu9C10LrRgiDRgSDQstGL0LHQvtGA0L7QvCDQstC10YDRgdC40LggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbSBpbmZvLWJhbm5lci1pdGVtX2lucHV0IHdweC0yNjAgbXItM1wiICpuZ0lmPVwidmVyc2lvbnMgJiYgdmVyc2lvbnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggaW5wdXRib3gtbWQgbWItMFwiPlxyXG4gICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInZlcnNpb25zXCIgW25nTW9kZWxdPVwic2VsZWN0ZWQuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0VmVyc2lvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwic3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kVGV4dD1cItCd0LUg0L3QsNC50LTQtdC90L5cIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRncm91cC10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICAgICAgICAgICAge3sgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwoaXRlbS5zdGF0dXMpIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VhcmNoPVwic2VhcmNoVGVybVwiPlxyXG4gICAgICAgICAgICDQktC10YDRgdC40Y8ge3sgaXRlbS5udW0gfX0g0L7RgiB7eyBpdGVtLmNyZWF0ZWREYXRlIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAg0JLQtdGA0YHQuNGPIHt7IGl0ZW0ubnVtIH19INC+0YIge3sgaXRlbS5jcmVhdGVkRGF0ZSB9fVxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0g0YHRgtCw0YLQsNGD0YEg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgPCEtLSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMLCDQtdGB0LvQuCDQvdC10YIg0LLQtdGA0YHQuNC5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTExMFwiICpuZ0lmPVwidmVyc2lvbnMgJiYgdmVyc2lvbnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICDQodGC0LDRgtGD0YEg0LLQtdGA0YHQuNC4XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLSDRgdGC0LDRgtGD0YEg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgICA8IS0tINC00LvRjyDQt9Cw0LTQsNC90LjRjyDRhtCy0LXRgtCwINC00L7QsdCw0LLQu9GP0YLRjCDQutC70LDRgdGB0Ys6INC+0YDQsNC90LbQtdCy0YvQuSAtIFwiY29sb3Itb3JhbmdlXCIsINC30LXQu9C10L3Ri9C5IC0gXCJjb2xvci1ncmVlblwiIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RleHRcIiAqbmdJZj1cInNlbGVjdGVkXCIgW25nQ2xhc3NdPVwidmVyc2lvblN0YXR1c0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWwoc2VsZWN0ZWQuc3RhdHVzKSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0g0YPQtNCw0LvQtdC90LjQtSwg0LLRi9C30L7QsiDQvNC+0LTQsNC70LrQuCwg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSDQvtCxINCy0L3QtdGB0LXQvdC40Lgg0LjQt9C80LXQvdC10L3QuNC5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1cIj5cclxuICAgICAgPCEtLSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMLCDQtdGB0LvQuCDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjyAtLT5cclxuICAgICAgPCEtLSBcItC60L7QvdCy0LXRgNGCXCIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX19pY29uXCIgKm5nSWY9XCJzaG93UmVqZWN0aW9uUmVhc29uXCJcclxuICAgICAgICAgICBbbXJ4Q2RrVG9vbHRpcF09XCIn0J/QvtGB0LzQvtGC0YDQtdGC0Ywg0L/RgNC40YfQuNC90YMg0L7RgtC60LvQvtC90LXQvdC40Y8nXCJcclxuICAgICAgICAgICAoY2xpY2spPVwic2hvd1JlamVjdGlvbihzZWxlY3RlZC5yZWplY3Rpb25SZWFzb24pXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCI2XCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEyXCIgcng9XCIxXCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMyA2LjI1TDExLjMzNTYgMTMuNjU5NUMxMS43MTQ1IDEzLjk5NjIgMTIuMjg1NSAxMy45OTYyIDEyLjY2NDQgMTMuNjU5NUwyMSA2LjI1XCIgc3Ryb2tlPVwiIzI4MjgyOFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTMgMThMNy41IDE0TDkuNzUgMTJNMjEgMThMMTYuNSAxNEwxNC4yNSAxMlwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINGD0LTQsNC70LXQvdC40LUg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY2FuRGVsZXRlVmVyc2lvblwiIChjbGljayk9XCJyZW1vdmVWZXJzaW9uKClcIiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX2ljb25cIiBbbXJ4Q2RrVG9vbHRpcF09XCIn0KPQtNCw0LvQuNGC0Ywg0LLQtdGA0YHQuNGOJ1wiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0zIDZINUgyMVwiIHN0cm9rZT1cIiNEMTQxMTRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTkgNlYyMEMxOSAyMC41MzA0IDE4Ljc4OTMgMjEuMDM5MSAxOC40MTQyIDIxLjQxNDJDMTguMDM5MSAyMS43ODkzIDE3LjUzMDQgMjIgMTcgMjJIN0M2LjQ2OTU3IDIyIDUuOTYwODYgMjEuNzg5MyA1LjU4NTc5IDIxLjQxNDJDNS4yMTA3MSAyMS4wMzkxIDUgMjAuNTMwNCA1IDIwVjZIMTlaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiI0QxNDExNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTFWMTdcIiBzdHJva2U9XCIjRDE0MTE0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xNCAxMVYxN1wiIHN0cm9rZT1cIiNEMTQxMTRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINCy0L7RgdC60LvQuNGG0LDRgtC10LvRjNC90YvQuSDQt9C90LDQuiAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpc0xhc3RWZXJzaW9uXCIgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX19pY29uXCIgW21yeENka1Rvb2x0aXBdPVwiJ9CS0L3QtdGB0LXQvdC40LUg0LjQt9C80LXQvdC10L3QuNC5INC00L7RgdGC0YPQv9C90L4g0L3QsCDQv9C+0YHQu9C10LTQvdC10Lkg0LLQtdGA0YHQuNC4J1wiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xMi4yMzAyIDE4VjE3TTEyLjIzMDIgMTRWMTBNNC4wMDI5OCAyMS4yNUgyMC40NTc1QzIxLjk5NzEgMjEuMjUgMjIuOTU5MyAxOS41ODMzIDIyLjE4OTUgMTguMjVMMTMuOTYyMyA0QzEzLjE5MjUgMi42NjY2NyAxMS4yNjggMi42NjY2NyAxMC40OTgyIDRMMi4yNzA5MyAxOC4yNUMxLjUwMTEzIDE5LjU4MzMgMi40NjMzOCAyMS4yNSA0LjAwMjk4IDIxLjI1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNENTdCMUNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItY29udHJvbFwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiISFjdXN0b21CdXR0b25zVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUJ1dHRvbnNUZW1wbGF0ZS50ZW1wbGF0ZVJlZjtjb250ZXh0OmN1c3RvbUJ1dHRvbnNUZW1wbGF0ZUNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGdyZWVuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkNyZWF0ZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjcmVhdGVWZXJzaW9uRGlzYWJsZWRcIj5cclxuICAgICAgICDQodGE0L7RgNC80LjRgNC+0LLQsNGC0Ywg0LjQt9C80LXQvdC10L3QuNGPXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBncmVlblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjdGl2YXRlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2YXRlVmVyc2lvbkRpc2FibGVkXCI+XHJcbiAgICAgICAg0J7Qv9GD0LHQu9C40LrQvtCy0LDRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhblZhbGlkYXRlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInZhbGlkYXRlVmVyc2lvbkRpc2FibGVkXCI+XHJcbiAgICAgICAg0KHQvtCz0LvQsNGB0L7QstCw0L3QuNC1XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbXBsZXRlKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ29tcGxldGVDb21wZXRpdGlvblwiPlxyXG4gICAgICAgINCX0LDQstC10YDRiNC40YLRjFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhblJldHVyblRvRWRpdFwiIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImJhY2tUb0VkaXQoKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJhY2tUb0VkaXREaXNhYmxlZFwiPlxyXG4gICAgICAgINCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8IS0tINGD0L/RgNCw0LLQu9C10L3QuNC1INGB0YLQsNGC0YPRgdC+0Lwv0L7RgtCx0L7RgNC+0LwgLS0+XHJcbiAgICAgIDwhLS0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCDQtdGB0LvQuCDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWNvbnRyb2xfX2FjdGlvblwiXHJcbiAgICAgICAgICAgKm5nSWY9XCJjb21wZXRpdGlvbiAmJiBzaG93RWJMaW5rXCI+XHJcbiAgICAgICAgPG1yeC1kcm9wZG93biBbbWFpblBsYWNlbWVudF09XCInYm90dG9tLWVuZCdcIiBbZmFsbGJhY2tQbGFjZW1lbnRzXT1cIlsndG9wLWVuZCddXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tbW9yZS12ZXJ0aWNhbCBpY29uLWZvbnQtMjRcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgIDxidXR0b24gbXJ4SGlkZUFmdGVyQ2xpY2sgKGNsaWNrKT1cInJlZGlyZWN0VG9FYigpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWxpbmsgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+0J/QtdGA0LXQudGC0Lgg0LIg0L/QvtC00YHQuNGB0YLQtdC80YMg0LHRjtC00LbQtdGC0L3QvtCz0L4g0L/Qu9Cw0L3QuNGA0L7QstCw0L3QuNGPINCT0JjQmNChIMKr0K3QkcK7PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwhLS3QktGA0LXQvNC10L3QvdC+INGB0LrRgNGL0YLQviDQsiDRgNCw0LzQutCw0YUgTUlORklOLTExMjIzLS0+XHJcbiAgICAgICAgICAgIDwhLS08YnV0dG9uIG1yeEhpZGVBZnRlckNsaWNrIChjbGljayk9XCJwYXVzZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBldGl0aW9uLnN0YXR1cyA9PSBjb21wZXRpdGlvblN0YXR1c0VudW0uQWN0aXZlICYmIGNhbk1hbmFnZUNvbXBldGl0aW9uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBhdXNlLWZpbGxlZCBpY29uLWZvbnQtMjQgbXItMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj7Qn9GA0LjQvtGB0YLQsNC90L7QstC40YLRjDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+LS0+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIG1yeEhpZGVBZnRlckNsaWNrIChjbGljayk9XCJyZXN0b3JlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tcGV0aXRpb24uc3RhdHVzID09IGNvbXBldGl0aW9uU3RhdHVzRW51bS5TdGF5aW5nXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBsYXktZmlsbGVkIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IHJlc3RvcmVCdXR0b25OYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gbXJ4SGlkZUFmdGVyQ2xpY2tcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkNhbmNlbENvbXBldGl0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgY2FuY2VsQ29tcGV0aXRpb25CdXR0b25MYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbXJ4LWRyb3Bkb3duPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1tZi1jb21wZXRpdGlvbi9zcmMvbGliL21vZHVsZXMvY29tcGV0aXRpb24taGVhZGVyL2NvbXBvbmVudHMvY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBRXRCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsaUNBQWlDLEVBQ2pDLHNDQUFzQyxFQUN0QyxtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQiw4QkFBOEIsRUFDOUIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDekIsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtDQUFrQyxFQUNs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Q0FBQyxXQUFXLEVBQUUsRUFBRTtTQUMvQixDQUFDO0lBQ0osQ0FBQzs7MkhBN2VVLDZCQUE2QjsrR0FBN0IsNkJBQTZCLDBlQUUxQix1Q0FBdUMsdUVDdkV2RCxraWFBd0tBOzRGRG5HYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0Usd0JBQXdCOzJNQU0zQixxQkFBcUI7c0JBRDNCLFlBQVk7dUJBQUMsdUNBQXVDO2dCQUk5QyxxQkFBcUI7c0JBRDNCLEtBQUs7Z0JBSUMsZ0NBQWdDO3NCQUR0QyxLQUFLO2dCQUlDLGtDQUFrQztzQkFEeEMsS0FBSztnQkFJQyxrQ0FBa0M7c0JBRHhDLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLDhCQUE4QjtzQkFEcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBDb21wZXRpdGlvblZlcnNpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb21wZXRpdGlvbi12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBDb21wZXRpdGlvbk1vZGVFbnVtLFxyXG4gIENvbXBldGl0aW9uU3RhdHVzRW51bSxcclxuICBDb21wZXRpdGlvblN0YXR1c0VudW1MYWJlbCxcclxuICBEaWFsb2dDb2xvcixcclxuICBEaWFsb2dUeXBlLFxyXG4gIEFsZXJ0U2VydmljZSxcclxuICBVblN1YnNjcmliZXIsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25Db25maWcsXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25MYWJlbCxcclxuICBDb21wZXRpdGlvbkNvbmZpZ01vZGVsLFxyXG4gIENhbmNlbENvbXBldGl0aW9uVHlwZUVudW0sXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuICBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwsXHJcbiAgQ29tcGV0aXRpb25UeXBlRW51bSxcclxuICBNZXNzYWdlU2V2ZXJpdHksIHNlbGVjdFVzZXJJbmZvXHJcbn0gZnJvbSAnbXlydGV4LW1mLXVpLWNvbXBvc2l0ZSc7XHJcbmltcG9ydCB7XHJcbiAgYWN0aXZhdGVDb21wZXRpdGlvbixcclxuICBjYW5jZWxDb21wZXRpdGlvbixcclxuICBjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLFxyXG4gIGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyxcclxuICBjb21wbGV0ZUNvbXBldGl0aW9uLFxyXG4gIGNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbixcclxuICBkZWxldGVDb21wZXRpdGlvblZlcnNpb24sXHJcbiAgbG9hZENvbXBldGl0aW9uSGVhZGVyLFxyXG4gIHBhdXNlQ29tcGV0aXRpb24sXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25WZXJzaW9uXHJcbn0gZnJvbSAnLi4vc3RvcmUvY29tcGV0aXRpb24taGVhZGVyLmFjdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21wZXRpdGlvblN0YXR1c01vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgc2VsZWN0QWN0aXZpdHlJZCxcclxuICBzZWxlY3RDb21wZXRpdGlvblNlbGVjdGVkVmVyc2lvbklkLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uU3RhdHVzLFxyXG4gIHNlbGVjdENvbXBldGl0aW9uVHlwZSxcclxuICBzZWxlY3RDb21wZXRpdGlvblZlcnNpb25zLFxyXG4gIHNlbGVjdE1hbnVhbFZlcnNpb25TdGF0dXNDaGFuZ2VkXHJcbn0gZnJvbSAnLi4vc3RvcmUvY29tcGV0aXRpb24taGVhZGVyLnNlbGVjdG9yJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25IZWFkZXJDdXN0b21CdXR0b25zRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jb21wZXRpdGlvbi1oZWFkZXItY3VzdG9tLWJ1dHRvbnMuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25SZWplY3Rpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFNpZ25TZXJ2aWNlIH0gZnJvbSAnbXlydGV4LW1mLXNpZ25lcic7XHJcbmltcG9ydCB7IFNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFQkxpbmtzTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvZWItbGlua3MubW9kZWwnO1xyXG5pbXBvcnQge0FjY2Vzc1NlcnZpY2UsIENoZWNrUGVybWlzc2lvbk1vZGVsfSBmcm9tICdteXJ0ZXgtbWYtYXV0aCc7XHJcbmltcG9ydCB7XHJcbiAgQ0FOX0FHUkVFTUVOVF9DT01QRVRJVElPTixcclxuICBDQU5fQ0FOQ0VMX0NPTVBFVElUSU9OLFxyXG4gIENBTl9DT01QTEVURV9DT01QRVRJVElPTixcclxuICBDQU5fQ1JFQVRFX0NPTVBFVElUSU9OX1ZFUlNJT04sXHJcbiAgQ0FOX1BVQkxJQ19DT01QRVRJVElPTixcclxuICBDT01QRVRJVElPTl9FTlRJVFlfTkFNRVxyXG59IGZyb20gJy4uL2NvbnN0YW50cy9jb21wZXRpdGlvbi1wZXJtaXNzaW9uLmNvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIHZhbGlkYXRlVmVyc2lvbkZuID0gKChwYXJhbTogc3RyaW5nLCBvblZhbGlkYXRlZDogKCkgPT4gdm9pZCkgPT4gdm9pZCk7XHJcblxyXG5kZWNsYXJlIGdsb2JhbCB7XHJcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XHJcbiAgICBDcnlwdG9JbnRlcmNlcHRvcjogYW55O1xyXG4gIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29tcGV0aXRpb24taGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tcGV0aXRpb24taGVhZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliQ29tcGV0aXRpb25IZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBVblN1YnNjcmliZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQ29tcGV0aXRpb25IZWFkZXJDdXN0b21CdXR0b25zRGlyZWN0aXZlKVxyXG4gIHB1YmxpYyBjdXN0b21CdXR0b25zVGVtcGxhdGUhOiBDb21wZXRpdGlvbkhlYWRlckN1c3RvbUJ1dHRvbnNEaXJlY3RpdmU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHZhbGlkYXRlVmVyc2lvbkFjdGlvbjogdW5kZWZpbmVkIHwgdmFsaWRhdGVWZXJzaW9uRm4gPSB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkNyZWF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY2FuVmFsaWRhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkFjdGl2YXRlVmVyc2lvbk9uQWN0aXZpdHlQZXJpb2QgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpc0RpcnR5ID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RlZENvbXBldGl0aW9uVmVyc2lvbkluZm8gPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBldGl0aW9uVmVyc2lvbk1vZGVsPigpO1xyXG5cclxuICBwdWJsaWMgY29tcGV0aXRpb246IENvbXBldGl0aW9uU3RhdHVzTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIHZlcnNpb25zOiBDb21wZXRpdGlvblZlcnNpb25Nb2RlbFtdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkOiBDb21wZXRpdGlvblZlcnNpb25Nb2RlbCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgc2VsZWN0ZWRWZXJzaW9uID0gJyc7XHJcbiAgcHVibGljIGNvbXBldGl0aW9uU3RhdHVzRW51bSA9IENvbXBldGl0aW9uU3RhdHVzRW51bTtcclxuICBwdWJsaWMgY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bSA9IENhbmNlbENvbXBldGl0aW9uVHlwZUVudW07XHJcbiAgcHVibGljIGNvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0gPSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtO1xyXG4gIHB1YmxpYyBjb21wZXRpdGlvbkxhYmVsID0gJyc7XHJcbiAgcHVibGljIHNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5jZWxDb21wZXRpdGlvbkJ1dHRvbkxhYmVsID0gJ9Ce0YLQvNC10L3QuNGC0Ywg0L7RgtCx0L7RgCc7XHJcbiAgcHVibGljIGNvbXBldGl0aW9uQ29uZmlnOiBDb21wZXRpdGlvbkNvbmZpZ01vZGVsIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBzaG93Q29tcGxldGVDb21wZXRpdGlvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZXN0b3JlQnV0dG9uTmFtZSA9ICfQktC+0LfQvtCx0L3QvtCy0LjRgtGMJztcclxuICBwcml2YXRlIF9hY3Rpdml0eUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfZWJMaW5rc01vZGVsOiBFQkxpbmtzTW9kZWwgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfY29tcGV0aXRpb25UeXBlOiBDb21wZXRpdGlvblR5cGVFbnVtIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FuQ3JlYXRlVmVyc2lvbkFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3MgPSBmYWxzZTtcclxuICBwcml2YXRlIF9jYW5Db21wbGV0ZUVudGl0eUFjY2VzcyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2NhbkNhbmNlbEVudGl0eUFjY2VzcyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNpZ25TZXJ2aWNlOiBTaWduU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlOiBTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hY2Nlc3NTZXJ2aWNlOiBBY2Nlc3NTZXJ2aWNlLCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNFbnVtTGFiZWwoKSB7XHJcbiAgICBpZiAodGhpcy52ZXJzaW9ucyAmJiB0aGlzLnZlcnNpb25zLmxlbmd0aCA9PSAxICYmIHRoaXMuc2VsZWN0ZWRcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZC5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlKSB7XHJcbiAgICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWxbdGhpcy5zZWxlY3RlZC5zdGF0dXNdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb24gPyBDb21wZXRpdGlvblN0YXR1c0VudW1MYWJlbFt0aGlzLmNvbXBldGl0aW9uLnN0YXR1c10gOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNDc3NDbGFzcygpOiBhbnkge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy52ZXJzaW9ucy5sZW5ndGggPT0gMSAmJiB0aGlzLnNlbGVjdGVkXHJcbiAgICAgICYmICh0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgfHwgQ29tcGV0aXRpb25TdGF0dXNFbnVtLk5ldykgPD0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgICcnOiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQWN0aXZlLFxyXG4gICAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICcnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5OZXdcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgIT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5Db21wbGV0ZWQsXHJcbiAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkFjdGl2ZSxcclxuICAgICAgJ2NvbG9yLW9yYW5nZSc6IHRoaXMuY29tcGV0aXRpb24/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmcsXHJcbiAgICAgICdjb2xvci1yZWQnOiB0aGlzLmNvbXBldGl0aW9uPy5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5DYW5jZWxlZFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5DcmVhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbkNyZWF0ZVZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5jYW5DcmVhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgICAmJiB0aGlzLmlzTGFzdFZlcnNpb25cclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWQgJiYgdGhpcy5jb21wZXRpdGlvbi5tb2RlID4gQ29tcGV0aXRpb25Nb2RlRW51bS5CYXNlXHJcbiAgICAgICYmICgodGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmUgJiYgIXRoaXMuY29tcGV0aXRpb24uaXNSZXN1bHRQcm90b2NvbEFwcHJvdmVkKVxyXG4gICAgICAgIHx8IHRoaXMuY29tcGV0aXRpb24uc3RhdHVzID09PSBDb21wZXRpdGlvblN0YXR1c0VudW0uU3RheWluZyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhbkRlbGV0ZVZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQ3JlYXRlVmVyc2lvbkFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IHRoaXMuY29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAmJiB0aGlzLnZlcnNpb25zXHJcbiAgICAgICYmIHRoaXMudmVyc2lvbnMubGVuZ3RoID4gMTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQWN0aXZhdGVWZXJzaW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGVWZXJzaW9uT25BY3Rpdml0eVBlcmlvZFxyXG4gICAgJiYgdGhpcy5fY2FuUHVibGljVmVyc2lvbkFjY2Vzc1xyXG4gICAgJiYgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgIT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpXHJcbiAgICAgICAgfHwgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQ29uZmlybWVkXHJcbiAgICAgICAgICAgIHx8IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uKVxyXG4gICAgICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8ubW9kZSA9PT0gQ29tcGV0aXRpb25Nb2RlRW51bS5WZXJzaW9uZWRFeHRlbmRlZCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhY3RpdmF0ZVZlcnNpb25EaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmlzRGlydHlcclxuICAgICAgfHwgIXRoaXMuX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3NcclxuICAgICAgfHwgKCh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgIT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgIT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpXHJcbiAgICAgICAgfHwgKHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5Db25maXJtZWRcclxuICAgICAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgPT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWQpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGVWZXJzaW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5IHx8ICF0aGlzLl9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjcmVhdGVWZXJzaW9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5IHx8ICF0aGlzLl9jYW5DcmVhdGVWZXJzaW9uQWNjZXNzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBiYWNrVG9FZGl0RGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0RpcnR5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjYW5WYWxpZGF0ZVZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYW5WYWxpZGF0ZVZlcnNpb25PbkFjdGl2aXR5UGVyaW9kXHJcbiAgICAgICYmIHRoaXMuX2NhbkFncmVlbWVudFZlcnNpb25BY2Nlc3NcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0XHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24/Lm1vZGUgPT09IENvbXBldGl0aW9uTW9kZUVudW0uVmVyc2lvbmVkRXh0ZW5kZWRcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbj8uc3RhdHVzICE9PSBDb21wZXRpdGlvblN0YXR1c0VudW0uQ2FuY2VsZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzTGFzdFZlcnNpb24oKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy52ZXJzaW9ucz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBtID0gTWF0aC5tYXgoLi4udGhpcy52ZXJzaW9ucy5tYXAoeCA9PiB4Lm51bSkpO1xyXG4gICAgICByZXR1cm4gbSA9PT0gdGhpcy5zZWxlY3RlZD8ubnVtO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzaG93UmVqZWN0aW9uUmVhc29uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5zZWxlY3RlZD8ucmVqZWN0aW9uUmVhc29uICYmXHJcbiAgICAgICh0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uRHJhZnRcclxuICAgICAgICB8fCB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHZlcnNpb25TdGF0dXNDbGFzcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJyc6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyAhPT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmUsXHJcbiAgICAgICdjb2xvci1ncmVlbic6IHRoaXMuc2VsZWN0ZWQ/LnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiDQmtC+0L3RgtC10LrRgdGCINC00LvRjyDQutCw0YHRgtC+0LzQvdGL0YUg0LrQvdC+0L/QvtC6LCDQvNC+0LbQtdGCINGA0LDRgdGI0LjRgNGP0YLRjNGB0Y8gKi9cclxuICBwdWJsaWMgZ2V0IGN1c3RvbUJ1dHRvbnNUZW1wbGF0ZUNvbnRleHQoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjdGl2aXR5SWQ6IHRoaXMuX2FjdGl2aXR5SWQsXHJcbiAgICAgIGNvbXBldGl0aW9uSWQ6IHRoaXMuY29tcGV0aXRpb24/LmlkLFxyXG4gICAgICBjb21wZXRpdGlvblZlcnNpb25JZDogdGhpcy5zZWxlY3RlZD8uaWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhblJldHVyblRvRWRpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkPy5zdGF0dXMgPT09IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uUmVqZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNob3dFYkxpbmsoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbiAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMudmVyc2lvbnMuc29tZSh4ID0+IHguc3RhdHVzICE9PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkRyYWZ0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ29tcGxldGVDb21wZXRpdGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5Db21wbGV0ZUVudGl0eUFjY2Vzc1xyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uICE9PSB1bmRlZmluZWRcclxuICAgICAgJiYgdGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgICAgJiYgdGhpcy5zZWxlY3RlZD8uc3RhdHVzID09PSBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAmJiB0aGlzLmNvbXBldGl0aW9uLmlzUmVzdWx0UHJvdG9jb2xBcHByb3ZlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ2FuY2VsQ29tcGV0aXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FuQ2FuY2VsRW50aXR5QWNjZXNzXHJcbiAgICAgICYmIHRoaXMuY29tcGV0aXRpb24gIT09IHVuZGVmaW5lZFxyXG4gICAgICAmJiAodGhpcy5jb21wZXRpdGlvbi5zdGF0dXMgPT09IENvbXBldGl0aW9uU3RhdHVzRW51bS5BY3RpdmVcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLlN0YXlpbmdcclxuICAgICAgICB8fCB0aGlzLmNvbXBldGl0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25TdGF0dXNFbnVtLkNhbmNlbGVkKVxyXG4gICAgICAmJiB0aGlzLnNob3dDYW5jZWxDb21wZXRpdGlvbkJ1dHRvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobG9hZENvbXBldGl0aW9uSGVhZGVyKCkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblZlcnNpb25zKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLnZlcnNpb25zID0gcmVzdWx0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25TZWxlY3RlZFZlcnNpb25JZCkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZlcnNpb24gPSByZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5hcHBlbmRTdWJzY3JpcHRpb24odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvblN0YXR1cykpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5jb21wZXRpdGlvbiA9IHJlc3VsdDtcclxuICAgICAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX0FHUkVFTUVOVF9DT01QRVRJVElPTikpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB0aGlzLl9jYW5BZ3JlZW1lbnRWZXJzaW9uQWNjZXNzID0gdHJ1ZSk7IC8vIFRPRE8gdHJ1ZSA9PiByZXN1bHRcclxuICAgICAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX0NSRUFURV9DT01QRVRJVElPTl9WRVJTSU9OKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHRoaXMuX2NhbkNyZWF0ZVZlcnNpb25BY2Nlc3MgPSB0cnVlKTsgLy8gVE9ETyB0cnVlID0+IHJlc3VsdFxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fUFVCTElDX0NPTVBFVElUSU9OKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHRoaXMuX2NhblB1YmxpY1ZlcnNpb25BY2Nlc3MgPSB0cnVlKTsgLy8gVE9ETyB0cnVlID0+IHJlc3VsdFxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQ09NUExFVEVfQ09NUEVUSVRJT04pKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gdGhpcy5fY2FuQ29tcGxldGVFbnRpdHlBY2Nlc3MgPSB0cnVlKTsgLy8gVE9ETyB0cnVlID0+IHJlc3VsdFxyXG4gICAgICAgIHRoaXMuX2FjY2Vzc1NlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHRoaXMuZ2V0QWNjZXNzQ29udHJvbChDQU5fQ0FOQ0VMX0NPTVBFVElUSU9OKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHRoaXMuX2NhbkNhbmNlbEVudGl0eUFjY2VzcyA9IHRydWUpOyAvLyBUT0RPIHRydWUgPT4gcmVzdWx0XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25UeXBlKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9jb21wZXRpdGlvblR5cGUgPSByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25MYWJlbCkpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBldGl0aW9uTGFiZWwgPSByZXN1bHQ7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmFwcGVuZFN1YnNjcmlwdGlvbih0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdEFjdGl2aXR5SWQpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5fYWN0aXZpdHlJZCA9IHJlc3VsdDtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuYXBwZW5kU3Vic2NyaXB0aW9uKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25Db25maWcpKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuY29tcGV0aXRpb25Db25maWcgPSByZXN1bHQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnLmNhbmNlbENvbXBldGl0aW9uTGFiZWwpIHtcclxuICAgICAgICAgIHRoaXMuY2FuY2VsQ29tcGV0aXRpb25CdXR0b25MYWJlbCA9IHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25MYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlXHJcbiAgICAgICAgICAmJiB0aGlzLmNvbXBldGl0aW9uQ29uZmlnLmNhbmNlbENvbXBldGl0aW9uVHlwZSA+IHRoaXMuY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bS5EaXNhYmxlZCkge1xyXG4gICAgICAgICAgdGhpcy5zaG93Q2FuY2VsQ29tcGV0aXRpb25CdXR0b24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dDb21wbGV0ZUNvbXBldGl0aW9uQnV0dG9uID0gdGhpcy5jb21wZXRpdGlvbkNvbmZpZy5zaG93Q29tcGxldGVDb21wZXRpdGlvbkJ1dHRvbjtcclxuICAgICAgICBpZiAodGhpcy5jb21wZXRpdGlvbkNvbmZpZy5yZXN0b3JlQnV0dG9uTmFtZSkge1xyXG4gICAgICAgICAgdGhpcy5yZXN0b3JlQnV0dG9uTmFtZSA9IHRoaXMuY29tcGV0aXRpb25Db25maWcucmVzdG9yZUJ1dHRvbk5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLmFwcGVuZFN1YnNjcmlwdGlvbih0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdE1hbnVhbFZlcnNpb25TdGF0dXNDaGFuZ2VkKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIC8vINC/0YDQvtC40LfQvtGI0LvQviDRgNGD0YfQvdC+0LUg0LjQt9C80LXQvdC10L3QuNC1INGB0YLQsNGC0YPRgdCwLCDRgtC+0LvQutCw0LXQvCDQtNCw0LvRjNGI0LUg0L/QviDRgtCw0LnQvNCw0YPRgtGDXHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzKHtcclxuICAgICAgICAgICAgICB2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZCxcclxuICAgICAgICAgICAgICBzdGF0dXM6IENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW0uQ29uZmlybWVkXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICAgIHRoaXMuc2V0dGluZ3NTZXJ2aWNlLmdldFNlbGVsZWN0aW9uRWRpdEViTGlua3MoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5fZWJMaW5rc01vZGVsID0gcmVzO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW1MYWJlbCh2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bUxhYmVsW3ZhbHVlIGFzIENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0VudW1dO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvbXBldGl0aW9uVmVyc2lvblN0YXR1c0dyb3VwcGluZ0xhYmVsKHZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNHcm91cHBpbmdMYWJlbFt2YWx1ZSBhcyBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgIHRpdGxlOiBg0KTQvtGA0LzQuNGA0L7QstCw0L3QuNC1INC40LfQvNC10L3QtdC90LjQuWAsXHJcbiAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgYCR7dGhpcy5nZXRXYXJuaW5nTWVzc2FnZUh0bWwoJ9CS0L3QuNC80LDQvdC40LUhINCk0L7RgNC80LjRgNC+0LLQsNC90LjQtSDQuNC30LzQtdC90LXQvdC40Lkg0L/RgNC40LLQtdC00LXRgiDQuiDRgdC+0LfQtNCw0L3QuNGOINC90L7QstC+0Lkg0LLQtdGA0YHQuNC4INC+0YLQsdC+0YDQsCcpfVxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICDQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRgdGE0L7RgNC80LjRgNC+0LLQsNGC0Ywg0LjQt9C80LXQvdC10L3QuNGPP1xyXG4gICAgICAgICAgICA8L3A+YCxcclxuICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnllbGxvdyxcclxuICAgICAgdHlwZTogRGlhbG9nVHlwZS5jb25maXJtLFxyXG4gICAgICBva0xhYmVsOiAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsXHJcbiAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgIG9rQ2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbigpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZhdGVWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZDtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyh7XHJcbiAgICAgICAgdGl0bGU6IGDQn9GD0LHQu9C40LrQsNGG0LjRjyAke3RoaXMuY29tcGV0aXRpb25MYWJlbH3QsGAsXHJcbiAgICAgICAgbWVzc2FnZTogYCR7dGhpcy5nZXRXYXJuaW5nTWVzc2FnZUh0bWwoKX1cclxuICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0L7Qv9GD0LHQu9C40LrQvtCy0LDRgtGMICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfT9cclxuICAgICAgICAgICAgPC9wPmAsXHJcbiAgICAgICAgY29sb3I6IERpYWxvZ0NvbG9yLnllbGxvdyxcclxuICAgICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgICAgb2tMYWJlbDogJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0YwnLFxyXG4gICAgICAgIGNhbmNlbExhYmVsOiAn0J7RgtC80LXQvdC40YLRjCcsXHJcbiAgICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICB2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZCxcclxuICAgICAgICAgICAgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLkFjdGl2ZVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRhdGVWZXJzaW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5zZWxlY3RlZDtcclxuXHJcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlVmVyc2lvbkFjdGlvbikge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVWZXJzaW9uQWN0aW9uKHNlbGVjdGVkSXRlbS5pZCwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaWduU2VydmljZS5zaWduKHtcclxuICAgICAgICAgICAgdGl0bGU6ICfQndCw0L/RgNCw0LLQu9C10L3QuNC1INC00L7QutGD0LzQtdC90YLQsCDQvdCwINGB0L7Qs9C70LDRgdC+0LLQsNC90LjQtScsXHJcbiAgICAgICAgICAgIG9rTGFiZWw6ICfQntGC0L/RgNCw0LLQuNGC0YwnLFxyXG4gICAgICAgICAgICBjYW5jZWxMYWJlbDogJ9Ce0YLQvNC10L3QuNGC0YwnLFxyXG4gICAgICAgICAgICBwZGZVcmw6IGAvbS1kYXRhL21pbmZpbi9wZGYtY29tcGV0aXRpb24vJHt0aGlzLmNvbXBldGl0aW9uPy5pZH0/dmVyc2lvbklkPSR7c2VsZWN0ZWRJdGVtLmlkfWAsXHJcbiAgICAgICAgICAgIHhtbFVybDogYC9tLWRhdGEvbWluZmluL3htbC1jb21wZXRpdGlvbi8ke3RoaXMuY29tcGV0aXRpb24/LmlkfT92ZXJzaW9uSWQ9JHtzZWxlY3RlZEl0ZW0uaWR9YCxcclxuICAgICAgICAgICAgcHJvdmlkZXI6ICdlbXB0eSdcclxuICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoJycsICfQntC20LjQtNCw0LnRgtC1LiDQktGL0L/QvtC70L3Rj9C10YLRgdGPINC+0YLQv9GA0LDQstC60LAg0L3QsCDRgdC+0LPQu9Cw0YHQvtCy0LDQvdC40LUuJywgTWVzc2FnZVNldmVyaXR5LndhaXQpO1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyh7XHJcbiAgICAgICAgICAgICAgdmVyc2lvbklkOiBzZWxlY3RlZEl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtLlZhbGlkYXRpb25cclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVZlcnNpb24oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkO1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQo9C00LDQu9C40YLRjCDQstC10YDRgdC40Y4gICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsfdCwP2AsXHJcbiAgICAgICAgYCR7dGhpcy5nZXRXYXJuaW5nTWVzc2FnZUh0bWwoKX1cclxuICAgICAgPHA+XHJcbiAgICAgICAg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0LLQtdGA0YHQuNGOICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsPy50b0xvd2VyQ2FzZSgpfdCwP1xyXG4gICAgICA8L3A+YCxcclxuICAgICAgICBEaWFsb2dUeXBlLmNvbmZpcm0sIChvaykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChkZWxldGVDb21wZXRpdGlvblZlcnNpb24oe3ZlcnNpb25JZDogc2VsZWN0ZWRJdGVtLmlkfSkpO1xyXG4gICAgICAgIH0sIHVuZGVmaW5lZCwgbnVsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIERpYWxvZ0NvbG9yLnJlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzdG9yZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coYNCS0L7Qt9C+0LHQvdC+0LLQuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goYWN0aXZhdGVDb21wZXRpdGlvbigpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhdXNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J/RgNC40L7RgdGC0LDQvdC+0LLQuNGC0YwgJHt0aGlzLmNvbXBldGl0aW9uTGFiZWx9P2AsIG51bGwsIERpYWxvZ1R5cGUuY29uZmlybSwgKG9rKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gocGF1c2VDb21wZXRpdGlvbigpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBldGl0aW9uQ29uZmlnICYmIHRoaXMuY29tcGV0aXRpb25Db25maWcuY2FuY2VsQ29tcGV0aXRpb25UeXBlID09IHRoaXMuY2FuY2VsQ29tcGV0aXRpb25UeXBlRW51bS5XaXRoVmFsaWRhdGlvbikge1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uKHt2ZXJzaW9uSWQ6IHNlbGVjdGVkSXRlbS5pZH0pKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0J7RgtC80LXQvdC40YLRjCAke3RoaXMuY29tcGV0aXRpb25MYWJlbH0/YCwgbnVsbCwgRGlhbG9nVHlwZS5jb25maXJtLCAob2spID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNhbmNlbENvbXBldGl0aW9uKCkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21wbGV0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dEaWFsb2coe1xyXG4gICAgICB0aXRsZTogYNCX0LDQstC10YDRiNC10L3QuNC1INC+0YLQsdC+0YDQsGAsXHJcbiAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgYDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5LWJhbm5lclwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pY29uIGljb24tYXR0ZW50aW9uIGljb24tZm9udC0xNiBpY29uLWNvbG9yLW9yYW5nZSBtci0yXCI+PC9kaXY+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgINCt0YLQviDQtNC10LnRgdGC0LLQuNC1INC90LXQvtCx0YDQsNGC0LjQvNC+LiDQn9C+0YHQu9C1INC10LPQviDQstGL0L/QvtC70L3QtdC90LjRjyDQvtGC0LzQtdC90LjRgtGMINGA0LXQt9GD0LvRjNGC0LDRgiDQvdC10LLQvtC30LzQvtC20L3QvlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0J/QvtC00YLQstC10YDQttC00LDRjyDQtNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSwg0LLRi8Kg0L/QvtC00YLQstC10YDQttC00LDQtdGC0LUg0LrQvtGA0YDQtdC60YLQvdC+0YHRgtGMINC/0YDQvtGC0L7QutC+0LvQsCDQuMKg0L7RgtGB0YPRgtGB0YLQstC40LUg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0LLCoNC10LPQvsKg0LrQvtGA0YDQtdC60YLQuNGA0L7QstC60LUuXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXIgbWItMVwiPlxyXG4gICAgICAgICAg0KHQutC+0YDRgNC10LrRgtC40YDQvtCy0LDRgtGMINC40YLQvtCz0L7QstGL0Lkg0L/RgNC+0YLQvtC60L7QuyDQstC+0LfQvNC+0LbQvdC+INGC0L7Qu9GM0LrQviDQssKg0YLQtdGH0LXQvdC40LUgMjDCoNC60LDQu9C10L3QtNCw0YDQvdGL0YUg0LTQvdC10Lkg0YHQvsKg0LTQvdGPwqDRg9GC0LLQtdGA0LbQtNC10L3QuNGPINC10LPQvsKg0L/QtdGA0LLQvtC5INCy0LXRgNGB0LjQuCDQuMKg0LTQvsKg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LTQsNC90L3QvtCz0L4g0LTQtdC50YHRgtCy0LjRjy5cclxuICAgICAgICA8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtYi0xXCI+XHJcbiAgICAgICAgICDQldGB0LvQuMKg0LLRi8Kg0L3QtcKg0YPQstC10YDQtdC90Ysg0LLCoNC60L7RgNGA0LXQutGC0L3QvtGB0YLQuCDQv9GA0L7RgtC+0LrQvtC70LAsINC/0YDQuMKg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0Lgg0YHRhNC+0YDQvNC40YDRg9C50YLQtSDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+wqDQtdCz0L7CoNC+0YLQutC70L7QvdC10L3QuNC4INC4wqDQv9C+0LTQv9C40YjQuNGC0LUg0L3QvtCy0YPRjiDQstC10YDRgdC40Y4uXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgINCX0LDQstC10YDRiNC40YLRjCDQvtGC0LHQvtGAP1xyXG4gICAgICAgIDwvcD5gLFxyXG4gICAgICBjb2xvcjogRGlhbG9nQ29sb3IueWVsbG93LFxyXG4gICAgICB0eXBlOiBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIG9rTGFiZWw6ICfQn9C+0LTRgtCy0LXRgNC00LjRgtGMJyxcclxuICAgICAgY2FuY2VsTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcclxuICAgICAgb2tDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goY29tcGxldGVDb21wZXRpdGlvbigpKTtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZSgn0JfQsNCy0LXRgNGI0LXQvdC40LUg0L7RgtCx0L7RgNCwINC80L7QttC10YIg0LfQsNC90Y/RgtGMINC90LXQutC+0YLQvtGA0L7QtSDQstGA0LXQvNGPLicsXHJcbiAgICAgICAgICAn0J7QsdC90L7QstC40YLQtSDRgdGC0YDQsNC90LjRhtGDINC40LvQuCDQstC10YDQvdC40YLQtdGB0Ywg0L/QvtC30LbQtScsIE1lc3NhZ2VTZXZlcml0eS5pbmZvKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0VmVyc2lvbihpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbih7dmVyc2lvbklkOiBpZH0pKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiYWNrVG9FZGl0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd0RpYWxvZyhg0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjQtSDRgtC10LrRg9GJ0LXQuSDQstC10YDRgdC40LhgLFxyXG4gICAgICBg0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YLQtdC60YPRidGD0Y4g0LLQtdGA0YHQuNGOICR7dGhpcy5jb21wZXRpdGlvbkxhYmVsLnRvTG93ZXJDYXNlKCl9YWAsXHJcbiAgICAgIERpYWxvZ1R5cGUuY29uZmlybSxcclxuICAgICAgKG9rKSA9PiB7XHJcbiAgICAgICAgaWYgKCEhdGhpcy5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMoe1xyXG4gICAgICAgICAgICB2ZXJzaW9uSWQ6IHRoaXMuc2VsZWN0ZWQuaWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5EcmFmdFxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgdW5kZWZpbmVkLCBudWxsLCAn0J/QvtC00YLQstC10YDQtNC40YLRjCcsIHVuZGVmaW5lZCwgRGlhbG9nQ29sb3IueWVsbG93KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93UmVqZWN0aW9uKG1vZGVsOiBDb21wZXRpdGlvblJlamVjdGlvbk1vZGVsKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93RGlhbG9nKGDQn9GA0LjRh9C40L3QsCDQvtGC0LrQu9C+0L3QtdC90LjRj2AsXHJcbiAgICAgIGAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlfX2F1dGhvclwiPlxyXG4gICAgICAgICAgPHNwYW4+JHttb2RlbC5hdXRob3J9PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+JHttb2RlbC5jcmVhdGVkRGF0ZX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJtb2RhbC1ib2R5X190ZXh0XCI+JHttb2RlbC5yZWFzb259PC9wPlxyXG4gICAgICBgLCBEaWFsb2dUeXBlLmNvbmZpcm0sXHJcbiAgICAgIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBudWxsLCB1bmRlZmluZWQsICcnLCBEaWFsb2dDb2xvci55ZWxsb3cpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZGlyZWN0VG9FYigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNvbXBldGl0aW9uICE9IHVuZGVmaW5lZCAmJiB0aGlzLl9jb21wZXRpdGlvblR5cGUgIT0gdW5kZWZpbmVkICYmIHRoaXMuX2ViTGlua3NNb2RlbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGxpbmsgPSAnJztcclxuXHJcbiAgICAgIGlmICh0aGlzLl9jb21wZXRpdGlvblR5cGUgPT0gQ29tcGV0aXRpb25UeXBlRW51bS5Tb2NpYWxPcmRlcikge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc29jaWFsT3JkZXJ9LyNTb2NpYWxPcmRlckFncmVlbWVudGA7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29tcGV0aXRpb25UeXBlID09IENvbXBldGl0aW9uVHlwZUVudW0uUmVnaW9uKSB7XHJcbiAgICAgICAgbGluayA9IGAke3RoaXMuX2ViTGlua3NNb2RlbC5zdWJzaWR5fS8jQWdyZWVtZW50U3Vic2lkeU5vbkZlZGVyYWxgO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxpbmsgPSBgJHt0aGlzLl9lYkxpbmtzTW9kZWwuc3Vic2lkeX0vI0FncmVlbWVudFN1YnNpZHlSZWdpc3RyeWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmVyc2lvbnMgJiYgdGhpcy5zZWxlY3RlZFZlcnNpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRoaXMudmVyc2lvbnMuZmluZChzID0+IHMuaWQgPT09IHRoaXMuc2VsZWN0ZWRWZXJzaW9uKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbXBldGl0aW9uVmVyc2lvbkluZm8uZW1pdCh0aGlzLnNlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0V2FybmluZ01lc3NhZ2VIdG1sKGN1c3RvbVRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWN1c3RvbVRleHQpIHtcclxuICAgICAgY3VzdG9tVGV4dCA9ICfQktC90LjQvNCw0L3QuNC1ISDQlNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSDQvdC10LvRjNC30Y8g0L7RgtC80LXQvdC40YLRjCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJiZy1uZXdzIHB4LTMgcmFkaXVzLTQgbWItMyBkLWZsZXhcIiBzdHlsZT1cInBhZGRpbmctdG9wOiB2YXIoLS1zcGFjaW5nLTMpOyBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2luZy0zKVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtci0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTYuNTY1NyAyLjQxNjY3QzcuMjcxMzUgMS4xOTQ0NCA5LjAzNTQ4IDEuMTk0NDQgOS43NDExMyAyLjQxNjY3TDE1LjIyNiAxMS45MTY3QzE1LjkzMTYgMTMuMTM4OSAxNS4wNDk1IDE0LjY2NjcgMTMuNjM4MiAxNC42NjY3SDIuNjY4NTlDMS4yNTcyOSAxNC42NjY3IDAuMzc1MjI1IDEzLjEzODkgMS4wODA4NyAxMS45MTY3TDYuNTY1NyAyLjQxNjY3Wk04Ljg3NTEgMi45MTY2N0M4LjU1NDM1IDIuMzYxMTEgNy43NTI0OCAyLjM2MTExIDcuNDMxNzMgMi45MTY2N0wxLjk0NjkgMTIuNDE2N0MxLjYyNjE1IDEyLjk3MjIgMi4wMjcwOSAxMy42NjY3IDIuNjY4NTkgMTMuNjY2N0gxMy42MzgyQzE0LjI3OTcgMTMuNjY2NyAxNC42ODA3IDEyLjk3MjIgMTQuMzU5OSAxMi40MTY3TDguODc1MSAyLjkxNjY3Wk04LjE1MzQyIDYuMTY2NjdDOC40Mjk1NiA2LjE2NjY3IDguNjUzNDIgNi4zOTA1MiA4LjY1MzQyIDYuNjY2NjdWOS4zMzMzM0M4LjY1MzQyIDkuNjA5NDggOC40Mjk1NiA5LjgzMzMzIDguMTUzNDIgOS44MzMzM0M3Ljg3NzI3IDkuODMzMzMgNy42NTM0MiA5LjYwOTQ4IDcuNjUzNDIgOS4zMzMzM1Y2LjY2NjY3QzcuNjUzNDIgNi4zOTA1MiA3Ljg3NzI3IDYuMTY2NjcgOC4xNTM0MiA2LjE2NjY3Wk04LjE1MzQyIDEwLjgzMzNDOC40Mjk1NiAxMC44MzMzIDguNjUzNDIgMTEuMDU3MiA4LjY1MzQyIDExLjMzMzNWMTJDOC42NTM0MiAxMi4yNzYxIDguNDI5NTYgMTIuNSA4LjE1MzQyIDEyLjVDNy44NzcyNyAxMi41IDcuNjUzNDIgMTIuMjc2MSA3LjY1MzQyIDEyVjExLjMzMzNDNy42NTM0MiAxMS4wNTcyIDcuODc3MjcgMTAuODMzMyA4LjE1MzQyIDEwLjgzMzNaXCIgZmlsbD1cIiNEOTc1MDhcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS0wIHRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgJHtjdXN0b21UZXh0fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY2Nlc3NDb250cm9sKHBlcm1pc3Npb246IHN0cmluZyk6IENoZWNrUGVybWlzc2lvbk1vZGVsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBlcm1pc3Npb24sXHJcbiAgICAgIG9iamVjdFR5cGU6IENPTVBFVElUSU9OX0VOVElUWV9OQU1FLFxyXG4gICAgICBvYmplY3RJZDogdGhpcy5jb21wZXRpdGlvbj8uaWRcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lclwiICpuZ0lmPVwic2VsZWN0ZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItYm9keVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWJsb2NrXCI+XHJcbiAgICAgIDwhLS0g0J3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTE2MCBtci0zXCI+XHJcbiAgICAgICAgPCEtLSDQstGB0YLQsNCy0LjRgtGMINC90LDQt9Cy0LDQvdC40LUg0YHRg9GJ0L3QvtGB0YLQuCwg0LvQuNCx0L4gXCLQodGD0LHRgdC40LTQuNGPXCIg0LvQuNCx0L4gXCLQntGC0LHQvtGAXCIgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiIG15Q29tcGV0aXRpb25MYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPCEtLSDQvdCw0LfQstCw0L3QuNC1INGB0YPQsdGB0LjQtNC40Lgv0L7RgtCx0L7RgNCwIC0tPlxyXG4gICAgICAgIDwhLS0g0L7Qs9GA0LDQvdC40YfQuNGC0Ywg0LTQu9C40L3RgyDQvdCw0LfQstCw0L3QuNGPINCyIDQ0INGB0LjQvNCy0L7Qu9C+0LIgLS0+XHJcbiAgICAgICAgPCEtLSDQstGB0YLQsNCy0LjRgtGMINCyINGC0YPQu9GC0LjQvyDQv9C+0LvQvdC+0LUg0L3QsNC30LLQsNC90LjQtSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RleHQgdGV4dC1ub3JtYWxcIiBbbXJ4Q2RrVG9vbHRpcF09XCJzZWxlY3RlZC5uYW1lXCIgW3Rvb2x0aXBNYXhXaWR0aF09XCIzMjBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5zaG9ydE5hbWUgPyBzZWxlY3RlZC5zaG9ydE5hbWUgOiAn0J3QtSDRg9C60LDQt9Cw0L0nIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINGB0YLQsNGC0YPRgSDRgdGD0LHRgdC40LTQuNC4L9C+0YLQsdC+0YDQsCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTExMFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgINCh0YLQsNGC0YPRgVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwhLS0g0YHRgtCw0YLRg9GBINGB0YPQsdGB0LjQtNC40Lgv0L7RgtCx0L7RgNCwIC0tPlxyXG4gICAgICAgIDwhLS0g0LTQu9GPINC30LDQtNCw0L3QuNGPINGG0LLQtdGC0LAg0LTQvtCx0LDQstC70Y/RgtGMINC60LvQsNGB0YHRizog0L7RgNCw0L3QttC10LLRi9C5IC0gXCJjb2xvci1vcmFuZ2VcIiwg0LfQtdC70LXQvdGL0LkgLSBcImNvbG9yLWdyZWVuXCIgLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX190ZXh0XCIgW25nQ2xhc3NdPVwiY29tcGV0aXRpb25BZ2dyZWdhdGVTdGF0dXNDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbXBldGl0aW9uQWdncmVnYXRlU3RhdHVzRW51bUxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tINGB0LXQu9C10LrRgiDRgSDQstGL0LHQvtGA0L7QvCDQstC10YDRgdC40LggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItaXRlbSBpbmZvLWJhbm5lci1pdGVtX2lucHV0IHdweC0yNjAgbXItM1wiICpuZ0lmPVwidmVyc2lvbnMgJiYgdmVyc2lvbnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggaW5wdXRib3gtbWQgbWItMFwiPlxyXG4gICAgICAgIDxuZy1zZWxlY3QgW2l0ZW1zXT1cInZlcnNpb25zXCIgW25nTW9kZWxdPVwic2VsZWN0ZWQuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0VmVyc2lvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwiaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwibmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICBncm91cEJ5PVwic3RhdHVzXCJcclxuICAgICAgICAgICAgICAgICAgIG5vdEZvdW5kVGV4dD1cItCd0LUg0L3QsNC50LTQtdC90L5cIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1vcHRncm91cC10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICAgICAgICAgICAge3sgZ2V0Q29tcGV0aXRpb25WZXJzaW9uU3RhdHVzR3JvdXBwaW5nTGFiZWwoaXRlbS5zdGF0dXMpIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VhcmNoPVwic2VhcmNoVGVybVwiPlxyXG4gICAgICAgICAgICDQktC10YDRgdC40Y8ge3sgaXRlbS5udW0gfX0g0L7RgiB7eyBpdGVtLmNyZWF0ZWREYXRlIH19XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWxhYmVsLXRtcCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAg0JLQtdGA0YHQuNGPIHt7IGl0ZW0ubnVtIH19INC+0YIge3sgaXRlbS5jcmVhdGVkRGF0ZSB9fVxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0g0YHRgtCw0YLQsNGD0YEg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgPCEtLSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMLCDQtdGB0LvQuCDQvdC10YIg0LLQtdGA0YHQuNC5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW0gd3B4LTExMFwiICpuZ0lmPVwidmVyc2lvbnMgJiYgdmVyc2lvbnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICDQodGC0LDRgtGD0YEg0LLQtdGA0YHQuNC4XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLSDRgdGC0LDRgtGD0YEg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgICA8IS0tINC00LvRjyDQt9Cw0LTQsNC90LjRjyDRhtCy0LXRgtCwINC00L7QsdCw0LLQu9GP0YLRjCDQutC70LDRgdGB0Ys6INC+0YDQsNC90LbQtdCy0YvQuSAtIFwiY29sb3Itb3JhbmdlXCIsINC30LXQu9C10L3Ri9C5IC0gXCJjb2xvci1ncmVlblwiIC0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX3RleHRcIiAqbmdJZj1cInNlbGVjdGVkXCIgW25nQ2xhc3NdPVwidmVyc2lvblN0YXR1c0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtTGFiZWwoc2VsZWN0ZWQuc3RhdHVzKSB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0g0YPQtNCw0LvQtdC90LjQtSwg0LLRi9C30L7QsiDQvNC+0LTQsNC70LrQuCwg0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSDQvtCxINCy0L3QtdGB0LXQvdC40Lgg0LjQt9C80LXQvdC10L3QuNC5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1cIj5cclxuICAgICAgPCEtLSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMLCDQtdGB0LvQuCDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjyAtLT5cclxuICAgICAgPCEtLSBcItC60L7QvdCy0LXRgNGCXCIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX19pY29uXCIgKm5nSWY9XCJzaG93UmVqZWN0aW9uUmVhc29uXCJcclxuICAgICAgICAgICBbbXJ4Q2RrVG9vbHRpcF09XCIn0J/QvtGB0LzQvtGC0YDQtdGC0Ywg0L/RgNC40YfQuNC90YMg0L7RgtC60LvQvtC90LXQvdC40Y8nXCJcclxuICAgICAgICAgICAoY2xpY2spPVwic2hvd1JlamVjdGlvbihzZWxlY3RlZC5yZWplY3Rpb25SZWFzb24pXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cmVjdCB4PVwiM1wiIHk9XCI2XCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjEyXCIgcng9XCIxXCIgc3Ryb2tlPVwiIzI4MjgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMyA2LjI1TDExLjMzNTYgMTMuNjU5NUMxMS43MTQ1IDEzLjk5NjIgMTIuMjg1NSAxMy45OTYyIDEyLjY2NDQgMTMuNjU5NUwyMSA2LjI1XCIgc3Ryb2tlPVwiIzI4MjgyOFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgICA8cGF0aCBkPVwiTTMgMThMNy41IDE0TDkuNzUgMTJNMjEgMThMMTYuNSAxNEwxNC4yNSAxMlwiIHN0cm9rZT1cIiMyODI4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINGD0LTQsNC70LXQvdC40LUg0LLQtdGA0YHQuNC4IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiY2FuRGVsZXRlVmVyc2lvblwiIChjbGljayk9XCJyZW1vdmVWZXJzaW9uKClcIiBjbGFzcz1cImluZm8tYmFubmVyLWl0ZW1fX2ljb25cIiBbbXJ4Q2RrVG9vbHRpcF09XCIn0KPQtNCw0LvQuNGC0Ywg0LLQtdGA0YHQuNGOJ1wiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0zIDZINUgyMVwiIHN0cm9rZT1cIiNEMTQxMTRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTggNlY0QzggMy40Njk1NyA4LjIxMDcxIDIuOTYwODYgOC41ODU3OSAyLjU4NTc5QzguOTYwODYgMi4yMTA3MSA5LjQ2OTU3IDIgMTAgMkgxNEMxNC41MzA0IDIgMTUuMDM5MSAyLjIxMDcxIDE1LjQxNDIgMi41ODU3OUMxNS43ODkzIDIuOTYwODYgMTYgMy40Njk1NyAxNiA0VjZNMTkgNlYyMEMxOSAyMC41MzA0IDE4Ljc4OTMgMjEuMDM5MSAxOC40MTQyIDIxLjQxNDJDMTguMDM5MSAyMS43ODkzIDE3LjUzMDQgMjIgMTcgMjJIN0M2LjQ2OTU3IDIyIDUuOTYwODYgMjEuNzg5MyA1LjU4NTc5IDIxLjQxNDJDNS4yMTA3MSAyMS4wMzkxIDUgMjAuNTMwNCA1IDIwVjZIMTlaXCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiI0QxNDExNFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgMTFWMTdcIiBzdHJva2U9XCIjRDE0MTE0XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgPHBhdGggZD1cIk0xNCAxMVYxN1wiIHN0cm9rZT1cIiNEMTQxMTRcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tINCy0L7RgdC60LvQuNGG0LDRgtC10LvRjNC90YvQuSDQt9C90LDQuiAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpc0xhc3RWZXJzaW9uXCIgY2xhc3M9XCJpbmZvLWJhbm5lci1pdGVtX19pY29uXCIgW21yeENka1Rvb2x0aXBdPVwiJ9CS0L3QtdGB0LXQvdC40LUg0LjQt9C80LXQvdC10L3QuNC5INC00L7RgdGC0YPQv9C90L4g0L3QsCDQv9C+0YHQu9C10LTQvdC10Lkg0LLQtdGA0YHQuNC4J1wiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xMi4yMzAyIDE4VjE3TTEyLjIzMDIgMTRWMTBNNC4wMDI5OCAyMS4yNUgyMC40NTc1QzIxLjk5NzEgMjEuMjUgMjIuOTU5MyAxOS41ODMzIDIyLjE4OTUgMTguMjVMMTMuOTYyMyA0QzEzLjE5MjUgMi42NjY2NyAxMS4yNjggMi42NjY2NyAxMC40OTgyIDRMMi4yNzA5MyAxOC4yNUMxLjUwMTEzIDE5LjU4MzMgMi40NjMzOCAyMS4yNSA0LjAwMjk4IDIxLjI1WlwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNENTdCMUNcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1iYW5uZXItY29udHJvbFwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiISFjdXN0b21CdXR0b25zVGVtcGxhdGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUJ1dHRvbnNUZW1wbGF0ZS50ZW1wbGF0ZVJlZjtjb250ZXh0OmN1c3RvbUJ1dHRvbnNUZW1wbGF0ZUNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW1kIGdyZWVuXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkNyZWF0ZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjcmVhdGVWZXJzaW9uRGlzYWJsZWRcIj5cclxuICAgICAgICDQodGE0L7RgNC80LjRgNC+0LLQsNGC0Ywg0LjQt9C80LXQvdC10L3QuNGPXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZCBncmVlblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhbkFjdGl2YXRlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2YXRlVmVyc2lvbkRpc2FibGVkXCI+XHJcbiAgICAgICAg0J7Qv9GD0LHQu9C40LrQvtCy0LDRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInZhbGlkYXRlVmVyc2lvbigpXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNhblZhbGlkYXRlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInZhbGlkYXRlVmVyc2lvbkRpc2FibGVkXCI+XHJcbiAgICAgICAg0KHQvtCz0LvQsNGB0L7QstCw0L3QuNC1XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbXBsZXRlKClcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY2FuQ29tcGxldGVDb21wZXRpdGlvblwiPlxyXG4gICAgICAgINCX0LDQstC10YDRiNC40YLRjFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhblJldHVyblRvRWRpdFwiIGNsYXNzPVwiYnRuIGJ0bi1tZFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImJhY2tUb0VkaXQoKVwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJhY2tUb0VkaXREaXNhYmxlZFwiPlxyXG4gICAgICAgINCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8IS0tINGD0L/RgNCw0LLQu9C10L3QuNC1INGB0YLQsNGC0YPRgdC+0Lwv0L7RgtCx0L7RgNC+0LwgLS0+XHJcbiAgICAgIDwhLS0g0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCDQtdGB0LvQuCDQvdC1INGC0YDQtdCx0YPQtdGC0YHRjyAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tYmFubmVyLWNvbnRyb2xfX2FjdGlvblwiXHJcbiAgICAgICAgICAgKm5nSWY9XCJjb21wZXRpdGlvbiAmJiBzaG93RWJMaW5rXCI+XHJcbiAgICAgICAgPG1yeC1kcm9wZG93biBbbWFpblBsYWNlbWVudF09XCInYm90dG9tLWVuZCdcIiBbZmFsbGJhY2tQbGFjZW1lbnRzXT1cIlsndG9wLWVuZCddXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tbW9yZS12ZXJ0aWNhbCBpY29uLWZvbnQtMjRcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgIDxidXR0b24gbXJ4SGlkZUFmdGVyQ2xpY2sgKGNsaWNrKT1cInJlZGlyZWN0VG9FYigpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWxpbmsgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+0J/QtdGA0LXQudGC0Lgg0LIg0L/QvtC00YHQuNGB0YLQtdC80YMg0LHRjtC00LbQtdGC0L3QvtCz0L4g0L/Qu9Cw0L3QuNGA0L7QstCw0L3QuNGPINCT0JjQmNChIMKr0K3QkcK7PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwhLS3QktGA0LXQvNC10L3QvdC+INGB0LrRgNGL0YLQviDQsiDRgNCw0LzQutCw0YUgTUlORklOLTExMjIzLS0+XHJcbiAgICAgICAgICAgIDwhLS08YnV0dG9uIG1yeEhpZGVBZnRlckNsaWNrIChjbGljayk9XCJwYXVzZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXBldGl0aW9uLnN0YXR1cyA9PSBjb21wZXRpdGlvblN0YXR1c0VudW0uQWN0aXZlICYmIGNhbk1hbmFnZUNvbXBldGl0aW9uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBhdXNlLWZpbGxlZCBpY29uLWZvbnQtMjQgbXItMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj7Qn9GA0LjQvtGB0YLQsNC90L7QstC40YLRjDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+LS0+XHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIG1yeEhpZGVBZnRlckNsaWNrIChjbGljayk9XCJyZXN0b3JlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tcGV0aXRpb24uc3RhdHVzID09IGNvbXBldGl0aW9uU3RhdHVzRW51bS5TdGF5aW5nXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXBsYXktZmlsbGVkIGljb24tZm9udC0yNCBtci0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IHJlc3RvcmVCdXR0b25OYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gbXJ4SGlkZUFmdGVyQ2xpY2tcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhbkNhbmNlbENvbXBldGl0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTI0IG1yLTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3sgY2FuY2VsQ29tcGV0aXRpb25CdXR0b25MYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbXJ4LWRyb3Bkb3duPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -2,7 +2,7 @@ import { HttpParams } from '@angular/common/http';
|
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { EndpointBaseService } from 'myrtex-mf-ui-composite';
|
|
5
|
-
import { CAN_VIEW_COMPETITION_SETTINGS_ANY_STATUS,
|
|
5
|
+
import { CAN_VIEW_COMPETITION_SETTINGS_ANY_STATUS, COMPETITION_ENTITY_NAME } from '../constants/competition-permission.constants';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/common/http";
|
|
8
8
|
import * as i2 from "myrtex-mf-auth";
|
|
@@ -14,10 +14,11 @@ export class CompetitionHeaderService extends EndpointBaseService {
|
|
|
14
14
|
}
|
|
15
15
|
getHeader(competitionId, versionId) {
|
|
16
16
|
const subject = new Subject();
|
|
17
|
-
this.
|
|
17
|
+
this._accessService.checkPermission(this.getAccessControl(CAN_VIEW_COMPETITION_SETTINGS_ANY_STATUS, (competitionId ?? '')))
|
|
18
|
+
.subscribe(anyVersionAccess => {
|
|
18
19
|
const statusSuffix = anyVersionAccess ? '' : '/public';
|
|
19
20
|
const params = this.getHttpVersionParam(versionId ?? '', anyVersionAccess);
|
|
20
|
-
this.http.get(`${this.url}/${competitionId}/header${statusSuffix}`, { params
|
|
21
|
+
this.http.get(`${this.url}/${competitionId}/header${statusSuffix}`, { params })
|
|
21
22
|
.subscribe(header => subject.next(header));
|
|
22
23
|
});
|
|
23
24
|
return subject.asObservable();
|
|
@@ -50,24 +51,8 @@ export class CompetitionHeaderService extends EndpointBaseService {
|
|
|
50
51
|
objectId: entityId
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
|
-
hasAnyVersionAccess(competitionId) {
|
|
54
|
-
const subject = new Subject();
|
|
55
|
-
this._accessService.checkPermission(this.getAccessControl(CAN_VIEW_COMPETITION_SETTINGS_ANY_STATUS, competitionId))
|
|
56
|
-
.subscribe(result => {
|
|
57
|
-
if (true) { // TODO true => result
|
|
58
|
-
subject.next(true);
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
this._accessService.checkPermission(this.getAccessControl(CAN_VIEW_COMPETITION_SETTINGS_PUBLIC_STATUS, competitionId))
|
|
62
|
-
.subscribe(result => {
|
|
63
|
-
if (false) { // TODO false => result
|
|
64
|
-
subject.next(false);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return subject.asObservable();
|
|
68
|
-
}
|
|
69
54
|
getHttpVersionParam(versionId, anyVersionAccess) {
|
|
70
|
-
return
|
|
55
|
+
return anyVersionAccess && !!versionId ? new HttpParams().set('versionId', versionId) : undefined;
|
|
71
56
|
}
|
|
72
57
|
}
|
|
73
58
|
CompetitionHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i2.AccessService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -75,4 +60,4 @@ CompetitionHeaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
|
|
|
75
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderService, decorators: [{
|
|
76
61
|
type: Injectable
|
|
77
62
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i0.Injector }, { type: i2.AccessService }]; } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtY29tcGV0aXRpb24vc3JjL2xpYi9tb2R1bGVzL2NvbXBldGl0aW9uLWhlYWRlci9zZXJ2aWNlcy9jb21wZXRpdGlvbi1oZWFkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBZ0MsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRixPQUFPLEVBQ0wsd0NBQXdDLEVBQ3hDLHVCQUF1QixFQUN4QixNQUFNLCtDQUErQyxDQUFDOzs7O0FBR3ZELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxtQkFBbUI7SUFJL0QsWUFDRSxJQUFnQixFQUNoQixRQUFrQixFQUNWLGNBQTZCO1FBQ3JDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUwvQixRQUFHLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO0lBTzlELENBQUM7SUFFTSxTQUFTLENBQUMsYUFBc0IsRUFBRSxTQUFrQjtRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBaUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsd0NBQXdDLEVBQUUsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN4SCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0MsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsVUFBVSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUMzRyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sYUFBYSxDQUFDLGFBQXNCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxhQUFhLENBQUMsYUFBc0IsRUFBRSxTQUFrQjtRQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxhQUFhLFlBQVksU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRU0sbUJBQW1CLENBQUMsYUFBc0IsRUFBRSxTQUFrQixFQUFFLE1BQXFDO1FBQzFHLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsWUFBWSxTQUFTLGNBQWMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVNLFFBQVEsQ0FBQyxhQUFzQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxhQUFhLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQXNCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLGFBQWEsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxRQUFRLENBQUMsYUFBc0I7UUFDcEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksYUFBYSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxhQUFzQjtRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxhQUFhLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxRQUFnQjtRQUMzRCxPQUFPO1lBQ0wsVUFBVTtZQUNWLFVBQVUsRUFBRSx1QkFBdUI7WUFDbkMsUUFBUSxFQUFFLFFBQVE7U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxTQUFpQixFQUFFLGdCQUF5QjtRQUN0RSxPQUFPLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BHLENBQUM7O3NIQTdEVSx3QkFBd0I7MEhBQXhCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBldGl0aW9uSGVhZGVyVmVyc2lvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLWhlYWRlci12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSwgRW5kcG9pbnRCYXNlU2VydmljZSB9IGZyb20gJ215cnRleC1tZi11aS1jb21wb3NpdGUnO1xyXG5pbXBvcnQge0FjY2Vzc1NlcnZpY2UsIENoZWNrUGVybWlzc2lvbk1vZGVsfSBmcm9tICdteXJ0ZXgtbWYtYXV0aCc7XHJcbmltcG9ydCB7XHJcbiAgQ0FOX1ZJRVdfQ09NUEVUSVRJT05fU0VUVElOR1NfQU5ZX1NUQVRVUyxcclxuICBDT01QRVRJVElPTl9FTlRJVFlfTkFNRVxyXG59IGZyb20gJy4uL2NvbnN0YW50cy9jb21wZXRpdGlvbi1wZXJtaXNzaW9uLmNvbnN0YW50cyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wZXRpdGlvbkhlYWRlclNlcnZpY2UgZXh0ZW5kcyBFbmRwb2ludEJhc2VTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSB1cmwgPSAnL2FwcGxpY2F0aW9uJyArIHRoaXMucmVzdFBhdGggKyAnL2NvbXBldGl0aW9uJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgcHJpdmF0ZSBfYWNjZXNzU2VydmljZTogQWNjZXNzU2VydmljZSkge1xyXG4gICAgc3VwZXIoaHR0cCwgaW5qZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEhlYWRlcihjb21wZXRpdGlvbklkPzogc3RyaW5nLCB2ZXJzaW9uSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbXBldGl0aW9uSGVhZGVyVmVyc2lvbk1vZGVsPiB7XHJcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8Q29tcGV0aXRpb25IZWFkZXJWZXJzaW9uTW9kZWw+KCk7XHJcbiAgICB0aGlzLl9hY2Nlc3NTZXJ2aWNlLmNoZWNrUGVybWlzc2lvbih0aGlzLmdldEFjY2Vzc0NvbnRyb2woQ0FOX1ZJRVdfQ09NUEVUSVRJT05fU0VUVElOR1NfQU5ZX1NUQVRVUywgKGNvbXBldGl0aW9uSWQgPz8gJycpKSlcclxuICAgICAgLnN1YnNjcmliZShhbnlWZXJzaW9uQWNjZXNzID0+IHtcclxuICAgICAgICBjb25zdCBzdGF0dXNTdWZmaXggPSBhbnlWZXJzaW9uQWNjZXNzID8gJycgOiAnL3B1YmxpYyc7XHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRIdHRwVmVyc2lvblBhcmFtKHZlcnNpb25JZCA/PyAnJywgYW55VmVyc2lvbkFjY2Vzcyk7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxDb21wZXRpdGlvbkhlYWRlclZlcnNpb25Nb2RlbD4oYCR7dGhpcy51cmx9LyR7Y29tcGV0aXRpb25JZH0vaGVhZGVyJHtzdGF0dXNTdWZmaXh9YCwgeyBwYXJhbXMgfSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoaGVhZGVyID0+IHN1YmplY3QubmV4dChoZWFkZXIpKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVWZXJzaW9uKGNvbXBldGl0aW9uSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHN0cmluZz4oYCR7dGhpcy51cmx9LyR7Y29tcGV0aXRpb25JZH0vdmVyc2lvbmAsIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVWZXJzaW9uKGNvbXBldGl0aW9uSWQ/OiBzdHJpbmcsIHZlcnNpb25JZD86IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8Ym9vbGVhbj4oYCR7dGhpcy51cmx9LyR7Y29tcGV0aXRpb25JZH0vdmVyc2lvbi8ke3ZlcnNpb25JZH1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2ZXJzaW9uQ2hhbmdlU3RhdHVzKGNvbXBldGl0aW9uSWQ/OiBzdHJpbmcsIHZlcnNpb25JZD86IHN0cmluZywgc3RhdHVzPzogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KGAke3RoaXMudXJsfS8ke2NvbXBldGl0aW9uSWR9L3ZlcnNpb24vJHt2ZXJzaW9uSWR9L3RvLXN0YXR1cy8ke3N0YXR1c31gLCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZhdGUoY29tcGV0aXRpb25JZD86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLnVybH0vJHtjb21wZXRpdGlvbklkfS9hY3RpdmF0ZWAsIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYXVzZShjb21wZXRpdGlvbklkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMudXJsfS8ke2NvbXBldGl0aW9uSWR9L3BhdXNlYCwge30pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbXBsZXRlKGNvbXBldGl0aW9uSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy51cmx9LyR7Y29tcGV0aXRpb25JZH0vY29tcGxldGVgLCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsKGNvbXBldGl0aW9uSWQ/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy51cmx9LyR7Y29tcGV0aXRpb25JZH0vY2FuY2VsYCwge30pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBY2Nlc3NDb250cm9sKHBlcm1pc3Npb246IHN0cmluZywgZW50aXR5SWQ6IHN0cmluZyk6IENoZWNrUGVybWlzc2lvbk1vZGVsIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHBlcm1pc3Npb24sXHJcbiAgICAgIG9iamVjdFR5cGU6IENPTVBFVElUSU9OX0VOVElUWV9OQU1FLFxyXG4gICAgICBvYmplY3RJZDogZW50aXR5SWRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEh0dHBWZXJzaW9uUGFyYW0odmVyc2lvbklkOiBzdHJpbmcsIGFueVZlcnNpb25BY2Nlc3M6IGJvb2xlYW4pOiBIdHRwUGFyYW1zIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBhbnlWZXJzaW9uQWNjZXNzICYmICEhdmVyc2lvbklkID8gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ3ZlcnNpb25JZCcsIHZlcnNpb25JZCkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -290,15 +290,15 @@ class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
290
290
|
if (result) {
|
|
291
291
|
this.competition = result;
|
|
292
292
|
this._accessService.checkPermission(this.getAccessControl(CAN_AGREEMENT_COMPETITION))
|
|
293
|
-
.subscribe(result => this._canAgreementVersionAccess = true); // TODO
|
|
293
|
+
.subscribe(result => this._canAgreementVersionAccess = true); // TODO true => result
|
|
294
294
|
this._accessService.checkPermission(this.getAccessControl(CAN_CREATE_COMPETITION_VERSION))
|
|
295
|
-
.subscribe(result => this._canCreateVersionAccess = true); // TODO
|
|
295
|
+
.subscribe(result => this._canCreateVersionAccess = true); // TODO true => result
|
|
296
296
|
this._accessService.checkPermission(this.getAccessControl(CAN_PUBLIC_COMPETITION))
|
|
297
|
-
.subscribe(result => this._canPublicVersionAccess = true); // TODO
|
|
297
|
+
.subscribe(result => this._canPublicVersionAccess = true); // TODO true => result
|
|
298
298
|
this._accessService.checkPermission(this.getAccessControl(CAN_COMPLETE_COMPETITION))
|
|
299
|
-
.subscribe(result => this._canCompleteEntityAccess = true); // TODO
|
|
299
|
+
.subscribe(result => this._canCompleteEntityAccess = true); // TODO true => result
|
|
300
300
|
this._accessService.checkPermission(this.getAccessControl(CAN_CANCEL_COMPETITION))
|
|
301
|
-
.subscribe(result => this._canCancelEntityAccess = true); // TODO
|
|
301
|
+
.subscribe(result => this._canCancelEntityAccess = true); // TODO true => result
|
|
302
302
|
}
|
|
303
303
|
}));
|
|
304
304
|
this.appendSubscription(this.store.pipe(select(selectCompetitionType)).subscribe(result => {
|
|
@@ -398,12 +398,13 @@ class LibCompetitionHeaderComponent extends UnSubscriber {
|
|
|
398
398
|
const selectedItem = this.selected;
|
|
399
399
|
if (this.validateVersionAction) {
|
|
400
400
|
this.validateVersionAction(selectedItem.id, () => {
|
|
401
|
+
var _a, _b;
|
|
401
402
|
this.signService.sign({
|
|
402
403
|
title: 'Направление документа на согласование',
|
|
403
404
|
okLabel: 'Отправить',
|
|
404
405
|
cancelLabel: 'Отменить',
|
|
405
|
-
pdfUrl: `/m-data/minfin/pdf-competition/${selectedItem.id}`,
|
|
406
|
-
xmlUrl: `/m-data/minfin/xml-competition/${selectedItem.id}`,
|
|
406
|
+
pdfUrl: `/m-data/minfin/pdf-competition/${(_a = this.competition) === null || _a === void 0 ? void 0 : _a.id}?versionId=${selectedItem.id}`,
|
|
407
|
+
xmlUrl: `/m-data/minfin/xml-competition/${(_b = this.competition) === null || _b === void 0 ? void 0 : _b.id}?versionId=${selectedItem.id}`,
|
|
407
408
|
provider: 'empty'
|
|
408
409
|
}, () => {
|
|
409
410
|
this.alertService.showMessage('', 'Ожидайте. Выполняется отправка на согласование.', MessageSeverity.wait);
|
|
@@ -611,10 +612,11 @@ class CompetitionHeaderService extends EndpointBaseService {
|
|
|
611
612
|
}
|
|
612
613
|
getHeader(competitionId, versionId) {
|
|
613
614
|
const subject = new Subject();
|
|
614
|
-
this.
|
|
615
|
+
this._accessService.checkPermission(this.getAccessControl(CAN_VIEW_COMPETITION_SETTINGS_ANY_STATUS, (competitionId !== null && competitionId !== void 0 ? competitionId : '')))
|
|
616
|
+
.subscribe(anyVersionAccess => {
|
|
615
617
|
const statusSuffix = anyVersionAccess ? '' : '/public';
|
|
616
618
|
const params = this.getHttpVersionParam(versionId !== null && versionId !== void 0 ? versionId : '', anyVersionAccess);
|
|
617
|
-
this.http.get(`${this.url}/${competitionId}/header${statusSuffix}`, { params
|
|
619
|
+
this.http.get(`${this.url}/${competitionId}/header${statusSuffix}`, { params })
|
|
618
620
|
.subscribe(header => subject.next(header));
|
|
619
621
|
});
|
|
620
622
|
return subject.asObservable();
|
|
@@ -647,24 +649,8 @@ class CompetitionHeaderService extends EndpointBaseService {
|
|
|
647
649
|
objectId: entityId
|
|
648
650
|
};
|
|
649
651
|
}
|
|
650
|
-
hasAnyVersionAccess(competitionId) {
|
|
651
|
-
const subject = new Subject();
|
|
652
|
-
this._accessService.checkPermission(this.getAccessControl(CAN_VIEW_COMPETITION_SETTINGS_ANY_STATUS, competitionId))
|
|
653
|
-
.subscribe(result => {
|
|
654
|
-
if (true) { // TODO true => result
|
|
655
|
-
subject.next(true);
|
|
656
|
-
}
|
|
657
|
-
});
|
|
658
|
-
this._accessService.checkPermission(this.getAccessControl(CAN_VIEW_COMPETITION_SETTINGS_PUBLIC_STATUS, competitionId))
|
|
659
|
-
.subscribe(result => {
|
|
660
|
-
if (false) { // TODO false => result
|
|
661
|
-
subject.next(false);
|
|
662
|
-
}
|
|
663
|
-
});
|
|
664
|
-
return subject.asObservable();
|
|
665
|
-
}
|
|
666
652
|
getHttpVersionParam(versionId, anyVersionAccess) {
|
|
667
|
-
return
|
|
653
|
+
return anyVersionAccess && !!versionId ? new HttpParams().set('versionId', versionId) : undefined;
|
|
668
654
|
}
|
|
669
655
|
}
|
|
670
656
|
CompetitionHeaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderService, deps: [{ token: i1.HttpClient }, { token: i0.Injector }, { token: i5.AccessService }], target: i0.ɵɵFactoryTarget.Injectable });
|