@hmcts/ccd-case-ui-toolkit 7.0.61 → 7.1.0-query-management

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.
Files changed (43) hide show
  1. package/esm2022/lib/app.config.mjs +2 -1
  2. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +2 -2
  3. package/esm2022/lib/shared/components/event-trigger/event-trigger.component.mjs +19 -12
  4. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +15 -1
  5. package/esm2022/lib/shared/components/palette/case-flag/enums/index.mjs +2 -1
  6. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +5 -3
  7. package/esm2022/lib/shared/components/palette/palette.module.mjs +5 -1
  8. package/esm2022/lib/shared/components/palette/query-management/components/index.mjs +2 -1
  9. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +2 -2
  10. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +142 -21
  11. package/esm2022/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.mjs +133 -0
  12. package/esm2022/lib/shared/components/palette/query-management/models/case-queries-collection.model.mjs +1 -1
  13. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +37 -20
  14. package/esm2022/lib/shared/components/palette/query-management/utils/query-management.utils.mjs +67 -5
  15. package/esm2022/lib/shared/domain/user/user-info.model.mjs +1 -1
  16. package/esm2022/lib/shared/services/jurisdiction/jurisdiction.service.mjs +2 -1
  17. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +400 -50
  18. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  19. package/lib/app.config.d.ts +2 -0
  20. package/lib/app.config.d.ts.map +1 -1
  21. package/lib/shared/components/event-trigger/event-trigger.component.d.ts +3 -1
  22. package/lib/shared/components/event-trigger/event-trigger.component.d.ts.map +1 -1
  23. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  24. package/lib/shared/components/palette/case-flag/enums/index.d.ts +1 -0
  25. package/lib/shared/components/palette/case-flag/enums/index.d.ts.map +1 -1
  26. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  27. package/lib/shared/components/palette/palette.module.d.ts +33 -32
  28. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  29. package/lib/shared/components/palette/query-management/components/index.d.ts +1 -0
  30. package/lib/shared/components/palette/query-management/components/index.d.ts.map +1 -1
  31. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +27 -9
  32. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  33. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts +15 -0
  34. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts.map +1 -0
  35. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts +3 -0
  36. package/lib/shared/components/palette/query-management/models/case-queries-collection.model.d.ts.map +1 -1
  37. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +1 -0
  38. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -1
  39. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts +11 -2
  40. package/lib/shared/components/palette/query-management/utils/query-management.utils.d.ts.map +1 -1
  41. package/lib/shared/domain/user/user-info.model.d.ts.map +1 -1
  42. package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
  43. package/package.json +1 -1
@@ -264,8 +264,10 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
264
264
  this.hmctsServiceId = this.route.snapshot.data.eventTrigger.supplementary_data.HMCTSServiceId;
265
265
  }
266
266
  if (this.route.snapshot.data.eventTrigger.case_fields) {
267
- this.flagsData = (this.route.snapshot.data.eventTrigger.case_fields)
268
- .reduce((flags, caseField) => FieldsUtils.extractFlagsDataFromCaseField(flags, caseField, caseField.id, caseField), []);
267
+ this.flagsData = this.route.snapshot.data.eventTrigger.case_fields
268
+ .reduce((flags, caseField) => {
269
+ return FieldsUtils.extractFlagsDataFromCaseField(flags, caseField, caseField.id, caseField);
270
+ }, []);
269
271
  // Set displayContextParameter (to be passed as an input to ManageCaseFlagsComponent for setting correct title)
270
272
  this.displayContextParameter =
271
273
  this.setDisplayContextParameter(this.route.snapshot.data.eventTrigger.case_fields);
@@ -694,4 +696,4 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
694
696
  args: [{ selector: 'ccd-write-case-flag-field', template: "<!-- Error message summary -->\n<div *ngIf=\"errorMessages.length > 0\" class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"govuk-error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div *ngFor=\"let errorMessage of errorMessages\" class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a (click)=\"navigateToErrorElement(errorMessage.fieldId)\" class=\"validation-error\">{{errorMessage.description | rpxTranslate}}</a>\n </li>\n </ul>\n </div>\n</div>\n<div *ngIf=\"!isDisplayContextParameterUpdate\" class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"fieldState\">\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_LOCATION\">\n <ccd-select-flag-location\n [formGroup]=\"caseFlagParentFormGroup\" [flagsData]=\"flagsData\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n [isDisplayContextParameterExternal]=\"isDisplayContextParameterExternal\"\n ></ccd-select-flag-location>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_TYPE\">\n <ccd-select-flag-type [formGroup]=\"caseFlagParentFormGroup\" [jurisdiction]=\"jurisdiction\" [caseTypeId]=\"caseTypeId\"\n [hmctsServiceId]=\"hmctsServiceId\" [isDisplayContextParameterExternal]=\"isDisplayContextParameterExternal\"\n [isDisplayContextParameter2Point1Enabled]=\"isDisplayContextParameter2Point1Enabled\"\n [selectedFlagsLocation]=\"selectedFlagsLocation\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n (flagCommentsOptionalEmitter)=\"onFlagCommentsOptionalEmitted($event)\"></ccd-select-flag-type>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_LANGUAGE_INTERPRETER\">\n <ccd-search-language-interpreter [formGroup]=\"caseFlagParentFormGroup\"\n [flagType]=\"flagType\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\">\n </ccd-search-language-interpreter>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_COMMENTS\">\n <ccd-add-comments [formGroup]=\"caseFlagParentFormGroup\" [optional]=\"flagCommentsOptional\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n [isDisplayContextParameterExternal]=\"isDisplayContextParameterExternal\"\n [isDisplayContextParameter2Point1Enabled]=\"isDisplayContextParameter2Point1Enabled\">\n </ccd-add-comments>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_STATUS\">\n <ccd-confirm-flag-status [formGroup]=\"caseFlagParentFormGroup\" [defaultStatus]=\"flagType.defaultStatus\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-confirm-flag-status>\n </ng-container>\n </div>\n</div>\n<div *ngIf=\"isDisplayContextParameterUpdate\" class=\"form-group\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"fieldState\">\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_MANAGE_CASE_FLAGS\">\n <ccd-manage-case-flags [formGroup]=\"caseFlagParentFormGroup\" [flagsData]=\"flagsData\" [caseTitle]=\"caseTitle\"\n [displayContextParameter]=\"displayContextParameter\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-manage-case-flags>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_UPDATE\">\n <ccd-update-flag [formGroup]=\"caseFlagParentFormGroup\"\n [displayContextParameter]=\"displayContextParameter\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"></ccd-update-flag>\n </ng-container>\n <ng-container *ngSwitchCase=\"caseFlagFieldState.FLAG_UPDATE_WELSH_TRANSLATION\">\n <ccd-update-flag-add-translation-form\n [formGroup]=\"caseFlagParentFormGroup\"\n (caseFlagStateEmitter)=\"onCaseFlagStateEmitted($event)\"\n ></ccd-update-flag-add-translation-form>\n </ng-container>\n </div>\n</div>\n", styles: [".validation-error{cursor:pointer;text-decoration:underline;color:#d4351c}\n"] }]
695
697
  }], () => [{ type: i1.ActivatedRoute }, { type: i2.CaseEditDataService }, { type: i3.CaseFlagStateService }, { type: i4.RpxTranslationService }], null); })();
