@valtimo/dossier 12.11.0 → 12.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +2 -3
- package/esm2022/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.mjs +9 -4
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +3 -3
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +17 -7
- package/fesm2022/valtimo-dossier.mjs +25 -11
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.d.ts +1 -0
- package/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +2 -0
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -18,7 +18,7 @@ import { Component, Inject, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
|
18
18
|
import { NavigationStart } from '@angular/router';
|
|
19
19
|
import { ChevronDown16 } from '@carbon/icons';
|
|
20
20
|
import { CARBON_CONSTANTS, CurrentCarbonTheme, PendingChangesComponent, } from '@valtimo/components';
|
|
21
|
-
import {
|
|
21
|
+
import { CaseTagsUtils, InternalCaseStatusUtils, } from '@valtimo/document';
|
|
22
22
|
import { NotificationService } from 'carbon-components-angular';
|
|
23
23
|
import moment from 'moment';
|
|
24
24
|
import { BehaviorSubject, combineLatest, filter, map, of, startWith, Subject, Subscription, switchMap, take, tap, } from 'rxjs';
|
|
@@ -102,7 +102,6 @@ export class DossierDetailComponent extends PendingChangesComponent {
|
|
|
102
102
|
this.canView$,
|
|
103
103
|
]).pipe(filter(([_, canView]) => canView), switchMap(() => this.route.params), map((params) => params?.documentId), switchMap((documentId) => documentId ? this.documentService.getDocument(this.documentId) : of(null)), tap((document) => {
|
|
104
104
|
if (document) {
|
|
105
|
-
console.log('document', document);
|
|
106
105
|
this.assigneeId$.next(document.assigneeId);
|
|
107
106
|
this.document = document;
|
|
108
107
|
this._caseStatusKey$.next(document?.internalStatus || 'NOT_AVAILABLE');
|
|
@@ -477,4 +476,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
477
476
|
type: ViewChild,
|
|
478
477
|
args: ['tabContentContainer']
|
|
479
478
|
}] } });
|
|
480
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFFTCxTQUFTLEVBR1QsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFpQixlQUFlLEVBQTJCLE1BQU0saUJBQWlCLENBQUM7QUFDMUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc1QyxPQUFPLEVBRUwsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUdsQix1QkFBdUIsR0FDeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBS0wsdUJBQXVCLEVBR3ZCLGFBQWEsR0FDZCxNQUFNLG1CQUFtQixDQUFDO0FBSTNCLE9BQU8sRUFBYyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTNFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUVILEVBQUUsRUFDRixTQUFTLEVBQ1QsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBQ1QsSUFBSSxFQUNKLEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUNkLE9B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Q0FBMkMsQ0FBQyxLQUFLO1lBQ25ELENBQUMsQ0FBQyxXQUFXLEdBQUcsRUFBRTtnQkFDaEIsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLE1BQU07Z0JBQ3BELENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxLQUFLLENBQ3hELENBQUM7SUFDSixDQUFDOytHQWhuQlUsc0JBQXNCLDBzQkFvUHZCLFFBQVE7bUdBcFBQLHNCQUFzQixpREFGdEIsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQywrT0FTN0MsZ0JBQWdCLGtLQ3ZHcEQsKytYQThVQTs7NEZEOU9hLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkIsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQzs7MEJBc1A1RSxNQUFNOzJCQUFDLFFBQVE7eUNBL09sQixzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsNkJBQTZCO2dCQUl4QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBSWxDLG9CQUFvQjtzQkFEcEMsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvblN0YXJ0LCBQYXJhbU1hcCwgUGFyYW1zLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0NoZXZyb25Eb3duMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7XG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBDQVJCT05fQ09OU1RBTlRTLFxuICBDZHNUaGVtZVNlcnZpY2UsXG4gIEN1cnJlbnRDYXJib25UaGVtZSxcbiAgUGFnZUhlYWRlclNlcnZpY2UsXG4gIFBhZ2VUaXRsZVNlcnZpY2UsXG4gIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50LFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7XG4gIENhc2VTdGF0dXNTZXJ2aWNlLFxuICBEb2N1bWVudCBhcyBWYWx0aW1vRG9jdW1lbnQsXG4gIERvY3VtZW50U2VydmljZSxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzLFxuICBJbnRlcm5hbENhc2VTdGF0dXNVdGlscyxcbiAgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbixcbiAgQ2FzZVRhZyxcbiAgQ2FzZVRhZ3NVdGlscyxcbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtUYXNrV2l0aFByb2Nlc3NMaW5rfSBmcm9tICdAdmFsdGltby9wcm9jZXNzLWxpbmsnO1xuaW1wb3J0IHtVc2VyUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQge0ludGVybWVkaWF0ZVN1Ym1pc3Npb259IGZyb20gJ0B2YWx0aW1vL3Rhc2snO1xuaW1wb3J0IHtJY29uU2VydmljZSwgTm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0tleWNsb2FrU2VydmljZX0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERPU1NJRVJfREVUQUlMX0RFRkFVTFRfRElTUExBWV9TSVpFLFxuICBET1NTSUVSX0RFVEFJTF9ERUZBVUxUX0RJU1BMQVlfVFlQRSxcbiAgRE9TU0lFUl9ERVRBSUxfR1VUVEVSX1NJWkUsXG4gIERPU1NJRVJfREVUQUlMX1NUQVJUX1BST0NFU1NfRFJPUERPV05fV0lEVEgsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1RhYkltcGwsIFRhYkxvYWRlckltcGx9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBDQU5fQVNTSUdOX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX0NMQUlNX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX0RFTEVURV9DQVNFX1BFUk1JU1NJT04sXG4gIENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTixcbiAgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbn0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZSwgRG9zc2llclNlcnZpY2UsIERvc3NpZXJUYWJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0Rvc3NpZXJTdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1dpZGdldHNTZXJ2aWNlfSBmcm9tICcuL3RhYi93aWRnZXRzL3dpZGdldHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEb3NzaWVyVGFiU2VydmljZSwgRG9zc2llckRldGFpbExheW91dFNlcnZpY2UsIE5vdGlmaWNhdGlvblNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsQ29tcG9uZW50XG4gIGV4dGVuZHMgUGVuZGluZ0NoYW5nZXNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnc3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsJylcbiAgc3VwcG9ydGluZ1Byb2Nlc3NTdGFydDogRG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0YWJDb250YWluZXInLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudENvbnRhaW5lcicpXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYkNvbnRlbnRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwdWJsaWMgY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zOiBBcnJheTxhbnk+ID0gW107XG4gIHB1YmxpYyBkb2N1bWVudDogVmFsdGltb0RvY3VtZW50IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uTGlzdEZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IChQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uICYge2Rpc3BsYXlOYW1lPzogc3RyaW5nfSlbXSA9IFtdO1xuICBwdWJsaWMgdGFiTG9hZGVyOiBUYWJMb2FkZXJJbXBsIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFzc2lnbmVlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRJbnRlcm1lZGlhdGVTYXZlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJtZWRpYXRlU3VibWlzc2lvbiB8IG51bGw+KFxuICAgIG51bGxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzQWRtaW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgLmdldFVzZXJTdWJqZWN0KClcbiAgICAucGlwZShtYXAodXNlcklkZW50aXR5ID0+IHVzZXJJZGVudGl0eT8ucm9sZXM/LmluY2x1ZGVzKCdST0xFX0FETUlOJykpKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbCQgPVxuICAgIHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2UudGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbCQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2FzZVN0YXR1c0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGwgfCAnTk9UX0FWQUlMQUJMRSc+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90YXNrUGFuZWxUb2dnbGUgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZVRhc2tQYW5lbDtcblxuICBwdWJsaWMgcmVhZG9ubHkgZHJvcGRvd25XaWR0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oXG4gICAgRE9TU0lFUl9ERVRBSUxfU1RBUlRfUFJPQ0VTU19EUk9QRE9XTl9XSURUSC5zbWFsbFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVN0YXR1c0tleSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgJ05PVF9BVkFJTEFCTEUnPiA9IHRoaXMuX2Nhc2VTdGF0dXNLZXkkLnBpcGUoXG4gICAgZmlsdGVyKGtleSA9PiAhIWtleSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgX2Nhc2VUYWdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FzZVRhZ1tdIHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5WaWV3JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgIGlkZW50aWZpZXI6IHBhcmFtcy5nZXQoJ2RvY3VtZW50SWQnKSA/PyAnJyxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8VmFsdGltb0RvY3VtZW50IHwgbnVsbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvc3NpZXJTZXJ2aWNlLnJlZnJlc2hEb2N1bWVudCQsXG4gICAgdGhpcy5jYW5WaWV3JCxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtfLCBjYW5WaWV3XSkgPT4gY2FuVmlldyksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucm91dGUucGFyYW1zKSxcbiAgICBtYXAoKHBhcmFtczogUGFyYW1zKSA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgIHN3aXRjaE1hcCgoZG9jdW1lbnRJZDogc3RyaW5nKSA9PlxuICAgICAgZG9jdW1lbnRJZCA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkgOiBvZihudWxsKVxuICAgICksXG4gICAgdGFwKChkb2N1bWVudDogVmFsdGltb0RvY3VtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdkb2N1bWVudCcsIGRvY3VtZW50KTtcbiAgICAgICAgdGhpcy5hc3NpZ25lZUlkJC5uZXh0KGRvY3VtZW50LmFzc2lnbmVlSWQpO1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMuX2Nhc2VTdGF0dXNLZXkkLm5leHQoZG9jdW1lbnQ/LmludGVybmFsU3RhdHVzIHx8ICdOT1RfQVZBSUxBQkxFJyk7XG4gICAgICAgIHRoaXMuX2Nhc2VUYWdzJC5uZXh0KGRvY3VtZW50Py5jYXNlVGFncyB8fCBudWxsKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5jdXN0b21Eb3NzaWVySGVhZGVyPy5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgKSAmJlxuICAgICAgICAgIHRoaXMuY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zLmxlbmd0aCA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLmN1c3RvbURvc3NpZXJIZWFkZXJbXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIF0/LmZvckVhY2goaXRlbSA9PiB0aGlzLmdldEN1c3RvbURvc3NpZXJIZWFkZXJJdGVtKGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50RGVmaW5pdGlvbk5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgfHwgJycpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhc2VTdGF0dXMkOiBPYnNlcnZhYmxlPEludGVybmFsQ2FzZVN0YXR1cyB8IHVuZGVmaW5lZD4gPVxuICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICAgIGZpbHRlcihkb2N1bWVudERlZmluaXRpb25OYW1lID0+ICEhZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLmNhc2VTdGF0dXNTZXJ2aWNlLmdldEludGVybmFsQ2FzZVN0YXR1c2VzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLFxuICAgICAgICAgIHRoaXMuY2FzZVN0YXR1c0tleSQsXG4gICAgICAgIF0pXG4gICAgICApLFxuICAgICAgbWFwKFxuICAgICAgICAoW3N0YXR1c2VzLCBrZXldKSA9PiBrZXkgIT09ICdOT1RfQVZBSUxBQkxFJyAmJiBzdGF0dXNlcy5maW5kKHN0YXR1cyA9PiBzdGF0dXM/LmtleSA9PT0ga2V5KVxuICAgICAgKSxcbiAgICAgIG1hcChcbiAgICAgICAgc3RhdHVzID0+XG4gICAgICAgICAgc3RhdHVzICYmIHtcbiAgICAgICAgICAgIC4uLnN0YXR1cyxcbiAgICAgICAgICAgIHRhZ1R5cGU6IEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLmdldFRhZ1R5cGVGcm9tSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3Ioc3RhdHVzLmNvbG9yKSxcbiAgICAgICAgICB9XG4gICAgICApXG4gICAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVRhZ3MkOiBPYnNlcnZhYmxlPENhc2VUYWdbXSB8IHVuZGVmaW5lZD4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgZmlsdGVyKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gISFkb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiB0aGlzLl9jYXNlVGFncyQpLFxuICAgIG1hcChcbiAgICAgIHRhZyA9PlxuICAgICAgICB0YWcgJiZcbiAgICAgICAgdGFnLm1hcChjYXNlVGFnID0+ICh7XG4gICAgICAgICAgLi4uY2FzZVRhZyxcbiAgICAgICAgICB0YWdUeXBlOiBDYXNlVGFnc1V0aWxzLmdldFRhZ1R5cGVGcm9tQ2FzZVRhZ0NvbG9yKGNhc2VUYWcuY29sb3IpLFxuICAgICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHVzZXJJZCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IG9mKFxuICAgIHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmlzTG9nZ2VkSW4oKVxuICApLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMua2V5Q2xvYWtTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpKSxcbiAgICBtYXAocHJvZmlsZSA9PiBwcm9maWxlPy5pZClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNBc3NpZ25pbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBpc0Fzc2lnbmVkVG9DdXJyZW50VXNlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFzc2lnbmVlSWQkLFxuICAgIHRoaXMudXNlcklkJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFthc3NpZ25lZUlkLCB1c2VySWRdKSA9PiAhIWFzc2lnbmVlSWQgJiYgISF1c2VySWQgJiYgYXNzaWduZWVJZCA9PT0gdXNlcklkKSxcbiAgICBzdGFydFdpdGgodHJ1ZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuSGF2ZUFzc2lnbmVlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PlxuICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0Q2FzZVNldHRpbmdzKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgKSxcbiAgICBtYXAoY2FzZVNldHRpbmdzID0+IGNhc2VTZXR0aW5ncz8uY2FuSGF2ZUFzc2lnbmVlKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5Bc3NpZ25Mb2FkZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5Bc3NpZ24kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIHN3aXRjaE1hcCgocGFyYW1zOiBQYXJhbU1hcCkgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0FTU0lHTl9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgICksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHRoaXMuY2FuQXNzaWduTG9hZGVkJC5uZXh0KHRydWUpO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhbkNsYWltJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9DTEFJTV9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNEZWxldGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhbkRlbGV0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlLnBhcmFtTWFwLnBpcGUoXG4gICAgc3dpdGNoTWFwKChwYXJhbXM6IFBhcmFtTWFwKSA9PlxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5yZXF1ZXN0UGVybWlzc2lvbihDQU5fREVMRVRFX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgIGlkZW50aWZpZXI6IHBhcmFtcy5nZXQoJ2RvY3VtZW50SWQnKSA/PyAnJyxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nVGFicyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9UYWJzQ29uZmlndXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dOb0FjY2VzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGFjdGl2ZVRhYiQ6IE9ic2VydmFibGU8VGFiSW1wbD47XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3RNb2RlJCA9IHRoaXMucGFnZUhlYWRlclNlcnZpY2UuY29tcGFjdE1vZGUkO1xuXG4gIHB1YmxpYyByZWFkb25seSB0YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZCA9XG4gICAgdGhpcy5kb3NzaWVyVGFiU2VydmljZS50YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZDtcblxuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1Rhc2tMaXN0JCA9IHRoaXMuZG9zc2llclRhYlNlcnZpY2Uuc2hvd1Rhc2tMaXN0JDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVUYWJOYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiTmFtZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMucm91dGUucGFyYW1NYXAsIHRoaXMuX2FjdGl2ZVRhYk5hbWUkXSkucGlwZShcbiAgICAgIG1hcCgoW3BhcmFtTWFwLCBhY3RpdmVUYWJOYW1lXSkgPT5cbiAgICAgICAgIWFjdGl2ZVRhYk5hbWUgPyAocGFyYW1NYXAuZ2V0KCd0YWInKSA/PyBudWxsKSA6IGFjdGl2ZVRhYk5hbWVcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IERPU1NJRVJfREVUQUlMX0dVVFRFUl9TSVpFID0gRE9TU0lFUl9ERVRBSUxfR1VUVEVSX1NJWkU7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvc3NpZXJEZXRhaWxMYXlvdXQkID0gdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5kb3NzaWVyRGV0YWlsTGF5b3V0JDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3BlblRhc2tBbmRQcm9jZXNzTGlua0luTW9kYWwkID0gbmV3IFN1YmplY3Q8VGFza1dpdGhQcm9jZXNzTGluaz4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNEYXJrTW9kZSQgPSB0aGlzLmNkc1RoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkLnBpcGUoXG4gICAgbWFwKGN1cnJlbnRUaGVtZSA9PiBjdXJyZW50VGhlbWUgPT09IEN1cnJlbnRDYXJib25UaGVtZS5HOTApXG4gICk7XG5cbiAgcHJpdmF0ZSBfc25hcHNob3Q6IFBhcmFtTWFwO1xuICBwcml2YXRlIF9pbml0aWFsVGFiTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9hY3RpdmVDaGFuZ2UgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfb2xkVGFiTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9wZW5kaW5nVGFiOiBUYWJJbXBsO1xuICBwcml2YXRlIF9vYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuICBwcml2YXRlIF90YWJzSW5pdCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZVN0YXR1c1NlcnZpY2U6IENhc2VTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RzVGhlbWVTZXJ2aWNlOiBDZHNUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJEZXRhaWxMYXlvdXRTZXJ2aWNlOiBEb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJTZXJ2aWNlOiBEb3NzaWVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJUYWJTZXJ2aWNlOiBEb3NzaWVyVGFiU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleUNsb2FrU2VydmljZTogS2V5Y2xvYWtTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZUhlYWRlclNlcnZpY2U6IFBhZ2VIZWFkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRzU2VydmljZTogV2lkZ2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgaHRtbERvY3VtZW50OiBEb2N1bWVudFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3NuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcDtcbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPSB0aGlzLl9zbmFwc2hvdC5nZXQoJ2RvY3VtZW50RGVmaW5pdGlvbk5hbWUnKSB8fCAnJztcbiAgICB0aGlzLmRvY3VtZW50SWQgPSB0aGlzLl9zbmFwc2hvdC5nZXQoJ2RvY3VtZW50SWQnKSB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0VGFiTG9hZGVyKCk7XG4gICAgdGhpcy5pbml0QnJlYWRjcnVtYigpO1xuICAgIHRoaXMub3BlbldpZHRoT2JzZXJ2ZXIoKTtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZGlzYWJsZVJlc2V0KCk7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbQ2hldnJvbkRvd24xNl0pO1xuICAgIHRoaXMuc2V0RG9jdW1lbnRTdHlsZSgpO1xuICAgIHRoaXMuZW5hYmxlUmVzZXRPbkJhY2tOYXZpZ2F0aW9uKCk7XG4gICAgdGhpcy5vcGVuV2lkZ2V0UHJvY2Vzc1N1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2UuY2xlYXJTZWNvbmRCcmVhZGNydW1iKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gICAgdGhpcy5yZW1vdmVEb2N1bWVudFN0eWxlKCk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldEFsbEFzc29jaWF0ZWRQcm9jZXNzRGVmaW5pdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZmluZFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zRm9yRG9jdW1lbnQodGhpcy5kb2N1bWVudElkLCB7XG4gICAgICAgICAgc3RhcnRhYmxlQnlVc2VyOiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgICBdKS5zdWJzY3JpYmUoKFtwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyA9IHRoaXMubWFwUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMoXG4gICAgICAgICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRQcm9jZXNzRHJvcGRvd25XaWR0aCgpO1xuXG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25MaXN0RmllbGRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3Byb2Nlc3NOYW1lJyxcbiAgICAgICAgICAgIGxhYmVsOiAnUHJvY2VzJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0Lm9wZW5Nb2RhbChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLCB0aGlzLmRvY3VtZW50SWQpO1xuICB9XG5cbiAgcHVibGljIG9wZW5XaWRnZXRQcm9jZXNzU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy53aWRnZXRzU2VydmljZS5zdGFydFByb2Nlc3NFdmVudFxuICAgICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy53aWRnZXRzU2VydmljZS5hY3RpdmVQcm9jZXNzJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgICB0aGlzLnN0YXJ0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc1swXSk7XG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGFpbUFzc2lnbmVlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLnVzZXJJZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmFzc2lnbkhhbmRsZXJUb0RvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCwgdXNlcklkID8/ICcnKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSBhc3NpZ25pbmcgdXNlciB0byBjYXNlJyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmFzc2lnbkFzc2lnbmVlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLnVzZXJJZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHVzZXJJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PlxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLnVuYXNzaWduSGFuZGxlckZyb21Eb2N1bWVudCh0aGlzLmRvY3VtZW50SWQpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5pc0Fzc2lnbmluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5kb3NzaWVyU2VydmljZS5yZWZyZXNoKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5pc0Fzc2lnbmluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1NvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHVuYXNzaWduaW5nIHVzZXIgZnJvbSBjYXNlJyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVEb2N1bWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEZWxldGVNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbmZpcm1EZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0RlbGV0aW5nJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmRlbGV0ZURvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc0RlbGV0aW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zaG93RGVsZXRlTW9kYWwkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kb3NzaWVycy8ke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gXSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pc0RlbGV0aW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1NvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIGRlbGV0aW5nIHRoZSBjYXNlJyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uVGFza0NsaWNrRXZlbnQodGFza1Byb2Nlc3NMaW5rUmVzdWx0OiBUYXNrV2l0aFByb2Nlc3NMaW5rKTogdm9pZCB7XG4gICAgaWYgKCF0YXNrUHJvY2Vzc0xpbmtSZXN1bHQucHJvY2Vzc0xpbmtBY3Rpdml0eVJlc3VsdCkge1xuICAgICAgdGhpcy5pc0FkbWluJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpc0FkbWluID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVOb1Rhc2tQcm9jZXNzTGluayhpc0FkbWluKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc3BsYXlUeXBlID1cbiAgICAgIHRhc2tQcm9jZXNzTGlua1Jlc3VsdC5wcm9jZXNzTGlua0FjdGl2aXR5UmVzdWx0LnByb3BlcnRpZXMuZm9ybURpc3BsYXlUeXBlIHx8XG4gICAgICBET1NTSUVSX0RFVEFJTF9ERUZBVUxUX0RJU1BMQVlfVFlQRTtcbiAgICBjb25zdCBzaXplID1cbiAgICAgIHRhc2tQcm9jZXNzTGlua1Jlc3VsdC5wcm9jZXNzTGlua0FjdGl2aXR5UmVzdWx0LnByb3BlcnRpZXMuZm9ybVNpemUgfHxcbiAgICAgIERPU1NJRVJfREVUQUlMX0RFRkFVTFRfRElTUExBWV9TSVpFO1xuXG4gICAgdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5zZXRGb3JtRGlzcGxheVNpemUoc2l6ZSk7XG4gICAgdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5zZXRGb3JtRGlzcGxheVR5cGUoZGlzcGxheVR5cGUpO1xuXG4gICAgaWYgKGRpc3BsYXlUeXBlID09PSAncGFuZWwnICYmICEhdGhpcy5fdGFza1BhbmVsVG9nZ2xlKSB7XG4gICAgICB0aGlzLmRvc3NpZXJEZXRhaWxMYXlvdXRTZXJ2aWNlLnNldFRhc2tBbmRQcm9jZXNzTGlua09wZW5lZEluUGFuZWwodGFza1Byb2Nlc3NMaW5rUmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuVGFza0FuZFByb2Nlc3NMaW5rSW5Nb2RhbCQubmV4dCh7Li4udGFza1Byb2Nlc3NMaW5rUmVzdWx0fSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uVGFza0RldGFpbHNDbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJEZXRhaWxMYXlvdXRTZXJ2aWNlLnNldFRhc2tBbmRQcm9jZXNzTGlua09wZW5lZEluUGFuZWwobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgb25BY3RpdmVDaGFuZ2VFdmVudChldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2ZUNoYW5nZSA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIG9uVGFiU2VsZWN0ZWQodGFiOiBUYWJJbXBsLCBhY3RpdmVUYWI6IFRhYkltcGwpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFiTG9hZGVyKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuX3RhYnNJbml0KSB7XG4gICAgICB0aGlzLl90YWJzSW5pdCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb2xkVGFiTmFtZSA9IGFjdGl2ZVRhYi5uYW1lO1xuICAgIHRoaXMuX3BlbmRpbmdUYWIgPSB0YWI7XG4gICAgdGhpcy5fYWN0aXZlVGFiTmFtZSQubmV4dCh0YWIubmFtZSk7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcyA9XG4gICAgICB0YWIuY29udGVudEtleSA9PT0gJ3N1bW1hcnknID8gZmFsc2UgOiAhdGFiLnNob3dUYXNrcyAmJiB0aGlzLl9hY3RpdmVDaGFuZ2U7XG5cbiAgICBpZiAodGhpcy5wZW5kaW5nQ2hhbmdlcykge1xuICAgICAgdGhpcy50YWJMb2FkZXIucmVwbGFjZVVybFN0YXRlKHRhYik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0YWIuc2hvd1Rhc2tzKSB0aGlzLm9wZW5UYXNrQW5kUHJvY2Vzc0xpbmtJbk1vZGFsJC5uZXh0KG51bGwpO1xuICAgIHRoaXMudGFiTG9hZGVyLmxvYWQodGFiKTtcbiAgICB0aGlzLnNldERvY3VtZW50U3R5bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkZvcm1TdWJtaXRFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJEZXRhaWxMYXlvdXRTZXJ2aWNlLnNldFRhc2tBbmRQcm9jZXNzTGlua09wZW5lZEluUGFuZWwobnVsbCk7XG5cbiAgICBpZiAoIXRoaXMudGFiTG9hZGVyKSByZXR1cm47XG4gICAgdGhpcy50YWJMb2FkZXIucmVmcmVzaFZpZXcoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNvbmZpcm1SZWRpcmVjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGFiTG9hZGVyIHx8ICF0aGlzLl9wZW5kaW5nVGFiKSByZXR1cm47XG4gICAgdGhpcy5fYWN0aXZlQ2hhbmdlID0gZmFsc2U7XG4gICAgdGhpcy5fYWN0aXZlVGFiTmFtZSQubmV4dCh0aGlzLl9wZW5kaW5nVGFiLm5hbWUpO1xuICAgIHRoaXMudGFiTG9hZGVyLmxvYWQodGhpcy5fcGVuZGluZ1RhYik7XG4gICAgdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5zZXRUYXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsKG51bGwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2FuY2VsUmVkaXJlY3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYkxvYWRlcikgcmV0dXJuO1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUkLm5leHQodGhpcy5fb2xkVGFiTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRCcmVhZGNydW1iKCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlXG4gICAgICAuZ2V0RG9jdW1lbnREZWZpbml0aW9uKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSlcbiAgICAgIC5zdWJzY3JpYmUoZGVmaW5pdGlvbiA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlID0gZGVmaW5pdGlvbi5zY2hlbWEudGl0bGU7XG4gICAgICAgIHRoaXMuc2V0QnJlYWRjcnVtYigpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRUYWJMb2FkZXIoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5kb3NzaWVyVGFiU2VydmljZS50YWJzJCwgdGhpcy5jYW5WaWV3JF0pXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoW3RhYnMsIGNhblZpZXddKSA9PiB7XG4gICAgICAgIGlmIChjYW5WaWV3KSB7XG4gICAgICAgICAgaWYgKHRhYnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxUYWJOYW1lID0gdGhpcy5fc25hcHNob3QuZ2V0KCd0YWInKSA/PyAnJztcbiAgICAgICAgICAgIHRoaXMudGFiTG9hZGVyID0gbmV3IFRhYkxvYWRlckltcGwoXG4gICAgICAgICAgICAgIHRhYnMsXG4gICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLFxuICAgICAgICAgICAgICB0aGlzLnJvdXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy50YWJMb2FkZXIuaW5pdGlhbCh0aGlzLl9pbml0aWFsVGFiTmFtZSk7XG4gICAgICAgICAgICB0aGlzLmRvc3NpZXJUYWJTZXJ2aWNlLnNldFRhYkxvYWRlcih0aGlzLnRhYkxvYWRlcik7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdUYWJzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiJCA9IHRoaXMudGFiTG9hZGVyLmFjdGl2ZVRhYiQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm9UYWJzQ29uZmlndXJlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1RhYnMkLm5leHQoZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZ2V0QWxsQXNzb2NpYXRlZFByb2Nlc3NEZWZpbml0aW9ucygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2hvd05vQWNjZXNzJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMubG9hZGluZ1RhYnMkLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbURvc3NpZXJIZWFkZXJJdGVtKGl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLmN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5wdXNoKHtcbiAgICAgIGxhYmVsOiBpdGVtWydsYWJlbFRyYW5zbGF0aW9uS2V5J10gfHwgJycsXG4gICAgICBjb2x1bW5TaXplOiBpdGVtWydjb2x1bW5TaXplJ10gfHwgMyxcbiAgICAgIHRleHRTaXplOiBpdGVtWyd0ZXh0U2l6ZSddIHx8ICdtZCcsXG4gICAgICBjdXN0b21DbGFzczogaXRlbVsnY3VzdG9tQ2xhc3MnXSB8fCAnJyxcbiAgICAgIG1vZGlmaWVyOiBpdGVtWydtb2RpZmllciddIHx8ICcnLFxuICAgICAgdmFsdWU6IGl0ZW1bJ3Byb3BlcnR5UGF0aHMnXT8ucmVkdWNlKFxuICAgICAgICAocHJldiwgY3VycikgPT4gcHJldiArIHRoaXMuZ2V0U3RyaW5nRnJvbURvY3VtZW50UGF0aChpdGVtLCBjdXJyKSxcbiAgICAgICAgJydcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0cmluZ0Zyb21Eb2N1bWVudFBhdGgoaXRlbSwgcGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJlZml4ID0gaXRlbVsncHJvcGVydHlQYXRocyddLmluZGV4T2YocGF0aCkgPiAwID8gJyAnIDogJyc7XG4gICAgbGV0IHN0cmluZyA9IHRoaXMuZ2V0TmVzdGVkUHJvcGVydHkodGhpcy5kb2N1bWVudC5jb250ZW50LCBwYXRoLCBpdGVtWydub1ZhbHVlVGV4dCddKSB8fCAnJztcbiAgICBjb25zdCBkYXRlRm9ybWF0cyA9IFttb21lbnQuSVNPXzg2MDEsICdNTS1ERC1ZWVlZJywgJ0RELU1NLVlZWVknLCAnWVlZWS1NTS1ERCddO1xuICAgIHN3aXRjaCAoaXRlbVsnbW9kaWZpZXInXSkge1xuICAgICAgY2FzZSAnYWdlJzoge1xuICAgICAgICBpZiAobW9tZW50KHN0cmluZywgZGF0ZUZvcm1hdHMsIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgIHN0cmluZyA9IG1vbWVudCgpLmRpZmYoc3RyaW5nLCAneWVhcnMnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKG1vbWVudChzdHJpbmcsIGRhdGVGb3JtYXRzLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBzdHJpbmcgPSBtb21lbnQoc3RyaW5nKS5mb3JtYXQoJ0RELU1NLVlZWVknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJlZml4ICsgc3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXN0ZWRQcm9wZXJ0eShvYmo6IGFueSwgcGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGN1cnJlbnRPYmplY3QsIGtleSkgPT4gY3VycmVudE9iamVjdD8uW2tleV0sIG9iaikgfHwgZGVmYXVsdFZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QnJlYWRjcnVtYigpOiB2b2lkIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnNldFNlY29uZEJyZWFkY3J1bWIoe1xuICAgICAgcm91dGU6IFtgL2Rvc3NpZXJzLyR7dGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lfWBdLFxuICAgICAgY29udGVudDogdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGUsXG4gICAgICBocmVmOiBgL2Rvc3NpZXJzLyR7dGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lfWAsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5XaWR0aE9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGFiQ29udGVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50KSByZXR1cm47XG5cbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihldmVudCA9PiB7XG4gICAgICB0aGlzLm9ic2VydmVyTXV0YXRpb24oZXZlbnQpO1xuICAgIH0pO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fdGFiQ29udGVudENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZXJNdXRhdGlvbihldmVudDogQXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4pOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSBldmVudFswXT8uYm9yZGVyQm94U2l6ZVswXT8uaW5saW5lU2l6ZTtcblxuICAgIGlmICh0eXBlb2YgZWxlbWVudFdpZHRoID09PSAnbnVtYmVyJyAmJiBlbGVtZW50V2lkdGggIT09IDApIHtcbiAgICAgIHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2Uuc2V0VGFiQ29udGVudENvbnRhaW5lcldpZHRoKGVsZW1lbnRXaWR0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREb2N1bWVudFN0eWxlKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5odG1sRG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXSwgJ2h0bWwtLWZpeGVkJyk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURvY3VtZW50U3R5bGUoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmh0bWxEb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdLCAnaHRtbC0tZml4ZWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlUmVzZXRPbkJhY2tOYXZpZ2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgIGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0ICYmIGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSAncG9wc3RhdGUnXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5lbmFibGVSZXNldCgpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vVGFza1Byb2Nlc3NMaW5rKGlzQWRtaW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd0FjdGlvbmFibGUoe1xuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgbG93Q29udHJhc3Q6IHRydWUsXG4gICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rvc3NpZXIubm9MaW5rZWRQcm9jZXNzTm90aWZpY2F0aW9uJyksXG4gICAgICAuLi4oaXNBZG1pbiAmJiB7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZG9zc2llci5jb25maWd1cmUnKSxcbiAgICAgICAgICAgIGNsaWNrOiAoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9wcm9jZXNzLWxpbmtzJ10pLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICAgIGR1cmF0aW9uOiBDQVJCT05fQ09OU1RBTlRTLm5vdGlmaWNhdGlvbkR1cmF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucyhcbiAgICBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uczogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbltdXG4gICk6IChQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uICYge2Rpc3BsYXlOYW1lOiBzdHJpbmd9KVtdIHtcbiAgICByZXR1cm4gcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubWFwKFxuICAgICAgKHByb2Nlc3NEb2NvdW1lbnREZWZpbml0aW9uOiBQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKSA9PiAoe1xuICAgICAgICAuLi5wcm9jZXNzRG9jb3VtZW50RGVmaW5pdGlvbixcbiAgICAgICAgZGlzcGxheU5hbWU6XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocHJvY2Vzc0RvY291bWVudERlZmluaXRpb24/LmlkPy5wcm9jZXNzRGVmaW5pdGlvbktleSkgIT09XG4gICAgICAgICAgcHJvY2Vzc0RvY291bWVudERlZmluaXRpb24/LmlkPy5wcm9jZXNzRGVmaW5pdGlvbktleVxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChwcm9jZXNzRG9jb3VtZW50RGVmaW5pdGlvbi5pZC5wcm9jZXNzRGVmaW5pdGlvbktleSlcbiAgICAgICAgICAgIDogcHJvY2Vzc0RvY291bWVudERlZmluaXRpb24ucHJvY2Vzc05hbWUsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldFByb2Nlc3NEcm9wZG93bldpZHRoKCk6IHZvaWQge1xuICAgIGNvbnN0IGxvbmdlc3ROYW1lID0gdGhpcy5wcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5yZWR1Y2UoXG4gICAgICAoYWNjLCBjdXJyKSA9PlxuICAgICAgICAhIWN1cnIuZGlzcGxheU5hbWUgJiYgY3Vyci5kaXNwbGF5TmFtZS5sZW5ndGggPiBhY2MgPyBjdXJyLmRpc3BsYXlOYW1lLmxlbmd0aCA6IGFjYyxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgdGhpcy5kcm9wZG93bldpZHRoJC5uZXh0KFxuICAgICAgbG9uZ2VzdE5hbWUgPCAyMFxuICAgICAgICA/IERPU1NJRVJfREVUQUlMX1NUQVJUX1BST0NFU1NfRFJPUERPV05fV0lEVEguc21hbGxcbiAgICAgICAgOiBsb25nZXN0TmFtZSA8IDQwXG4gICAgICAgICAgPyBET1NTSUVSX0RFVEFJTF9TVEFSVF9QUk9DRVNTX0RST1BET1dOX1dJRFRILm1lZGl1bVxuICAgICAgICAgIDogRE9TU0lFUl9ERVRBSUxfU1RBUlRfUFJPQ0VTU19EUk9QRE9XTl9XSURUSC5sYXJnZVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cbjxkaXZcbiAgY2xhc3M9XCJtYWluLWNvbnRlbnRcIlxuICBbbmdDbGFzc109XCJ7J21haW4tY29udGVudC0tbm8taG9yaXpvbnRhbC1vdmVyZmxvdyc6IHRhYkhvcml6b250YWxPdmVyZmxvd0Rpc2FibGVkKCl9XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXNlVGFncyQgfCBhc3luYyBhcyBjYXNlVGFnc1wiPlxuICAgICAgQGlmIChjYXNlVGFncyAmJiBjYXNlVGFncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjaW5nLWNhc2UtdGFnc1wiPlxuICAgICAgICAgIEBmb3IgKHRhZyBvZiBjYXNlVGFnczsgdHJhY2sgdGFnKSB7XG4gICAgICAgICAgICA8Y2RzLXRhZyBzaXplPVwic21cIiBbdHlwZV09XCJ0YWcudGFnVHlwZVwiPlxuICAgICAgICAgICAgICB7eyB0YWcudGl0bGUgfX1cbiAgICAgICAgICAgIDwvY2RzLXRhZz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYnNcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdGFicz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ7YWN0aXZlVGFiOiBhY3RpdmVUYWIkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICAgICAgICA8Y2RzLXRhYnMgKm5nSWY9XCJ0YWJMb2FkZXJcIiB0eXBlPVwiaW5saW5lXCIgY2xhc3M9XCJjYXNlLWRldGFpbC10YWJzXCI+XG4gICAgICAgICAgPGNkcy10YWJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiTG9hZGVyLnRhYnNcIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJ0YWIubmFtZSA9PT0gKGFjdGl2ZVRhYk5hbWUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIGhlYWRpbmc9XCJ7eyB0YWIgfCB0YWJUcmFuc2xhdGUgfCBhc3luYyB9fVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25UYWJTZWxlY3RlZCh0YWIsIG9icy5hY3RpdmVUYWIpXCJcbiAgICAgICAgICA+PC9jZHMtdGFiPlxuICAgICAgICA8L2Nkcy10YWJzPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICAjdGFiQ29udGVudENvbnRhaW5lclxuICAgICAgY2xhc3M9XCJ0YWItY29udGVudC1jb250YWluZXJcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGFiLWNvbnRlbnQtY29udGFpbmVyLS1kYXJrJzogaXNEYXJrTW9kZSQgfCBhc3luYyxcbiAgICAgICAgJ3RhYi1jb250ZW50LWNvbnRhaW5lci0tY29tcGFjdCc6IGNvbXBhY3RNb2RlJCB8IGFzeW5jLFxuICAgICAgfVwiXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgbm9UYWJzQ29uZmlndXJlZDogbm9UYWJzQ29uZmlndXJlZCQgfCBhc3luYyxcbiAgICAgICAgc2hvd1Rhc2tMaXN0OiBzaG93VGFza0xpc3QkIHwgYXN5bmMsXG4gICAgICAgIHNob3dOb0FjY2Vzczogc2hvd05vQWNjZXNzJCB8IGFzeW5jLFxuICAgICAgICBkb3NzaWVyRGV0YWlsTGF5b3V0OiBkb3NzaWVyRGV0YWlsTGF5b3V0JCB8IGFzeW5jLFxuICAgICAgICBvcGVuVGFza0FuZFByb2Nlc3NMaW5rSW5Nb2RhbDogb3BlblRhc2tBbmRQcm9jZXNzTGlua0luTW9kYWwkIHwgYXN5bmMsXG4gICAgICAgIHRhc2tBbmRQcm9jZXNzTGlua09wZW5lZEluUGFuZWw6IHRhc2tBbmRQcm9jZXNzTGlua09wZW5lZEluUGFuZWwkIHwgYXN5bmMsXG4gICAgICB9IGFzIHRhYkNvbnRlbnRPYnNcIlxuICAgID5cbiAgICAgIDxhcy1zcGxpdFxuICAgICAgICBkaXJlY3Rpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0YWJDb250ZW50T2JzLmRvc3NpZXJEZXRhaWxMYXlvdXQud2lkdGhBZGp1c3RhYmxlXCJcbiAgICAgICAgW2d1dHRlclNpemVdPVwiRE9TU0lFUl9ERVRBSUxfR1VUVEVSX1NJWkVcIlxuICAgICAgICBbdW5pdF09XCJ0YWJDb250ZW50T2JzLmRvc3NpZXJEZXRhaWxMYXlvdXQudW5pdFwiXG4gICAgICA+XG4gICAgICAgIDxhcy1zcGxpdC1hcmVhXG4gICAgICAgICAgW3NpemVdPVwidGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LmxlZnRQYW5lbFdpZHRoXCJcbiAgICAgICAgICBbbWluU2l6ZV09XCJ0YWJDb250ZW50T2JzLmRvc3NpZXJEZXRhaWxMYXlvdXQubGVmdFBhbmVsTWluV2lkdGhcIlxuICAgICAgICAgIFttYXhTaXplXT1cInRhYkNvbnRlbnRPYnMuZG9zc2llckRldGFpbExheW91dC5sZWZ0UGFuZWxNYXhXaWR0aFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBiZy13aGl0ZSBwLTUgcG9zaXRpb24tcmVsYXRpdmUgdGFiLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbY2xhc3MudGFiLWNvbnRhaW5lci0tY29tcGFjdF09XCJjb21wYWN0TW9kZSQgfCBhc3luY1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImxvYWRpbmdUYWJzJCB8IGFzeW5jXCIgY2xhc3M9XCJsb2FkaW5nLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICAgICpuZ0lmPVwidGFiQ29udGVudE9icy5zaG93Tm9BY2Nlc3NcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cInt7ICdkb3NzaWVyLm5vQWNjZXNzLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ2Rvc3NpZXIubm9BY2Nlc3MudGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgaWxsdXN0cmF0aW9uPVwidmFsdGltby1sYXlvdXQvaW1nL2VtcHR5c3RhdGUtbm90LWF1dGhvcmlzZWQuc3ZnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gICAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICAgICpuZ0lmPVwidGFiQ29udGVudE9icy5ub1RhYnNDb25maWd1cmVkXCJcbiAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLnRhYnMubm9SZXN1bHRzRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidkb3NzaWVyLnRhYnMubm9SZXN1bHRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGFiQ29udGFpbmVyPjwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzLXNwbGl0LWFyZWE+XG5cbiAgICAgICAgPGFzLXNwbGl0LWFyZWFcbiAgICAgICAgICAqbmdJZj1cInRhYkNvbnRlbnRPYnMuZG9zc2llckRldGFpbExheW91dC5zaG93UmlnaHRQYW5lbFwiXG4gICAgICAgICAgW3NpemVdPVwidGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LnJpZ2h0UGFuZWxXaWR0aFwiXG4gICAgICAgICAgW21pblNpemVdPVwidGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LnJpZ2h0UGFuZWxNaW5XaWR0aFwiXG4gICAgICAgICAgW21heFNpemVdPVwidGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LnJpZ2h0UGFuZWxNYXhXaWR0aFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKHRhYkNvbnRlbnRPYnMuc2hvd1Rhc2tMaXN0KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFzay1wYW5lbFwiPlxuICAgICAgICAgICAgICBAaWYgKCF0YWJDb250ZW50T2JzLnRhc2tBbmRQcm9jZXNzTGlua09wZW5lZEluUGFuZWwpIHtcbiAgICAgICAgICAgICAgICA8dmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWxpc3RcbiAgICAgICAgICAgICAgICAgIFtvcGVuVGFza0FuZFByb2Nlc3NMaW5rSW5Nb2RhbF09XCJ0YWJDb250ZW50T2JzLm9wZW5UYXNrQW5kUHJvY2Vzc0xpbmtJbk1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICh0YXNrQ2xpY2tFdmVudCk9XCJvblRhc2tDbGlja0V2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgKGZvcm1TdWJtaXRFdmVudCk9XCJvbkZvcm1TdWJtaXRFdmVudCgpXCJcbiAgICAgICAgICAgICAgICA+PC92YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stbGlzdD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIEBpZiAodGFiQ29udGVudE9icy50YXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsKSB7XG4gICAgICAgICAgICAgICAgPHZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWxcbiAgICAgICAgICAgICAgICAgIFt0YXNrQW5kUHJvY2Vzc0xpbmtdPVwidGFiQ29udGVudE9icy50YXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsXCJcbiAgICAgICAgICAgICAgICAgIChhY3RpdmVDaGFuZ2UpPVwib25BY3RpdmVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChjbG9zZUV2ZW50KT1cIm9uVGFza0RldGFpbHNDbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgIChmb3JtU3VibWl0KT1cIm9uRm9ybVN1Ym1pdEV2ZW50KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWw+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9hcy1zcGxpdC1hcmVhPlxuICAgICAgPC9hcy1zcGxpdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHZhbHRpbW8tZG9zc2llci1zdXBwb3J0aW5nLXByb2Nlc3Mtc3RhcnQtbW9kYWxcbiAgICBbaXNBZG1pbl09XCJpc0FkbWluJCB8IGFzeW5jXCJcbiAgICAoZm9ybVN1Ym1pdCk9XCJ0YWJMb2FkZXIucmVmcmVzaFZpZXcoKVwiXG4gICAgI3N1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbFxuICA+PC92YWx0aW1vLWRvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FzZURldGFpbEhlYWRlclxuICBsZXQtY2FuSGF2ZUFzc2lnbmVlPVwiY2FuSGF2ZUFzc2lnbmVlXCJcbiAgbGV0LWRvY3VtZW50PVwiZG9jdW1lbnRcIlxuICBsZXQtY2FuQXNzaWduPVwiY2FuQXNzaWduXCJcbj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiKGN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcyB8fCBbXSkubGVuZ3RoID4gMFwiPlxuICAgIDxzcGFuXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjdXN0b21Eb3NzaWVySGVhZGVySXRlbXNcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICBoMTogaXRlbS50ZXh0U2l6ZSA9PT0gJ3hsJyxcbiAgICAgICAgaDI6IGl0ZW0udGV4dFNpemUgPT09ICdsZycsXG4gICAgICAgIGgzOiBpdGVtLnRleHRTaXplID09PSAnbWQnLFxuICAgICAgICBoNDogaXRlbS50ZXh0U2l6ZSA9PT0gJ3NtJyxcbiAgICAgICAgaDU6IGl0ZW0udGV4dFNpemUgPT09ICd4cycsXG4gICAgICB9XCJcbiAgICAgIGNsYXNzPVwibWItMCBtdC0wIGFsaWduLXNlbGYtZW5kIGNvbC14bC17eyBpdGVtLmNvbHVtblNpemUgfX0gY29sLWxnLXt7XG4gICAgICAgIGl0ZW0uY29sdW1uU2l6ZSAqIDJcbiAgICAgIH19IHt7IGl0ZW0uY3VzdG9tQ2xhc3MgfX1cIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS5sYWJlbCAmJiBpdGVtLnZhbHVlXCI+OiA8L3NwYW4+XG5cbiAgICAgIDxzdHJvbmc+e3sgaXRlbS52YWx1ZSB9fTwvc3Ryb25nPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICBjYXNlRGV0YWlsQXNzaWduZWU7XG4gICAgICBjb250ZXh0OiB7Y2FuSGF2ZUFzc2lnbmVlOiBjYW5IYXZlQXNzaWduZWUsIGRvY3VtZW50OiBkb2N1bWVudCwgY2FuQXNzaWduOiBjYW5Bc3NpZ259XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlXG4gICNjYXNlRGV0YWlsQXNzaWduZWVcbiAgbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiXG4gIGxldC1kb2N1bWVudD1cImRvY3VtZW50XCJcbiAgbGV0LWNhbkFzc2lnbj1cImNhbkFzc2lnblwiXG4+XG4gIDxkaXYgKm5nSWY9XCJjYW5IYXZlQXNzaWduZWUgJiYgZG9jdW1lbnRcIj5cbiAgICA8dmFsdGltby1kb3NzaWVyLWFzc2lnbi11c2VyXG4gICAgICAqbmdJZj1cImNhbkFzc2lnbkxvYWRlZCQgfCBhc3luY1wiXG4gICAgICBbYXNzaWduZWVGdWxsTmFtZV09XCJkb2N1bWVudD8uYXNzaWduZWVGdWxsTmFtZVwiXG4gICAgICBbYXNzaWduZWVJZF09XCJkb2N1bWVudC5hc3NpZ25lZUlkXCJcbiAgICAgIFtkb2N1bWVudElkXT1cImRvY3VtZW50LmlkXCJcbiAgICAgIFtoYXNQZXJtaXNzaW9uXT1cImNhbkFzc2lnblwiXG4gICAgICAoYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKT1cImFzc2lnbm1lbnRPZkRvY3VtZW50Q2hhbmdlZCgpXCJcbiAgICA+PC92YWx0aW1vLWRvc3NpZXItYXNzaWduLXVzZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjbGFpbUJ1dHRvbiBsZXQtY2FuQ2xhaW09XCJjYW5DbGFpbVwiIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIj5cbiAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICpuZ0lmPVwiY2FuQ2xhaW0gJiYgY2FuSGF2ZUFzc2lnbmVlXCJcbiAgICBbZGlzYWJsZWRdPVwiKGlzQXNzaWduaW5nJCB8IGFzeW5jKSB8fCAoaXNBc3NpZ25lZFRvQ3VycmVudFVzZXIkIHwgYXN5bmMpXCJcbiAgICAoY2xpY2spPVwiY2xhaW1Bc3NpZ25lZSgpXCJcbiAgPlxuICAgIHt7ICdkb3NzaWVyLmNsYWltQXNzaWduZWVDYXNlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Nkcy1vdmVyZmxvdy1tZW51LW9wdGlvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdW5hc3NpZ25CdXR0b24gbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiIGxldC1hc3NpZ25lZUlkPVwiYXNzaWduZWVJZFwiPlxuICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgKm5nSWY9XCJjYW5IYXZlQXNzaWduZWVcIlxuICAgIFtkaXNhYmxlZF09XCIhYXNzaWduZWVJZFwiXG4gICAgKHNlbGVjdGVkKT1cInVuYXNzaWduQXNzaWduZWUoKVwiXG4gID5cbiAgICB7eyAnYXNzaWduRG9jdW1lbnQucmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Nkcy1vdmVyZmxvdy1tZW51LW9wdGlvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVsZXRlQnV0dG9uIGxldC1jYW5EZWxldGU9XCJjYW5EZWxldGVcIj5cbiAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICpuZ0lmPVwiY2FuRGVsZXRlXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNEZWxldGluZyQgfCBhc3luY1wiXG4gICAgKGNsaWNrKT1cImRlbGV0ZURvY3VtZW50KClcIlxuICAgIHR5cGU9XCJkYW5nZXJcIlxuICA+XG4gICAge3sgJ2Rvc3NpZXIuZGVsZXRlLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2N1c3RvbVN0YXJ0VHJpZ2dlcj5cbiAgPGJ1dHRvblxuICAgIFtzaXplXT1cIihjb21wYWN0TW9kZSQgfCBhc3luYykgPyAnc20nIDogJ2xnJ1wiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgW2Rpc2FibGVkXT1cInByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMFwiXG4gICAgW25nYlRvb2x0aXBdPVwicHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwID8gJ05vIGFjdGlvbicgOiBudWxsXCJcbiAgPlxuICAgIHt7ICdkb3NzaWVyLnN0YXJ0U3ViUHJvY2VzcycgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJjaGV2cm9uLS1kb3duXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRlbGV0ZS5jb25maXJtXCJcbiAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRlbGV0ZS5kZXNjcmlwdGlvblwiXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93RGVsZXRlTW9kYWwkXCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRvc3NpZXIuZGVsZXRlLmRlbGV0ZVwiXG4gIChjb25maXJtRXZlbnQpPVwib25Db25maXJtRGVsZXRlKClcIlxuPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy1jb250YWluZXIgcmVuZGVySW5QYWdlSGVhZGVyIFtmdWxsV2lkdGhdPVwidHJ1ZVwiPlxuICA8bmctdGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkb3NzaWVyLWFjdGlvbnNcIlxuICAgICAgW25nQ2xhc3NdPVwieyctLWNvbXBhY3QnOiBjb21wYWN0TW9kZSQgfCBhc3luY31cIlxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIGFzc2lnbmVlSWQ6IGFzc2lnbmVlSWQkIHwgYXN5bmMsXG4gICAgICAgIGNhbkFzc2lnbjogY2FuQXNzaWduJCB8IGFzeW5jLFxuICAgICAgICBjYW5DbGFpbTogY2FuQ2xhaW0kIHwgYXN5bmMsXG4gICAgICAgIGNhbkhhdmVBc3NpZ25lZTogY2FuSGF2ZUFzc2lnbmVlJCB8IGFzeW5jLFxuICAgICAgICBjYW5EZWxldGU6IGNhbkRlbGV0ZSQgfCBhc3luYyxcbiAgICAgICAgZG9jdW1lbnQ6IGRvY3VtZW50JCB8IGFzeW5jLFxuICAgICAgICBjYXNlU3RhdHVzOiBjYXNlU3RhdHVzJCB8IGFzeW5jLFxuICAgICAgfSBhcyBvYnNcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJkb3NzaWVyLXN0YXR1cy1hc3NpZ24tY3VzdG9tLXRpdGxlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyctLWNvbXBhY3QnOiBjb21wYWN0TW9kZSQgfCBhc3luY31cIlxuICAgICAgPlxuICAgICAgICBAaWYgKG9icy5jYXNlU3RhdHVzKSB7XG4gICAgICAgICAgPGNkcy10YWcgc2l6ZT1cInNtXCIgW3R5cGVdPVwib2JzLmNhc2VTdGF0dXMudGFnVHlwZVwiIFt0aXRsZV09XCJvYnMuY2FzZVN0YXR1cy50aXRsZVwiPnt7XG4gICAgICAgICAgICBvYnMuY2FzZVN0YXR1cy50aXRsZVxuICAgICAgICAgIH19PC9jZHMtdGFnPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvc3NpZXItYXNzaWduLXVzZXJcIiBbbmdDbGFzc109XCJ7Jy0tY29tcGFjdCc6IGNvbXBhY3RNb2RlJCB8IGFzeW5jfVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGNhc2VEZXRhaWxBc3NpZ25lZTtcbiAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIGNhbkhhdmVBc3NpZ25lZTogb2JzLmNhbkhhdmVBc3NpZ25lZSxcbiAgICAgICAgICAgICAgICBkb2N1bWVudDogb2JzLmRvY3VtZW50LFxuICAgICAgICAgICAgICAgIGNhbkFzc2lnbjogb2JzLmNhbkFzc2lnbixcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXNlRGV0YWlsSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudVxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnLS1jb21wYWN0JzogY29tcGFjdE1vZGUkIHwgYXN5bmN9XCJcbiAgICAgICAgICAqbmdJZj1cIm9icy5jYW5IYXZlQXNzaWduZWUgfHwgb2JzLmNhbkRlbGV0ZVwiXG4gICAgICAgICAgZmxpcD1cInRydWVcIlxuICAgICAgICAgIFtvZmZzZXRdPVwiKGNvbXBhY3RNb2RlJCB8IGFzeW5jKSA/IHt5OiA0OCwgeDogLTR9IDoge3k6IDQ4LCB4OiA0fVwiXG4gICAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy1idXR0b24gYXNzaWduLW92ZXJmbG93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIGNsYWltQnV0dG9uO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7Y2FuQ2xhaW06IG9icy5jYW5DbGFpbSwgY2FuSGF2ZUFzc2lnbmVlOiBvYnMuY2FuSGF2ZUFzc2lnbmVlfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgdW5hc3NpZ25CdXR0b247XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtjYW5IYXZlQXNzaWduZWU6IG9icy5jYW5IYXZlQXNzaWduZWUsIGFzc2lnbmVlSWQ6IG9icy5hc3NpZ25lZUlkfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlbGV0ZUJ1dHRvbjsgY29udGV4dDoge2NhbkRlbGV0ZTogb2JzLmNhbkRlbGV0ZX1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudT5cblxuICAgICAgICA8Y2RzLW92ZXJmbG93LW1lbnVcbiAgICAgICAgICB2YWx0aW1vQ2RzT3ZlcmZsb3dCdXR0b25cbiAgICAgICAgICBbbmdDbGFzc109XCJ7Jy0tY29tcGFjdCc6IGNvbXBhY3RNb2RlJCB8IGFzeW5jfVwiXG4gICAgICAgICAgW3dpZHRoXT1cImRyb3Bkb3duV2lkdGgkIHwgYXN5bmNcIlxuICAgICAgICAgIFtjdXN0b21UcmlnZ2VyXT1cImN1c3RvbVN0YXJ0VHJpZ2dlclwiXG4gICAgICAgICAgW29mZnNldF09XCJ7eTogNDgsIHg6IDM1fVwiXG4gICAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy1idXR0b24gY2FzZS1kZXRhaWwtb3ZlcmZsb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24gb2YgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5kaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic3RhcnRQcm9jZXNzKHByb2Nlc3NEb2N1bWVudERlZmluaXRpb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uLmRpc3BsYXlOYW1lIH19XG4gICAgICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG4gICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
479
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL2Rvc3NpZXItZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFFTCxTQUFTLEVBR1QsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFpQixlQUFlLEVBQTJCLE1BQU0saUJBQWlCLENBQUM7QUFDMUYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUc1QyxPQUFPLEVBRUwsZ0JBQWdCLEVBRWhCLGtCQUFrQixFQUdsQix1QkFBdUIsR0FDeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBR0wsYUFBYSxFQUliLHVCQUF1QixHQUV4QixNQUFNLG1CQUFtQixDQUFDO0FBSTNCLE9BQU8sRUFBYyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTNFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRSxNQUFNLE1BQU0sQ0FBQztBQUMxSSxP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aEIsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLE1BQU07Z0JBQ3BELENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxLQUFLLENBQ3hELENBQUM7SUFDSixDQUFDOytHQS9tQlUsc0JBQXNCLDBzQkFtUHZCLFFBQVE7bUdBblBQLHNCQUFzQixpREFGdEIsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQywrT0FTN0MsZ0JBQWdCLGtLQzFGcEQsKytYQThVQTs7NEZEM1BhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkIsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQzs7MEJBcVA1RSxNQUFNOzJCQUFDLFFBQVE7eUNBOU9sQixzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsNkJBQTZCO2dCQUl4QyxnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBSWxDLG9CQUFvQjtzQkFEcEMsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvblN0YXJ0LCBQYXJhbU1hcCwgUGFyYW1zLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0NoZXZyb25Eb3duMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7XG4gIEJyZWFkY3J1bWJTZXJ2aWNlLFxuICBDQVJCT05fQ09OU1RBTlRTLFxuICBDZHNUaGVtZVNlcnZpY2UsXG4gIEN1cnJlbnRDYXJib25UaGVtZSxcbiAgUGFnZUhlYWRlclNlcnZpY2UsXG4gIFBhZ2VUaXRsZVNlcnZpY2UsXG4gIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50LFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7XG4gIENhc2VTdGF0dXNTZXJ2aWNlLFxuICBDYXNlVGFnLFxuICBDYXNlVGFnc1V0aWxzLFxuICBEb2N1bWVudCBhcyBWYWx0aW1vRG9jdW1lbnQsXG4gIERvY3VtZW50U2VydmljZSxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzLFxuICBJbnRlcm5hbENhc2VTdGF0dXNVdGlscyxcbiAgUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbixcbn0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtUYXNrV2l0aFByb2Nlc3NMaW5rfSBmcm9tICdAdmFsdGltby9wcm9jZXNzLWxpbmsnO1xuaW1wb3J0IHtVc2VyUHJvdmlkZXJTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5pbXBvcnQge0ludGVybWVkaWF0ZVN1Ym1pc3Npb259IGZyb20gJ0B2YWx0aW1vL3Rhc2snO1xuaW1wb3J0IHtJY29uU2VydmljZSwgTm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0tleWNsb2FrU2VydmljZX0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzdGFydFdpdGgsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlLCB0YXAsfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERPU1NJRVJfREVUQUlMX0RFRkFVTFRfRElTUExBWV9TSVpFLFxuICBET1NTSUVSX0RFVEFJTF9ERUZBVUxUX0RJU1BMQVlfVFlQRSxcbiAgRE9TU0lFUl9ERVRBSUxfR1VUVEVSX1NJWkUsXG4gIERPU1NJRVJfREVUQUlMX1NUQVJUX1BST0NFU1NfRFJPUERPV05fV0lEVEgsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1RhYkltcGwsIFRhYkxvYWRlckltcGx9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBDQU5fQVNTSUdOX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX0NMQUlNX0NBU0VfUEVSTUlTU0lPTixcbiAgQ0FOX0RFTEVURV9DQVNFX1BFUk1JU1NJT04sXG4gIENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTixcbiAgRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbn0gZnJvbSAnLi4vLi4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtEb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZSwgRG9zc2llclNlcnZpY2UsIERvc3NpZXJUYWJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0Rvc3NpZXJTdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxDb21wb25lbnR9IGZyb20gJy4uL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsL2Rvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1dpZGdldHNTZXJ2aWNlfSBmcm9tICcuL3RhYi93aWRnZXRzL3dpZGdldHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLWRldGFpbC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtEb3NzaWVyVGFiU2VydmljZSwgRG9zc2llckRldGFpbExheW91dFNlcnZpY2UsIE5vdGlmaWNhdGlvblNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsQ29tcG9uZW50XG4gIGV4dGVuZHMgUGVuZGluZ0NoYW5nZXNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgnc3VwcG9ydGluZ1Byb2Nlc3NTdGFydE1vZGFsJylcbiAgc3VwcG9ydGluZ1Byb2Nlc3NTdGFydDogRG9zc2llclN1cHBvcnRpbmdQcm9jZXNzU3RhcnRNb2RhbENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0YWJDb250YWluZXInLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXG4gIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudENvbnRhaW5lcicpXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYkNvbnRlbnRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwdWJsaWMgY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zOiBBcnJheTxhbnk+ID0gW107XG4gIHB1YmxpYyBkb2N1bWVudDogVmFsdGltb0RvY3VtZW50IHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBkb2N1bWVudERlZmluaXRpb25OYW1lVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uTGlzdEZpZWxkczogQXJyYXk8YW55PiA9IFtdO1xuICBwdWJsaWMgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IChQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uICYge2Rpc3BsYXlOYW1lPzogc3RyaW5nfSlbXSA9IFtdO1xuICBwdWJsaWMgdGFiTG9hZGVyOiBUYWJMb2FkZXJJbXBsIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFzc2lnbmVlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRJbnRlcm1lZGlhdGVTYXZlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJtZWRpYXRlU3VibWlzc2lvbiB8IG51bGw+KFxuICAgIG51bGxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzQWRtaW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlXG4gICAgLmdldFVzZXJTdWJqZWN0KClcbiAgICAucGlwZShtYXAodXNlcklkZW50aXR5ID0+IHVzZXJJZGVudGl0eT8ucm9sZXM/LmluY2x1ZGVzKCdST0xFX0FETUlOJykpKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbCQgPVxuICAgIHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2UudGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbCQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2FzZVN0YXR1c0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGwgfCAnTk9UX0FWQUlMQUJMRSc+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90YXNrUGFuZWxUb2dnbGUgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZVRhc2tQYW5lbDtcblxuICBwdWJsaWMgcmVhZG9ubHkgZHJvcGRvd25XaWR0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oXG4gICAgRE9TU0lFUl9ERVRBSUxfU1RBUlRfUFJPQ0VTU19EUk9QRE9XTl9XSURUSC5zbWFsbFxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZVN0YXR1c0tleSQ6IE9ic2VydmFibGU8c3RyaW5nIHwgJ05PVF9BVkFJTEFCTEUnPiA9IHRoaXMuX2Nhc2VTdGF0dXNLZXkkLnBpcGUoXG4gICAgZmlsdGVyKGtleSA9PiAhIWtleSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgX2Nhc2VUYWdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FzZVRhZ1tdIHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dEZWxldGVNb2RhbCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5WaWV3JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogRE9TU0lFUl9ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS5qc29uU2NoZW1hRG9jdW1lbnQsXG4gICAgICAgIGlkZW50aWZpZXI6IHBhcmFtcy5nZXQoJ2RvY3VtZW50SWQnKSA/PyAnJyxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudCQ6IE9ic2VydmFibGU8VmFsdGltb0RvY3VtZW50IHwgbnVsbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvc3NpZXJTZXJ2aWNlLnJlZnJlc2hEb2N1bWVudCQsXG4gICAgdGhpcy5jYW5WaWV3JCxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtfLCBjYW5WaWV3XSkgPT4gY2FuVmlldyksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucm91dGUucGFyYW1zKSxcbiAgICBtYXAoKHBhcmFtczogUGFyYW1zKSA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgIHN3aXRjaE1hcCgoZG9jdW1lbnRJZDogc3RyaW5nKSA9PlxuICAgICAgZG9jdW1lbnRJZCA/IHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldERvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCkgOiBvZihudWxsKVxuICAgICksXG4gICAgdGFwKChkb2N1bWVudDogVmFsdGltb0RvY3VtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50KSB7XG4gICAgICAgIHRoaXMuYXNzaWduZWVJZCQubmV4dChkb2N1bWVudC5hc3NpZ25lZUlkKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLl9jYXNlU3RhdHVzS2V5JC5uZXh0KGRvY3VtZW50Py5pbnRlcm5hbFN0YXR1cyB8fCAnTk9UX0FWQUlMQUJMRScpO1xuICAgICAgICB0aGlzLl9jYXNlVGFncyQubmV4dChkb2N1bWVudD8uY2FzZVRhZ3MgfHwgbnVsbCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcuY3VzdG9tRG9zc2llckhlYWRlcj8uaGFzT3duUHJvcGVydHkoXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICkgJiZcbiAgICAgICAgICB0aGlzLmN1c3RvbURvc3NpZXJIZWFkZXJJdGVtcy5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZy5jdXN0b21Eb3NzaWVySGVhZGVyW1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICBdPy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5nZXRDdXN0b21Eb3NzaWVySGVhZGVySXRlbShpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5yb3V0ZS5wYXJhbXMucGlwZShcbiAgICBtYXAocGFyYW1zID0+IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lIHx8ICcnKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYXNlU3RhdHVzJDogT2JzZXJ2YWJsZTxJbnRlcm5hbENhc2VTdGF0dXMgfCB1bmRlZmluZWQ+ID1cbiAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgICBmaWx0ZXIoZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9PiAhIWRvY3VtZW50RGVmaW5pdGlvbk5hbWUpLFxuICAgICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5jYXNlU3RhdHVzU2VydmljZS5nZXRJbnRlcm5hbENhc2VTdGF0dXNlcyhkb2N1bWVudERlZmluaXRpb25OYW1lKSxcbiAgICAgICAgICB0aGlzLmNhc2VTdGF0dXNLZXkkLFxuICAgICAgICBdKVxuICAgICAgKSxcbiAgICAgIG1hcChcbiAgICAgICAgKFtzdGF0dXNlcywga2V5XSkgPT4ga2V5ICE9PSAnTk9UX0FWQUlMQUJMRScgJiYgc3RhdHVzZXMuZmluZChzdGF0dXMgPT4gc3RhdHVzPy5rZXkgPT09IGtleSlcbiAgICAgICksXG4gICAgICBtYXAoXG4gICAgICAgIHN0YXR1cyA9PlxuICAgICAgICAgIHN0YXR1cyAmJiB7XG4gICAgICAgICAgICAuLi5zdGF0dXMsXG4gICAgICAgICAgICB0YWdUeXBlOiBJbnRlcm5hbENhc2VTdGF0dXNVdGlscy5nZXRUYWdUeXBlRnJvbUludGVybmFsQ2FzZVN0YXR1c0NvbG9yKHN0YXR1cy5jb2xvciksXG4gICAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhc2VUYWdzJDogT2JzZXJ2YWJsZTxDYXNlVGFnW10gfCB1bmRlZmluZWQ+ID0gdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lJC5waXBlKFxuICAgIGZpbHRlcihkb2N1bWVudERlZmluaXRpb25OYW1lID0+ICEhZG9jdW1lbnREZWZpbml0aW9uTmFtZSksXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT4gdGhpcy5fY2FzZVRhZ3MkKSxcbiAgICBtYXAoXG4gICAgICB0YWcgPT5cbiAgICAgICAgdGFnICYmXG4gICAgICAgIHRhZy5tYXAoY2FzZVRhZyA9PiAoe1xuICAgICAgICAgIC4uLmNhc2VUYWcsXG4gICAgICAgICAgdGFnVHlwZTogQ2FzZVRhZ3NVdGlscy5nZXRUYWdUeXBlRnJvbUNhc2VUYWdDb2xvcihjYXNlVGFnLmNvbG9yKSxcbiAgICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB1c2VySWQkOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4gPSBvZihcbiAgICB0aGlzLmtleUNsb2FrU2VydmljZS5pc0xvZ2dlZEluKClcbiAgKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmtleUNsb2FrU2VydmljZS5sb2FkVXNlclByb2ZpbGUoKSksXG4gICAgbWFwKHByb2ZpbGUgPT4gcHJvZmlsZT8uaWQpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQXNzaWduaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBc3NpZ25lZFRvQ3VycmVudFVzZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hc3NpZ25lZUlkJCxcbiAgICB0aGlzLnVzZXJJZCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbYXNzaWduZWVJZCwgdXNlcklkXSkgPT4gISFhc3NpZ25lZUlkICYmICEhdXNlcklkICYmIGFzc2lnbmVlSWQgPT09IHVzZXJJZCksXG4gICAgc3RhcnRXaXRoKHRydWUpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhbkhhdmVBc3NpZ25lZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgPT5cbiAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmdldENhc2VTZXR0aW5ncyhkb2N1bWVudERlZmluaXRpb25OYW1lKVxuICAgICksXG4gICAgbWFwKGNhc2VTZXR0aW5ncyA9PiBjYXNlU2V0dGluZ3M/LmNhbkhhdmVBc3NpZ25lZSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FuQXNzaWduTG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuQXNzaWduJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucm91dGUucGFyYW1NYXAucGlwZShcbiAgICBzd2l0Y2hNYXAoKHBhcmFtczogUGFyYW1NYXApID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9BU1NJR05fQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgaWRlbnRpZmllcjogcGFyYW1zLmdldCgnZG9jdW1lbnRJZCcpID8/ICcnLFxuICAgICAgfSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbkFzc2lnbkxvYWRlZCQubmV4dCh0cnVlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5DbGFpbSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJvdXRlLnBhcmFtTWFwLnBpcGUoXG4gICAgc3dpdGNoTWFwKChwYXJhbXM6IFBhcmFtTWFwKSA9PlxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5yZXF1ZXN0UGVybWlzc2lvbihDQU5fQ0xBSU1fQ0FTRV9QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBET1NTSUVSX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgaWRlbnRpZmllcjogcGFyYW1zLmdldCgnZG9jdW1lbnRJZCcpID8/ICcnLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRGVsZXRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5EZWxldGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yb3V0ZS5wYXJhbU1hcC5waXBlKFxuICAgIHN3aXRjaE1hcCgocGFyYW1zOiBQYXJhbU1hcCkgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0RFTEVURV9DQVNFX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IERPU1NJRVJfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UuanNvblNjaGVtYURvY3VtZW50LFxuICAgICAgICBpZGVudGlmaWVyOiBwYXJhbXMuZ2V0KCdkb2N1bWVudElkJykgPz8gJycsXG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1RhYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IG5vVGFic0NvbmZpZ3VyZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Tm9BY2Nlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBhY3RpdmVUYWIkOiBPYnNlcnZhYmxlPFRhYkltcGw+O1xuXG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0TW9kZSQgPSB0aGlzLnBhZ2VIZWFkZXJTZXJ2aWNlLmNvbXBhY3RNb2RlJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFiSG9yaXpvbnRhbE92ZXJmbG93RGlzYWJsZWQgPVxuICAgIHRoaXMuZG9zc2llclRhYlNlcnZpY2UudGFiSG9yaXpvbnRhbE92ZXJmbG93RGlzYWJsZWQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dUYXNrTGlzdCQgPSB0aGlzLmRvc3NpZXJUYWJTZXJ2aWNlLnNob3dUYXNrTGlzdCQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlVGFiTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgZ2V0IGFjdGl2ZVRhYk5hbWUkKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnJvdXRlLnBhcmFtTWFwLCB0aGlzLl9hY3RpdmVUYWJOYW1lJF0pLnBpcGUoXG4gICAgICBtYXAoKFtwYXJhbU1hcCwgYWN0aXZlVGFiTmFtZV0pID0+XG4gICAgICAgICFhY3RpdmVUYWJOYW1lID8gKHBhcmFtTWFwLmdldCgndGFiJykgPz8gbnVsbCkgOiBhY3RpdmVUYWJOYW1lXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBET1NTSUVSX0RFVEFJTF9HVVRURVJfU0laRSA9IERPU1NJRVJfREVUQUlMX0dVVFRFUl9TSVpFO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb3NzaWVyRGV0YWlsTGF5b3V0JCA9IHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2UuZG9zc2llckRldGFpbExheW91dCQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5UYXNrQW5kUHJvY2Vzc0xpbmtJbk1vZGFsJCA9IG5ldyBTdWJqZWN0PFRhc2tXaXRoUHJvY2Vzc0xpbms+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRGFya01vZGUkID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcChjdXJyZW50VGhlbWUgPT4gY3VycmVudFRoZW1lID09PSBDdXJyZW50Q2FyYm9uVGhlbWUuRzkwKVxuICApO1xuXG4gIHByaXZhdGUgX3NuYXBzaG90OiBQYXJhbU1hcDtcbiAgcHJpdmF0ZSBfaW5pdGlhbFRhYk5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfYWN0aXZlQ2hhbmdlID0gZmFsc2U7XG4gIHByaXZhdGUgX29sZFRhYk5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcGVuZGluZ1RhYjogVGFiSW1wbDtcbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcbiAgcHJpdmF0ZSBfdGFic0luaXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFkY3J1bWJTZXJ2aWNlOiBCcmVhZGNydW1iU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VTdGF0dXNTZXJ2aWNlOiBDYXNlU3RhdHVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRTZXJ2aWNlOiBEb2N1bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZTogRG9zc2llckRldGFpbExheW91dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyU2VydmljZTogRG9zc2llclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyVGFiU2VydmljZTogRG9zc2llclRhYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlDbG9ha1NlcnZpY2U6IEtleWNsb2FrU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VIZWFkZXJTZXJ2aWNlOiBQYWdlSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0c1NlcnZpY2U6IFdpZGdldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb3ZpZGVyU2VydmljZTogVXNlclByb3ZpZGVyU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGh0bWxEb2N1bWVudDogRG9jdW1lbnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9zbmFwc2hvdCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXA7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lID0gdGhpcy5fc25hcHNob3QuZ2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJykgfHwgJyc7XG4gICAgdGhpcy5kb2N1bWVudElkID0gdGhpcy5fc25hcHNob3QuZ2V0KCdkb2N1bWVudElkJykgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFRhYkxvYWRlcigpO1xuICAgIHRoaXMuaW5pdEJyZWFkY3J1bWIoKTtcbiAgICB0aGlzLm9wZW5XaWR0aE9ic2VydmVyKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmRpc2FibGVSZXNldCgpO1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0NoZXZyb25Eb3duMTZdKTtcbiAgICB0aGlzLnNldERvY3VtZW50U3R5bGUoKTtcbiAgICB0aGlzLmVuYWJsZVJlc2V0T25CYWNrTmF2aWdhdGlvbigpO1xuICAgIHRoaXMub3BlbldpZGdldFByb2Nlc3NTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLmNsZWFyU2Vjb25kQnJlYWRjcnVtYigpO1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5lbmFibGVSZXNldCgpO1xuICAgIHRoaXMucmVtb3ZlRG9jdW1lbnRTdHlsZSgpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxBc3NvY2lhdGVkUHJvY2Vzc0RlZmluaXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmZpbmRQcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uc0ZvckRvY3VtZW50KHRoaXMuZG9jdW1lbnRJZCwge1xuICAgICAgICAgIHN0YXJ0YWJsZUJ5VXNlcjogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgICAgXSkuc3Vic2NyaWJlKChbcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNdKSA9PiB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMgPSB0aGlzLm1hcFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zKFxuICAgICAgICAgIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0UHJvY2Vzc0Ryb3Bkb3duV2lkdGgoKTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uTGlzdEZpZWxkcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdwcm9jZXNzTmFtZScsXG4gICAgICAgICAgICBsYWJlbDogJ1Byb2NlcycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3VwcG9ydGluZ1Byb2Nlc3NTdGFydC5vcGVuTW9kYWwocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiwgdGhpcy5kb2N1bWVudElkKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuV2lkZ2V0UHJvY2Vzc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMud2lkZ2V0c1NlcnZpY2Uuc3RhcnRQcm9jZXNzRXZlbnRcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRoaXMud2lkZ2V0c1NlcnZpY2UuYWN0aXZlUHJvY2VzcyQpKVxuICAgICAgICAuc3Vic2NyaWJlKChwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uczogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbltdKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGFydFByb2Nlc3MocHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnNbMF0pO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xhaW1Bc3NpZ25lZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy51c2VySWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5hc3NpZ25IYW5kbGVyVG9Eb2N1bWVudCh0aGlzLmRvY3VtZW50SWQsIHVzZXJJZCA/PyAnJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmRvc3NpZXJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgYXNzaWduaW5nIHVzZXIgdG8gY2FzZScpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5hc3NpZ25Bc3NpZ25lZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzQXNzaWduaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy51c2VySWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCh1c2VySWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT5cbiAgICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS51bmFzc2lnbkhhbmRsZXJGcm9tRG9jdW1lbnQodGhpcy5kb2N1bWVudElkKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuaXNBc3NpZ25pbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSB1bmFzc2lnbmluZyB1c2VyIGZyb20gY2FzZScpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGVsZXRlTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25Db25maXJtRGVsZXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNEZWxldGluZyQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRvY3VtZW50U2VydmljZS5kZWxldGVEb2N1bWVudCh0aGlzLmRvY3VtZW50SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaXNEZWxldGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvZG9zc2llcnMvJHt0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWV9YF0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaXNEZWxldGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdTb21ldGhpbmcgd2VudCB3cm9uZyB3aGlsZSBkZWxldGluZyB0aGUgY2FzZScpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhc2tDbGlja0V2ZW50KHRhc2tQcm9jZXNzTGlua1Jlc3VsdDogVGFza1dpdGhQcm9jZXNzTGluayk6IHZvaWQge1xuICAgIGlmICghdGFza1Byb2Nlc3NMaW5rUmVzdWx0LnByb2Nlc3NMaW5rQWN0aXZpdHlSZXN1bHQpIHtcbiAgICAgIHRoaXMuaXNBZG1pbiQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaXNBZG1pbiA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlTm9UYXNrUHJvY2Vzc0xpbmsoaXNBZG1pbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNwbGF5VHlwZSA9XG4gICAgICB0YXNrUHJvY2Vzc0xpbmtSZXN1bHQucHJvY2Vzc0xpbmtBY3Rpdml0eVJlc3VsdC5wcm9wZXJ0aWVzLmZvcm1EaXNwbGF5VHlwZSB8fFxuICAgICAgRE9TU0lFUl9ERVRBSUxfREVGQVVMVF9ESVNQTEFZX1RZUEU7XG4gICAgY29uc3Qgc2l6ZSA9XG4gICAgICB0YXNrUHJvY2Vzc0xpbmtSZXN1bHQucHJvY2Vzc0xpbmtBY3Rpdml0eVJlc3VsdC5wcm9wZXJ0aWVzLmZvcm1TaXplIHx8XG4gICAgICBET1NTSUVSX0RFVEFJTF9ERUZBVUxUX0RJU1BMQVlfU0laRTtcblxuICAgIHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2Uuc2V0Rm9ybURpc3BsYXlTaXplKHNpemUpO1xuICAgIHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2Uuc2V0Rm9ybURpc3BsYXlUeXBlKGRpc3BsYXlUeXBlKTtcblxuICAgIGlmIChkaXNwbGF5VHlwZSA9PT0gJ3BhbmVsJyAmJiAhIXRoaXMuX3Rhc2tQYW5lbFRvZ2dsZSkge1xuICAgICAgdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5zZXRUYXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsKHRhc2tQcm9jZXNzTGlua1Jlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblRhc2tBbmRQcm9jZXNzTGlua0luTW9kYWwkLm5leHQoey4uLnRhc2tQcm9jZXNzTGlua1Jlc3VsdH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblRhc2tEZXRhaWxzQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5zZXRUYXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsKG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9uQWN0aXZlQ2hhbmdlRXZlbnQoZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVDaGFuZ2UgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBvblRhYlNlbGVjdGVkKHRhYjogVGFiSW1wbCwgYWN0aXZlVGFiOiBUYWJJbXBsKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYkxvYWRlcikgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLl90YWJzSW5pdCkge1xuICAgICAgdGhpcy5fdGFic0luaXQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29sZFRhYk5hbWUgPSBhY3RpdmVUYWIubmFtZTtcbiAgICB0aGlzLl9wZW5kaW5nVGFiID0gdGFiO1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUkLm5leHQodGFiLm5hbWUpO1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMgPVxuICAgICAgdGFiLmNvbnRlbnRLZXkgPT09ICdzdW1tYXJ5JyA/IGZhbHNlIDogIXRhYi5zaG93VGFza3MgJiYgdGhpcy5fYWN0aXZlQ2hhbmdlO1xuXG4gICAgaWYgKHRoaXMucGVuZGluZ0NoYW5nZXMpIHtcbiAgICAgIHRoaXMudGFiTG9hZGVyLnJlcGxhY2VVcmxTdGF0ZSh0YWIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGFiLnNob3dUYXNrcykgdGhpcy5vcGVuVGFza0FuZFByb2Nlc3NMaW5rSW5Nb2RhbCQubmV4dChudWxsKTtcbiAgICB0aGlzLnRhYkxvYWRlci5sb2FkKHRhYik7XG4gICAgdGhpcy5zZXREb2N1bWVudFN0eWxlKCk7XG4gIH1cblxuICBwdWJsaWMgb25Gb3JtU3VibWl0RXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5kb3NzaWVyRGV0YWlsTGF5b3V0U2VydmljZS5zZXRUYXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsKG51bGwpO1xuXG4gICAgaWYgKCF0aGlzLnRhYkxvYWRlcikgcmV0dXJuO1xuICAgIHRoaXMudGFiTG9hZGVyLnJlZnJlc2hWaWV3KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Db25maXJtUmVkaXJlY3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhYkxvYWRlciB8fCAhdGhpcy5fcGVuZGluZ1RhYikgcmV0dXJuO1xuICAgIHRoaXMuX2FjdGl2ZUNoYW5nZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FjdGl2ZVRhYk5hbWUkLm5leHQodGhpcy5fcGVuZGluZ1RhYi5uYW1lKTtcbiAgICB0aGlzLnRhYkxvYWRlci5sb2FkKHRoaXMuX3BlbmRpbmdUYWIpO1xuICAgIHRoaXMuZG9zc2llckRldGFpbExheW91dFNlcnZpY2Uuc2V0VGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbChudWxsKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNhbmNlbFJlZGlyZWN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy50YWJMb2FkZXIpIHJldHVybjtcbiAgICB0aGlzLl9hY3RpdmVUYWJOYW1lJC5uZXh0KHRoaXMuX29sZFRhYk5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnJlYWRjcnVtYigpOiB2b2lkIHtcbiAgICB0aGlzLmRvY3VtZW50U2VydmljZVxuICAgICAgLmdldERvY3VtZW50RGVmaW5pdGlvbih0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUpXG4gICAgICAuc3Vic2NyaWJlKGRlZmluaXRpb24gPT4ge1xuICAgICAgICB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWVUaXRsZSA9IGRlZmluaXRpb24uc2NoZW1hLnRpdGxlO1xuICAgICAgICB0aGlzLnNldEJyZWFkY3J1bWIoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGFiTG9hZGVyKCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZG9zc2llclRhYlNlcnZpY2UudGFicyQsIHRoaXMuY2FuVmlldyRdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKFt0YWJzLCBjYW5WaWV3XSkgPT4ge1xuICAgICAgICBpZiAoY2FuVmlldykge1xuICAgICAgICAgIGlmICh0YWJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsVGFiTmFtZSA9IHRoaXMuX3NuYXBzaG90LmdldCgndGFiJykgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLnRhYkxvYWRlciA9IG5ldyBUYWJMb2FkZXJJbXBsKFxuICAgICAgICAgICAgICB0YWJzLFxuICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgICB0aGlzLnJvdXRlcixcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMudGFiTG9hZGVyLmluaXRpYWwodGhpcy5faW5pdGlhbFRhYk5hbWUpO1xuICAgICAgICAgICAgdGhpcy5kb3NzaWVyVGFiU2VydmljZS5zZXRUYWJMb2FkZXIodGhpcy50YWJMb2FkZXIpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nVGFicyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiQgPSB0aGlzLnRhYkxvYWRlci5hY3RpdmVUYWIkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vVGFic0NvbmZpZ3VyZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdUYWJzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmdldEFsbEFzc29jaWF0ZWRQcm9jZXNzRGVmaW5pdGlvbnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNob3dOb0FjY2VzcyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmdUYWJzJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXNzaWdubWVudE9mRG9jdW1lbnRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llclNlcnZpY2UucmVmcmVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21Eb3NzaWVySGVhZGVySXRlbShpdGVtKTogdm9pZCB7XG4gICAgdGhpcy5jdXN0b21Eb3NzaWVySGVhZGVySXRlbXMucHVzaCh7XG4gICAgICBsYWJlbDogaXRlbVsnbGFiZWxUcmFuc2xhdGlvbktleSddIHx8ICcnLFxuICAgICAgY29sdW1uU2l6ZTogaXRlbVsnY29sdW1uU2l6ZSddIHx8IDMsXG4gICAgICB0ZXh0U2l6ZTogaXRlbVsndGV4dFNpemUnXSB8fCAnbWQnLFxuICAgICAgY3VzdG9tQ2xhc3M6IGl0ZW1bJ2N1c3RvbUNsYXNzJ10gfHwgJycsXG4gICAgICBtb2RpZmllcjogaXRlbVsnbW9kaWZpZXInXSB8fCAnJyxcbiAgICAgIHZhbHVlOiBpdGVtWydwcm9wZXJ0eVBhdGhzJ10/LnJlZHVjZShcbiAgICAgICAgKHByZXYsIGN1cnIpID0+IHByZXYgKyB0aGlzLmdldFN0cmluZ0Zyb21Eb2N1bWVudFBhdGgoaXRlbSwgY3VyciksXG4gICAgICAgICcnXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdHJpbmdGcm9tRG9jdW1lbnRQYXRoKGl0ZW0sIHBhdGgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9IGl0ZW1bJ3Byb3BlcnR5UGF0aHMnXS5pbmRleE9mKHBhdGgpID4gMCA/ICcgJyA6ICcnO1xuICAgIGxldCBzdHJpbmcgPSB0aGlzLmdldE5lc3RlZFByb3BlcnR5KHRoaXMuZG9jdW1lbnQuY29udGVudCwgcGF0aCwgaXRlbVsnbm9WYWx1ZVRleHQnXSkgfHwgJyc7XG4gICAgY29uc3QgZGF0ZUZvcm1hdHMgPSBbbW9tZW50LklTT184NjAxLCAnTU0tREQtWVlZWScsICdERC1NTS1ZWVlZJywgJ1lZWVktTU0tREQnXTtcbiAgICBzd2l0Y2ggKGl0ZW1bJ21vZGlmaWVyJ10pIHtcbiAgICAgIGNhc2UgJ2FnZSc6IHtcbiAgICAgICAgaWYgKG1vbWVudChzdHJpbmcsIGRhdGVGb3JtYXRzLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBzdHJpbmcgPSBtb21lbnQoKS5kaWZmKHN0cmluZywgJ3llYXJzJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChtb21lbnQoc3RyaW5nLCBkYXRlRm9ybWF0cywgdHJ1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgc3RyaW5nID0gbW9tZW50KHN0cmluZykuZm9ybWF0KCdERC1NTS1ZWVlZJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByZWZpeCArIHN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TmVzdGVkUHJvcGVydHkob2JqOiBhbnksIHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiAoXG4gICAgICBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChjdXJyZW50T2JqZWN0LCBrZXkpID0+IGN1cnJlbnRPYmplY3Q/LltrZXldLCBvYmopIHx8IGRlZmF1bHRWYWx1ZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNldEJyZWFkY3J1bWIoKTogdm9pZCB7XG4gICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZXRTZWNvbmRCcmVhZGNydW1iKHtcbiAgICAgIHJvdXRlOiBbYC9kb3NzaWVycy8ke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gXSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZVRpdGxlLFxuICAgICAgaHJlZjogYC9kb3NzaWVycy8ke3RoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZX1gLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuV2lkdGhPYnNlcnZlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RhYkNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5vYnNlcnZlck11dGF0aW9uKGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhYkNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVyTXV0YXRpb24oZXZlbnQ6IEFycmF5PFJlc2l6ZU9ic2VydmVyRW50cnk+KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gZXZlbnRbMF0/LmJvcmRlckJveFNpemVbMF0/LmlubGluZVNpemU7XG5cbiAgICBpZiAodHlwZW9mIGVsZW1lbnRXaWR0aCA9PT0gJ251bWJlcicgJiYgZWxlbWVudFdpZHRoICE9PSAwKSB7XG4gICAgICB0aGlzLmRvc3NpZXJEZXRhaWxMYXlvdXRTZXJ2aWNlLnNldFRhYkNvbnRlbnRDb250YWluZXJXaWR0aChlbGVtZW50V2lkdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RG9jdW1lbnRTdHlsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaHRtbERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF0sICdodG1sLS1maXhlZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEb2N1bWVudFN0eWxlKCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5odG1sRG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXSwgJ2h0bWwtLWZpeGVkJyk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZVJlc2V0T25CYWNrTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICBldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCAmJiBldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZW5hYmxlUmVzZXQoKTtcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb1Rhc2tQcm9jZXNzTGluayhpc0FkbWluOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dBY3Rpb25hYmxlKHtcbiAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgIGxvd0NvbnRyYXN0OiB0cnVlLFxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkb3NzaWVyLm5vTGlua2VkUHJvY2Vzc05vdGlmaWNhdGlvbicpLFxuICAgICAgLi4uKGlzQWRtaW4gJiYge1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rvc3NpZXIuY29uZmlndXJlJyksXG4gICAgICAgICAgICBjbGljazogKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcHJvY2Vzcy1saW5rcyddKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgICBkdXJhdGlvbjogQ0FSQk9OX0NPTlNUQU5UUy5ub3RpZmljYXRpb25EdXJhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMoXG4gICAgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnM6IFByb2Nlc3NEb2N1bWVudERlZmluaXRpb25bXVxuICApOiAoUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbiAmIHtkaXNwbGF5TmFtZTogc3RyaW5nfSlbXSB7XG4gICAgcmV0dXJuIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLm1hcChcbiAgICAgIChwcm9jZXNzRG9jb3VtZW50RGVmaW5pdGlvbjogUHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbikgPT4gKHtcbiAgICAgICAgLi4ucHJvY2Vzc0RvY291bWVudERlZmluaXRpb24sXG4gICAgICAgIGRpc3BsYXlOYW1lOlxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHByb2Nlc3NEb2NvdW1lbnREZWZpbml0aW9uPy5pZD8ucHJvY2Vzc0RlZmluaXRpb25LZXkpICE9PVxuICAgICAgICAgIHByb2Nlc3NEb2NvdW1lbnREZWZpbml0aW9uPy5pZD8ucHJvY2Vzc0RlZmluaXRpb25LZXlcbiAgICAgICAgICAgID8gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocHJvY2Vzc0RvY291bWVudERlZmluaXRpb24uaWQucHJvY2Vzc0RlZmluaXRpb25LZXkpXG4gICAgICAgICAgICA6IHByb2Nlc3NEb2NvdW1lbnREZWZpbml0aW9uLnByb2Nlc3NOYW1lLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRQcm9jZXNzRHJvcGRvd25XaWR0aCgpOiB2b2lkIHtcbiAgICBjb25zdCBsb25nZXN0TmFtZSA9IHRoaXMucHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbnMucmVkdWNlKFxuICAgICAgKGFjYywgY3VycikgPT5cbiAgICAgICAgISFjdXJyLmRpc3BsYXlOYW1lICYmIGN1cnIuZGlzcGxheU5hbWUubGVuZ3RoID4gYWNjID8gY3Vyci5kaXNwbGF5TmFtZS5sZW5ndGggOiBhY2MsXG4gICAgICAwXG4gICAgKTtcblxuICAgIHRoaXMuZHJvcGRvd25XaWR0aCQubmV4dChcbiAgICAgIGxvbmdlc3ROYW1lIDwgMjBcbiAgICAgICAgPyBET1NTSUVSX0RFVEFJTF9TVEFSVF9QUk9DRVNTX0RST1BET1dOX1dJRFRILnNtYWxsXG4gICAgICAgIDogbG9uZ2VzdE5hbWUgPCA0MFxuICAgICAgICAgID8gRE9TU0lFUl9ERVRBSUxfU1RBUlRfUFJPQ0VTU19EUk9QRE9XTl9XSURUSC5tZWRpdW1cbiAgICAgICAgICA6IERPU1NJRVJfREVUQUlMX1NUQVJUX1BST0NFU1NfRFJPUERPV05fV0lEVEgubGFyZ2VcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48ZGl2XG4gIGNsYXNzPVwibWFpbi1jb250ZW50XCJcbiAgW25nQ2xhc3NdPVwieydtYWluLWNvbnRlbnQtLW5vLWhvcml6b250YWwtb3ZlcmZsb3cnOiB0YWJIb3Jpem9udGFsT3ZlcmZsb3dEaXNhYmxlZCgpfVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FzZVRhZ3MkIHwgYXN5bmMgYXMgY2FzZVRhZ3NcIj5cbiAgICAgIEBpZiAoY2FzZVRhZ3MgJiYgY2FzZVRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2luZy1jYXNlLXRhZ3NcIj5cbiAgICAgICAgICBAZm9yICh0YWcgb2YgY2FzZVRhZ3M7IHRyYWNrIHRhZykge1xuICAgICAgICAgICAgPGNkcy10YWcgc2l6ZT1cInNtXCIgW3R5cGVdPVwidGFnLnRhZ1R5cGVcIj5cbiAgICAgICAgICAgICAge3sgdGFnLnRpdGxlIH19XG4gICAgICAgICAgICA8L2Nkcy10YWc+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJzXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RhYnM+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwie2FjdGl2ZVRhYjogYWN0aXZlVGFiJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgICAgICAgPGNkcy10YWJzICpuZ0lmPVwidGFiTG9hZGVyXCIgdHlwZT1cImlubGluZVwiIGNsYXNzPVwiY2FzZS1kZXRhaWwtdGFic1wiPlxuICAgICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYkxvYWRlci50YWJzXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwidGFiLm5hbWUgPT09IChhY3RpdmVUYWJOYW1lJCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBoZWFkaW5nPVwie3sgdGFiIHwgdGFiVHJhbnNsYXRlIHwgYXN5bmMgfX1cIlxuICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uVGFiU2VsZWN0ZWQodGFiLCBvYnMuYWN0aXZlVGFiKVwiXG4gICAgICAgICAgPjwvY2RzLXRhYj5cbiAgICAgICAgPC9jZHMtdGFicz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgI3RhYkNvbnRlbnRDb250YWluZXJcbiAgICAgIGNsYXNzPVwidGFiLWNvbnRlbnQtY29udGFpbmVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RhYi1jb250ZW50LWNvbnRhaW5lci0tZGFyayc6IGlzRGFya01vZGUkIHwgYXN5bmMsXG4gICAgICAgICd0YWItY29udGVudC1jb250YWluZXItLWNvbXBhY3QnOiBjb21wYWN0TW9kZSQgfCBhc3luYyxcbiAgICAgIH1cIlxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIG5vVGFic0NvbmZpZ3VyZWQ6IG5vVGFic0NvbmZpZ3VyZWQkIHwgYXN5bmMsXG4gICAgICAgIHNob3dUYXNrTGlzdDogc2hvd1Rhc2tMaXN0JCB8IGFzeW5jLFxuICAgICAgICBzaG93Tm9BY2Nlc3M6IHNob3dOb0FjY2VzcyQgfCBhc3luYyxcbiAgICAgICAgZG9zc2llckRldGFpbExheW91dDogZG9zc2llckRldGFpbExheW91dCQgfCBhc3luYyxcbiAgICAgICAgb3BlblRhc2tBbmRQcm9jZXNzTGlua0luTW9kYWw6IG9wZW5UYXNrQW5kUHJvY2Vzc0xpbmtJbk1vZGFsJCB8IGFzeW5jLFxuICAgICAgICB0YXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsOiB0YXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsJCB8IGFzeW5jLFxuICAgICAgfSBhcyB0YWJDb250ZW50T2JzXCJcbiAgICA+XG4gICAgICA8YXMtc3BsaXRcbiAgICAgICAgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LndpZHRoQWRqdXN0YWJsZVwiXG4gICAgICAgIFtndXR0ZXJTaXplXT1cIkRPU1NJRVJfREVUQUlMX0dVVFRFUl9TSVpFXCJcbiAgICAgICAgW3VuaXRdPVwidGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LnVuaXRcIlxuICAgICAgPlxuICAgICAgICA8YXMtc3BsaXQtYXJlYVxuICAgICAgICAgIFtzaXplXT1cInRhYkNvbnRlbnRPYnMuZG9zc2llckRldGFpbExheW91dC5sZWZ0UGFuZWxXaWR0aFwiXG4gICAgICAgICAgW21pblNpemVdPVwidGFiQ29udGVudE9icy5kb3NzaWVyRGV0YWlsTGF5b3V0LmxlZnRQYW5lbE1pbldpZHRoXCJcbiAgICAgICAgICBbbWF4U2l6ZV09XCJ0YWJDb250ZW50T2JzLmRvc3NpZXJEZXRhaWxMYXlvdXQubGVmdFBhbmVsTWF4V2lkdGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjYXJkLWJvZHkgYmctd2hpdGUgcC01IHBvc2l0aW9uLXJlbGF0aXZlIHRhYi1jb250YWluZXJcIlxuICAgICAgICAgICAgW2NsYXNzLnRhYi1jb250YWluZXItLWNvbXBhY3RdPVwiY29tcGFjdE1vZGUkIHwgYXN5bmNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nVGFicyQgfCBhc3luY1wiIGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgICAgICAgICAqbmdJZj1cInRhYkNvbnRlbnRPYnMuc2hvd05vQWNjZXNzXCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJ7eyAnZG9zc2llci5ub0FjY2Vzcy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdkb3NzaWVyLm5vQWNjZXNzLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGlsbHVzdHJhdGlvbj1cInZhbHRpbW8tbGF5b3V0L2ltZy9lbXB0eXN0YXRlLW5vdC1hdXRob3Jpc2VkLnN2Z1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3ZhbHRpbW8tbm8tcmVzdWx0cz5cblxuICAgICAgICAgICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgICAgICAgICAqbmdJZj1cInRhYkNvbnRlbnRPYnMubm9UYWJzQ29uZmlndXJlZFwiXG4gICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci50YWJzLm5vUmVzdWx0c0Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInZG9zc2llci50YWJzLm5vUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3RhYkNvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcy1zcGxpdC1hcmVhPlxuXG4gICAgICAgIDxhcy1zcGxpdC1hcmVhXG4gICAgICAgICAgKm5nSWY9XCJ0YWJDb250ZW50T2JzLmRvc3NpZXJEZXRhaWxMYXlvdXQuc2hvd1JpZ2h0UGFuZWxcIlxuICAgICAgICAgIFtzaXplXT1cInRhYkNvbnRlbnRPYnMuZG9zc2llckRldGFpbExheW91dC5yaWdodFBhbmVsV2lkdGhcIlxuICAgICAgICAgIFttaW5TaXplXT1cInRhYkNvbnRlbnRPYnMuZG9zc2llckRldGFpbExheW91dC5yaWdodFBhbmVsTWluV2lkdGhcIlxuICAgICAgICAgIFttYXhTaXplXT1cInRhYkNvbnRlbnRPYnMuZG9zc2llckRldGFpbExheW91dC5yaWdodFBhbmVsTWF4V2lkdGhcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmICh0YWJDb250ZW50T2JzLnNob3dUYXNrTGlzdCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhc2stcGFuZWxcIj5cbiAgICAgICAgICAgICAgQGlmICghdGFiQ29udGVudE9icy50YXNrQW5kUHJvY2Vzc0xpbmtPcGVuZWRJblBhbmVsKSB7XG4gICAgICAgICAgICAgICAgPHZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1saXN0XG4gICAgICAgICAgICAgICAgICBbb3BlblRhc2tBbmRQcm9jZXNzTGlua0luTW9kYWxdPVwidGFiQ29udGVudE9icy5vcGVuVGFza0FuZFByb2Nlc3NMaW5rSW5Nb2RhbFwiXG4gICAgICAgICAgICAgICAgICAodGFza0NsaWNrRXZlbnQpPVwib25UYXNrQ2xpY2tFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIChmb3JtU3VibWl0RXZlbnQpPVwib25Gb3JtU3VibWl0RXZlbnQoKVwiXG4gICAgICAgICAgICAgICAgPjwvdmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWxpc3Q+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBAaWYgKHRhYkNvbnRlbnRPYnMudGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbCkge1xuICAgICAgICAgICAgICAgIDx2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsXG4gICAgICAgICAgICAgICAgICBbdGFza0FuZFByb2Nlc3NMaW5rXT1cInRhYkNvbnRlbnRPYnMudGFza0FuZFByb2Nlc3NMaW5rT3BlbmVkSW5QYW5lbFwiXG4gICAgICAgICAgICAgICAgICAoYWN0aXZlQ2hhbmdlKT1cIm9uQWN0aXZlQ2hhbmdlRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAoY2xvc2VFdmVudCk9XCJvblRhc2tEZXRhaWxzQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAoZm9ybVN1Ym1pdCk9XCJvbkZvcm1TdWJtaXRFdmVudCgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC92YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvYXMtc3BsaXQtYXJlYT5cbiAgICAgIDwvYXMtc3BsaXQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDx2YWx0aW1vLWRvc3NpZXItc3VwcG9ydGluZy1wcm9jZXNzLXN0YXJ0LW1vZGFsXG4gICAgW2lzQWRtaW5dPVwiaXNBZG1pbiQgfCBhc3luY1wiXG4gICAgKGZvcm1TdWJtaXQpPVwidGFiTG9hZGVyLnJlZnJlc2hWaWV3KClcIlxuICAgICNzdXBwb3J0aW5nUHJvY2Vzc1N0YXJ0TW9kYWxcbiAgPjwvdmFsdGltby1kb3NzaWVyLXN1cHBvcnRpbmctcHJvY2Vzcy1zdGFydC1tb2RhbD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI2Nhc2VEZXRhaWxIZWFkZXJcbiAgbGV0LWNhbkhhdmVBc3NpZ25lZT1cImNhbkhhdmVBc3NpZ25lZVwiXG4gIGxldC1kb2N1bWVudD1cImRvY3VtZW50XCJcbiAgbGV0LWNhbkFzc2lnbj1cImNhbkFzc2lnblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIihjdXN0b21Eb3NzaWVySGVhZGVySXRlbXMgfHwgW10pLmxlbmd0aCA+IDBcIj5cbiAgICA8c3BhblxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY3VzdG9tRG9zc2llckhlYWRlckl0ZW1zXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgaDE6IGl0ZW0udGV4dFNpemUgPT09ICd4bCcsXG4gICAgICAgIGgyOiBpdGVtLnRleHRTaXplID09PSAnbGcnLFxuICAgICAgICBoMzogaXRlbS50ZXh0U2l6ZSA9PT0gJ21kJyxcbiAgICAgICAgaDQ6IGl0ZW0udGV4dFNpemUgPT09ICdzbScsXG4gICAgICAgIGg1OiBpdGVtLnRleHRTaXplID09PSAneHMnLFxuICAgICAgfVwiXG4gICAgICBjbGFzcz1cIm1iLTAgbXQtMCBhbGlnbi1zZWxmLWVuZCBjb2wteGwte3sgaXRlbS5jb2x1bW5TaXplIH19IGNvbC1sZy17e1xuICAgICAgICBpdGVtLmNvbHVtblNpemUgKiAyXG4gICAgICB9fSB7eyBpdGVtLmN1c3RvbUNsYXNzIH19XCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubGFiZWxcIj57eyBpdGVtLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubGFiZWwgJiYgaXRlbS52YWx1ZVwiPjogPC9zcGFuPlxuXG4gICAgICA8c3Ryb25nPnt7IGl0ZW0udmFsdWUgfX08L3N0cm9uZz5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgY2FzZURldGFpbEFzc2lnbmVlO1xuICAgICAgY29udGV4dDoge2NhbkhhdmVBc3NpZ25lZTogY2FuSGF2ZUFzc2lnbmVlLCBkb2N1bWVudDogZG9jdW1lbnQsIGNhbkFzc2lnbjogY2FuQXNzaWdufVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FzZURldGFpbEFzc2lnbmVlXG4gIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIlxuICBsZXQtZG9jdW1lbnQ9XCJkb2N1bWVudFwiXG4gIGxldC1jYW5Bc3NpZ249XCJjYW5Bc3NpZ25cIlxuPlxuICA8ZGl2ICpuZ0lmPVwiY2FuSGF2ZUFzc2lnbmVlICYmIGRvY3VtZW50XCI+XG4gICAgPHZhbHRpbW8tZG9zc2llci1hc3NpZ24tdXNlclxuICAgICAgKm5nSWY9XCJjYW5Bc3NpZ25Mb2FkZWQkIHwgYXN5bmNcIlxuICAgICAgW2Fzc2lnbmVlRnVsbE5hbWVdPVwiZG9jdW1lbnQ/LmFzc2lnbmVlRnVsbE5hbWVcIlxuICAgICAgW2Fzc2lnbmVlSWRdPVwiZG9jdW1lbnQuYXNzaWduZWVJZFwiXG4gICAgICBbZG9jdW1lbnRJZF09XCJkb2N1bWVudC5pZFwiXG4gICAgICBbaGFzUGVybWlzc2lvbl09XCJjYW5Bc3NpZ25cIlxuICAgICAgKGFzc2lnbm1lbnRPZkRvY3VtZW50Q2hhbmdlZCk9XCJhc3NpZ25tZW50T2ZEb2N1bWVudENoYW5nZWQoKVwiXG4gICAgPjwvdmFsdGltby1kb3NzaWVyLWFzc2lnbi11c2VyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2xhaW1CdXR0b24gbGV0LWNhbkNsYWltPVwiY2FuQ2xhaW1cIiBsZXQtY2FuSGF2ZUFzc2lnbmVlPVwiY2FuSGF2ZUFzc2lnbmVlXCI+XG4gIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAqbmdJZj1cImNhbkNsYWltICYmIGNhbkhhdmVBc3NpZ25lZVwiXG4gICAgW2Rpc2FibGVkXT1cIihpc0Fzc2lnbmluZyQgfCBhc3luYykgfHwgKGlzQXNzaWduZWRUb0N1cnJlbnRVc2VyJCB8IGFzeW5jKVwiXG4gICAgKGNsaWNrKT1cImNsYWltQXNzaWduZWUoKVwiXG4gID5cbiAgICB7eyAnZG9zc2llci5jbGFpbUFzc2lnbmVlQ2FzZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3VuYXNzaWduQnV0dG9uIGxldC1jYW5IYXZlQXNzaWduZWU9XCJjYW5IYXZlQXNzaWduZWVcIiBsZXQtYXNzaWduZWVJZD1cImFzc2lnbmVlSWRcIj5cbiAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvblxuICAgICpuZ0lmPVwiY2FuSGF2ZUFzc2lnbmVlXCJcbiAgICBbZGlzYWJsZWRdPVwiIWFzc2lnbmVlSWRcIlxuICAgIChzZWxlY3RlZCk9XCJ1bmFzc2lnbkFzc2lnbmVlKClcIlxuICA+XG4gICAge3sgJ2Fzc2lnbkRvY3VtZW50LnJlbW92ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlbGV0ZUJ1dHRvbiBsZXQtY2FuRGVsZXRlPVwiY2FuRGVsZXRlXCI+XG4gIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAqbmdJZj1cImNhbkRlbGV0ZVwiXG4gICAgW2Rpc2FibGVkXT1cImlzRGVsZXRpbmckIHwgYXN5bmNcIlxuICAgIChjbGljayk9XCJkZWxldGVEb2N1bWVudCgpXCJcbiAgICB0eXBlPVwiZGFuZ2VyXCJcbiAgPlxuICAgIHt7ICdkb3NzaWVyLmRlbGV0ZS5kZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjdXN0b21TdGFydFRyaWdnZXI+XG4gIDxidXR0b25cbiAgICBbc2l6ZV09XCIoY29tcGFjdE1vZGUkIHwgYXN5bmMpID8gJ3NtJyA6ICdsZydcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCJwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9ucy5sZW5ndGggPT09IDBcIlxuICAgIFtuZ2JUb29sdGlwXT1cInByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zLmxlbmd0aCA9PT0gMCA/ICdObyBhY3Rpb24nIDogbnVsbFwiXG4gID5cbiAgICB7eyAnZG9zc2llci5zdGFydFN1YlByb2Nlc3MnIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiY2hldnJvbi0tZG93blwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5kZWxldGUuY29uZmlybVwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llci5kZWxldGUuZGVzY3JpcHRpb25cIlxuICBbc2hvd01vZGFsU3ViamVjdCRdPVwic2hvd0RlbGV0ZU1vZGFsJFwiXG4gIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJkb3NzaWVyLmRlbGV0ZS5kZWxldGVcIlxuICAoY29uZmlybUV2ZW50KT1cIm9uQ29uZmlybURlbGV0ZSgpXCJcbj48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuXG48bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlciBbZnVsbFdpZHRoXT1cInRydWVcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZG9zc2llci1hY3Rpb25zXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnLS1jb21wYWN0JzogY29tcGFjdE1vZGUkIHwgYXN5bmN9XCJcbiAgICAgICpuZ0lmPVwie1xuICAgICAgICBhc3NpZ25lZUlkOiBhc3NpZ25lZUlkJCB8IGFzeW5jLFxuICAgICAgICBjYW5Bc3NpZ246IGNhbkFzc2lnbiQgfCBhc3luYyxcbiAgICAgICAgY2FuQ2xhaW06IGNhbkNsYWltJCB8IGFzeW5jLFxuICAgICAgICBjYW5IYXZlQXNzaWduZWU6IGNhbkhhdmVBc3NpZ25lZSQgfCBhc3luYyxcbiAgICAgICAgY2FuRGVsZXRlOiBjYW5EZWxldGUkIHwgYXN5bmMsXG4gICAgICAgIGRvY3VtZW50OiBkb2N1bWVudCQgfCBhc3luYyxcbiAgICAgICAgY2FzZVN0YXR1czogY2FzZVN0YXR1cyQgfCBhc3luYyxcbiAgICAgIH0gYXMgb2JzXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZG9zc2llci1zdGF0dXMtYXNzaWduLWN1c3RvbS10aXRsZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnLS1jb21wYWN0JzogY29tcGFjdE1vZGUkIHwgYXN5bmN9XCJcbiAgICAgID5cbiAgICAgICAgQGlmIChvYnMuY2FzZVN0YXR1cykge1xuICAgICAgICAgIDxjZHMtdGFnIHNpemU9XCJzbVwiIFt0eXBlXT1cIm9icy5jYXNlU3RhdHVzLnRhZ1R5cGVcIiBbdGl0bGVdPVwib2JzLmNhc2VTdGF0dXMudGl0bGVcIj57e1xuICAgICAgICAgICAgb2JzLmNhc2VTdGF0dXMudGl0bGVcbiAgICAgICAgICB9fTwvY2RzLXRhZz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb3NzaWVyLWFzc2lnbi11c2VyXCIgW25nQ2xhc3NdPVwieyctLWNvbXBhY3QnOiBjb21wYWN0TW9kZSQgfCBhc3luY31cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBjYXNlRGV0YWlsQXNzaWduZWU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICBjYW5IYXZlQXNzaWduZWU6IG9icy5jYW5IYXZlQXNzaWduZWUsXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQ6IG9icy5kb2N1bWVudCxcbiAgICAgICAgICAgICAgICBjYW5Bc3NpZ246IG9icy5jYW5Bc3NpZ24sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FzZURldGFpbEhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgICA8Y2RzLW92ZXJmbG93LW1lbnVcbiAgICAgICAgICBbbmdDbGFzc109XCJ7Jy0tY29tcGFjdCc6IGNvbXBhY3RNb2RlJCB8IGFzeW5jfVwiXG4gICAgICAgICAgKm5nSWY9XCJvYnMuY2FuSGF2ZUFzc2lnbmVlIHx8IG9icy5jYW5EZWxldGVcIlxuICAgICAgICAgIGZsaXA9XCJ0cnVlXCJcbiAgICAgICAgICBbb2Zmc2V0XT1cIihjb21wYWN0TW9kZSQgfCBhc3luYykgPyB7eTogNDgsIHg6IC00fSA6IHt5OiA0OCwgeDogNH1cIlxuICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctYnV0dG9uIGFzc2lnbi1vdmVyZmxvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBjbGFpbUJ1dHRvbjtcbiAgICAgICAgICAgICAgY29udGV4dDoge2NhbkNsYWltOiBvYnMuY2FuQ2xhaW0sIGNhbkhhdmVBc3NpZ25lZTogb2JzLmNhbkhhdmVBc3NpZ25lZX1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIHVuYXNzaWduQnV0dG9uO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7Y2FuSGF2ZUFzc2lnbmVlOiBvYnMuY2FuSGF2ZUFzc2lnbmVlLCBhc3NpZ25lZUlkOiBvYnMuYXNzaWduZWVJZH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWxldGVCdXR0b247IGNvbnRleHQ6IHtjYW5EZWxldGU6IG9icy5jYW5EZWxldGV9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnU+XG5cbiAgICAgICAgPGNkcy1vdmVyZmxvdy1tZW51XG4gICAgICAgICAgdmFsdGltb0Nkc092ZXJmbG93QnV0dG9uXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyctLWNvbXBhY3QnOiBjb21wYWN0TW9kZSQgfCBhc3luY31cIlxuICAgICAgICAgIFt3aWR0aF09XCJkcm9wZG93bldpZHRoJCB8IGFzeW5jXCJcbiAgICAgICAgICBbY3VzdG9tVHJpZ2dlcl09XCJjdXN0b21TdGFydFRyaWdnZXJcIlxuICAgICAgICAgIFtvZmZzZXRdPVwie3k6IDQ4LCB4OiAzNX1cIlxuICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctYnV0dG9uIGNhc2UtZGV0YWlsLW92ZXJmbG93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uIG9mIHByb2Nlc3NEb2N1bWVudERlZmluaXRpb25zXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByb2Nlc3NEb2N1bWVudERlZmluaXRpb24uZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInN0YXJ0UHJvY2Vzcyhwcm9jZXNzRG9jdW1lbnREZWZpbml0aW9uKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcHJvY2Vzc0RvY3VtZW50RGVmaW5pdGlvbi5kaXNwbGF5TmFtZSB9fVxuICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuICAgICAgICA8L2Nkcy1vdmVyZmxvdy1tZW51PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
package/esm2022/lib/components/dossier-detail-task-detail/dossier-detail-task-detail.component.mjs
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { CommonModule } from '@angular/common';
|
|
17
17
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, signal, } from '@angular/core';
|
|
18
18
|
import { TranslateModule } from '@ngx-translate/core';
|
|
19
|
-
import { AssignUserToTaskComponent, CAN_ASSIGN_TASK_PERMISSION, TASK_DETAIL_PERMISSION_RESOURCE, TaskDetailContentComponent, TaskDetailIntermediateSaveComponent, } from '@valtimo/task';
|
|
19
|
+
import { AssignUserToTaskComponent, CAN_ASSIGN_TASK_PERMISSION, CAN_MODIFY_TASK_PERMISSION, SetTaskDueDateComponent, TASK_DETAIL_PERMISSION_RESOURCE, TaskDetailContentComponent, TaskDetailIntermediateSaveComponent, } from '@valtimo/task';
|
|
20
20
|
import { ButtonModule, IconModule } from 'carbon-components-angular';
|
|
21
21
|
import { BehaviorSubject, map, switchMap } from 'rxjs';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
@@ -52,6 +52,10 @@ export class DossierDetailsTaskDetailComponent {
|
|
|
52
52
|
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
53
53
|
identifier: task?.id ?? '',
|
|
54
54
|
})));
|
|
55
|
+
this.canModifyTask$ = this.task$.pipe(switchMap((task) => this.permissionService.requestPermission(CAN_MODIFY_TASK_PERMISSION, {
|
|
56
|
+
resource: TASK_DETAIL_PERMISSION_RESOURCE.task,
|
|
57
|
+
identifier: task?.id ?? '',
|
|
58
|
+
})));
|
|
55
59
|
this.intermediateSaveValue$ = new BehaviorSubject(null);
|
|
56
60
|
this.pageValue = signal({
|
|
57
61
|
title: '',
|
|
@@ -78,7 +82,7 @@ export class DossierDetailsTaskDetailComponent {
|
|
|
78
82
|
this.formSubmit.emit();
|
|
79
83
|
}
|
|
80
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailsTaskDetailComponent, deps: [{ token: i1.ConfigService }, { token: i2.PageHeaderService }, { token: i3.PermissionService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: DossierDetailsTaskDetailComponent, isStandalone: true, selector: "valtimo-dossier-detail-task-detail", inputs: { taskAndProcessLink: "taskAndProcessLink" }, outputs: { closeEvent: "closeEvent", assignmentOfTaskChanged: "assignmentOfTaskChanged", activeChange: "activeChange", formSubmit: "formSubmit" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-dossier-detail-task-detail\"\n>\n <section class=\"valtimo-dossier-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-dossier-detail-task-detail__body\"\n [class.valtimo-dossier-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-dossier-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assign-user-to-task\n [canAssignUserToTask]=\"obs.canAssignUserToTask\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n ></valtimo-assign-user-to-task>\n\n <valtimo-set-task-due-date\n [canModifyTask]=\"obs.canModifyTask\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-dossier-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-dossier-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-dossier-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-dossier-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-dossier-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-dossier-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:12;padding-bottom:16px}.valtimo-dossier-detail-task-detail .task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "component", type: TaskDetailContentComponent, selector: "valtimo-task-detail-content", inputs: ["task", "taskAndProcessLink", "modalClosed"], outputs: ["closeModalEvent", "formSubmit", "activeChange"] }, { kind: "component", type: TaskDetailIntermediateSaveComponent, selector: "valtimo-task-detail-intermediate-save", inputs: ["task", "taskAndProcessLink"], outputs: ["currentIntermediateSaveEvent", "showModalEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: AssignUserToTaskComponent, selector: "valtimo-assign-user-to-task", inputs: ["taskId", "assigneeId", "canAssignUserToTask"], outputs: ["assignmentOfTaskChanged"] }, { kind: "component", type: SetTaskDueDateComponent, selector: "valtimo-set-task-due-date", inputs: ["canModifyTask", "task"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
82
86
|
}
|
|
83
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DossierDetailsTaskDetailComponent, decorators: [{
|
|
84
88
|
type: Component,
|
|
@@ -90,7 +94,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
90
94
|
ButtonModule,
|
|
91
95
|
IconModule,
|
|
92
96
|
AssignUserToTaskComponent,
|
|
93
|
-
|
|
97
|
+
SetTaskDueDateComponent,
|
|
98
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n canAssignUserToTask: canAssignUserToTask$ | async,\n intermediateSaveValue: intermediateSaveValue$ | async,\n task: task$ | async,\n taskAndProcessLink: taskAndProcessLink$ | async,\n canModifyTask: canModifyTask$ | async,\n } as obs\"\n class=\"valtimo-dossier-detail-task-detail\"\n>\n <section class=\"valtimo-dossier-detail-task-detail__header\">\n <valtimo-task-detail-intermediate-save\n *ngIf=\"enableIntermediateSave\"\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (currentIntermediateSaveEvent)=\"onCurrentIntermediateSaveEvent($event)\"\n ></valtimo-task-detail-intermediate-save>\n\n <button cdsButton=\"ghost\" [iconOnly]=\"true\" (click)=\"onClose()\">\n <svg class=\"cds--btn__icon\" cdsIcon=\"close\" size=\"16\"></svg>\n </button>\n </section>\n\n <section\n class=\"valtimo-dossier-detail-task-detail__body\"\n [class.valtimo-dossier-detail-task-detail__body--compact]=\"compactMode$ | async\"\n >\n <div class=\"title-container\">\n <p class=\"valtimo-dossier-detail-task-detail__title\">{{ pageValue()?.title }}</p>\n\n <p class=\"cds--modal-header__label cds--type-delta\">{{ pageValue()?.subtitle }}</p>\n\n <p *ngIf=\"obs.intermediateSaveValue\" class=\"cds--modal-header__label\">\n {{ 'formManagement.intermediateSave.lastSavedBy' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedBy\n ? obs.intermediateSaveValue.editedBy\n : obs.intermediateSaveValue.createdBy\n }}\n\n {{ 'formManagement.intermediateSave.on' | translate }}:\n\n {{\n obs.intermediateSaveValue.editedOn\n ? obs.intermediateSaveValue.editedOn\n : obs.intermediateSaveValue.createdOn\n }}\n </p>\n\n <div class=\"task-actions\">\n @if (obs.task) {\n <valtimo-assign-user-to-task\n [canAssignUserToTask]=\"obs.canAssignUserToTask\"\n [taskId]=\"obs.task.id\"\n [assigneeId]=\"obs.task.assignee\"\n ></valtimo-assign-user-to-task>\n\n <valtimo-set-task-due-date\n [canModifyTask]=\"obs.canModifyTask\"\n ></valtimo-set-task-due-date>\n }\n </div>\n </div>\n\n <valtimo-task-detail-content\n [taskAndProcessLink]=\"obs.taskAndProcessLink\"\n (activeChange)=\"onActiveChangeEvent($event)\"\n (formSubmit)=\"onFormSubmitEvent()\"\n ></valtimo-task-detail-content>\n </section>\n</div>\n", styles: [".valtimo-dossier-detail-task-detail{width:100%;display:flex;flex-direction:column;background-color:var(--cds-layer);padding:8px 16px 16px}.valtimo-dossier-detail-task-detail__header{display:flex;justify-content:flex-end}.valtimo-dossier-detail-task-detail__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-dossier-detail-task-detail__body{overflow-y:auto;max-height:calc(100vh - 320px)}.valtimo-dossier-detail-task-detail__body--compact{max-height:calc(100vh - 280px)}.valtimo-dossier-detail-task-detail__body .title-container{position:sticky;background-color:var(--cds-layer);top:0;z-index:12;padding-bottom:16px}.valtimo-dossier-detail-task-detail .task-actions{display:flex;flex-wrap:wrap;width:100%;padding-top:8px;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
94
99
|
}], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.PageHeaderService }, { type: i3.PermissionService }, { type: i4.TranslateService }], propDecorators: { taskAndProcessLink: [{
|
|
95
100
|
type: Input
|
|
96
101
|
}], closeEvent: [{
|
|
@@ -102,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
102
107
|
}], formSubmit: [{
|
|
103
108
|
type: Output
|
|
104
109
|
}] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsL2Rvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBS3RFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEVBRTFCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsbUNBQW1DLEdBQ3BDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFDLGVBQWUsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQW1CakUsTUFBTSxPQUFPLGlDQUFpQztJQUM1QyxJQUFvQixrQkFBa0IsQ0FBQyxLQUFpQztRQUN0RSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsSUFBSSxD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Q0FBbUMsc0xBQ25DLFlBQVksZ01BQ1osVUFBVSw2TkFDVix5QkFBeUI7OzRGQUdoQixpQ0FBaUM7a0JBaEI3QyxTQUFTOytCQUNFLG9DQUFvQyxjQUdsQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLDBCQUEwQjt3QkFDMUIsbUNBQW1DO3dCQUNuQyxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YseUJBQXlCO3FCQUMxQjtpTEFHbUIsa0JBQWtCO3NCQUFyQyxLQUFLO2dCQVNvQixVQUFVO3NCQUFuQyxNQUFNO2dCQUNtQix1QkFBdUI7c0JBQWhELE1BQU07Z0JBQ21CLFlBQVk7c0JBQXJDLE1BQU07Z0JBQ21CLFVBQVU7c0JBQW5DLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UGVybWlzc2lvblNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2FjY2Vzcy1jb250cm9sJztcbmltcG9ydCB7UGFnZUhlYWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtQcm9jZXNzSW5zdGFuY2VUYXNrfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCB7XG4gIEFzc2lnblVzZXJUb1Rhc2tDb21wb25lbnQsXG4gIENBTl9BU1NJR05fVEFTS19QRVJNSVNTSU9OLFxuICBJbnRlcm1lZGlhdGVTdWJtaXNzaW9uLFxuICBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLFxuICBUYXNrRGV0YWlsQ29udGVudENvbXBvbmVudCxcbiAgVGFza0RldGFpbEludGVybWVkaWF0ZVNhdmVDb21wb25lbnQsXG59IGZyb20gJ0B2YWx0aW1vL3Rhc2snO1xuaW1wb3J0IHtCdXR0b25Nb2R1bGUsIEljb25Nb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3dpdGNoTWFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7VGFza1dpdGhQcm9jZXNzTGlua30gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcy1saW5rJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBUYXNrRGV0YWlsQ29udGVudENvbXBvbmVudCxcbiAgICBUYXNrRGV0YWlsSW50ZXJtZWRpYXRlU2F2ZUNvbXBvbmVudCxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBBc3NpZ25Vc2VyVG9UYXNrQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsc1Rhc2tEZXRhaWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHRhc2tBbmRQcm9jZXNzTGluayh2YWx1ZTogVGFza1dpdGhQcm9jZXNzTGluayB8IG51bGwpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLnRhc2tBbmRQcm9jZXNzTGluayQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5wYWdlVmFsdWUuc2V0KHtcbiAgICAgIHRpdGxlOiB2YWx1ZT8udGFzay5uYW1lLFxuICAgICAgc3VidGl0bGU6IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCd0YXNrRGV0YWlsLnRhc2tDcmVhdGVkJyl9ICR7dmFsdWU/LnRhc2s/LmNyZWF0ZWR9YCxcbiAgICB9KTtcbiAgfVxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgYXNzaWdubWVudE9mVGFza0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbXBhY3RNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucGFnZUhlYWRlclNlcnZpY2UuY29tcGFjdE1vZGUkO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFza0FuZFByb2Nlc3NMaW5rJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFza1dpdGhQcm9jZXNzTGluayB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFzayQgPSB0aGlzLnRhc2tBbmRQcm9jZXNzTGluayQucGlwZShcbiAgICBtYXAodGFza0FuZFByb2Nlc3NMaW5rID0+IHRhc2tBbmRQcm9jZXNzTGluay50YXNrKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuQXNzaWduVXNlclRvVGFzayQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnRhc2skLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh0YXNrOiBQcm9jZXNzSW5zdGFuY2VUYXNrIHwgbnVsbCkgPT5cbiAgICAgIHRoaXMucGVybWlzc2lvblNlcnZpY2UucmVxdWVzdFBlcm1pc3Npb24oQ0FOX0FTU0lHTl9UQVNLX1BFUk1JU1NJT04sIHtcbiAgICAgICAgcmVzb3VyY2U6IFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UudGFzayxcbiAgICAgICAgaWRlbnRpZmllcjogdGFzaz8uaWQgPz8gJycsXG4gICAgICB9KVxuICAgIClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGludGVybWVkaWF0ZVNhdmVWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybWVkaWF0ZVN1Ym1pc3Npb24gfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2VWYWx1ZSA9IHNpZ25hbDx7dGl0bGU6IHN0cmluZzsgc3VidGl0bGU6IHN0cmluZ30+KHtcbiAgICB0aXRsZTogJycsXG4gICAgc3VidGl0bGU6ICcnLFxuICB9KTtcbiAgcHVibGljIGVuYWJsZUludGVybWVkaWF0ZVNhdmUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlSGVhZGVyU2VydmljZTogUGFnZUhlYWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uU2VydmljZTogUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZW5hYmxlSW50ZXJtZWRpYXRlU2F2ZSA9ICEhdGhpcy5jb25maWdTZXJ2aWNlLmZlYXR1cmVUb2dnbGVzPy5lbmFibGVJbnRlcm1lZGlhdGVTYXZlO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xuICAgIHRoaXMub25BY3RpdmVDaGFuZ2VFdmVudChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25DdXJyZW50SW50ZXJtZWRpYXRlU2F2ZUV2ZW50KHZhbHVlOiBJbnRlcm1lZGlhdGVTdWJtaXNzaW9uIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLm9uQWN0aXZlQ2hhbmdlRXZlbnQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG9uQWN0aXZlQ2hhbmdlRXZlbnQoYWN0aXZlQ2hhbmdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdChhY3RpdmVDaGFuZ2UpO1xuICB9XG5cbiAgcHVibGljIG9uRm9ybVN1Ym1pdEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVN1Ym1pdC5lbWl0KCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBjYW5Bc3NpZ25Vc2VyVG9UYXNrOiBjYW5Bc3NpZ25Vc2VyVG9UYXNrJCB8IGFzeW5jLFxuICAgIGludGVybWVkaWF0ZVNhdmVWYWx1ZTogaW50ZXJtZWRpYXRlU2F2ZVZhbHVlJCB8IGFzeW5jLFxuICAgIHRhc2s6IHRhc2skIHwgYXN5bmMsXG4gICAgdGFza0FuZFByb2Nlc3NMaW5rOiB0YXNrQW5kUHJvY2Vzc0xpbmskIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbiAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsXCJcbj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsX19oZWFkZXJcIj5cbiAgICA8dmFsdGltby10YXNrLWRldGFpbC1pbnRlcm1lZGlhdGUtc2F2ZVxuICAgICAgKm5nSWY9XCJlbmFibGVJbnRlcm1lZGlhdGVTYXZlXCJcbiAgICAgIFt0YXNrQW5kUHJvY2Vzc0xpbmtdPVwib2JzLnRhc2tBbmRQcm9jZXNzTGlua1wiXG4gICAgICAoY3VycmVudEludGVybWVkaWF0ZVNhdmVFdmVudCk9XCJvbkN1cnJlbnRJbnRlcm1lZGlhdGVTYXZlRXZlbnQoJGV2ZW50KVwiXG4gICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1pbnRlcm1lZGlhdGUtc2F2ZT5cblxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiBbaWNvbk9ubHldPVwidHJ1ZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJjbG9zZVwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L3NlY3Rpb24+XG5cbiAgPHNlY3Rpb25cbiAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWxfX2JvZHlcIlxuICAgIFtjbGFzcy52YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsX19ib2R5LS1jb21wYWN0XT1cImNvbXBhY3RNb2RlJCB8IGFzeW5jXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1jb250YWluZXJcIj5cbiAgICAgIDxwIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbF9fdGl0bGVcIj57eyBwYWdlVmFsdWUoKT8udGl0bGUgfX08L3A+XG5cbiAgICAgIDxwIGNsYXNzPVwiY2RzLS1tb2RhbC1oZWFkZXJfX2xhYmVsIGNkcy0tdHlwZS1kZWx0YVwiPnt7IHBhZ2VWYWx1ZSgpPy5zdWJ0aXRsZSB9fTwvcD5cblxuICAgICAgPHAgKm5nSWY9XCJvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlXCIgY2xhc3M9XCJjZHMtLW1vZGFsLWhlYWRlcl9fbGFiZWxcIj5cbiAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmludGVybWVkaWF0ZVNhdmUubGFzdFNhdmVkQnknIHwgdHJhbnNsYXRlIH19OlxuXG4gICAgICAgIHt7XG4gICAgICAgICAgb2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZS5lZGl0ZWRCeVxuICAgICAgICAgICAgPyBvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlLmVkaXRlZEJ5XG4gICAgICAgICAgICA6IG9icy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUuY3JlYXRlZEJ5XG4gICAgICAgIH19XG5cbiAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmludGVybWVkaWF0ZVNhdmUub24nIHwgdHJhbnNsYXRlIH19OlxuXG4gICAgICAgIHt7XG4gICAgICAgICAgb2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZS5lZGl0ZWRPblxuICAgICAgICAgICAgPyBvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlLmVkaXRlZE9uXG4gICAgICAgICAgICA6IG9icy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUuY3JlYXRlZE9uXG4gICAgICAgIH19XG4gICAgICA8L3A+XG5cbiAgICAgIDx2YWx0aW1vLWFzc2lnbi11c2VyLXRvLXRhc2tcbiAgICAgICAgKm5nSWY9XCJvYnMudGFzayAmJiBvYnMuY2FuQXNzaWduVXNlclRvVGFza1wiXG4gICAgICAgIFt0YXNrSWRdPVwib2JzLnRhc2suaWRcIlxuICAgICAgICBbYXNzaWduZWVJZF09XCJvYnMudGFzay5hc3NpZ25lZVwiXG4gICAgICA+PC92YWx0aW1vLWFzc2lnbi11c2VyLXRvLXRhc2s+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby10YXNrLWRldGFpbC1jb250ZW50XG4gICAgICBbdGFza0FuZFByb2Nlc3NMaW5rXT1cIm9icy50YXNrQW5kUHJvY2Vzc0xpbmtcIlxuICAgICAgKGFjdGl2ZUNoYW5nZSk9XCJvbkFjdGl2ZUNoYW5nZUV2ZW50KCRldmVudClcIlxuICAgICAgKGZvcm1TdWJtaXQpPVwib25Gb3JtU3VibWl0RXZlbnQoKVwiXG4gICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1jb250ZW50PlxuICA8L3NlY3Rpb24+XG48L2Rpdj5cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC9kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsL2Rvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBS3RFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUUxQix1QkFBdUIsRUFDdkIsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQixtQ0FBbUMsR0FDcEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZUFBZSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBb0JqRSxNQUFNLE9BQU8saUNBQWlDO0lBQzVDLElBQW9CLGtCQUFrQixDQUFDLEtBQWlDO1FBQ3RFLElBQUksQ0FBQyxL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QUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sbUJBQW1CLENBQUMsWUFBcUI7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBeEVVLGlDQUFpQzttR0FBakMsaUNBQWlDLHVTQzdEOUMsMG1HQXVGQSw0N0NEcENJLFlBQVksdUxBQ1osZUFBZSw0RkFDZiwwQkFBMEIsMkxBQzFCLG1DQUFtQyxzTEFDbkMsWUFBWSxnTUFDWixVQUFVLDZOQUNWLHlCQUF5Qix1S0FDekIsdUJBQXVCOzs0RkFHZCxpQ0FBaUM7a0JBakI3QyxTQUFTOytCQUNFLG9DQUFvQyxjQUdsQyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLDBCQUEwQjt3QkFDMUIsbUNBQW1DO3dCQUNuQyxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YseUJBQXlCO3dCQUN6Qix1QkFBdUI7cUJBQ3hCO2lMQUdtQixrQkFBa0I7c0JBQXJDLEtBQUs7Z0JBU29CLFVBQVU7c0JBQW5DLE1BQU07Z0JBQ21CLHVCQUF1QjtzQkFBaEQsTUFBTTtnQkFDbUIsWUFBWTtzQkFBckMsTUFBTTtnQkFDbUIsVUFBVTtzQkFBbkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtQYWdlSGVhZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge1Byb2Nlc3NJbnN0YW5jZVRhc2t9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MnO1xuaW1wb3J0IHtcbiAgQXNzaWduVXNlclRvVGFza0NvbXBvbmVudCxcbiAgQ0FOX0FTU0lHTl9UQVNLX1BFUk1JU1NJT04sXG4gIENBTl9NT0RJRllfVEFTS19QRVJNSVNTSU9OLFxuICBJbnRlcm1lZGlhdGVTdWJtaXNzaW9uLFxuICBTZXRUYXNrRHVlRGF0ZUNvbXBvbmVudCxcbiAgVEFTS19ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRSxcbiAgVGFza0RldGFpbENvbnRlbnRDb21wb25lbnQsXG4gIFRhc2tEZXRhaWxJbnRlcm1lZGlhdGVTYXZlQ29tcG9uZW50LFxufSBmcm9tICdAdmFsdGltby90YXNrJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Rhc2tXaXRoUHJvY2Vzc0xpbmt9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MtbGluayc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWwuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgVGFza0RldGFpbENvbnRlbnRDb21wb25lbnQsXG4gICAgVGFza0RldGFpbEludGVybWVkaWF0ZVNhdmVDb21wb25lbnQsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgQXNzaWduVXNlclRvVGFza0NvbXBvbmVudCxcbiAgICBTZXRUYXNrRHVlRGF0ZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbHNUYXNrRGV0YWlsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIHNldCB0YXNrQW5kUHJvY2Vzc0xpbmsodmFsdWU6IFRhc2tXaXRoUHJvY2Vzc0xpbmsgfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrQW5kUHJvY2Vzc0xpbmskLm5leHQodmFsdWUpO1xuICAgIHRoaXMucGFnZVZhbHVlLnNldCh7XG4gICAgICB0aXRsZTogdmFsdWU/LnRhc2submFtZSxcbiAgICAgIHN1YnRpdGxlOiBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndGFza0RldGFpbC50YXNrQ3JlYXRlZCcpfSAke3ZhbHVlPy50YXNrPy5jcmVhdGVkfWAsXG4gICAgfSk7XG4gIH1cbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjbG9zZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGFzc2lnbm1lbnRPZlRhc2tDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGFjdGl2ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmb3JtU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnBhZ2VIZWFkZXJTZXJ2aWNlLmNvbXBhY3RNb2RlJDtcbiAgcHVibGljIHJlYWRvbmx5IHRhc2tBbmRQcm9jZXNzTGluayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhc2tXaXRoUHJvY2Vzc0xpbmsgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IHRhc2skID0gdGhpcy50YXNrQW5kUHJvY2Vzc0xpbmskLnBpcGUoXG4gICAgbWFwKHRhc2tBbmRQcm9jZXNzTGluayA9PiB0YXNrQW5kUHJvY2Vzc0xpbmsudGFzaylcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhbkFzc2lnblVzZXJUb1Rhc2skOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy50YXNrJC5waXBlKFxuICAgIHN3aXRjaE1hcCgodGFzazogUHJvY2Vzc0luc3RhbmNlVGFzayB8IG51bGwpID0+XG4gICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9BU1NJR05fVEFTS19QRVJNSVNTSU9OLCB7XG4gICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLnRhc2ssXG4gICAgICAgIGlkZW50aWZpZXI6IHRhc2s/LmlkID8/ICcnLFxuICAgICAgfSlcbiAgICApXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5Nb2RpZnlUYXNrJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudGFzayQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHRhc2s6IFByb2Nlc3NJbnN0YW5jZVRhc2sgfCBudWxsKSA9PlxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2VydmljZS5yZXF1ZXN0UGVybWlzc2lvbihDQU5fTU9ESUZZX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICByZXNvdXJjZTogVEFTS19ERVRBSUxfUEVSTUlTU0lPTl9SRVNPVVJDRS50YXNrLFxuICAgICAgICBpZGVudGlmaWVyOiB0YXNrPy5pZCA/PyAnJyxcbiAgICAgIH0pXG4gICAgKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJtZWRpYXRlU2F2ZVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJtZWRpYXRlU3VibWlzc2lvbiB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFnZVZhbHVlID0gc2lnbmFsPHt0aXRsZTogc3RyaW5nOyBzdWJ0aXRsZTogc3RyaW5nfT4oe1xuICAgIHRpdGxlOiAnJyxcbiAgICBzdWJ0aXRsZTogJycsXG4gIH0pO1xuICBwdWJsaWMgZW5hYmxlSW50ZXJtZWRpYXRlU2F2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VIZWFkZXJTZXJ2aWNlOiBQYWdlSGVhZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pc3Npb25TZXJ2aWNlOiBQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5lbmFibGVJbnRlcm1lZGlhdGVTYXZlID0gISF0aGlzLmNvbmZpZ1NlcnZpY2UuZmVhdHVyZVRvZ2dsZXM/LmVuYWJsZUludGVybWVkaWF0ZVNhdmU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XG4gICAgdGhpcy5vbkFjdGl2ZUNoYW5nZUV2ZW50KGZhbHNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkN1cnJlbnRJbnRlcm1lZGlhdGVTYXZlRXZlbnQodmFsdWU6IEludGVybWVkaWF0ZVN1Ym1pc3Npb24gfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUkLm5leHQodmFsdWUpO1xuICAgIHRoaXMub25BY3RpdmVDaGFuZ2VFdmVudChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgb25BY3RpdmVDaGFuZ2VFdmVudChhY3RpdmVDaGFuZ2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KGFjdGl2ZUNoYW5nZSk7XG4gIH1cblxuICBwdWJsaWMgb25Gb3JtU3VibWl0RXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU3VibWl0LmVtaXQoKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2XG4gICpuZ0lmPVwie1xuICAgIGNhbkFzc2lnblVzZXJUb1Rhc2s6IGNhbkFzc2lnblVzZXJUb1Rhc2skIHwgYXN5bmMsXG4gICAgaW50ZXJtZWRpYXRlU2F2ZVZhbHVlOiBpbnRlcm1lZGlhdGVTYXZlVmFsdWUkIHwgYXN5bmMsXG4gICAgdGFzazogdGFzayQgfCBhc3luYyxcbiAgICB0YXNrQW5kUHJvY2Vzc0xpbms6IHRhc2tBbmRQcm9jZXNzTGluayQgfCBhc3luYyxcbiAgICBjYW5Nb2RpZnlUYXNrOiBjYW5Nb2RpZnlUYXNrJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbFwiXG4+XG4gIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbF9faGVhZGVyXCI+XG4gICAgPHZhbHRpbW8tdGFzay1kZXRhaWwtaW50ZXJtZWRpYXRlLXNhdmVcbiAgICAgICpuZ0lmPVwiZW5hYmxlSW50ZXJtZWRpYXRlU2F2ZVwiXG4gICAgICBbdGFza0FuZFByb2Nlc3NMaW5rXT1cIm9icy50YXNrQW5kUHJvY2Vzc0xpbmtcIlxuICAgICAgKGN1cnJlbnRJbnRlcm1lZGlhdGVTYXZlRXZlbnQpPVwib25DdXJyZW50SW50ZXJtZWRpYXRlU2F2ZUV2ZW50KCRldmVudClcIlxuICAgID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtaW50ZXJtZWRpYXRlLXNhdmU+XG5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cImdob3N0XCIgW2ljb25Pbmx5XT1cInRydWVcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiY2xvc2VcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9zZWN0aW9uPlxuXG4gIDxzZWN0aW9uXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItZGV0YWlsLXRhc2stZGV0YWlsX19ib2R5XCJcbiAgICBbY2xhc3MudmFsdGltby1kb3NzaWVyLWRldGFpbC10YXNrLWRldGFpbF9fYm9keS0tY29tcGFjdF09XCJjb21wYWN0TW9kZSQgfCBhc3luY1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+XG4gICAgICA8cCBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1kZXRhaWwtdGFzay1kZXRhaWxfX3RpdGxlXCI+e3sgcGFnZVZhbHVlKCk/LnRpdGxlIH19PC9wPlxuXG4gICAgICA8cCBjbGFzcz1cImNkcy0tbW9kYWwtaGVhZGVyX19sYWJlbCBjZHMtLXR5cGUtZGVsdGFcIj57eyBwYWdlVmFsdWUoKT8uc3VidGl0bGUgfX08L3A+XG5cbiAgICAgIDxwICpuZ0lmPVwib2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZVwiIGNsYXNzPVwiY2RzLS1tb2RhbC1oZWFkZXJfX2xhYmVsXCI+XG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5pbnRlcm1lZGlhdGVTYXZlLmxhc3RTYXZlZEJ5JyB8IHRyYW5zbGF0ZSB9fTpcblxuICAgICAgICB7e1xuICAgICAgICAgIG9icy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUuZWRpdGVkQnlcbiAgICAgICAgICAgID8gb2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZS5lZGl0ZWRCeVxuICAgICAgICAgICAgOiBvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlLmNyZWF0ZWRCeVxuICAgICAgICB9fVxuXG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5pbnRlcm1lZGlhdGVTYXZlLm9uJyB8IHRyYW5zbGF0ZSB9fTpcblxuICAgICAgICB7e1xuICAgICAgICAgIG9icy5pbnRlcm1lZGlhdGVTYXZlVmFsdWUuZWRpdGVkT25cbiAgICAgICAgICAgID8gb2JzLmludGVybWVkaWF0ZVNhdmVWYWx1ZS5lZGl0ZWRPblxuICAgICAgICAgICAgOiBvYnMuaW50ZXJtZWRpYXRlU2F2ZVZhbHVlLmNyZWF0ZWRPblxuICAgICAgICB9fVxuICAgICAgPC9wPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGFzay1hY3Rpb25zXCI+XG4gICAgICAgIEBpZiAob2JzLnRhc2spIHtcbiAgICAgICAgICA8dmFsdGltby1hc3NpZ24tdXNlci10by10YXNrXG4gICAgICAgICAgICBbY2FuQXNzaWduVXNlclRvVGFza109XCJvYnMuY2FuQXNzaWduVXNlclRvVGFza1wiXG4gICAgICAgICAgICBbdGFza0lkXT1cIm9icy50YXNrLmlkXCJcbiAgICAgICAgICAgIFthc3NpZ25lZUlkXT1cIm9icy50YXNrLmFzc2lnbmVlXCJcbiAgICAgICAgICA+PC92YWx0aW1vLWFzc2lnbi11c2VyLXRvLXRhc2s+XG5cbiAgICAgICAgICA8dmFsdGltby1zZXQtdGFzay1kdWUtZGF0ZVxuICAgICAgICAgICAgW2Nhbk1vZGlmeVRhc2tdPVwib2JzLmNhbk1vZGlmeVRhc2tcIlxuICAgICAgICAgID48L3ZhbHRpbW8tc2V0LXRhc2stZHVlLWRhdGU+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHZhbHRpbW8tdGFzay1kZXRhaWwtY29udGVudFxuICAgICAgW3Rhc2tBbmRQcm9jZXNzTGlua109XCJvYnMudGFza0FuZFByb2Nlc3NMaW5rXCJcbiAgICAgIChhY3RpdmVDaGFuZ2UpPVwib25BY3RpdmVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbiAgICAgIChmb3JtU3VibWl0KT1cIm9uRm9ybVN1Ym1pdEV2ZW50KClcIlxuICAgID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtY29udGVudD5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
|