@quadrel-enterprise-ui/framework 18.31.4 → 18.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2022/lib/comments/add-comment/add-comment-dialog.component.mjs +3 -4
  2. package/esm2022/lib/forms/checkbox-chips/checkbox-chips.component.mjs +3 -3
  3. package/esm2022/lib/forms/checkboxes/checkboxes.component.mjs +3 -3
  4. package/esm2022/lib/forms/datepicker/datepicker.component.mjs +3 -3
  5. package/esm2022/lib/forms/dropdown/dropdown.component.mjs +3 -3
  6. package/esm2022/lib/forms/file-upload/file-upload.component.mjs +3 -3
  7. package/esm2022/lib/forms/input/input.component.mjs +3 -3
  8. package/esm2022/lib/forms/multi-input/multi-input.component.mjs +3 -3
  9. package/esm2022/lib/forms/pin-code/pin-code.component.mjs +3 -3
  10. package/esm2022/lib/forms/radio-buttons/radio-buttons.component.mjs +3 -3
  11. package/esm2022/lib/forms/richtext/richtext.component.mjs +3 -3
  12. package/esm2022/lib/forms/switches/switches.component.mjs +3 -3
  13. package/esm2022/lib/forms/textarea/textarea.component.mjs +3 -3
  14. package/esm2022/lib/page/object-header/page-object-header.component.mjs +8 -4
  15. package/esm2022/lib/page/page.component.mjs +8 -2
  16. package/esm2022/lib/page/shared/services/form-group-manager.service.mjs +59 -14
  17. package/esm2022/lib/page/shared/services/page-submit-action.service.mjs +4 -2
  18. package/esm2022/lib/quick-edit/quick-edit.component.mjs +2 -2
  19. package/esm2022/lib/table/store/table.reducer.mjs +1 -1
  20. package/fesm2022/quadrel-enterprise-ui-framework.mjs +103 -47
  21. package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
  22. package/lib/comments/add-comment/add-comment-dialog.component.d.ts +0 -4
  23. package/lib/comments/add-comment/add-comment-dialog.component.d.ts.map +1 -1
  24. package/lib/page/object-header/page-object-header.component.d.ts.map +1 -1
  25. package/lib/page/page.component.d.ts +1 -0
  26. package/lib/page/page.component.d.ts.map +1 -1
  27. package/lib/page/shared/services/form-group-manager.service.d.ts +10 -0
  28. package/lib/page/shared/services/form-group-manager.service.d.ts.map +1 -1
  29. package/lib/page/shared/services/page-submit-action.service.d.ts +1 -0
  30. package/lib/page/shared/services/page-submit-action.service.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/esm2022/index.mjs +0 -74
  33. package/esm2022/lib/table/__mocks__/mock-secondary-actions.service.mjs +0 -26
  34. package/index.d.ts.map +0 -1
  35. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts +0 -14
  36. package/lib/table/__mocks__/mock-secondary-actions.service.d.ts.map +0 -1
@@ -239,7 +239,7 @@ export class QdRadioButtonsComponent {
239
239
  },
240
240
  QdRadioButtonsService,
241
241
  QdFormsActionEmitterService
242
- ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n [isDisabled]=\"isLabelDisabled\"\n></qd-form-label>\n\n<qd-filter-form-items\n *ngIf=\"filter\"\n (filterValueChange)=\"changeValue($event)\"\n [data-test-id]=\"testId + '-filter-form'\"\n></qd-filter-form-items>\n\n<div class=\"qd-radio-buttons__button-section\" *ngIf=\"!readonly && !viewonly\">\n <label\n *ngFor=\"let option of radioButtonsListForView; trackBy: getOptionId\"\n [for]=\"option.value + id\"\n [ngClass]=\"\n 'qd-radio-buttons__label' +\n (option.disabled || disabled ? ' qd-radio-buttons__label--disabled' : '') +\n (option.value === value ? ' qd-radio-buttons__label--checked' : '')\n \"\n [attr.data-test-id]=\"testId + '-label'\"\n >\n <input\n type=\"radio\"\n qdVisuallyHidden\n [id]=\"option.value + id\"\n [ngClass]=\"'qd-radio-buttons__radio-button'\"\n [name]=\"id\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled || disabled\"\n (click)=\"handleClick(option.value)\"\n [checked]=\"option.value === value\"\n [attr.data-test-id]=\"testId + '-input-' + option.i18n\"\n />\n\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value === value\" [icon]=\"'circleRadio'\"></qd-icon>\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value !== value\" [icon]=\"'circleSolid'\"></qd-icon>\n\n <span [ngClass]=\"'qd-radio-buttons__caption qd-intersection-target'\">{{ option.i18n | translate }}</span>\n </label>\n</div>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"activeOptionAsList\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"activeOptionAsList\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-radio-buttons{display:block;flex-direction:column;margin-bottom:.75rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__button-section{display:flex;min-height:2.25rem;flex-wrap:wrap;align-items:center;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__label:not(:last-child) .qd-radio-buttons__caption{padding-right:1rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section .qd-radio-buttons__caption{flex:auto}.qd-radio-buttons .qd-radio-buttons__label{display:flex;max-width:100%;padding:.625rem 0;color:#454545;cursor:pointer;font-size:.875rem;font-weight:400;line-height:1rem}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__indicator{padding:0 .375rem 0 0;color:#b4b4b4;font-size:1.25rem}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus{color:#171717}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover .qd-radio-buttons__indicator,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus .qd-radio-buttons__indicator{color:#757575}.qd-radio-buttons .qd-radio-buttons__label--checked{color:#171717}.qd-radio-buttons .qd-radio-buttons__label--checked .qd-radio-buttons__indicator{color:#069}.qd-radio-buttons .qd-radio-buttons__label--disabled{color:#d5d5d5;cursor:default}.qd-radio-buttons .qd-radio-buttons__label--disabled .qd-radio-buttons__indicator{color:#d5d5d5}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__caption{padding:0}.qd-radio-buttons__input-section{margin-bottom:.375rem}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__button-section{flex-direction:column}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label{width:100%;padding-top:.0625rem;padding-bottom:.0625rem;padding-left:.75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.75rem;background:#fff}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding-right:.75rem!important;transform:translateY(.0625rem)}}@media (max-width: 959.98px) and (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding:.375rem .375rem .375rem 0!important;line-height:1.25rem}}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label:last-child{margin-bottom:0}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__indicator{display:flex;align-items:center}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.QdVisuallyHiddenDirective, selector: "[qdVisuallyHidden]" }, { kind: "component", type: i7.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "component", type: i8.QdFilterFormItemsComponent, selector: "qd-filter-form-items", inputs: ["inputFilterValue", "data-test-id"], outputs: ["filterValueChange"] }, { kind: "component", type: i9.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i10.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i11.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i12.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
242
+ ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n [isDisabled]=\"isLabelDisabled\"\n></qd-form-label>\n\n<qd-filter-form-items\n *ngIf=\"filter\"\n (filterValueChange)=\"changeValue($event)\"\n [data-test-id]=\"testId + '-filter-form'\"\n></qd-filter-form-items>\n\n<div class=\"qd-radio-buttons__button-section\" *ngIf=\"!readonly && !viewonly\">\n <label\n *ngFor=\"let option of radioButtonsListForView; trackBy: getOptionId\"\n [for]=\"option.value + id\"\n [ngClass]=\"\n 'qd-radio-buttons__label' +\n (option.disabled || disabled ? ' qd-radio-buttons__label--disabled' : '') +\n (option.value === value ? ' qd-radio-buttons__label--checked' : '')\n \"\n [attr.data-test-id]=\"testId + '-label'\"\n >\n <input\n type=\"radio\"\n qdVisuallyHidden\n [id]=\"option.value + id\"\n [ngClass]=\"'qd-radio-buttons__radio-button'\"\n [name]=\"id\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled || disabled\"\n (click)=\"handleClick(option.value)\"\n [checked]=\"option.value === value\"\n [attr.data-test-id]=\"testId + '-input-' + option.i18n\"\n />\n\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value === value\" [icon]=\"'circleRadio'\"></qd-icon>\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value !== value\" [icon]=\"'circleSolid'\"></qd-icon>\n\n <span [ngClass]=\"'qd-radio-buttons__caption qd-intersection-target'\">{{ option.i18n | translate }}</span>\n </label>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hasHint || hasError)\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"activeOptionAsList\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"activeOptionAsList\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-radio-buttons{display:block;flex-direction:column;margin-bottom:.75rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__button-section{display:flex;min-height:2.25rem;flex-wrap:wrap;align-items:center;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__label:not(:last-child) .qd-radio-buttons__caption{padding-right:1rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section .qd-radio-buttons__caption{flex:auto}.qd-radio-buttons .qd-radio-buttons__label{display:flex;max-width:100%;padding:.625rem 0;color:#454545;cursor:pointer;font-size:.875rem;font-weight:400;line-height:1rem}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__indicator{padding:0 .375rem 0 0;color:#b4b4b4;font-size:1.25rem}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus{color:#171717}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover .qd-radio-buttons__indicator,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus .qd-radio-buttons__indicator{color:#757575}.qd-radio-buttons .qd-radio-buttons__label--checked{color:#171717}.qd-radio-buttons .qd-radio-buttons__label--checked .qd-radio-buttons__indicator{color:#069}.qd-radio-buttons .qd-radio-buttons__label--disabled{color:#d5d5d5;cursor:default}.qd-radio-buttons .qd-radio-buttons__label--disabled .qd-radio-buttons__indicator{color:#d5d5d5}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__caption{padding:0}.qd-radio-buttons__input-section{margin-bottom:.375rem}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__button-section{flex-direction:column}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label{width:100%;padding-top:.0625rem;padding-bottom:.0625rem;padding-left:.75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.75rem;background:#fff}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding-right:.75rem!important;transform:translateY(.0625rem)}}@media (max-width: 959.98px) and (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding:.375rem .375rem .375rem 0!important;line-height:1.25rem}}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label:last-child{margin-bottom:0}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__indicator{display:flex;align-items:center}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.QdVisuallyHiddenDirective, selector: "[qdVisuallyHidden]" }, { kind: "component", type: i7.QdIconComponent, selector: "qd-icon", inputs: ["icon"] }, { kind: "component", type: i8.QdFilterFormItemsComponent, selector: "qd-filter-form-items", inputs: ["inputFilterValue", "data-test-id"], outputs: ["filterValueChange"] }, { kind: "component", type: i9.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i10.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i11.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i12.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
243
243
  }
