@unifylib/ui-lib 1.2.16 → 1.2.18

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 (84) hide show
  1. package/cli/client-app-component-guide.md +166 -166
  2. package/cli/generators/dashboard.js +147 -147
  3. package/cli/generators/form-screen.js +95 -95
  4. package/cli/generators/line-editor.js +110 -110
  5. package/cli/generators/permission-matrix.js +115 -115
  6. package/cli/generators/section-form.js +103 -103
  7. package/cli/generators/table-screen.js +181 -181
  8. package/cli/index.js +185 -185
  9. package/cli/utils.js +228 -228
  10. package/esm2022/iq-ui-lib.mjs +5 -0
  11. package/esm2022/lib/base-model/SearchStrConfig.mjs +1 -1
  12. package/esm2022/lib/base-model/api-response.mjs +1 -1
  13. package/esm2022/lib/base-model/audit-log-entry.mjs +1 -1
  14. package/esm2022/lib/base-model/button-action-settings.mjs +1 -1
  15. package/esm2022/lib/base-model/column-def.model.mjs +1 -1
  16. package/esm2022/lib/base-model/do-action-request.mjs +1 -1
  17. package/esm2022/lib/base-model/field-action.mjs +1 -1
  18. package/esm2022/lib/base-model/field-filter.model.mjs +1 -1
  19. package/esm2022/lib/base-model/field-info.mjs +1 -1
  20. package/esm2022/lib/base-model/field-predicate.model.mjs +1 -1
  21. package/esm2022/lib/base-model/filter-request.mjs +1 -1
  22. package/esm2022/lib/base-model/filter.model.mjs +1 -1
  23. package/esm2022/lib/base-model/get-items-list.mjs +1 -1
  24. package/esm2022/lib/base-model/index.mjs +1 -1
  25. package/esm2022/lib/base-model/items-total.model.mjs +1 -1
  26. package/esm2022/lib/base-model/line-item.model.mjs +1 -1
  27. package/esm2022/lib/base-model/lookupItem.mjs +1 -1
  28. package/esm2022/lib/base-model/page-info.mjs +1 -1
  29. package/esm2022/lib/base-model/permission-matrix.model.mjs +1 -1
  30. package/esm2022/lib/base-model/report-request.model.mjs +1 -1
  31. package/esm2022/lib/base-model/response-envelop.model.mjs +1 -1
  32. package/esm2022/lib/base-model/snack-message.model.mjs +1 -1
  33. package/esm2022/lib/base-model/table-column.interface.mjs +1 -1
  34. package/esm2022/lib/base-model/table-page-user-action.interface.mjs +1 -1
  35. package/esm2022/lib/base-model/workflow/workflow-steps.model.mjs +1 -1
  36. package/esm2022/lib/base-model/workflow/workflow.model.mjs +1 -1
  37. package/esm2022/lib/components/action-comment/action-comment.component.mjs +3 -3
  38. package/esm2022/lib/components/action-confirmation/action-confirmation.component.mjs +3 -3
  39. package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +3 -3
  40. package/esm2022/lib/components/advanced-filter/field-filter/field-filter.component.mjs +3 -3
  41. package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +3 -3
  42. package/esm2022/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.mjs +3 -3
  43. package/esm2022/lib/components/auto-complete/auto-complete.component.mjs +3 -3
  44. package/esm2022/lib/components/base-form/base-form.component.mjs +3 -3
  45. package/esm2022/lib/components/base-form-canvas/MaxDigitsDirective.mjs +1 -1
  46. package/esm2022/lib/components/base-form-canvas/NumbersOnlyDirective.mjs +1 -1
  47. package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +5 -5
  48. package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +3 -3
  49. package/esm2022/lib/components/base-table/base-table.component.mjs +3 -3
  50. package/esm2022/lib/components/button-actions/button-actions.component.mjs +3 -3
  51. package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +3 -3
  52. package/esm2022/lib/components/equation-builder/equation-builder.component.mjs +3 -3
  53. package/esm2022/lib/components/item-line-editor/item-line-editor.component.mjs +3 -3
  54. package/esm2022/lib/components/multi-auto-complete/multi-auto-complete.component.mjs +11 -10
  55. package/esm2022/lib/components/paginator/paginator.component.mjs +3 -3
  56. package/esm2022/lib/components/permission-matrix/permission-matrix.component.mjs +3 -3
  57. package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +3 -3
  58. package/esm2022/lib/components/report-form/report-form.component.mjs +3 -3
  59. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  60. package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +3 -3
  61. package/esm2022/lib/components/shared/action-button/action-button.component.mjs +3 -3
  62. package/esm2022/lib/components/shared/action-card/action-card.component.mjs +3 -3
  63. package/esm2022/lib/components/shared/attachment-uploader/attachment-uploader.component.mjs +3 -3
  64. package/esm2022/lib/components/shared-list/shared-list.component.mjs +3 -3
  65. package/esm2022/lib/components/snackbar-static/snackbar-static.component.mjs +3 -3
  66. package/esm2022/lib/components/title-bar/title-bar.component.mjs +3 -3
  67. package/esm2022/lib/directives/phone-number-only.directive.mjs +1 -1
  68. package/esm2022/lib/services/backend-service.mjs +1 -1
  69. package/esm2022/lib/services/index.mjs +1 -1
  70. package/esm2022/lib/services/top-panel.mjs +1 -1
  71. package/esm2022/lib/services/trigger-form.service.mjs +1 -1
  72. package/esm2022/lib/utils/base-utils.mjs +1 -1
  73. package/esm2022/lib/validators/date-range-validator.mjs +1 -1
  74. package/esm2022/lib/validators/index.mjs +1 -1
  75. package/esm2022/lib/validators/match-list.validator.mjs +1 -1
  76. package/esm2022/lib/validators/multi-email-validator.mjs +1 -1
  77. package/esm2022/public-api.mjs +1 -1
  78. package/fesm2022/iq-ui-lib.mjs +7060 -0
  79. package/fesm2022/iq-ui-lib.mjs.map +1 -0
  80. package/index.d.ts +1 -1
  81. package/package.json +14 -6
  82. package/esm2022/unifylib-ui-lib.mjs +0 -5
  83. package/fesm2022/unifylib-ui-lib.mjs +0 -7059
  84. package/fesm2022/unifylib-ui-lib.mjs.map +0 -1
@@ -255,7 +255,7 @@ export class AutoCompleteComponent {
255
255
  }
256
256
  }