696
698
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteCaseFlagFieldComponent, { className: "WriteCaseFlagFieldComponent", filePath: "lib/shared/components/palette/case-flag/write-case-flag-field.component.ts", lineNumber: 20 }); })();
697
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUc3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7Ozs7SUNKaEksQUFERixBQURGLEFBREYsOEJBQWtGLFlBQy9CLFNBQzNDLFdBQ2lGO0lBQWhGLDJOQUFTLHNEQUE0QyxLQUFDO0lBQTBC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QVMsQ0FBQztRQUMzRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsb0JBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEtBQUs7WUFDOUYsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7SUFDdEYsQ0FBQztJQUVNLDBCQUEwQixDQUFDLFVBQXVCO1FBQ3ZELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUseUJBQXlCLENBQUM7SUFDN0gsQ0FBQztxRkE5aEJVLDJCQUEyQjs2REFBM0IsMkJBQTJCO1lDOEJ4QyxBQXBDQSxBQVpBLDRFQUFxSywrREFZNUUsK0RBb0NEOztZQWhEbEYsbURBQThCO1lBWTlCLGNBQXNDO1lBQXRDLDJEQUFzQztZQW9DdEMsY0FBcUM7WUFBckMsMERBQXFDOzs7aUZEOUI5QiwyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkI7O2tGQUkxQiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRWRpdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YS9jYXNlLWVkaXQtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENhc2VGaWVsZCwgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZsYWdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZmxhZyc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcyc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2Nhc2UtZmxhZy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGUsIEZsYWdEZXRhaWwsIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgsIEZsYWdzV2l0aEZvcm1Hcm91cFBhdGggfSBmcm9tICcuL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLCBDYXNlRmxhZ0Vycm9yTWVzc2FnZSwgQ2FzZUZsYWdGaWVsZFN0YXRlLCBDYXNlRmxhZ0Zvcm1GaWVsZHMsIENhc2VGbGFnU3RhdHVzIH0gZnJvbSAnLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC13cml0ZS1jYXNlLWZsYWctZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZmllbGRTdGF0ZTogbnVtYmVyO1xuICBwdWJsaWMgY2FzZUZsYWdGaWVsZFN0YXRlID0gQ2FzZUZsYWdGaWVsZFN0YXRlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRGbGFnOiBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoO1xuICBwdWJsaWMgY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIGZsYWdDb21tZW50c09wdGlvbmFsID0gZmFsc2U7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlSWQ6IHN0cmluZztcbiAgcHVibGljIGhtY3RzU2VydmljZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlOiBib29sZWFuO1xuICBwdWJsaWMgaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsOiBib29sZWFuO1xuICBwdWJsaWMgaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkOiBib29sZWFuO1xuICBwdWJsaWMgY2FzZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlVGl0bGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXRlcm1pbmVkTG9jYXRpb246IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGg7XG4gIHByaXZhdGUgYWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQgPSBmYWxzZTtcbiAgLy8gQ29kZSBmb3IgXCJPdGhlclwiIGZsYWcgdHlwZSBhcyBkZWZpbmVkIGluIFJlZmVyZW5jZSBEYXRhXG4gIHByaXZhdGUgcmVhZG9ubHkgb3RoZXJGbGFnVHlwZUNvZGUgPSAnT1QwMDAxJztcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbiA9ICdzZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbic7XG4gIHB1YmxpYyByZWFkb25seSBjYXNlTmFtZU1pc3NpbmcgPSAnQ2FzZSBuYW1lIG1pc3NpbmcnO1xuXG4gIHB1YmxpYyBnZXQgZmxhZ1R5cGUoKTogRmxhZ1R5cGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWUuZmxhZ1R5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkRmxhZ3NMb2NhdGlvbigpOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlLnNlbGVjdGVkTG9jYXRpb247XG4gIH1cblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkRmxhZ3NMb2NhdGlvbihzZWxlY3RlZExvY2F0aW9uOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIHwgbnVsbCkge1xuICAgIGlmICh0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLnNlbGVjdGVkTG9jYXRpb24gPSBzZWxlY3RlZExvY2F0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUVkaXREYXRhU2VydmljZTogQ2FzZUVkaXREYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnU3RhdGVTZXJ2aWNlOiBDYXNlRmxhZ1N0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJweFRyYW5zbGF0aW9uU2VydmljZTogUnB4VHJhbnNsYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gSWYgaXQgaXMgc3RhcnQgb2YgdGhlIGpvdXJuZXkgb3IgbmF2aWdhdGlvbiBmcm9tIGNoZWNrIHlvdXIgYW5zd2VycyBwYWdlIHRoZW4gZmllbGRTdGF0ZVRvTmF2aWdhdGUgcHJvcGVydHlcbiAgICAvLyBpbiBjYXNlIGZsYWcgc3RhdGUgc2VydmljZSB3aWxsIGNvbnRhaW4gdGhlIGZpZWxkIHN0YXRlIHRvIG5hdmlnYXRlIGJhc2VkIG9uIGNyZWF0ZSBvciBtYW5hZ2Ugam91cm5leVxuICAgIHRoaXMuZmllbGRTdGF0ZSA9IHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UuZmllbGRTdGF0ZVRvTmF2aWdhdGU7XG4gICAgaWYgKHRoaXMuZmllbGRTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT04gfHxcbiAgICAgICAgdGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUykge1xuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XG4gICAgICAvLyBDbGVhciB0aGUgZm9ybSBncm91cCwgZmllbGQgc3RhdGUgdG8gbmF2aWdhdGUgYW5kIHNldCB0aGUgcGFnZSBsb2NhdGlvblxuICAgICAgdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5yZXNldENhY2hlKGAuLi8ke3BhcmFtc1snZWlkJ119LyR7cGFyYW1zWydwYWdlJ119YCk7XG4gICAgfVxuICAgIC8vIFJlYXNzaWduIHRoZSBmb3JtIGdyb3VwIGZyb20gdGhlIGNhc2UgZmxhZyBzdGF0ZSBzZXJ2aWNlXG4gICAgdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cCA9IHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UuZm9ybUdyb3VwO1xuICAgIC8vIENsZWFyIGZvcm0gdmFsaWRhdGlvbiBlcnJvcnMgYXMgYSBuZXcgcGFnZSB3aWxsIGJlIHJlbmRlcmVkIGJhc2VkIG9uIGZpZWxkIHN0YXRlXG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAvLyBDaGVjayBmb3IgZXhpc3RpbmcgRmxhZ0xhdW5jaGVyIGNvbnRyb2wgaW4gcGFyZW50IGFuZCByZW1vdmUgaXQgLSB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBlbnN1cmUgaXRzIGludmFsaWRpdHlcbiAgICAvLyBpcyBzZXQgY29ycmVjdGx5IGF0IHRoZSBzdGFydCwgd2hlbiB0aGUgY29tcG9uZW50IGlzIHJlbG9hZGVkIGFuZCB0aGUgY29udHJvbCBpcyByZS1yZWdpc3RlcmVkLiBPdGhlcndpc2UsIHRoZVxuICAgIC8vIHZhbGlkYXRvciBzdGF0ZSBnZXRzIGNhcnJpZWQgb3ZlclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCAmJiB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5jYXNlRmllbGQuaWQpKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKHRoaXMuY2FzZUZpZWxkLmlkKTtcbiAgICB9XG4gICAgLy8gRnJvbSB0aGlzIHBvaW50LCB0aGlzLmZvcm1Hcm91cCByZWZlcnMgdG8gdGhlIEZvcm1Hcm91cCBmb3IgdGhlIEZsYWdMYXVuY2hlciBmaWVsZCwgbm90IHRoZSBwYXJlbnQgRm9ybUdyb3VwXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUdyb3VwKHt9LCB7XG4gICAgICB2YWxpZGF0b3JzOiAoXzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGFuIGVycm9yIHRvIG1hcmsgdGhlIEZvcm1Hcm91cCBhcyBpbnZhbGlkIGlmIG5vdCBhbGwgQ2FzZSBGbGFnIHN0YWdlcyBoYXZlIGJlZW4gY29tcGxldGVkXG4gICAgICAgICAgcmV0dXJuIHsgbm90QWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQ6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9KSwgdHJ1ZSkgYXMgRm9ybUdyb3VwO1xuXG4gICAgLy8gR2V0IHRoZSBjYXNlIHR5cGUgSUQgZnJvbSB0aGUgQ2FzZVZpZXcgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhIChyZXF1aXJlZCBmb3IgcmV0cmlldmluZyB0aGUgYXZhaWxhYmxlIGZsYWdcbiAgICAvLyB0eXBlcyBmb3IgYSBjYXNlKVxuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZSAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUpIHtcbiAgICAgIHRoaXMuY2FzZVR5cGVJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZS5pZDtcbiAgICAgIC8vIEdldCB0aGUganVyaXNkaWN0aW9uIChyZXF1aXJlZCBmb3IgcmV0cmlldmluZyB0aGUgYXZhaWxhYmxlIGZsYWcgdHlwZXMgaWYgdW5hYmxlIHRvIGRldGVybWluZSB1c2luZyBjYXNlIHR5cGUgSUQpXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmp1cmlzZGljdGlvbikge1xuICAgICAgICB0aGlzLmp1cmlzZGljdGlvbiA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEV4dHJhY3QgYWxsIGZsYWdzLXJlbGF0ZWQgZGF0YSBmcm9tIHRoZSBDYXNlRXZlbnRUcmlnZ2VyIG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YVxuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyKSB7XG4gICAgICAvLyBHZXQgdGhlIEhNQ1RTU2VydmljZUlkIGZyb20gc3VwcGxlbWVudGFyeSBkYXRhLCBpZiBpdCBleGlzdHMgKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZyB0eXBlcyBpblxuICAgICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlLCBvbmx5IGZhbGxpbmcgYmFjayBvbiBjYXNlIHR5cGUgSUQgb3IganVyaXNkaWN0aW9uIGlmIGl0J3Mgbm90IHByZXNlbnQpXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGFcbiAgICAgICAgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGEuSE1DVFNTZXJ2aWNlSWQpIHtcbiAgICAgICAgdGhpcy5obWN0c1NlcnZpY2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuc3VwcGxlbWVudGFyeV9kYXRhLkhNQ1RTU2VydmljZUlkO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykge1xuICAgICAgICB0aGlzLmZsYWdzRGF0YSA9ICgodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykgYXMgQ2FzZUZpZWxkW10pXG4gICAgICAgICAgLnJlZHVjZSgoZmxhZ3MsIGNhc2VGaWVsZCkgPT4gRmllbGRzVXRpbHMuZXh0cmFjdEZsYWdzRGF0YUZyb21DYXNlRmllbGQoZmxhZ3MsIGNhc2VGaWVsZCwgY2FzZUZpZWxkLmlkLCBjYXNlRmllbGQpLCBbXSk7XG5cbiAgICAgICAgLy8gU2V0IGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyICh0byBiZSBwYXNzZWQgYXMgYW4gaW5wdXQgdG8gTWFuYWdlQ2FzZUZsYWdzQ29tcG9uZW50IGZvciBzZXR0aW5nIGNvcnJlY3QgdGl0bGUpXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPVxuICAgICAgICAgIHRoaXMuc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXIodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyBhcyBDYXNlRmllbGRbXSk7XG5cbiAgICAgICAgLy8gU2V0IGJvb2xlYW4gaW5kaWNhdGluZyB0aGUgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciBpcyBcInVwZGF0ZVwiXG4gICAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSA9IHRoaXMuc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUodGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlcik7XG5cbiAgICAgICAgLy8gU2V0IGJvb2xlYW4gaW5kaWNhdGluZyB0aGUgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciBpcyBcImV4dGVybmFsXCJcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwgPSB0aGlzLnNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwodGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlcik7XG5cbiAgICAgICAgLy8gU2V0IGJvb2xlYW4gaW5kaWNhdGluZyB0aGUgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciBpcyBDYXNlIEZsYWdzIHYyLjEgZW5hYmxlZFxuICAgICAgICB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZCA9IHRoaXMuc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZCh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKTtcblxuICAgICAgICAvLyBTZXQgc3RhcnRpbmcgZmllbGQgc3RhdGUgaWYgZmllbGRTdGF0ZSBub3QgdGhlIHJpZ2h0IHZhbHVlXG4gICAgICAgIGlmICghdGhpcy5maWVsZFN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5maWVsZFN0YXRlID0gdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlID8gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1MgOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19MT0NBVElPTjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBjYXNlIHRpdGxlLCB0byBiZSB1c2VkIGJ5IGNoaWxkIGNvbXBvbmVudHNcbiAgICAgICAgdGhpcy5jYXNlVGl0bGVTdWJzY3JpcHRpb24gPSB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZVRpdGxlJC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IHRpdGxlID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FzZVRpdGxlID0gdGl0bGU/Lmxlbmd0aCA+IDAgPyB0aXRsZSA6IHRoaXMuY2FzZU5hbWVNaXNzaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlKGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFIHx8XG4gICAgICBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfRVhURVJOQUwgfHxcbiAgICAgIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbChkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLkNSRUFURV9FWFRFUk5BTCB8fFxuICAgICAgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMO1xuICB9XG5cbiAgcHVibGljIHNldERpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5DUkVBVEVfMl9QT0lOVF8xIHx8XG4gICAgICBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfMl9QT0lOVF8xO1xuICB9XG5cbiAgcHVibGljIG9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoY2FzZUZsYWdTdGF0ZTogQ2FzZUZsYWdTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG5cbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBjYXNlRmxhZ1N0YXRlLmVycm9yTWVzc2FnZXM7XG4gICAgdGhpcy5zZWxlY3RlZEZsYWcgPSBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZztcblxuICAgIC8vIFZhbGlkYXRpb24gc3VjY2VlZGVkOyBwcm9jZWVkIHRvIG5leHQgc3RhdGUgb3IgZmluYWwgcmV2aWV3IHN0YWdlIChcIkNoZWNrIHlvdXIgYW5zd2Vyc1wiKVxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAodGhpcy5jYW5Nb3ZlVG9GaW5hbFJldmlld1N0YWdlKGNhc2VGbGFnU3RhdGUpKSB7XG4gICAgICAgIHRoaXMubW92ZVRvRmluYWxSZXZpZXdTdGFnZSgpO1xuICAgICAgICAvLyBEb24ndCBtb3ZlIHRvIG5leHQgc3RhdGUgaWYgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFIGFuZCB0aGUgZmxhZyB0eXBlIGlzIGEgcGFyZW50IC0gdGhpc1xuICAgICAgICAvLyBtZWFucyB0aGUgdXNlciBuZWVkcyB0byBzZWxlY3QgZnJvbSB0aGUgbmV4dCBzZXQgb2YgZmxhZyB0eXBlcyBiZWZvcmUgdGhleSBjYW4gbW92ZSBvblxuICAgICAgfSBlbHNlIGlmICghY2FzZUZsYWdTdGF0ZS5pc1BhcmVudEZsYWdUeXBlKSB7XG4gICAgICAgIC8vIFByb2NlZWQgdG8gbmV4dCBzdGF0ZVxuICAgICAgICB0aGlzLnByb2NlZWRUb05leHRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjYW5Nb3ZlVG9GaW5hbFJldmlld1N0YWdlKGNhc2VGbGFnU3RhdGU6IENhc2VGbGFnU3RhdGUpOiBib29sZWFuIHtcbiAgICAvLyBJZiB0aGUgam91cm5leSBpcyByZXF1ZXN0IHN1cHBvcnQgb3IgbWFuYWdlIHN1cHBvcnRcbiAgICAvLyBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgaXMgZWl0aGVyIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTIG9yIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURVxuICAgIC8vIHRoZW4gbW92ZSB0byBmaW5hbCByZXZpZXcgc3RhZ2VcbiAgICBpZiAodGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwpIHtcbiAgICAgIHJldHVybiBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTIHx8XG4gICAgICAgIGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBvbmUgb2Y6XG4gICAgLy8gKiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19TVEFUVVMgQU5EIENhc2UgRmxhZ3MgdjIuMSBpcyBlbmFibGVkXG4gICAgLy8gKiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyBBTkQgQ2FzZSBGbGFncyB2Mi4xIGlzIG5vdCBlbmFibGVkXG4gICAgLy8gKiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEUgYW5kIFdlbHNoIHRyYW5zbGF0aW9uIGNoZWNrYm94IGlzIG5vdCBzZWxlY3RlZFxuICAgIC8vICogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFX1dFTFNIX1RSQU5TTEFUSU9OXG4gICAgLy8gdGhlbiBtb3ZlIHRvIGZpbmFsIHJldmlldyBzdGFnZVxuICAgIHJldHVybiAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PVxuICAgICAgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfU1RBVFVTICYmIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkKSB8fFxuICAgICAgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT1cbiAgICAgICAgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFMgJiYgIXRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkKSB8fFxuICAgICAgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFICYmXG4gICAgICAgICF0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEKT8udmFsdWUpIHx8XG4gICAgICBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURV9XRUxTSF9UUkFOU0xBVElPTjtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZWVkVG9OZXh0U3RhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQXRGaW5hbFN0YXRlKCkpIHtcbiAgICAgIC8vIFNraXAgdGhlIFwibGFuZ3VhZ2UgaW50ZXJwcmV0ZXJcIiBzdGF0ZSBpZiBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUgYW5kIHRoZSBmbGFnIHR5cGUgZG9lc24ndFxuICAgICAgLy8gaGF2ZSBhIFwibGlzdCBvZiB2YWx1ZXNcIiAtIGN1cnJlbnRseSwgdGhpcyBpcyBwcmVzZW50IG9ubHkgZm9yIHRob3NlIGZsYWcgdHlwZXMgdGhhdCByZXF1aXJlIGxhbmd1YWdlIGludGVycHJldGVyXG4gICAgICAvLyBzZWxlY3Rpb25cbiAgICAgIGlmICh0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUgJiYgIXRoaXMuZmxhZ1R5cGU/Lmxpc3RPZlZhbHVlcykge1xuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGbGFnc0Nhc2VGaWVsZFZhbHVlKCk6IHZvaWQge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogc3dpdGNoLWRlZmF1bHRcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRTdGF0ZSkge1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19TVEFUVVM6XG4gICAgICAgIHRoaXMuYWRkRmxhZ1RvQ29sbGVjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFM6XG4gICAgICAgIGlmICh0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCB8fCAhdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmFkZEZsYWdUb0NvbGxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5tYW5hZ2VGbGFnRmluYWxTdGF0ZTpcbiAgICAgICAgdGhpcy51cGRhdGVGbGFnSW5Db2xsZWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRGbGFnVG9Db2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBubyBtb3JlIHRoYW4gb25lIG5ldyBmbGFnIGlzIGJlaW5nIGFkZGVkIGF0IGEgdGltZSwgYnkgaXRlcmF0aW5nIHRocm91Z2ggZWFjaCBGbGFncyBjYXNlIGZpZWxkIGFuZCByZW1vdmluZ1xuICAgIC8vIGFueSBwcmV2aW91cyBlbnRyeSBmcm9tIHRoZSBkZXRhaWxzIGFycmF5IHdoZXJlIHRoYXQgZW50cnkgaGFzIG5vIGlkIChoZW5jZSBpdCBpcyBuZXcgLSBhbmQgdGhlcmUgc2hvdWxkIGJlIG9ubHlcbiAgICAvLyBvbmUgc3VjaCBlbnRyeSkuIChUaGlzIHNjZW5hcmlvIG9jY3VycyBpZiB0aGUgdXNlciByZXBlYXRzIHRoZSBDYXNlIEZsYWcgY3JlYXRpb24gam91cm5leSBieSB1c2luZyB0aGUgXCJDaGFuZ2VcIlxuICAgIC8vIGxpbmsgYW5kIHNlbGVjdHMgZWl0aGVyIHRoZSBzYW1lIGZsYWcgbG9jYXRpb24gYXMgYmVmb3JlIG9yIGEgZGlmZmVyZW50IG9uZS4pXG4gICAgdGhpcy5mbGFnc0RhdGEuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAvLyBVc2UgdGhlIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIHByb3BlcnR5IGZvciBlYWNoIEZsYWdzIGNhc2UgZmllbGQgdG8gZHJpbGwgZG93biB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZVxuICAgICAgLy8gQ2FzZUZpZWxkIHZhbHVlIHRvIHJlbW92ZSB0aGUgbmV3IHZhbHVlIGZyb21cbiAgICAgIGxldCB2YWx1ZSA9IGluc3RhbmNlLmNhc2VGaWVsZD8udmFsdWU7XG4gICAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGluc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGhUb1ZhbHVlLnNsaWNlKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IHZhbHVlID0gdmFsdWVbcGFydF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlPy5kZXRhaWxzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXdGbGFnRGV0YWlsID0gdmFsdWUuZGV0YWlscy5maW5kSW5kZXgoZWxlbWVudCA9PiAhZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG4gICAgICAgIGlmIChpbmRleE9mTmV3RmxhZ0RldGFpbCA+IC0xKSB7XG4gICAgICAgICAgdmFsdWUuZGV0YWlscy5zcGxpY2UoaW5kZXhPZk5ld0ZsYWdEZXRhaWwsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3JtVmFsdWVzID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWU7XG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGxvY2F0aW9uIC0gaW50ZXJuYWwgb3IgZXh0ZXJuYWwgLSBmb3IgdGhlIG5ldyBmbGFnLiBJZiByZXR1cm5lZCBhcyB1bmRlZmluZWQsIHRoaXNcbiAgICAvLyBpbmRpY2F0ZXMgYSBjb25maWd1cmF0aW9uIGVycm9yIHdpdGggdGhlIGV4dGVybmFsIGBGbGFnc2Agb2JqZWN0IGluc3RhbmNlXG4gICAgdGhpcy5kZXRlcm1pbmVkTG9jYXRpb24gPVxuICAgICAgdGhpcy5kZXRlcm1pbmVMb2NhdGlvbkZvckZsYWcoIXRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsLCB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbiwgZm9ybVZhbHVlcyk7XG4gICAgLy8gRG8gbm90IG11dGF0ZSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbjsgaWYgdGhpcy5zZWxlY3RlZEZsYWdzTG9jYXRpb24gYmVjb21lcyB1bmRlZmluZWQsXG4gICAgLy8gZGV0ZXJtaW5lTG9jYXRpb25Gb3JGbGFnKCkgd2lsbCBubyBsb25nZXIgZG8gYW55dGhpbmcgd2hlbiBjYWxsZWQgd2l0aCBpdCAtIGFuZCB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZSB3aWxsXG4gICAgLy8gbm90IGJlIHJlZGlzcGxheWVkIGlmIHRoZSB1c2VyIGNsaWNrcyBcIk5leHRcIiBhZ2FpbiBvbiB0aGUgXCJBZGQgY29tbWVudHNcIiBwYWdlLCBhZnRlciB0aGUgZXJyb3IgaXMgZmlyc3Qgc2hvd25cblxuICAgIGlmICh0aGlzLmRldGVybWluZWRMb2NhdGlvbikge1xuICAgICAgY29uc3QgcGF0aCA9IHRoaXMuZGV0ZXJtaW5lZExvY2F0aW9uLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgY29uc3QgZmxhZ0RhdGFSZWYgPSB0aGlzLmZsYWdzRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5wYXRoVG9GbGFnc0Zvcm1Hcm91cCA9PT0gcGF0aCk7XG4gICAgICBsZXQgZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IGZsYWdEYXRhUmVmLmNhc2VGaWVsZD8udmFsdWU7XG4gICAgICAvLyBVc2UgdGhlIHBhdGhUb0ZsYWdzRm9ybUdyb3VwIHByb3BlcnR5IGZyb20gdGhlIHNlbGVjdGVkIGZsYWcgbG9jYXRpb24gdG8gZHJpbGwgZG93biB0byB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZVxuICAgICAgLy8gQ2FzZUZpZWxkIHZhbHVlIHRvIGFwcGx5IGNoYW5nZXMgdG9cbiAgICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICAgIGlmIChwYXRoLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgICB9XG4gICAgICAvLyBJZiB0aGUgQ2FzZUZpZWxkIGZvciB0aGUgc2VsZWN0ZWQgZmxhZ3MgbG9jYXRpb24gaGFzIG5vIHZhbHVlLCBzZXQgaXQgdG8gYW4gZW1wdHkgb2JqZWN0IHNvIGl0IGNhbiBiZSBwb3B1bGF0ZWRcbiAgICAgIC8vIHdpdGggZmxhZyBkZXRhaWxzXG4gICAgICBpZiAoIWZsYWdzQ2FzZUZpZWxkVmFsdWUpIHtcbiAgICAgICAgZmxhZ0RhdGFSZWYuY2FzZUZpZWxkLnZhbHVlID0ge307XG4gICAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSBmbGFnRGF0YVJlZi5jYXNlRmllbGQudmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgYSBkZXRhaWxzIGFycmF5IGlmIG9uZSBkb2VzIG5vdCBleGlzdFxuICAgICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlLmhhc093blByb3BlcnR5KCdkZXRhaWxzJykpIHtcbiAgICAgICAgZmxhZ3NDYXNlRmllbGRWYWx1ZS5kZXRhaWxzID0gW107XG4gICAgICB9XG4gICAgICAvLyBQb3B1bGF0ZSBuZXcgRmxhZ0RldGFpbCBpbnN0YW5jZSBhbmQgYWRkIHRvIHRoZSBGbGFncyBkYXRhIHdpdGhpbiB0aGUgQ2FzZUZpZWxkIGluc3RhbmNlIG9mIHRoZSBzZWxlY3RlZCBmbGFnXG4gICAgICAvLyBsb2NhdGlvblxuICAgICAgZmxhZ3NDYXNlRmllbGRWYWx1ZS5kZXRhaWxzLnB1c2goe3ZhbHVlOiB0aGlzLnBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCl9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgY29ycmVjdCBsb2NhdGlvbiAoaS5lLiBlaXRoZXIgdGhlIGludGVybmFsIG9yIGV4dGVybmFsIGluc3RhbmNlIG9mIGEgYEZsYWdzYCBvYmplY3QpIGZvciBhIG5ldyBmbGFnLFxuICAgKiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZzpcbiAgICpcbiAgICogKiBXaGV0aGVyIHRoZSB1c2VyIGlzIGludGVybmFsIG9yIGV4dGVybmFsIChubyBlZmZlY3QgZm9yIGV4dGVybmFsIHVzZXJzIGJlY2F1c2UgdGhleSBjYW4gYWNjZXNzIG9ubHkgdGhlIGV4dGVybmFsXG4gICAqIGluc3RhbmNlKVxuICAgKiAqIFRoZSBleGlzdGVuY2Ugb2YgdHdvIGBGbGFnc2Agb2JqZWN0cyAtIG9uZSBpbnRlcm5hbCwgb25lIGV4dGVybmFsIC0gbGlua2VkIGJ5IHRoZSBzYW1lIGBncm91cElkYDtcbiAgICogKiBGb3IgZmxhZ3Mgb2YgdHlwZSBcIk90aGVyXCIsIHdoZXRoZXIgXCJvbmx5IHZpc2libGUgdG8gSE1DVFMgc3RhZmZcIiBoYXMgYmVlbiBzZWxlY3RlZCBvciBub3QgKFwiT3RoZXJcIiBkZWZhdWx0cyB0b1xuICAgKiBleHRlcm5hbGx5IHZpc2libGUpO1xuICAgKiAqIEZvciBhbGwgb3RoZXIgZmxhZyB0eXBlcywgdGhlIHZhbHVlIG9mIHRoZSBgZXh0ZXJuYWxseUF2YWlsYWJsZWAgYXR0cmlidXRlLlxuICAgKlxuICAgKiBJZiB0aGUgdXNlciBpcyBpbnRlcm5hbCB0aGVuIHRoZSBuZXcgZmxhZyBzaG91bGQgYmUgYXNzaWduZWQgdG8gdGhlIGV4dGVybmFsIGBGbGFnc2AgaW5zdGFuY2UgaWY6XG4gICAqICogU3VjaCBhbiBpbnN0YW5jZSBleGlzdHMsIEFORFxuICAgKiAqIFRoZSBmbGFnIHR5cGUgaXMgXCJPdGhlclwiIGFuZCBcIm9ubHkgdmlzaWJsZSB0byBITUNUUyBzdGFmZlwiIHdhcyBub3Qgc2VsZWN0ZWQsIE9SXG4gICAqICogVGhlIGZsYWcgdHlwZSBpcyBub3QgXCJPdGhlclwiIGFuZCBgZXh0ZXJuYWxseUF2YWlsYWJsZWAgaXMgYHRydWVgLlxuICAgKlxuICAgKiBAcGFyYW0gaXNJbnRlcm5hbFVzZXIgV2hldGhlciB0aGUgY3VycmVudCB1c2VyIGlzIGludGVybmFsIG9yIG5vdFxuICAgKiBAcGFyYW0gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbG9jYXRpb24gZm9yIHRoZSBuZXcgZmxhZ1xuICAgKiBAcGFyYW0gZm9ybVZhbHVlcyBBbGwgdGhlIHZhbHVlcyBmcm9tIHRoZSBgY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBgXG4gICAqIEByZXR1cm5zIFRoZSBjb3JyZWN0bHkgZGV0ZXJtaW5lZCBsb2NhdGlvbjogZWl0aGVyIHRoZSBpbnRlcm5hbCBvciBleHRlcm5hbCBsb2NhdGlvbiAoaWYgb25lIGV4aXN0cykgd2hlcmUgYSBncm91cElkXG4gICAqIGlzIHByZXNlbnQ7IHRoZSBvcmlnaW5hbCBsb2NhdGlvbiBvdGhlcndpc2UuICoqTm90ZToqKiBJZiB0aGUgZXh0ZXJuYWwgbG9jYXRpb24gaXMgcmV0dXJuZWQgYXMgdW5kZWZpbmVkLCB0aGlzXG4gICAqIGluZGljYXRlcyBhIGNvbmZpZ3VyYXRpb24gZXJyb3JcbiAgICovXG4gIHB1YmxpYyBkZXRlcm1pbmVMb2NhdGlvbkZvckZsYWcoaXNJbnRlcm5hbFVzZXI6IGJvb2xlYW4sIHNlbGVjdGVkRmxhZ3NMb2NhdGlvbjogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCxcbiAgICBmb3JtVmFsdWVzOiBhbnkpOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIHtcbiAgICAgIGlmIChpc0ludGVybmFsVXNlciAmJiBzZWxlY3RlZEZsYWdzTG9jYXRpb24/LmZsYWdzPy5ncm91cElkKSB7XG4gICAgICAgIGlmICgoZm9ybVZhbHVlcz8uZmxhZ1R5cGU/LmZsYWdDb2RlID09PSB0aGlzLm90aGVyRmxhZ1R5cGVDb2RlICYmICFmb3JtVmFsdWVzPy5mbGFnSXNWaXNpYmxlSW50ZXJuYWxseU9ubHkpIHx8XG4gICAgICAgICAgKGZvcm1WYWx1ZXM/LmZsYWdUeXBlPy5mbGFnQ29kZSAhPT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJiBmb3JtVmFsdWVzPy5mbGFnVHlwZT8uZXh0ZXJuYWxseUF2YWlsYWJsZSkpIHtcbiAgICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgZmluZCB0aGUgY29ycmVzcG9uZGluZyBmbGFncyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBncm91cElkIGFuZCBleHRlcm5hbCB2aXNpYmlsaXR5IChzaG91bGQgYmVcbiAgICAgICAgICAgIC8vIG9ubHkgb25lIHVubGVzcyBtaXNjb25maWd1cmVkKVxuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBzZWxlY3RlZEZsYWdzTG9jYXRpb24uZmxhZ3MudmlzaWJpbGl0eT8udG9Mb3dlckNhc2UoKSA9PT0gJ2V4dGVybmFsJ1xuICAgICAgICAgICAgICA/IHNlbGVjdGVkRmxhZ3NMb2NhdGlvblxuICAgICAgICAgICAgICA6IHRoaXMuZmxhZ3NEYXRhLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZikgPT4gZi5mbGFncz8uZ3JvdXBJZCA9PT0gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLmZsYWdzLmdyb3VwSWQgJiZcbiAgICAgICAgICAgICAgICBmLmZsYWdzPy52aXNpYmlsaXR5Py50b0xvd2VyQ2FzZSgpID09PSAnZXh0ZXJuYWwnKT8uWzBdO1xuICAgICAgICAgICAgLy8gSWYgbG9jYXRpb24gaXMgbm90IHRydXRoeSwgc2V0IGFuIGVycm9yIG1lc3NhZ2UgYW5kIG1ha2UgY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgaW52YWxpZCB0byBwcmV2ZW50XG4gICAgICAgICAgICAvLyBuYXZpZ2F0aW9uIHRvIHRoZSBzdW1tYXJ5IHBhZ2UgKGJ5IG5vdCB0cmlnZ2VyaW5nIHRoZSBzdWJtaXQgZXZlbnQpXG4gICAgICAgICAgICBpZiAoIWxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IENhc2VGbGFnRXJyb3JNZXNzYWdlLk5PX0VYVEVSTkFMX0ZMQUdTX0NPTExFQ1RJT05cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICBub0V4dGVybmFsQ29sbGVjdGlvbjogdHJ1ZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBuZWNlc3NhcnksIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZ3Mgb2JqZWN0IHdpdGggdGhlIHNhbWUgZ3JvdXBJZCBhbmQgaW50ZXJuYWwgdmlzaWJpbGl0eSAoc2hvdWxkIGJlXG4gICAgICAgICAgLy8gb25seSBvbmUgdW5sZXNzIG1pc2NvbmZpZ3VyZWQpOyBhc3N1bWVkIHRvIGJlIGludGVybmFsIGlmIHZpc2liaWxpdHkgYXR0cmlidXRlIGlzIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBzZWxlY3RlZEZsYWdzTG9jYXRpb24uZmxhZ3MudmlzaWJpbGl0eT8udG9Mb3dlckNhc2UoKSAhPT0gJ2V4dGVybmFsJ1xuICAgICAgICAgICAgPyBzZWxlY3RlZEZsYWdzTG9jYXRpb25cbiAgICAgICAgICAgIDogdGhpcy5mbGFnc0RhdGEuZmlsdGVyKFxuICAgICAgICAgICAgICAoZikgPT4gZi5mbGFncz8uZ3JvdXBJZCA9PT0gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLmZsYWdzLmdyb3VwSWQgJiZcbiAgICAgICAgICAgICAgZi5mbGFncz8udmlzaWJpbGl0eT8udG9Mb3dlckNhc2UoKSAhPT0gJ2V4dGVybmFsJyk/LlswXTtcbiAgICAgICAgICAvLyBJZiBsb2NhdGlvbiBpcyBub3QgdHJ1dGh5LCBzZXQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgbWFrZSBjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cCBpbnZhbGlkIHRvIHByZXZlbnRcbiAgICAgICAgICAvLyBuYXZpZ2F0aW9uIHRvIHRoZSBzdW1tYXJ5IHBhZ2UgKGJ5IG5vdCB0cmlnZ2VyaW5nIHRoZSBzdWJtaXQgZXZlbnQpXG4gICAgICAgICAgaWYgKCFsb2NhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBDYXNlRmxhZ0Vycm9yTWVzc2FnZS5OT19JTlRFUk5BTF9GTEFHU19DT0xMRUNUSU9OXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgbm9JbnRlcm5hbENvbGxlY3Rpb246IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzZWxlY3RlZEZsYWdzTG9jYXRpb247XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBmbGFnIGlzIGJlaW5nIHVwZGF0ZWQgYXQgYSB0aW1lLCBieSBpdGVyYXRpbmcgdGhyb3VnaCBlYWNoIEZsYWdzIGNhc2UgZmllbGQgYW5kIHJlc2V0dGluZ1xuICAgIC8vIHRoZSBkZXNjcmlwdGlvbiwgY29tbWVudHMsIHN0YXR1cywgYW5kIGRhdGUvdGltZSBtb2RpZmllZCAoaWYgcHJlc2VudCkgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGRldGFpbHMgYXJyYXksIHdpdGhcbiAgICAvLyBvcmlnaW5hbCB2YWx1ZXMgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXR0ZWRfdmFsdWUgcHJvcGVydHkuIChUaGlzIHNjZW5hcmlvIG9jY3VycyBpZiB0aGUgdXNlciByZXBlYXRzIHRoZVxuICAgIC8vIE1hbmFnZSBDYXNlIEZsYWcgam91cm5leSBieSB1c2luZyB0aGUgXCJDaGFuZ2VcIiBsaW5rIGFuZCBzZWxlY3RzIGEgZGlmZmVyZW50IGZsYWcgdG8gdXBkYXRlLilcbiAgICB0aGlzLmZsYWdzRGF0YS5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZm9yIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgICAvLyBDYXNlRmllbGQgdmFsdWUgZm9yIHdoaWNoIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlc1xuICAgICAgbGV0IHZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkPy52YWx1ZTtcbiAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IGluc3RhbmNlLmNhc2VGaWVsZD8uZm9ybWF0dGVkX3ZhbHVlO1xuICAgICAgY29uc3QgcGF0aFRvVmFsdWUgPSBpbnN0YW5jZS5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAgIC8vIFJvb3QtbGV2ZWwgRmxhZ3MgQ2FzZUZpZWxkcyBkb24ndCBoYXZlIGEgZG90LWRlbGltaXRlZCBwYXRoIC0ganVzdCB0aGUgQ2FzZUZpZWxkIElEIGl0c2VsZiAtIHNvIGRvbid0IGRyaWxsIGRvd25cbiAgICAgIGlmIChwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgPiAtMSkge1xuICAgICAgICBwYXRoVG9WYWx1ZS5zbGljZShwYXRoVG9WYWx1ZS5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZVtwYXJ0XTtcbiAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWVbcGFydF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZT8uZGV0YWlscz8ubGVuZ3RoID4gMCAmJiBmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5kZXRhaWxzLmZvckVhY2goZmxhZ0RldGFpbCA9PiB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxGbGFnRGV0YWlsID0gZm9ybWF0dGVkVmFsdWUuZGV0YWlscz8uZmluZChkZXRhaWwgPT4gZGV0YWlsLmlkID09PSBmbGFnRGV0YWlsLmlkKTtcbiAgICAgICAgICBpZiAob3JpZ2luYWxGbGFnRGV0YWlsKSB7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLm90aGVyRGVzY3JpcHRpb24gPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/Lm90aGVyRGVzY3JpcHRpb24gfHwgbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUub3RoZXJEZXNjcmlwdGlvbl9jeSA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8ub3RoZXJEZXNjcmlwdGlvbl9jeSB8fCBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5mbGFnQ29tbWVudCA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uZmxhZ0NvbW1lbnQgfHwgbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZmxhZ0NvbW1lbnRfY3kgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmZsYWdDb21tZW50X2N5IHx8IG51bGw7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLmZsYWdVcGRhdGVDb21tZW50ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnVXBkYXRlQ29tbWVudCB8fCBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5zdGF0dXMgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LnN0YXR1cztcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZGF0ZVRpbWVNb2RpZmllZCA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uZGF0ZVRpbWVNb2RpZmllZCB8fCBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRmxhZykge1xuICAgICAgdGhpcy5zZWxlY3RlZEZsYWcgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbikudmFsdWUgYXMgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aDtcbiAgICB9XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZy5jYXNlRmllbGQ/LnZhbHVlO1xuICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZnJvbSB0aGUgc2VsZWN0ZWQgZmxhZyBsb2NhdGlvbiB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgLy8gQ2FzZUZpZWxkIHZhbHVlIHRvIGFwcGx5IGNoYW5nZXMgdG9cbiAgICBjb25zdCBwYXRoID0gdGhpcy5zZWxlY3RlZEZsYWcucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgIGlmIChwYXRoLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICBwYXRoLnNsaWNlKHBhdGguaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKHBhcnQgPT4gZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IGZsYWdzQ2FzZUZpZWxkVmFsdWVbcGFydF0pO1xuICAgIH1cbiAgICBpZiAoZmxhZ3NDYXNlRmllbGRWYWx1ZSkge1xuICAgICAgY29uc3QgZmxhZ0RldGFpbFRvVXBkYXRlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZS5kZXRhaWxzPy5maW5kKFxuICAgICAgICBkZXRhaWwgPT4gZGV0YWlsLmlkID09PSB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheT8uZmxhZ0RldGFpbD8uaWQpO1xuICAgICAgaWYgKGZsYWdEZXRhaWxUb1VwZGF0ZSkge1xuICAgICAgICAvLyBDYWNoZSB0aGUgKm9yaWdpbmFsKiBzdGF0dXMgb2YgdGhlIGZsYWcgYmVmb3JlIGl0IGlzIG1vZGlmaWVkLiBUaGlzIGlzIG5lZWRlZCBpZiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBmbGFnIHN0YXR1c1xuICAgICAgICAvLyB0aGVuIGRlY2lkZXMgdG8gcmV0dXJuIHRvIGFueSBwYXJ0IG9mIHRoZSBmbGFnIHVwZGF0ZSBqb3VybmV5LiBUaGUgTWFuYWdlQ2FzZUZsYWdzQ29tcG9uZW50IGFuZCBVcGRhdGVGbGFnQ29tcG9uZW50XG4gICAgICAgIC8vIHNob3VsZCByZWZlciB0byBhIGZsYWcncyBvcmlnaW5hbCBzdGF0dXMsIG5vdCB0aGUgb25lIHNldCB2aWEgdGhlIFVJIGJlY2F1c2UgdGhpcyBoYXNuJ3QgYmVlbiBwZXJzaXN0ZWQgeWV0XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGbGFnLm9yaWdpbmFsU3RhdHVzID0gZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlPy5zdGF0dXM7XG4gICAgICAgIC8vIFVwZGF0ZSBkZXNjcmlwdGlvbiBmaWVsZHMgb25seSBpZiBmbGFnIHR5cGUgaXMgXCJPdGhlclwiIChmbGFnIGNvZGUgT1QwMDAxKTsgdGhlc2UgZmllbGRzIGFwcGx5IG9ubHkgdG8gdGhhdCBmbGFnIHR5cGVcbiAgICAgICAgLy8gSWYgdGhlaXIgRm9ybUNvbnRyb2xzIGRvbid0IGV4aXN0LCBpdCBtZWFucyB0aGVzZSBmaWVsZHMgd2VyZW4ndCB2aXNpdGVkIGFzIHBhcnQgb2YgdGhlIFwiVXBkYXRlIEZsYWdcIiBqb3VybmV5LCBzbyBkb1xuICAgICAgICAvLyAqbm90KiB1cGRhdGUgdGhlaXIgdmFsdWVzIChvdGhlcndpc2UgdGhleSB3aWxsIGJlY29tZSB1bmRlZmluZWQpXG4gICAgICAgIGlmIChmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWU/LmZsYWdDb2RlID09PSB0aGlzLm90aGVyRmxhZ1R5cGVDb2RlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5PVEhFUl9GTEFHX0RFU0NSSVBUSU9OKSkge1xuICAgICAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLm90aGVyRGVzY3JpcHRpb24gPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChcbiAgICAgICAgICAgICAgQ2FzZUZsYWdGb3JtRmllbGRzLk9USEVSX0ZMQUdfREVTQ1JJUFRJT04pLnZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLk9USEVSX0ZMQUdfREVTQ1JJUFRJT05fV0VMU0gpKSB7XG4gICAgICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUub3RoZXJEZXNjcmlwdGlvbl9jeSA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICBDYXNlRmxhZ0Zvcm1GaWVsZHMuT1RIRVJfRkxBR19ERVNDUklQVElPTl9XRUxTSCkudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEVuc3VyZSB0aGF0IGFueSBjb21tZW50cyBlbnRlcmVkIHdpdGggbGFuZ3VhZ2Ugc2V0IHRvIFdlbHNoIGRvIG5vdCBlbmQgdXAgaW4gdGhlIEVuZ2xpc2ggY29tbWVudHMgZmllbGRcbiAgICAgICAgaWYgKHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlICE9PSAnY3knKSB7XG4gICAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLmZsYWdDb21tZW50ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTKT8udmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUG9wdWxhdGUgZnJvbSB0aGUgKkVuZ2xpc2gqIGNvbW1lbnRzIGZpZWxkIGlmOlxuICAgICAgICAvLyAqIFRoZSBXZWxzaCBjb21tZW50cyBmaWVsZCBoYXMgbm8gdmFsdWUgKFdlbHNoIGNvbW1lbnRzIGZpZWxkIGFjcXVpcmVzIGEgdmFsdWUgb25seSB3aGVuIGFuIEhNQ1RTIGludGVybmFsIHVzZXIgaGFzXG4gICAgICAgIC8vIGdvbmUgdGhyb3VnaCB0aGUgXCJhZGQgdHJhbnNsYXRpb25cIiBzdGVwIGZvciBNYW5hZ2UgQ2FzZSBGbGFncyksIEFORFxuICAgICAgICAvLyAqIFRoZSBsYW5ndWFnZSBpcyBzZXQgdG8gV2Vsc2hcbiAgICAgICAgLy8gSWYgdGhlIEZvcm1Db250cm9sIGRvZXNuJ3QgZXhpc3QsIGl0IG1lYW5zIHRoaXMgZmllbGQgd2Fzbid0IHZpc2l0ZWQgYXMgcGFydCBvZiB0aGUgXCJVcGRhdGUgRmxhZ1wiIGpvdXJuZXksIHNvIGRvXG4gICAgICAgIC8vICpub3QqIHVwZGF0ZSBpdHMgdmFsdWUgKG90aGVyd2lzZSBpdCB3aWxsIGJlIG92ZXJyaWRkZW4pIC0gdW5sZXNzIHRoZSB1c2VyIGlzIGV4dGVybmFsIEFORCB3b3JraW5nIGluIFdlbHNoXG4gICAgICAgIGlmICh0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNfV0VMU0gpIHx8IHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnY3knKSB7XG4gICAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLmZsYWdDb21tZW50X2N5ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTX1dFTFNIKT8udmFsdWVcbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UU19XRUxTSCk/LnZhbHVlXG4gICAgICAgICAgOiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5J1xuICAgICAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFMpPy52YWx1ZVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5mbGFnVXBkYXRlQ29tbWVudCA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTik/LnZhbHVlO1xuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuc3RhdHVzID0gQ2FzZUZsYWdTdGF0dXNbdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUyk/LnZhbHVlXTtcbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLmRhdGVUaW1lTW9kaWZpZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQXRGaW5hbFN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcbiAgICAgID8gdGhpcy5maWVsZFN0YXRlID09PSB0aGlzLm1hbmFnZUZsYWdGaW5hbFN0YXRlXG4gICAgICA6ICF0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZFxuICAgICAgICA/IHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFNcbiAgICAgICAgOiB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1NUQVRVUztcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KGVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnRJZCkge1xuICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpO1xuICAgICAgaWYgKGh0bWxFbGVtZW50KSB7XG4gICAgICAgIGh0bWxFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIGh0bWxFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVkKF86IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ0NvbW1lbnRzT3B0aW9uYWwgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCk6IEZsYWdEZXRhaWwge1xuICAgIGNvbnN0IGxhbmdTZWFyY2hUZXJtID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWVbJ2xhbmd1YWdlU2VhcmNoVGVybSddO1xuICAgIGNvbnN0IG1hbnVhbExhbmdFbnRyeSA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlWydtYW51YWxMYW5ndWFnZUVudHJ5J107XG4gICAgY29uc3QgZmxhZ1R5cGUgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZVsnZmxhZ1R5cGUnXTtcbiAgICBjb25zdCBvdGhlckRlc2MgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZVsnb3RoZXJEZXNjcmlwdGlvbiddO1xuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5mbGFnVHlwZT8ubmFtZSxcbiAgICAgIG5hbWVfY3k6IGZsYWdUeXBlPy5uYW1lX2N5LFxuICAgICAgLy8gQ3VycmVudGx5LCBzdWJUeXBlVmFsdWUsIHN1YlR5cGVWYWx1ZV9jeSBhbmQgc3ViVHlwZUtleSBhcmUgYXBwbGljYWJsZSBvbmx5IHRvIGxhbmd1YWdlIGZsYWcgdHlwZXNcbiAgICAgIHN1YlR5cGVWYWx1ZTogbGFuZ1NlYXJjaFRlcm0gJiYgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdlbidcbiAgICAgICAgPyBsYW5nU2VhcmNoVGVybS52YWx1ZVxuICAgICAgICA6IG1hbnVhbExhbmdFbnRyeSAmJiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2VuJ1xuICAgICAgICAgID8gbWFudWFsTGFuZ0VudHJ5XG4gICAgICAgICAgOiBudWxsLFxuICAgICAgc3ViVHlwZVZhbHVlX2N5OiBsYW5nU2VhcmNoVGVybSAmJiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5J1xuICAgICAgPyBsYW5nU2VhcmNoVGVybT8udmFsdWVfY3lcbiAgICAgIDogbWFudWFsTGFuZ0VudHJ5ICYmIHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnY3knXG4gICAgICAgID8gbWFudWFsTGFuZ0VudHJ5XG4gICAgICAgIDogbnVsbCxcbiAgICAgIC8vIEZvciB1c2VyLWVudGVyZWQgKGkuZS4gbm9uLVJlZmVyZW5jZSBEYXRhKSBsYW5ndWFnZXMsIHRoZXJlIGlzIG5vIGtleVxuICAgICAgc3ViVHlwZUtleTogbGFuZ1NlYXJjaFRlcm1cbiAgICAgICAgPyBsYW5nU2VhcmNoVGVybS5rZXlcbiAgICAgICAgOiBudWxsLFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbjogZmxhZ1R5cGU/LmZsYWdDb2RlID09PSB0aGlzLm90aGVyRmxhZ1R5cGVDb2RlICYmXG4gICAgICAgIG90aGVyRGVzYyAmJiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2VuJ1xuICAgICAgICA/IG90aGVyRGVzY1xuICAgICAgICAgIDogbnVsbCxcbiAgICAgIG90aGVyRGVzY3JpcHRpb25fY3k6IGZsYWdUeXBlPy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJlxuICAgICAgICBvdGhlckRlc2MgJiYgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeSdcbiAgICAgICAgPyBvdGhlckRlc2NcbiAgICAgICAgOiBudWxsLFxuICAgICAgZmxhZ0NvbW1lbnQ6IHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnZW4nXG4gICAgICAgID8gZm9ybVZhbHVlcz8uZmxhZ0NvbW1lbnRzXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGZsYWdDb21tZW50X2N5OiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5J1xuICAgICAgICA/IGZvcm1WYWx1ZXM/LmZsYWdDb21tZW50c1xuICAgICAgICA6IG51bGwsXG4gICAgICBmbGFnVXBkYXRlQ29tbWVudDogZm9ybVZhbHVlcz8uc3RhdHVzUmVhc29uLFxuICAgICAgZGF0ZVRpbWVDcmVhdGVkOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwYXRoOiBmbGFnVHlwZT8uUGF0aCAmJlxuICAgICAgICBmbGFnVHlwZT8uUGF0aC5tYXAocGF0aFZhbHVlID0+IE9iamVjdC5hc3NpZ24oeyBpZDogbnVsbCwgdmFsdWU6IHBhdGhWYWx1ZSB9KSksXG4gICAgICBoZWFyaW5nUmVsZXZhbnQ6IGZsYWdUeXBlPy5oZWFyaW5nUmVsZXZhbnQgPyAnWWVzJyA6ICdObycsXG4gICAgICBmbGFnQ29kZTogZmxhZ1R5cGU/LmZsYWdDb2RlLFxuICAgICAgLy8gU3RhdHVzIHNob3VsZCBiZSBzZXQgdG8gd2hhdGV2ZXIgdGhlIGRlZmF1bHQgaXMgZm9yIHRoaXMgZmxhZyB0eXBlLCBpZiBmbGFnIGlzIGJlaW5nIGNyZWF0ZWQgYnkgYW4gZXh0ZXJuYWxcbiAgICAgIC8vIHVzZXIsIG90aGVyd2lzZSBpdCBzaG91bGQgYmUgc2V0IHRvIFwiQWN0aXZlXCIgaWYgQ2FzZSBGbGFncyB2Mi4xIGlzIE5PVCBlbmFibGVkLCBvciB0aGUgc2VsZWN0ZWQgc3RhdHVzIGlmIGl0IGlzXG4gICAgICBzdGF0dXM6IHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXG4gICAgICAgID8gZmxhZ1R5cGU/LmRlZmF1bHRTdGF0dXNcbiAgICAgICAgOiAhdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWRcbiAgICAgICAgICA/IENhc2VGbGFnU3RhdHVzLkFDVElWRVxuICAgICAgICAgIDogQ2FzZUZsYWdTdGF0dXNbZm9ybVZhbHVlcz8uc2VsZWN0ZWRTdGF0dXNdLFxuICAgICAgYXZhaWxhYmxlRXh0ZXJuYWxseTogZmxhZ1R5cGU/LmV4dGVybmFsbHlBdmFpbGFibGUgPyAnWWVzJyA6ICdObydcbiAgICB9IGFzIEZsYWdEZXRhaWw7XG4gIH1cblxuICBwdWJsaWMgbW92ZVRvRmluYWxSZXZpZXdTdGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEZsYWdzQ2FzZUZpZWxkVmFsdWUoKTtcbiAgICAvLyBDaGVjayB0aGF0IG5vIGVycm9ycyBoYXZlIGJlZW4gc2V0IG9uIGNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwIChieSBkZXRlcm1pbmVMb2NhdGlvbkZvckZsYWcoKSk7IHByZXZlbnQgbW92aW5nIHRvXG4gICAgLy8gZmluYWwgcmV2aWV3IHN0YWdlIGlmIGVycm9ycyBleGlzdFxuICAgIGlmICghdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5lcnJvcnMpIHtcbiAgICAgIC8vIENsZWFyIHRoZSBcIm5vdEFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkXCIgZXJyb3JcbiAgICAgIHRoaXMuYWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5mb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldFRyaWdnZXJTdWJtaXRFdmVudCh0cnVlKTtcbiAgICAgIC8vIFVwZGF0ZSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbiB3aXRoIHRoZSBjb3JyZWN0bHkgZGV0ZXJtaW5lZCBsb2NhdGlvbiwgc28gdGhlIGNvcnJlY3QgdmFsdWUgaXMgYXZhaWxhYmxlIHRvXG4gICAgICAvLyBSZWFkQ2FzZUZsYWdGaWVsZENvbXBvbmVudCB3aGVuIGl0IGluaXRpYWxpc2VzIHRoZSBDYXNlIEZsYWcgU3VtbWFyeSBwYWdlXG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbiA9IHRoaXMuZGV0ZXJtaW5lZExvY2F0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0aGUgZmllbGRzdGF0ZVRvTmF2aWdhdGUgYXMgdGhlIHdyaXRlIGpvdXJuZXkgY29tcGxldGVzIGF0IHRoaXMgcG9pbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLmZpZWxkU3RhdGVUb05hdmlnYXRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY2FzZVRpdGxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBtYW5hZ2VGbGFnRmluYWxTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLklTX1dFTFNIX1RSQU5TTEFUSU9OX05FRURFRCk/LnZhbHVlXG4gICAgPyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEVfV0VMU0hfVFJBTlNMQVRJT04gOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEU7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXIoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBjYXNlRmllbGRzLmZpbmQoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydGbGFnTGF1bmNoZXInXSkpPy5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyO1xuICB9XG59XG4iLCI8IS0tIEVycm9yIG1lc3NhZ2Ugc3VtbWFyeSAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlcIiBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCIgcm9sZT1cImFsZXJ0XCIgdGFiaW5kZXg9XCItMVwiIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgIHt7J1RoZXJlIGlzIGEgcHJvYmxlbScgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gyPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgPGxpPlxuICAgICAgICA8YSAoY2xpY2spPVwibmF2aWdhdGVUb0Vycm9yRWxlbWVudChlcnJvck1lc3NhZ2UuZmllbGRJZClcIiBjbGFzcz1cInZhbGlkYXRpb24tZXJyb3JcIj57e2Vycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdTd2l0Y2hdPVwiZmllbGRTdGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OXCI+XG4gICAgICA8Y2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbZmxhZ3NEYXRhXT1cImZsYWdzRGF0YVwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIlxuICAgICAgICBbaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXT1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbFwiXG4gICAgICA+PC9jY2Qtc2VsZWN0LWZsYWctbG9jYXRpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRVwiPlxuICAgICAgPGNjZC1zZWxlY3QtZmxhZy10eXBlIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbanVyaXNkaWN0aW9uXT1cImp1cmlzZGljdGlvblwiIFtjYXNlVHlwZUlkXT1cImNhc2VUeXBlSWRcIlxuICAgICAgICBbaG1jdHNTZXJ2aWNlSWRdPVwiaG1jdHNTZXJ2aWNlSWRcIiBbaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXT1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbFwiXG4gICAgICAgIFtpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWRdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkXCJcbiAgICAgICAgW3NlbGVjdGVkRmxhZ3NMb2NhdGlvbl09XCJzZWxlY3RlZEZsYWdzTG9jYXRpb25cIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCJcbiAgICAgICAgKGZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlcik9XCJvbkZsYWdDb21tZW50c09wdGlvbmFsRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2Qtc2VsZWN0LWZsYWctdHlwZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19MQU5HVUFHRV9JTlRFUlBSRVRFUlwiPlxuICAgICAgPGNjZC1zZWFyY2gtbGFuZ3VhZ2UtaW50ZXJwcmV0ZXIgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiXG4gICAgICAgIFtmbGFnVHlwZV09XCJmbGFnVHlwZVwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj5cbiAgICAgIDwvY2NkLXNlYXJjaC1sYW5ndWFnZS1pbnRlcnByZXRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UU1wiPlxuICAgICAgPGNjZC1hZGQtY29tbWVudHMgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtvcHRpb25hbF09XCJmbGFnQ29tbWVudHNPcHRpb25hbFwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIlxuICAgICAgICBbaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXT1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbFwiXG4gICAgICAgIFtpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWRdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkXCI+XG4gICAgICA8L2NjZC1hZGQtY29tbWVudHM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfU1RBVFVTXCI+XG4gICAgICA8Y2NkLWNvbmZpcm0tZmxhZy1zdGF0dXMgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtkZWZhdWx0U3RhdHVzXT1cImZsYWdUeXBlLmRlZmF1bHRTdGF0dXNcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtY29uZmlybS1mbGFnLXN0YXR1cz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdTd2l0Y2hdPVwiZmllbGRTdGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTXCI+XG4gICAgICA8Y2NkLW1hbmFnZS1jYXNlLWZsYWdzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbZmxhZ3NEYXRhXT1cImZsYWdzRGF0YVwiIFtjYXNlVGl0bGVdPVwiY2FzZVRpdGxlXCJcbiAgICAgICAgW2Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyXT1cImRpc3BsYXlDb250ZXh0UGFyYW1ldGVyXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLW1hbmFnZS1jYXNlLWZsYWdzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURVwiPlxuICAgICAgPGNjZC11cGRhdGUtZmxhZyBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCJcbiAgICAgICAgW2Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyXT1cImRpc3BsYXlDb250ZXh0UGFyYW1ldGVyXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXVwZGF0ZS1mbGFnPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURV9XRUxTSF9UUkFOU0xBVElPTlwiPlxuICAgICAgPGNjZC11cGRhdGUtZmxhZy1hZGQtdHJhbnNsYXRpb24tZm9ybVxuICAgICAgICBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICA+PC9jY2QtdXBkYXRlLWZsYWctYWRkLXRyYW5zbGF0aW9uLWZvcm0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
699
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUc3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7Ozs7Ozs7SUNKaEksQUFERixBQURGLEFBREYsOEJBQWtGLFlBQy9CLFNBQzNDLFdBQ2lGO0lBQWhGLDJOQUFTLHNEQUE0QyxLQUFDO0lBQTBC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QUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO1FBQzNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLEVBQUUsS0FBSztZQUM5RixDQUFDLENBQUMsa0JBQWtCLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztJQUN0RixDQUFDO0lBRU0sMEJBQTBCLENBQUMsVUFBdUI7UUFDdkQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztJQUM3SCxDQUFDO3FGQWhpQlUsMkJBQTJCOzZEQUEzQiwyQkFBMkI7WUM4QnhDLEFBcENBLEFBWkEsNEVBQXFLLCtEQVk1RSwrREFvQ0Q7O1lBaERsRixtREFBOEI7WUFZOUIsY0FBc0M7WUFBdEMsMkRBQXNDO1lBb0N0QyxjQUFxQztZQUFyQywwREFBcUM7OztpRkQ5QjlCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjs7a0ZBSTFCLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhc2VFZGl0RGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb25zL2Nhc2UtZWRpdC1kYXRhL2Nhc2UtZWRpdC1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkLCBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRmxhZ1R5cGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS1mbGFnJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmllbGRzJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY2FzZS1mbGFnLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSwgRmxhZ0RldGFpbCwgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCwgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIsIENhc2VGbGFnRXJyb3JNZXNzYWdlLCBDYXNlRmxhZ0ZpZWxkU3RhdGUsIENhc2VGbGFnRm9ybUZpZWxkcywgQ2FzZUZsYWdTdGF0dXMgfSBmcm9tICcuL2VudW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNhc2UtZmxhZy1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUNhc2VGbGFnRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmaWVsZFN0YXRlOiBudW1iZXI7XG4gIHB1YmxpYyBjYXNlRmxhZ0ZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGU7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgZmxhZ3NEYXRhOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoW107XG4gIHB1YmxpYyBzZWxlY3RlZEZsYWc6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGg7XG4gIHB1YmxpYyBjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZmxhZ0NvbW1lbnRzT3B0aW9uYWwgPSBmYWxzZTtcbiAgcHVibGljIGp1cmlzZGljdGlvbjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVR5cGVJZDogc3RyaW5nO1xuICBwdWJsaWMgaG1jdHNTZXJ2aWNlSWQ6IHN0cmluZztcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWw6IGJvb2xlYW47XG4gIHB1YmxpYyBpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBjYXNlVGl0bGU6IHN0cmluZztcbiAgcHVibGljIGNhc2VUaXRsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXI6IHN0cmluZztcbiAgcHVibGljIGRldGVybWluZWRMb2NhdGlvbjogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aDtcbiAgcHJpdmF0ZSBhbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCA9IGZhbHNlO1xuICAvLyBDb2RlIGZvciBcIk90aGVyXCIgZmxhZyB0eXBlIGFzIGRlZmluZWQgaW4gUmVmZXJlbmNlIERhdGFcbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckZsYWdUeXBlQ29kZSA9ICdPVDAwMDEnO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uID0gJ3NlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uJztcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VOYW1lTWlzc2luZyA9ICdDYXNlIG5hbWUgbWlzc2luZyc7XG5cbiAgcHVibGljIGdldCBmbGFnVHlwZSgpOiBGbGFnVHlwZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZS5mbGFnVHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uKCk6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGggfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWUuc2VsZWN0ZWRMb2NhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uKHNlbGVjdGVkTG9jYXRpb246IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGggfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuc2VsZWN0ZWRMb2NhdGlvbiA9IHNlbGVjdGVkTG9jYXRpb247XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdERhdGFTZXJ2aWNlOiBDYXNlRWRpdERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdTdGF0ZVNlcnZpY2U6IENhc2VGbGFnU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnB4VHJhbnNsYXRpb25TZXJ2aWNlOiBScHhUcmFuc2xhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJZiBpdCBpcyBzdGFydCBvZiB0aGUgam91cm5leSBvciBuYXZpZ2F0aW9uIGZyb20gY2hlY2sgeW91ciBhbnN3ZXJzIHBhZ2UgdGhlbiBmaWVsZFN0YXRlVG9OYXZpZ2F0ZSBwcm9wZXJ0eVxuICAgIC8vIGluIGNhc2UgZmxhZyBzdGF0ZSBzZXJ2aWNlIHdpbGwgY29udGFpbiB0aGUgZmllbGQgc3RhdGUgdG8gbmF2aWdhdGUgYmFzZWQgb24gY3JlYXRlIG9yIG1hbmFnZSBqb3VybmV5XG4gICAgdGhpcy5maWVsZFN0YXRlID0gdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5maWVsZFN0YXRlVG9OYXZpZ2F0ZTtcbiAgICBpZiAodGhpcy5maWVsZFN0YXRlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19MT0NBVElPTiB8fFxuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTKSB7XG4gICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcztcbiAgICAgIC8vIENsZWFyIHRoZSBmb3JtIGdyb3VwLCBmaWVsZCBzdGF0ZSB0byBuYXZpZ2F0ZSBhbmQgc2V0IHRoZSBwYWdlIGxvY2F0aW9uXG4gICAgICB0aGlzLmNhc2VGbGFnU3RhdGVTZXJ2aWNlLnJlc2V0Q2FjaGUoYC4uLyR7cGFyYW1zWydlaWQnXX0vJHtwYXJhbXNbJ3BhZ2UnXX1gKTtcbiAgICB9XG4gICAgLy8gUmVhc3NpZ24gdGhlIGZvcm0gZ3JvdXAgZnJvbSB0aGUgY2FzZSBmbGFnIHN0YXRlIHNlcnZpY2VcbiAgICB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwID0gdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5mb3JtR3JvdXA7XG4gICAgLy8gQ2xlYXIgZm9ybSB2YWxpZGF0aW9uIGVycm9ycyBhcyBhIG5ldyBwYWdlIHdpbGwgYmUgcmVuZGVyZWQgYmFzZWQgb24gZmllbGQgc3RhdGVcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIENoZWNrIGZvciBleGlzdGluZyBGbGFnTGF1bmNoZXIgY29udHJvbCBpbiBwYXJlbnQgYW5kIHJlbW92ZSBpdCAtIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVuc3VyZSBpdHMgaW52YWxpZGl0eVxuICAgIC8vIGlzIHNldCBjb3JyZWN0bHkgYXQgdGhlIHN0YXJ0LCB3aGVuIHRoZSBjb21wb25lbnQgaXMgcmVsb2FkZWQgYW5kIHRoZSBjb250cm9sIGlzIHJlLXJlZ2lzdGVyZWQuIE90aGVyd2lzZSwgdGhlXG4gICAgLy8gdmFsaWRhdG9yIHN0YXRlIGdldHMgY2FycmllZCBvdmVyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmNhc2VGaWVsZC5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2wodGhpcy5jYXNlRmllbGQuaWQpO1xuICAgIH1cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQsIHRoaXMuZm9ybUdyb3VwIHJlZmVycyB0byB0aGUgRm9ybUdyb3VwIGZvciB0aGUgRmxhZ0xhdW5jaGVyIGZpZWxkLCBub3QgdGhlIHBhcmVudCBGb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30sIHtcbiAgICAgIHZhbGlkYXRvcnM6IChfOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB8IG51bGwgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuYWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWQpIHtcbiAgICAgICAgICAvLyBSZXR1cm4gYW4gZXJyb3IgdG8gbWFyayB0aGUgRm9ybUdyb3VwIGFzIGludmFsaWQgaWYgbm90IGFsbCBDYXNlIEZsYWcgc3RhZ2VzIGhhdmUgYmVlbiBjb21wbGV0ZWRcbiAgICAgICAgICByZXR1cm4geyBub3RBbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pLCB0cnVlKSBhcyBGb3JtR3JvdXA7XG5cbiAgICAvLyBHZXQgdGhlIGNhc2UgdHlwZSBJRCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGEgKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZ1xuICAgIC8vIHR5cGVzIGZvciBhIGNhc2UpXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZSkge1xuICAgICAgdGhpcy5jYXNlVHlwZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmlkO1xuICAgICAgLy8gR2V0IHRoZSBqdXJpc2RpY3Rpb24gKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZyB0eXBlcyBpZiB1bmFibGUgdG8gZGV0ZXJtaW5lIHVzaW5nIGNhc2UgdHlwZSBJRClcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uKSB7XG4gICAgICAgIHRoaXMuanVyaXNkaWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCBhbGwgZmxhZ3MtcmVsYXRlZCBkYXRhIGZyb20gdGhlIENhc2VFdmVudFRyaWdnZXIgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIpIHtcbiAgICAgIC8vIEdldCB0aGUgSE1DVFNTZXJ2aWNlSWQgZnJvbSBzdXBwbGVtZW50YXJ5IGRhdGEsIGlmIGl0IGV4aXN0cyAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnIHR5cGVzIGluXG4gICAgICAvLyB0aGUgZmlyc3QgaW5zdGFuY2UsIG9ubHkgZmFsbGluZyBiYWNrIG9uIGNhc2UgdHlwZSBJRCBvciBqdXJpc2RpY3Rpb24gaWYgaXQncyBub3QgcHJlc2VudClcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLnN1cHBsZW1lbnRhcnlfZGF0YVxuICAgICAgICAmJiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLnN1cHBsZW1lbnRhcnlfZGF0YS5ITUNUU1NlcnZpY2VJZCkge1xuICAgICAgICB0aGlzLmhtY3RzU2VydmljZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGEuSE1DVFNTZXJ2aWNlSWQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSB7XG4gICAgICAgIHRoaXMuZmxhZ3NEYXRhID0gKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMgYXMgQ2FzZUZpZWxkW10pXG4gICAgICAgIC5yZWR1Y2UoKGZsYWdzOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoW10sIGNhc2VGaWVsZDogQ2FzZUZpZWxkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKGZsYWdzLCBjYXNlRmllbGQsIGNhc2VGaWVsZC5pZCwgY2FzZUZpZWxkKTtcbiAgICAgICAgfSwgW10gYXMgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdKTtcblxuICAgICAgICAvLyBTZXQgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgKHRvIGJlIHBhc3NlZCBhcyBhbiBpbnB1dCB0byBNYW5hZ2VDYXNlRmxhZ3NDb21wb25lbnQgZm9yIHNldHRpbmcgY29ycmVjdCB0aXRsZSlcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9XG4gICAgICAgICAgdGhpcy5zZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlcih0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzIGFzIENhc2VGaWVsZFtdKTtcblxuICAgICAgICAvLyBTZXQgYm9vbGVhbiBpbmRpY2F0aW5nIHRoZSBkaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyIGlzIFwidXBkYXRlXCJcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyVXBkYXRlID0gdGhpcy5zZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKTtcblxuICAgICAgICAvLyBTZXQgYm9vbGVhbiBpbmRpY2F0aW5nIHRoZSBkaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyIGlzIFwiZXh0ZXJuYWxcIlxuICAgICAgICB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCA9IHRoaXMuc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKTtcblxuICAgICAgICAvLyBTZXQgYm9vbGVhbiBpbmRpY2F0aW5nIHRoZSBkaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyIGlzIENhc2UgRmxhZ3MgdjIuMSBlbmFibGVkXG4gICAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkID0gdGhpcy5zZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkKHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpO1xuXG4gICAgICAgIC8vIFNldCBzdGFydGluZyBmaWVsZCBzdGF0ZSBpZiBmaWVsZFN0YXRlIG5vdCB0aGUgcmlnaHQgdmFsdWVcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUgPyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyA6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IGNhc2UgdGl0bGUsIHRvIGJlIHVzZWQgYnkgY2hpbGQgY29tcG9uZW50c1xuICAgICAgICB0aGlzLmNhc2VUaXRsZVN1YnNjcmlwdGlvbiA9IHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlVGl0bGUkLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogdGl0bGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYXNlVGl0bGUgPSB0aXRsZT8ubGVuZ3RoID4gMCA/IHRpdGxlIDogdGhpcy5jYXNlTmFtZU1pc3Npbmc7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUoZGlzcGxheUNvbnRleHRQYXJhbWV0ZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEUgfHxcbiAgICAgIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTCB8fFxuICAgICAgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsKGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuQ1JFQVRFX0VYVEVSTkFMIHx8XG4gICAgICBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfRVhURVJOQUw7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZChkaXNwbGF5Q29udGV4dFBhcmFtZXRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLkNSRUFURV8yX1BPSU5UXzEgfHxcbiAgICAgIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE7XG4gIH1cblxuICBwdWJsaWMgb25DYXNlRmxhZ1N0YXRlRW1pdHRlZChjYXNlRmxhZ1N0YXRlOiBDYXNlRmxhZ1N0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IGNhc2VGbGFnU3RhdGUuZXJyb3JNZXNzYWdlcztcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnO1xuXG4gICAgLy8gVmFsaWRhdGlvbiBzdWNjZWVkZWQ7IHByb2NlZWQgdG8gbmV4dCBzdGF0ZSBvciBmaW5hbCByZXZpZXcgc3RhZ2UgKFwiQ2hlY2sgeW91ciBhbnN3ZXJzXCIpXG4gICAgaWYgKHRoaXMuZXJyb3JNZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLmNhbk1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoY2FzZUZsYWdTdGF0ZSkpIHtcbiAgICAgICAgdGhpcy5tb3ZlVG9GaW5hbFJldmlld1N0YWdlKCk7XG4gICAgICAgIC8vIERvbid0IG1vdmUgdG8gbmV4dCBzdGF0ZSBpZiBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUgYW5kIHRoZSBmbGFnIHR5cGUgaXMgYSBwYXJlbnQgLSB0aGlzXG4gICAgICAgIC8vIG1lYW5zIHRoZSB1c2VyIG5lZWRzIHRvIHNlbGVjdCBmcm9tIHRoZSBuZXh0IHNldCBvZiBmbGFnIHR5cGVzIGJlZm9yZSB0aGV5IGNhbiBtb3ZlIG9uXG4gICAgICB9IGVsc2UgaWYgKCFjYXNlRmxhZ1N0YXRlLmlzUGFyZW50RmxhZ1R5cGUpIHtcbiAgICAgICAgLy8gUHJvY2VlZCB0byBuZXh0IHN0YXRlXG4gICAgICAgIHRoaXMucHJvY2VlZFRvTmV4dFN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbk1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoY2FzZUZsYWdTdGF0ZTogQ2FzZUZsYWdTdGF0ZSk6IGJvb2xlYW4ge1xuICAgIC8vIElmIHRoZSBqb3VybmV5IGlzIHJlcXVlc3Qgc3VwcG9ydCBvciBtYW5hZ2Ugc3VwcG9ydFxuICAgIC8vIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBpcyBlaXRoZXIgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFMgb3IgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXG4gICAgLy8gdGhlbiBtb3ZlIHRvIGZpbmFsIHJldmlldyBzdGFnZVxuICAgIGlmICh0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJFeHRlcm5hbCkge1xuICAgICAgcmV0dXJuIGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFMgfHxcbiAgICAgICAgY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEU7XG4gICAgfVxuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIG9uZSBvZjpcbiAgICAvLyAqIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1NUQVRVUyBBTkQgQ2FzZSBGbGFncyB2Mi4xIGlzIGVuYWJsZWRcbiAgICAvLyAqIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTIEFORCBDYXNlIEZsYWdzIHYyLjEgaXMgbm90IGVuYWJsZWRcbiAgICAvLyAqIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSBhbmQgV2Vsc2ggdHJhbnNsYXRpb24gY2hlY2tib3ggaXMgbm90IHNlbGVjdGVkXG4gICAgLy8gKiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEVfV0VMU0hfVFJBTlNMQVRJT05cbiAgICAvLyB0aGVuIG1vdmUgdG8gZmluYWwgcmV2aWV3IHN0YWdlXG4gICAgcmV0dXJuIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09XG4gICAgICBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19TVEFUVVMgJiYgdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQpIHx8XG4gICAgICAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PVxuICAgICAgICBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyAmJiAhdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWQpIHx8XG4gICAgICAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEUgJiZcbiAgICAgICAgIXRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERUQpPy52YWx1ZSkgfHxcbiAgICAgIGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFX1dFTFNIX1RSQU5TTEFUSU9OO1xuICB9XG5cbiAgcHVibGljIHByb2NlZWRUb05leHRTdGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNBdEZpbmFsU3RhdGUoKSkge1xuICAgICAgLy8gU2tpcCB0aGUgXCJsYW5ndWFnZSBpbnRlcnByZXRlclwiIHN0YXRlIGlmIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSBhbmQgdGhlIGZsYWcgdHlwZSBkb2Vzbid0XG4gICAgICAvLyBoYXZlIGEgXCJsaXN0IG9mIHZhbHVlc1wiIC0gY3VycmVudGx5LCB0aGlzIGlzIHByZXNlbnQgb25seSBmb3IgdGhvc2UgZmxhZyB0eXBlcyB0aGF0IHJlcXVpcmUgbGFuZ3VhZ2UgaW50ZXJwcmV0ZXJcbiAgICAgIC8vIHNlbGVjdGlvblxuICAgICAgaWYgKHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSAmJiAhdGhpcy5mbGFnVHlwZT8ubGlzdE9mVmFsdWVzKSB7XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSA9IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWVsZFN0YXRlKys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEZsYWdzQ2FzZUZpZWxkVmFsdWUoKTogdm9pZCB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBzd2l0Y2gtZGVmYXVsdFxuICAgIHN3aXRjaCAodGhpcy5maWVsZFN0YXRlKSB7XG4gICAgICBjYXNlIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1NUQVRVUzpcbiAgICAgICAgdGhpcy5hZGRGbGFnVG9Db2xsZWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUzpcbiAgICAgICAgaWYgKHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsIHx8ICF0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuYWRkRmxhZ1RvQ29sbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLm1hbmFnZUZsYWdGaW5hbFN0YXRlOlxuICAgICAgICB0aGlzLnVwZGF0ZUZsYWdJbkNvbGxlY3Rpb24oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEZsYWdUb0NvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIG5vIG1vcmUgdGhhbiBvbmUgbmV3IGZsYWcgaXMgYmVpbmcgYWRkZWQgYXQgYSB0aW1lLCBieSBpdGVyYXRpbmcgdGhyb3VnaCBlYWNoIEZsYWdzIGNhc2UgZmllbGQgYW5kIHJlbW92aW5nXG4gICAgLy8gYW55IHByZXZpb3VzIGVudHJ5IGZyb20gdGhlIGRldGFpbHMgYXJyYXkgd2hlcmUgdGhhdCBlbnRyeSBoYXMgbm8gaWQgKGhlbmNlIGl0IGlzIG5ldyAtIGFuZCB0aGVyZSBzaG91bGQgYmUgb25seVxuICAgIC8vIG9uZSBzdWNoIGVudHJ5KS4gKFRoaXMgc2NlbmFyaW8gb2NjdXJzIGlmIHRoZSB1c2VyIHJlcGVhdHMgdGhlIENhc2UgRmxhZyBjcmVhdGlvbiBqb3VybmV5IGJ5IHVzaW5nIHRoZSBcIkNoYW5nZVwiXG4gICAgLy8gbGluayBhbmQgc2VsZWN0cyBlaXRoZXIgdGhlIHNhbWUgZmxhZyBsb2NhdGlvbiBhcyBiZWZvcmUgb3IgYSBkaWZmZXJlbnQgb25lLilcbiAgICB0aGlzLmZsYWdzRGF0YS5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZm9yIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gcmVtb3ZlIHRoZSBuZXcgdmFsdWUgZnJvbVxuICAgICAgbGV0IHZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkPy52YWx1ZTtcbiAgICAgIGNvbnN0IHBhdGhUb1ZhbHVlID0gaW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgICBpZiAocGF0aFRvVmFsdWUuaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgICAgcGF0aFRvVmFsdWUuc2xpY2UocGF0aFRvVmFsdWUuaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKHBhcnQgPT4gdmFsdWUgPSB2YWx1ZVtwYXJ0XSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWU/LmRldGFpbHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgaW5kZXhPZk5ld0ZsYWdEZXRhaWwgPSB2YWx1ZS5kZXRhaWxzLmZpbmRJbmRleChlbGVtZW50ID0+ICFlbGVtZW50Lmhhc093blByb3BlcnR5KCdpZCcpKTtcbiAgICAgICAgaWYgKGluZGV4T2ZOZXdGbGFnRGV0YWlsID4gLTEpIHtcbiAgICAgICAgICB2YWx1ZS5kZXRhaWxzLnNwbGljZShpbmRleE9mTmV3RmxhZ0RldGFpbCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcm1WYWx1ZXMgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZTtcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgbG9jYXRpb24gLSBpbnRlcm5hbCBvciBleHRlcm5hbCAtIGZvciB0aGUgbmV3IGZsYWcuIElmIHJldHVybmVkIGFzIHVuZGVmaW5lZCwgdGhpc1xuICAgIC8vIGluZGljYXRlcyBhIGNvbmZpZ3VyYXRpb24gZXJyb3Igd2l0aCB0aGUgZXh0ZXJuYWwgYEZsYWdzYCBvYmplY3QgaW5zdGFuY2VcbiAgICB0aGlzLmRldGVybWluZWRMb2NhdGlvbiA9XG4gICAgICB0aGlzLmRldGVybWluZUxvY2F0aW9uRm9yRmxhZyghdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWwsIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLCBmb3JtVmFsdWVzKTtcbiAgICAvLyBEbyBub3QgbXV0YXRlIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uOyBpZiB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbiBiZWNvbWVzIHVuZGVmaW5lZCxcbiAgICAvLyBkZXRlcm1pbmVMb2NhdGlvbkZvckZsYWcoKSB3aWxsIG5vIGxvbmdlciBkbyBhbnl0aGluZyB3aGVuIGNhbGxlZCB3aXRoIGl0IC0gYW5kIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlIHdpbGxcbiAgICAvLyBub3QgYmUgcmVkaXNwbGF5ZWQgaWYgdGhlIHVzZXIgY2xpY2tzIFwiTmV4dFwiIGFnYWluIG9uIHRoZSBcIkFkZCBjb21tZW50c1wiIHBhZ2UsIGFmdGVyIHRoZSBlcnJvciBpcyBmaXJzdCBzaG93blxuXG4gICAgaWYgKHRoaXMuZGV0ZXJtaW5lZExvY2F0aW9uKSB7XG4gICAgICBjb25zdCBwYXRoID0gdGhpcy5kZXRlcm1pbmVkTG9jYXRpb24ucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICBjb25zdCBmbGFnRGF0YVJlZiA9IHRoaXMuZmxhZ3NEYXRhLmZpbmQoaXRlbSA9PiBpdGVtLnBhdGhUb0ZsYWdzRm9ybUdyb3VwID09PSBwYXRoKTtcbiAgICAgIGxldCBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ0RhdGFSZWYuY2FzZUZpZWxkPy52YWx1ZTtcbiAgICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZnJvbSB0aGUgc2VsZWN0ZWQgZmxhZyBsb2NhdGlvbiB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgICAgcGF0aC5zbGljZShwYXRoLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlW3BhcnRdKTtcbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBDYXNlRmllbGQgZm9yIHRoZSBzZWxlY3RlZCBmbGFncyBsb2NhdGlvbiBoYXMgbm8gdmFsdWUsIHNldCBpdCB0byBhbiBlbXB0eSBvYmplY3Qgc28gaXQgY2FuIGJlIHBvcHVsYXRlZFxuICAgICAgLy8gd2l0aCBmbGFnIGRldGFpbHNcbiAgICAgIGlmICghZmxhZ3NDYXNlRmllbGRWYWx1ZSkge1xuICAgICAgICBmbGFnRGF0YVJlZi5jYXNlRmllbGQudmFsdWUgPSB7fTtcbiAgICAgICAgZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IGZsYWdEYXRhUmVmLmNhc2VGaWVsZC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIC8vIENyZWF0ZSBhIGRldGFpbHMgYXJyYXkgaWYgb25lIGRvZXMgbm90IGV4aXN0XG4gICAgICBpZiAoIWZsYWdzQ2FzZUZpZWxkVmFsdWUuaGFzT3duUHJvcGVydHkoJ2RldGFpbHMnKSkge1xuICAgICAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMgPSBbXTtcbiAgICAgIH1cbiAgICAgIC8vIFBvcHVsYXRlIG5ldyBGbGFnRGV0YWlsIGluc3RhbmNlIGFuZCBhZGQgdG8gdGhlIEZsYWdzIGRhdGEgd2l0aGluIHRoZSBDYXNlRmllbGQgaW5zdGFuY2Ugb2YgdGhlIHNlbGVjdGVkIGZsYWdcbiAgICAgIC8vIGxvY2F0aW9uXG4gICAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMucHVzaCh7dmFsdWU6IHRoaXMucG9wdWxhdGVOZXdGbGFnRGV0YWlsSW5zdGFuY2UoKX0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb3JyZWN0IGxvY2F0aW9uIChpLmUuIGVpdGhlciB0aGUgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgaW5zdGFuY2Ugb2YgYSBgRmxhZ3NgIG9iamVjdCkgZm9yIGEgbmV3IGZsYWcsXG4gICAqIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nOlxuICAgKlxuICAgKiAqIFdoZXRoZXIgdGhlIHVzZXIgaXMgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgKG5vIGVmZmVjdCBmb3IgZXh0ZXJuYWwgdXNlcnMgYmVjYXVzZSB0aGV5IGNhbiBhY2Nlc3Mgb25seSB0aGUgZXh0ZXJuYWxcbiAgICogaW5zdGFuY2UpXG4gICAqICogVGhlIGV4aXN0ZW5jZSBvZiB0d28gYEZsYWdzYCBvYmplY3RzIC0gb25lIGludGVybmFsLCBvbmUgZXh0ZXJuYWwgLSBsaW5rZWQgYnkgdGhlIHNhbWUgYGdyb3VwSWRgO1xuICAgKiAqIEZvciBmbGFncyBvZiB0eXBlIFwiT3RoZXJcIiwgd2hldGhlciBcIm9ubHkgdmlzaWJsZSB0byBITUNUUyBzdGFmZlwiIGhhcyBiZWVuIHNlbGVjdGVkIG9yIG5vdCAoXCJPdGhlclwiIGRlZmF1bHRzIHRvXG4gICAqIGV4dGVybmFsbHkgdmlzaWJsZSk7XG4gICAqICogRm9yIGFsbCBvdGhlciBmbGFnIHR5cGVzLCB0aGUgdmFsdWUgb2YgdGhlIGBleHRlcm5hbGx5QXZhaWxhYmxlYCBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIElmIHRoZSB1c2VyIGlzIGludGVybmFsIHRoZW4gdGhlIG5ldyBmbGFnIHNob3VsZCBiZSBhc3NpZ25lZCB0byB0aGUgZXh0ZXJuYWwgYEZsYWdzYCBpbnN0YW5jZSBpZjpcbiAgICogKiBTdWNoIGFuIGluc3RhbmNlIGV4aXN0cywgQU5EXG4gICAqICogVGhlIGZsYWcgdHlwZSBpcyBcIk90aGVyXCIgYW5kIFwib25seSB2aXNpYmxlIHRvIEhNQ1RTIHN0YWZmXCIgd2FzIG5vdCBzZWxlY3RlZCwgT1JcbiAgICogKiBUaGUgZmxhZyB0eXBlIGlzIG5vdCBcIk90aGVyXCIgYW5kIGBleHRlcm5hbGx5QXZhaWxhYmxlYCBpcyBgdHJ1ZWAuXG4gICAqXG4gICAqIEBwYXJhbSBpc0ludGVybmFsVXNlciBXaGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgaW50ZXJuYWwgb3Igbm90XG4gICAqIEBwYXJhbSBzZWxlY3RlZEZsYWdzTG9jYXRpb24gVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBsb2NhdGlvbiBmb3IgdGhlIG5ldyBmbGFnXG4gICAqIEBwYXJhbSBmb3JtVmFsdWVzIEFsbCB0aGUgdmFsdWVzIGZyb20gdGhlIGBjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cGBcbiAgICogQHJldHVybnMgVGhlIGNvcnJlY3RseSBkZXRlcm1pbmVkIGxvY2F0aW9uOiBlaXRoZXIgdGhlIGludGVybmFsIG9yIGV4dGVybmFsIGxvY2F0aW9uIChpZiBvbmUgZXhpc3RzKSB3aGVyZSBhIGdyb3VwSWRcbiAgICogaXMgcHJlc2VudDsgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG90aGVyd2lzZS4gKipOb3RlOioqIElmIHRoZSBleHRlcm5hbCBsb2NhdGlvbiBpcyByZXR1cm5lZCBhcyB1bmRlZmluZWQsIHRoaXNcbiAgICogaW5kaWNhdGVzIGEgY29uZmlndXJhdGlvbiBlcnJvclxuICAgKi9cbiAgcHVibGljIGRldGVybWluZUxvY2F0aW9uRm9yRmxhZyhpc0ludGVybmFsVXNlcjogYm9vbGVhbiwgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoLFxuICAgIGZvcm1WYWx1ZXM6IGFueSk6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGgge1xuICAgICAgaWYgKGlzSW50ZXJuYWxVc2VyICYmIHNlbGVjdGVkRmxhZ3NMb2NhdGlvbj8uZmxhZ3M/Lmdyb3VwSWQpIHtcbiAgICAgICAgaWYgKChmb3JtVmFsdWVzPy5mbGFnVHlwZT8uZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGUgJiYgIWZvcm1WYWx1ZXM/LmZsYWdJc1Zpc2libGVJbnRlcm5hbGx5T25seSkgfHxcbiAgICAgICAgICAoZm9ybVZhbHVlcz8uZmxhZ1R5cGU/LmZsYWdDb2RlICE9PSB0aGlzLm90aGVyRmxhZ1R5cGVDb2RlICYmIGZvcm1WYWx1ZXM/LmZsYWdUeXBlPy5leHRlcm5hbGx5QXZhaWxhYmxlKSkge1xuICAgICAgICAgICAgLy8gSWYgbmVjZXNzYXJ5LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGZsYWdzIG9iamVjdCB3aXRoIHRoZSBzYW1lIGdyb3VwSWQgYW5kIGV4dGVybmFsIHZpc2liaWxpdHkgKHNob3VsZCBiZVxuICAgICAgICAgICAgLy8gb25seSBvbmUgdW5sZXNzIG1pc2NvbmZpZ3VyZWQpXG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5mbGFncy52aXNpYmlsaXR5Py50b0xvd2VyQ2FzZSgpID09PSAnZXh0ZXJuYWwnXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWRGbGFnc0xvY2F0aW9uXG4gICAgICAgICAgICAgIDogdGhpcy5mbGFnc0RhdGEuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChmKSA9PiBmLmZsYWdzPy5ncm91cElkID09PSBzZWxlY3RlZEZsYWdzTG9jYXRpb24uZmxhZ3MuZ3JvdXBJZCAmJlxuICAgICAgICAgICAgICAgIGYuZmxhZ3M/LnZpc2liaWxpdHk/LnRvTG93ZXJDYXNlKCkgPT09ICdleHRlcm5hbCcpPy5bMF07XG4gICAgICAgICAgICAvLyBJZiBsb2NhdGlvbiBpcyBub3QgdHJ1dGh5LCBzZXQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgbWFrZSBjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cCBpbnZhbGlkIHRvIHByZXZlbnRcbiAgICAgICAgICAgIC8vIG5hdmlnYXRpb24gdG8gdGhlIHN1bW1hcnkgcGFnZSAoYnkgbm90IHRyaWdnZXJpbmcgdGhlIHN1Ym1pdCBldmVudClcbiAgICAgICAgICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogQ2FzZUZsYWdFcnJvck1lc3NhZ2UuTk9fRVhURVJOQUxfRkxBR1NfQ09MTEVDVElPTlxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgIG5vRXh0ZXJuYWxDb2xsZWN0aW9uOiB0cnVlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgZmluZCB0aGUgY29ycmVzcG9uZGluZyBmbGFncyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBncm91cElkIGFuZCBpbnRlcm5hbCB2aXNpYmlsaXR5IChzaG91bGQgYmVcbiAgICAgICAgICAvLyBvbmx5IG9uZSB1bmxlc3MgbWlzY29uZmlndXJlZCk7IGFzc3VtZWQgdG8gYmUgaW50ZXJuYWwgaWYgdmlzaWJpbGl0eSBhdHRyaWJ1dGUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5mbGFncy52aXNpYmlsaXR5Py50b0xvd2VyQ2FzZSgpICE9PSAnZXh0ZXJuYWwnXG4gICAgICAgICAgICA/IHNlbGVjdGVkRmxhZ3NMb2NhdGlvblxuICAgICAgICAgICAgOiB0aGlzLmZsYWdzRGF0YS5maWx0ZXIoXG4gICAgICAgICAgICAgIChmKSA9PiBmLmZsYWdzPy5ncm91cElkID09PSBzZWxlY3RlZEZsYWdzTG9jYXRpb24uZmxhZ3MuZ3JvdXBJZCAmJlxuICAgICAgICAgICAgICBmLmZsYWdzPy52aXNpYmlsaXR5Py50b0xvd2VyQ2FzZSgpICE9PSAnZXh0ZXJuYWwnKT8uWzBdO1xuICAgICAgICAgIC8vIElmIGxvY2F0aW9uIGlzIG5vdCB0cnV0aHksIHNldCBhbiBlcnJvciBtZXNzYWdlIGFuZCBtYWtlIGNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwIGludmFsaWQgdG8gcHJldmVudFxuICAgICAgICAgIC8vIG5hdmlnYXRpb24gdG8gdGhlIHN1bW1hcnkgcGFnZSAoYnkgbm90IHRyaWdnZXJpbmcgdGhlIHN1Ym1pdCBldmVudClcbiAgICAgICAgICBpZiAoIWxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IENhc2VGbGFnRXJyb3JNZXNzYWdlLk5PX0lOVEVSTkFMX0ZMQUdTX0NPTExFQ1RJT05cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICBub0ludGVybmFsQ29sbGVjdGlvbjogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBsb2NhdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHNlbGVjdGVkRmxhZ3NMb2NhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGbGFnSW5Db2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBubyBtb3JlIHRoYW4gb25lIGZsYWcgaXMgYmVpbmcgdXBkYXRlZCBhdCBhIHRpbWUsIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCBhbmQgcmVzZXR0aW5nXG4gICAgLy8gdGhlIGRlc2NyaXB0aW9uLCBjb21tZW50cywgc3RhdHVzLCBhbmQgZGF0ZS90aW1lIG1vZGlmaWVkIChpZiBwcmVzZW50KSBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgZGV0YWlscyBhcnJheSwgd2l0aFxuICAgIC8vIG9yaWdpbmFsIHZhbHVlcyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGZvcm1hdHRlZF92YWx1ZSBwcm9wZXJ0eS4gKFRoaXMgc2NlbmFyaW8gb2NjdXJzIGlmIHRoZSB1c2VyIHJlcGVhdHMgdGhlXG4gICAgLy8gTWFuYWdlIENhc2UgRmxhZyBqb3VybmV5IGJ5IHVzaW5nIHRoZSBcIkNoYW5nZVwiIGxpbmsgYW5kIHNlbGVjdHMgYSBkaWZmZXJlbnQgZmxhZyB0byB1cGRhdGUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSBmb3Igd2hpY2ggdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgdmFsdWVzXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQ/LnZhbHVlO1xuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkPy5mb3JtYXR0ZWRfdmFsdWU7XG4gICAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGluc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGhUb1ZhbHVlLnNsaWNlKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuICAgICAgICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSAmJiBGaWVsZHNVdGlscy5pc05vbkVtcHR5T2JqZWN0KGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZVtwYXJ0XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlPy5kZXRhaWxzPy5sZW5ndGggPiAwICYmIGZvcm1hdHRlZFZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgIHZhbHVlLmRldGFpbHMuZm9yRWFjaChmbGFnRGV0YWlsID0+IHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEZsYWdEZXRhaWwgPSBmb3JtYXR0ZWRWYWx1ZS5kZXRhaWxzPy5maW5kKGRldGFpbCA9PiBkZXRhaWwuaWQgPT09IGZsYWdEZXRhaWwuaWQpO1xuICAgICAgICAgIGlmIChvcmlnaW5hbEZsYWdEZXRhaWwpIHtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUub3RoZXJEZXNjcmlwdGlvbiA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8ub3RoZXJEZXNjcmlwdGlvbiB8fCBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5vdGhlckRlc2NyaXB0aW9uX2N5ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5vdGhlckRlc2NyaXB0aW9uX2N5IHx8IG51bGw7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5mbGFnQ29tbWVudCB8fCBudWxsO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5mbGFnQ29tbWVudF9jeSA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uZmxhZ0NvbW1lbnRfY3kgfHwgbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZmxhZ1VwZGF0ZUNvbW1lbnQgPSBvcmlnaW5hbEZsYWdEZXRhaWwudmFsdWU/LmZsYWdVcGRhdGVDb21tZW50IHx8IG51bGw7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLnN0YXR1cyA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZT8uc3RhdHVzO1xuICAgICAgICAgICAgZmxhZ0RldGFpbC52YWx1ZS5kYXRlVGltZU1vZGlmaWVkID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlPy5kYXRlVGltZU1vZGlmaWVkIHx8IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGbGFnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uKS52YWx1ZSBhcyBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoO1xuICAgIH1cbiAgICBsZXQgZmxhZ3NDYXNlRmllbGRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRGbGFnLmNhc2VGaWVsZD8udmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIGlmIChmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICBjb25zdCBmbGFnRGV0YWlsVG9VcGRhdGUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHM/LmZpbmQoXG4gICAgICAgIGRldGFpbCA9PiBkZXRhaWwuaWQgPT09IHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsPy5pZCk7XG4gICAgICBpZiAoZmxhZ0RldGFpbFRvVXBkYXRlKSB7XG4gICAgICAgIC8vIENhY2hlIHRoZSAqb3JpZ2luYWwqIHN0YXR1cyBvZiB0aGUgZmxhZyBiZWZvcmUgaXQgaXMgbW9kaWZpZWQuIFRoaXMgaXMgbmVlZGVkIGlmIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGZsYWcgc3RhdHVzXG4gICAgICAgIC8vIHRoZW4gZGVjaWRlcyB0byByZXR1cm4gdG8gYW55IHBhcnQgb2YgdGhlIGZsYWcgdXBkYXRlIGpvdXJuZXkuIFRoZSBNYW5hZ2VDYXNlRmxhZ3NDb21wb25lbnQgYW5kIFVwZGF0ZUZsYWdDb21wb25lbnRcbiAgICAgICAgLy8gc2hvdWxkIHJlZmVyIHRvIGEgZmxhZydzIG9yaWdpbmFsIHN0YXR1cywgbm90IHRoZSBvbmUgc2V0IHZpYSB0aGUgVUkgYmVjYXVzZSB0aGlzIGhhc24ndCBiZWVuIHBlcnNpc3RlZCB5ZXRcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZsYWcub3JpZ2luYWxTdGF0dXMgPSBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWU/LnN0YXR1cztcbiAgICAgICAgLy8gVXBkYXRlIGRlc2NyaXB0aW9uIGZpZWxkcyBvbmx5IGlmIGZsYWcgdHlwZSBpcyBcIk90aGVyXCIgKGZsYWcgY29kZSBPVDAwMDEpOyB0aGVzZSBmaWVsZHMgYXBwbHkgb25seSB0byB0aGF0IGZsYWcgdHlwZVxuICAgICAgICAvLyBJZiB0aGVpciBGb3JtQ29udHJvbHMgZG9uJ3QgZXhpc3QsIGl0IG1lYW5zIHRoZXNlIGZpZWxkcyB3ZXJlbid0IHZpc2l0ZWQgYXMgcGFydCBvZiB0aGUgXCJVcGRhdGUgRmxhZ1wiIGpvdXJuZXksIHNvIGRvXG4gICAgICAgIC8vICpub3QqIHVwZGF0ZSB0aGVpciB2YWx1ZXMgKG90aGVyd2lzZSB0aGV5IHdpbGwgYmVjb21lIHVuZGVmaW5lZClcbiAgICAgICAgaWYgKGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZT8uZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGUpIHtcbiAgICAgICAgICBpZiAodGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLk9USEVSX0ZMQUdfREVTQ1JJUFRJT04pKSB7XG4gICAgICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUub3RoZXJEZXNjcmlwdGlvbiA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KFxuICAgICAgICAgICAgICBDYXNlRmxhZ0Zvcm1GaWVsZHMuT1RIRVJfRkxBR19ERVNDUklQVElPTikudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuT1RIRVJfRkxBR19ERVNDUklQVElPTl9XRUxTSCkpIHtcbiAgICAgICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5vdGhlckRlc2NyaXB0aW9uX2N5ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoXG4gICAgICAgICAgICAgIENhc2VGbGFnRm9ybUZpZWxkcy5PVEhFUl9GTEFHX0RFU0NSSVBUSU9OX1dFTFNIKS52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5zdXJlIHRoYXQgYW55IGNvbW1lbnRzIGVudGVyZWQgd2l0aCBsYW5ndWFnZSBzZXQgdG8gV2Vsc2ggZG8gbm90IGVuZCB1cCBpbiB0aGUgRW5nbGlzaCBjb21tZW50cyBmaWVsZFxuICAgICAgICBpZiAodGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgIT09ICdjeScpIHtcbiAgICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuZmxhZ0NvbW1lbnQgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFMpPy52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQb3B1bGF0ZSBmcm9tIHRoZSAqRW5nbGlzaCogY29tbWVudHMgZmllbGQgaWY6XG4gICAgICAgIC8vICogVGhlIFdlbHNoIGNvbW1lbnRzIGZpZWxkIGhhcyBubyB2YWx1ZSAoV2Vsc2ggY29tbWVudHMgZmllbGQgYWNxdWlyZXMgYSB2YWx1ZSBvbmx5IHdoZW4gYW4gSE1DVFMgaW50ZXJuYWwgdXNlciBoYXNcbiAgICAgICAgLy8gZ29uZSB0aHJvdWdoIHRoZSBcImFkZCB0cmFuc2xhdGlvblwiIHN0ZXAgZm9yIE1hbmFnZSBDYXNlIEZsYWdzKSwgQU5EXG4gICAgICAgIC8vICogVGhlIGxhbmd1YWdlIGlzIHNldCB0byBXZWxzaFxuICAgICAgICAvLyBJZiB0aGUgRm9ybUNvbnRyb2wgZG9lc24ndCBleGlzdCwgaXQgbWVhbnMgdGhpcyBmaWVsZCB3YXNuJ3QgdmlzaXRlZCBhcyBwYXJ0IG9mIHRoZSBcIlVwZGF0ZSBGbGFnXCIgam91cm5leSwgc28gZG9cbiAgICAgICAgLy8gKm5vdCogdXBkYXRlIGl0cyB2YWx1ZSAob3RoZXJ3aXNlIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbikgLSB1bmxlc3MgdGhlIHVzZXIgaXMgZXh0ZXJuYWwgQU5EIHdvcmtpbmcgaW4gV2Vsc2hcbiAgICAgICAgaWYgKHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UU19XRUxTSCkgfHwgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeScpIHtcbiAgICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuZmxhZ0NvbW1lbnRfY3kgPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNfV0VMU0gpPy52YWx1ZVxuICAgICAgICAgID8gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTX1dFTFNIKT8udmFsdWVcbiAgICAgICAgICA6IHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnY3knXG4gICAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UUyk/LnZhbHVlXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLmZsYWdVcGRhdGVDb21tZW50ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OKT8udmFsdWU7XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5zdGF0dXMgPSBDYXNlRmxhZ1N0YXR1c1t0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTKT8udmFsdWVdO1xuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuZGF0ZVRpbWVNb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNBdEZpbmFsU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVxuICAgICAgPyB0aGlzLmZpZWxkU3RhdGUgPT09IHRoaXMubWFuYWdlRmxhZ0ZpbmFsU3RhdGVcbiAgICAgIDogIXRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjJQb2ludDFFbmFibGVkXG4gICAgICAgID8gdGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UU1xuICAgICAgICA6IHRoaXMuZmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfU1RBVFVTO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZWxlbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZWxlbWVudElkKSB7XG4gICAgICBjb25zdCBodG1sRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7XG4gICAgICBpZiAoaHRtbEVsZW1lbnQpIHtcbiAgICAgICAgaHRtbEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgaHRtbEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoXzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mbGFnQ29tbWVudHNPcHRpb25hbCA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgcG9wdWxhdGVOZXdGbGFnRGV0YWlsSW5zdGFuY2UoKTogRmxhZ0RldGFpbCB7XG4gICAgY29uc3QgbGFuZ1NlYXJjaFRlcm0gPSB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwPy52YWx1ZVsnbGFuZ3VhZ2VTZWFyY2hUZXJtJ107XG4gICAgY29uc3QgbWFudWFsTGFuZ0VudHJ5ID0gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cD8udmFsdWVbJ21hbnVhbExhbmd1YWdlRW50cnknXTtcbiAgICBjb25zdCBmbGFnVHlwZSA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlWydmbGFnVHlwZSddO1xuICAgIGNvbnN0IG90aGVyRGVzYyA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlWydvdGhlckRlc2NyaXB0aW9uJ107XG4gICAgY29uc3QgZm9ybVZhbHVlcyA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXA/LnZhbHVlO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLmZsYWdUeXBlPy5uYW1lLFxuICAgICAgbmFtZV9jeTogZmxhZ1R5cGU/Lm5hbWVfY3ksXG4gICAgICAvLyBDdXJyZW50bHksIHN1YlR5cGVWYWx1ZSwgc3ViVHlwZVZhbHVlX2N5IGFuZCBzdWJUeXBlS2V5IGFyZSBhcHBsaWNhYmxlIG9ubHkgdG8gbGFuZ3VhZ2UgZmxhZyB0eXBlc1xuICAgICAgc3ViVHlwZVZhbHVlOiBsYW5nU2VhcmNoVGVybSAmJiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2VuJ1xuICAgICAgICA/IGxhbmdTZWFyY2hUZXJtLnZhbHVlXG4gICAgICAgIDogbWFudWFsTGFuZ0VudHJ5ICYmIHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnZW4nXG4gICAgICAgICAgPyBtYW51YWxMYW5nRW50cnlcbiAgICAgICAgICA6IG51bGwsXG4gICAgICBzdWJUeXBlVmFsdWVfY3k6IGxhbmdTZWFyY2hUZXJtICYmIHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnY3knXG4gICAgICA/IGxhbmdTZWFyY2hUZXJtPy52YWx1ZV9jeVxuICAgICAgOiBtYW51YWxMYW5nRW50cnkgJiYgdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeSdcbiAgICAgICAgPyBtYW51YWxMYW5nRW50cnlcbiAgICAgICAgOiBudWxsLFxuICAgICAgLy8gRm9yIHVzZXItZW50ZXJlZCAoaS5lLiBub24tUmVmZXJlbmNlIERhdGEpIGxhbmd1YWdlcywgdGhlcmUgaXMgbm8ga2V5XG4gICAgICBzdWJUeXBlS2V5OiBsYW5nU2VhcmNoVGVybVxuICAgICAgICA/IGxhbmdTZWFyY2hUZXJtLmtleVxuICAgICAgICA6IG51bGwsXG4gICAgICBvdGhlckRlc2NyaXB0aW9uOiBmbGFnVHlwZT8uZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGUgJiZcbiAgICAgICAgb3RoZXJEZXNjICYmIHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnZW4nXG4gICAgICAgID8gb3RoZXJEZXNjXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbl9jeTogZmxhZ1R5cGU/LmZsYWdDb2RlID09PSB0aGlzLm90aGVyRmxhZ1R5cGVDb2RlICYmXG4gICAgICAgIG90aGVyRGVzYyAmJiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5J1xuICAgICAgICA/IG90aGVyRGVzY1xuICAgICAgICA6IG51bGwsXG4gICAgICBmbGFnQ29tbWVudDogdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdlbidcbiAgICAgICAgPyBmb3JtVmFsdWVzPy5mbGFnQ29tbWVudHNcbiAgICAgICAgOiBudWxsLFxuICAgICAgZmxhZ0NvbW1lbnRfY3k6IHRoaXMucnB4VHJhbnNsYXRpb25TZXJ2aWNlLmxhbmd1YWdlID09PSAnY3knXG4gICAgICAgID8gZm9ybVZhbHVlcz8uZmxhZ0NvbW1lbnRzXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGZsYWdVcGRhdGVDb21tZW50OiBmb3JtVmFsdWVzPy5zdGF0dXNSZWFzb24sXG4gICAgICBkYXRlVGltZUNyZWF0ZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHBhdGg6IGZsYWdUeXBlPy5QYXRoICYmXG4gICAgICAgIGZsYWdUeXBlPy5QYXRoLm1hcChwYXRoVmFsdWUgPT4gT2JqZWN0LmFzc2lnbih7IGlkOiBudWxsLCB2YWx1ZTogcGF0aFZhbHVlIH0pKSxcbiAgICAgIGhlYXJpbmdSZWxldmFudDogZmxhZ1R5cGU/LmhlYXJpbmdSZWxldmFudCA/ICdZZXMnIDogJ05vJyxcbiAgICAgIGZsYWdDb2RlOiBmbGFnVHlwZT8uZmxhZ0NvZGUsXG4gICAgICAvLyBTdGF0dXMgc2hvdWxkIGJlIHNldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBpcyBmb3IgdGhpcyBmbGFnIHR5cGUsIGlmIGZsYWcgaXMgYmVpbmcgY3JlYXRlZCBieSBhbiBleHRlcm5hbFxuICAgICAgLy8gdXNlciwgb3RoZXJ3aXNlIGl0IHNob3VsZCBiZSBzZXQgdG8gXCJBY3RpdmVcIiBpZiBDYXNlIEZsYWdzIHYyLjEgaXMgTk9UIGVuYWJsZWQsIG9yIHRoZSBzZWxlY3RlZCBzdGF0dXMgaWYgaXQgaXNcbiAgICAgIHN0YXR1czogdGhpcy5pc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxcbiAgICAgICAgPyBmbGFnVHlwZT8uZGVmYXVsdFN0YXR1c1xuICAgICAgICA6ICF0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZFxuICAgICAgICAgID8gQ2FzZUZsYWdTdGF0dXMuQUNUSVZFXG4gICAgICAgICAgOiBDYXNlRmxhZ1N0YXR1c1tmb3JtVmFsdWVzPy5zZWxlY3RlZFN0YXR1c10sXG4gICAgICBhdmFpbGFibGVFeHRlcm5hbGx5OiBmbGFnVHlwZT8uZXh0ZXJuYWxseUF2YWlsYWJsZSA/ICdZZXMnIDogJ05vJ1xuICAgIH0gYXMgRmxhZ0RldGFpbDtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlVG9GaW5hbFJldmlld1N0YWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmxhZ3NDYXNlRmllbGRWYWx1ZSgpO1xuICAgIC8vIENoZWNrIHRoYXQgbm8gZXJyb3JzIGhhdmUgYmVlbiBzZXQgb24gY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgKGJ5IGRldGVybWluZUxvY2F0aW9uRm9yRmxhZygpKTsgcHJldmVudCBtb3ZpbmcgdG9cbiAgICAvLyBmaW5hbCByZXZpZXcgc3RhZ2UgaWYgZXJyb3JzIGV4aXN0XG4gICAgaWYgKCF0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmVycm9ycykge1xuICAgICAgLy8gQ2xlYXIgdGhlIFwibm90QWxsQ2FzZUZsYWdTdGFnZXNDb21wbGV0ZWRcIiBlcnJvclxuICAgICAgdGhpcy5hbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCA9IHRydWU7XG4gICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0VHJpZ2dlclN1Ym1pdEV2ZW50KHRydWUpO1xuICAgICAgLy8gVXBkYXRlIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uIHdpdGggdGhlIGNvcnJlY3RseSBkZXRlcm1pbmVkIGxvY2F0aW9uLCBzbyB0aGUgY29ycmVjdCB2YWx1ZSBpcyBhdmFpbGFibGUgdG9cbiAgICAgIC8vIFJlYWRDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50IHdoZW4gaXQgaW5pdGlhbGlzZXMgdGhlIENhc2UgRmxhZyBTdW1tYXJ5IHBhZ2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uID0gdGhpcy5kZXRlcm1pbmVkTG9jYXRpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIFJlc2V0IHRoZSBmaWVsZHN0YXRlVG9OYXZpZ2F0ZSBhcyB0aGUgd3JpdGUgam91cm5leSBjb21wbGV0ZXMgYXQgdGhpcyBwb2ludFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UuZmllbGRTdGF0ZVRvTmF2aWdhdGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jYXNlVGl0bGVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1hbmFnZUZsYWdGaW5hbFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEKT8udmFsdWVcbiAgICA/IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURV9XRUxTSF9UUkFOU0xBVElPTiA6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlcihjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZHMuZmluZChjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0ZsYWdMYXVuY2hlciddKSk/LmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXI7XG4gIH1cbn1cbiIsIjwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiIGFyaWEtbGFiZWxsZWRieT1cImVycm9yLXN1bW1hcnktdGl0bGVcIiByb2xlPVwiYWxlcnRcIiB0YWJpbmRleD1cIi0xXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAge3snVGhlcmUgaXMgYSBwcm9ibGVtJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCI+XG4gICAgPHVsIGNsYXNzPVwiZ292dWstbGlzdCBnb3Z1ay1lcnJvci1zdW1tYXJ5X19saXN0XCI+XG4gICAgICA8bGk+XG4gICAgICAgIDxhIChjbGljayk9XCJuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KGVycm9yTWVzc2FnZS5maWVsZElkKVwiIGNsYXNzPVwidmFsaWRhdGlvbi1lcnJvclwiPnt7ZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwiIWlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJmaWVsZFN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT05cIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctbG9jYXRpb25cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXCJcbiAgICAgID48L2NjZC1zZWxlY3QtZmxhZy1sb2NhdGlvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFXCI+XG4gICAgICA8Y2NkLXNlbGVjdC1mbGFnLXR5cGUgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtqdXJpc2RpY3Rpb25dPVwianVyaXNkaWN0aW9uXCIgW2Nhc2VUeXBlSWRdPVwiY2FzZVR5cGVJZFwiXG4gICAgICAgIFtobWN0c1NlcnZpY2VJZF09XCJobWN0c1NlcnZpY2VJZFwiIFtpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXCJcbiAgICAgICAgW2lzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZF09XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWRcIlxuICAgICAgICBbc2VsZWN0ZWRGbGFnc0xvY2F0aW9uXT1cInNlbGVjdGVkRmxhZ3NMb2NhdGlvblwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIlxuICAgICAgICAoZmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVyKT1cIm9uRmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVkKCRldmVudClcIj48L2NjZC1zZWxlY3QtZmxhZy10eXBlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xBTkdVQUdFX0lOVEVSUFJFVEVSXCI+XG4gICAgICA8Y2NkLXNlYXJjaC1sYW5ndWFnZS1pbnRlcnByZXRlciBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCJcbiAgICAgICAgW2ZsYWdUeXBlXT1cImZsYWdUeXBlXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPlxuICAgICAgPC9jY2Qtc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTXCI+XG4gICAgICA8Y2NkLWFkZC1jb21tZW50cyBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW29wdGlvbmFsXT1cImZsYWdDb21tZW50c09wdGlvbmFsXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICAgIFtpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyRXh0ZXJuYWxdPVwiaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlckV4dGVybmFsXCJcbiAgICAgICAgW2lzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIyUG9pbnQxRW5hYmxlZF09XCJpc0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyMlBvaW50MUVuYWJsZWRcIj5cbiAgICAgIDwvY2NkLWFkZC1jb21tZW50cz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19TVEFUVVNcIj5cbiAgICAgIDxjY2QtY29uZmlybS1mbGFnLXN0YXR1cyBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2RlZmF1bHRTdGF0dXNdPVwiZmxhZ1R5cGUuZGVmYXVsdFN0YXR1c1wiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1jb25maXJtLWZsYWctc3RhdHVzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJmaWVsZFN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1NcIj5cbiAgICAgIDxjY2QtbWFuYWdlLWNhc2UtZmxhZ3MgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCIgW2Nhc2VUaXRsZV09XCJjYXNlVGl0bGVcIlxuICAgICAgICBbZGlzcGxheUNvbnRleHRQYXJhbWV0ZXJdPVwiZGlzcGxheUNvbnRleHRQYXJhbWV0ZXJcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtbWFuYWdlLWNhc2UtZmxhZ3M+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXCI+XG4gICAgICA8Y2NkLXVwZGF0ZS1mbGFnIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIlxuICAgICAgICBbZGlzcGxheUNvbnRleHRQYXJhbWV0ZXJdPVwiZGlzcGxheUNvbnRleHRQYXJhbWV0ZXJcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtdXBkYXRlLWZsYWc+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFX1dFTFNIX1RSQU5TTEFUSU9OXCI+XG4gICAgICA8Y2NkLXVwZGF0ZS1mbGFnLWFkZC10cmFuc2xhdGlvbi1mb3JtXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCJcbiAgICAgID48L2NjZC11cGRhdGUtZmxhZy1hZGQtdHJhbnNsYXRpb24tZm9ybT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -81,6 +81,7 @@ import { UnsupportedFieldComponent } from './unsupported-field.component';
81
81
  import { PaletteUtilsModule } from './utils';