244
244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdRadioButtonsComponent, decorators: [{
245
245
  type: Component,
@@ -251,7 +251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
251
251
  },
252
252
  QdRadioButtonsService,
253
253
  QdFormsActionEmitterService
254
- ], encapsulation: ViewEncapsulation.None, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n [isDisabled]=\"isLabelDisabled\"\n></qd-form-label>\n\n<qd-filter-form-items\n *ngIf=\"filter\"\n (filterValueChange)=\"changeValue($event)\"\n [data-test-id]=\"testId + '-filter-form'\"\n></qd-filter-form-items>\n\n<div class=\"qd-radio-buttons__button-section\" *ngIf=\"!readonly && !viewonly\">\n <label\n *ngFor=\"let option of radioButtonsListForView; trackBy: getOptionId\"\n [for]=\"option.value + id\"\n [ngClass]=\"\n 'qd-radio-buttons__label' +\n (option.disabled || disabled ? ' qd-radio-buttons__label--disabled' : '') +\n (option.value === value ? ' qd-radio-buttons__label--checked' : '')\n \"\n [attr.data-test-id]=\"testId + '-label'\"\n >\n <input\n type=\"radio\"\n qdVisuallyHidden\n [id]=\"option.value + id\"\n [ngClass]=\"'qd-radio-buttons__radio-button'\"\n [name]=\"id\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled || disabled\"\n (click)=\"handleClick(option.value)\"\n [checked]=\"option.value === value\"\n [attr.data-test-id]=\"testId + '-input-' + option.i18n\"\n />\n\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value === value\" [icon]=\"'circleRadio'\"></qd-icon>\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value !== value\" [icon]=\"'circleSolid'\"></qd-icon>\n\n <span [ngClass]=\"'qd-radio-buttons__caption qd-intersection-target'\">{{ option.i18n | translate }}</span>\n </label>\n</div>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"activeOptionAsList\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"activeOptionAsList\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-radio-buttons{display:block;flex-direction:column;margin-bottom:.75rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__button-section{display:flex;min-height:2.25rem;flex-wrap:wrap;align-items:center;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__label:not(:last-child) .qd-radio-buttons__caption{padding-right:1rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section .qd-radio-buttons__caption{flex:auto}.qd-radio-buttons .qd-radio-buttons__label{display:flex;max-width:100%;padding:.625rem 0;color:#454545;cursor:pointer;font-size:.875rem;font-weight:400;line-height:1rem}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__indicator{padding:0 .375rem 0 0;color:#b4b4b4;font-size:1.25rem}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus{color:#171717}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover .qd-radio-buttons__indicator,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus .qd-radio-buttons__indicator{color:#757575}.qd-radio-buttons .qd-radio-buttons__label--checked{color:#171717}.qd-radio-buttons .qd-radio-buttons__label--checked .qd-radio-buttons__indicator{color:#069}.qd-radio-buttons .qd-radio-buttons__label--disabled{color:#d5d5d5;cursor:default}.qd-radio-buttons .qd-radio-buttons__label--disabled .qd-radio-buttons__indicator{color:#d5d5d5}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__caption{padding:0}.qd-radio-buttons__input-section{margin-bottom:.375rem}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__button-section{flex-direction:column}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label{width:100%;padding-top:.0625rem;padding-bottom:.0625rem;padding-left:.75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.75rem;background:#fff}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding-right:.75rem!important;transform:translateY(.0625rem)}}@media (max-width: 959.98px) and (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding:.375rem .375rem .375rem 0!important;line-height:1.25rem}}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label:last-child{margin-bottom:0}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__indicator{display:flex;align-items:center}}\n"] }]
254
+ ], encapsulation: ViewEncapsulation.None, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n [isDisabled]=\"isLabelDisabled\"\n></qd-form-label>\n\n<qd-filter-form-items\n *ngIf=\"filter\"\n (filterValueChange)=\"changeValue($event)\"\n [data-test-id]=\"testId + '-filter-form'\"\n></qd-filter-form-items>\n\n<div class=\"qd-radio-buttons__button-section\" *ngIf=\"!readonly && !viewonly\">\n <label\n *ngFor=\"let option of radioButtonsListForView; trackBy: getOptionId\"\n [for]=\"option.value + id\"\n [ngClass]=\"\n 'qd-radio-buttons__label' +\n (option.disabled || disabled ? ' qd-radio-buttons__label--disabled' : '') +\n (option.value === value ? ' qd-radio-buttons__label--checked' : '')\n \"\n [attr.data-test-id]=\"testId + '-label'\"\n >\n <input\n type=\"radio\"\n qdVisuallyHidden\n [id]=\"option.value + id\"\n [ngClass]=\"'qd-radio-buttons__radio-button'\"\n [name]=\"id\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled || disabled\"\n (click)=\"handleClick(option.value)\"\n [checked]=\"option.value === value\"\n [attr.data-test-id]=\"testId + '-input-' + option.i18n\"\n />\n\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value === value\" [icon]=\"'circleRadio'\"></qd-icon>\n <qd-icon class=\"qd-radio-buttons__indicator\" *ngIf=\"option.value !== value\" [icon]=\"'circleSolid'\"></qd-icon>\n\n <span [ngClass]=\"'qd-radio-buttons__caption qd-intersection-target'\">{{ option.i18n | translate }}</span>\n </label>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hasHint || hasError)\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"activeOptionAsList\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"activeOptionAsList\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-radio-buttons{display:block;flex-direction:column;margin-bottom:.75rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__button-section{display:flex;min-height:2.25rem;flex-wrap:wrap;align-items:center;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--horizontal .qd-radio-buttons__label:not(:last-child) .qd-radio-buttons__caption{padding-right:1rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-radio-buttons.qd-radio-align--vertical .qd-radio-buttons__button-section .qd-radio-buttons__caption{flex:auto}.qd-radio-buttons .qd-radio-buttons__label{display:flex;max-width:100%;padding:.625rem 0;color:#454545;cursor:pointer;font-size:.875rem;font-weight:400;line-height:1rem}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__indicator{padding:0 .375rem 0 0;color:#b4b4b4;font-size:1.25rem}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus{color:#171717}.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):hover .qd-radio-buttons__indicator,.qd-radio-buttons .qd-radio-buttons__label:not(.qd-radio-buttons__label--checked,.qd-radio-buttons__label--disabled):focus .qd-radio-buttons__indicator{color:#757575}.qd-radio-buttons .qd-radio-buttons__label--checked{color:#171717}.qd-radio-buttons .qd-radio-buttons__label--checked .qd-radio-buttons__indicator{color:#069}.qd-radio-buttons .qd-radio-buttons__label--disabled{color:#d5d5d5;cursor:default}.qd-radio-buttons .qd-radio-buttons__label--disabled .qd-radio-buttons__indicator{color:#d5d5d5}.qd-radio-buttons .qd-radio-buttons__label .qd-radio-buttons__caption{padding:0}.qd-radio-buttons__input-section{margin-bottom:.375rem}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__button-section{flex-direction:column}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label{width:100%;padding-top:.0625rem;padding-bottom:.0625rem;padding-left:.75rem;border:.0625rem solid rgb(180,180,180);margin-bottom:.75rem;background:#fff}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding-right:.75rem!important;transform:translateY(.0625rem)}}@media (max-width: 959.98px) and (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__caption{padding:.375rem .375rem .375rem 0!important;line-height:1.25rem}}@media (max-width: 959.98px){.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label:last-child{margin-bottom:0}.qd-radio-buttons:not(.qd-rwd-disabled) .qd-radio-buttons__label .qd-radio-buttons__indicator{display:flex;align-items:center}}\n"] }]
255
255
  }], ctorParameters: () => [{ type: i1.QdRadioButtonsService }, { type: i2.QdFormsActionEmitterService }, { type: i3.ControlContainer, decorators: [{
256
256
  type: Optional
257
257
  }, {
@@ -323,4 +323,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
323
323
  type: HostBinding,
324
324
  args: ['class.qd-radio-buttons-error']
325
325
  }] } });
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvZm9ybXMvcmFkaW8tYnV0dG9ucy9yYWRpby1idXR0b25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9yYWRpby1idXR0b25zL3JhZGlvLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFJTixRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENB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bXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7XG4gIGdldEFsaWduLFxuICBnZXREaXNhYmxlZCxcbiAgZ2V0RmlsdGVyLFxuICBnZXRIaW50QWN0aW9uLFxuICBnZXRJc0xhYmVsRGlzYWJsZWQsXG4gIGdldExhYmVsLFxuICBnZXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IGhhc1ZhbGlkYXRpb25LZXkgfSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9oYXMtdmFsaWRhdG9ycy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybU9wdGlvbiwgUWRGb3JtUmFkaW9CdXR0b25zQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZEZvcm1SYWRpb0J1dHRvbnNPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWwvcmFkaW8tYnV0dG9ucyc7XG5pbXBvcnQgeyBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvYWN0aW9uLWVtaXR0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFJhZGlvQnV0dG9uc1NlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWJ1dHRvbnMtc2VydmljZS9yYWRpby1idXR0b25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRFdmVudEJyb2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2V2ZW50LWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybVJlc29sdmVkT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZm9ybS1vcHRpb25zLXJlc29sdmVyJztcblxuLyoqXG4gKiBUaGUgKipRZFJhZGlvQnV0dG9ucyoqIGlzIGEgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSBmb3JtIGVsZW1lbnQgZm9yIHJhZGlvIGJ1dHRvbnMuPGJyIC8+XG4gKiBJdCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG9uZSBvcHRpb24gZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4gSXQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIHJhZGlvQnV0dG9uczogbmV3IFFkRm9ybUNvbnRyb2woKVxuICogfSk7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICogICA8cWQtcmFkaW8tYnV0dG9ucyBbZm9ybUNvbnRyb2xOYW1lXT1cInJhZGlvQnV0dG9uc1wiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1yYWRpby1idXR0b25zPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHFkLXJhZGlvLWJ1dHRvbnMgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmFkaW8tYnV0dG9ucz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1yYWRpby1idXR0b25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFFkUmFkaW9CdXR0b25zQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkUmFkaW9CdXR0b25zU2VydmljZSxcbiAgICBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBRZFJhZGlvQnV0dG9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggTW9kZWwgQmluZGluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHFkLXJhZGlvLWJ1dHRvbnMgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmFkaW8tYnV0dG9ucz5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZvcm0gaXRlbVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgbGFiZWw6IHsgaTE4bjogJ1FkLUZvcm1zIFJhZGlvIEJ1dHRvbnMnIH0sXG4gICAqICAgYWxpZ246ICdob3Jpem9udGFsJyxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1SYWRpb0J1dHRvbnNDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3JhZGlvLWJ1dHRvbnMnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC4gUmV0dXJuIHZhbHVlIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLXJlYWRvbmx5JylcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLXZpZXdvbmx5JylcbiAgdmlld29ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLWhpbnQtYWN0aW9uJylcbiAgaGludEFjdGlvbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1yZWFkb25seS1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLXZpZXdvbmx5LWFjdGlvbicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYnV0dG9ucy0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMnKVxuICBxZFJhZGlvQnV0dG9ucyA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYWxpZ24tLXZlcnRpY2FsJykgZ2V0IGFsaWduSXNWZXJ0aWNhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGlnbiA9PT0gJ3ZlcnRpY2FsJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYWxpZ24tLWhvcml6b250YWwnKSBnZXQgYWxpZ25Jc0hvcml6b250YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxpZ24gPT09ICdob3Jpem9udGFsJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1lcnJvcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYnV0dG9ucy1lcnJvcicpXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5oaW50ICYmIHRoaXMuY29uZmlnLmhpbnQuaTE4biAmJiAhdGhpcy5jb25maWcuaGludC5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIGhhc1ZhbGlkYXRpb25LZXkodGhpcy5jb250cm9sLCAncmVxdWlyZWQnKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVPcHRpb25Bc0xpc3QoKTogUWRGb3JtT3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKG8gPT4gby52YWx1ZSA9PT0gdGhpcy52YWx1ZSk7XG4gIH1cblxuICBsYWJlbDogc3RyaW5nO1xuICBhbGlnbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgZmlsdGVyID0gZmFsc2U7XG4gIG9wdGlvbnM6IFFkRm9ybU9wdGlvbltdO1xuICBpc0xhYmVsRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlkOiBzdHJpbmc7XG4gIGZpbHRlclJhZGlvQnV0dG9ucyA9ICcnO1xuICByYWRpb0J1dHRvbnNMaXN0Rm9yVmlldzogUWRGb3JtUmFkaW9CdXR0b25zT3B0aW9ucztcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhZGlvQnV0dG9uc1NlcnZpY2U6IFFkUmFkaW9CdXR0b25zU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkVtaXR0ZXJTZXJ2aWNlOiBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2xDb250YWluZXIpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdRRC1VSSB8IFFkUmFkaW9CdXR0b25zQ29tcG9uZW50IC0gTWlzc2luZyBGb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIGZyb20gaG9zdCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbml0UmFkaW9CdXR0b25MaXN0KCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5pbml0T3BNb2RlU3Vic2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXRPcHRpb25JZChpbmRleCwgb3B0aW9uOiBRZEZvcm1SZXNvbHZlZE9wdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZSArIHRoaXMuaWQ7XG4gIH1cblxuICBoYW5kbGVDbGljayh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgY2hhbmdlVmFsdWUoJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5yYWRpb0J1dHRvbnNTZXJ2aWNlLmZpbHRlck9wdGlvbnMoJGV2ZW50KTtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnJhZGlvQnV0dG9uc0xpc3RGb3JWaWV3ID0gdGhpcy5yYWRpb0J1dHRvbnNTZXJ2aWNlLmdldFJhZGlvQnV0dG9uc0xpc3RGb3JWaWV3KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hbGlnbiA9IGdldEFsaWduKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZmlsdGVyID0gZ2V0RmlsdGVyKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLm9wdGlvbnMgPSBnZXRPcHRpb25zKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmluaXRSYWRpb0J1dHRvbkxpc3QoKTtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLnJlYWRvbmx5ID0gZ2V0UmVhZG9ubHkodGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seUFjdGlvbiA9IGdldFJlYWRvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnZpZXdvbmx5QWN0aW9uID0gZ2V0Vmlld29ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMuaXNMYWJlbERpc2FibGVkID0gZ2V0SXNMYWJlbERpc2FibGVkKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFJhZGlvQnV0dG9uTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJhZGlvQnV0dG9uc1NlcnZpY2Uuc2V0UmFkaW9CdXR0b25zTGlzdCh0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMucmFkaW9CdXR0b25zU2VydmljZS5zZXRSYWRpb0J1dHRvbnNMaXN0Rm9yVmlldygpO1xuICAgIHRoaXMucmFkaW9CdXR0b25zTGlzdEZvclZpZXcgPSB0aGlzLnJhZGlvQnV0dG9uc1NlcnZpY2UuZ2V0UmFkaW9CdXR0b25zTGlzdEZvclZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgaWYgKG9wdGlvbi5hY3RpdmUpIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRPcE1vZGVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50QnJva2VyU2VydmljZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLmNvbnN1bWU8eyBpc1ZpZXdvbmx5OiBib29sZWFuIH0+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJykuc3Vic2NyaWJlKHRvcGljID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcudmlld29ubHkgPT09ICdib29sZWFuJykgcmV0dXJuO1xuXG4gICAgICB0aGlzLnZpZXdvbmx5ID0gZ2V0Vmlld29ubHkodGhpcy5jb25maWcsIHRvcGljLnBheWxvYWQuaXNWaWV3b25seSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxxZC1mb3JtLWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFt2aWV3b25seV09XCJ2aWV3b25seVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gIFtpc0Rpc2FibGVkXT1cImlzTGFiZWxEaXNhYmxlZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48cWQtZmlsdGVyLWZvcm0taXRlbXNcbiAgKm5nSWY9XCJmaWx0ZXJcIlxuICAoZmlsdGVyVmFsdWVDaGFuZ2UpPVwiY2hhbmdlVmFsdWUoJGV2ZW50KVwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1maWx0ZXItZm9ybSdcIlxuPjwvcWQtZmlsdGVyLWZvcm0taXRlbXM+XG5cbjxkaXYgY2xhc3M9XCJxZC1yYWRpby1idXR0b25zX19idXR0b24tc2VjdGlvblwiICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiPlxuICA8bGFiZWxcbiAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJhZGlvQnV0dG9uc0xpc3RGb3JWaWV3OyB0cmFja0J5OiBnZXRPcHRpb25JZFwiXG4gICAgW2Zvcl09XCJvcHRpb24udmFsdWUgKyBpZFwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAncWQtcmFkaW8tYnV0dG9uc19fbGFiZWwnICtcbiAgICAgIChvcHRpb24uZGlzYWJsZWQgfHwgZGlzYWJsZWQgPyAnIHFkLXJhZGlvLWJ1dHRvbnNfX2xhYmVsLS1kaXNhYmxlZCcgOiAnJykgK1xuICAgICAgKG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUgPyAnIHFkLXJhZGlvLWJ1dHRvbnNfX2xhYmVsLS1jaGVja2VkJyA6ICcnKVxuICAgIFwiXG4gICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctbGFiZWwnXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHFkVmlzdWFsbHlIaWRkZW5cbiAgICAgIFtpZF09XCJvcHRpb24udmFsdWUgKyBpZFwiXG4gICAgICBbbmdDbGFzc109XCIncWQtcmFkaW8tYnV0dG9uc19fcmFkaW8tYnV0dG9uJ1wiXG4gICAgICBbbmFtZV09XCJpZFwiXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWQgfHwgZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgW2NoZWNrZWRdPVwib3B0aW9uLnZhbHVlID09PSB2YWx1ZVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1pbnB1dC0nICsgb3B0aW9uLmkxOG5cIlxuICAgIC8+XG5cbiAgICA8cWQtaWNvbiBjbGFzcz1cInFkLXJhZGlvLWJ1dHRvbnNfX2luZGljYXRvclwiICpuZ0lmPVwib3B0aW9uLnZhbHVlID09PSB2YWx1ZVwiIFtpY29uXT1cIidjaXJjbGVSYWRpbydcIj48L3FkLWljb24+XG4gICAgPHFkLWljb24gY2xhc3M9XCJxZC1yYWRpby1idXR0b25zX19pbmRpY2F0b3JcIiAqbmdJZj1cIm9wdGlvbi52YWx1ZSAhPT0gdmFsdWVcIiBbaWNvbl09XCInY2lyY2xlU29saWQnXCI+PC9xZC1pY29uPlxuXG4gICAgPHNwYW4gW25nQ2xhc3NdPVwiJ3FkLXJhZGlvLWJ1dHRvbnNfX2NhcHRpb24gcWQtaW50ZXJzZWN0aW9uLXRhcmdldCdcIj57eyBvcHRpb24uaTE4biB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiPlxuICA8cWQtZm9ybS1oaW50XG4gICAgW2hpbnRdPVwiaGFzSGludCA/IGNvbmZpZy5oaW50LmkxOG4gOiAnJ1wiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgICBbaGludEFjdGlvbl09XCJoaW50QWN0aW9uXCJcbiAgICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gID48L3FkLWZvcm0taGludD5cbjwvbmctY29udGFpbmVyPlxuXG48cWQtZm9ybS1yZWFkb25seVxuICAqbmdJZj1cInJlYWRvbmx5XCJcbiAgW3ZhbHVlc109XCJhY3RpdmVPcHRpb25Bc0xpc3RcIlxuICBbcmVhZG9ubHlBY3Rpb25dPVwicmVhZG9ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXJlYWRvbmx5PlxuXG48cWQtZm9ybS12aWV3b25seVxuICAqbmdJZj1cInZpZXdvbmx5XCJcbiAgW3ZhbHVlc109XCJhY3RpdmVPcHRpb25Bc0xpc3RcIlxuICBbdmlld29ubHlBY3Rpb25dPVwidmlld29ubHlBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLXZpZXdvbmx5PlxuIl19
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvZm9ybXMvcmFkaW8tYnV0dG9ucy9yYWRpby1idXR0b25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9yYWRpby1idXR0b25zL3JhZGlvLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFJTixRQUFRLEVBQ1IsTUFBTSxFQUVOLFFBQVEsRUFDUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFHNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENB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bXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7XG4gIGdldEFsaWduLFxuICBnZXREaXNhYmxlZCxcbiAgZ2V0RmlsdGVyLFxuICBnZXRIaW50QWN0aW9uLFxuICBnZXRJc0xhYmVsRGlzYWJsZWQsXG4gIGdldExhYmVsLFxuICBnZXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IGhhc1ZhbGlkYXRpb25LZXkgfSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9oYXMtdmFsaWRhdG9ycy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybU9wdGlvbiwgUWRGb3JtUmFkaW9CdXR0b25zQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZEZvcm1SYWRpb0J1dHRvbnNPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWwvcmFkaW8tYnV0dG9ucyc7XG5pbXBvcnQgeyBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvYWN0aW9uLWVtaXR0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFJhZGlvQnV0dG9uc1NlcnZpY2UgfSBmcm9tICcuL3JhZGlvLWJ1dHRvbnMtc2VydmljZS9yYWRpby1idXR0b25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRFdmVudEJyb2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2V2ZW50LWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkRm9ybVJlc29sdmVkT3B0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZm9ybS1vcHRpb25zLXJlc29sdmVyJztcblxuLyoqXG4gKiBUaGUgKipRZFJhZGlvQnV0dG9ucyoqIGlzIGEgY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgYSBmb3JtIGVsZW1lbnQgZm9yIHJhZGlvIGJ1dHRvbnMuPGJyIC8+XG4gKiBJdCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG9uZSBvcHRpb24gZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4gSXQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIHJhZGlvQnV0dG9uczogbmV3IFFkRm9ybUNvbnRyb2woKVxuICogfSk7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICogICA8cWQtcmFkaW8tYnV0dG9ucyBbZm9ybUNvbnRyb2xOYW1lXT1cInJhZGlvQnV0dG9uc1wiIFtjb25maWddPVwiY29uZmlnXCI+PC9xZC1yYWRpby1idXR0b25zPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZTtcbiAqIGBgYFxuICogYGBgaHRtbFxuICogPHFkLXJhZGlvLWJ1dHRvbnMgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmFkaW8tYnV0dG9ucz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1yYWRpby1idXR0b25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IFFkUmFkaW9CdXR0b25zQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkUmFkaW9CdXR0b25zU2VydmljZSxcbiAgICBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBRZFJhZGlvQnV0dG9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGZvcm0gaXRlbSB2YWx1ZSwgaWYgeW91IGFyZSB3b3JraW5nIHdpdGggTW9kZWwgQmluZGluZy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHFkLXJhZGlvLWJ1dHRvbnMgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmFkaW8tYnV0dG9ucz5cbiAgICovXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZvcm0gaXRlbVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgbGFiZWw6IHsgaTE4bjogJ1FkLUZvcm1zIFJhZGlvIEJ1dHRvbnMnIH0sXG4gICAqICAgYWxpZ246ICdob3Jpem9udGFsJyxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1SYWRpb0J1dHRvbnNDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3JhZGlvLWJ1dHRvbnMnO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZC4gUmV0dXJuIHZhbHVlIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLXJlYWRvbmx5JylcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLXZpZXdvbmx5JylcbiAgdmlld29ubHkgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLWhpbnQtYWN0aW9uJylcbiAgaGludEFjdGlvbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1yZWFkb25seS1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLXZpZXdvbmx5LWFjdGlvbicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYnV0dG9ucy0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXJhZGlvLWJ1dHRvbnMnKVxuICBxZFJhZGlvQnV0dG9ucyA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYWxpZ24tLXZlcnRpY2FsJykgZ2V0IGFsaWduSXNWZXJ0aWNhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGlnbiA9PT0gJ3ZlcnRpY2FsJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYWxpZ24tLWhvcml6b250YWwnKSBnZXQgYWxpZ25Jc0hvcml6b250YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxpZ24gPT09ICdob3Jpem9udGFsJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZm9ybS1lcnJvcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtcmFkaW8tYnV0dG9ucy1lcnJvcicpXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sID8gdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgdGhpcy5jb250cm9sLmludmFsaWQgOiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNIaW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5oaW50ICYmIHRoaXMuY29uZmlnLmhpbnQuaTE4biAmJiAhdGhpcy5jb25maWcuaGludC5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIGhhc1ZhbGlkYXRpb25LZXkodGhpcy5jb250cm9sLCAncmVxdWlyZWQnKTtcbiAgfVxuXG4gIGdldCBhY3RpdmVPcHRpb25Bc0xpc3QoKTogUWRGb3JtT3B0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKG8gPT4gby52YWx1ZSA9PT0gdGhpcy52YWx1ZSk7XG4gIH1cblxuICBsYWJlbDogc3RyaW5nO1xuICBhbGlnbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgZmlsdGVyID0gZmFsc2U7XG4gIG9wdGlvbnM6IFFkRm9ybU9wdGlvbltdO1xuICBpc0xhYmVsRGlzYWJsZWQ6IGJvb2xlYW47XG4gIGlkOiBzdHJpbmc7XG4gIGZpbHRlclJhZGlvQnV0dG9ucyA9ICcnO1xuICByYWRpb0J1dHRvbnNMaXN0Rm9yVmlldzogUWRGb3JtUmFkaW9CdXR0b25zT3B0aW9ucztcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBwcml2YXRlIF9vblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhZGlvQnV0dG9uc1NlcnZpY2U6IFFkUmFkaW9CdXR0b25zU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkVtaXR0ZXJTZXJ2aWNlOiBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEhvc3QoKSBAU2tpcFNlbGYoKSBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2xDb250YWluZXIpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbC5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdRRC1VSSB8IFFkUmFkaW9CdXR0b25zQ29tcG9uZW50IC0gTWlzc2luZyBGb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIGZyb20gaG9zdCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbml0UmFkaW9CdXR0b25MaXN0KCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5pbml0T3BNb2RlU3Vic2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkge1xuICAgICAgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXRPcHRpb25JZChpbmRleCwgb3B0aW9uOiBRZEZvcm1SZXNvbHZlZE9wdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZSArIHRoaXMuaWQ7XG4gIH1cblxuICBoYW5kbGVDbGljayh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLl9vblRvdWNoKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgY2hhbmdlVmFsdWUoJGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5yYWRpb0J1dHRvbnNTZXJ2aWNlLmZpbHRlck9wdGlvbnMoJGV2ZW50KTtcblxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLnJhZGlvQnV0dG9uc0xpc3RGb3JWaWV3ID0gdGhpcy5yYWRpb0J1dHRvbnNTZXJ2aWNlLmdldFJhZGlvQnV0dG9uc0xpc3RGb3JWaWV3KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5hbGlnbiA9IGdldEFsaWduKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMuZmlsdGVyID0gZ2V0RmlsdGVyKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLm9wdGlvbnMgPSBnZXRPcHRpb25zKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmluaXRSYWRpb0J1dHRvbkxpc3QoKTtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLnJlYWRvbmx5ID0gZ2V0UmVhZG9ubHkodGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seUFjdGlvbiA9IGdldFJlYWRvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnZpZXdvbmx5QWN0aW9uID0gZ2V0Vmlld29ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMuaXNMYWJlbERpc2FibGVkID0gZ2V0SXNMYWJlbERpc2FibGVkKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFJhZGlvQnV0dG9uTGlzdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJhZGlvQnV0dG9uc1NlcnZpY2Uuc2V0UmFkaW9CdXR0b25zTGlzdCh0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMucmFkaW9CdXR0b25zU2VydmljZS5zZXRSYWRpb0J1dHRvbnNMaXN0Rm9yVmlldygpO1xuICAgIHRoaXMucmFkaW9CdXR0b25zTGlzdEZvclZpZXcgPSB0aGlzLnJhZGlvQnV0dG9uc1NlcnZpY2UuZ2V0UmFkaW9CdXR0b25zTGlzdEZvclZpZXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgaWYgKG9wdGlvbi5hY3RpdmUpIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRPcE1vZGVTdWJzY3JpcHRpb24oKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKCF0aGlzLmV2ZW50QnJva2VyU2VydmljZSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCcm9rZXJTZXJ2aWNlLmNvbnN1bWU8eyBpc1ZpZXdvbmx5OiBib29sZWFuIH0+KCdvcGVyYXRpb25fbW9kZV9jaGFuZ2VkJykuc3Vic2NyaWJlKHRvcGljID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcudmlld29ubHkgPT09ICdib29sZWFuJykgcmV0dXJuO1xuXG4gICAgICB0aGlzLnZpZXdvbmx5ID0gZ2V0Vmlld29ubHkodGhpcy5jb25maWcsIHRvcGljLnBheWxvYWQuaXNWaWV3b25seSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxxZC1mb3JtLWxhYmVsXG4gIFtsYWJlbF09XCJsYWJlbFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIFt2aWV3b25seV09XCJ2aWV3b25seVwiXG4gIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICBbdG9vbHRpcF09XCJjb25maWc/LnRvb2x0aXBcIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gIFtpc0Rpc2FibGVkXT1cImlzTGFiZWxEaXNhYmxlZFwiXG4+PC9xZC1mb3JtLWxhYmVsPlxuXG48cWQtZmlsdGVyLWZvcm0taXRlbXNcbiAgKm5nSWY9XCJmaWx0ZXJcIlxuICAoZmlsdGVyVmFsdWVDaGFuZ2UpPVwiY2hhbmdlVmFsdWUoJGV2ZW50KVwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1maWx0ZXItZm9ybSdcIlxuPjwvcWQtZmlsdGVyLWZvcm0taXRlbXM+XG5cbjxkaXYgY2xhc3M9XCJxZC1yYWRpby1idXR0b25zX19idXR0b24tc2VjdGlvblwiICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiPlxuICA8bGFiZWxcbiAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHJhZGlvQnV0dG9uc0xpc3RGb3JWaWV3OyB0cmFja0J5OiBnZXRPcHRpb25JZFwiXG4gICAgW2Zvcl09XCJvcHRpb24udmFsdWUgKyBpZFwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAncWQtcmFkaW8tYnV0dG9uc19fbGFiZWwnICtcbiAgICAgIChvcHRpb24uZGlzYWJsZWQgfHwgZGlzYWJsZWQgPyAnIHFkLXJhZGlvLWJ1dHRvbnNfX2xhYmVsLS1kaXNhYmxlZCcgOiAnJykgK1xuICAgICAgKG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUgPyAnIHFkLXJhZGlvLWJ1dHRvbnNfX2xhYmVsLS1jaGVja2VkJyA6ICcnKVxuICAgIFwiXG4gICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctbGFiZWwnXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHFkVmlzdWFsbHlIaWRkZW5cbiAgICAgIFtpZF09XCJvcHRpb24udmFsdWUgKyBpZFwiXG4gICAgICBbbmdDbGFzc109XCIncWQtcmFkaW8tYnV0dG9uc19fcmFkaW8tYnV0dG9uJ1wiXG4gICAgICBbbmFtZV09XCJpZFwiXG4gICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWQgfHwgZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKG9wdGlvbi52YWx1ZSlcIlxuICAgICAgW2NoZWNrZWRdPVwib3B0aW9uLnZhbHVlID09PSB2YWx1ZVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1pbnB1dC0nICsgb3B0aW9uLmkxOG5cIlxuICAgIC8+XG5cbiAgICA8cWQtaWNvbiBjbGFzcz1cInFkLXJhZGlvLWJ1dHRvbnNfX2luZGljYXRvclwiICpuZ0lmPVwib3B0aW9uLnZhbHVlID09PSB2YWx1ZVwiIFtpY29uXT1cIidjaXJjbGVSYWRpbydcIj48L3FkLWljb24+XG4gICAgPHFkLWljb24gY2xhc3M9XCJxZC1yYWRpby1idXR0b25zX19pbmRpY2F0b3JcIiAqbmdJZj1cIm9wdGlvbi52YWx1ZSAhPT0gdmFsdWVcIiBbaWNvbl09XCInY2lyY2xlU29saWQnXCI+PC9xZC1pY29uPlxuXG4gICAgPHNwYW4gW25nQ2xhc3NdPVwiJ3FkLXJhZGlvLWJ1dHRvbnNfX2NhcHRpb24gcWQtaW50ZXJzZWN0aW9uLXRhcmdldCdcIj57eyBvcHRpb24uaTE4biB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbjwvZGl2PlxuXG48cWQtZm9ybS1oaW50XG4gICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seSAmJiAoaGFzSGludCB8fCBoYXNFcnJvcilcIlxuICBbaGludF09XCJoYXNIaW50ID8gY29uZmlnLmhpbnQuaTE4biA6ICcnXCJcbiAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gIFtoaW50QWN0aW9uXT1cImhpbnRBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWhpbnQ+XG5cbjxxZC1mb3JtLXJlYWRvbmx5XG4gICpuZ0lmPVwicmVhZG9ubHlcIlxuICBbdmFsdWVzXT1cImFjdGl2ZU9wdGlvbkFzTGlzdFwiXG4gIFtyZWFkb25seUFjdGlvbl09XCJyZWFkb25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tcmVhZG9ubHk+XG5cbjxxZC1mb3JtLXZpZXdvbmx5XG4gICpuZ0lmPVwidmlld29ubHlcIlxuICBbdmFsdWVzXT1cImFjdGl2ZU9wdGlvbkFzTGlzdFwiXG4gIFt2aWV3b25seUFjdGlvbl09XCJ2aWV3b25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tdmlld29ubHk+XG4iXX0=
@@ -169,7 +169,7 @@ export class QdRichtextComponent {
169
169
  multi: true
170
170
  },