257
257
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i1.BackendService }, { token: i2.TranslateService }, { token: 'secretsManager' }], target: i0.ɵɵFactoryTarget.Component }); }
258
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AutoCompleteComponent, isStandalone: true, selector: "app-auto-complete", inputs: { field: "field", form: "form", defaultValue: "defaultValue", readonly: "readonly", supportingAttributes: "supportingAttributes" }, outputs: { selectedValue: "selectedValue" }, viewQueries: [{ propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"field\" class=\"main-auto-complete\">\r\n <div class=\"mat-field-wrapper\" [formGroup]=\"form\">\r\n\r\n <div class=\"label-and-asterisk-container\">\r\n <span class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field class=\"autocomplete-field\" appearance=\"outline\">\r\n <input type=\"text\"\r\n [placeholder]=\"'search_placeholder' | translate\"\r\n [id]=\"getId()\"\r\n [formControl]=\"myControl\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [matAutocomplete]=\"auto\"\r\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\r\n matInput\r\n [required]=\"isRequired\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"matErrorDescribedBy\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [readonly]=\"readonly\"\r\n >\r\n\r\n <button mat-button matSuffix\r\n color=\"primary\"\r\n class=\"autocomplete-button\"\r\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\r\n [attr.id]=\"'autocomplete-trigger-' + field.property\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn.bind(this)\"\r\n (optionSelected)=\"itemSelected($event.option.value)\"\r\n (closed)=\"closed()\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngIf=\"items.length > 1 && lookupItems$\" [value]=\"null\">{{ \"none\" | translate }}</mat-option>\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\" [ngClass]=\"_allowSelection(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-content select=\"mat-error\"></ng-content>\r\n </mat-form-field>\r\n\r\n </div>\r\n</ng-container>\r\n", styles: [".main-auto-complete,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px;margin-bottom:4px}.custom-label{font-weight:500}.required-asterisk{color:red}.optional-text{color:#9b9b9b;font-size:14px;font-weight:400}.autocomplete-field{width:100%;display:flex;align-items:center}.autocomplete-button{margin-left:4px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix{height:36px!important}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button.mat-mdc-button{min-height:36px!important;height:36px!important;--mdc-text-button-container-height: 36px;line-height:36px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button .mat-mdc-button-touch-target{height:36px!important}@media (max-width: 600px){.main-auto-complete,.mat-field-wrapper,.autocomplete-field{flex-direction:column;width:100%}.autocomplete-button{margin-left:0;margin-top:4px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
258
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AutoCompleteComponent, isStandalone: true, selector: "app-auto-complete", inputs: { field: "field", form: "form", defaultValue: "defaultValue", readonly: "readonly", supportingAttributes: "supportingAttributes" }, outputs: { selectedValue: "selectedValue" }, viewQueries: [{ propertyName: "matACTrigger", first: true, predicate: ["autocompleteTrigger"], descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"field\" class=\"main-auto-complete\">\n <div class=\"mat-field-wrapper\" [formGroup]=\"form\">\n\n <div class=\"label-and-asterisk-container\">\n <span class=\"custom-label\" id=\"label-{{field.property}}\">\n {{ field.label! | translate }}\n </span>\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\n <span *ngIf=\"!field.required\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\n </div>\n\n <mat-form-field class=\"autocomplete-field\" appearance=\"outline\">\n <input type=\"text\"\n [placeholder]=\"'search_placeholder' | translate\"\n [id]=\"getId()\"\n [formControl]=\"myControl\"\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\n [matAutocomplete]=\"auto\"\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\n matInput\n [required]=\"isRequired\"\n [attr.aria-labelledby]=\"'label-' + field.property\"\n [attr.aria-describedby]=\"matErrorDescribedBy\"\n #autocompleteTrigger=\"matAutocompleteTrigger\"\n [readonly]=\"readonly\"\n >\n\n <button mat-button matSuffix\n color=\"primary\"\n class=\"autocomplete-button\"\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\n [attr.id]=\"'autocomplete-trigger-' + field.property\">\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn.bind(this)\"\n (optionSelected)=\"itemSelected($event.option.value)\"\n (closed)=\"closed()\">\n <ng-container *ngIf=\"!field.readonly\">\n <mat-option *ngIf=\"items.length > 1 && lookupItems$\" [value]=\"null\">{{ \"none\" | translate }}</mat-option>\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\" [ngClass]=\"_allowSelection(item)\">\n {{ itemNameByLag(item) }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n </div>\n</ng-container>\n", styles: [".main-auto-complete,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px;margin-bottom:4px}.custom-label{font-weight:500}.required-asterisk{color:red}.optional-text{color:#9b9b9b;font-size:14px;font-weight:400}.autocomplete-field{width:100%;display:flex;align-items:center}.autocomplete-button{margin-left:4px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix{height:36px!important}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button.mat-mdc-button{min-height:36px!important;height:36px!important;--mdc-text-button-container-height: 36px;line-height:36px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button .mat-mdc-button-touch-target{height:36px!important}@media (max-width: 600px){.main-auto-complete,.mat-field-wrapper,.autocomplete-field{flex-direction:column;width:100%}.autocomplete-button{margin-left:0;margin-top:4px}}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
259
259
  }
260
260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AutoCompleteComponent, decorators: [{
261
261
  type: Component,
@@ -274,7 +274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
274
274
  NgForOf,
275
275
  MatIconButton,
276
276
  MatButton,
277
- ], template: "<ng-container *ngIf=\"field\" class=\"main-auto-complete\">\r\n <div class=\"mat-field-wrapper\" [formGroup]=\"form\">\r\n\r\n <div class=\"label-and-asterisk-container\">\r\n <span class=\"custom-label\" id=\"label-{{field.property}}\">\r\n {{ field.label! | translate }}\r\n </span>\r\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\r\n <span *ngIf=\"!field.required\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\r\n </div>\r\n\r\n <mat-form-field class=\"autocomplete-field\" appearance=\"outline\">\r\n <input type=\"text\"\r\n [placeholder]=\"'search_placeholder' | translate\"\r\n [id]=\"getId()\"\r\n [formControl]=\"myControl\"\r\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\r\n [matAutocomplete]=\"auto\"\r\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\r\n matInput\r\n [required]=\"isRequired\"\r\n [attr.aria-labelledby]=\"'label-' + field.property\"\r\n [attr.aria-describedby]=\"matErrorDescribedBy\"\r\n #autocompleteTrigger=\"matAutocompleteTrigger\"\r\n [readonly]=\"readonly\"\r\n >\r\n\r\n <button mat-button matSuffix\r\n color=\"primary\"\r\n class=\"autocomplete-button\"\r\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\r\n [attr.id]=\"'autocomplete-trigger-' + field.property\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn.bind(this)\"\r\n (optionSelected)=\"itemSelected($event.option.value)\"\r\n (closed)=\"closed()\">\r\n <ng-container *ngIf=\"!field.readonly\">\r\n <mat-option *ngIf=\"items.length > 1 && lookupItems$\" [value]=\"null\">{{ \"none\" | translate }}</mat-option>\r\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\" [ngClass]=\"_allowSelection(item)\">\r\n {{ itemNameByLag(item) }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-autocomplete>\r\n <ng-content select=\"mat-error\"></ng-content>\r\n </mat-form-field>\r\n\r\n </div>\r\n</ng-container>\r\n", styles: [".main-auto-complete,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px;margin-bottom:4px}.custom-label{font-weight:500}.required-asterisk{color:red}.optional-text{color:#9b9b9b;font-size:14px;font-weight:400}.autocomplete-field{width:100%;display:flex;align-items:center}.autocomplete-button{margin-left:4px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix{height:36px!important}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button.mat-mdc-button{min-height:36px!important;height:36px!important;--mdc-text-button-container-height: 36px;line-height:36px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button .mat-mdc-button-touch-target{height:36px!important}@media (max-width: 600px){.main-auto-complete,.mat-field-wrapper,.autocomplete-field{flex-direction:column;width:100%}.autocomplete-button{margin-left:0;margin-top:4px}}\n"] }]
277
+ ], template: "<ng-container *ngIf=\"field\" class=\"main-auto-complete\">\n <div class=\"mat-field-wrapper\" [formGroup]=\"form\">\n\n <div class=\"label-and-asterisk-container\">\n <span class=\"custom-label\" id=\"label-{{field.property}}\">\n {{ field.label! | translate }}\n </span>\n <span *ngIf=\"field.required\" class=\"required-asterisk\"> * </span>\n <span *ngIf=\"!field.required\" class=\"optional-text\"> {{ 'optional' | translate }} </span>\n </div>\n\n <mat-form-field class=\"autocomplete-field\" appearance=\"outline\">\n <input type=\"text\"\n [placeholder]=\"'search_placeholder' | translate\"\n [id]=\"getId()\"\n [formControl]=\"myControl\"\n (keydown)=\"onKeydown($event, autocompleteTrigger)\"\n [matAutocomplete]=\"auto\"\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\n matInput\n [required]=\"isRequired\"\n [attr.aria-labelledby]=\"'label-' + field.property\"\n [attr.aria-describedby]=\"matErrorDescribedBy\"\n #autocompleteTrigger=\"matAutocompleteTrigger\"\n [readonly]=\"readonly\"\n >\n\n <button mat-button matSuffix\n color=\"primary\"\n class=\"autocomplete-button\"\n (click)=\"autocompleteTrigger.openPanel(); filterLookupItems('', autocompleteTrigger); $event.stopPropagation()\"\n [attr.id]=\"'autocomplete-trigger-' + field.property\">\n <mat-icon>arrow_drop_down</mat-icon>\n </button>\n\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption [displayWith]=\"displayFn.bind(this)\"\n (optionSelected)=\"itemSelected($event.option.value)\"\n (closed)=\"closed()\">\n <ng-container *ngIf=\"!field.readonly\">\n <mat-option *ngIf=\"items.length > 1 && lookupItems$\" [value]=\"null\">{{ \"none\" | translate }}</mat-option>\n <mat-option *ngFor=\"let item of lookupItems$ | async\" [value]=\"item\" [ngClass]=\"_allowSelection(item)\">\n {{ itemNameByLag(item) }}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n </div>\n</ng-container>\n", styles: [".main-auto-complete,.mat-field-wrapper{display:flex;flex-direction:column;width:100%}.label-and-asterisk-container{display:flex;align-items:center;gap:4px;margin-bottom:4px}.custom-label{font-weight:500}.required-asterisk{color:red}.optional-text{color:#9b9b9b;font-size:14px;font-weight:400}.autocomplete-field{width:100%;display:flex;align-items:center}.autocomplete-button{margin-left:4px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix{height:36px!important}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button.mat-mdc-button{min-height:36px!important;height:36px!important;--mdc-text-button-container-height: 36px;line-height:36px}:host ::ng-deep .autocomplete-field .mat-mdc-form-field-icon-suffix .autocomplete-button .mat-mdc-button-touch-target{height:36px!important}@media (max-width: 600px){.main-auto-complete,.mat-field-wrapper,.autocomplete-field{flex-direction:column;width:100%}.autocomplete-button{margin-left:0;margin-top:4px}}\n"] }]
278
278
  }], ctorParameters: () => [{ type: i1.BackendService }, { type: i2.TranslateService }, { type: undefined, decorators: [{
279
279
  type: Inject,
280
280
  args: ['secretsManager']
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
297
297
  type: ViewChild,
298
298
  args: [MatAutocompleteTrigger]
299
299
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxjQUFj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QkFDZixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLElBQUk7d0JBQ0osZUFBZTt3QkFDZixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixTQUFTO3FCQUVWOzswQkEwQ1ksTUFBTTsyQkFBQyxnQkFBZ0I7eUNBckNGLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMscUJBQXFCO2dCQVVoQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLGFBQWE7c0JBRFosTUFBTTtnQkFHNEIsbUJBQW1CO3NCQUFyRCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGaWVsZEluZm8sIEZpbHRlciwgTG9va3VwSXRlbX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtHZXRJdGVtc0xpc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2dldC1pdGVtcy1saXN0XCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcclxuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2lucHV0XCI7XHJcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtidWlsZEl0ZW1zTGlzdH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcclxuaW1wb3J0IHtSZXF1aXJlTWF0Y2h9IGZyb20gXCIuLi8uLi92YWxpZGF0b3JzXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hdXRvLWNvbXBsZXRlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gICAgTWF0T3B0aW9uLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdEljb24sXHJcbiAgICBOZ0Zvck9mLFxyXG4gICAgTWF0SWNvbkJ1dHRvbixcclxuICAgIE1hdEJ1dHRvbixcclxuXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVUcmlnZ2VyJykgbWF0QUNUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG5cclxuICBsb29rdXBJdGVtcyQ6IE9ic2VydmFibGU8TG9va3VwSXRlbVtdPiB8IHVuZGVmaW5lZDtcclxuICBsb29rdXBJdGVtczogTG9va3VwSXRlbVtdID0gW107XHJcbiAgaXRlbXM6IExvb2t1cEl0ZW1bXSA9IFtdO1xyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgLy8gZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBmaWVsZDogRmllbGRJbmZvO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZGVmYXVsdFZhbHVlOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcmVhZG9ubHk6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHN1cHBvcnRpbmdBdHRyaWJ1dGVzOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGVkVmFsdWU6IEV2ZW50RW1pdHRlcjxMb29rdXBJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSBhdXRvY29tcGxldGVUcmlnZ2VyITogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XHJcbiAgY2FzY2FkZWRJZDogbnVtYmVyID0gMDtcclxuICBpc1JlcXVpcmVkOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSB0aW1lcjogYW55O1xyXG4gIG15Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmRTZXJ2aWNlOiBCYWNrZW5kU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBASW5qZWN0KCdzZWNyZXRzTWFuYWdlcicpIHByaXZhdGUgc2VjcmV0c01hbmFnZXI6IGFueSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmJ1aWxkQ29udHJvbCgpO1xyXG4gICAgdGhpcy5leHRyYWN0V29ya2Zsb3dHdWlkZWRDYXNjYWRpbmcoKTtcclxuICAgIHRoaXMuZ2V0TG9va3VwRGF0YSgpO1xyXG4gICAgLy8gdGhpcy5teUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh2ID0+IHtcclxuICAgIC8vICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKHYsIG51bGwpO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICBpZiAoeD8uaWQgPT09IC0xMDApIHtcclxuICAgICAgICB0aGlzLm15Q29udHJvbC5yZXNldCgpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5maWVsZC5jYXNjYWRlZEJ5KSB7XHJcbiAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5UHJvcGVydHkpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZCA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5UHJvcGVydHkpLnZhbHVlPy5pZDtcclxuICAgICAgICB0aGlzLmxvb2t1cEl0ZW1zID0gW107XHJcbiAgICAgICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUodW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLm15Q29udHJvbC5wYXRjaFZhbHVlKHVuZGVmaW5lZCwge2VtaXRFdmVudDogdHJ1ZX0pO1xyXG4gICAgICAgIHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5wcm9wZXJ0eSk/LnNldFZhbHVlKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KT8ucGF0Y2hWYWx1ZSh1bmRlZmluZWQsIHtlbWl0RXZlbnQ6IHRydWV9KTtcclxuICAgICAgICB0aGlzLmdldExvb2t1cERhdGEoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0V29ya2Zsb3dHdWlkZWRDYXNjYWRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5zdXBwb3J0aW5nQXR0cmlidXRlcyAmJiB0aGlzLmZpZWxkLndvcmtmbG93Q2FzY2FkaW5nRmllbGQgJiYgdGhpcy5zdXBwb3J0aW5nQXR0cmlidXRlc1t0aGlzLmZpZWxkLndvcmtmbG93Q2FzY2FkaW5nRmllbGRdKSB7XHJcbiAgICAgIHRoaXMuY2FzY2FkZWRJZCA9IHRoaXMuc3VwcG9ydGluZ0F0dHJpYnV0ZXNbdGhpcy5maWVsZC53b3JrZmxvd0Nhc2NhZGluZ0ZpZWxkXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRDb250cm9sKCkge1xyXG4gICAgdGhpcy5teUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0pO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5maWVsZEFjdGlvbiQuc3Vic2NyaWJlKCBlID0+IHtcclxuICAgICAgaWYgKGUucHJvcGVydHkgPT09IHRoaXMuZmllbGQ/LnByb3BlcnR5KSB7XHJcbiAgICAgICAgdGhpcy5maWVsZC5yZWFkb25seSA9IGUuZmllbGRJbmZvLnJlYWRvbmx5O1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXR0cmlidXRlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMudXBkYXRlQXR0cmlidXRlcygpO1xyXG5cclxuICAgIHRoaXMubXlDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoIHYgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcclxuICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJMb29rdXBJdGVtcyh2LCBudWxsKTsgfSwgNzAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUF0dHJpYnV0ZXMoKSB7XHJcbiAgICB0aGlzLm15Q29udHJvbC5lbmFibGUoKTtcclxuICAgIGlmICh0aGlzLmZpZWxkLnJlYWRvbmx5KSB7XHJcbiAgICAgIHRoaXMubXlDb250cm9sLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5mb3JtPy5jb250cm9sc1t0aGlzLmZpZWxkPy5wcm9wZXJ0eV0uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICAgIHRoaXMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmZpZWxkLmFjY2VwdE5ld0l0ZW0pIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWxpZGF0b3JzKFJlcXVpcmVNYXRjaCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZD8ucHJvcGVydHkpPy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyh7ZGVmYXVsdFZhbHVlfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXRjaExvb2t1cFZhbHVlKGRlZmF1bHRWYWx1ZT8uY3VycmVudFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TG9va3VwRGF0YSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkgJiYgIXRoaXMuY2FzY2FkZWRJZCkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgbGlzdEl0ZW1zID0gYnVpbGRJdGVtc0xpc3QoJycsIHRoaXMuZmllbGQubG9va3VwQXBpUGF0aCwgdGhpcy5maWVsZC5jYXNjYWRlZEJ5KTtcclxuICAgICAgbGlzdEl0ZW1zLmNvbHVtbnMgPSBbJ2lkJywnY29kZScsJ2VuZ2xpc2hOYW1lJywnYXJhYmljTmFtZSddO1xyXG5cclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5RmlsdGVyKGxpc3RJdGVtcywgdGhpcy5jYXNjYWRlZElkKS5zdWJzY3JpYmUoKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwLnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmxvb2t1cEl0ZW1zID0gcmVzcC5ib2R5O1xyXG4gICAgICAgICAgdGhpcy5sb29rdXBJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgcmVzcC5ib2R5LmZvckVhY2goKHI6IExvb2t1cEl0ZW0pID0+IHRoaXMubG9va3VwSXRlbXMucHVzaChyKSk7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZm9ybT8uZ2V0KCdpZCcpPy52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5sb29rdXBJdGVtcz8uZmluZChsID0+IGwuZGVmYXVsdFZhbHVlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5teUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGl0ZW1TZWxlY3RlZCh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUuaWQgIT09IC0xKSB7XHJcbiAgICAgIGlmICh2YWx1ZS5lbmdsaXNoTmFtZS5pbmRleE9mKHRoaXMucXVlc3Rpb24pID09PSAwKSB7XHJcbiAgICAgICAgdmFsdWUuZW5nbGlzaE5hbWUgPSB2YWx1ZS5lbmdsaXNoTmFtZS5zdWJzdHJpbmcodGhpcy5xdWVzdGlvbi5sZW5ndGgpLnNwbGl0KCdcIj8nKVswXTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodmFsdWUuYXJhYmljTmFtZSAmJiB2YWx1ZS5hcmFiaWNOYW1lLmluZGV4T2YodGhpcy5xdWVzdGlvbikgPT09IDApIHtcclxuICAgICAgICB2YWx1ZS5hcmFiaWNOYW1lID0gdmFsdWUuYXJhYmljTmFtZS5zdWJzdHJpbmcodGhpcy5xdWVzdGlvbi5sZW5ndGgpLnNwbGl0KCdcIj8nKVswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5teUNvbnRyb2wudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBkaXNwbGF5Rm4oc2VsZWN0ZWQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoc2VsZWN0ZWQ/LmlkIDwgMCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpXHJcbiAgICAgIHNlbGVjdGVkID0gdGhpcy5kZWZhdWx0VmFsdWVcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKSA9PT0gJ2VuJ1xyXG4gICAgICA/IHNlbGVjdGVkPy5lbmdsaXNoTmFtZVxyXG4gICAgICA6IHNlbGVjdGVkPy5hcmFiaWNOYW1lO1xyXG4gIH1cclxuXHJcblxyXG4gIF9hbGxvd1NlbGVjdGlvbihvcHRpb246IExvb2t1cEl0ZW0pOiB7IFtjbGFzc05hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAncHJldmVudC1zZWxlY3Rpb24nOiBvcHRpb24uaWQgPT09IC0xLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGl0ZW1OYW1lQnlMYWcoaXRlbTogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKSA9PT0gJ2VuJyA/IGl0ZW0uZW5nbGlzaE5hbWUgOiBpdGVtLmFyYWJpY05hbWVcclxuXHJcbiAgfVxyXG5cclxuICBmaWx0ZXJMb29rdXBJdGVtcyhuYW1lOiBhbnksIHRyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHtcclxuICAgIGlmICh0aGlzLm15Q29udHJvbC5lbmFibGVkKSB7XHJcbiAgICAgIGlmICh0cmlnZ2VyKSB7XHJcbiAgICAgICAgdHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgbmFtZSA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobmFtZSA9PT0gJycgJiYgIXRoaXMubXlDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUodW5kZWZpbmVkKTtcclxuICAgICAgICB0aGlzLm15Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QobmFtZSwgdGhpcy5maWVsZC5sb29rdXBBcGlQYXRoLCB0aGlzLmZpZWxkLmNhc2NhZGVkQnkpO1xyXG4gICAgICBsaXN0SXRlbXMuZmlsdGVycyA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVyTGlzdDtcclxuICAgICAgdGhpcy5hZGRMb29rdXBGaWx0ZXJCeUFub3RoZXJQcm9wZXJ0aWVzKGxpc3RJdGVtcyk7XHJcbiAgICAgIGxpc3RJdGVtcy5jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5RmlsdGVyKGxpc3RJdGVtcyk7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpIHtcclxuICAgICAgICB0aGlzLmNhc2NhZGVkSWQgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeVByb3BlcnR5KS52YWx1ZT8uaWQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHRyYWN0V29ya2Zsb3dHdWlkZWRDYXNjYWRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsaXN0SXRlbXMuY29sdW1ucyA9IFsnaWQnLCdjb2RlJywnZW5nbGlzaE5hbWUnLCdhcmFiaWNOYW1lJ107XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeUZpbHRlcihsaXN0SXRlbXMsIHRoaXMuY2FzY2FkZWRJZCkuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwLnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLml0ZW1zID0gcmVzcC5ib2R5LmZpbHRlcigoaXRlbTogeyBpZDogYW55OyB9KSA9PiB0aGlzLm15Q29udHJvbC52YWx1ZT8uaWQgIT09IGl0ZW0uaWQpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLml0ZW1zPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cclxuICAgICAgICAgICAgICB0aGlzLml0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTIsIGVuZ2xpc2hOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZSwgYXJhYmljTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWV9KSkgOlxyXG4gICAgICAgICAgICAgIHRoaXMuaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMSwgZW5nbGlzaE5hbWU6ICdObyBtYXRjaCAuLi4nLCBhcmFiaWNOYW1lOiAn2LrZitixINmF2YjYrNmI2K8gIC4uLiAnfSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pdGVtcz8ubGVuZ3RoID09IDApXHJcbiAgICAgICAgICB0aGlzLmZpZWxkLmFjY2VwdE5ld0l0ZW0gJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpLnZhbHVlICE9IG51bGwgP1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTIsIGVuZ2xpc2hOYW1lOiB0aGlzLnF1ZXN0aW9uICsgbmFtZSwgYXJhYmljTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWV9KSkgOlxyXG4gICAgICAgICAgICB0aGlzLml0ZW1zPy5wdXNoKG5ldyBMb29rdXBJdGVtKHtpZDogLTEsIGVuZ2xpc2hOYW1lOiAnTm8gbWF0Y2ggLi4uJywgYXJhYmljTmFtZTogJ9i62YrYsSDZhdmI2KzZiNivICAuLi4gJ30pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb29rdXBJdGVtcyQgPSBvZih0aGlzLml0ZW1zKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZExvb2t1cEZpbHRlckJ5QW5vdGhlclByb3BlcnRpZXMobGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QpIHtcclxuICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLmZpZWxkLmxvb2t1cEZpbHRlckxpc3Q7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcGVydGllcykpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBuZXdGaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xyXG5cclxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSB0aGlzLmZvcm0/LnZhbHVlPy5bcHJvcC5maWVsZE5hbWVdO1xyXG4gICAgICBjb25zdCBmaW5hbFZhbHVlID0gdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmIGZpZWxkVmFsdWUgIT09IG51bGwgPyBmaWVsZFZhbHVlLmNvZGUgOiBmaWVsZFZhbHVlO1xyXG4gICAgICBpZiAoIWZpbmFsVmFsdWUpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgY29uc3QgZmllbGROYW1lID10eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZSAhPT0gbnVsbCA/IHByb3AuZmllbGROYW1lICsgXCIuXCIgKyB0aGlzLmZpZWxkLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZSA6IHByb3AuZmllbGROYW1lO1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSBuZXcgRmlsdGVyKHtcclxuICAgICAgICBmaWVsZFR5cGU6ICdGSUxFRF9GSUxURVInLFxyXG4gICAgICAgIGZpbHRlclR5cGU6IHVuZGVmaW5lZCxcclxuICAgICAgICBvcGVyYXRvcjogcHJvcC5vcGVyYXRvcixcclxuICAgICAgICB2YWx1ZU9iamVjdDogZmluYWxWYWx1ZSxcclxuICAgICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5ld0ZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXdGaWx0ZXJzLmxlbmd0aCkge1xyXG4gICAgICBsaXN0SXRlbXMuZmlsdGVycyA9IFsuLi4obGlzdEl0ZW1zLmZpbHRlcnMgfHwgW10pLCAuLi5uZXdGaWx0ZXJzXTtcclxuICAgIH1cclxuICAgIGxpc3RJdGVtcy5maWx0ZXJzID0gbGlzdEl0ZW1zLmZpbHRlcnMuZmlsdGVyKGYgPT4gZi52YWx1ZU9iamVjdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhdGNoTG9va3VwVmFsdWUoZGVmYXVsdFZhbHVlOiBhbnkpIHtcclxuICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcclxuXHJcbiAgICAgIC8vIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5wYXRjaFZhbHVlKGRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKGRlZmF1bHRWYWx1ZSk7XHJcbiAgICAgIHRoaXMubXlDb250cm9sLnBhdGNoVmFsdWUoZGVmYXVsdFZhbHVlLCB7ZW1pdEV2ZW50OiB0cnVlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBtYXRFcnJvckRlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQ/LnByb3BlcnR5KTtcclxuICAgIGlmICghY29udHJvbCB8fCAhdGhpcy5maWVsZD8ucHJvcGVydHkpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCB2aXNpYmxlID1cclxuICAgICAgKGNvbnRyb2wudmFsdWUgfHwgY29udHJvbC52YWx1ZSA9PT0gMCkgJiYgY29udHJvbC5zdGF0dXMgPT09ICdJTlZBTElEJztcclxuICAgIHJldHVybiB2aXNpYmxlID8gYGVycm9yLSR7dGhpcy5maWVsZC5wcm9wZXJ0eX1gIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcGVydHk7XHJcbiAgfVxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKCcnLCBhdXRvY29tcGxldGVUcmlnZ2VyKTtcclxuICAgICAgYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlZCgpIHtcclxuICAgIGlmICghdGhpcy5teUNvbnRyb2wudmFsdWUpe1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh0aGlzLm15Q29udHJvbC52YWx1ZSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbWl0KHRoaXMubXlDb250cm9sLnZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubXlDb250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZShudWxsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkXCIgY2xhc3M9XCJtYWluLWF1dG8tY29tcGxldGVcIj5cclxuICA8ZGl2IGNsYXNzPVwibWF0LWZpZWxkLXdyYXBwZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkXCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWZpZWxkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2VhcmNoX3BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiZ2V0SWQoKVwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibXlDb250cm9sXCJcclxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCJcclxuICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXHJcbiAgICAgICAgICAgICAoY2xpY2spPVwiYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTsgZmlsdGVyTG9va3VwSXRlbXMoJycsIGF1dG9jb21wbGV0ZVRyaWdnZXIpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcclxuICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwibWF0RXJyb3JEZXNjcmliZWRCeVwiXHJcbiAgICAgICAgICAgICAjYXV0b2NvbXBsZXRlVHJpZ2dlcj1cIm1hdEF1dG9jb21wbGV0ZVRyaWdnZXJcIlxyXG4gICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgPlxyXG5cclxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdFN1ZmZpeFxyXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTsgZmlsdGVyTG9va3VwSXRlbXMoJycsIGF1dG9jb21wbGV0ZVRyaWdnZXIpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cIidhdXRvY29tcGxldGUtdHJpZ2dlci0nICsgZmllbGQucHJvcGVydHlcIj5cclxuICAgICAgICA8bWF0LWljb24+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuLmJpbmQodGhpcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiaXRlbVNlbGVjdGVkKCRldmVudC5vcHRpb24udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlZCk9XCJjbG9zZWQoKVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQucmVhZG9ubHlcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiaXRlbXMubGVuZ3RoID4gMSAmJiBsb29rdXBJdGVtcyRcIiBbdmFsdWVdPVwibnVsbFwiPnt7IFwibm9uZVwiIHwgdHJhbnNsYXRlIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9va3VwSXRlbXMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiIFtuZ0NsYXNzXT1cIl9hbGxvd1NlbGVjdGlvbihpdGVtKVwiPlxyXG4gICAgICAgICAgICB7eyBpdGVtTmFtZUJ5TGFnKGl0ZW0pIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWVycm9yXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xHLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxjQUFj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QkFDZixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLElBQUk7d0JBQ0osZUFBZTt3QkFDZixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixTQUFTO3FCQUVWOzswQkEwQ1ksTUFBTTsyQkFBQyxnQkFBZ0I7eUNBckNGLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMscUJBQXFCO2dCQVVoQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLGFBQWE7c0JBRFosTUFBTTtnQkFHNEIsbUJBQW1CO3NCQUFyRCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZpZWxkSW5mbywgRmlsdGVyLCBMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIE1hdE9wdGlvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcbmltcG9ydCB7R2V0SXRlbXNMaXN0fSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9nZXQtaXRlbXMtbGlzdFwiO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nQ2xhc3MsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7YnVpbGRJdGVtc0xpc3R9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XG5pbXBvcnQge1JlcXVpcmVNYXRjaH0gZnJvbSBcIi4uLy4uL3ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hdXRvLWNvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBNYXRPcHRpb24sXG4gICAgTmdDbGFzcyxcbiAgICBNYXRJY29uLFxuICAgIE5nRm9yT2YsXG4gICAgTWF0SWNvbkJ1dHRvbixcbiAgICBNYXRCdXR0b24sXG5cbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXV0by1jb21wbGV0ZS5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ2F1dG9jb21wbGV0ZVRyaWdnZXInKSBtYXRBQ1RyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG5cbiAgbG9va3VwSXRlbXMkOiBPYnNlcnZhYmxlPExvb2t1cEl0ZW1bXT4gfCB1bmRlZmluZWQ7XG4gIGxvb2t1cEl0ZW1zOiBMb29rdXBJdGVtW10gPSBbXTtcbiAgaXRlbXM6IExvb2t1cEl0ZW1bXSA9IFtdO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZm9ybTogRm9ybUdyb3VwO1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBmaWVsZDogRmllbGRJbmZvO1xuXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxuICBkZWZhdWx0VmFsdWU6IGFueTtcblxuICBASW5wdXQoKVxuICByZWFkb25seTpib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgc3VwcG9ydGluZ0F0dHJpYnV0ZXM6IGFueTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRWYWx1ZTogRXZlbnRFbWl0dGVyPExvb2t1cEl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikgYXV0b2NvbXBsZXRlVHJpZ2dlciE6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG5cbiAgcXVlc3Rpb24gPSAnV291bGQgeW91IGxpa2UgdG8gYWRkID9cIic7XG4gIGNhc2NhZGVkSWQ6IG51bWJlciA9IDA7XG4gIGlzUmVxdWlyZWQ6Ym9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdGltZXI6IGFueTtcbiAgbXlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBASW5qZWN0KCdzZWNyZXRzTWFuYWdlcicpIHByaXZhdGUgc2VjcmV0c01hbmFnZXI6IGFueSkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5idWlsZENvbnRyb2woKTtcbiAgICB0aGlzLmV4dHJhY3RXb3JrZmxvd0d1aWRlZENhc2NhZGluZygpO1xuICAgIHRoaXMuZ2V0TG9va3VwRGF0YSgpO1xuICAgIC8vIHRoaXMubXlDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgLy8gICAgIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHRoaXMuZmlsdGVyTG9va3VwSXRlbXModiwgbnVsbCk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoeCA9PiB7XG4gICAgICBpZiAoeD8uaWQgPT09IC0xMDApIHtcbiAgICAgICAgdGhpcy5teUNvbnRyb2wucmVzZXQoKVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSkge1xuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnlQcm9wZXJ0eSk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICAgIHRoaXMuY2FzY2FkZWRJZCA9IHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5jYXNjYWRlZEJ5UHJvcGVydHkpLnZhbHVlPy5pZDtcbiAgICAgICAgdGhpcy5sb29rdXBJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLm15Q29udHJvbC5wYXRjaFZhbHVlKHVuZGVmaW5lZCwge2VtaXRFdmVudDogdHJ1ZX0pO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5wYXRjaFZhbHVlKHVuZGVmaW5lZCwge2VtaXRFdmVudDogdHJ1ZX0pO1xuICAgICAgICB0aGlzLmdldExvb2t1cERhdGEoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0V29ya2Zsb3dHdWlkZWRDYXNjYWRpbmcoKSB7XG4gICAgaWYgKHRoaXMuc3VwcG9ydGluZ0F0dHJpYnV0ZXMgJiYgdGhpcy5maWVsZC53b3JrZmxvd0Nhc2NhZGluZ0ZpZWxkICYmIHRoaXMuc3VwcG9ydGluZ0F0dHJpYnV0ZXNbdGhpcy5maWVsZC53b3JrZmxvd0Nhc2NhZGluZ0ZpZWxkXSkge1xuICAgICAgdGhpcy5jYXNjYWRlZElkID0gdGhpcy5zdXBwb3J0aW5nQXR0cmlidXRlc1t0aGlzLmZpZWxkLndvcmtmbG93Q2FzY2FkaW5nRmllbGRdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250cm9sKCkge1xuICAgIHRoaXMubXlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMuZm9ybT8uY29udHJvbHNbdGhpcy5maWVsZD8ucHJvcGVydHldKTtcbiAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmZpZWxkQWN0aW9uJC5zdWJzY3JpYmUoIGUgPT4ge1xuICAgICAgaWYgKGUucHJvcGVydHkgPT09IHRoaXMuZmllbGQ/LnByb3BlcnR5KSB7XG4gICAgICAgIHRoaXMuZmllbGQucmVhZG9ubHkgPSBlLmZpZWxkSW5mby5yZWFkb25seTtcbiAgICAgICAgdGhpcy51cGRhdGVBdHRyaWJ1dGVzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVBdHRyaWJ1dGVzKCk7XG5cbiAgICB0aGlzLm15Q29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCB2ID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckxvb2t1cEl0ZW1zKHYsIG51bGwpOyB9LCA3MDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQXR0cmlidXRlcygpIHtcbiAgICB0aGlzLm15Q29udHJvbC5lbmFibGUoKTtcbiAgICBpZiAodGhpcy5maWVsZC5yZWFkb25seSkge1xuICAgICAgdGhpcy5teUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgdGhpcy5pc1JlcXVpcmVkID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmZvcm0/LmNvbnRyb2xzW3RoaXMuZmllbGQ/LnByb3BlcnR5XS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICB0aGlzLmlzUmVxdWlyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWxpZGF0b3JzKFJlcXVpcmVNYXRjaCk7XG4gICAgfVxuXG4gICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtPy5nZXQodGhpcy5maWVsZD8ucHJvcGVydHkpPy52YWx1ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7ZGVmYXVsdFZhbHVlfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucGF0Y2hMb29rdXBWYWx1ZShkZWZhdWx0VmFsdWU/LmN1cnJlbnRWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldExvb2t1cERhdGEoKSB7XG4gICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSAmJiAhdGhpcy5jYXNjYWRlZElkKSB7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpc3RJdGVtcyA9IGJ1aWxkSXRlbXNMaXN0KCcnLCB0aGlzLmZpZWxkLmxvb2t1cEFwaVBhdGgsIHRoaXMuZmllbGQuY2FzY2FkZWRCeSk7XG4gICAgICBsaXN0SXRlbXMuY29sdW1ucyA9IFsnaWQnLCdjb2RlJywnZW5nbGlzaE5hbWUnLCdhcmFiaWNOYW1lJ107XG5cbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeUZpbHRlcihsaXN0SXRlbXMsIHRoaXMuY2FzY2FkZWRJZCkuc3Vic2NyaWJlKChyZXNwID0+IHtcbiAgICAgICAgaWYgKHJlc3AudmFsaWQpIHtcbiAgICAgICAgICB0aGlzLmxvb2t1cEl0ZW1zID0gcmVzcC5ib2R5O1xuICAgICAgICAgIHRoaXMubG9va3VwSXRlbXMgPSBbXTtcbiAgICAgICAgICByZXNwLmJvZHkuZm9yRWFjaCgocjogTG9va3VwSXRlbSkgPT4gdGhpcy5sb29rdXBJdGVtcy5wdXNoKHIpKTtcbiAgICAgICAgICBpZiAoIXRoaXMuZm9ybT8uZ2V0KCdpZCcpPy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5wYXRjaExvb2t1cFZhbHVlKHRoaXMubG9va3VwSXRlbXM/LmZpbmQobCA9PiBsLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhdGNoTG9va3VwVmFsdWUodGhpcy5teUNvbnRyb2wudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBpdGVtU2VsZWN0ZWQodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pZCAhPT0gLTEpIHtcbiAgICAgIGlmICh2YWx1ZS5lbmdsaXNoTmFtZS5pbmRleE9mKHRoaXMucXVlc3Rpb24pID09PSAwKSB7XG4gICAgICAgIHZhbHVlLmVuZ2xpc2hOYW1lID0gdmFsdWUuZW5nbGlzaE5hbWUuc3Vic3RyaW5nKHRoaXMucXVlc3Rpb24ubGVuZ3RoKS5zcGxpdCgnXCI/JylbMF07XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUuYXJhYmljTmFtZSAmJiB2YWx1ZS5hcmFiaWNOYW1lLmluZGV4T2YodGhpcy5xdWVzdGlvbikgPT09IDApIHtcbiAgICAgICAgdmFsdWUuYXJhYmljTmFtZSA9IHZhbHVlLmFyYWJpY05hbWUuc3Vic3RyaW5nKHRoaXMucXVlc3Rpb24ubGVuZ3RoKS5zcGxpdCgnXCI/JylbMF07XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUuZW1pdCh0aGlzLm15Q29udHJvbC52YWx1ZSk7XG4gICAgfVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcbiAgICB9KTtcblxuICB9XG5cbiAgZGlzcGxheUZuKHNlbGVjdGVkOiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmIChzZWxlY3RlZD8uaWQgPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpXG4gICAgICBzZWxlY3RlZCA9IHRoaXMuZGVmYXVsdFZhbHVlXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnZW4nXG4gICAgICA/IHNlbGVjdGVkPy5lbmdsaXNoTmFtZVxuICAgICAgOiBzZWxlY3RlZD8uYXJhYmljTmFtZTtcbiAgfVxuXG5cbiAgX2FsbG93U2VsZWN0aW9uKG9wdGlvbjogTG9va3VwSXRlbSk6IHsgW2NsYXNzTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3ByZXZlbnQtc2VsZWN0aW9uJzogb3B0aW9uLmlkID09PSAtMSxcbiAgICB9O1xuICB9XG5cbiAgaXRlbU5hbWVCeUxhZyhpdGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKSA9PT0gJ2VuJyA/IGl0ZW0uZW5nbGlzaE5hbWUgOiBpdGVtLmFyYWJpY05hbWVcblxuICB9XG5cbiAgZmlsdGVyTG9va3VwSXRlbXMobmFtZTogYW55LCB0cmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSB7XG4gICAgaWYgKHRoaXMubXlDb250cm9sLmVuYWJsZWQpIHtcbiAgICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICAgIHRyaWdnZXIub3BlblBhbmVsKCk7XG4gICAgICB9XG4gICAgICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5hbWUgPSAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09ICcnICYmICF0aGlzLm15Q29udHJvbC52YWx1ZSkge1xuICAgICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLm15Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpc3RJdGVtczogR2V0SXRlbXNMaXN0ID0gYnVpbGRJdGVtc0xpc3QobmFtZSwgdGhpcy5maWVsZC5sb29rdXBBcGlQYXRoLCB0aGlzLmZpZWxkLmNhc2NhZGVkQnkpO1xuICAgICAgbGlzdEl0ZW1zLmZpbHRlcnMgPSB0aGlzLmZpZWxkLmxvb2t1cEZpbHRlckxpc3Q7XG4gICAgICB0aGlzLmFkZExvb2t1cEZpbHRlckJ5QW5vdGhlclByb3BlcnRpZXMobGlzdEl0ZW1zKTtcbiAgICAgIGxpc3RJdGVtcy5jb2x1bW5zID0gWydpZCcsJ2NvZGUnLCdlbmdsaXNoTmFtZScsJ2FyYWJpY05hbWUnXTtcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0TG9va3VwSXRlbXNCeUZpbHRlcihsaXN0SXRlbXMpO1xuICAgICAgaWYgKHRoaXMuZmllbGQuY2FzY2FkZWRCeSkge1xuICAgICAgICB0aGlzLmNhc2NhZGVkSWQgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQuY2FzY2FkZWRCeVByb3BlcnR5KS52YWx1ZT8uaWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4dHJhY3RXb3JrZmxvd0d1aWRlZENhc2NhZGluZygpO1xuICAgICAgfVxuICAgICAgbGlzdEl0ZW1zLmNvbHVtbnMgPSBbJ2lkJywnY29kZScsJ2VuZ2xpc2hOYW1lJywnYXJhYmljTmFtZSddO1xuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRMb29rdXBJdGVtc0J5RmlsdGVyKGxpc3RJdGVtcywgdGhpcy5jYXNjYWRlZElkKS5zdWJzY3JpYmUocmVzcCA9PiB7XG4gICAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcyA9IHJlc3AuYm9keS5maWx0ZXIoKGl0ZW06IHsgaWQ6IGFueTsgfSkgPT4gdGhpcy5teUNvbnRyb2wudmFsdWU/LmlkICE9PSBpdGVtLmlkKTtcbiAgICAgICAgICBpZiAoIXRoaXMuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC5hY2NlcHROZXdJdGVtID9cbiAgICAgICAgICAgICAgdGhpcy5pdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0yLCBlbmdsaXNoTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWUsIGFyYWJpY05hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lfSkpIDpcbiAgICAgICAgICAgICAgdGhpcy5pdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0xLCBlbmdsaXNoTmFtZTogJ05vIG1hdGNoIC4uLicsIGFyYWJpY05hbWU6ICfYutmK2LEg2YXZiNis2YjYryAgLi4uICd9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLml0ZW1zPy5sZW5ndGggPT0gMClcbiAgICAgICAgICB0aGlzLmZpZWxkLmFjY2VwdE5ld0l0ZW0gJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldCh0aGlzLmZpZWxkLmNhc2NhZGVkQnkpLnZhbHVlICE9IG51bGwgP1xuICAgICAgICAgICAgdGhpcy5pdGVtcz8ucHVzaChuZXcgTG9va3VwSXRlbSh7aWQ6IC0yLCBlbmdsaXNoTmFtZTogdGhpcy5xdWVzdGlvbiArIG5hbWUsIGFyYWJpY05hbWU6IHRoaXMucXVlc3Rpb24gKyBuYW1lfSkpIDpcbiAgICAgICAgICAgIHRoaXMuaXRlbXM/LnB1c2gobmV3IExvb2t1cEl0ZW0oe2lkOiAtMSwgZW5nbGlzaE5hbWU6ICdObyBtYXRjaCAuLi4nLCBhcmFiaWNOYW1lOiAn2LrZitixINmF2YjYrNmI2K8gIC4uLiAnfSkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9va3VwSXRlbXMkID0gb2YodGhpcy5pdGVtcyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhZGRMb29rdXBGaWx0ZXJCeUFub3RoZXJQcm9wZXJ0aWVzKGxpc3RJdGVtczogR2V0SXRlbXNMaXN0KSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZmllbGQubG9va3VwRmlsdGVyTGlzdDtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcGVydGllcykpIHJldHVybjtcblxuICAgIGNvbnN0IG5ld0ZpbHRlcnM6IEZpbHRlcltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHRoaXMuZm9ybT8udmFsdWU/Lltwcm9wLmZpZWxkTmFtZV07XG4gICAgICBjb25zdCBmaW5hbFZhbHVlID0gdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmIGZpZWxkVmFsdWUgIT09IG51bGwgPyBmaWVsZFZhbHVlLmNvZGUgOiBmaWVsZFZhbHVlO1xuICAgICAgaWYgKCFmaW5hbFZhbHVlKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgZmllbGROYW1lID10eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZSAhPT0gbnVsbCA/IHByb3AuZmllbGROYW1lICsgXCIuXCIgKyB0aGlzLmZpZWxkLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZSA6IHByb3AuZmllbGROYW1lO1xuICAgICAgY29uc3QgZmlsdGVyID0gbmV3IEZpbHRlcih7XG4gICAgICAgIGZpZWxkVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXG4gICAgICAgIGZpbHRlclR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgb3BlcmF0b3I6IHByb3Aub3BlcmF0b3IsXG4gICAgICAgIHZhbHVlT2JqZWN0OiBmaW5hbFZhbHVlLFxuICAgICAgICBmaWVsZE5hbWU6IGZpZWxkTmFtZVxuICAgICAgfSk7XG5cbiAgICAgIG5ld0ZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgIH1cblxuICAgIGlmIChuZXdGaWx0ZXJzLmxlbmd0aCkge1xuICAgICAgbGlzdEl0ZW1zLmZpbHRlcnMgPSBbLi4uKGxpc3RJdGVtcy5maWx0ZXJzIHx8IFtdKSwgLi4ubmV3RmlsdGVyc107XG4gICAgfVxuICAgIGxpc3RJdGVtcy5maWx0ZXJzID0gbGlzdEl0ZW1zLmZpbHRlcnMuZmlsdGVyKGYgPT4gZi52YWx1ZU9iamVjdCk7XG4gIH1cblxuICBwcml2YXRlIHBhdGNoTG9va3VwVmFsdWUoZGVmYXVsdFZhbHVlOiBhbnkpIHtcbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG5cbiAgICAgIC8vIHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQucHJvcGVydHkpPy5wYXRjaFZhbHVlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB0aGlzLm15Q29udHJvbC5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgdGhpcy5teUNvbnRyb2wucGF0Y2hWYWx1ZShkZWZhdWx0VmFsdWUsIHtlbWl0RXZlbnQ6IHRydWV9KTtcbiAgICB9XG4gIH1cbiAgZ2V0IG1hdEVycm9yRGVzY3JpYmVkQnkoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybT8uZ2V0KHRoaXMuZmllbGQ/LnByb3BlcnR5KTtcbiAgICBpZiAoIWNvbnRyb2wgfHwgIXRoaXMuZmllbGQ/LnByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdmlzaWJsZSA9XG4gICAgICAoY29udHJvbC52YWx1ZSB8fCBjb250cm9sLnZhbHVlID09PSAwKSAmJiBjb250cm9sLnN0YXR1cyA9PT0gJ0lOVkFMSUQnO1xuICAgIHJldHVybiB2aXNpYmxlID8gYGVycm9yLSR7dGhpcy5maWVsZC5wcm9wZXJ0eX1gIDogbnVsbDtcbiAgfVxuXG4gIGdldElkKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BlcnR5O1xuICB9XG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcikge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMuZmlsdGVyTG9va3VwSXRlbXMoJycsIGF1dG9jb21wbGV0ZVRyaWdnZXIpO1xuICAgICAgYXV0b2NvbXBsZXRlVHJpZ2dlci5vcGVuUGFuZWwoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VkKCkge1xuICAgIGlmICghdGhpcy5teUNvbnRyb2wudmFsdWUpe1xuICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnByb3BlcnR5KT8uc2V0VmFsdWUodGhpcy5teUNvbnRyb2wudmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlLmVtaXQodGhpcy5teUNvbnRyb2wudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMubXlDb250cm9sLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5teUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGRcIiBjbGFzcz1cIm1haW4tYXV0by1jb21wbGV0ZVwiPlxuICA8ZGl2IGNsYXNzPVwibWF0LWZpZWxkLXdyYXBwZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cblxuICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XG4gICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImF1dG9jb21wbGV0ZS1maWVsZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2VhcmNoX3BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgW2lkXT1cImdldElkKClcIlxuICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJteUNvbnRyb2xcIlxuICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQsIGF1dG9jb21wbGV0ZVRyaWdnZXIpXCJcbiAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgIChjbGljayk9XCJhdXRvY29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpOyBmaWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxuICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwibWF0RXJyb3JEZXNjcmliZWRCeVwiXG4gICAgICAgICAgICAgI2F1dG9jb21wbGV0ZVRyaWdnZXI9XCJtYXRBdXRvY29tcGxldGVUcmlnZ2VyXCJcbiAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgPlxuXG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0U3VmZml4XG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhdXRvY29tcGxldGVUcmlnZ2VyLm9wZW5QYW5lbCgpOyBmaWx0ZXJMb29rdXBJdGVtcygnJywgYXV0b2NvbXBsZXRlVHJpZ2dlcik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgIFthdHRyLmlkXT1cIidhdXRvY29tcGxldGUtdHJpZ2dlci0nICsgZmllbGQucHJvcGVydHlcIj5cbiAgICAgICAgPG1hdC1pY29uPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24gW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlGbi5iaW5kKHRoaXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJpdGVtU2VsZWN0ZWQoJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlZCk9XCJjbG9zZWQoKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLnJlYWRvbmx5XCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJpdGVtcy5sZW5ndGggPiAxICYmIGxvb2t1cEl0ZW1zJFwiIFt2YWx1ZV09XCJudWxsXCI+e3sgXCJub25lXCIgfCB0cmFuc2xhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbG9va3VwSXRlbXMkIHwgYXN5bmNcIiBbdmFsdWVdPVwiaXRlbVwiIFtuZ0NsYXNzXT1cIl9hbGxvd1NlbGVjdGlvbihpdGVtKVwiPlxuICAgICAgICAgICAge3sgaXRlbU5hbWVCeUxhZyhpdGVtKSB9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -241,7 +241,7 @@ export class BaseFormComponent extends BaseUtils {
241
241
  return (!this.isPending && element.stateType == 'PENDING') && this.pageInfo.draftSupported;
242
242
  }
243
243
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormComponent, deps: [{ token: i1.MatDialog }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: i3.Directionality }, { token: i4.Location }, { token: 'securityManager' }, { token: i5.BackendService }], target: i0.ɵɵFactoryTarget.Component }); }
244
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormComponent, isStandalone: true, selector: "app-base-form", inputs: { pageInfo: "pageInfo", fields: "fields", errors: "errors", editable: "editable", itemId: "itemId", hideBackButton: "hideBackButton" }, outputs: { actionResultEmitter: "actionResultEmitter", formUpdated: "formUpdated", itemLoaded: "itemLoaded", extraAction: "extraAction", hyperTextEvent: "hyperTextEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "attachmentsAlwaysEditable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: AuditLogComponent, selector: "app-audit-log", inputs: ["pageInfo", "statusName", "module", "identifier", "fields", "showHiddenFields", "nameField"] }] }); }
244
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BaseFormComponent, isStandalone: true, selector: "app-base-form", inputs: { pageInfo: "pageInfo", fields: "fields", errors: "errors", editable: "editable", itemId: "itemId", hideBackButton: "hideBackButton" }, outputs: { actionResultEmitter: "actionResultEmitter", formUpdated: "formUpdated", itemLoaded: "itemLoaded", extraAction: "extraAction", hyperTextEvent: "hyperTextEvent" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"page-container\">\n\n <div class=\"row full-width mt-2vh\">\n <div class=\"column full-width\">\n <app-title-bar\n [pageTitle]=\"getTitle()\"\n [newAction]=\"false\"\n [hideBackButton]=\"hideBackButton\">\n </app-title-bar>\n </div>\n </div>\n\n <app-base-form-canvas\n [pageInfo]=\"pageInfo\"\n [fields]=\"fields\"\n [editable]=\"editable\"\n [errors]=\"errors\"\n [item]=\"item\"\n (formUpdated)=\"updateForm($event)\">\n </app-base-form-canvas>\n\n <div class=\"row main-form-canvas mt-3vh\">\n <div class=\"column flex-49\">\n <div class=\"row row-center-start\">\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\n (click)=\"doSaveApproveAction()\"\n [disabled]=\"disabledSaveButton(item)\"\n class=\"action-button\"\n id=\"base-form-positive-btn\">\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\n </button>\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\n (click)=\"doCancelRejectAction()\"\n [disabled]=\"disabledSaveButton(item)\"\n class=\"action-button\"\n id=\"base-form-negative-btn\">\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\n </button>\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\n (click)=\"doExtraAction()\"\n class=\"action-button\"\n id=\"base-form-extra-btn\">\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\n </button>\n </div>\n </div>\n <div class=\"column flex-49\"></div>\n </div>\n\n\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\n <div class=\"column flex-95\">\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\n </div>\n </div>\n </ng-container>\n\n</div>\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "attachmentsAlwaysEditable", "emitOnValueChanges", "filterResetNonce", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: AuditLogComponent, selector: "app-audit-log", inputs: ["pageInfo", "statusName", "module", "identifier", "fields", "showHiddenFields", "nameField"] }] }); }
245
245
  }