82
82
  import { WaysToPayFieldComponent } from './waystopay';
83
83
  import { ReadYesNoFieldComponent, WriteYesNoFieldComponent, YesNoService } from './yes-no';
84
+ import { QueryConfirmationComponent } from './query-management/components/query-confirmation/query-confirmation.component';
84
85
  import * as i0 from "@angular/core";
85
86
  import * as i1 from "ngx-markdown";
86
87
  import * as i2 from "@nicky-lenaers/ngx-scroll-to";
@@ -223,6 +224,7 @@ const PALETTE_COMPONENTS = [
223
224
  QualifyingQuestionDetailComponent,
224
225
  QueryAttachmentsReadComponent,
225
226
  QueryEventCompletionComponent,
227
+ QueryConfirmationComponent,
226
228
  // Case event completion
227
229
  CaseEventCompletionComponent,
228
230
  CaseEventCompletionTaskCancelledComponent,
@@ -490,6 +492,7 @@ export class PaletteModule {
490
492
  QualifyingQuestionDetailComponent,
491
493
  QueryAttachmentsReadComponent,
492
494
  QueryEventCompletionComponent,
495
+ QueryConfirmationComponent,
493
496
  // Case event completion
494
497
  CaseEventCompletionComponent,
495
498
  CaseEventCompletionTaskCancelledComponent,
@@ -645,6 +648,7 @@ export class PaletteModule {
645
648
  QualifyingQuestionDetailComponent,
646
649
  QueryAttachmentsReadComponent,
647
650
  QueryEventCompletionComponent,
651
+ QueryConfirmationComponent,
648
652
  // Case event completion
649
653
  CaseEventCompletionComponent,
650
654
  CaseEventCompletionTaskCancelledComponent,
@@ -733,4 +737,4 @@ i0.ɵɵsetComponentScope(QueryAttachmentsReadComponent, function () { return [i5
733
737
  i0.ɵɵsetComponentScope(QueryEventCompletionComponent, function () { return [
734
738
  // Case event completion
735
739
  CaseEventCompletionComponent]; }, []);
736
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFsZXR0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9wYWxldHRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFZLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLElBQUkscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsc0JBQXNCLElBQUksZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQkFBb0IsSUFBSSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFn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QUE2Qiw0TEFDN0IsK0JBQStCO0lBRy9CLDRCQUE0Qjt1QkFGNUIsOEJBQThCLGlDQUQ5QiwrQkFBK0I7SUFNL0IsNkJBQTZCO0lBQzdCLDZCQUE2Qjt1QkFMN0IsK0JBQStCLHdFQTVDL0IsNkJBQTZCO3VCQWdEN0IsNkJBQTZCLGlDQXRHN0IsNEJBQTRCO3VCQXVHNUIsNkJBQTZCO0lBRTdCLHdCQUF3QjtJQUN4Qiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSwgTmd4TWF0TmF0aXZlRGF0ZU1vZHVsZSwgTmd4TWF0VGltZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDZGtUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBOZ01vZHVsZSwgUHJvdmlkZXIsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5QXV0b2NvbXBsZXRlTW9kdWxlIGFzIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTUFUX0xFR0FDWV9EQVRFX0xPQ0FMRSBhcyBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2dNb2R1bGUgYXMgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lGb3JtRmllbGRNb2R1bGUgYXMgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWZvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0TGVnYWN5SW5wdXRNb2R1bGUgYXMgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktaW5wdXQnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBheW1lbnRMaWJNb2R1bGUgfSBmcm9tICdAaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZWRpYVZpZXdlck1vZHVsZSB9IGZyb20gJ0BobWN0cy9tZWRpYS12aWV3ZXInO1xuaW1wb3J0IHsgU2Nyb2xsVG9Nb2R1bGUgfSBmcm9tICdAbmlja3ktbGVuYWVycy9uZ3gtc2Nyb2xsLXRvJztcbmltcG9ydCB7IE1hcmtkb3duTW9kdWxlIH0gZnJvbSAnbmd4LW1hcmtkb3duJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBIZWFkZXJzTW9kdWxlLCBUYWJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCYW5uZXJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9iYW5uZXJzL2Jhbm5lcnMubW9kdWxlJztcbmltcG9ydCB7IEJvZHlNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2JvZHkvYm9keS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9vdGVyc01vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3RlcnMubW9kdWxlJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Zvcm0vZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FzZUVkaXREYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YSc7XG5pbXBvcnQgeyBMYWJlbFN1YnN0aXR1dG9yTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zdWJzdGl0dXRvcic7XG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FzZS1mbGFnL2Nhc2UtZmxhZy1yZWZkYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tZGF0YS1zZXJ2aWNlL2NvbW1vbi1kYXRhLXNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbGlkYXRvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvanVyaXNkaWN0aW9uL2p1cmlzZGljdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRpbmdNb2R1bGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2FkaW5nL2xvYWRpbmcubW9kdWxlJztcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3cnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50Q29tcGxldGlvbkNvbXBvbmVudCwgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tDYW5jZWxsZWRDb21wb25lbnQsIENhc2VFdmVudENvbXBsZXRpb25UYXNrUmVhc3NpZ25lZENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZWRpdG9yL2Nhc2UtZXZlbnQtY29tcGxldGlvbic7XG5pbXBvcnQgeyBXcml0ZUFkZHJlc3NGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vYWRkcmVzcy93cml0ZS1hZGRyZXNzLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZFJlYWRDb21wb25lbnQsIEZpZWxkUmVhZExhYmVsQ29tcG9uZW50LCBGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZpZWxkJztcbmltcG9ydCB7IENhc2VGaWxlVmlld092ZXJsYXlNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWZpbGUtdmlldyc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENhc2VGaWxlVmlld0ZvbGRlclNlbGVjdG9yQ29tcG9uZW50XG59IGZyb20gJy4vY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9jYXNlLWZpbGUtdmlldy1mb2xkZXItc2VsZWN0b3IvY2FzZS1maWxlLXZpZXctZm9sZGVyLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDYXNlRmlsZVZpZXdGb2xkZXJEb2N1bWVudEFjdGlvbnNDb21wb25lbnRcbn0gZnJvbSAnLi9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucy9jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2FzZUZpbGVWaWV3Rm9sZGVyU29ydENvbXBvbmVudFxufSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0L2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQWRkQ29tbWVudHNDb21wb25lbnQsXG4gIENhc2VGbGFnU3VtbWFyeUxpc3RDb21wb25lbnQsXG4gIENhc2VGbGFnVGFibGVDb21wb25lbnQsXG4gIENvbmZpcm1GbGFnU3RhdHVzQ29tcG9uZW50LFxuICBGbGFnRmllbGREaXNwbGF5UGlwZSxcbiAgTGFuZ3VhZ2VJbnRlcnByZXRlckRpc3BsYXlQaXBlLFxuICBNYW5hZ2VDYXNlRmxhZ3NDb21wb25lbnQsXG4gIE1hbmFnZUNhc2VGbGFnc0xhYmVsRGlzcGxheVBpcGUsXG4gIFJlYWRDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50LFxuICBTZWFyY2hMYW5ndWFnZUludGVycHJldGVyQ29tcG9uZW50LFxuICBTZWxlY3RGbGFnTG9jYXRpb25Db21wb25lbnQsXG4gIFNlbGVjdEZsYWdUeXBlQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnQWRkVHJhbnNsYXRpb25Gb3JtQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnVGl0bGVEaXNwbGF5UGlwZSxcbiAgV3JpdGVDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vY2FzZS1mbGFnJztcbmltcG9ydCB7IFJlYWRDYXNlTGlua0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWxpbmsvcmVhZC1jYXNlLWxpbmstZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdyaXRlQ2FzZUxpbmtGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1saW5rL3dyaXRlLWNhc2UtbGluay1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVhZENvbGxlY3Rpb25GaWVsZENvbXBvbmVudCwgV3JpdGVDb2xsZWN0aW9uRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkNyZWF0ZUNoZWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9jb2xsZWN0aW9uL2NvbGxlY3Rpb24tY3JlYXRlLWNoZWNrZXIuc2VydmljZSc7XG5pbXBvcnQge1xuICBSZWFkQ29tcGxleEZpZWxkQ29sbGVjdGlvblRhYmxlQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkUmF3Q29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkVGFibGVDb21wb25lbnQsXG4gIFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vY29tcGxleCc7XG5pbXBvcnQgeyBSZWFkRGF0ZUZpZWxkQ29tcG9uZW50LCBXcml0ZURhdGVDb250YWluZXJGaWVsZENvbXBvbmVudCwgV3JpdGVEYXRlRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUnO1xuaW1wb3J0IHsgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGV0aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBEb2N1bWVudFVybFBpcGUgfSBmcm9tICcuL2RvY3VtZW50JztcbmltcG9ydCB7IEZpbGVVcGxvYWRQcm9ncmVzc0d1YXJkIH0gZnJvbSAnLi9kb2N1bWVudC9maWxlLXVwbG9hZC1wcm9ncmVzcy5ndWFyZCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9kb2N1bWVudC9maWxlLXVwbG9hZC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlYWREb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9kb2N1bWVudC9yZWFkLWRvY3VtZW50LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2RvY3VtZW50L3dyaXRlLWRvY3VtZW50LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljTGlzdFBpcGUsIFJlYWREeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWxpc3QnO1xuaW1wb3J0IHsgV3JpdGVEeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWxpc3Qvd3JpdGUtZHluYW1pYy1saXN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFkRHluYW1pY011bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LCBXcml0ZUR5bmFtaWNNdWx0aVNlbGVjdExpc3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1tdWx0aS1zZWxlY3QtbGlzdCc7XG5pbXBvcnQgeyBEeW5hbWljUmFkaW9MaXN0UGlwZSwgUmVhZER5bmFtaWNSYWRpb0xpc3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1yYWRpby1saXN0JztcbmltcG9ydCB7IFdyaXRlRHluYW1pY1JhZGlvTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXJhZGlvLWxpc3Qvd3JpdGUtZHluYW1pYy1yYWRpby1saXN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFkRW1haWxGaWVsZENvbXBvbmVudCwgV3JpdGVFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9lbWFpbCc7XG5pbXBvcnQgeyBGaXhlZExpc3RQaXBlLCBSZWFkRml4ZWRMaXN0RmllbGRDb21wb25lbnQsIFdyaXRlRml4ZWRMaXN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2ZpeGVkLWxpc3QnO1xuaW1wb3J0IHsgRml4ZWRSYWRpb0xpc3RQaXBlLCBSZWFkRml4ZWRSYWRpb0xpc3RGaWVsZENvbXBvbmVudCwgV3JpdGVGaXhlZFJhZGlvTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9maXhlZC1yYWRpby1saXN0JztcbmltcG9ydCB7IENhc2VIaXN0b3J5Vmlld2VyRmllbGRDb21wb25lbnQsIEV2ZW50TG9nQ29tcG9uZW50LCBFdmVudExvZ0RldGFpbHNDb21wb25lbnQsIEV2ZW50TG9nVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2hpc3RvcnknO1xuaW1wb3J0IHsgUmVhZEp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50LCBXcml0ZUp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9qdWRpY2lhbC11c2VyJztcbmltcG9ydCB7IExhYmVsRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2xhYmVsJztcbmltcG9ydCB7XG4gIEJlZm9yZVlvdVN0YXJ0Q29tcG9uZW50LFxuICBDaGVja1lvdXJBbnN3ZXJzQ29tcG9uZW50LFxuICBMaW5rQ2FzZXNDb21wb25lbnQsXG4gIExpbmtlZENhc2VzRnJvbVRhYmxlQ29tcG9uZW50LFxuICBMaW5rZWRDYXNlc1RvVGFibGVDb21wb25lbnQsXG4gIE5vTGlua2VkQ2FzZXNDb21wb25lbnQsXG4gIFJlYWRMaW5rZWRDYXNlc0ZpZWxkQ29tcG9uZW50LFxuICBVbkxpbmtDYXNlc0NvbXBvbmVudCxcbiAgV3JpdGVMaW5rZWRDYXNlc0ZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vbGlua2VkLWNhc2VzJztcbmltcG9ydCB7IExpbmtlZENhc2VzU2VydmljZSB9IGZyb20gJy4vbGlua2VkLWNhc2VzL3NlcnZpY2VzJztcbmltcG9ydCB7IE1hcmtkb3duQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi9tYXJrZG93bic7XG5pbXBvcnQgeyBNb25leUdicElucHV0Q29tcG9uZW50LCBSZWFkTW9uZXlHYnBGaWVsZENvbXBvbmVudCwgV3JpdGVNb25leUdicEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9tb25leS1nYnAnO1xuaW1wb3J0IHsgUmVhZE11bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LCBXcml0ZU11bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1zZWxlY3QtbGlzdCc7XG5pbXBvcnQgeyBSZWFkTnVtYmVyRmllbGRDb21wb25lbnQsIFdyaXRlTnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuL251bWJlcic7XG5pbXBvcnQgeyBSZWFkT3JkZXJTdW1tYXJ5RmllbGRDb21wb25lbnQsIFJlYWRPcmRlclN1bW1hcnlSb3dDb21wb25lbnQsIFdyaXRlT3JkZXJTdW1tYXJ5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL29yZGVyLXN1bW1hcnknO1xuaW1wb3J0IHtcbiAgUmVhZE9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50LFxuICBSZWFkT3JnYW5pc2F0aW9uRmllbGRSYXdDb21wb25lbnQsXG4gIFJlYWRPcmdhbmlzYXRpb25GaWVsZFRhYmxlQ29tcG9uZW50LFxuICBXcml0ZU9yZ2FuaXNhdGlvbkNvbXBsZXhGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudFxufSBmcm9tICcuL29yZ2FuaXNhdGlvbic7XG5pbXBvcnQgeyBQYWxldHRlU2VydmljZSB9IGZyb20gJy4vcGFsZXR0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENhc2VQYXltZW50SGlzdG9yeVZpZXdlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9wYXltZW50JztcbmltcG9ydCB7IFJlYWRQaG9uZVVLRmllbGRDb21wb25lbnQsIFdyaXRlUGhvbmVVS0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9waG9uZS11ayc7XG5pbXBvcnQge1xuICBRdWFsaWZ5aW5nUXVlc3Rpb25EZXRhaWxDb21wb25lbnQsXG4gIFF1YWxpZnlpbmdRdWVzdGlvbk9wdGlvbnNDb21wb25lbnQsXG4gIFF1ZXJ5QXR0YWNobWVudHNSZWFkQ29tcG9uZW50LFxuICBRdWVyeUNhc2VEZXRhaWxzSGVhZGVyQ29tcG9uZW50LFxuICBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQsXG4gIFF1ZXJ5RGV0YWlsc0NvbXBvbmVudCxcbiAgUXVlcnlFdmVudENvbXBsZXRpb25Db21wb25lbnQsXG4gIFF1ZXJ5TGlzdENvbXBvbmVudCxcbiAgUXVlcnlXcml0ZUFkZERvY3VtZW50c0NvbXBvbmVudCxcbiAgUXVlcnlXcml0ZURhdGVJbnB1dENvbXBvbmVudCxcbiAgUXVlcnlXcml0ZVJhaXNlUXVlcnlDb21wb25lbnQsXG4gIFF1ZXJ5V3JpdGVSZXNwb25kVG9RdWVyeUNvbXBvbmVudCxcbiAgUmVhZFF1ZXJ5TWFuYWdlbWVudEZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vcXVlcnktbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBSZWFkVGV4dEZpZWxkQ29tcG9uZW50LCBXcml0ZVRleHRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBSZWFkVGV4dEFyZWFGaWVsZENvbXBvbmVudCwgV3JpdGVUZXh0QXJlYUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0LWFyZWEnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vdW5zdXBwb3J0ZWQtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFBhbGV0dGVVdGlsc01vZHVsZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgV2F5c1RvUGF5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3dheXN0b3BheSc7XG5pbXBvcnQgeyBSZWFkWWVzTm9GaWVsZENvbXBvbmVudCwgV3JpdGVZZXNOb0ZpZWxkQ29tcG9uZW50LCBZZXNOb1NlcnZpY2UgfSBmcm9tICcuL3llcy1ubyc7XG5cbmNvbnN0IFBBTEVUVEVfQ09NUE9ORU5UUyA9IFtcbiAgVW5zdXBwb3J0ZWRGaWVsZENvbXBvbmVudCxcbiAgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQsXG4gIFdheXNUb1BheUZpZWxkQ29tcG9uZW50LFxuICBGaWVsZFJlYWRDb21wb25lbnQsXG4gIEZpZWxkV3JpdGVDb21wb25lbnQsXG4gIEZpZWxkUmVhZExhYmVsQ29tcG9uZW50LFxuICBMYWJlbEZpZWxkQ29tcG9uZW50LFxuICBDYXNlUGF5bWVudEhpc3RvcnlWaWV3ZXJGaWVsZENvbXBvbmVudCxcbiAgTW9uZXlHYnBJbnB1dENvbXBvbmVudCxcbiAgQ2FzZUhpc3RvcnlWaWV3ZXJGaWVsZENvbXBvbmVudCxcbiAgRXZlbnRMb2dDb21wb25lbnQsXG4gIEV2ZW50TG9nRGV0YWlsc0NvbXBvbmVudCxcbiAgRXZlbnRMb2dUYWJsZUNvbXBvbmVudCxcblxuICAvLyBSZWFkXG4gIFJlYWRUZXh0RmllbGRDb21wb25lbnQsXG4gIFJlYWRUZXh0QXJlYUZpZWxkQ29tcG9uZW50LFxuICBSZWFkTnVtYmVyRmllbGRDb21wb25lbnQsXG4gIFJlYWRFbWFpbEZpZWxkQ29tcG9uZW50LFxuICBSZWFkUGhvbmVVS0ZpZWxkQ29tcG9uZW50LFxuICBSZWFkRGF0ZUZpZWxkQ29tcG9uZW50LFxuICBSZWFkQ29sbGVjdGlvbkZpZWxkQ29tcG9uZW50LFxuICBSZWFkRG9jdW1lbnRGaWVsZENvbXBvbmVudCxcblxuICAvLyBuZXdcbiAgUmVhZEp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50LFxuICBSZWFkWWVzTm9GaWVsZENvbXBvbmVudCxcbiAgUmVhZE9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50LFxuICBSZWFkT3JnYW5pc2F0aW9uRmllbGRUYWJsZUNvbXBvbmVudCxcbiAgUmVhZE9yZ2FuaXNhdGlvbkZpZWxkUmF3Q29tcG9uZW50LFxuICBSZWFkT3JkZXJTdW1tYXJ5RmllbGRDb21wb25lbnQsXG4gIFJlYWRPcmRlclN1bW1hcnlSb3dDb21wb25lbnQsXG4gIFJlYWRNb25leUdicEZpZWxkQ29tcG9uZW50LFxuICBSZWFkTXVsdGlTZWxlY3RMaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWREeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50LFxuICBSZWFkRml4ZWRMaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWRGaXhlZFJhZGlvTGlzdEZpZWxkQ29tcG9uZW50LFxuICBSZWFkRHluYW1pY1JhZGlvTGlzdEZpZWxkQ29tcG9uZW50LFxuICBSZWFkQ2FzZUxpbmtGaWVsZENvbXBvbmVudCxcbiAgUmVhZENvbXBsZXhGaWVsZENvbXBvbmVudCxcbiAgUmVhZENvbXBsZXhGaWVsZFJhd0NvbXBvbmVudCxcbiAgUmVhZENvbXBsZXhGaWVsZFRhYmxlQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkQ29sbGVjdGlvblRhYmxlQ29tcG9uZW50LFxuICBSZWFkQ2FzZUZsYWdGaWVsZENvbXBvbmVudCxcbiAgUmVhZExpbmtlZENhc2VzRmllbGRDb21wb25lbnQsXG5cbiAgLy8gV3JpdGVcbiAgV3JpdGVKdWRpY2lhbFVzZXJGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVBZGRyZXNzRmllbGRDb21wb25lbnQsXG4gIFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZU9yZ2FuaXNhdGlvbkNvbXBsZXhGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUR5bmFtaWNMaXN0RmllbGRDb21wb25lbnQsXG4gIFdyaXRlRHluYW1pY1JhZGlvTGlzdEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZVRleHRGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVEYXRlQ29udGFpbmVyRmllbGRDb21wb25lbnQsXG4gIFdyaXRlVGV4dEFyZWFGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVQaG9uZVVLRmllbGRDb21wb25lbnQsXG4gIFdyaXRlTnVtYmVyRmllbGRDb21wb25lbnQsXG4gIFdyaXRlRW1haWxGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVEYXRlRmllbGRDb21wb25lbnQsXG4gIFdyaXRlQ2FzZUZsYWdGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVMaW5rZWRDYXNlc0ZpZWxkQ29tcG9uZW50LFxuXG4gIC8vIG5ld1xuICBXcml0ZVllc05vRmllbGRDb21wb25lbnQsXG4gIFdyaXRlT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQsXG4gIFdyaXRlT3JnYW5pc2F0aW9uQ29tcGxleEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZU9yZGVyU3VtbWFyeUZpZWxkQ29tcG9uZW50LFxuICBXcml0ZU1vbmV5R2JwRmllbGRDb21wb25lbnQsXG4gIFdyaXRlRGF0ZUNvbnRhaW5lckZpZWxkQ29tcG9uZW50LFxuICBXcml0ZU11bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUZpeGVkTGlzdEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUZpeGVkUmFkaW9MaXN0RmllbGRDb21wb25lbnQsXG4gIFdyaXRlQ2FzZUxpbmtGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVDb2xsZWN0aW9uRmllbGRDb21wb25lbnQsXG5cbiAgLy8gQ29tcG9uZW50TGF1bmNoZXIgd2ViIGNvbXBvbmVudHNcbiAgQ2FzZUZpbGVWaWV3RmllbGRDb21wb25lbnQsXG4gIENhc2VGaWxlVmlld0ZvbGRlckNvbXBvbmVudCxcbiAgQ2FzZUZpbGVWaWV3Rm9sZGVyU29ydENvbXBvbmVudCxcbiAgQ2FzZUZpbGVWaWV3T3ZlcmxheU1lbnVDb21wb25lbnQsXG4gIENhc2VGaWxlVmlld0ZvbGRlckRvY3VtZW50QWN0aW9uc0NvbXBvbmVudCxcbiAgQ2FzZUZpbGVWaWV3Rm9sZGVyU2VsZWN0b3JDb21wb25lbnQsXG4gIC8vIGNvbXBvbmVudCBmb3IgZHluYW1pYyBsaXN0XG4gIFdyaXRlRHluYW1pY011bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUR5bmFtaWNSYWRpb0xpc3RGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVEeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50LFxuICBSZWFkRHluYW1pY011bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LFxuICBSZWFkRHluYW1pY0xpc3RGaWVsZENvbXBvbmVudCxcbiAgUmVhZER5bmFtaWNSYWRpb0xpc3RGaWVsZENvbXBvbmVudCxcbiAgLy8gQ29tcG9uZW50cyBmb3IgY2FzZSBmbGFnc1xuICBDYXNlRmxhZ1RhYmxlQ29tcG9uZW50LFxuICBTZWxlY3RGbGFnVHlwZUNvbXBvbmVudCxcbiAgU2VhcmNoTGFuZ3VhZ2VJbnRlcnByZXRlckNvbXBvbmVudCxcbiAgU2VsZWN0RmxhZ0xvY2F0aW9uQ29tcG9uZW50LFxuICBNYW5hZ2VDYXNlRmxhZ3NDb21wb25lbnQsXG4gIEFkZENvbW1lbnRzQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnQ29tcG9uZW50LFxuICBDYXNlRmxhZ1N1bW1hcnlMaXN0Q29tcG9uZW50LFxuICBDb25maXJtRmxhZ1N0YXR1c0NvbXBvbmVudCxcbiAgVXBkYXRlRmxhZ0FkZFRyYW5zbGF0aW9uRm9ybUNvbXBvbmVudCxcbiAgLy8gQ29tcG9uZW50cyBmb3IgbGlua2VkIGNhc2VzXG4gIExpbmtlZENhc2VzVG9UYWJsZUNvbXBvbmVudCxcbiAgTGlua2VkQ2FzZXNGcm9tVGFibGVDb21wb25lbnQsXG4gIEJlZm9yZVlvdVN0YXJ0Q29tcG9uZW50LFxuICBMaW5rQ2FzZXNDb21wb25lbnQsXG4gIENoZWNrWW91ckFuc3dlcnNDb21wb25lbnQsXG4gIFVuTGlua0Nhc2VzQ29tcG9uZW50LFxuICBOb0xpbmtlZENhc2VzQ29tcG9uZW50LFxuXG4gIC8vIENvbXBvbmVudHMgZm9yIFF1ZXJ5IE1hbmFnZW1lbnRcbiAgUmVhZFF1ZXJ5TWFuYWdlbWVudEZpZWxkQ29tcG9uZW50LFxuICBRdWVyeURldGFpbHNDb21wb25lbnQsXG4gIFF1ZXJ5TGlzdENvbXBvbmVudCxcbiAgUXVlcnlXcml0ZVJlc3BvbmRUb1F1ZXJ5Q29tcG9uZW50LFxuICBRdWVyeVdyaXRlUmFpc2VRdWVyeUNvbXBvbmVudCxcbiAgUXVlcnlDYXNlRGV0YWlsc0hlYWRlckNvbXBvbmVudCxcbiAgUXVlcnlDaGVja1lvdXJBbnN3ZXJzQ29tcG9uZW50LFxuICBRdWVyeVdyaXRlQWRkRG9jdW1lbnRzQ29tcG9uZW50LFxuICBRdWVyeVdyaXRlRGF0ZUlucHV0Q29tcG9uZW50LFxuICBRdWFsaWZ5aW5nUXVlc3Rpb25PcHRpb25zQ29tcG9uZW50LFxuICBRdWFsaWZ5aW5nUXVlc3Rpb25EZXRhaWxDb21wb25lbnQsXG4gIFF1ZXJ5QXR0YWNobWVudHNSZWFkQ29tcG9uZW50LFxuICBRdWVyeUV2ZW50Q29tcGxldGlvbkNvbXBvbmVudCxcblxuICAvLyBDYXNlIGV2ZW50IGNvbXBsZXRpb25cbiAgQ2FzZUV2ZW50Q29tcGxldGlvbkNvbXBvbmVudCxcbiAgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tDYW5jZWxsZWRDb21wb25lbnQsXG4gIENhc2VFdmVudENvbXBsZXRpb25UYXNrUmVhc3NpZ25lZENvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYXNlRWRpdERhdGFNb2R1bGUsXG4gICAgUGFsZXR0ZVV0aWxzTW9kdWxlLFxuICAgIFBpcGVzTW9kdWxlLFxuICAgIEJhbm5lcnNNb2R1bGUsXG4gICAgSGVhZGVyc01vZHVsZSxcbiAgICBGb290ZXJzTW9kdWxlLFxuICAgIEJvZHlNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIExhYmVsU3Vic3RpdHV0b3JNb2R1bGUsXG4gICAgTWFya2Rvd25Nb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSxcbiAgICBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlLFxuICAgIE5neE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIENka1RyZWVNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBQYXltZW50TGliTW9kdWxlLFxuICAgIFNjcm9sbFRvTW9kdWxlLmZvclJvb3QoKSxcbiAgICBScHhUcmFuc2xhdGlvbk1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIENka1RyZWVNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWVkaWFWaWV3ZXJNb2R1bGUsXG4gICAgTG9hZGluZ01vZHVsZSxcbiAgICBNYXJrZG93bkNvbXBvbmVudE1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaXhlZExpc3RQaXBlLFxuICAgIEZpeGVkUmFkaW9MaXN0UGlwZSxcbiAgICBEeW5hbWljTGlzdFBpcGUsXG4gICAgRHluYW1pY1JhZGlvTGlzdFBpcGUsXG4gICAgRG9jdW1lbnRVcmxQaXBlLFxuICAgIEZsYWdGaWVsZERpc3BsYXlQaXBlLFxuICAgIExhbmd1YWdlSW50ZXJwcmV0ZXJEaXNwbGF5UGlwZSxcbiAgICBNYW5hZ2VDYXNlRmxhZ3NMYWJlbERpc3BsYXlQaXBlLFxuICAgIFVwZGF0ZUZsYWdUaXRsZURpc3BsYXlQaXBlLFxuICAgIC4uLlBBTEVUVEVfQ09NUE9ORU5UU1xuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTmd4TWF0RGF0ZXRpbWVQaWNrZXJNb2R1bGUsXG4gICAgTmd4TWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgUGFsZXR0ZVV0aWxzTW9kdWxlLFxuICAgIFBpcGVzTW9kdWxlLFxuICAgIE1hcmtkb3duQ29tcG9uZW50TW9kdWxlLFxuICAgIC4uLlBBTEVUVEVfQ09NUE9ORU5UU1xuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiBhcyBQcm92aWRlcixcbiAgICBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLFxuICAgIFllc05vU2VydmljZSxcbiAgICBDb2xsZWN0aW9uQ3JlYXRlQ2hlY2tlclNlcnZpY2UsXG4gICAgSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgICBQYWxldHRlU2VydmljZSxcbiAgICBGb3JtVmFsaWRhdG9yc1NlcnZpY2UsXG4gICAgRmlsZVVwbG9hZFN0YXRlU2VydmljZSxcbiAgICBGaWxlVXBsb2FkUHJvZ3Jlc3NHdWFyZCxcbiAgICBXaW5kb3dTZXJ2aWNlLFxuICAgIENvbW1vbkRhdGFTZXJ2aWNlLFxuICAgIExpbmtlZENhc2VzU2VydmljZSxcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2VuLUdCJ31cbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXG59KVxuZXhwb3J0IGNsYXNzIFBhbGV0dGVNb2R1bGUge1xufVxuIl19
740
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFsZXR0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9wYWxldHRlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMxSSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFZLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLElBQUkscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RyxPQUFPLEVBQUUsc0JBQXNCLElBQUksZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQkFBb0IsSUFBSSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFn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QkFBa0I7dUJBRGxCLHFCQUFxQiw2Q0FVckIsNkJBQTZCO3VCQVI3QixpQ0FBaUMsa0pBRmpDLHFCQUFxQjtJQUlyQiwrQkFBK0I7dUJBRC9CLDZCQUE2Qiw0TEFDN0IsK0JBQStCO0lBRy9CLDRCQUE0Qjt1QkFGNUIsOEJBQThCLGlDQUQ5QiwrQkFBK0I7SUFNL0IsNkJBQTZCO0lBQzdCLDZCQUE2Qjt1QkFMN0IsK0JBQStCLHdFQTVDL0IsNkJBQTZCO3VCQWdEN0IsNkJBQTZCLGlDQXRHN0IsNEJBQTRCO3VCQXVHNUIsNkJBQTZCO0lBRzdCLHdCQUF3QjtJQUN4Qiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSwgTmd4TWF0TmF0aXZlRGF0ZU1vZHVsZSwgTmd4TWF0VGltZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyLW1hdGVyaWFsLWNvbXBvbmVudHMvZGF0ZXRpbWUtcGlja2VyJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDZGtUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBOZ01vZHVsZSwgUHJvdmlkZXIsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5QXV0b2NvbXBsZXRlTW9kdWxlIGFzIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTUFUX0xFR0FDWV9EQVRFX0xPQ0FMRSBhcyBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktY29yZSc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2dNb2R1bGUgYXMgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lGb3JtRmllbGRNb2R1bGUgYXMgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWZvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0TGVnYWN5SW5wdXRNb2R1bGUgYXMgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktaW5wdXQnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBheW1lbnRMaWJNb2R1bGUgfSBmcm9tICdAaG1jdHMvY2NwYXktd2ViLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZWRpYVZpZXdlck1vZHVsZSB9IGZyb20gJ0BobWN0cy9tZWRpYS12aWV3ZXInO1xuaW1wb3J0IHsgU2Nyb2xsVG9Nb2R1bGUgfSBmcm9tICdAbmlja3ktbGVuYWVycy9uZ3gtc2Nyb2xsLXRvJztcbmltcG9ydCB7IE1hcmtkb3duTW9kdWxlIH0gZnJvbSAnbmd4LW1hcmtkb3duJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBIZWFkZXJzTW9kdWxlLCBUYWJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCYW5uZXJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9iYW5uZXJzL2Jhbm5lcnMubW9kdWxlJztcbmltcG9ydCB7IEJvZHlNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2JvZHkvYm9keS5tb2R1bGUnO1xuaW1wb3J0IHsgRm9vdGVyc01vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL2Zvb3RlcnMubW9kdWxlJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2Zvcm0vZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FzZUVkaXREYXRhTW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YSc7XG5pbXBvcnQgeyBMYWJlbFN1YnN0aXR1dG9yTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zdWJzdGl0dXRvcic7XG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uLy4uL3BpcGVzL3BpcGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FzZS1mbGFnL2Nhc2UtZmxhZy1yZWZkYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb21tb24tZGF0YS1zZXJ2aWNlL2NvbW1vbi1kYXRhLXNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbGlkYXRvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvanVyaXNkaWN0aW9uL2p1cmlzZGljdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRpbmdNb2R1bGUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2FkaW5nL2xvYWRpbmcubW9kdWxlJztcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3cnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50Q29tcGxldGlvbkNvbXBvbmVudCwgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tDYW5jZWxsZWRDb21wb25lbnQsIENhc2VFdmVudENvbXBsZXRpb25UYXNrUmVhc3NpZ25lZENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZWRpdG9yL2Nhc2UtZXZlbnQtY29tcGxldGlvbic7XG5pbXBvcnQgeyBXcml0ZUFkZHJlc3NGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vYWRkcmVzcy93cml0ZS1hZGRyZXNzLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWVsZFJlYWRDb21wb25lbnQsIEZpZWxkUmVhZExhYmVsQ29tcG9uZW50LCBGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWZpZWxkJztcbmltcG9ydCB7IENhc2VGaWxlVmlld092ZXJsYXlNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWZpbGUtdmlldyc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1maWxlLXZpZXcvY2FzZS1maWxlLXZpZXctZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENhc2VGaWxlVmlld0ZvbGRlclNlbGVjdG9yQ29tcG9uZW50XG59IGZyb20gJy4vY2FzZS1maWxlLXZpZXcvY29tcG9uZW50cy9jYXNlLWZpbGUtdmlldy1mb2xkZXItc2VsZWN0b3IvY2FzZS1maWxlLXZpZXctZm9sZGVyLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDYXNlRmlsZVZpZXdGb2xkZXJEb2N1bWVudEFjdGlvbnNDb21wb25lbnRcbn0gZnJvbSAnLi9jYXNlLWZpbGUtdmlldy9jb21wb25lbnRzL2Nhc2UtZmlsZS12aWV3LWZvbGRlci9jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucy9jYXNlLWZpbGUtdmlldy1mb2xkZXItZG9jdW1lbnQtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2FzZUZpbGVWaWV3Rm9sZGVyU29ydENvbXBvbmVudFxufSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0L2Nhc2UtZmlsZS12aWV3LWZvbGRlci1zb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXNlRmlsZVZpZXdGb2xkZXJDb21wb25lbnQgfSBmcm9tICcuL2Nhc2UtZmlsZS12aWV3L2NvbXBvbmVudHMvY2FzZS1maWxlLXZpZXctZm9sZGVyL2Nhc2UtZmlsZS12aWV3LWZvbGRlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQWRkQ29tbWVudHNDb21wb25lbnQsXG4gIENhc2VGbGFnU3VtbWFyeUxpc3RDb21wb25lbnQsXG4gIENhc2VGbGFnVGFibGVDb21wb25lbnQsXG4gIENvbmZpcm1GbGFnU3RhdHVzQ29tcG9uZW50LFxuICBGbGFnRmllbGREaXNwbGF5UGlwZSxcbiAgTGFuZ3VhZ2VJbnRlcnByZXRlckRpc3BsYXlQaXBlLFxuICBNYW5hZ2VDYXNlRmxhZ3NDb21wb25lbnQsXG4gIE1hbmFnZUNhc2VGbGFnc0xhYmVsRGlzcGxheVBpcGUsXG4gIFJlYWRDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50LFxuICBTZWFyY2hMYW5ndWFnZUludGVycHJldGVyQ29tcG9uZW50LFxuICBTZWxlY3RGbGFnTG9jYXRpb25Db21wb25lbnQsXG4gIFNlbGVjdEZsYWdUeXBlQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnQWRkVHJhbnNsYXRpb25Gb3JtQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnVGl0bGVEaXNwbGF5UGlwZSxcbiAgV3JpdGVDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vY2FzZS1mbGFnJztcbmltcG9ydCB7IFJlYWRDYXNlTGlua0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWxpbmsvcmVhZC1jYXNlLWxpbmstZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdyaXRlQ2FzZUxpbmtGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1saW5rL3dyaXRlLWNhc2UtbGluay1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVhZENvbGxlY3Rpb25GaWVsZENvbXBvbmVudCwgV3JpdGVDb2xsZWN0aW9uRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkNyZWF0ZUNoZWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9jb2xsZWN0aW9uL2NvbGxlY3Rpb24tY3JlYXRlLWNoZWNrZXIuc2VydmljZSc7XG5pbXBvcnQge1xuICBSZWFkQ29tcGxleEZpZWxkQ29sbGVjdGlvblRhYmxlQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkUmF3Q29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkVGFibGVDb21wb25lbnQsXG4gIFdyaXRlQ29tcGxleEZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vY29tcGxleCc7XG5pbXBvcnQgeyBSZWFkRGF0ZUZpZWxkQ29tcG9uZW50LCBXcml0ZURhdGVDb250YWluZXJGaWVsZENvbXBvbmVudCwgV3JpdGVEYXRlRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2RhdGUnO1xuaW1wb3J0IHsgRGF0ZXRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGV0aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBEb2N1bWVudFVybFBpcGUgfSBmcm9tICcuL2RvY3VtZW50JztcbmltcG9ydCB7IEZpbGVVcGxvYWRQcm9ncmVzc0d1YXJkIH0gZnJvbSAnLi9kb2N1bWVudC9maWxlLXVwbG9hZC1wcm9ncmVzcy5ndWFyZCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9kb2N1bWVudC9maWxlLXVwbG9hZC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlYWREb2N1bWVudEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9kb2N1bWVudC9yZWFkLWRvY3VtZW50LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2RvY3VtZW50L3dyaXRlLWRvY3VtZW50LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljTGlzdFBpcGUsIFJlYWREeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWxpc3QnO1xuaW1wb3J0IHsgV3JpdGVEeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWxpc3Qvd3JpdGUtZHluYW1pYy1saXN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFkRHluYW1pY011bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LCBXcml0ZUR5bmFtaWNNdWx0aVNlbGVjdExpc3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1tdWx0aS1zZWxlY3QtbGlzdCc7XG5pbXBvcnQgeyBEeW5hbWljUmFkaW9MaXN0UGlwZSwgUmVhZER5bmFtaWNSYWRpb0xpc3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1yYWRpby1saXN0JztcbmltcG9ydCB7IFdyaXRlRHluYW1pY1JhZGlvTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXJhZGlvLWxpc3Qvd3JpdGUtZHluYW1pYy1yYWRpby1saXN0LWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWFkRW1haWxGaWVsZENvbXBvbmVudCwgV3JpdGVFbWFpbEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9lbWFpbCc7XG5pbXBvcnQgeyBGaXhlZExpc3RQaXBlLCBSZWFkRml4ZWRMaXN0RmllbGRDb21wb25lbnQsIFdyaXRlRml4ZWRMaXN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL2ZpeGVkLWxpc3QnO1xuaW1wb3J0IHsgRml4ZWRSYWRpb0xpc3RQaXBlLCBSZWFkRml4ZWRSYWRpb0xpc3RGaWVsZENvbXBvbmVudCwgV3JpdGVGaXhlZFJhZGlvTGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9maXhlZC1yYWRpby1saXN0JztcbmltcG9ydCB7IENhc2VIaXN0b3J5Vmlld2VyRmllbGRDb21wb25lbnQsIEV2ZW50TG9nQ29tcG9uZW50LCBFdmVudExvZ0RldGFpbHNDb21wb25lbnQsIEV2ZW50TG9nVGFibGVDb21wb25lbnQgfSBmcm9tICcuL2hpc3RvcnknO1xuaW1wb3J0IHsgUmVhZEp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50LCBXcml0ZUp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9qdWRpY2lhbC11c2VyJztcbmltcG9ydCB7IExhYmVsRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2xhYmVsJztcbmltcG9ydCB7XG4gIEJlZm9yZVlvdVN0YXJ0Q29tcG9uZW50LFxuICBDaGVja1lvdXJBbnN3ZXJzQ29tcG9uZW50LFxuICBMaW5rQ2FzZXNDb21wb25lbnQsXG4gIExpbmtlZENhc2VzRnJvbVRhYmxlQ29tcG9uZW50LFxuICBMaW5rZWRDYXNlc1RvVGFibGVDb21wb25lbnQsXG4gIE5vTGlua2VkQ2FzZXNDb21wb25lbnQsXG4gIFJlYWRMaW5rZWRDYXNlc0ZpZWxkQ29tcG9uZW50LFxuICBVbkxpbmtDYXNlc0NvbXBvbmVudCxcbiAgV3JpdGVMaW5rZWRDYXNlc0ZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vbGlua2VkLWNhc2VzJztcbmltcG9ydCB7IExpbmtlZENhc2VzU2VydmljZSB9IGZyb20gJy4vbGlua2VkLWNhc2VzL3NlcnZpY2VzJztcbmltcG9ydCB7IE1hcmtkb3duQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi9tYXJrZG93bic7XG5pbXBvcnQgeyBNb25leUdicElucHV0Q29tcG9uZW50LCBSZWFkTW9uZXlHYnBGaWVsZENvbXBvbmVudCwgV3JpdGVNb25leUdicEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9tb25leS1nYnAnO1xuaW1wb3J0IHsgUmVhZE11bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50LCBXcml0ZU11bHRpU2VsZWN0TGlzdEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1zZWxlY3QtbGlzdCc7XG5pbXBvcnQgeyBSZWFkTnVtYmVyRmllbGRDb21wb25lbnQsIFdyaXRlTnVtYmVyRmllbGRDb21wb25lbnQgfSBmcm9tICcuL251bWJlcic7XG5pbXBvcnQgeyBSZWFkT3JkZXJTdW1tYXJ5RmllbGRDb21wb25lbnQsIFJlYWRPcmRlclN1bW1hcnlSb3dDb21wb25lbnQsIFdyaXRlT3JkZXJTdW1tYXJ5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL29yZGVyLXN1bW1hcnknO1xuaW1wb3J0IHtcbiAgUmVhZE9yZ2FuaXNhdGlvbkZpZWxkQ29tcG9uZW50LFxuICBSZWFkT3JnYW5pc2F0aW9uRmllbGRSYXdDb21wb25lbnQsXG4gIFJlYWRPcmdhbmlzYXRpb25GaWVsZFRhYmxlQ29tcG9uZW50LFxuICBXcml0ZU9yZ2FuaXNhdGlvbkNvbXBsZXhGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudFxufSBmcm9tICcuL29yZ2FuaXNhdGlvbic7XG5pbXBvcnQgeyBQYWxldHRlU2VydmljZSB9IGZyb20gJy4vcGFsZXR0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENhc2VQYXltZW50SGlzdG9yeVZpZXdlckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9wYXltZW50JztcbmltcG9ydCB7IFJlYWRQaG9uZVVLRmllbGRDb21wb25lbnQsIFdyaXRlUGhvbmVVS0ZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9waG9uZS11ayc7XG5pbXBvcnQge1xuICBRdWFsaWZ5aW5nUXVlc3Rpb25EZXRhaWxDb21wb25lbnQsXG4gIFF1YWxpZnlpbmdRdWVzdGlvbk9wdGlvbnNDb21wb25lbnQsXG4gIFF1ZXJ5QXR0YWNobWVudHNSZWFkQ29tcG9uZW50LFxuICBRdWVyeUNhc2VEZXRhaWxzSGVhZGVyQ29tcG9uZW50LFxuICBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQsXG4gIFF1ZXJ5RGV0YWlsc0NvbXBvbmVudCxcbiAgUXVlcnlFdmVudENvbXBsZXRpb25Db21wb25lbnQsXG4gIFF1ZXJ5TGlzdENvbXBvbmVudCxcbiAgUXVlcnlXcml0ZUFkZERvY3VtZW50c0NvbXBvbmVudCxcbiAgUXVlcnlXcml0ZURhdGVJbnB1dENvbXBvbmVudCxcbiAgUXVlcnlXcml0ZVJhaXNlUXVlcnlDb21wb25lbnQsXG4gIFF1ZXJ5V3JpdGVSZXNwb25kVG9RdWVyeUNvbXBvbmVudCxcbiAgUmVhZFF1ZXJ5TWFuYWdlbWVudEZpZWxkQ29tcG9uZW50XG59IGZyb20gJy4vcXVlcnktbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBSZWFkVGV4dEZpZWxkQ29tcG9uZW50LCBXcml0ZVRleHRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBSZWFkVGV4dEFyZWFGaWVsZENvbXBvbmVudCwgV3JpdGVUZXh0QXJlYUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0LWFyZWEnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vdW5zdXBwb3J0ZWQtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFBhbGV0dGVVdGlsc01vZHVsZSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgV2F5c1RvUGF5RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3dheXN0b3BheSc7XG5pbXBvcnQgeyBSZWFkWWVzTm9GaWVsZENvbXBvbmVudCwgV3JpdGVZZXNOb0ZpZWxkQ29tcG9uZW50LCBZZXNOb1NlcnZpY2UgfSBmcm9tICcuL3llcy1ubyc7XG5pbXBvcnQgeyBRdWVyeUNvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcXVlcnktbWFuYWdlbWVudC9jb21wb25lbnRzL3F1ZXJ5LWNvbmZpcm1hdGlvbi9xdWVyeS1jb25maXJtYXRpb24uY29tcG9uZW50JztcblxuY29uc3QgUEFMRVRURV9DT01QT05FTlRTID0gW1xuICBVbnN1cHBvcnRlZEZpZWxkQ29tcG9uZW50LFxuICBEYXRldGltZVBpY2tlckNvbXBvbmVudCxcbiAgV2F5c1RvUGF5RmllbGRDb21wb25lbnQsXG4gIEZpZWxkUmVhZENvbXBvbmVudCxcbiAgRmllbGRXcml0ZUNvbXBvbmVudCxcbiAgRmllbGRSZWFkTGFiZWxDb21wb25lbnQsXG4gIExhYmVsRmllbGRDb21wb25lbnQsXG4gIENhc2VQYXltZW50SGlzdG9yeVZpZXdlckZpZWxkQ29tcG9uZW50LFxuICBNb25leUdicElucHV0Q29tcG9uZW50LFxuICBDYXNlSGlzdG9yeVZpZXdlckZpZWxkQ29tcG9uZW50LFxuICBFdmVudExvZ0NvbXBvbmVudCxcbiAgRXZlbnRMb2dEZXRhaWxzQ29tcG9uZW50LFxuICBFdmVudExvZ1RhYmxlQ29tcG9uZW50LFxuXG4gIC8vIFJlYWRcbiAgUmVhZFRleHRGaWVsZENvbXBvbmVudCxcbiAgUmVhZFRleHRBcmVhRmllbGRDb21wb25lbnQsXG4gIFJlYWROdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgUmVhZEVtYWlsRmllbGRDb21wb25lbnQsXG4gIFJlYWRQaG9uZVVLRmllbGRDb21wb25lbnQsXG4gIFJlYWREYXRlRmllbGRDb21wb25lbnQsXG4gIFJlYWRDb2xsZWN0aW9uRmllbGRDb21wb25lbnQsXG4gIFJlYWREb2N1bWVudEZpZWxkQ29tcG9uZW50LFxuXG4gIC8vIG5ld1xuICBSZWFkSnVkaWNpYWxVc2VyRmllbGRDb21wb25lbnQsXG4gIFJlYWRZZXNOb0ZpZWxkQ29tcG9uZW50LFxuICBSZWFkT3JnYW5pc2F0aW9uRmllbGRDb21wb25lbnQsXG4gIFJlYWRPcmdhbmlzYXRpb25GaWVsZFRhYmxlQ29tcG9uZW50LFxuICBSZWFkT3JnYW5pc2F0aW9uRmllbGRSYXdDb21wb25lbnQsXG4gIFJlYWRPcmRlclN1bW1hcnlGaWVsZENvbXBvbmVudCxcbiAgUmVhZE9yZGVyU3VtbWFyeVJvd0NvbXBvbmVudCxcbiAgUmVhZE1vbmV5R2JwRmllbGRDb21wb25lbnQsXG4gIFJlYWRNdWx0aVNlbGVjdExpc3RGaWVsZENvbXBvbmVudCxcbiAgUmVhZER5bmFtaWNMaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWRGaXhlZExpc3RGaWVsZENvbXBvbmVudCxcbiAgUmVhZEZpeGVkUmFkaW9MaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWREeW5hbWljUmFkaW9MaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWRDYXNlTGlua0ZpZWxkQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkQ29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkUmF3Q29tcG9uZW50LFxuICBSZWFkQ29tcGxleEZpZWxkVGFibGVDb21wb25lbnQsXG4gIFJlYWRDb21wbGV4RmllbGRDb2xsZWN0aW9uVGFibGVDb21wb25lbnQsXG4gIFJlYWRDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50LFxuICBSZWFkTGlua2VkQ2FzZXNGaWVsZENvbXBvbmVudCxcblxuICAvLyBXcml0ZVxuICBXcml0ZUp1ZGljaWFsVXNlckZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUFkZHJlc3NGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVDb21wbGV4RmllbGRDb21wb25lbnQsXG4gIFdyaXRlT3JnYW5pc2F0aW9uQ29tcGxleEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQsXG4gIFdyaXRlRHluYW1pY0xpc3RGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVEeW5hbWljUmFkaW9MaXN0RmllbGRDb21wb25lbnQsXG4gIFdyaXRlVGV4dEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZURhdGVDb250YWluZXJGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVUZXh0QXJlYUZpZWxkQ29tcG9uZW50LFxuICBXcml0ZVBob25lVUtGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVOdW1iZXJGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVFbWFpbEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZURhdGVGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUxpbmtlZENhc2VzRmllbGRDb21wb25lbnQsXG5cbiAgLy8gbmV3XG4gIFdyaXRlWWVzTm9GaWVsZENvbXBvbmVudCxcbiAgV3JpdGVPcmdhbmlzYXRpb25GaWVsZENvbXBvbmVudCxcbiAgV3JpdGVPcmdhbmlzYXRpb25Db21wbGV4RmllbGRDb21wb25lbnQsXG4gIFdyaXRlT3JkZXJTdW1tYXJ5RmllbGRDb21wb25lbnQsXG4gIFdyaXRlTW9uZXlHYnBGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVEYXRlQ29udGFpbmVyRmllbGRDb21wb25lbnQsXG4gIFdyaXRlTXVsdGlTZWxlY3RMaXN0RmllbGRDb21wb25lbnQsXG4gIFdyaXRlRml4ZWRMaXN0RmllbGRDb21wb25lbnQsXG4gIFdyaXRlRml4ZWRSYWRpb0xpc3RGaWVsZENvbXBvbmVudCxcbiAgV3JpdGVDYXNlTGlua0ZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUNvbGxlY3Rpb25GaWVsZENvbXBvbmVudCxcblxuICAvLyBDb21wb25lbnRMYXVuY2hlciB3ZWIgY29tcG9uZW50c1xuICBDYXNlRmlsZVZpZXdGaWVsZENvbXBvbmVudCxcbiAgQ2FzZUZpbGVWaWV3Rm9sZGVyQ29tcG9uZW50LFxuICBDYXNlRmlsZVZpZXdGb2xkZXJTb3J0Q29tcG9uZW50LFxuICBDYXNlRmlsZVZpZXdPdmVybGF5TWVudUNvbXBvbmVudCxcbiAgQ2FzZUZpbGVWaWV3Rm9sZGVyRG9jdW1lbnRBY3Rpb25zQ29tcG9uZW50LFxuICBDYXNlRmlsZVZpZXdGb2xkZXJTZWxlY3RvckNvbXBvbmVudCxcbiAgLy8gY29tcG9uZW50IGZvciBkeW5hbWljIGxpc3RcbiAgV3JpdGVEeW5hbWljTXVsdGlTZWxlY3RMaXN0RmllbGRDb21wb25lbnQsXG4gIFdyaXRlRHluYW1pY1JhZGlvTGlzdEZpZWxkQ29tcG9uZW50LFxuICBXcml0ZUR5bmFtaWNMaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWREeW5hbWljTXVsdGlTZWxlY3RMaXN0RmllbGRDb21wb25lbnQsXG4gIFJlYWREeW5hbWljTGlzdEZpZWxkQ29tcG9uZW50LFxuICBSZWFkRHluYW1pY1JhZGlvTGlzdEZpZWxkQ29tcG9uZW50LFxuICAvLyBDb21wb25lbnRzIGZvciBjYXNlIGZsYWdzXG4gIENhc2VGbGFnVGFibGVDb21wb25lbnQsXG4gIFNlbGVjdEZsYWdUeXBlQ29tcG9uZW50LFxuICBTZWFyY2hMYW5ndWFnZUludGVycHJldGVyQ29tcG9uZW50LFxuICBTZWxlY3RGbGFnTG9jYXRpb25Db21wb25lbnQsXG4gIE1hbmFnZUNhc2VGbGFnc0NvbXBvbmVudCxcbiAgQWRkQ29tbWVudHNDb21wb25lbnQsXG4gIFVwZGF0ZUZsYWdDb21wb25lbnQsXG4gIENhc2VGbGFnU3VtbWFyeUxpc3RDb21wb25lbnQsXG4gIENvbmZpcm1GbGFnU3RhdHVzQ29tcG9uZW50LFxuICBVcGRhdGVGbGFnQWRkVHJhbnNsYXRpb25Gb3JtQ29tcG9uZW50LFxuICAvLyBDb21wb25lbnRzIGZvciBsaW5rZWQgY2FzZXNcbiAgTGlua2VkQ2FzZXNUb1RhYmxlQ29tcG9uZW50LFxuICBMaW5rZWRDYXNlc0Zyb21UYWJsZUNvbXBvbmVudCxcbiAgQmVmb3JlWW91U3RhcnRDb21wb25lbnQsXG4gIExpbmtDYXNlc0NvbXBvbmVudCxcbiAgQ2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudCxcbiAgVW5MaW5rQ2FzZXNDb21wb25lbnQsXG4gIE5vTGlua2VkQ2FzZXNDb21wb25lbnQsXG5cbiAgLy8gQ29tcG9uZW50cyBmb3IgUXVlcnkgTWFuYWdlbWVudFxuICBSZWFkUXVlcnlNYW5hZ2VtZW50RmllbGRDb21wb25lbnQsXG4gIFF1ZXJ5RGV0YWlsc0NvbXBvbmVudCxcbiAgUXVlcnlMaXN0Q29tcG9uZW50LFxuICBRdWVyeVdyaXRlUmVzcG9uZFRvUXVlcnlDb21wb25lbnQsXG4gIFF1ZXJ5V3JpdGVSYWlzZVF1ZXJ5Q29tcG9uZW50LFxuICBRdWVyeUNhc2VEZXRhaWxzSGVhZGVyQ29tcG9uZW50LFxuICBRdWVyeUNoZWNrWW91ckFuc3dlcnNDb21wb25lbnQsXG4gIFF1ZXJ5V3JpdGVBZGREb2N1bWVudHNDb21wb25lbnQsXG4gIFF1ZXJ5V3JpdGVEYXRlSW5wdXRDb21wb25lbnQsXG4gIFF1YWxpZnlpbmdRdWVzdGlvbk9wdGlvbnNDb21wb25lbnQsXG4gIFF1YWxpZnlpbmdRdWVzdGlvbkRldGFpbENvbXBvbmVudCxcbiAgUXVlcnlBdHRhY2htZW50c1JlYWRDb21wb25lbnQsXG4gIFF1ZXJ5RXZlbnRDb21wbGV0aW9uQ29tcG9uZW50LFxuICBRdWVyeUNvbmZpcm1hdGlvbkNvbXBvbmVudCxcblxuICAvLyBDYXNlIGV2ZW50IGNvbXBsZXRpb25cbiAgQ2FzZUV2ZW50Q29tcGxldGlvbkNvbXBvbmVudCxcbiAgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tDYW5jZWxsZWRDb21wb25lbnQsXG4gIENhc2VFdmVudENvbXBsZXRpb25UYXNrUmVhc3NpZ25lZENvbXBvbmVudFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBDYXNlRWRpdERhdGFNb2R1bGUsXG4gICAgUGFsZXR0ZVV0aWxzTW9kdWxlLFxuICAgIFBpcGVzTW9kdWxlLFxuICAgIEJhbm5lcnNNb2R1bGUsXG4gICAgSGVhZGVyc01vZHVsZSxcbiAgICBGb290ZXJzTW9kdWxlLFxuICAgIEJvZHlNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIExhYmVsU3Vic3RpdHV0b3JNb2R1bGUsXG4gICAgTWFya2Rvd25Nb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSxcbiAgICBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlLFxuICAgIE5neE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIENka1RyZWVNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBQYXltZW50TGliTW9kdWxlLFxuICAgIFNjcm9sbFRvTW9kdWxlLmZvclJvb3QoKSxcbiAgICBScHhUcmFuc2xhdGlvbk1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIENka1RyZWVNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWVkaWFWaWV3ZXJNb2R1bGUsXG4gICAgTG9hZGluZ01vZHVsZSxcbiAgICBNYXJrZG93bkNvbXBvbmVudE1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGaXhlZExpc3RQaXBlLFxuICAgIEZpeGVkUmFkaW9MaXN0UGlwZSxcbiAgICBEeW5hbWljTGlzdFBpcGUsXG4gICAgRHluYW1pY1JhZGlvTGlzdFBpcGUsXG4gICAgRG9jdW1lbnRVcmxQaXBlLFxuICAgIEZsYWdGaWVsZERpc3BsYXlQaXBlLFxuICAgIExhbmd1YWdlSW50ZXJwcmV0ZXJEaXNwbGF5UGlwZSxcbiAgICBNYW5hZ2VDYXNlRmxhZ3NMYWJlbERpc3BsYXlQaXBlLFxuICAgIFVwZGF0ZUZsYWdUaXRsZURpc3BsYXlQaXBlLFxuICAgIC4uLlBBTEVUVEVfQ09NUE9ORU5UU1xuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTmd4TWF0RGF0ZXRpbWVQaWNrZXJNb2R1bGUsXG4gICAgTmd4TWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgUGFsZXR0ZVV0aWxzTW9kdWxlLFxuICAgIFBpcGVzTW9kdWxlLFxuICAgIE1hcmtkb3duQ29tcG9uZW50TW9kdWxlLFxuICAgIC4uLlBBTEVUVEVfQ09NUE9ORU5UU1xuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiBhcyBQcm92aWRlcixcbiAgICBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLFxuICAgIFllc05vU2VydmljZSxcbiAgICBDb2xsZWN0aW9uQ3JlYXRlQ2hlY2tlclNlcnZpY2UsXG4gICAgSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgICBQYWxldHRlU2VydmljZSxcbiAgICBGb3JtVmFsaWRhdG9yc1NlcnZpY2UsXG4gICAgRmlsZVVwbG9hZFN0YXRlU2VydmljZSxcbiAgICBGaWxlVXBsb2FkUHJvZ3Jlc3NHdWFyZCxcbiAgICBXaW5kb3dTZXJ2aWNlLFxuICAgIENvbW1vbkRhdGFTZXJ2aWNlLFxuICAgIExpbmtlZENhc2VzU2VydmljZSxcbiAgICB7cHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2VuLUdCJ31cbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXG59KVxuZXhwb3J0IGNsYXNzIFBhbGV0dGVNb2R1bGUge1xufVxuIl19