171
171
  QdFormsActionEmitterService
172
- ], ngImport: i0, template: "<div class=\"label-counter-container\">\n <qd-form-label\n *ngIf=\"config?.label\"\n [label]=\"config?.label?.i18n\"\n [readonly]=\"config?.readonly\"\n [viewonly]=\"config?.viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n ></qd-form-label>\n\n <span class=\"character-counter\" *ngIf=\"hasMaxLength\">{{ plainTextValue.length }} / {{ maxLength }}</span>\n</div>\n\n<ng-container *ngIf=\"!config?.readonly && !config?.viewonly\">\n <div class=\"wrapper\">\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"(config?.placeholder?.disabled ? '' : config?.placeholder?.i18n ?? '') | translate\"\n (ngModelChange)=\"change($event)\"\n [attr.data-test-id]=\"testId + '-input'\"\n ></ngx-editor>\n </div>\n\n <qd-form-hint\n *ngIf=\"config?.hint\"\n [data-test-id]=\"testId\"\n [hintAction]=\"config?.hintAction\"\n [hint]=\"config?.hint?.i18n\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n ></qd-form-hint>\n</ng-container>\n\n<ngx-editor\n *ngIf=\"config?.readonly\"\n class=\"richtext-readonly\"\n [class.readonly-action]=\"this.config?.readonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-readonly'\"\n (click)=\"handleReadonly()\"\n></ngx-editor>\n\n<ngx-editor\n *ngIf=\"config?.viewonly\"\n class=\"richtext-viewonly\"\n [class.viewonly-action]=\"this.config?.viewonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-viewonly'\"\n (click)=\"handleViewonly()\"\n></ngx-editor>\n", styles: ["qd-richtext{display:block}qd-richtext .wrapper{border:.0625rem solid rgb(180,180,180);margin-bottom:.375rem;background-color:#fff}qd-richtext .NgxEditor{min-height:8.75rem;border-radius:0;border-right:0;border-bottom:0;border-left:0}qd-richtext.qd-form-disabled .NgxEditor__MenuBar{background-color:#f5f5f5;color:#979797}qd-richtext.qd-form-disabled .NgxEditor__MenuBar .NgxEditor__MenuItem--Active{background-color:#efefef;color:#979797}qd-richtext.qd-form-disabled .NgxEditor{background-color:#f5f5f5;color:#979797}.richtext-readonly .NgxEditor{border-top:0}.richtext-readonly.readonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-readonly.readonly-action .NgxEditor:hover,.richtext-readonly.readonly-action .NgxEditor:active,.richtext-readonly.readonly-action .NgxEditor:focus{text-decoration:underline}.richtext-viewonly .NgxEditor{border-top:0}.richtext-viewonly.viewonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-viewonly.viewonly-action .NgxEditor:hover,.richtext-viewonly.viewonly-action .NgxEditor:active,.richtext-viewonly.viewonly-action .NgxEditor:focus{text-decoration:underline}.character-counter{padding-left:.125rem;color:#757575;font-size:.75rem;font-weight:300;line-height:.75rem}.label-counter-container{display:flex;align-items:center;justify-content:space-between;padding:.25rem .125rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i4.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "component", type: i5.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i6.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
172
+ ], ngImport: i0, template: "<div class=\"label-counter-container\">\n <qd-form-label\n *ngIf=\"config?.label\"\n [label]=\"config?.label?.i18n\"\n [readonly]=\"config?.readonly\"\n [viewonly]=\"config?.viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n ></qd-form-label>\n\n <span class=\"character-counter\" *ngIf=\"hasMaxLength\">{{ plainTextValue.length }} / {{ maxLength }}</span>\n</div>\n\n<ng-container *ngIf=\"!config?.readonly && !config?.viewonly\">\n <div class=\"wrapper\">\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"(config?.placeholder?.disabled ? '' : config?.placeholder?.i18n ?? '') | translate\"\n (ngModelChange)=\"change($event)\"\n [attr.data-test-id]=\"testId + '-input'\"\n ></ngx-editor>\n </div>\n\n <qd-form-hint\n *ngIf=\"config?.hint || hasError\"\n [data-test-id]=\"testId\"\n [hintAction]=\"config?.hintAction\"\n [hint]=\"config?.hint?.i18n\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n ></qd-form-hint>\n</ng-container>\n\n<ngx-editor\n *ngIf=\"config?.readonly\"\n class=\"richtext-readonly\"\n [class.readonly-action]=\"this.config?.readonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-readonly'\"\n (click)=\"handleReadonly()\"\n></ngx-editor>\n\n<ngx-editor\n *ngIf=\"config?.viewonly\"\n class=\"richtext-viewonly\"\n [class.viewonly-action]=\"this.config?.viewonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-viewonly'\"\n (click)=\"handleViewonly()\"\n></ngx-editor>\n", styles: ["qd-richtext{display:block}qd-richtext .wrapper{border:.0625rem solid rgb(180,180,180);margin-bottom:.375rem;background-color:#fff}qd-richtext .NgxEditor{min-height:8.75rem;border-radius:0;border-right:0;border-bottom:0;border-left:0}qd-richtext.qd-form-disabled .NgxEditor__MenuBar{background-color:#f5f5f5;color:#979797}qd-richtext.qd-form-disabled .NgxEditor__MenuBar .NgxEditor__MenuItem--Active{background-color:#efefef;color:#979797}qd-richtext.qd-form-disabled .NgxEditor{background-color:#f5f5f5;color:#979797}.richtext-readonly .NgxEditor{border-top:0}.richtext-readonly.readonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-readonly.readonly-action .NgxEditor:hover,.richtext-readonly.readonly-action .NgxEditor:active,.richtext-readonly.readonly-action .NgxEditor:focus{text-decoration:underline}.richtext-viewonly .NgxEditor{border-top:0}.richtext-viewonly.viewonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-viewonly.viewonly-action .NgxEditor:hover,.richtext-viewonly.viewonly-action .NgxEditor:active,.richtext-viewonly.viewonly-action .NgxEditor:focus{text-decoration:underline}.character-counter{padding-left:.125rem;color:#757575;font-size:.75rem;font-weight:300;line-height:.75rem}.label-counter-container{display:flex;align-items:center;justify-content:space-between;padding:.25rem .125rem}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i4.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "component", type: i5.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i6.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
173
173
  }