246
246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseFormComponent, decorators: [{
247
247
  type: Component,
@@ -254,7 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
254
254
  MatIconModule,
255
255
  MatButton,
256
256
  AuditLogComponent
257
- ], template: "<div class=\"page-container\">\r\n\r\n <div class=\"row full-width mt-2vh\">\r\n <div class=\"column full-width\">\r\n <app-title-bar\r\n [pageTitle]=\"getTitle()\"\r\n [newAction]=\"false\"\r\n [hideBackButton]=\"hideBackButton\">\r\n </app-title-bar>\r\n </div>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"editable\"\r\n [errors]=\"errors\"\r\n [item]=\"item\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\r\n (click)=\"doSaveApproveAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-positive-btn\">\r\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\r\n (click)=\"doCancelRejectAction()\"\r\n [disabled]=\"disabledSaveButton(item)\"\r\n class=\"action-button\"\r\n id=\"base-form-negative-btn\">\r\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\r\n </button>\r\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\r\n (click)=\"doExtraAction()\"\r\n class=\"action-button\"\r\n id=\"base-form-extra-btn\">\r\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\r\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\r\n <div class=\"column flex-95\">\r\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"] }]
257
+ ], template: "<div class=\"page-container\">\n\n <div class=\"row full-width mt-2vh\">\n <div class=\"column full-width\">\n <app-title-bar\n [pageTitle]=\"getTitle()\"\n [newAction]=\"false\"\n [hideBackButton]=\"hideBackButton\">\n </app-title-bar>\n </div>\n </div>\n\n <app-base-form-canvas\n [pageInfo]=\"pageInfo\"\n [fields]=\"fields\"\n [editable]=\"editable\"\n [errors]=\"errors\"\n [item]=\"item\"\n (formUpdated)=\"updateForm($event)\">\n </app-base-form-canvas>\n\n <div class=\"row main-form-canvas mt-3vh\">\n <div class=\"column flex-49\">\n <div class=\"row row-center-start\">\n <button *ngIf=\"hasWfPositivePermission()\" color=\"primary\" mat-flat-button\n (click)=\"doSaveApproveAction()\"\n [disabled]=\"disabledSaveButton(item)\"\n class=\"action-button\"\n id=\"base-form-positive-btn\">\n {{ getPositiveWfActionKey(item?.stateType) | translate }}\n </button>\n <button *ngIf=\"hasWfNegativePermission()\" color=\"second\" mat-raised-button\n (click)=\"doCancelRejectAction()\"\n [disabled]=\"disabledSaveButton(item)\"\n class=\"action-button\"\n id=\"base-form-negative-btn\">\n {{ getNegativeWfActionKey(item?.stateType) | translate }}\n </button>\n <button *ngIf=\"pageInfo.hideExtractButton === false && itemId > 0 && editable\" color=\"primary\" mat-raised-button\n (click)=\"doExtraAction()\"\n class=\"action-button\"\n id=\"base-form-extra-btn\">\n {{ pageInfo.labelsSection + \".\" + \"EXTRA_BUTTON_NAME\" | translate }}\n </button>\n </div>\n </div>\n <div class=\"column flex-49\"></div>\n </div>\n\n\n <ng-container *ngIf=\"!pageInfo.hideAuditLog\">\n <div class=\"row main-form-canvas mt-4vh pb-5vh\">\n <div class=\"column flex-95\">\n <app-audit-log [pageInfo]=\"pageInfo\" [fields]=\"fields\"></app-audit-log>\n </div>\n </div>\n </ng-container>\n\n</div>\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;width:100%;flex-wrap:wrap}.column{display:flex;flex-direction:column}.full-width{width:100%}.flex-49{flex:0 0 49%}.flex-95{flex:0 0 95%}.row-center-start{align-items:center;justify-content:flex-start}.mt-2vh{margin-top:2vh}.mt-3vh{margin-top:3vh}.mt-4vh{margin-top:4vh}.pb-5vh{padding-bottom:5vh}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}@media (max-width: 960px){.flex-49,.flex-95{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}}\n"] }]
258
258
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.Directionality }, { type: i4.Location }, { type: undefined, decorators: [{
259
259
  type: Inject,
260
260
  args: ['securityManager']
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
281
281
  }], hideBackButton: [{
282
282
  type: Input
283
283
  }] } });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1mb3JtL2Jhc2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQVksTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQVksaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBVyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFFLElBQUksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFDLE1BQU0s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QVEsQ0FBQyxjQUFjLENBQUU7SUFDOUYsQ0FBQzsrR0FoUlUsaUJBQWlCLHFKQWlETixpQkFBaUI7bUdBakQ1QixpQkFBaUIsa2JDbkM5Qixtc0VBMkRBLHd0QkRwQ0ksaUJBQWlCLHFlQUNqQix1QkFBdUIsbWNBQ3ZCLGVBQWUsMk5BQ2YsZUFBZSw0RkFDZixJQUFJLDRGQUNKLGFBQWEsK0JBRWIsaUJBQWlCOzs0RkFLUixpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNJLGVBQWUsY0FDYixJQUFJLFdBQ1Q7d0JBQ1AsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixJQUFJO3dCQUNKLGFBQWE7d0JBQ2IsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCOzswQkFxRGMsTUFBTTsyQkFBQyxpQkFBaUI7c0VBOUM5QixRQUFRO3NCQURoQixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBT1AsY0FBYztzQkFEYixNQUFNO2dCQVFQLGNBQWM7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0ZpZWxkSW5mbywgRmlsdGVyLCBGaWx0ZXJSZXF1ZXN0LCBORVcsIFBhZ2VJbmZvLCBTQVZFX0FORF9DT01QTEVURSwgU25hY2tNZXNzYWdlfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge0ZpZWxkTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvYXBpLXJlc3BvbnNlXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXNcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0xvY2F0aW9uLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHtNYXRJY29uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xyXG5pbXBvcnQge1RpdGxlQmFyQ29tcG9uZW50fSBmcm9tIFwiLi4vdGl0bGUtYmFyL3RpdGxlLWJhci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtCYXNlRm9ybUNhbnZhc0NvbXBvbmVudH0gZnJvbSBcIi4uL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtEb0FjdGlvblJlcXVlc3QsIFNBVkV9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2RvLWFjdGlvbi1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7QWN0aW9uQ29tbWVudENvbXBvbmVudH0gZnJvbSBcIi4uL2FjdGlvbi1jb21tZW50L2FjdGlvbi1jb21tZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge0Jhc2VVdGlscywgZ2V0TmVnYXRpdmVXZkFjdGlvbktleSwgZ2V0UG9zaXRpdmVXZkFjdGlvbktleSwgZ2V0V2ZBY3Rpb25JZH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcclxuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QXVkaXRMb2dDb21wb25lbnR9IGZyb20gXCIuLi9hdWRpdC1sb2ctbGlzdC9hdWRpdC1sb2cuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RGlyZWN0aW9uYWxpdHl9IGZyb20gXCJAYW5ndWxhci9jZGsvYmlkaVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1iYXNlLWZvcm0nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIEJhc2VGb3JtQ2FudmFzQ29tcG9uZW50LFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBBdWRpdExvZ0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFzZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9iYXNlLWZvcm0uY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VVdGlscyBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICBvdmVycmlkZSBwYWdlSW5mbyE6IFBhZ2VJbmZvO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBmaWVsZHM6IEZpZWxkSW5mb1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGVycm9yczogRmllbGRNZXNzYWdlW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1JZDogbnVtYmVyO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBhY3Rpb25SZXN1bHRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBmb3JtVXBkYXRlZDogRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaXRlbUxvYWRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZXh0cmFBY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGl0ZW0gOiBhbnkgPSB7fTtcclxuICBpc0xvYWRlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgaHlwZXJUZXh0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY3VycmVudERpcmVjdGlvbjogJ2x0cicgfCAncnRsJztcclxuICBpc1NhdmVEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgaXNSZWplY3REaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGlkZUJhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBTQVZFID0gU0FWRTtcclxuICBwcml2YXRlIGlzUGVuZGluZzogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjpMb2NhdGlvbixcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoJ3NlY3VyaXR5TWFuYWdlcicpIHByaXZhdGUgc2VjdXJpdHlNYW5hZ2VyOiBhbnksXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlKSB7XHJcbiAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWU7XHJcbiAgICAgIHRoaXMuZGlyZWN0aW9uYWxpdHkuY2hhbmdlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnREaXJlY3Rpb24gPSB2YWx1ZTtcclxuICAgICAgfSlcclxuXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdlZGl0YWJsZScsIHRoaXMuZWRpdGFibGUpXHJcbiAgICAgIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmxvYWRQZXJtaXNzaW9ucygpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImJlZm9yZSBlZGl0XCIsIHRoaXMuZWRpdGFibGUpO1xyXG4gICAgICAgIHRoaXMubG9hZEl0ZW0oKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImFmdGVyIGVkaXRcIiwgdGhpcy5lZGl0YWJsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKHtpdGVtLCBlcnJvcnMsIGZpZWxkc306IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIH1cclxuXHJcbiAgICBpc1ZhbGlkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0/LnZhbGlkO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTWF0Y2hIZWlnaHQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnZUluZm8ucGFnZUhlaWdodCA9PT0gJ21hdGNoJztcclxuICAgIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkSXRlbSgpIHtcclxuICAgIHRoaXMuZWRpdGFibGUgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBtb2RlRW5jcnlwdGVkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snbW9kZSddO1xyXG4gICAgdGhpcy5pc1BlbmRpbmcgPSAhIW1vZGVFbmNyeXB0ZWQgJiYgdGhpcy5iYWNrZW5kU2VydmljZS5kZWNyeXB0KG1vZGVFbmNyeXB0ZWQpID09PSAncGVuZGluZyc7XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3Rva2VuJ10gJiYgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snbW9kZSddKSB7XHJcbiAgICAgIHRoaXMuaXRlbUlkID0gdGhpcy5iYWNrZW5kU2VydmljZS5kZWNyeXB0KHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3Rva2VuJ10pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJyAqKioqKiogKioqKioqICoqKioqKiAqKioqKiogZXJyb3IgaW4gdXJsICcpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pdGVtSWQgPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdDtcclxuICAgICAgZmlsdGVyUmVxdWVzdC5jb2x1bW5zID0gdGhpcy5maWVsZHMuZmlsdGVyKGMgPT4gYy50eXBlICE9PSAnc3BhY2VyJykubWFwKGMgPT4gYy5wcm9wZXJ0eSk7XHJcbiAgICAgIGZpbHRlclJlcXVlc3QucGVuZGluZ1BhZ2UgPSB0aGlzLmlzUGVuZGluZztcclxuXHJcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMucHVzaChuZXcgRmlsdGVyKHtcclxuICAgICAgICBrZXk6IDAsXHJcbiAgICAgICAgZmllbGRUeXBlOiAnTG9uZycsXHJcbiAgICAgICAgZmllbGROYW1lOiAnaWQnLFxyXG4gICAgICAgIHZhbHVlT2JqZWN0OiB0aGlzLml0ZW1JZCxcclxuICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJyxcclxuICAgICAgICBvcGVyYXRvcjogJ0VRVUFMUydcclxuICAgICAgfSkpO1xyXG4gICAgICAvLy9hdWRpdC1sb2dcclxuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRJdGVtQXVkaXRMb2coZmlsdGVyUmVxdWVzdCwgdGhpcy5wYWdlSW5mbyEuYXBpVXJpKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc3AnLCByZXNwKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZ2V0SXRlbXNCeUZpbHRlcihmaWx0ZXJSZXF1ZXN0LCB0aGlzLnBhZ2VJbmZvIS5hcGlVcmkpLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICBpZiAocmVzcD8udmFsaWQgJiYgcmVzcC5ib2R5Py5sZW5ndGggPj0gMCkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtID0gcmVzcC5ib2R5WzBdO1xyXG4gICAgICAgICAgdGhpcy5lZGl0YWJsZSA9ICghdGhpcy5wYWdlSW5mby5kcmFmdFN1cHBvcnRlZCB8fCAhdGhpcy5pc1BlbmRpbmcpICYmIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJylcclxuICAgICAgICAgICAgJiYgKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIHx8dGhpcy5pdGVtWydzdGF0ZVR5cGUnXSA9PT0gJ0NPTVBMRVRFRCcgKTtcclxuICAgICAgICAgIHRoaXMuaXRlbUxvYWRlZC5lbWl0KHRoaXMuaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0YWJsZSA9IHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJyk7XHJcbiAgICAgIHRoaXMuaXRlbSA9IHt9O1xyXG4gICAgICB0aGlzLml0ZW1Mb2FkZWQuZW1pdCh0aGlzLml0ZW0pO1xyXG4gICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBidWlsZERvQWN0aW9uU3ViamVjdCgpOiBhbnkge1xyXG4gICAgY29uc3QgbmV3VmFyID0gdGhpcy5lZGl0YWJsZSA/IE9iamVjdC5hc3NpZ24odGhpcy5pdGVtLCB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0udmFsdWUpIDogdGhpcy5pdGVtO1xyXG4gICAgaWYgKHRoaXMuaXRlbUlkIDw9IDAgJiYgdGhpcy5lZGl0YWJsZSApIHtcclxuICAgICAgLy9UT0RPIHRoaXMgaXMgbGlrZSBhIGhhY2sgYW5kIG11c3QgYmUgaGFuZGxlZCBmcm9tIGJhY2tlbmRcclxuICAgICAgbmV3VmFyWydzdGF0ZVR5cGUnXSA9ICdORVcnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5mbGF0dGVuQnlTdWJBdHRyaWJ1dGUpe1xyXG4gICAgICAgIG5ld1ZhcltmaWVsZC5wcm9wZXJ0eV0gPSBuZXdWYXJbZmllbGQucHJvcGVydHldW2ZpZWxkLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZV1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGlmICghdGhpcy5wYWdlSW5mby5kcmFmdFN1cHBvcnRlZCl7XHJcbiAgICAgIG5ld1Zhclsnc3RhdHVzJ10gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhcjtcclxuICB9XHJcblxyXG5cclxuICBkb1NhdmVBcHByb3ZlQWN0aW9uKCkge1xyXG4gICAgbGV0IGFjdGlvbklkID0gZ2V0V2ZBY3Rpb25JZCh0aGlzLml0ZW0uc3RhdGVUeXBlKTtcclxuICAgIGlmICh0aGlzLml0ZW1JZCA8PSAwICYmIHRoaXMuZWRpdGFibGUgKSB7XHJcbiAgICAgIGFjdGlvbklkID0gTkVXXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucGFnZUluZm8uZHJhZnRTdXBwb3J0ZWQpIHtcclxuICAgICAgYWN0aW9uSWQgPSBTQVZFX0FORF9DT01QTEVURVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZWRpdGFibGUgJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLnZhbGlkICE9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ0lOVkFMSURfSU5QVVRfRk9STScsIHRydWUsICdlcnJvcicpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVxdWVzdCA9IG5ldyBEb0FjdGlvblJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuYWN0aW9uSWQgPSBhY3Rpb25JZDtcclxuICAgIHJlcXVlc3Quc3ViamVjdCA9IHRoaXMuYnVpbGREb0FjdGlvblN1YmplY3QoKTtcclxuXHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvbkNvbW1lbnRDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge2xhYmVsOiAnc2F2ZScsIGlzVGVybWluYXRpb246IGZhbHNlfSxcclxuICAgICAgd2lkdGg6ICc2MDBweCcsXHJcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxyXG4gICAgICBkaXJlY3Rpb246ICB0aGlzLmN1cnJlbnREaXJlY3Rpb25cclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICByZXF1ZXN0LmNvbW1lbnQgPSByZXN1bHQuY29tbWVudDtcclxuICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRvQWN0aW9uV2l0aEF0dGFjaG1lbnRzKHJlcXVlc3QsIFtdLCB0aGlzLnBhZ2VJbmZvISkuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ3N0ZXAnLGFjdGlvbklkKTtcclxuICAgICAgICAgIHRoaXMuYWN0aW9uUmVzdWx0RW1pdHRlci5lbWl0KHsgdmFsaWQ6IHJlc3AudmFsaWQsIGFjdGlvbklkOiBhY3Rpb25JZCB9KTtcclxuICAgICAgICAgIGlmIChyZXNwLnZhbGlkICkge1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICdhcHByb3ZlX3N1Y2Nlc3NmdWxseSc7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uSWQpIHtcclxuICAgICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ3NhdmVkX3N1Y2Nlc3NmdWxseSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ3VwZGF0ZWRfc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2FwcHJvdmVfc3VjY2Vzc2Z1bGx5JztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnRvcFBhbmVsTWVzc2FnZSQubmV4dChuZXcgU25hY2tNZXNzYWdlKG1lc3NhZ2UsIHRydWUsICdzdWNjZXNzJykpO1xyXG4gICAgICAgICAgICAgaWYoIXRoaXMucGFnZUluZm8uc3RheU9uUGFnZSl7XHJcbiAgICAgICAgICAgICAgIHRoaXMuYmFja1RvUGFyZW50KCk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICByZXF1ZXN0LnN1YmplY3RbJ3N0YXRlVHlwZSddID0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKHJlc3AubWVzc2FnZVswXS5lcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZHVwbGljJykpXHJcbiAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgJy4nICsgcmVzcC5tZXNzYWdlWzBdLmVycm9yQ29kZSwgdHJ1ZSwgJ2Vycm9yJykpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGJhY2tUb1BhcmVudCgpIHtcclxuICAgICAgY29uc3QgaWRJZHggPSB0aGlzLnJvdXRlci51cmwubGFzdEluZGV4T2YoJy8nKTtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJvdXRlci51cmwuc3Vic3RyaW5nKDAsIGlkSWR4KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0VGl0bGUoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHt0aGlzLnBhZ2VJbmZvLmlkfWAgO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZUZvcm0oJGV2ZW50OiBGb3JtR3JvdXApIHtcclxuICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0gPSAkZXZlbnQ7XHJcbiAgICAgICAgdGhpcy5mb3JtVXBkYXRlZC5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcblxyXG4gIGRvQ2FuY2VsUmVqZWN0QWN0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLmVkaXRhYmxlKXtcclxuICAgICAgbGV0IGFjdGlvbklkID0gMztcclxuICAgICAgLy8gY29uc29sZS5sb2coJ2FjdGlvbklkJyxhY3Rpb25JZCk7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgRG9BY3Rpb25SZXF1ZXN0KCk7XHJcbiAgICAgIHJlcXVlc3QuYWN0aW9uSWQgPSBhY3Rpb25JZDtcclxuICAgICAgcmVxdWVzdC5zdWJqZWN0ID0gdGhpcy5idWlsZERvQWN0aW9uU3ViamVjdCgpO1xyXG5cclxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBY3Rpb25Db21tZW50Q29tcG9uZW50LCB7XHJcbiAgICAgICAgZGF0YToge2xhYmVsOiAncmVqZWN0JywgYWNjZXB0QWN0aW9uTGFiZWw6ICdhY2NlcHQnLCByZWplY3RBY3Rpb25MYWJlbDogJ3JldHVybid9LFxyXG4gICAgICAgIHdpZHRoOiAnNjAwcHgnLFxyXG4gICAgICAgIGhlaWdodDogJ2F1dG8nLFxyXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50RGlyZWN0aW9uXHJcbiAgICAgIH0pO1xyXG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICByZXF1ZXN0LmNvbW1lbnQgPSByZXN1bHQuY29tbWVudDtcclxuICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UuZG9BY3Rpb25XaXRoQXR0YWNobWVudHMocmVxdWVzdCwgW10sIHRoaXMucGFnZUluZm8hKS5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uUmVzdWx0RW1pdHRlci5lbWl0KHsgdmFsaWQ6IHJlc3AudmFsaWQsIGFjdGlvbklkOiBhY3Rpb25JZCB9KTtcclxuICAgICAgICAgICAgaWYgKHJlc3AudmFsaWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnRvcFBhbmVsTWVzc2FnZSQubmV4dChuZXcgU25hY2tNZXNzYWdlKCdzdWNjZXNzZnVsX3JlamVjdF9tZXNzYWdlJywgdHJ1ZSwgJ3N1Y2Nlc3MnKSk7XHJcbiAgICAgICAgICAgICAgaWYoIXRoaXMucGFnZUluZm8uc3RheU9uUGFnZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2tUb1BhcmVudCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKVxyXG4gICAgfVxyXG4gICAgfVxyXG5cclxuICBoYXNXZlBlcm1pc3Npb24oKSB7XHJcbiAgICByZXR1cm4gICh0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnRURJVCcpXHJcbiAgICB8fCB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnQ09NUExFVEUnKVxyXG4gICAgfHwgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ1RFUk1JTkFURScpKVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldFBvc2l0aXZlV2ZBY3Rpb25LZXkgPSBnZXRQb3NpdGl2ZVdmQWN0aW9uS2V5O1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBnZXROZWdhdGl2ZVdmQWN0aW9uS2V5ID0gZ2V0TmVnYXRpdmVXZkFjdGlvbktleTtcclxuXHJcbiAgaGFzV2ZQb3NpdGl2ZVBlcm1pc3Npb24oKSB7XHJcbiAgICByZXR1cm4gKCF0aGlzLmVkaXRhYmxlICYmIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdDT01QTEVURScpKSB8fFxyXG4gICAgICAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnRURJVCcpKVxyXG4gIH1cclxuXHJcbiAgaGFzV2ZOZWdhdGl2ZVBlcm1pc3Npb24oKSB7XHJcbiAgICByZXR1cm4gKCF0aGlzLmVkaXRhYmxlICYmIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdURVJNSU5BVEUnKSkgfHxcclxuICAgICAgKHRoaXMuZWRpdGFibGUgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0VESVQnKSlcclxuICB9XHJcblxyXG4gIGRvRXh0cmFBY3Rpb24oKSB7XHJcbiAgICB0aGlzLmV4dHJhQWN0aW9uLmVtaXQoKVxyXG4gIH1cclxuICBkaXNhYmxlZFNhdmVCdXR0b24oZWxlbWVudCkge1xyXG4gICAgcmV0dXJuICghdGhpcy5pc1BlbmRpbmcgJiYgZWxlbWVudC5zdGF0ZVR5cGUgPT0gJ1BFTkRJTkcnKSAmJiB0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIDtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwYWdlLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93IGZ1bGwtd2lkdGggbXQtMnZoXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGZ1bGwtd2lkdGhcIj5cclxuICAgICAgPGFwcC10aXRsZS1iYXJcclxuICAgICAgICBbcGFnZVRpdGxlXT1cImdldFRpdGxlKClcIlxyXG4gICAgICAgIFtuZXdBY3Rpb25dPVwiZmFsc2VcIlxyXG4gICAgICAgIFtoaWRlQmFja0J1dHRvbl09XCJoaWRlQmFja0J1dHRvblwiPlxyXG4gICAgICA8L2FwcC10aXRsZS1iYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGFwcC1iYXNlLWZvcm0tY2FudmFzXHJcbiAgICBbcGFnZUluZm9dPVwicGFnZUluZm9cIlxyXG4gICAgW2ZpZWxkc109XCJmaWVsZHNcIlxyXG4gICAgW2VkaXRhYmxlXT1cImVkaXRhYmxlXCJcclxuICAgIFtlcnJvcnNdPVwiZXJyb3JzXCJcclxuICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgKGZvcm1VcGRhdGVkKT1cInVwZGF0ZUZvcm0oJGV2ZW50KVwiPlxyXG4gIDwvYXBwLWJhc2UtZm9ybS1jYW52YXM+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgbWFpbi1mb3JtLWNhbnZhcyBtdC0zdmhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZmxleC00OVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jZW50ZXItc3RhcnRcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaGFzV2ZQb3NpdGl2ZVBlcm1pc3Npb24oKVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvU2F2ZUFwcHJvdmVBY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTYXZlQnV0dG9uKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBpZD1cImJhc2UtZm9ybS1wb3NpdGl2ZS1idG5cIj5cclxuICAgICAgICAgIHt7IGdldFBvc2l0aXZlV2ZBY3Rpb25LZXkoaXRlbT8uc3RhdGVUeXBlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJoYXNXZk5lZ2F0aXZlUGVybWlzc2lvbigpXCIgY29sb3I9XCJzZWNvbmRcIiBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQ2FuY2VsUmVqZWN0QWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkU2F2ZUJ1dHRvbihpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJiYXNlLWZvcm0tbmVnYXRpdmUtYnRuXCI+XHJcbiAgICAgICAgICB7eyBnZXROZWdhdGl2ZVdmQWN0aW9uS2V5KGl0ZW0/LnN0YXRlVHlwZSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwicGFnZUluZm8uaGlkZUV4dHJhY3RCdXR0b24gPT09IGZhbHNlICYmIGl0ZW1JZCA+IDAgJiYgZWRpdGFibGVcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvRXh0cmFBY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJiYXNlLWZvcm0tZXh0cmEtYnRuXCI+XHJcbiAgICAgICAgICB7eyBwYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgXCIuXCIgKyBcIkVYVFJBX0JVVFRPTl9OQU1FXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZmxleC00OVwiPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwYWdlSW5mby5oaWRlQXVkaXRMb2dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbWFpbi1mb3JtLWNhbnZhcyBtdC00dmggcGItNXZoXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZmxleC05NVwiPlxyXG4gICAgICAgIDxhcHAtYXVkaXQtbG9nIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9hcHAtYXVkaXQtbG9nPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS1mb3JtL2Jhc2UtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQVksTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQVksaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFbEgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3BELE9BQU8sRUFBVyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsU0FBUyxFQUFFLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN2RixPQUFPLEVBQUMsZUFBZSxFQUFFLElBQUksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRWxGLE9BQU8sRUFBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFDLE1BQU0s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QVEsQ0FBQyxjQUFjLENBQUU7SUFDOUYsQ0FBQzsrR0FoUlUsaUJBQWlCLHFKQWlETixpQkFBaUI7bUdBakQ1QixpQkFBaUIsa2JDbkM5Qiw2a0VBMkRBLHd0QkRwQ0ksaUJBQWlCLHFlQUNqQix1QkFBdUIsbWNBQ3ZCLGVBQWUsMk5BQ2YsZUFBZSw0RkFDZixJQUFJLDRGQUNKLGFBQWEsK0JBRWIsaUJBQWlCOzs0RkFLUixpQkFBaUI7a0JBaEI3QixTQUFTOytCQUNJLGVBQWUsY0FDYixJQUFJLFdBQ1Q7d0JBQ1AsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixJQUFJO3dCQUNKLGFBQWE7d0JBQ2IsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCOzswQkFxRGMsTUFBTTsyQkFBQyxpQkFBaUI7c0VBOUM5QixRQUFRO3NCQURoQixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBT1AsY0FBYztzQkFEYixNQUFNO2dCQVFQLGNBQWM7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGaWVsZEluZm8sIEZpbHRlciwgRmlsdGVyUmVxdWVzdCwgTkVXLCBQYWdlSW5mbywgU0FWRV9BTkRfQ09NUExFVEUsIFNuYWNrTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7RmllbGRNZXNzYWdlfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9hcGktcmVzcG9uc2VcIjtcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzXCI7XG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge0xvY2F0aW9uLCBOZ0lmfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQge01hdEJ1dHRvbiwgTWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XG5pbXBvcnQge1RpdGxlQmFyQ29tcG9uZW50fSBmcm9tIFwiLi4vdGl0bGUtYmFyL3RpdGxlLWJhci5jb21wb25lbnRcIjtcbmltcG9ydCB7QmFzZUZvcm1DYW52YXNDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50XCI7XG5pbXBvcnQge0RvQWN0aW9uUmVxdWVzdCwgU0FWRX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZG8tYWN0aW9uLXJlcXVlc3RcIjtcbmltcG9ydCB7QWN0aW9uQ29tbWVudENvbXBvbmVudH0gZnJvbSBcIi4uL2FjdGlvbi1jb21tZW50L2FjdGlvbi1jb21tZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7QmFzZVV0aWxzLCBnZXROZWdhdGl2ZVdmQWN0aW9uS2V5LCBnZXRQb3NpdGl2ZVdmQWN0aW9uS2V5LCBnZXRXZkFjdGlvbklkfSBmcm9tIFwiLi4vLi4vdXRpbHMvYmFzZS11dGlsc1wiO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge0F1ZGl0TG9nQ29tcG9uZW50fSBmcm9tIFwiLi4vYXVkaXQtbG9nLWxpc3QvYXVkaXQtbG9nLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9iaWRpXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWJhc2UtZm9ybScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRpdGxlQmFyQ29tcG9uZW50LFxuICAgIEJhc2VGb3JtQ2FudmFzQ29tcG9uZW50LFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTmdJZixcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbixcbiAgICBBdWRpdExvZ0NvbXBvbmVudFxuICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXNlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9iYXNlLWZvcm0uY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVV0aWxzIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIHBhZ2VJbmZvITogUGFnZUluZm87XG5cbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXG4gIGZpZWxkczogRmllbGRJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcbiAgZXJyb3JzOiBGaWVsZE1lc3NhZ2VbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVkaXRhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgaXRlbUlkOiBudW1iZXI7XG5cbiAgQE91dHB1dCgpXG4gIGFjdGlvblJlc3VsdEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZvcm1VcGRhdGVkOiBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xuXG4gIEBPdXRwdXQoKVxuICBpdGVtTG9hZGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBleHRyYUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBpdGVtIDogYW55ID0ge307XG4gIGlzTG9hZGVkIDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBoeXBlclRleHRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGN1cnJlbnREaXJlY3Rpb246ICdsdHInIHwgJ3J0bCc7XG4gIGlzU2F2ZURpc2FibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgaXNSZWplY3REaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaGlkZUJhY2tCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgU0FWRSA9IFNBVkU7XG4gIHByaXZhdGUgaXNQZW5kaW5nOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGxvY2F0aW9uOkxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIEBJbmplY3QoJ3NlY3VyaXR5TWFuYWdlcicpIHByaXZhdGUgc2VjdXJpdHlNYW5hZ2VyOiBhbnksXG4gICAgICAgICAgICAgICAgcHVibGljIGJhY2tlbmRTZXJ2aWNlOiBCYWNrZW5kU2VydmljZSkge1xuICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHRoaXMuZGlyZWN0aW9uYWxpdHkudmFsdWU7XG4gICAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudERpcmVjdGlvbiA9IHZhbHVlO1xuICAgICAgfSlcblxuICAgICAgLy8gY29uc29sZS5sb2coJ2VkaXRhYmxlJywgdGhpcy5lZGl0YWJsZSlcbiAgICAgIHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmxvYWRQZXJtaXNzaW9ucygpLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJiZWZvcmUgZWRpdFwiLCB0aGlzLmVkaXRhYmxlKTtcbiAgICAgICAgdGhpcy5sb2FkSXRlbSgpO1xuICAgICAgICBjb25zb2xlLmxvZyhcImFmdGVyIGVkaXRcIiwgdGhpcy5lZGl0YWJsZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyh7aXRlbSwgZXJyb3JzLCBmaWVsZHN9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgfVxuXG4gICAgaXNWYWxpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybT8udmFsaWQ7XG4gICAgfVxuXG4gICAgaXNNYXRjaEhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnZUluZm8ucGFnZUhlaWdodCA9PT0gJ21hdGNoJztcbiAgICB9XG5cbiAgcHJpdmF0ZSBsb2FkSXRlbSgpIHtcbiAgICB0aGlzLmVkaXRhYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdCBtb2RlRW5jcnlwdGVkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snbW9kZSddO1xuICAgIHRoaXMuaXNQZW5kaW5nID0gISFtb2RlRW5jcnlwdGVkICYmIHRoaXMuYmFja2VuZFNlcnZpY2UuZGVjcnlwdChtb2RlRW5jcnlwdGVkKSA9PT0gJ3BlbmRpbmcnO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ3Rva2VuJ10gJiYgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snbW9kZSddKSB7XG4gICAgICB0aGlzLml0ZW1JZCA9IHRoaXMuYmFja2VuZFNlcnZpY2UuZGVjcnlwdCh0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWyd0b2tlbiddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coJyAqKioqKiogKioqKioqICoqKioqKiAqKioqKiogZXJyb3IgaW4gdXJsICcpXG4gICAgfVxuICAgIGlmICh0aGlzLml0ZW1JZCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdDtcbiAgICAgIGZpbHRlclJlcXVlc3QuY29sdW1ucyA9IHRoaXMuZmllbGRzLmZpbHRlcihjID0+IGMudHlwZSAhPT0gJ3NwYWNlcicpLm1hcChjID0+IGMucHJvcGVydHkpO1xuICAgICAgZmlsdGVyUmVxdWVzdC5wZW5kaW5nUGFnZSA9IHRoaXMuaXNQZW5kaW5nO1xuXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMgPSBbXTtcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoe1xuICAgICAgICBrZXk6IDAsXG4gICAgICAgIGZpZWxkVHlwZTogJ0xvbmcnLFxuICAgICAgICBmaWVsZE5hbWU6ICdpZCcsXG4gICAgICAgIHZhbHVlT2JqZWN0OiB0aGlzLml0ZW1JZCxcbiAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsXG4gICAgICAgIG9wZXJhdG9yOiAnRVFVQUxTJ1xuICAgICAgfSkpO1xuICAgICAgLy8vYXVkaXQtbG9nXG4gICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmdldEl0ZW1BdWRpdExvZyhmaWx0ZXJSZXF1ZXN0LCB0aGlzLnBhZ2VJbmZvIS5hcGlVcmkpLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3Jlc3AnLCByZXNwKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5nZXRJdGVtc0J5RmlsdGVyKGZpbHRlclJlcXVlc3QsIHRoaXMucGFnZUluZm8hLmFwaVVyaSkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICBpZiAocmVzcD8udmFsaWQgJiYgcmVzcC5ib2R5Py5sZW5ndGggPj0gMCkge1xuICAgICAgICAgIHRoaXMuaXRlbSA9IHJlc3AuYm9keVswXTtcbiAgICAgICAgICB0aGlzLmVkaXRhYmxlID0gKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIHx8ICF0aGlzLmlzUGVuZGluZykgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0VESVQnKVxuICAgICAgICAgICAgJiYgKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIHx8dGhpcy5pdGVtWydzdGF0ZVR5cGUnXSA9PT0gJ0NPTVBMRVRFRCcgKTtcbiAgICAgICAgICB0aGlzLml0ZW1Mb2FkZWQuZW1pdCh0aGlzLml0ZW0pO1xuICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lZGl0YWJsZSA9IHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJyk7XG4gICAgICB0aGlzLml0ZW0gPSB7fTtcbiAgICAgIHRoaXMuaXRlbUxvYWRlZC5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgfVxuXG4gIGJ1aWxkRG9BY3Rpb25TdWJqZWN0KCk6IGFueSB7XG4gICAgY29uc3QgbmV3VmFyID0gdGhpcy5lZGl0YWJsZSA/IE9iamVjdC5hc3NpZ24odGhpcy5pdGVtLCB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0udmFsdWUpIDogdGhpcy5pdGVtO1xuICAgIGlmICh0aGlzLml0ZW1JZCA8PSAwICYmIHRoaXMuZWRpdGFibGUgKSB7XG4gICAgICAvL1RPRE8gdGhpcyBpcyBsaWtlIGEgaGFjayBhbmQgbXVzdCBiZSBoYW5kbGVkIGZyb20gYmFja2VuZFxuICAgICAgbmV3VmFyWydzdGF0ZVR5cGUnXSA9ICdORVcnO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgIGlmIChmaWVsZC5mbGF0dGVuQnlTdWJBdHRyaWJ1dGUpe1xuICAgICAgICBuZXdWYXJbZmllbGQucHJvcGVydHldID0gbmV3VmFyW2ZpZWxkLnByb3BlcnR5XVtmaWVsZC5mbGF0dGVuQnlTdWJBdHRyaWJ1dGVdXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoIXRoaXMucGFnZUluZm8uZHJhZnRTdXBwb3J0ZWQpe1xuICAgICAgbmV3VmFyWydzdGF0dXMnXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBuZXdWYXI7XG4gIH1cblxuXG4gIGRvU2F2ZUFwcHJvdmVBY3Rpb24oKSB7XG4gICAgbGV0IGFjdGlvbklkID0gZ2V0V2ZBY3Rpb25JZCh0aGlzLml0ZW0uc3RhdGVUeXBlKTtcbiAgICBpZiAodGhpcy5pdGVtSWQgPD0gMCAmJiB0aGlzLmVkaXRhYmxlICkge1xuICAgICAgYWN0aW9uSWQgPSBORVdcbiAgICB9XG4gICAgaWYgKCF0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkKSB7XG4gICAgICBhY3Rpb25JZCA9IFNBVkVfQU5EX0NPTVBMRVRFXG4gICAgfVxuICAgIGlmICh0aGlzLmVkaXRhYmxlICYmIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS52YWxpZCAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS50b3BQYW5lbE1lc3NhZ2UkLm5leHQobmV3IFNuYWNrTWVzc2FnZSgnSU5WQUxJRF9JTlBVVF9GT1JNJywgdHJ1ZSwgJ2Vycm9yJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IERvQWN0aW9uUmVxdWVzdCgpO1xuICAgIHJlcXVlc3QuYWN0aW9uSWQgPSBhY3Rpb25JZDtcbiAgICByZXF1ZXN0LnN1YmplY3QgPSB0aGlzLmJ1aWxkRG9BY3Rpb25TdWJqZWN0KCk7XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvbkNvbW1lbnRDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHtsYWJlbDogJ3NhdmUnLCBpc1Rlcm1pbmF0aW9uOiBmYWxzZX0sXG4gICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgZGlyZWN0aW9uOiAgdGhpcy5jdXJyZW50RGlyZWN0aW9uXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJlcXVlc3QuY29tbWVudCA9IHJlc3VsdC5jb21tZW50O1xuICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLmRvQWN0aW9uV2l0aEF0dGFjaG1lbnRzKHJlcXVlc3QsIFtdLCB0aGlzLnBhZ2VJbmZvISkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdzdGVwJyxhY3Rpb25JZCk7XG4gICAgICAgICAgdGhpcy5hY3Rpb25SZXN1bHRFbWl0dGVyLmVtaXQoeyB2YWxpZDogcmVzcC52YWxpZCwgYWN0aW9uSWQ6IGFjdGlvbklkIH0pO1xuICAgICAgICAgIGlmIChyZXNwLnZhbGlkICkge1xuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAnYXBwcm92ZV9zdWNjZXNzZnVsbHknO1xuICAgICAgICAgICAgc3dpdGNoIChhY3Rpb25JZCkge1xuICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdzYXZlZF9zdWNjZXNzZnVsbHknO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICd1cGRhdGVkX3N1Y2Nlc3NmdWxseSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdhcHByb3ZlX3N1Y2Nlc3NmdWxseSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnRvcFBhbmVsTWVzc2FnZSQubmV4dChuZXcgU25hY2tNZXNzYWdlKG1lc3NhZ2UsIHRydWUsICdzdWNjZXNzJykpO1xuICAgICAgICAgICAgIGlmKCF0aGlzLnBhZ2VJbmZvLnN0YXlPblBhZ2Upe1xuICAgICAgICAgICAgICAgdGhpcy5iYWNrVG9QYXJlbnQoKTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICByZXF1ZXN0LnN1YmplY3RbJ3N0YXRlVHlwZSddID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXNwLm1lc3NhZ2VbMF0uZXJyb3JNZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2R1cGxpYycpKVxuICAgICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS50b3BQYW5lbE1lc3NhZ2UkLm5leHQobmV3IFNuYWNrTWVzc2FnZSh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyByZXNwLm1lc3NhZ2VbMF0uZXJyb3JDb2RlLCB0cnVlLCAnZXJyb3InKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGJhY2tUb1BhcmVudCgpIHtcbiAgICAgIGNvbnN0IGlkSWR4ID0gdGhpcy5yb3V0ZXIudXJsLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMucm91dGVyLnVybC5zdWJzdHJpbmcoMCwgaWRJZHgpKTtcbiAgfVxuXG5cbiAgZ2V0VGl0bGUoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb259LiR7dGhpcy5wYWdlSW5mby5pZH1gIDtcbiAgICB9XG5cbiAgICB1cGRhdGVGb3JtKCRldmVudDogRm9ybUdyb3VwKSB7XG4gICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybSA9ICRldmVudDtcbiAgICAgICAgdGhpcy5mb3JtVXBkYXRlZC5lbWl0KCRldmVudCk7XG4gICAgfVxuXG4gIGRvQ2FuY2VsUmVqZWN0QWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5lZGl0YWJsZSl7XG4gICAgICBsZXQgYWN0aW9uSWQgPSAzO1xuICAgICAgLy8gY29uc29sZS5sb2coJ2FjdGlvbklkJyxhY3Rpb25JZCk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IERvQWN0aW9uUmVxdWVzdCgpO1xuICAgICAgcmVxdWVzdC5hY3Rpb25JZCA9IGFjdGlvbklkO1xuICAgICAgcmVxdWVzdC5zdWJqZWN0ID0gdGhpcy5idWlsZERvQWN0aW9uU3ViamVjdCgpO1xuXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFjdGlvbkNvbW1lbnRDb21wb25lbnQsIHtcbiAgICAgICAgZGF0YToge2xhYmVsOiAncmVqZWN0JywgYWNjZXB0QWN0aW9uTGFiZWw6ICdhY2NlcHQnLCByZWplY3RBY3Rpb25MYWJlbDogJ3JldHVybid9LFxuICAgICAgICB3aWR0aDogJzYwMHB4JyxcbiAgICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50RGlyZWN0aW9uXG4gICAgICB9KTtcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcmVxdWVzdC5jb21tZW50ID0gcmVzdWx0LmNvbW1lbnQ7XG4gICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5kb0FjdGlvbldpdGhBdHRhY2htZW50cyhyZXF1ZXN0LCBbXSwgdGhpcy5wYWdlSW5mbyEpLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uUmVzdWx0RW1pdHRlci5lbWl0KHsgdmFsaWQ6IHJlc3AudmFsaWQsIGFjdGlvbklkOiBhY3Rpb25JZCB9KTtcbiAgICAgICAgICAgIGlmIChyZXNwLnZhbGlkKSB7XG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ3N1Y2Nlc3NmdWxfcmVqZWN0X21lc3NhZ2UnLCB0cnVlLCAnc3VjY2VzcycpKTtcbiAgICAgICAgICAgICAgaWYoIXRoaXMucGFnZUluZm8uc3RheU9uUGFnZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrVG9QYXJlbnQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKVxuICAgIH1cbiAgICB9XG5cbiAgaGFzV2ZQZXJtaXNzaW9uKCkge1xuICAgIHJldHVybiAgKHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdFRElUJylcbiAgICB8fCB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnQ09NUExFVEUnKVxuICAgIHx8IHRoaXMuc2VjdXJpdHlNYW5hZ2VyLmhhc1BhZ2VQZXJtaXNzaW9uKHRoaXMucGFnZUluZm8uaWQsICdURVJNSU5BVEUnKSlcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBnZXRQb3NpdGl2ZVdmQWN0aW9uS2V5ID0gZ2V0UG9zaXRpdmVXZkFjdGlvbktleTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldE5lZ2F0aXZlV2ZBY3Rpb25LZXkgPSBnZXROZWdhdGl2ZVdmQWN0aW9uS2V5O1xuXG4gIGhhc1dmUG9zaXRpdmVQZXJtaXNzaW9uKCkge1xuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgJiYgdGhpcy5zZWN1cml0eU1hbmFnZXIuaGFzUGFnZVBlcm1pc3Npb24odGhpcy5wYWdlSW5mby5pZCwgJ0NPTVBMRVRFJykpIHx8XG4gICAgICAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnRURJVCcpKVxuICB9XG5cbiAgaGFzV2ZOZWdhdGl2ZVBlcm1pc3Npb24oKSB7XG4gICAgcmV0dXJuICghdGhpcy5lZGl0YWJsZSAmJiB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnVEVSTUlOQVRFJykpIHx8XG4gICAgICAodGhpcy5lZGl0YWJsZSAmJiB0aGlzLnNlY3VyaXR5TWFuYWdlci5oYXNQYWdlUGVybWlzc2lvbih0aGlzLnBhZ2VJbmZvLmlkLCAnRURJVCcpKVxuICB9XG5cbiAgZG9FeHRyYUFjdGlvbigpIHtcbiAgICB0aGlzLmV4dHJhQWN0aW9uLmVtaXQoKVxuICB9XG4gIGRpc2FibGVkU2F2ZUJ1dHRvbihlbGVtZW50KSB7XG4gICAgcmV0dXJuICghdGhpcy5pc1BlbmRpbmcgJiYgZWxlbWVudC5zdGF0ZVR5cGUgPT0gJ1BFTkRJTkcnKSAmJiB0aGlzLnBhZ2VJbmZvLmRyYWZ0U3VwcG9ydGVkIDtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicGFnZS1jb250YWluZXJcIj5cblxuICA8ZGl2IGNsYXNzPVwicm93IGZ1bGwtd2lkdGggbXQtMnZoXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmdWxsLXdpZHRoXCI+XG4gICAgICA8YXBwLXRpdGxlLWJhclxuICAgICAgICBbcGFnZVRpdGxlXT1cImdldFRpdGxlKClcIlxuICAgICAgICBbbmV3QWN0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW2hpZGVCYWNrQnV0dG9uXT1cImhpZGVCYWNrQnV0dG9uXCI+XG4gICAgICA8L2FwcC10aXRsZS1iYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxhcHAtYmFzZS1mb3JtLWNhbnZhc1xuICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXG4gICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgIFtlZGl0YWJsZV09XCJlZGl0YWJsZVwiXG4gICAgW2Vycm9yc109XCJlcnJvcnNcIlxuICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgIChmb3JtVXBkYXRlZCk9XCJ1cGRhdGVGb3JtKCRldmVudClcIj5cbiAgPC9hcHAtYmFzZS1mb3JtLWNhbnZhcz5cblxuICA8ZGl2IGNsYXNzPVwicm93IG1haW4tZm9ybS1jYW52YXMgbXQtM3ZoXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jZW50ZXItc3RhcnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhc1dmUG9zaXRpdmVQZXJtaXNzaW9uKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9TYXZlQXBwcm92ZUFjdGlvbigpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTYXZlQnV0dG9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgIGlkPVwiYmFzZS1mb3JtLXBvc2l0aXZlLWJ0blwiPlxuICAgICAgICAgIHt7IGdldFBvc2l0aXZlV2ZBY3Rpb25LZXkoaXRlbT8uc3RhdGVUeXBlKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImhhc1dmTmVnYXRpdmVQZXJtaXNzaW9uKClcIiBjb2xvcj1cInNlY29uZFwiIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvQ2FuY2VsUmVqZWN0QWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFNhdmVCdXR0b24oaXRlbSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJiYXNlLWZvcm0tbmVnYXRpdmUtYnRuXCI+XG4gICAgICAgICAge3sgZ2V0TmVnYXRpdmVXZkFjdGlvbktleShpdGVtPy5zdGF0ZVR5cGUpIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwicGFnZUluZm8uaGlkZUV4dHJhY3RCdXR0b24gPT09IGZhbHNlICYmIGl0ZW1JZCA+IDAgJiYgZWRpdGFibGVcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb0V4dHJhQWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJiYXNlLWZvcm0tZXh0cmEtYnRuXCI+XG4gICAgICAgICAge3sgcGFnZUluZm8ubGFiZWxzU2VjdGlvbiArIFwiLlwiICsgXCJFWFRSQV9CVVRUT05fTkFNRVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+PC9kaXY+XG4gIDwvZGl2PlxuXG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwYWdlSW5mby5oaWRlQXVkaXRMb2dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1haW4tZm9ybS1jYW52YXMgbXQtNHZoIHBiLTV2aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTk1XCI+XG4gICAgICAgIDxhcHAtYXVkaXQtbG9nIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9hcHAtYXVkaXQtbG9nPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj5cbiJdfQ==
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
26
26
  type: HostListener,