174
174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdRichtextComponent, decorators: [{
175
175
  type: Component,
@@ -180,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
180
180
  multi: true
181
181
  },
182
182
  QdFormsActionEmitterService
183
- ], encapsulation: ViewEncapsulation.None, template: "<div class=\"label-counter-container\">\n <qd-form-label\n *ngIf=\"config?.label\"\n [label]=\"config?.label?.i18n\"\n [readonly]=\"config?.readonly\"\n [viewonly]=\"config?.viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n ></qd-form-label>\n\n <span class=\"character-counter\" *ngIf=\"hasMaxLength\">{{ plainTextValue.length }} / {{ maxLength }}</span>\n</div>\n\n<ng-container *ngIf=\"!config?.readonly && !config?.viewonly\">\n <div class=\"wrapper\">\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"(config?.placeholder?.disabled ? '' : config?.placeholder?.i18n ?? '') | translate\"\n (ngModelChange)=\"change($event)\"\n [attr.data-test-id]=\"testId + '-input'\"\n ></ngx-editor>\n </div>\n\n <qd-form-hint\n *ngIf=\"config?.hint\"\n [data-test-id]=\"testId\"\n [hintAction]=\"config?.hintAction\"\n [hint]=\"config?.hint?.i18n\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n ></qd-form-hint>\n</ng-container>\n\n<ngx-editor\n *ngIf=\"config?.readonly\"\n class=\"richtext-readonly\"\n [class.readonly-action]=\"this.config?.readonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-readonly'\"\n (click)=\"handleReadonly()\"\n></ngx-editor>\n\n<ngx-editor\n *ngIf=\"config?.viewonly\"\n class=\"richtext-viewonly\"\n [class.viewonly-action]=\"this.config?.viewonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-viewonly'\"\n (click)=\"handleViewonly()\"\n></ngx-editor>\n", styles: ["qd-richtext{display:block}qd-richtext .wrapper{border:.0625rem solid rgb(180,180,180);margin-bottom:.375rem;background-color:#fff}qd-richtext .NgxEditor{min-height:8.75rem;border-radius:0;border-right:0;border-bottom:0;border-left:0}qd-richtext.qd-form-disabled .NgxEditor__MenuBar{background-color:#f5f5f5;color:#979797}qd-richtext.qd-form-disabled .NgxEditor__MenuBar .NgxEditor__MenuItem--Active{background-color:#efefef;color:#979797}qd-richtext.qd-form-disabled .NgxEditor{background-color:#f5f5f5;color:#979797}.richtext-readonly .NgxEditor{border-top:0}.richtext-readonly.readonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-readonly.readonly-action .NgxEditor:hover,.richtext-readonly.readonly-action .NgxEditor:active,.richtext-readonly.readonly-action .NgxEditor:focus{text-decoration:underline}.richtext-viewonly .NgxEditor{border-top:0}.richtext-viewonly.viewonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-viewonly.viewonly-action .NgxEditor:hover,.richtext-viewonly.viewonly-action .NgxEditor:active,.richtext-viewonly.viewonly-action .NgxEditor:focus{text-decoration:underline}.character-counter{padding-left:.125rem;color:#757575;font-size:.75rem;font-weight:300;line-height:.75rem}.label-counter-container{display:flex;align-items:center;justify-content:space-between;padding:.25rem .125rem}\n"] }]
183
+ ], encapsulation: ViewEncapsulation.None, template: "<div class=\"label-counter-container\">\n <qd-form-label\n *ngIf=\"config?.label\"\n [label]=\"config?.label?.i18n\"\n [readonly]=\"config?.readonly\"\n [viewonly]=\"config?.viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n ></qd-form-label>\n\n <span class=\"character-counter\" *ngIf=\"hasMaxLength\">{{ plainTextValue.length }} / {{ maxLength }}</span>\n</div>\n\n<ng-container *ngIf=\"!config?.readonly && !config?.viewonly\">\n <div class=\"wrapper\">\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"toolbar\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"isDisabled\"\n [placeholder]=\"(config?.placeholder?.disabled ? '' : config?.placeholder?.i18n ?? '') | translate\"\n (ngModelChange)=\"change($event)\"\n [attr.data-test-id]=\"testId + '-input'\"\n ></ngx-editor>\n </div>\n\n <qd-form-hint\n *ngIf=\"config?.hint || hasError\"\n [data-test-id]=\"testId\"\n [hintAction]=\"config?.hintAction\"\n [hint]=\"config?.hint?.i18n\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n ></qd-form-hint>\n</ng-container>\n\n<ngx-editor\n *ngIf=\"config?.readonly\"\n class=\"richtext-readonly\"\n [class.readonly-action]=\"this.config?.readonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-readonly'\"\n (click)=\"handleReadonly()\"\n></ngx-editor>\n\n<ngx-editor\n *ngIf=\"config?.viewonly\"\n class=\"richtext-viewonly\"\n [class.viewonly-action]=\"this.config?.viewonlyAction\"\n [editor]=\"editor\"\n [ngModel]=\"value\"\n [disabled]=\"true\"\n [attr.data-test-id]=\"testId + '-input-viewonly'\"\n (click)=\"handleViewonly()\"\n></ngx-editor>\n", styles: ["qd-richtext{display:block}qd-richtext .wrapper{border:.0625rem solid rgb(180,180,180);margin-bottom:.375rem;background-color:#fff}qd-richtext .NgxEditor{min-height:8.75rem;border-radius:0;border-right:0;border-bottom:0;border-left:0}qd-richtext.qd-form-disabled .NgxEditor__MenuBar{background-color:#f5f5f5;color:#979797}qd-richtext.qd-form-disabled .NgxEditor__MenuBar .NgxEditor__MenuItem--Active{background-color:#efefef;color:#979797}qd-richtext.qd-form-disabled .NgxEditor{background-color:#f5f5f5;color:#979797}.richtext-readonly .NgxEditor{border-top:0}.richtext-readonly.readonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-readonly.readonly-action .NgxEditor:hover,.richtext-readonly.readonly-action .NgxEditor:active,.richtext-readonly.readonly-action .NgxEditor:focus{text-decoration:underline}.richtext-viewonly .NgxEditor{border-top:0}.richtext-viewonly.viewonly-action .NgxEditor{color:#069;cursor:pointer}.richtext-viewonly.viewonly-action .NgxEditor:hover,.richtext-viewonly.viewonly-action .NgxEditor:active,.richtext-viewonly.viewonly-action .NgxEditor:focus{text-decoration:underline}.character-counter{padding-left:.125rem;color:#757575;font-size:.75rem;font-weight:300;line-height:.75rem}.label-counter-container{display:flex;align-items:center;justify-content:space-between;padding:.25rem .125rem}\n"] }]
184
184
  }], ctorParameters: () => [{ type: i1.ControlContainer, decorators: [{
185
185
  type: Optional
186
186
  }, {
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
211
211
  type: HostBinding,
212
212
  args: ['class.qd-form-disabled']
213
213
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaHRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3JpY2h0ZXh0L3JpY2h0ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9yaWNodGV4dC9yaWNodGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7QUFFeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBZUgsTUFBTSxPQUFPLG1CQUFtQjtJQW9GcUI7SUFDaEM7SUFwRm5COztPQUVHO0lBQ00sZUFBZSxDQUFVO0lBRWxDOzs7OztPQUtHO0lBQ00sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUVwQjs7Ozs7Ozs7Ozs7O09BWUc7SUFDTSxNQUFNLENBQW9CO0lBRW5DOzs7T0FHRztJQUNvQixNQUFNLEdBQUcsVUFBVSxDQUFDO0lBRTNDOztPQUVHO0lBQ2dCLFdBQVcsR0FBRyxJ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Q1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLG1CQUFtQjtnQkFDaEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELDJCQUEyQjtTQUM1QiwwQkM1REgsZ3hEQTBEQTs7MkZES2EsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLGFBQWEsYUFHWjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjs0QkFDaEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsMkJBQTJCO3FCQUM1QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFzRmxDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVE7bUZBaEZ0QixlQUFlO3NCQUF2QixLQUFLO2dCQVFHLEtBQUs7c0JBQWIsS0FBSztnQkFlRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTWlCLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFLRixXQUFXO3NCQUE3QixNQUFNO2dCQUtZLFNBQVM7c0JBQTNCLE1BQU07Z0JBS1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFLWSxhQUFhO3NCQUEvQixNQUFNO2dCQUdILFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBTTlCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVkaXRvciwgVG9vbGJhciB9IGZyb20gJ25neC1lZGl0b3InO1xuaW1wb3J0IHsgZ2V0UGxhaW5UZXh0RnJvbUh0bWwgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2h0bWwtcGxhaW50ZXh0LmhlbHBlcic7XG5cbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmljaHRleHRDb25maWcgfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtQ29udHJvbCB9IGZyb20gJy4uL3JlYWN0aXZlLWZvcm1zL2NvbnRyb2xzL2Zvcm0tY29udHJvbCc7XG5cbi8qKlxuICogKipRZFJpY2h0ZXh0KiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQuXG4gKiBUaGUgKipRZFJpY2h0ZXh0KiogaXMgYSBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3IgYSByaWNodGV4dCBlZGl0b3IuPGJyIC8+XG4gKiBJdCBzdXBwb3J0cyBib2xkLCBpdGFsaWMsIHVuZGVybGluZSwgc3RyaWtlLCBidWxsZXQgcG9pbnRzIGFuZCBvcmRlcmVkIGxpc3QuXG4gKiBJdCBjYW4gYmUgdXNlZCB3aXRoIFF1YWRyZWwgUmVhY3RpdmUgRm9ybXMgb3Igd2l0aCBtb2RlbCBiaW5kaW5nLlxuICpcbiAqICMjIyMqKlVzYWdlIHdpdGggUmVhY3RpdmUgRm9ybXMqKlxuICpcbiAqIGBgYHRzXG4gKiBmb3JtID0gbmV3IFFkRm9ybUdyb3VwKHtcbiAqICAgcmljaHRleHQ6IG5ldyBRZEZvcm1Db250cm9sKClcbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXJpY2h0ZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicmljaHRleHRcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmljaHRleHQ+XG4gKiA8L2Zvcm0+XG4gKiBgYGBcbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIE1vZGVsIEJpbmRpbmcqKlxuICogYGBgdHNcbiAqIHZhbHVlO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8cWQtcmljaHRleHQgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmljaHRleHQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWQtcmljaHRleHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmljaHRleHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yaWNodGV4dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBRZFJpY2h0ZXh0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFFkUmljaHRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBpdGVtIHZhbHVlLCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBNb2RlbCBCaW5kaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiA8cWQtcmljaHRleHQgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmljaHRleHQ+XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdRZC1Gb3JtcyBSaWNodGV4dCcgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICogICBwbGFjZWhvbGRlcjoge1xuICAgKiAgICAgaTE4bjogJ3dyaXRlIHNvbWV0aGluZy4uLidcbiAgICogICB9XG4gICAqIH07XG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBRZFJpY2h0ZXh0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZCA9ICdyaWNodGV4dCc7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuIFJldHVybiB2YWx1ZSBtYXRjaGVzIHRoZSBjdXJyZW50IGh0bWwgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2aWV3b25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrVmlld29ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC50b3VjaGVkICYmIHRoaXMuY29udHJvbC5pbnZhbGlkIDogZmFsc2U7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnPy5kaXNhYmxlZCA/PyBmYWxzZSkgfHwgKHRoaXMuY29udHJvbD8uZGlzYWJsZWQgPz8gZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFpbiB0ZXh0IHZhbHVlIHN0cmlwcGVkIG9mIGh0bWwgdGFnc1xuICAgKi9cbiAgcGxhaW5UZXh0VmFsdWUgPSAnJztcblxuICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgdG9vbGJhcjogVG9vbGJhciA9IFtcbiAgICBbJ2JvbGQnLCAnaXRhbGljJ10sXG4gICAgWyd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sXG4gICAgWydvcmRlcmVkX2xpc3QnLCAnYnVsbGV0X2xpc3QnXVxuICBdO1xuXG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2VkOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkVtaXR0ZXJTZXJ2aWNlOiBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKHt9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2xDb250YWluZXIpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbD8uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1FELVVJIHwgUWRTd2l0Y2hlc0NvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UuaGludEV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tIaW50LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UucmVhZG9ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrUmVhZG9ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS52aWV3b25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIFFkRm9ybUNvbnRyb2wgPyB0aGlzLmNvbnRyb2wuZ2V0TWF4TGVuZ3RoT3JVbmRlZmluZWQoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBoYXNNYXhMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIFFkRm9ybUNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmhhc01heExlbmd0aCgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBjaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlZCh2YWx1ZSk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5wbGFpblRleHRWYWx1ZSA9IGdldFBsYWluVGV4dEZyb21IdG1sKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVSZWFkb25seSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWc/LnJlYWRvbmx5ICYmIHRoaXMuY29uZmlnPy5yZWFkb25seUFjdGlvbikgdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKTtcbiAgfVxuXG4gIGhhbmRsZVZpZXdvbmx5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZz8udmlld29ubHkgJiYgdGhpcy5jb25maWc/LnZpZXdvbmx5QWN0aW9uKSB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGFiZWwtY291bnRlci1jb250YWluZXJcIj5cbiAgPHFkLWZvcm0tbGFiZWxcbiAgICAqbmdJZj1cImNvbmZpZz8ubGFiZWxcIlxuICAgIFtsYWJlbF09XCJjb25maWc/LmxhYmVsPy5pMThuXCJcbiAgICBbcmVhZG9ubHldPVwiY29uZmlnPy5yZWFkb25seVwiXG4gICAgW3ZpZXdvbmx5XT1cImNvbmZpZz8udmlld29ubHlcIlxuICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICAgIFt0b29sdGlwXT1cImNvbmZpZz8udG9vbHRpcFwiXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICA+PC9xZC1mb3JtLWxhYmVsPlxuXG4gIDxzcGFuIGNsYXNzPVwiY2hhcmFjdGVyLWNvdW50ZXJcIiAqbmdJZj1cImhhc01heExlbmd0aFwiPnt7IHBsYWluVGV4dFZhbHVlLmxlbmd0aCB9fSAvIHt7IG1heExlbmd0aCB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbmZpZz8ucmVhZG9ubHkgJiYgIWNvbmZpZz8udmlld29ubHlcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8bmd4LWVkaXRvci1tZW51IFtlZGl0b3JdPVwiZWRpdG9yXCIgW3Rvb2xiYXJdPVwidG9vbGJhclwiPiA8L25neC1lZGl0b3ItbWVudT5cbiAgICA8bmd4LWVkaXRvclxuICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIihjb25maWc/LnBsYWNlaG9sZGVyPy5kaXNhYmxlZCA/ICcnIDogY29uZmlnPy5wbGFjZWhvbGRlcj8uaTE4biA/PyAnJykgfCB0cmFuc2xhdGVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctaW5wdXQnXCJcbiAgICA+PC9uZ3gtZWRpdG9yPlxuICA8L2Rpdj5cblxuICA8cWQtZm9ybS1oaW50XG4gICAgKm5nSWY9XCJjb25maWc/LmhpbnRcIlxuICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICBbaGludEFjdGlvbl09XCJjb25maWc/LmhpbnRBY3Rpb25cIlxuICAgIFtoaW50XT1cImNvbmZpZz8uaGludD8uaTE4blwiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgPjwvcWQtZm9ybS1oaW50PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZ3gtZWRpdG9yXG4gICpuZ0lmPVwiY29uZmlnPy5yZWFkb25seVwiXG4gIGNsYXNzPVwicmljaHRleHQtcmVhZG9ubHlcIlxuICBbY2xhc3MucmVhZG9ubHktYWN0aW9uXT1cInRoaXMuY29uZmlnPy5yZWFkb25seUFjdGlvblwiXG4gIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgW25nTW9kZWxdPVwidmFsdWVcIlxuICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWlucHV0LXJlYWRvbmx5J1wiXG4gIChjbGljayk9XCJoYW5kbGVSZWFkb25seSgpXCJcbj48L25neC1lZGl0b3I+XG5cbjxuZ3gtZWRpdG9yXG4gICpuZ0lmPVwiY29uZmlnPy52aWV3b25seVwiXG4gIGNsYXNzPVwicmljaHRleHQtdmlld29ubHlcIlxuICBbY2xhc3Mudmlld29ubHktYWN0aW9uXT1cInRoaXMuY29uZmlnPy52aWV3b25seUFjdGlvblwiXG4gIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgW25nTW9kZWxdPVwidmFsdWVcIlxuICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWlucHV0LXZpZXdvbmx5J1wiXG4gIChjbGljayk9XCJoYW5kbGVWaWV3b25seSgpXCJcbj48L25neC1lZGl0b3I+XG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaHRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3JpY2h0ZXh0L3JpY2h0ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9yaWNodGV4dC9yaWNodGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osV0FBVyxFQUNYLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFDUixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixnQkFBZ0IsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQVcsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFM0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7QUFFeEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBZUgsTUFBTSxPQUFPLG1CQUFtQjtJQW9GcUI7SUFDaEM7SUFwRm5COztPQUVHO0lBQ00sZUFBZSxDQUFVO0lBRWxDOzs7OztPQUtHO0lBQ00sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUVwQjs7Ozs7Ozs7Ozs7O09BWUc7SUFDTSxNQUFNLENBQW9CO0lBRW5DOzs7T0FHRztJQUNvQixNQUFNLEdBQUcsVUFBVSxDQUFDO0lBRTNDOztPQUVHO0lBQ2dCLFdBQVcsR0FBRyxJ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Q1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLG1CQUFtQjtnQkFDaEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELDJCQUEyQjtTQUM1QiwwQkM1REgsNHhEQTBEQTs7MkZES2EsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLGFBQWEsYUFHWjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjs0QkFDaEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsMkJBQTJCO3FCQUM1QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFzRmxDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLFFBQVE7bUZBaEZ0QixlQUFlO3NCQUF2QixLQUFLO2dCQVFHLEtBQUs7c0JBQWIsS0FBSztnQkFlRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTWlCLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFLRixXQUFXO3NCQUE3QixNQUFNO2dCQUtZLFNBQVM7c0JBQTNCLE1BQU07Z0JBS1ksYUFBYTtzQkFBL0IsTUFBTTtnQkFLWSxhQUFhO3NCQUEvQixNQUFNO2dCQUdILFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBTTlCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVkaXRvciwgVG9vbGJhciB9IGZyb20gJ25neC1lZGl0b3InO1xuaW1wb3J0IHsgZ2V0UGxhaW5UZXh0RnJvbUh0bWwgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2h0bWwtcGxhaW50ZXh0LmhlbHBlcic7XG5cbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmljaHRleHRDb25maWcgfSBmcm9tICcuLi9tb2RlbC9mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtQ29udHJvbCB9IGZyb20gJy4uL3JlYWN0aXZlLWZvcm1zL2NvbnRyb2xzL2Zvcm0tY29udHJvbCc7XG5cbi8qKlxuICogKipRZFJpY2h0ZXh0KiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQuXG4gKiBUaGUgKipRZFJpY2h0ZXh0KiogaXMgYSBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3IgYSByaWNodGV4dCBlZGl0b3IuPGJyIC8+XG4gKiBJdCBzdXBwb3J0cyBib2xkLCBpdGFsaWMsIHVuZGVybGluZSwgc3RyaWtlLCBidWxsZXQgcG9pbnRzIGFuZCBvcmRlcmVkIGxpc3QuXG4gKiBJdCBjYW4gYmUgdXNlZCB3aXRoIFF1YWRyZWwgUmVhY3RpdmUgRm9ybXMgb3Igd2l0aCBtb2RlbCBiaW5kaW5nLlxuICpcbiAqICMjIyMqKlVzYWdlIHdpdGggUmVhY3RpdmUgRm9ybXMqKlxuICpcbiAqIGBgYHRzXG4gKiBmb3JtID0gbmV3IFFkRm9ybUdyb3VwKHtcbiAqICAgcmljaHRleHQ6IG5ldyBRZEZvcm1Db250cm9sKClcbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXJpY2h0ZXh0IFtmb3JtQ29udHJvbE5hbWVdPVwicmljaHRleHRcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmljaHRleHQ+XG4gKiA8L2Zvcm0+XG4gKiBgYGBcbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIE1vZGVsIEJpbmRpbmcqKlxuICogYGBgdHNcbiAqIHZhbHVlO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8cWQtcmljaHRleHQgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmljaHRleHQ+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWQtcmljaHRleHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmljaHRleHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yaWNodGV4dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBRZFJpY2h0ZXh0Q29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFFkUmljaHRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZm9ybSBjb250cm9sIG5hbWUgY2FuIGJlIGFzc2lnbmVkIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIFJlYWN0aXZlIEZvcm1zLlxuICAgKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBpdGVtIHZhbHVlLCBpZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBNb2RlbCBCaW5kaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiA8cWQtcmljaHRleHQgWyh2YWx1ZSldPVwidmFsdWVcIiBbY29uZmlnXT1cImNvbmZpZ1wiPjwvcWQtcmljaHRleHQ+XG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdRZC1Gb3JtcyBSaWNodGV4dCcgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICogICBwbGFjZWhvbGRlcjoge1xuICAgKiAgICAgaTE4bjogJ3dyaXRlIHNvbWV0aGluZy4uLidcbiAgICogICB9XG4gICAqIH07XG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBRZFJpY2h0ZXh0Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZCA9ICdyaWNodGV4dCc7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuIFJldHVybiB2YWx1ZSBtYXRjaGVzIHRoZSBjdXJyZW50IGh0bWwgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgY2xpY2tSZWFkb25seSBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1JlYWRvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB2aWV3b25seSB2YWx1ZSBpcyBjbGlja2VkL3RhcHBlZC4gYGNsaWNrVmlld29ubHkgYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tWaWV3b25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCA/IHRoaXMuY29udHJvbC50b3VjaGVkICYmIHRoaXMuY29udHJvbC5pbnZhbGlkIDogZmFsc2U7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZGlzYWJsZWQnKVxuICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnPy5kaXNhYmxlZCA/PyBmYWxzZSkgfHwgKHRoaXMuY29udHJvbD8uZGlzYWJsZWQgPz8gZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFpbiB0ZXh0IHZhbHVlIHN0cmlwcGVkIG9mIGh0bWwgdGFnc1xuICAgKi9cbiAgcGxhaW5UZXh0VmFsdWUgPSAnJztcblxuICBjb250cm9sPzogQWJzdHJhY3RDb250cm9sO1xuICBlZGl0b3I6IEVkaXRvcjtcbiAgdG9vbGJhcjogVG9vbGJhciA9IFtcbiAgICBbJ2JvbGQnLCAnaXRhbGljJ10sXG4gICAgWyd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sXG4gICAgWydvcmRlcmVkX2xpc3QnLCAnYnVsbGV0X2xpc3QnXVxuICBdO1xuXG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBfb25DaGFuZ2VkOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbkVtaXR0ZXJTZXJ2aWNlOiBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgRWRpdG9yKHt9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2xDb250YWluZXIpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXIuY29udHJvbD8uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1FELVVJIHwgUWRTd2l0Y2hlc0NvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UuaGludEV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tIaW50LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2UucmVhZG9ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrUmVhZG9ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5hY3Rpb25FbWl0dGVyU2VydmljZS52aWV3b25seUV2ZW50RW1pdHRlciQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xpY2tWaWV3b25seS5lbWl0KCkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXQgbWF4TGVuZ3RoKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIFFkRm9ybUNvbnRyb2wgPyB0aGlzLmNvbnRyb2wuZ2V0TWF4TGVuZ3RoT3JVbmRlZmluZWQoKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBoYXNNYXhMZW5ndGgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIFFkRm9ybUNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmhhc01heExlbmd0aCgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VkID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBjaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlZCh2YWx1ZSk7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5wbGFpblRleHRWYWx1ZSA9IGdldFBsYWluVGV4dEZyb21IdG1sKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVSZWFkb25seSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWc/LnJlYWRvbmx5ICYmIHRoaXMuY29uZmlnPy5yZWFkb25seUFjdGlvbikgdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKTtcbiAgfVxuXG4gIGhhbmRsZVZpZXdvbmx5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZz8udmlld29ubHkgJiYgdGhpcy5jb25maWc/LnZpZXdvbmx5QWN0aW9uKSB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGFiZWwtY291bnRlci1jb250YWluZXJcIj5cbiAgPHFkLWZvcm0tbGFiZWxcbiAgICAqbmdJZj1cImNvbmZpZz8ubGFiZWxcIlxuICAgIFtsYWJlbF09XCJjb25maWc/LmxhYmVsPy5pMThuXCJcbiAgICBbcmVhZG9ubHldPVwiY29uZmlnPy5yZWFkb25seVwiXG4gICAgW3ZpZXdvbmx5XT1cImNvbmZpZz8udmlld29ubHlcIlxuICAgIFtjb250cm9sXT1cImNvbnRyb2xcIlxuICAgIFt0b29sdGlwXT1cImNvbmZpZz8udG9vbHRpcFwiXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICA+PC9xZC1mb3JtLWxhYmVsPlxuXG4gIDxzcGFuIGNsYXNzPVwiY2hhcmFjdGVyLWNvdW50ZXJcIiAqbmdJZj1cImhhc01heExlbmd0aFwiPnt7IHBsYWluVGV4dFZhbHVlLmxlbmd0aCB9fSAvIHt7IG1heExlbmd0aCB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbmZpZz8ucmVhZG9ubHkgJiYgIWNvbmZpZz8udmlld29ubHlcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8bmd4LWVkaXRvci1tZW51IFtlZGl0b3JdPVwiZWRpdG9yXCIgW3Rvb2xiYXJdPVwidG9vbGJhclwiPiA8L25neC1lZGl0b3ItbWVudT5cbiAgICA8bmd4LWVkaXRvclxuICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIihjb25maWc/LnBsYWNlaG9sZGVyPy5kaXNhYmxlZCA/ICcnIDogY29uZmlnPy5wbGFjZWhvbGRlcj8uaTE4biA/PyAnJykgfCB0cmFuc2xhdGVcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKCRldmVudClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctaW5wdXQnXCJcbiAgICA+PC9uZ3gtZWRpdG9yPlxuICA8L2Rpdj5cblxuICA8cWQtZm9ybS1oaW50XG4gICAgKm5nSWY9XCJjb25maWc/LmhpbnQgfHwgaGFzRXJyb3JcIlxuICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICBbaGludEFjdGlvbl09XCJjb25maWc/LmhpbnRBY3Rpb25cIlxuICAgIFtoaW50XT1cImNvbmZpZz8uaGludD8uaTE4blwiXG4gICAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgPjwvcWQtZm9ybS1oaW50PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZ3gtZWRpdG9yXG4gICpuZ0lmPVwiY29uZmlnPy5yZWFkb25seVwiXG4gIGNsYXNzPVwicmljaHRleHQtcmVhZG9ubHlcIlxuICBbY2xhc3MucmVhZG9ubHktYWN0aW9uXT1cInRoaXMuY29uZmlnPy5yZWFkb25seUFjdGlvblwiXG4gIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgW25nTW9kZWxdPVwidmFsdWVcIlxuICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWlucHV0LXJlYWRvbmx5J1wiXG4gIChjbGljayk9XCJoYW5kbGVSZWFkb25seSgpXCJcbj48L25neC1lZGl0b3I+XG5cbjxuZ3gtZWRpdG9yXG4gICpuZ0lmPVwiY29uZmlnPy52aWV3b25seVwiXG4gIGNsYXNzPVwicmljaHRleHQtdmlld29ubHlcIlxuICBbY2xhc3Mudmlld29ubHktYWN0aW9uXT1cInRoaXMuY29uZmlnPy52aWV3b25seUFjdGlvblwiXG4gIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgW25nTW9kZWxdPVwidmFsdWVcIlxuICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWlucHV0LXZpZXdvbmx5J1wiXG4gIChjbGljayk9XCJoYW5kbGVWaWV3b25seSgpXCJcbj48L25neC1lZGl0b3I+XG4iXX0=
@@ -225,7 +225,7 @@ export class QdSwitchesComponent {
225
225
  },
226
226
  QdSwitchesService,
227
227
  QdFormsActionEmitterService
228
- ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i7.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i8.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i9.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "component", type: i10.QdSwitchComponent, selector: "qd-switch", inputs: ["inputData", "id", "disabled", "data-test-id"], outputs: ["valueChange"] }], encapsulation: i0.ViewEncapsulation.None });
228
+ ], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hasHint || hasError)\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: i7.QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: i8.QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: i9.QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }, { kind: "component", type: i10.QdSwitchComponent, selector: "qd-switch", inputs: ["inputData", "id", "disabled", "data-test-id"], outputs: ["valueChange"] }], encapsulation: i0.ViewEncapsulation.None });
229
229
  }