27
27
  args: ['input', ['$event']]
28
28
  }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF4RGlnaXRzRGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0tY2FudmFzL01heERpZ2l0c0RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTS9ELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXhCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDOytHQWZVLGtCQUFrQjttR0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsU0FBUztzQkFBakIsS0FBSztnQkFHTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1ttYXhEaWdpdHNdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXhEaWdpdHNEaXJlY3RpdmUge1xyXG4gIEBJbnB1dCgpIG1heERpZ2l0cyE6IG51bWJlcjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG5cclxuICAgIGlmICghdGhpcy5tYXhEaWdpdHMpIHJldHVybjtcclxuXHJcbiAgICBsZXQgdmFsdWUgPSBpbnB1dC52YWx1ZTtcclxuXHJcbiAgICBpZiAodmFsdWUubGVuZ3RoID4gdGhpcy5tYXhEaWdpdHMpIHtcclxuICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLm1heERpZ2l0cyk7XHJcbiAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdpbnB1dCcpKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF4RGlnaXRzRGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0tY2FudmFzL01heERpZ2l0c0RpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTS9ELE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUU1QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBRXhCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDOytHQWZVLGtCQUFrQjttR0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBRVUsU0FBUztzQkFBakIsS0FBSztnQkFHTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXhEaWdpdHNdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNYXhEaWdpdHNEaXJlY3RpdmUge1xuICBASW5wdXQoKSBtYXhEaWdpdHMhOiBudW1iZXI7XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoIXRoaXMubWF4RGlnaXRzKSByZXR1cm47XG5cbiAgICBsZXQgdmFsdWUgPSBpbnB1dC52YWx1ZTtcblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiB0aGlzLm1heERpZ2l0cykge1xuICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLm1heERpZ2l0cyk7XG4gICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -161,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