230
230
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdSwitchesComponent, decorators: [{
231
231
  type: Component,
@@ -237,7 +237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
237
237
  },
238
238
  QdSwitchesService,
239
239
  QdFormsActionEmitterService
240
- ], encapsulation: ViewEncapsulation.None, host: { class: 'qd-switches' }, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"] }]
240
+ ], encapsulation: ViewEncapsulation.None, host: { class: 'qd-switches' }, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<div class=\"qd-switches__input-section\" *ngIf=\"!readonly && !viewonly\">\n <div class=\"qd-switches__switch-section\">\n <qd-switch\n *ngFor=\"let input of switchesInputs\"\n [inputData]=\"input\"\n (click)=\"handleClick(input)\"\n [data-test-id]=\"testId + '-switch-' + input.index\"\n [disabled]=\"disabled\"\n ></qd-switch>\n </div>\n</div>\n\n<qd-form-hint\n *ngIf=\"!readonly && !viewonly && (hasHint || hasError)\"\n [hint]=\"hasHint ? config.hint.i18n : ''\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n></qd-form-hint>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"selectedValuesTranslated\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"selectedValuesTranslated\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [".qd-switches{display:block;flex-direction:column;margin-bottom:.75rem}.qd-switches .qd-switches__input-section{display:flex;flex-direction:column;margin-bottom:.375rem}.qd-switches .qd-switches__switch-section{display:flex;flex-direction:row}.qd-switches .qd-switches__switch-section .switch-toggle-bar{margin-right:.375rem}.qd-switches .qd-switches__switch-section .switch-content{margin:0 1rem 0 0}.qd-switches qd-switch:last-child .switch-content{margin-right:0}.qd-switches.qd-switches-vertical .qd-switches__switch-section{display:flex;flex-direction:column}.qd-switches.qd-switches-vertical .qd-switches__switch-section .qd-switch:not(:last-child){margin-bottom:.5rem}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section{align-items:center}.qd-switches:not(.qd-switches-vertical) .qd-switches__switch-section .qd-switch{display:flex;height:2.25rem}\n"] }]
241
241
  }], ctorParameters: () => [{ type: i1.QdSwitchesService }, { type: i0.ChangeDetectorRef }, { type: i2.QdFormsActionEmitterService }, { type: i3.ControlContainer, decorators: [{
242
242
  type: Optional
243
243
  }, {
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
297
297
  type: HostBinding,
298
298
  args: ['class.qd-switches-hint']
299
299
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3N3aXRjaGVzL3N3aXRjaGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2hlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sUUFBUSxFQUNSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEMsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7OztBQUdoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztH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UCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFJakQsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFLMUMsVUFBVTtzQkFGaEIsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxXQUFXO3VCQUFDLGdDQUFnQztnQkFJN0MsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLakMsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLFdBQVc7dUJBQUMseUJBQXlCO2dCQU1sQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsNEJBQTRCO2dCQU1yQyxPQUFPO3NCQURWLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTa2lwU2VsZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBRZEZvcm1PcHRpb24sIFFkRm9ybVN3aXRjaGVzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBnZXRBbGlnbixcbiAgZ2V0RGlzYWJsZWQsXG4gIGdldEhpbnRBY3Rpb24sXG4gIGdldExhYmVsLFxuICBnZXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IGhhc1ZhbGlkYXRpb25LZXkgfSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9oYXMtdmFsaWRhdG9ycy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoZXNTZXJ2aWNlIH0gZnJvbSAnLi9zd2l0Y2hlcy1zZXJ2aWNlL3N3aXRjaGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRFdmVudEJyb2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2V2ZW50LWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoSW5wdXQgfSBmcm9tICcuLi9tb2RlbC9vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogKipRZFN3aXRjaGVzKiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQuXG4gKiBUaGUgKipRZFN3aXRjaGVzKiogaXMgYSBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3Igc3dpdGNoZXMuPGJyIC8+XG4gKiBJdCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG11bHRpcGxlIG9wdGlvbnMgZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4gSXQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIHN3aXRjaGVzOiBuZXcgUWRGb3JtQ29udHJvbChbXSkgLy8gYXQgbGVhc3QgYW4gZW1wdHkgYXJyYXkgdG8gcHJldmVudCBydW50aW1lIGVycm9ycy5cbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXN3aXRjaGVzIGZvcm1Db250cm9sTmFtZT1cInN3aXRjaGVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZXM7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXN3aXRjaGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWRTd2l0Y2hlc0NvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICBRZFN3aXRjaGVzU2VydmljZSxcbiAgICBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3FkLXN3aXRjaGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkU3dpdGNoZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBmb3JtIGNvbnRyb2wgbmFtZSBjYW4gYmUgYXNzaWduZWQgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgUmVhY3RpdmUgRm9ybXMuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gaXRlbSB2YWx1ZXMsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIE1vZGVsIEJpbmRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdRZC1Gb3JtcyBTd2l0Y2hlcycgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1Td2l0Y2hlc0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3N3aXRjaGVzJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmFsdWVzIGNoYW5nZS4gUmV0dXJuIHZhbHVlcyBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgcmVhZG9ubHlBY3Rpb24gYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tSZWFkb25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGB2aWV3b25seUFjdGlvbiBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1ZpZXdvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tcmVhZG9ubHknKVxuICByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi12aWV3b25seScpXG4gIHZpZXdvbmx5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLS1oaW50LWFjdGlvbicpXG4gIHB1YmxpYyBoaW50QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLWVycm9yJylcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgPyB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLmNvbnRyb2wuaW52YWxpZCA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy12ZXJ0aWNhbCcpXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsaWduID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy1oaW50JylcbiAgZ2V0IGhhc0hpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmhpbnQgJiYgdGhpcy5jb25maWcuaGludC5pMThuICYmICF0aGlzLmNvbmZpZy5oaW50LmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb250cm9sKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gaGFzVmFsaWRhdGlvbktleSh0aGlzLmNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICB9XG5cbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhbGlnbjtcbiAgbGFiZWxQb3NpdGlvbjtcbiAgb3B0aW9uczogUWRGb3JtT3B0aW9uW107XG4gIHN3aXRjaGVzVmFsdWVzOiBzdHJpbmdbXTtcbiAgc3dpdGNoZXNJbnB1dHM6IFFkU3dpdGNoSW5wdXRbXTtcblxuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzd2l0Y2hlc1NlcnZpY2U6IFFkU3dpdGNoZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRW1pdHRlclNlcnZpY2U6IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lcikge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1FELVVJIHwgUWRTd2l0Y2hlc0NvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnNldExpc3QodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh0aGlzLnZhbHVlcyk7XG4gICAgdGhpcy5zZXREYXRhKCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5pbml0T3BNb2RlU3Vic2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh2YWx1ZXMpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB2YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2soaXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEoaXRlbS52YWx1ZSk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgICB0aGlzLl9vblRvdWNoKHRoaXMuc3dpdGNoZXNWYWx1ZXMpO1xuXG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZFZhbHVlc1RyYW5zbGF0ZWQoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN3aXRjaGVzSW5wdXRzLmZpbHRlcihpbnB1dCA9PiBpbnB1dC5hY3RpdmUpLm1hcChpbnB1dCA9PiBpbnB1dC5pMThuKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMuYWxpZ24gPSBnZXRBbGlnbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seSA9IGdldFJlYWRvbmx5KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy52aWV3b25seUFjdGlvbiA9IGdldFZpZXdvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzVmFsdWVzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0VmFsdWVzKCk7XG4gICAgdGhpcy5zd2l0Y2hlc0lucHV0cyA9IHRoaXMuc3dpdGNoZXNTZXJ2aWNlLmdldExpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0YSh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnVwZGF0ZUxpc3QodmFsdWUpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB0aGlzLnN3aXRjaGVzU2VydmljZS5nZXRWYWx1ZXMoKTtcbiAgICB0aGlzLnN3aXRjaGVzSW5wdXRzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0TGlzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdiBjbGFzcz1cInFkLXN3aXRjaGVzX19pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCI+XG4gIDxkaXYgY2xhc3M9XCJxZC1zd2l0Y2hlc19fc3dpdGNoLXNlY3Rpb25cIj5cbiAgICA8cWQtc3dpdGNoXG4gICAgICAqbmdGb3I9XCJsZXQgaW5wdXQgb2Ygc3dpdGNoZXNJbnB1dHNcIlxuICAgICAgW2lucHV0RGF0YV09XCJpbnB1dFwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soaW5wdXQpXCJcbiAgICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1zd2l0Y2gtJyArIGlucHV0LmluZGV4XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPjwvcWQtc3dpdGNoPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48cWQtZm9ybS1oaW50XG4gICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seVwiXG4gIFtoaW50XT1cImhhc0hpbnQgPyBjb25maWcuaGludC5pMThuIDogJydcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW2hhc0Vycm9yXT1cImhhc0Vycm9yXCJcbiAgW2hpbnRBY3Rpb25dPVwiaGludEFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0taGludD5cblxuPHFkLWZvcm0tcmVhZG9ubHlcbiAgKm5nSWY9XCJyZWFkb25seVwiXG4gIFt2YWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNUcmFuc2xhdGVkXCJcbiAgW3JlYWRvbmx5QWN0aW9uXT1cInJlYWRvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1yZWFkb25seT5cblxuPHFkLWZvcm0tdmlld29ubHlcbiAgKm5nSWY9XCJ2aWV3b25seVwiXG4gIFt2YWx1ZXNdPVwic2VsZWN0ZWRWYWx1ZXNUcmFuc2xhdGVkXCJcbiAgW3ZpZXdvbmx5QWN0aW9uXT1cInZpZXdvbmx5QWN0aW9uXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS12aWV3b25seT5cbiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL2Zvcm1zL3N3aXRjaGVzL3N3aXRjaGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9mb3Jtcy9zd2l0Y2hlcy9zd2l0Y2hlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLElBQUksRUFDSixXQUFXLEVBQ1gsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sUUFBUSxFQUNSLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLGdCQUFnQixFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEMsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixVQUFVLEVBQ1YsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7Ozs7OztBQUdoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQWlCSCxNQUFNLE9BQU8sbUJBQW1CO0lBZ0hYO0lBQ0E7SUFDQTtJQUNnQztJQUNwQjtJQW5IL0I7O09BRUc7SUFDTSxlQUFlLENBQVM7SUFFakM7Ozs7O09BS0c7SUFDTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBRS9COzs7Ozs7Ozs7Ozs7O09BYUc7SUFDTSxNQUFNLENBQThCO0lBRTdDOzs7T0FHRztJQUNvQixNQUFNLEdBQUcsVUFBVSxDQUFDO0lBRTNDOztPQUVHO0lBQ2dCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO0lBRS9EOztPQUVHO0lBQ2dCLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWxEOztPQUVHO0lBQ2dCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXREOztPQUVHO0lBQ2dCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBR3RELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFHakIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFJaEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUcxQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLElBRUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFVBQVUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRWhDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsT0FBTyxDQUFrQjtJQUN6QixFQUFFLENBQVM7SUFDWCxLQUFLLENBQVM7SUFDZCxLQUFLLENBQUM7SUFDTixhQUFhLENBQUM7SUFDZCxPQUFPLENBQWlCO0lBQ3hCLGNBQWMsQ0FBVztJQUN6QixjQUFjLENBQWtCO0lBRXhCLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTNCLFNBQVMsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDMUIsUUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUVqQyxZQUNtQixlQUFrQyxFQUNsQyxpQkFBb0MsRUFDcEMsb0JBQWlELEVBQ2pCLGdCQUFrQyxFQUN0RCxrQkFBd0M7UUFKcEQsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE2QjtRQUNqQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3RELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFFckUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsSUFBSSxDQUNWLG9HQUFvRyxDQUNyRyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBb0I7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWlCO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBTTtRQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFJO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQUUsT0FBTztRQUVyQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQTBCLHdCQUF3QixDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFHLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTO2dCQUFFLE9BQU87WUFFdEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0F4TlUsbUJBQW1COzJGQUFuQixtQkFBbUIsaTNCQVpuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxtQkFBbUI7Z0JBQ2hDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxpQkFBaUI7WUFDakIsMkJBQTJCO1NBQzVCLCtDQzdFSCxncUNBMkNBOzsyRkRzQ2EsbUJBQW1CO2tCQWhCL0IsU0FBUzsrQkFDRSxhQUFhLGFBR1o7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxxQkFBcUI7NEJBQ2hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNELGlCQUFpQjt3QkFDakIsMkJBQTJCO3FCQUM1QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs7MEJBcUgzQixRQUFROzswQkFBSSxJQUFJOzswQkFBSSxRQUFROzswQkFDNUIsUUFBUTt5Q0FoSEYsZUFBZTtzQkFBdkIsS0FBSztnQkFRRyxNQUFNO3NCQUFkLEtBQUs7Z0JBZ0JHLE1BQU07c0JBQWQsS0FBSztnQkFNaUIsTUFBTTtzQkFBNUIsS0FBSzt1QkFBQyxjQUFjO2dCQUtGLFlBQVk7c0JBQTlCLE1BQU07Z0JBS1ksU0FBUztzQkFBM0IsTUFBTTtnQkFLWSxhQUFhO3NCQUEvQixNQUFNO2dCQUtZLGFBQWE7c0JBQS9CLE1BQU07Z0JBR1AsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFJakQsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFJekMsY0FBYztzQkFEYixXQUFXO3VCQUFDLG9DQUFvQztnQkFLMUMsVUFBVTtzQkFGaEIsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxXQUFXO3VCQUFDLGdDQUFnQztnQkFJN0MsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkFLakMsUUFBUTtzQkFGWCxXQUFXO3VCQUFDLHFCQUFxQjs7c0JBQ2pDLFdBQVc7dUJBQUMseUJBQXlCO2dCQU1sQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsNEJBQTRCO2dCQU1yQyxPQUFPO3NCQURWLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTa2lwU2VsZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBRZEZvcm1PcHRpb24sIFFkRm9ybVN3aXRjaGVzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL21vZGVsL2Zvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBnZXRBbGlnbixcbiAgZ2V0RGlzYWJsZWQsXG4gIGdldEhpbnRBY3Rpb24sXG4gIGdldExhYmVsLFxuICBnZXRPcHRpb25zLFxuICBnZXRSZWFkb25seSxcbiAgZ2V0UmVhZG9ubHlBY3Rpb24sXG4gIGdldFZpZXdvbmx5LFxuICBnZXRWaWV3b25seUFjdGlvblxufSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9mb3Jtcy5oZWxwZXJzJztcbmltcG9ydCB7IGhhc1ZhbGlkYXRpb25LZXkgfSBmcm9tICcuLi9zaGFyZWQvaGVscGVycy9oYXMtdmFsaWRhdG9ycy5oZWxwZXJzJztcbmltcG9ydCB7IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9hY3Rpb24tZW1pdHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoZXNTZXJ2aWNlIH0gZnJvbSAnLi9zd2l0Y2hlcy1zZXJ2aWNlL3N3aXRjaGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRFdmVudEJyb2tlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2V2ZW50LWJyb2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU3dpdGNoSW5wdXQgfSBmcm9tICcuLi9tb2RlbC9vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogKipRZFN3aXRjaGVzKiogY29tcG9uZW50IHByb3ZpZGVzIGEgRm9ybUVsZW1lbnQuXG4gKiBUaGUgKipRZFN3aXRjaGVzKiogaXMgYSBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhIGZvcm0gZWxlbWVudCBmb3Igc3dpdGNoZXMuPGJyIC8+XG4gKiBJdCBhbGxvd3MgdXNlcnMgdG8gc2VsZWN0IG11bHRpcGxlIG9wdGlvbnMgZnJvbSBhIGxpc3Qgb2Ygb3B0aW9ucy4gSXQgY2FuIGJlIHVzZWQgd2l0aCBRdWFkcmVsIFJlYWN0aXZlIEZvcm1zIG9yIHdpdGggbW9kZWwgYmluZGluZy5cbiAqXG4gKiAjIyMjKipVc2FnZSB3aXRoIFJlYWN0aXZlIEZvcm1zKipcbiAqXG4gKiBgYGB0c1xuICogZm9ybSA9IG5ldyBRZEZvcm1Hcm91cCh7XG4gKiAgIHN3aXRjaGVzOiBuZXcgUWRGb3JtQ29udHJvbChbXSkgLy8gYXQgbGVhc3QgYW4gZW1wdHkgYXJyYXkgdG8gcHJldmVudCBydW50aW1lIGVycm9ycy5cbiAqIH0pO1xuICogYGBgXG4gKiBgYGBodG1sXG4gKiA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgPHFkLXN3aXRjaGVzIGZvcm1Db250cm9sTmFtZT1cInN3aXRjaGVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogIyMjIyoqVXNhZ2Ugd2l0aCBNb2RlbCBCaW5kaW5nKipcbiAqIGBgYHRzXG4gKiB2YWx1ZXM7XG4gKiBgYGBcbiAqIGBgYGh0bWxcbiAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXN3aXRjaGVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N3aXRjaGVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3dpdGNoZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogUWRTd2l0Y2hlc0NvbXBvbmVudCxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICBRZFN3aXRjaGVzU2VydmljZSxcbiAgICBRZEZvcm1zQWN0aW9uRW1pdHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ3FkLXN3aXRjaGVzJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkU3dpdGNoZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBmb3JtIGNvbnRyb2wgbmFtZSBjYW4gYmUgYXNzaWduZWQgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgUmVhY3RpdmUgRm9ybXMuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gaXRlbSB2YWx1ZXMsIGlmIHlvdSBhcmUgd29ya2luZyB3aXRoIE1vZGVsIEJpbmRpbmcuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDxxZC1zd2l0Y2hlcyBbKHZhbHVlcyldPVwidmFsdWVzXCIgW2NvbmZpZ109XCJjb25maWdcIj48L3FkLXN3aXRjaGVzPlxuICAgKi9cbiAgQElucHV0KCkgdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmb3JtIGl0ZW1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIGxhYmVsOiB7IGkxOG46ICdRZC1Gb3JtcyBTd2l0Y2hlcycgfSxcbiAgICogICBoaW50OiB7IGkxOG46ICdIZWxwZXJ0ZXh0JyB9LFxuICAgKiAgIG9wdGlvbnM6IFtcbiAgICogICAgIHsgaTE4bjogJ2kxOG4ucWQuZXhhbXBsZUZvcm1GaWVsZC5nb29kc0RlY2xhcmF0aW9uLmltcG9ydCcsIHZhbHVlOiAnaW1wb3J0JyB9LFxuICAgKiAgICAgeyBpMThuOiAnaTE4bi5xZC5leGFtcGxlRm9ybUZpZWxkLmdvb2RzRGVjbGFyYXRpb24uZXhwb3J0JywgdmFsdWU6ICdleHBvcnQnIH0sXG4gICAqICAgICB7IGkxOG46ICdpMThuLnFkLmV4YW1wbGVGb3JtRmllbGQuZ29vZHNEZWNsYXJhdGlvbi50cmFuc2l0JywgdmFsdWU6ICd0cmFuc2l0JyB9XG4gICAqICAgXVxuICAgKiB9O1xuICAgKi9cbiAgQElucHV0KCkgY29uZmlnOiBRZEZvcm1Td2l0Y2hlc0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3N3aXRjaGVzJztcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmFsdWVzIGNoYW5nZS4gUmV0dXJuIHZhbHVlcyBtYXRjaCB0aGUgY3VycmVudCB2YWx1ZXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgaGludCBpcyBjbGlja2VkL3RhcHBlZC4gYGhpbnRBY3Rpb25gIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja0hpbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGV2ZW50IHdoZW4gdGhlIHJlYWRvbmx5IHZhbHVlIGlzIGNsaWNrZWQvdGFwcGVkLiBgcmVhZG9ubHlBY3Rpb24gYCBtdXN0IGJlIHNldCB0byBgdHJ1ZWAgZm9yIHRoaXMuXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xpY2tSZWFkb25seSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdmlld29ubHkgdmFsdWUgaXMgY2xpY2tlZC90YXBwZWQuIGB2aWV3b25seUFjdGlvbiBgIG11c3QgYmUgc2V0IHRvIGB0cnVlYCBmb3IgdGhpcy5cbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBjbGlja1ZpZXdvbmx5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tcmVhZG9ubHknKVxuICByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucWQtZHJvcGRvd24tLXJlYWRvbmx5LWFjdGlvbicpXG4gIHJlYWRvbmx5QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi12aWV3b25seScpXG4gIHZpZXdvbmx5ID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1kcm9wZG93bi0tdmlld29ubHktYWN0aW9uJylcbiAgdmlld29ubHlBY3Rpb24gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0taGludC1hY3Rpb24nKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLS1oaW50LWFjdGlvbicpXG4gIHB1YmxpYyBoaW50QWN0aW9uID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1mb3JtLWRpc2FibGVkJylcbiAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLWZvcm0tZXJyb3InKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnFkLXN3aXRjaGVzLWVycm9yJylcbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgPyB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLmNvbnRyb2wuaW52YWxpZCA6IGZhbHNlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy12ZXJ0aWNhbCcpXG4gIGdldCBpc1ZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsaWduID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5xZC1zd2l0Y2hlcy1oaW50JylcbiAgZ2V0IGhhc0hpbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmhpbnQgJiYgdGhpcy5jb25maWcuaGludC5pMThuICYmICF0aGlzLmNvbmZpZy5oaW50LmRpc2FibGVkO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5jb250cm9sKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gaGFzVmFsaWRhdGlvbktleSh0aGlzLmNvbnRyb2wsICdyZXF1aXJlZCcpO1xuICB9XG5cbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBhbGlnbjtcbiAgbGFiZWxQb3NpdGlvbjtcbiAgb3B0aW9uczogUWRGb3JtT3B0aW9uW107XG4gIHN3aXRjaGVzVmFsdWVzOiBzdHJpbmdbXTtcbiAgc3dpdGNoZXNJbnB1dHM6IFFkU3dpdGNoSW5wdXRbXTtcblxuICBwcml2YXRlIF9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX29uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzd2l0Y2hlc1NlcnZpY2U6IFFkU3dpdGNoZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uRW1pdHRlclNlcnZpY2U6IFFkRm9ybXNBY3Rpb25FbWl0dGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIEBTa2lwU2VsZigpIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGV2ZW50QnJva2VyU2VydmljZTogUWRFdmVudEJyb2tlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHV1aWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbENvbnRhaW5lcikge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbENvbnRhaW5lci5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1FELVVJIHwgUWRTd2l0Y2hlc0NvbXBvbmVudCAtIE1pc3NpbmcgRm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSBmcm9tIGhvc3QgZWxlbWVudCBvZiB0aGUgY29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnNldExpc3QodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh0aGlzLnZhbHVlcyk7XG4gICAgdGhpcy5zZXREYXRhKCk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLmhpbnRFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrSGludC5lbWl0KCkpKTtcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLmFjdGlvbkVtaXR0ZXJTZXJ2aWNlLnJlYWRvbmx5RXZlbnRFbWl0dGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGlja1JlYWRvbmx5LmVtaXQoKSkpO1xuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuYWN0aW9uRW1pdHRlclNlcnZpY2Uudmlld29ubHlFdmVudEVtaXR0ZXIkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsaWNrVmlld29ubHkuZW1pdCgpKSk7XG4gICAgdGhpcy5fc3Vicy5hZGQodGhpcy5pbml0T3BNb2RlU3Vic2NyaXB0aW9uKCkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSkgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzU2VydmljZS5maWxsTGlzdFdpdGhEZWZhdWx0cyh2YWx1ZXMpO1xuICAgIHRoaXMuc2V0RGF0YSgpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB2YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2xpY2soaXRlbSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLnVwZGF0ZURhdGEoaXRlbS52YWx1ZSk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgICB0aGlzLl9vblRvdWNoKHRoaXMuc3dpdGNoZXNWYWx1ZXMpO1xuXG4gICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnN3aXRjaGVzVmFsdWVzKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZFZhbHVlc1RyYW5zbGF0ZWQoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnN3aXRjaGVzSW5wdXRzLmZpbHRlcihpbnB1dCA9PiBpbnB1dC5hY3RpdmUpLm1hcChpbnB1dCA9PiBpbnB1dC5pMThuKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZ2V0RGlzYWJsZWQodGhpcy5jb25maWcpIHx8ICEhdGhpcy5jb250cm9sPy5kaXNhYmxlZDtcbiAgICB0aGlzLmxhYmVsID0gZ2V0TGFiZWwodGhpcy5jb25maWcpO1xuICAgIHRoaXMuYWxpZ24gPSBnZXRBbGlnbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vcHRpb25zID0gZ2V0T3B0aW9ucyh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5oaW50QWN0aW9uID0gZ2V0SGludEFjdGlvbih0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5yZWFkb25seSA9IGdldFJlYWRvbmx5KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLnJlYWRvbmx5QWN0aW9uID0gZ2V0UmVhZG9ubHlBY3Rpb24odGhpcy5jb25maWcpO1xuICAgIHRoaXMudmlld29ubHkgPSBnZXRWaWV3b25seSh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy52aWV3b25seUFjdGlvbiA9IGdldFZpZXdvbmx5QWN0aW9uKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXRjaGVzVmFsdWVzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0VmFsdWVzKCk7XG4gICAgdGhpcy5zd2l0Y2hlc0lucHV0cyA9IHRoaXMuc3dpdGNoZXNTZXJ2aWNlLmdldExpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0YSh2YWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoZXNTZXJ2aWNlLnVwZGF0ZUxpc3QodmFsdWUpO1xuICAgIHRoaXMuc3dpdGNoZXNWYWx1ZXMgPSB0aGlzLnN3aXRjaGVzU2VydmljZS5nZXRWYWx1ZXMoKTtcbiAgICB0aGlzLnN3aXRjaGVzSW5wdXRzID0gdGhpcy5zd2l0Y2hlc1NlcnZpY2UuZ2V0TGlzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3BNb2RlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB8IHZvaWQge1xuICAgIGlmICghdGhpcy5ldmVudEJyb2tlclNlcnZpY2UpIHJldHVybjtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50QnJva2VyU2VydmljZS5jb25zdW1lPHsgaXNWaWV3b25seTogYm9vbGVhbiB9Pignb3BlcmF0aW9uX21vZGVfY2hhbmdlZCcpLnN1YnNjcmliZSh0b3BpYyA9PiB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLnZpZXdvbmx5ID09PSAnYm9vbGVhbicpIHJldHVybjtcblxuICAgICAgdGhpcy52aWV3b25seSA9IGdldFZpZXdvbmx5KHRoaXMuY29uZmlnLCB0b3BpYy5wYXlsb2FkLmlzVmlld29ubHkpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8cWQtZm9ybS1sYWJlbFxuICBbbGFiZWxdPVwibGFiZWxcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdmlld29ubHldPVwidmlld29ubHlcIlxuICBbY29udHJvbF09XCJjb250cm9sXCJcbiAgW3Rvb2x0aXBdPVwiY29uZmlnPy50b29sdGlwXCJcbiAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuPjwvcWQtZm9ybS1sYWJlbD5cblxuPGRpdiBjbGFzcz1cInFkLXN3aXRjaGVzX19pbnB1dC1zZWN0aW9uXCIgKm5nSWY9XCIhcmVhZG9ubHkgJiYgIXZpZXdvbmx5XCI+XG4gIDxkaXYgY2xhc3M9XCJxZC1zd2l0Y2hlc19fc3dpdGNoLXNlY3Rpb25cIj5cbiAgICA8cWQtc3dpdGNoXG4gICAgICAqbmdGb3I9XCJsZXQgaW5wdXQgb2Ygc3dpdGNoZXNJbnB1dHNcIlxuICAgICAgW2lucHV0RGF0YV09XCJpbnB1dFwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soaW5wdXQpXCJcbiAgICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1zd2l0Y2gtJyArIGlucHV0LmluZGV4XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPjwvcWQtc3dpdGNoPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48cWQtZm9ybS1oaW50XG4gICpuZ0lmPVwiIXJlYWRvbmx5ICYmICF2aWV3b25seSAmJiAoaGFzSGludCB8fCBoYXNFcnJvcilcIlxuICBbaGludF09XCJoYXNIaW50ID8gY29uZmlnLmhpbnQuaTE4biA6ICcnXCJcbiAgW2NvbnRyb2xdPVwiY29udHJvbFwiXG4gIFtoYXNFcnJvcl09XCJoYXNFcnJvclwiXG4gIFtoaW50QWN0aW9uXT1cImhpbnRBY3Rpb25cIlxuICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4+PC9xZC1mb3JtLWhpbnQ+XG5cbjxxZC1mb3JtLXJlYWRvbmx5XG4gICpuZ0lmPVwicmVhZG9ubHlcIlxuICBbdmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzVHJhbnNsYXRlZFwiXG4gIFtyZWFkb25seUFjdGlvbl09XCJyZWFkb25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tcmVhZG9ubHk+XG5cbjxxZC1mb3JtLXZpZXdvbmx5XG4gICpuZ0lmPVwidmlld29ubHlcIlxuICBbdmFsdWVzXT1cInNlbGVjdGVkVmFsdWVzVHJhbnNsYXRlZFwiXG4gIFt2aWV3b25seUFjdGlvbl09XCJ2aWV3b25seUFjdGlvblwiXG4gIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbj48L3FkLWZvcm0tdmlld29ubHk+XG4iXX0=