161
161
  type: HostListener,
162
162
  args: ['blur']
163
163
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVtYmVyc09ubHlEaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvTnVtYmVyc09ubHlEaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBYXpFLE1BQU0sT0FBTyxvQkFBb0I7SUFhL0IsWUFBb0IsRUFBZ0M7UUFBaEMsT0FBRSxHQUFGLEVBQUUsQ0FBOEI7UUFYM0MsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTdCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBRXBDLGFBQVEsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFYyxDQUFDO0lBRXhELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUss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SyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUdELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzsrR0FySVUsb0JBQW9CO21HQUFwQixvQkFBb0IsaVRBUnBCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzs0RkFFVSxvQkFBb0I7a0JBWGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOytFQUdVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBOEJOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMEVuQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNqQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdCakMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbbnVtYmVyc09ubHldJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGVjaW1hbE9ubHlEaXJlY3RpdmUpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIERlY2ltYWxPbmx5RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBASW5wdXQoKSBtYXhEZWNpbWFscyA9IDE1O1xyXG4gIEBJbnB1dCgpIG51bWJlcnNPbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbnVtYmVyc09ubHlXaXRoUGx1cyA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgcHJpdmF0ZSBfZGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIHRlbXBaZXJvSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pIHt9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiBTdHJpbmcodmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLnRlbXBaZXJvSW5kZXggIT09IG51bGwgJiYgdGhpcy5fZGlzcGxheVZhbHVlLmluY2x1ZGVzKCcuMCcpKSB7XHJcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuX2Rpc3BsYXlWYWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLl9kaXNwbGF5VmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5udW1iZXJzT25seSkgcmV0dXJuO1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBjdXJzb3IgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCA/PyAwO1xyXG4gICAgbGV0IHZhbHVlID0gaW5wdXQudmFsdWU7XHJcblxyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHxcclxuICAgICAgICBbJ0JhY2tzcGFjZScsJ1RhYicsJ0Fycm93TGVmdCcsJ0Fycm93UmlnaHQnLCdEZWxldGUnLCdIb21lJywnRW5kJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLm51bWJlcnNPbmx5V2l0aFBsdXMpIHtcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJysnKSB7XHJcbiAgICAgICAgaWYgKGN1cnNvciAhPT0gMCB8fCB2YWx1ZS5pbmNsdWRlcygnKycpKSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50LmtleSA+PSAnMCcgJiYgZXZlbnQua2V5IDw9ICc5Jykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJy0nKSB7XHJcbiAgICAgIGlmIChjdXJzb3IgIT09IDAgfHwgdmFsdWUuaW5jbHVkZXMoJy0nKSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChldmVudC5rZXkgPT09ICcuJykge1xyXG4gICAgICBpZiAodGhpcy5tYXhEZWNpbWFscyA9PT0gMCB8fCB2YWx1ZS5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgY3Vyc29yKSArICcuMCcgKyB2YWx1ZS5zbGljZShjdXJzb3IpO1xyXG4gICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy50ZW1wWmVyb0luZGV4ID0gY3Vyc29yICsgMTtcclxuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yICsgMiwgY3Vyc29yICsgMikpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZGlnaXRzXHJcbiAgICBpZiAoZXZlbnQua2V5ID49ICcwJyAmJiBldmVudC5rZXkgPD0gJzknKSB7XHJcbiAgICAgIGNvbnN0IGRvdEluZGV4ID0gdmFsdWUuaW5kZXhPZignLicpO1xyXG4gICAgICBpZiAoZG90SW5kZXggIT09IC0xICYmIGN1cnNvciA+IGRvdEluZGV4KSB7XHJcbiAgICAgICAgY29uc3QgZGVjaW1hbHNDb3VudCA9IHZhbHVlLmxlbmd0aCAtIGRvdEluZGV4IC0gMTtcclxuICAgICAgICBpZiAoZGVjaW1hbHNDb3VudCA+PSB0aGlzLm1heERlY2ltYWxzKSB7IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IHJldHVybjsgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy50ZW1wWmVyb0luZGV4ICE9PSBudWxsICYmIGN1cnNvciA9PT0gdGhpcy50ZW1wWmVyb0luZGV4ICsgMSAmJiBldmVudC5rZXkgIT09ICcwJykge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLnRlbXBaZXJvSW5kZXgpICsgZXZlbnQua2V5ICsgdmFsdWUuc2xpY2UodGhpcy50ZW1wWmVyb0luZGV4ICsgMSk7XHJcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLnRlbXBaZXJvSW5kZXggPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY3Vyc29yLCBjdXJzb3IpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudGVtcFplcm9JbmRleCA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxyXG4gIG9uSW5wdXQoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLm51bWJlcnNPbmx5KSByZXR1cm47XHJcbiAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5udW1iZXJzT25seSkgcmV0dXJuO1xyXG4gICAgY29uc3QgcGFzdGVkID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpID8/ICcnO1xyXG4gICAgaWYgKHRoaXMubnVtYmVyc09ubHlXaXRoUGx1cykge1xyXG4gICAgICBjb25zdCByZWdleCA9IC9eXFwrP1xcZCokLztcclxuICAgICAgaWYgKCFyZWdleC50ZXN0KHBhc3RlZCkpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXi0/XFxcXGQrKFxcXFwuXFxcXGR7MCwke3RoaXMubWF4RGVjaW1hbHN9fSk/JGApO1xyXG4gICAgaWYgKCFyZWdleC50ZXN0KHBhc3RlZCkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdibHVyJylcclxuICBvbkJsdXIoKSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgdGhpcy50ZW1wWmVyb0luZGV4ID0gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVtYmVyc09ubHlEaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvTnVtYmVyc09ubHlEaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBYXpFLE1BQU0sT0FBTyxvQkFBb0I7SUFhL0IsWUFBb0IsRUFBZ0M7UUFBaEMsT0FBRSxHQUFGLEVBQUUsQ0FBOEI7UUFYM0MsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTdCLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFDM0Isa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBRXBDLGFBQVEsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFFYyxDQUFDO0lBRXhELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUss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SyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUdELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQzsrR0FySVUsb0JBQW9CO21HQUFwQixvQkFBb0IsaVRBUnBCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzs0RkFFVSxvQkFBb0I7a0JBWGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOytFQUdVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBOEJOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBMEVuQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNqQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdCakMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW251bWJlcnNPbmx5XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGVjaW1hbE9ubHlEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVjaW1hbE9ubHlEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgQElucHV0KCkgbWF4RGVjaW1hbHMgPSAxNTtcbiAgQElucHV0KCkgbnVtYmVyc09ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgbnVtYmVyc09ubHlXaXRoUGx1cyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3ZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfZGlzcGxheVZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSB0ZW1wWmVyb0luZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4pIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiBTdHJpbmcodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMudGVtcFplcm9JbmRleCAhPT0gbnVsbCAmJiB0aGlzLl9kaXNwbGF5VmFsdWUuaW5jbHVkZXMoJy4wJykpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuX2Rpc3BsYXlWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGlzcGxheVZhbHVlID0gdGhpcy5fdmFsdWU7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLl9kaXNwbGF5VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubnVtYmVyc09ubHkpIHJldHVybjtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBjdXJzb3IgPSBpbnB1dC5zZWxlY3Rpb25TdGFydCA/PyAwO1xuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHxcbiAgICAgICAgWydCYWNrc3BhY2UnLCdUYWInLCdBcnJvd0xlZnQnLCdBcnJvd1JpZ2h0JywnRGVsZXRlJywnSG9tZScsJ0VuZCddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHJldHVybjtcblxuICAgIGlmICh0aGlzLm51bWJlcnNPbmx5V2l0aFBsdXMpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICcrJykge1xuICAgICAgICBpZiAoY3Vyc29yICE9PSAwIHx8IHZhbHVlLmluY2x1ZGVzKCcrJykpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPj0gJzAnICYmIGV2ZW50LmtleSA8PSAnOScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnLScpIHtcbiAgICAgIGlmIChjdXJzb3IgIT09IDAgfHwgdmFsdWUuaW5jbHVkZXMoJy0nKSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnLicpIHtcbiAgICAgIGlmICh0aGlzLm1heERlY2ltYWxzID09PSAwIHx8IHZhbHVlLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCBjdXJzb3IpICsgJy4wJyArIHZhbHVlLnNsaWNlKGN1cnNvcik7XG4gICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fZGlzcGxheVZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLnRlbXBaZXJvSW5kZXggPSBjdXJzb3IgKyAxO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvciArIDIsIGN1cnNvciArIDIpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBkaWdpdHNcbiAgICBpZiAoZXZlbnQua2V5ID49ICcwJyAmJiBldmVudC5rZXkgPD0gJzknKSB7XG4gICAgICBjb25zdCBkb3RJbmRleCA9IHZhbHVlLmluZGV4T2YoJy4nKTtcbiAgICAgIGlmIChkb3RJbmRleCAhPT0gLTEgJiYgY3Vyc29yID4gZG90SW5kZXgpIHtcbiAgICAgICAgY29uc3QgZGVjaW1hbHNDb3VudCA9IHZhbHVlLmxlbmd0aCAtIGRvdEluZGV4IC0gMTtcbiAgICAgICAgaWYgKGRlY2ltYWxzQ291bnQgPj0gdGhpcy5tYXhEZWNpbWFscykgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyByZXR1cm47IH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudGVtcFplcm9JbmRleCAhPT0gbnVsbCAmJiBjdXJzb3IgPT09IHRoaXMudGVtcFplcm9JbmRleCArIDEgJiYgZXZlbnQua2V5ICE9PSAnMCcpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLnRlbXBaZXJvSW5kZXgpICsgZXZlbnQua2V5ICsgdmFsdWUuc2xpY2UodGhpcy50ZW1wWmVyb0luZGV4ICsgMSk7XG4gICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRlbXBaZXJvSW5kZXggPSBudWxsO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvciwgY3Vyc29yKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZW1wWmVyb0luZGV4ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICBvbklucHV0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMubnVtYmVyc09ubHkpIHJldHVybjtcbiAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLl92YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSlcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubnVtYmVyc09ubHkpIHJldHVybjtcbiAgICBjb25zdCBwYXN0ZWQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgPz8gJyc7XG4gICAgaWYgKHRoaXMubnVtYmVyc09ubHlXaXRoUGx1cykge1xuICAgICAgY29uc3QgcmVnZXggPSAvXlxcKz9cXGQqJC87XG4gICAgICBpZiAoIXJlZ2V4LnRlc3QocGFzdGVkKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4tP1xcXFxkKyhcXFxcLlxcXFxkezAsJHt0aGlzLm1heERlY2ltYWxzfX0pPyRgKTtcbiAgICBpZiAoIXJlZ2V4LnRlc3QocGFzdGVkKSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLnRlbXBaZXJvSW5kZXggPSBudWxsO1xuICB9XG59XG4iXX0=