@cuby-ui/core 0.0.485 → 0.0.488

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 (44) hide show
  1. package/README.md +794 -13
  2. package/editor/editor.component.d.ts +1 -0
  3. package/editor/tools/combined-text-block.tool.d.ts +0 -1
  4. package/esm2022/components/card-wrapper/card-wrapper.component.mjs +2 -2
  5. package/esm2022/components/content-header/content-header.component.mjs +3 -3
  6. package/esm2022/components/dropdown/dropdown-wrapper.component.mjs +3 -3
  7. package/esm2022/components/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
  8. package/esm2022/components/tabs/components/abstract-tabs/abstract-tabs.component.mjs +3 -3
  9. package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.component.mjs +3 -3
  10. package/esm2022/editor/editor.component.mjs +9 -1
  11. package/esm2022/editor/tools/combined-text-block.tool.mjs +9 -26
  12. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +3 -3
  13. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +3 -3
  14. package/esm2022/widgets/ui/assignee-role-item/assignee-role-item.component.mjs +3 -3
  15. package/esm2022/widgets/ui/assignee-roles-tabs/assignee-roles-tabs.component.mjs +3 -3
  16. package/esm2022/widgets/ui/button-change-theme/button-change-theme.component.mjs +3 -3
  17. package/esm2022/widgets/ui/categories/components/category-form/category-form.component.mjs +3 -3
  18. package/esm2022/widgets/ui/categories/components/category-item/category-item.component.mjs +3 -3
  19. package/esm2022/widgets/ui/checklist-block/checklist-block.component.mjs +3 -3
  20. package/esm2022/widgets/ui/checklist-block/components/checklist-block-list-item-evaluation-criteria/checklist-block-list-item-evaluation-criteria.component.mjs +3 -3
  21. package/esm2022/widgets/ui/circle-loader/circle-loader.component.mjs +3 -3
  22. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item/consumable-form-item.component.mjs +3 -3
  23. package/esm2022/widgets/ui/consumable-form/components/consumable-form-item-readonly/consumable-form-item-readonly.component.mjs +3 -3
  24. package/esm2022/widgets/ui/consumable-form/consumable-form.component.mjs +3 -3
  25. package/esm2022/widgets/ui/delete-modal/delete-modal.component.mjs +3 -3
  26. package/esm2022/widgets/ui/framer-preview/framer-preview.component.mjs +3 -3
  27. package/esm2022/widgets/ui/inserted/inserted.component.mjs +3 -3
  28. package/esm2022/widgets/ui/modal-header-inserted-buttons/modal-header-inserted-buttons.component.mjs +3 -3
  29. package/esm2022/widgets/ui/modal-header-tabs/modal-header-tabs.component.mjs +3 -3
  30. package/esm2022/widgets/ui/resources-block/components/resources-block-content/resources-block-content.component.mjs +3 -3
  31. package/esm2022/widgets/ui/resources-block/components/resources-options/resources-options.component.mjs +3 -3
  32. package/esm2022/widgets/ui/resources-block/resources-block.component.mjs +3 -3
  33. package/esm2022/widgets/ui/toolbox-form/components/tool-form-readonly/tool-form-readonly.component.mjs +3 -3
  34. package/esm2022/widgets/ui/toolbox-form/tool-form.component.mjs +3 -3
  35. package/esm2022/widgets/ui/user-action-context-menu/activity-item/activity-item.component.mjs +3 -3
  36. package/esm2022/widgets/ui/user-action-context-menu/company-item/company-item.component.mjs +3 -3
  37. package/esm2022/widgets/ui/user-action-context-menu/user-action-context-menu.component.mjs +3 -3
  38. package/esm2022/widgets/ui/utility-modal/components/readonly-utility-modal/readonly-utility-modal.component.mjs +3 -3
  39. package/esm2022/widgets/ui/utility-modal/components/utility-modal-create/utility-modal-create.component.mjs +3 -3
  40. package/esm2022/widgets/ui/utility-thumbnail/utility-thumbnail.component.mjs +3 -3
  41. package/fesm2022/cuby-ui-core.mjs +85 -94
  42. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  43. package/package.json +4 -4
  44. package/styles/mixins/flex.scss +5 -15
@@ -96,7 +96,7 @@ export class CuiCheckListBlockListItemEvaluationCriteriaComponent {
96
96
  });
97
97
  }
98
98
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemEvaluationCriteriaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, isStandalone: true, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: { loadingIds: { classPropertyName: "loadingIds", publicName: "loadingIds", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, criteriaGroup: { classPropertyName: "criteriaGroup", publicName: "criteriaGroup", isSignal: true, isRequired: true, transformFunction: null }, evaluationCriteriaFormArray: { classPropertyName: "evaluationCriteriaFormArray", publicName: "evaluationCriteriaFormArray", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { saveClicked: "saveClicked", deleteClicked: "deleteClicked", cancelClicked: "cancelClicked" }, ngImport: i0, template: "<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;gap:8px;align-items:center}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cui-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: i2.CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "directive", type: i3.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i4.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "directive", type: CuiLetDirective, selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i5.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "component", type: i6.CuiTextareaComponent, selector: "textarea[cuiTextarea]", inputs: ["rows", "noBordersAndPaddings"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: i8.CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiDragPointerDirective, selector: "[cuiDragPointer]" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CuiCheckListBlockListItemEvaluationCriteriaComponent, isStandalone: true, selector: "li[cuiChecklistBlockListItemEvaluationCriteria]", inputs: { loadingIds: { classPropertyName: "loadingIds", publicName: "loadingIds", isSignal: true, isRequired: true, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: true, transformFunction: null }, criteriaGroup: { classPropertyName: "criteriaGroup", publicName: "criteriaGroup", isSignal: true, isRequired: true, transformFunction: null }, evaluationCriteriaFormArray: { classPropertyName: "evaluationCriteriaFormArray", publicName: "evaluationCriteriaFormArray", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { saveClicked: "saveClicked", deleteClicked: "deleteClicked", cancelClicked: "cancelClicked" }, ngImport: i0, template: "<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-direction:row;gap:0;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cui-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i1.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiIconButtonModule }, { kind: "component", type: i2.CuiIconButtonComponent, selector: "button[cuiIconButton][icon], a[cuiIconButton][icon]", inputs: ["icon", "color", "hoverColor"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "directive", type: i3.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i4.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "directive", type: CuiLetDirective, selector: "[cuiLet]", inputs: ["cuiLet"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i5.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: CuiTextareaModule }, { kind: "component", type: i6.CuiTextareaComponent, selector: "textarea[cuiTextarea]", inputs: ["rows", "noBordersAndPaddings"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: i8.CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: CuiDragPointerDirective, selector: "[cuiDragPointer]" }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
100
  }
101
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCheckListBlockListItemEvaluationCriteriaComponent, decorators: [{
102
102
  type: Component,
@@ -112,6 +112,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
112
112
  CuiInputNumberModule,
113
113
  CuiDragPointerDirective,
114
114
  CuiGeneralControlErrorHintComponent
115
- ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;gap:8px;align-items:center}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cui-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"] }]
115
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *transloco=\"let t\">\n <form\n *cuiLet=\"criteriaGroup() as form\"\n [formGroup]=\"form\"\n [class.form_edit]=\"isEditMode()\"\n clas=\"form\"\n >\n <div class=\"content\">\n <span class=\"index\">{{ index() }}.</span>\n @if (!isEditMode()) {\n <cui-svg\n cuiDragPointer\n icon=\"cuiIconDragHandleDots\"\n color=\"var(--cui-base-500)\"\n class=\"icon\"\n />\n }\n <div\n style.gap=\"{{ gap() }}px\"\n class=\"wrapper\"\n >\n <cui-input-number\n formControlName=\"evaluation\"\n cuiTextFieldPlaceholder=\"0\"\n [cuiTextFieldIsError]=\"isEvaluationInvalid\"\n [min]=\"1\"\n [max]=\"99\"\n class=\"input-number\"\n />\n <textarea\n cuiTextarea\n formControlName=\"criteria\"\n [rows]=\"1\"\n [cuiTextFieldIsError]=\"isCriteriaInvalid\"\n placeholder=\"{{ t('ADD_A_DESCRIPTION') }}...\"\n class=\"textarea\"\n ></textarea>\n </div>\n @if (isEditMode()) {\n <button\n type=\"submit\"\n cuiIconButton\n icon=\"cuiIconCheck\"\n color=\"var(--cui-success)\"\n [disabled]=\"form.invalid\"\n class=\"button\"\n (click)=\"onSave()\"\n ></button>\n <button\n type=\"button\"\n cuiIconButton\n icon=\"cuiIconXCircle\"\n color=\"var(--cui-danger)\"\n class=\"button\"\n (click)=\"onCancel()\"\n ></button>\n } @else {\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconEdit\"\n [disabled]=\"isLoading()\"\n (click)=\"onToggleEditMode()\"\n ></button>\n <button\n cuiButton\n type=\"button\"\n appearance=\"ghost\"\n size=\"xxs\"\n icon=\"cuiIconTrash\"\n [isLoaderShown]=\"isLoading()\"\n (click)=\"onDelete()\"\n ></button>\n }\n </div>\n <cui-general-control-error-hint\n [control]=\"form.controls.criteria\"\n class=\"error-hint\"\n />\n </form>\n</div>\n", styles: [".form{display:flex;flex-direction:column;gap:8px}.form_edit{padding:12px;border-radius:8px;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.content{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start}.index{font-weight:500;font-size:14px;line-height:20px;width:22px}.icon{cursor:grab}.icon:active{cursor:grabbing}.wrapper{display:flex;flex-direction:row;gap:0;flex-grow:1}.input-number{padding-right:9px;padding-left:9px;flex-shrink:0;width:44px;background:inherit}.input-number._disabled{cursor:initial;opacity:1;border-right-width:0;border-radius:8px 0 0 8px}.input-number ::ng-deep .c-input{text-align:center}.input-number ::ng-deep .c-input:disabled{cursor:text}.textarea{background:var(--cui-base-0)}.textarea:disabled{cursor:initial;opacity:1;background:var(--cui-base-0);border-left-width:0;border-radius:0 8px 8px 0}.button:disabled{cursor:not-allowed;opacity:.5}.error-hint{margin-left:82px}.cui-drag-drop-placeholder{height:44px;border:1px dashed var(--cui-base-200);border-radius:8px;background:var(--cui-base-0)}\n"] }]
116
116
  }], ctorParameters: () => [] });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0s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QUFpRCxXQUNsRDt3QkFDTCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLG1DQUFtQztxQkFDdEMsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IEN1aUxldERpcmVjdGl2ZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIEN1aUFsZXJ0U2VydmljZSxcbiAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgQ3VpSWNvbkJ1dHRvbk1vZHVsZSxcbiAgICBDdWlJbnB1dE1vZHVsZSxcbiAgICBDdWlJbnB1dE51bWJlck1vZHVsZSxcbiAgICBDdWlTdmdNb2R1bGUsXG4gICAgQ3VpVGV4dGFyZWFNb2R1bGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuXG5pbXBvcnQgdHlwZSB7IEN1aUV2YWx1YXRpb25Dcml0ZXJpYUdyb3VwIH0gZnJvbSAnLi4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uJztcblxuaW1wb3J0IHsgQ3VpRHJhZ1BvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgQ3VpR2VuZXJhbENvbnRyb2xFcnJvckhpbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludCc7XG5pbXBvcnQgdHlwZSB7IEN1aUV2YWx1YXRpb25Dcml0ZXJpYURhdGEgfSBmcm9tICcuL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi1jcml0ZXJpYS5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaVtjdWlDaGVja2xpc3RCbG9ja0xpc3RJdGVtRXZhbHVhdGlvbkNyaXRlcmlhXScsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUljb25CdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUlucHV0TW9kdWxlLFxuICAgICAgICBDdWlMZXREaXJlY3RpdmUsXG4gICAgICAgIEN1aVN2Z01vZHVsZSxcbiAgICAgICAgQ3VpVGV4dGFyZWFNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZSxcbiAgICAgICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIEN1aURyYWdQb2ludGVyRGlyZWN0aXZlLFxuICAgICAgICBDdWlHZW5lcmFsQ29udHJvbEVycm9ySGludENvbXBvbmVudFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdWlDaGVja0xpc3RCbG9ja0xpc3RJdGVtRXZhbHVhdGlvbkNyaXRlcmlhQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUFsZXJ0U2VydmljZSA9IGluamVjdChDdWlBbGVydFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRVZBTFVBVElPTl9BTFJFQURZX0VYSVNUID0gYEVWQUxVQVRJT05fQUxSRUFEWV9FWElTVGA7XG5cbiAgICBwcml2YXRlIHByZXZpb3VzRGF0YTogQ3VpTnVsbGFibGU8Q3VpRXZhbHVhdGlvbkNyaXRlcmlhRGF0YT4gPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRWRpdE1vZGUgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc05ldyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlzTmV3LnZhbHVlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2FwID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaXNFZGl0TW9kZSgpID8gOCA6IDApKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nSWRzKClbdGhpcy5jcml0ZXJpYUdyb3VwKCkuY29udHJvbHMuaWQudmFsdWVdKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEcmFnRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmlzRWRpdE1vZGUoKSAmJiAhdGhpcy5pc0xvYWRpbmcoKSk7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRXZhbHVhdGlvbkludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scy5ldmFsdWF0aW9uLmludmFsaWQgJiYgdGhpcy5pc0VkaXRNb2RlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc0NyaXRlcmlhSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmNyaXRlcmlhLmludmFsaWQgJiYgdGhpcy5pc0VkaXRNb2RlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmdJZHMgPSBpbnB1dC5yZXF1aXJlZDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNyaXRlcmlhR3JvdXAgPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA8Q3VpRXZhbHVhdGlvbkNyaXRlcmlhR3JvdXA+PigpO1xuICAgIHB1YmxpYyByZWFkb25seSBldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkgPSBpbnB1dC5yZXF1aXJlZDxGb3JtQXJyYXk8Rm9ybUdyb3VwPj4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBzYXZlQ2xpY2tlZCA9IG91dHB1dDxDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cD4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNhbmNlbENsaWNrZWQgPSBvdXRwdXQoKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXROZXdFdmFsdWF0aW9uQ3JpdGVyaWFFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5pbml0RWRpdE1vZGVFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25TYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jcml0ZXJpYUdyb3VwKCkuaW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZhbHVhdGlvbiA9IGAke3RoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmV2YWx1YXRpb24udmFsdWV9YDtcblxuICAgICAgICBpZiAodGhpcy5jaGVja0lzRXZhbHVhdGlvbkNyaXRlcmlhRXhpc3QoZXZhbHVhdGlvbikpIHtcbiAgICAgICAgICAgIHRoaXMuY3VpQWxlcnRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLm9wZW4odGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSh0aGlzLkVWQUxVQVRJT05fQUxSRUFEWV9FWElTVCwgeyBldmFsdWF0aW9uIH0pLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG4gICAgICAgIHRoaXMuc2F2ZUNsaWNrZWQuZW1pdCh0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlkLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuZGVsZXRlQ2xpY2tlZC5lbWl0KGlkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTmV3KCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByZXZpb3VzRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcml0ZXJpYUdyb3VwKCkuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5jcml0ZXJpYUdyb3VwKCkuZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMucHJldmlvdXNEYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRvZ2dsZUVkaXRNb2RlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGNyaXRlcmlhLCBldmFsdWF0aW9uIH0gPSB0aGlzLmNyaXRlcmlhR3JvdXAoKS5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMucHJldmlvdXNEYXRhID0geyBjcml0ZXJpYSwgZXZhbHVhdGlvbiB9O1xuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG4gICAgfVxuXG4gICAgLy8gVE9ETzog0JrQvtC80L/QvtC90LXQvdGCINC00L7Qu9C20LXQvSDQsdGL0Lsg0LHRi9GC0Ywg0L/QvtGB0YLRgNC+0LXQvSDQuNGB0LrQu9GO0YfQuNGC0LXQu9GM0L3QviDQvdCwINGA0LXQsNC60YLQuNCy0L3Ri9GFINGE0L7RgNC80LDRhVxuICAgIHByaXZhdGUgaW5pdEVkaXRNb2RlRWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5jcml0ZXJpYUdyb3VwKClbdGhpcy5pc0VkaXRNb2RlKCkgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJ10oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TmV3RXZhbHVhdGlvbkNyaXRlcmlhRWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5pc0VkaXRNb2RlLnNldCh0aGlzLmlzTmV3KCkpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJc0V2YWx1YXRpb25Dcml0ZXJpYUV4aXN0KGV2YWx1YXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb250cm9scyA9IHRoaXMuZXZhbHVhdGlvbkNyaXRlcmlhRm9ybUFycmF5KCkuY29udHJvbHM7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnNvbWUoKGNvbnRyb2w6IEZvcm1Hcm91cDxDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cD4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzLmlkLnZhbHVlID09PSB0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scy5pZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGAke2NvbnRyb2wuZ2V0KCdldmFsdWF0aW9uJyk/LnZhbHVlfWAgPT09IGV2YWx1YXRpb247XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgPGZvcm1cbiAgICAgICAgKmN1aUxldD1cImNyaXRlcmlhR3JvdXAoKSBhcyBmb3JtXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgW2NsYXNzLmZvcm1fZWRpdF09XCJpc0VkaXRNb2RlKClcIlxuICAgICAgICBjbGFzPVwiZm9ybVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRleFwiPnt7IGluZGV4KCkgfX0uPC9zcGFuPlxuICAgICAgICAgICAgQGlmICghaXNFZGl0TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgPGN1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgY3VpRHJhZ1BvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25EcmFnSGFuZGxlRG90c1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZS5nYXA9XCJ7eyBnYXAoKSB9fXB4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXBwZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjdWktaW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImV2YWx1YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjdWlUZXh0RmllbGRQbGFjZWhvbGRlcj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc0V2YWx1YXRpb25JbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgW21heF09XCI5OVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICBjdWlUZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjcml0ZXJpYVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc0NyaXRlcmlhSW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgdCgnQUREX0FfREVTQ1JJUFRJT04nKSB9fS4uLlwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGlzRWRpdE1vZGUoKSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIGN1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25DaGVja1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLXN1Y2Nlc3MpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY3VpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblhDaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1kYW5nZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvbkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVFZGl0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGVyU2hvd25dPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGN1aS1nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludFxuICAgICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5jb250cm9scy5jcml0ZXJpYVwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWhpbnRcIlxuICAgICAgICAvPlxuICAgIDwvZm9ybT5cbjwvZGl2PlxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jaGVja2xpc3QtYmxvY2svY29tcG9uZW50cy9jaGVja2xpc3QtYmxvY2stbGlzdC1pdGVtLWV2YWx1YXRpb24tY3JpdGVyaWEvY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0s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QUFpRCxXQUNsRDt3QkFDTCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLG1DQUFtQztxQkFDdEMsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7IEN1aU51bGxhYmxlIH0gZnJvbSAnQGN1YnktdWkvY2RrJztcbmltcG9ydCB7IEN1aUxldERpcmVjdGl2ZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIEN1aUFsZXJ0U2VydmljZSxcbiAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgQ3VpSWNvbkJ1dHRvbk1vZHVsZSxcbiAgICBDdWlJbnB1dE1vZHVsZSxcbiAgICBDdWlJbnB1dE51bWJlck1vZHVsZSxcbiAgICBDdWlTdmdNb2R1bGUsXG4gICAgQ3VpVGV4dGFyZWFNb2R1bGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUsIFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xuXG5pbXBvcnQgdHlwZSB7IEN1aUV2YWx1YXRpb25Dcml0ZXJpYUdyb3VwIH0gZnJvbSAnLi4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uJztcblxuaW1wb3J0IHsgQ3VpRHJhZ1BvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICdAY3VieS11aS9jZGsnO1xuaW1wb3J0IHsgQ3VpR2VuZXJhbENvbnRyb2xFcnJvckhpbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludCc7XG5pbXBvcnQgdHlwZSB7IEN1aUV2YWx1YXRpb25Dcml0ZXJpYURhdGEgfSBmcm9tICcuL2NoZWNrbGlzdC1ibG9jay1saXN0LWl0ZW0tZXZhbHVhdGlvbi1jcml0ZXJpYS5vcHRpb25zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaVtjdWlDaGVja2xpc3RCbG9ja0xpc3RJdGVtRXZhbHVhdGlvbkNyaXRlcmlhXScsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUljb25CdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUlucHV0TW9kdWxlLFxuICAgICAgICBDdWlMZXREaXJlY3RpdmUsXG4gICAgICAgIEN1aVN2Z01vZHVsZSxcbiAgICAgICAgQ3VpVGV4dGFyZWFNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZSxcbiAgICAgICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIEN1aURyYWdQb2ludGVyRGlyZWN0aXZlLFxuICAgICAgICBDdWlHZW5lcmFsQ29udHJvbEVycm9ySGludENvbXBvbmVudFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vY2hlY2tsaXN0LWJsb2NrLWxpc3QtaXRlbS1ldmFsdWF0aW9uLWNyaXRlcmlhLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDdWlDaGVja0xpc3RCbG9ja0xpc3RJdGVtRXZhbHVhdGlvbkNyaXRlcmlhQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUFsZXJ0U2VydmljZSA9IGluamVjdChDdWlBbGVydFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRVZBTFVBVElPTl9BTFJFQURZX0VYSVNUID0gYEVWQUxVQVRJT05fQUxSRUFEWV9FWElTVGA7XG5cbiAgICBwcml2YXRlIHByZXZpb3VzRGF0YTogQ3VpTnVsbGFibGU8Q3VpRXZhbHVhdGlvbkNyaXRlcmlhRGF0YT4gPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRWRpdE1vZGUgPSBzaWduYWwoZmFsc2UpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc05ldyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlzTmV3LnZhbHVlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2FwID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuaXNFZGl0TW9kZSgpID8gOCA6IDApKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nSWRzKClbdGhpcy5jcml0ZXJpYUdyb3VwKCkuY29udHJvbHMuaWQudmFsdWVdKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNEcmFnRW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLmlzRWRpdE1vZGUoKSAmJiAhdGhpcy5pc0xvYWRpbmcoKSk7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRXZhbHVhdGlvbkludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scy5ldmFsdWF0aW9uLmludmFsaWQgJiYgdGhpcy5pc0VkaXRNb2RlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc0NyaXRlcmlhSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmNyaXRlcmlhLmludmFsaWQgJiYgdGhpcy5pc0VkaXRNb2RlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmdJZHMgPSBpbnB1dC5yZXF1aXJlZDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXggPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNyaXRlcmlhR3JvdXAgPSBpbnB1dC5yZXF1aXJlZDxGb3JtR3JvdXA8Q3VpRXZhbHVhdGlvbkNyaXRlcmlhR3JvdXA+PigpO1xuICAgIHB1YmxpYyByZWFkb25seSBldmFsdWF0aW9uQ3JpdGVyaWFGb3JtQXJyYXkgPSBpbnB1dC5yZXF1aXJlZDxGb3JtQXJyYXk8Rm9ybUdyb3VwPj4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBzYXZlQ2xpY2tlZCA9IG91dHB1dDxDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cD4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNhbmNlbENsaWNrZWQgPSBvdXRwdXQoKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXROZXdFdmFsdWF0aW9uQ3JpdGVyaWFFZmZlY3QoKTtcbiAgICAgICAgdGhpcy5pbml0RWRpdE1vZGVFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25TYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jcml0ZXJpYUdyb3VwKCkuaW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZhbHVhdGlvbiA9IGAke3RoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmV2YWx1YXRpb24udmFsdWV9YDtcblxuICAgICAgICBpZiAodGhpcy5jaGVja0lzRXZhbHVhdGlvbkNyaXRlcmlhRXhpc3QoZXZhbHVhdGlvbikpIHtcbiAgICAgICAgICAgIHRoaXMuY3VpQWxlcnRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLm9wZW4odGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSh0aGlzLkVWQUxVQVRJT05fQUxSRUFEWV9FWElTVCwgeyBldmFsdWF0aW9uIH0pLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJ1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG4gICAgICAgIHRoaXMuc2F2ZUNsaWNrZWQuZW1pdCh0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuY3JpdGVyaWFHcm91cCgpLmNvbnRyb2xzLmlkLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuZGVsZXRlQ2xpY2tlZC5lbWl0KGlkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzTmV3KCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsQ2xpY2tlZC5lbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG5cbiAgICAgICAgaWYgKCF0aGlzLnByZXZpb3VzRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcml0ZXJpYUdyb3VwKCkuc2V0VmFsdWUoe1xuICAgICAgICAgICAgLi4udGhpcy5jcml0ZXJpYUdyb3VwKCkuZ2V0UmF3VmFsdWUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMucHJldmlvdXNEYXRhXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRvZ2dsZUVkaXRNb2RlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGNyaXRlcmlhLCBldmFsdWF0aW9uIH0gPSB0aGlzLmNyaXRlcmlhR3JvdXAoKS5nZXRSYXdWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMucHJldmlvdXNEYXRhID0geyBjcml0ZXJpYSwgZXZhbHVhdGlvbiB9O1xuICAgICAgICB0aGlzLmlzRWRpdE1vZGUudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG4gICAgfVxuXG4gICAgLy8gVE9ETzog0JrQvtC80L/QvtC90LXQvdGCINC00L7Qu9C20LXQvSDQsdGL0Lsg0LHRi9GC0Ywg0L/QvtGB0YLRgNC+0LXQvSDQuNGB0LrQu9GO0YfQuNGC0LXQu9GM0L3QviDQvdCwINGA0LXQsNC60YLQuNCy0L3Ri9GFINGE0L7RgNC80LDRhVxuICAgIHByaXZhdGUgaW5pdEVkaXRNb2RlRWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5jcml0ZXJpYUdyb3VwKClbdGhpcy5pc0VkaXRNb2RlKCkgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJ10oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TmV3RXZhbHVhdGlvbkNyaXRlcmlhRWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoKCkgPT4gdGhpcy5pc0VkaXRNb2RlLnNldCh0aGlzLmlzTmV3KCkpLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJc0V2YWx1YXRpb25Dcml0ZXJpYUV4aXN0KGV2YWx1YXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb250cm9scyA9IHRoaXMuZXZhbHVhdGlvbkNyaXRlcmlhRm9ybUFycmF5KCkuY29udHJvbHM7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xzLnNvbWUoKGNvbnRyb2w6IEZvcm1Hcm91cDxDdWlFdmFsdWF0aW9uQ3JpdGVyaWFHcm91cD4pID0+IHtcbiAgICAgICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzLmlkLnZhbHVlID09PSB0aGlzLmNyaXRlcmlhR3JvdXAoKS5jb250cm9scy5pZC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGAke2NvbnRyb2wuZ2V0KCdldmFsdWF0aW9uJyk/LnZhbHVlfWAgPT09IGV2YWx1YXRpb247XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgPGZvcm1cbiAgICAgICAgKmN1aUxldD1cImNyaXRlcmlhR3JvdXAoKSBhcyBmb3JtXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAgICAgW2NsYXNzLmZvcm1fZWRpdF09XCJpc0VkaXRNb2RlKClcIlxuICAgICAgICBjbGFzPVwiZm9ybVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRleFwiPnt7IGluZGV4KCkgfX0uPC9zcGFuPlxuICAgICAgICAgICAgQGlmICghaXNFZGl0TW9kZSgpKSB7XG4gICAgICAgICAgICAgICAgPGN1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgY3VpRHJhZ1BvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25EcmFnSGFuZGxlRG90c1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLWJhc2UtNTAwKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBzdHlsZS5nYXA9XCJ7eyBnYXAoKSB9fXB4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXBwZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxjdWktaW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImV2YWx1YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICBjdWlUZXh0RmllbGRQbGFjZWhvbGRlcj1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc0V2YWx1YXRpb25JbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAgICAgW21pbl09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgW21heF09XCI5OVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICBjdWlUZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjcml0ZXJpYVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc0NyaXRlcmlhSW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgdCgnQUREX0FfREVTQ1JJUFRJT04nKSB9fS4uLlwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKGlzRWRpdE1vZGUoKSkge1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIGN1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25DaGVja1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwidmFyKC0tY3VpLXN1Y2Nlc3MpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY3VpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblhDaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1kYW5nZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvbkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVFZGl0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiY3VpSWNvblRyYXNoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzTG9hZGVyU2hvd25dPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGN1aS1nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludFxuICAgICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5jb250cm9scy5jcml0ZXJpYVwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWhpbnRcIlxuICAgICAgICAvPlxuICAgIDwvZm9ybT5cbjwvZGl2PlxuIl19
@@ -8,13 +8,13 @@ export class CuiCircleLoaderComponent {
8
8
  this.size = input('md');
9
9
  }
10
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCircleLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiCircleLoaderComponent, isStandalone: true, selector: "cui-circle-loader", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "size()", "class._center": "position() === \"center\"" } }, ngImport: i0, template: "<cui-svg\n icon=\"cuiIconLoading\"\n color=\"var(--cui-base-900)\"\n class=\"loading\"\n/>\n", styles: [".loading{animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host.xs ::ng-deep svg{width:20px}:host.sm ::ng-deep svg{width:16px}:host.md ::ng-deep svg{width:32px}:host.lg ::ng-deep svg{width:64px}:host._center{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i1.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: CuiCircleLoaderComponent, isStandalone: true, selector: "cui-circle-loader", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "size()", "class._center": "position() === \"center\"" } }, ngImport: i0, template: "<cui-svg\n icon=\"cuiIconLoading\"\n color=\"var(--cui-base-900)\"\n class=\"loading\"\n/>\n", styles: [".loading{animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host.xs ::ng-deep svg{width:20px}:host.sm ::ng-deep svg{width:16px}:host.md ::ng-deep svg{width:32px}:host.lg ::ng-deep svg{width:64px}:host._center{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i1.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
12
  }
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CuiCircleLoaderComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'cui-circle-loader', standalone: true, imports: [CuiSvgModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
16
16
  '[class]': 'size()',
17
17
  '[class._center]': 'position() === "center"'
18
- }, template: "<cui-svg\n icon=\"cuiIconLoading\"\n color=\"var(--cui-base-900)\"\n class=\"loading\"\n/>\n", styles: [".loading{animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host.xs ::ng-deep svg{width:20px}:host.sm ::ng-deep svg{width:16px}:host.md ::ng-deep svg{width:32px}:host.lg ::ng-deep svg{width:64px}:host._center{display:flex;align-items:center;justify-content:center}\n"] }]
18
+ }, template: "<cui-svg\n icon=\"cuiIconLoading\"\n color=\"var(--cui-base-900)\"\n class=\"loading\"\n/>\n", styles: [".loading{animation:rotate 1s linear infinite}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host.xs ::ng-deep svg{width:20px}:host.sm ::ng-deep svg{width:16px}:host.md ::ng-deep svg{width:32px}:host.lg ::ng-deep svg{width:64px}:host._center{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:center}\n"] }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLWxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdWkvY2lyY2xlLWxvYWRlci9jaXJjbGUtbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jaXJjbGUtbG9hZGVyL2NpcmNsZS1sb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFjbkQsTUFBTSxPQUFPLHdCQUF3QjtJQVpyQztRQWFvQixhQUFRLEdBQUcsS0FBSyxDQUFvQixNQUFNLENBQUMsQ0FBQztRQUM1QyxTQUFJLEdBQUcsS0FBSyxDQUFzQixJQUFJLENBQUMsQ0FBQztLQUMzRDsrR0FIWSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwwYUNqQnJDLHVHQUtBLDJYREdjLFlBQVk7OzRGQVNiLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDSSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0sUUFHekM7d0JBQ0YsU0FBUyxFQUFFLFFBQVE7d0JBQ25CLGlCQUFpQixFQUFFLHlCQUF5QjtxQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDdWlDaXJjbGVMb2FkZXJTaXplIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuaW1wb3J0IHsgQ3VpU3ZnTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWNpcmNsZS1sb2FkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0N1aVN2Z01vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NpcmNsZS1sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jaXJjbGUtbG9hZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3NdJzogJ3NpemUoKScsXG4gICAgICAgICdbY2xhc3MuX2NlbnRlcl0nOiAncG9zaXRpb24oKSA9PT0gXCJjZW50ZXJcIidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEN1aUNpcmNsZUxvYWRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8J2NlbnRlcicgfCAnYXV0byc+KCdhdXRvJyk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxDdWlDaXJjbGVMb2FkZXJTaXplPignbWQnKTtcbn1cbiIsIjxjdWktc3ZnXG4gICAgaWNvbj1cImN1aUljb25Mb2FkaW5nXCJcbiAgICBjb2xvcj1cInZhcigtLWN1aS1iYXNlLTkwMClcIlxuICAgIGNsYXNzPVwibG9hZGluZ1wiXG4vPlxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLWxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3dpZGdldHMvdWkvY2lyY2xlLWxvYWRlci9jaXJjbGUtbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jaXJjbGUtbG9hZGVyL2NpcmNsZS1sb2FkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFjbkQsTUFBTSxPQUFPLHdCQUF3QjtJQVpyQztRQWFvQixhQUFRLEdBQUcsS0FBSyxDQUFvQixNQUFNLENBQUMsQ0FBQztRQUM1QyxTQUFJLEdBQUcsS0FBSyxDQUFzQixJQUFJLENBQUMsQ0FBQztLQUMzRDsrR0FIWSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwwYUNqQnJDLHVHQUtBLG9aREdjLFlBQVk7OzRGQVNiLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDSSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0sUUFHekM7d0JBQ0YsU0FBUyxFQUFFLFFBQVE7d0JBQ25CLGlCQUFpQixFQUFFLHlCQUF5QjtxQkFDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDdWlDaXJjbGVMb2FkZXJTaXplIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuaW1wb3J0IHsgQ3VpU3ZnTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWNpcmNsZS1sb2FkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0N1aVN2Z01vZHVsZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NpcmNsZS1sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jaXJjbGUtbG9hZGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3NdJzogJ3NpemUoKScsXG4gICAgICAgICdbY2xhc3MuX2NlbnRlcl0nOiAncG9zaXRpb24oKSA9PT0gXCJjZW50ZXJcIidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEN1aUNpcmNsZUxvYWRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uID0gaW5wdXQ8J2NlbnRlcicgfCAnYXV0byc+KCdhdXRvJyk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxDdWlDaXJjbGVMb2FkZXJTaXplPignbWQnKTtcbn1cbiIsIjxjdWktc3ZnXG4gICAgaWNvbj1cImN1aUljb25Mb2FkaW5nXCJcbiAgICBjb2xvcj1cInZhcigtLWN1aS1iYXNlLTkwMClcIlxuICAgIGNsYXNzPVwibG9hZGluZ1wiXG4vPlxuIl19
@@ -56,7 +56,7 @@ export class ConsumableFormItemComponent {
56
56
  });
57
57
  }
58
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
59
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConsumableFormItemComponent, isStandalone: true, selector: "cc-consumable-form-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, consumptionOptions: { classPropertyName: "consumptionOptions", publicName: "consumptionOptions", isSignal: true, isRequired: true, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { consumableChanged: "consumableChanged" }, ngImport: i0, template: "@let formData = form();\n\n@if (readonly()) {\n <cui-consumable-form-item-readonly\n [title]=\"title()\"\n [consumable]=\"consumable()\"\n />\n} @else {\n <form\n [formGroup]=\"formData\"\n *transloco=\"let t\"\n class=\"form\"\n >\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"wrapper-input\">\n <div class=\"form__input\">\n @let quantity = formData.controls.quantity;\n\n <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n <div class=\"field\">\n <cui-input-number\n [cuiTextFieldId]=\"quantityId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"quantity\"\n [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"piecesOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"quantity\"\n [isVisible]=\"!!quantity.errors && quantity.dirty\"\n />\n </div>\n\n <div class=\"form__input\">\n @let measureFormGroup = formData.controls.measure;\n @let consumption = measureFormGroup.controls.value;\n\n <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n <div\n class=\"field\"\n [formGroup]=\"measureFormGroup\"\n >\n <cui-input-number\n [cuiTextFieldId]=\"consumptionId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"value\"\n [precision]=\"3\"\n [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"consumptionOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"consumption\"\n [isVisible]=\"!!consumption.errors && consumption.dirty\"\n />\n </div>\n </div>\n </form>\n}\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px;align-self:center}.input{padding-right:84px;width:240px}.options{position:absolute;inset:1px 1px 1px auto;min-width:90px}.options ::ng-deep .c-button{border:0;height:100%}.options--error{inset:1px 20px 1px auto}.wrapper-input{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}.form{display:flex;gap:8px;flex-wrap:wrap}.form__input{display:flex;flex-direction:column;gap:4px}.form__input cui-general-control-error-hint{display:block;min-height:20px}.field{display:flex;gap:4px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: i2.CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: i3.CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i4.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i5.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "component", type: i6.CuiSelectComponent, selector: "cui-select[options]", inputs: ["options", "defaultOptionText"] }, { kind: "component", type: ConsumableFormItemReadonlyComponent, selector: "cui-consumable-form-item-readonly", inputs: ["title", "consumable"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConsumableFormItemComponent, isStandalone: true, selector: "cc-consumable-form-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, consumptionOptions: { classPropertyName: "consumptionOptions", publicName: "consumptionOptions", isSignal: true, isRequired: true, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { consumableChanged: "consumableChanged" }, ngImport: i0, template: "@let formData = form();\n\n@if (readonly()) {\n <cui-consumable-form-item-readonly\n [title]=\"title()\"\n [consumable]=\"consumable()\"\n />\n} @else {\n <form\n [formGroup]=\"formData\"\n *transloco=\"let t\"\n class=\"form\"\n >\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"wrapper-input\">\n <div class=\"form__input\">\n @let quantity = formData.controls.quantity;\n\n <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n <div class=\"field\">\n <cui-input-number\n [cuiTextFieldId]=\"quantityId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"quantity\"\n [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"piecesOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"quantity\"\n [isVisible]=\"!!quantity.errors && quantity.dirty\"\n />\n </div>\n\n <div class=\"form__input\">\n @let measureFormGroup = formData.controls.measure;\n @let consumption = measureFormGroup.controls.value;\n\n <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n <div\n class=\"field\"\n [formGroup]=\"measureFormGroup\"\n >\n <cui-input-number\n [cuiTextFieldId]=\"consumptionId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"value\"\n [precision]=\"3\"\n [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"consumptionOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"consumption\"\n [isVisible]=\"!!consumption.errors && consumption.dirty\"\n />\n </div>\n </div>\n </form>\n}\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px;align-self:center}.input{padding-right:84px;width:240px}.options{position:absolute;inset:1px 1px 1px auto;min-width:90px}.options ::ng-deep .c-button{border:0;height:100%}.options--error{inset:1px 20px 1px auto}.wrapper-input{display:flex;flex-direction:row;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}.form{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap}.form__input{display:flex;flex-direction:column;gap:4px}.form__input cui-general-control-error-hint{display:block;min-height:20px}.field{display:flex;flex-direction:row;gap:4px;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "component", type: i2.CuiInputNumberComponent, selector: "cui-input-number", inputs: ["precision", "min", "max"] }, { kind: "directive", type: i3.CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i4.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i5.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "ngmodule", type: CuiSelectModule }, { kind: "component", type: i6.CuiSelectComponent, selector: "cui-select[options]", inputs: ["options", "defaultOptionText"] }, { kind: "component", type: ConsumableFormItemReadonlyComponent, selector: "cui-consumable-form-item-readonly", inputs: ["title", "consumable"] }, { kind: "component", type: CuiGeneralControlErrorHintComponent, selector: "cui-general-control-error-hint", inputs: ["control", "isVisible"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
60
  }
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormItemComponent, decorators: [{
62
62
  type: Component,
@@ -73,6 +73,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
73
73
  CuiSelectModule,
74
74
  ConsumableFormItemReadonlyComponent,
75
75
  CuiGeneralControlErrorHintComponent
76
- ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "@let formData = form();\n\n@if (readonly()) {\n <cui-consumable-form-item-readonly\n [title]=\"title()\"\n [consumable]=\"consumable()\"\n />\n} @else {\n <form\n [formGroup]=\"formData\"\n *transloco=\"let t\"\n class=\"form\"\n >\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"wrapper-input\">\n <div class=\"form__input\">\n @let quantity = formData.controls.quantity;\n\n <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n <div class=\"field\">\n <cui-input-number\n [cuiTextFieldId]=\"quantityId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"quantity\"\n [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"piecesOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"quantity\"\n [isVisible]=\"!!quantity.errors && quantity.dirty\"\n />\n </div>\n\n <div class=\"form__input\">\n @let measureFormGroup = formData.controls.measure;\n @let consumption = measureFormGroup.controls.value;\n\n <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n <div\n class=\"field\"\n [formGroup]=\"measureFormGroup\"\n >\n <cui-input-number\n [cuiTextFieldId]=\"consumptionId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"value\"\n [precision]=\"3\"\n [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"consumptionOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"consumption\"\n [isVisible]=\"!!consumption.errors && consumption.dirty\"\n />\n </div>\n </div>\n </form>\n}\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px;align-self:center}.input{padding-right:84px;width:240px}.options{position:absolute;inset:1px 1px 1px auto;min-width:90px}.options ::ng-deep .c-button{border:0;height:100%}.options--error{inset:1px 20px 1px auto}.wrapper-input{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}.form{display:flex;gap:8px;flex-wrap:wrap}.form__input{display:flex;flex-direction:column;gap:4px}.form__input cui-general-control-error-hint{display:block;min-height:20px}.field{display:flex;gap:4px;position:relative}\n"] }]
76
+ ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "@let formData = form();\n\n@if (readonly()) {\n <cui-consumable-form-item-readonly\n [title]=\"title()\"\n [consumable]=\"consumable()\"\n />\n} @else {\n <form\n [formGroup]=\"formData\"\n *transloco=\"let t\"\n class=\"form\"\n >\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"wrapper-input\">\n <div class=\"form__input\">\n @let quantity = formData.controls.quantity;\n\n <label [for]=\"consumptionId\">{{ t('AMOUNT') }}</label>\n <div class=\"field\">\n <cui-input-number\n [cuiTextFieldId]=\"quantityId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"quantity\"\n [cuiTextFieldIsError]=\"!!quantity.errors && quantity.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"piecesOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"quantity\"\n [isVisible]=\"!!quantity.errors && quantity.dirty\"\n />\n </div>\n\n <div class=\"form__input\">\n @let measureFormGroup = formData.controls.measure;\n @let consumption = measureFormGroup.controls.value;\n\n <label [for]=\"consumptionId\">{{ t('MEASURE') }}</label>\n <div\n class=\"field\"\n [formGroup]=\"measureFormGroup\"\n >\n <cui-input-number\n [cuiTextFieldId]=\"consumptionId\"\n cuiTextFieldPlaceholder=\"0\"\n formControlName=\"value\"\n [precision]=\"3\"\n [cuiTextFieldIsError]=\"!!consumption.errors && consumption.dirty\"\n class=\"input\"\n />\n\n <cui-select\n [options]=\"consumptionOptions()\"\n [class.options--error]=\"hasFormError()\"\n formControlName=\"unit\"\n class=\"options\"\n />\n </div>\n <cui-general-control-error-hint\n [control]=\"consumption\"\n [isVisible]=\"!!consumption.errors && consumption.dirty\"\n />\n </div>\n </div>\n </form>\n}\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px;align-self:center}.input{padding-right:84px;width:240px}.options{position:absolute;inset:1px 1px 1px auto;min-width:90px}.options ::ng-deep .c-button{border:0;height:100%}.options--error{inset:1px 20px 1px auto}.wrapper-input{display:flex;flex-direction:row;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}.form{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap}.form__input{display:flex;flex-direction:column;gap:4px}.form__input cui-general-control-error-hint{display:block;min-height:20px}.field{display:flex;flex-direction:row;gap:4px;position:relative}\n"] }]
77
77
  }], ctorParameters: () => [] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtYWJsZS1mb3JtLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3VpL2NvbnN1bWFibGUtZm9ybS9jb21wb25lbnRzL2NvbnN1bWFibGUtZm9ybS1pdGVtL2NvbnN1bWFibGUtZm9ybS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29tcG9uZW50cy9jb25zdW1hYmxlLWZvcm0taXRlbS9jb25zdW1hYmxlLWZvcm0taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsY0FBYyxF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LENBQUM7K0dBcERRLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhwQkM5Q3hDLDh1RkEyRUEsbXNCRC9DUSxrQkFBa0IsOEJBQ2xCLGVBQWUsOEJBQ2Ysb0JBQW9CLDhCQUNwQixtQkFBbUIsNnJCQUNuQixrQkFBa0IsK0xBQ2xCLG9CQUFvQiw2aEJBQ3BCLFlBQVksOEJBQ1osa0JBQWtCLDhCQUNsQixjQUFjLDhCQUNkLGVBQWUsOEpBQ2YsbUNBQW1DLCtHQUNuQyxtQ0FBbUM7OzRGQU85QiwyQkFBMkI7a0JBckJ2QyxTQUFTOytCQUNJLHlCQUF5QixXQUMxQjt3QkFDTCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLG1DQUFtQzt3QkFDbkMsbUNBQW1DO3FCQUN0QyxtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIERlc3Ryb3lSZWYsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDdWlDb25zdW1wdGlvblVuaXRzU2VydmljZSwgQ3VpSWRTZXJ2aWNlLCBVbml0c0Ftb3VudCB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5cbmltcG9ydCB7IFRyYW5zbG9jb0RpcmVjdGl2ZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUgeyBDb25zdW1hYmxlRm9ybUdyb3VwLCBDb25zdW1hYmxlRm9ybVZhbHVlcyB9IGZyb20gJy4uLy4uL2NvbnN1bWFibGUtZm9ybS5vcHRpb25zJztcbmltcG9ydCB7IENvbnN1bWFibGVGb3JtSXRlbVJlYWRvbmx5Q29tcG9uZW50IH0gZnJvbSAnLi4vY29uc3VtYWJsZS1mb3JtLWl0ZW0tcmVhZG9ubHknO1xuaW1wb3J0IHsgQ1VJX0RFRkFVTFRfQ09OVFJPTF9ERUxBWSB9IGZyb20gJy4vZGVmYXVsdC1jb250cm9sLWRlbGF5JztcbmltcG9ydCB7XG4gICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgIEN1aUJ1dHRvbk1vZHVsZSxcbiAgICBDdWlDb250ZXh0TWVudU1vZHVsZSxcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgQ3VpU2VsZWN0TW9kdWxlLFxuICAgIEN1aVN2Z01vZHVsZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VuZXJhbC1jb250cm9sLWVycm9yLWhpbnQnO1xuaW1wb3J0IHsgQ3VpT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2MtY29uc3VtYWJsZS1mb3JtLWl0ZW0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUNvbnRleHRNZW51TW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xvY29EaXJlY3RpdmUsXG4gICAgICAgIEN1aUlucHV0TnVtYmVyTW9kdWxlLFxuICAgICAgICBDdWlTdmdNb2R1bGUsXG4gICAgICAgIEN1aUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgICAgIEN1aVNlbGVjdE1vZHVsZSxcbiAgICAgICAgQ29uc3VtYWJsZUZvcm1JdGVtUmVhZG9ubHlDb21wb25lbnQsXG4gICAgICAgIEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50XG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uc3VtYWJsZS1mb3JtLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0taXRlbS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb25zdW1hYmxlRm9ybUl0ZW1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUlkU2VydmljZSA9IGluamVjdChDdWlJZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UgPSBpbmplY3QoQ3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1YW50aXR5SWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25zdW1wdGlvbklkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uc3VtYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9ybSgpLmdldFJhd1ZhbHVlKCkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwaWVjZXNPcHRpb25zID0gY29tcHV0ZWQ8Q3VpT3B0aW9uW10+KCgpID0+XG4gICAgICAgIFVuaXRzQW1vdW50Lm1hcCgodW5pdCkgPT4gKHsgbGFiZWw6IHVuaXQuYWJicmV2aWF0aW9uLCB2YWx1ZTogdW5pdC52YWx1ZSB9KSlcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25zdW1wdGlvbk9wdGlvbnMgPSBpbnB1dC5yZXF1aXJlZDxDdWlPcHRpb25bXT4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IGlucHV0LnJlcXVpcmVkPEZvcm1Hcm91cDxDb25zdW1hYmxlRm9ybUdyb3VwPj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uc3VtYWJsZUNoYW5nZWQgPSBvdXRwdXQ8UGFydGlhbDxDb25zdW1hYmxlRm9ybVZhbHVlcz4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUNoYW5nZXNFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzRm9ybUVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtKCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm0uaW52YWxpZCAmJiBmb3JtLnRvdWNoZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Rm9ybUNoYW5nZXNFZmZlY3QoKTogdm9pZCB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtKCk7XG5cbiAgICAgICAgICAgIGZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKENVSV9ERUZBVUxUX0NPTlRST0xfREVMQVkpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWFibGVDaGFuZ2VkLmVtaXQodmFsdWUgYXMgUGFydGlhbDxDb25zdW1hYmxlRm9ybVZhbHVlcz4pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBtZWFzdXJlRm9ybUdyb3VwID0gZm9ybS5jb250cm9scy5tZWFzdXJlO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZU1lYXN1cmVDb250cm9sID0gbWVhc3VyZUZvcm1Hcm91cC5jb250cm9scy5tZWFzdXJlO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZVVuaXRDb250cm9sID0gbWVhc3VyZUZvcm1Hcm91cC5jb250cm9scy51bml0O1xuXG4gICAgICAgICAgICBtZWFzdXJlVW5pdENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodW5pdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSB0aGlzLmN1aUNvbnN1bXB0aW9uVW5pdHNTZXJ2aWNlLmdldENvbnN1bXB0aW9uQnlVbml0KHVuaXQpO1xuICAgICAgICAgICAgICAgIG1lYXN1cmVNZWFzdXJlQ29udHJvbC5wYXRjaFZhbHVlKG1lYXN1cmUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJAbGV0IGZvcm1EYXRhID0gZm9ybSgpO1xuXG5AaWYgKHJlYWRvbmx5KCkpIHtcbiAgICA8Y3VpLWNvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5XG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICAgICAgW2NvbnN1bWFibGVdPVwiY29uc3VtYWJsZSgpXCJcbiAgICAvPlxufSBAZWxzZSB7XG4gICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtRGF0YVwiXG4gICAgICAgICp0cmFuc2xvY289XCJsZXQgdFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybVwiXG4gICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgdGl0bGUoKSB9fTwvc3Bhbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlci1pbnB1dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2lucHV0XCI+XG4gICAgICAgICAgICAgICAgQGxldCBxdWFudGl0eSA9IGZvcm1EYXRhLmNvbnRyb2xzLnF1YW50aXR5O1xuXG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY29uc3VtcHRpb25JZFwiPnt7IHQoJ0FNT1VOVCcpIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGN1aS1pbnB1dC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJZF09XCJxdWFudGl0eUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1aVRleHRGaWVsZFBsYWNlaG9sZGVyPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCIhIXF1YW50aXR5LmVycm9ycyAmJiBxdWFudGl0eS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8Y3VpLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicGllY2VzT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5vcHRpb25zLS1lcnJvcl09XCJoYXNGb3JtRXJyb3IoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1bml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGN1aS1nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludFxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1Zpc2libGVdPVwiISFxdWFudGl0eS5lcnJvcnMgJiYgcXVhbnRpdHkuZGlydHlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2lucHV0XCI+XG4gICAgICAgICAgICAgICAgQGxldCBtZWFzdXJlRm9ybUdyb3VwID0gZm9ybURhdGEuY29udHJvbHMubWVhc3VyZTtcbiAgICAgICAgICAgICAgICBAbGV0IGNvbnN1bXB0aW9uID0gbWVhc3VyZUZvcm1Hcm91cC5jb250cm9scy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbnN1bXB0aW9uSWRcIj57eyB0KCdNRUFTVVJFJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwibWVhc3VyZUZvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y3VpLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZElkXT1cImNvbnN1bXB0aW9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3VpVGV4dEZpZWxkUGxhY2Vob2xkZXI9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVjaXNpb25dPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCIhIWNvbnN1bXB0aW9uLmVycm9ycyAmJiBjb25zdW1wdGlvbi5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8Y3VpLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29uc3VtcHRpb25PcHRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wdGlvbnMtLWVycm9yXT1cImhhc0Zvcm1FcnJvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Y3VpLWdlbmVyYWwtY29udHJvbC1lcnJvci1oaW50XG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnN1bXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzVmlzaWJsZV09XCIhIWNvbnN1bXB0aW9uLmVycm9ycyAmJiBjb25zdW1wdGlvbi5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtYWJsZS1mb3JtLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3VpL2NvbnN1bWFibGUtZm9ybS9jb21wb25lbnRzL2NvbnN1bWFibGUtZm9ybS1pdGVtL2NvbnN1bWFibGUtZm9ybS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29tcG9uZW50cy9jb25zdW1hYmxlLWZvcm0taXRlbS9jb25zdW1hYmxlLWZvcm0taXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsY0FBYyxF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LENBQUM7K0dBcERRLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhwQkM5Q3hDLDh1RkEyRUEsNHZCRC9DUSxrQkFBa0IsOEJBQ2xCLGVBQWUsOEJBQ2Ysb0JBQW9CLDhCQUNwQixtQkFBbUIsNnJCQUNuQixrQkFBa0IsK0xBQ2xCLG9CQUFvQiw2aEJBQ3BCLFlBQVksOEJBQ1osa0JBQWtCLDhCQUNsQixjQUFjLDhCQUNkLGVBQWUsOEpBQ2YsbUNBQW1DLCtHQUNuQyxtQ0FBbUM7OzRGQU85QiwyQkFBMkI7a0JBckJ2QyxTQUFTOytCQUNJLHlCQUF5QixXQUMxQjt3QkFDTCxrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLG1DQUFtQzt3QkFDbkMsbUNBQW1DO3FCQUN0QyxtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIERlc3Ryb3lSZWYsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgdHlwZSB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDdWlDb25zdW1wdGlvblVuaXRzU2VydmljZSwgQ3VpSWRTZXJ2aWNlLCBVbml0c0Ftb3VudCB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5cbmltcG9ydCB7IFRyYW5zbG9jb0RpcmVjdGl2ZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUgeyBDb25zdW1hYmxlRm9ybUdyb3VwLCBDb25zdW1hYmxlRm9ybVZhbHVlcyB9IGZyb20gJy4uLy4uL2NvbnN1bWFibGUtZm9ybS5vcHRpb25zJztcbmltcG9ydCB7IENvbnN1bWFibGVGb3JtSXRlbVJlYWRvbmx5Q29tcG9uZW50IH0gZnJvbSAnLi4vY29uc3VtYWJsZS1mb3JtLWl0ZW0tcmVhZG9ubHknO1xuaW1wb3J0IHsgQ1VJX0RFRkFVTFRfQ09OVFJPTF9ERUxBWSB9IGZyb20gJy4vZGVmYXVsdC1jb250cm9sLWRlbGF5JztcbmltcG9ydCB7XG4gICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgIEN1aUJ1dHRvbk1vZHVsZSxcbiAgICBDdWlDb250ZXh0TWVudU1vZHVsZSxcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgQ3VpU2VsZWN0TW9kdWxlLFxuICAgIEN1aVN2Z01vZHVsZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VuZXJhbC1jb250cm9sLWVycm9yLWhpbnQnO1xuaW1wb3J0IHsgQ3VpT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2MtY29uc3VtYWJsZS1mb3JtLWl0ZW0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUNvbnRleHRNZW51TW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xvY29EaXJlY3RpdmUsXG4gICAgICAgIEN1aUlucHV0TnVtYmVyTW9kdWxlLFxuICAgICAgICBDdWlTdmdNb2R1bGUsXG4gICAgICAgIEN1aUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgICAgIEN1aVNlbGVjdE1vZHVsZSxcbiAgICAgICAgQ29uc3VtYWJsZUZvcm1JdGVtUmVhZG9ubHlDb21wb25lbnQsXG4gICAgICAgIEN1aUdlbmVyYWxDb250cm9sRXJyb3JIaW50Q29tcG9uZW50XG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uc3VtYWJsZS1mb3JtLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0taXRlbS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb25zdW1hYmxlRm9ybUl0ZW1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUlkU2VydmljZSA9IGluamVjdChDdWlJZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UgPSBpbmplY3QoQ3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1YW50aXR5SWQgPSB0aGlzLmN1aUlkU2VydmljZS5nZW5lcmF0ZSgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25zdW1wdGlvbklkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uc3VtYWJsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9ybSgpLmdldFJhd1ZhbHVlKCkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwaWVjZXNPcHRpb25zID0gY29tcHV0ZWQ8Q3VpT3B0aW9uW10+KCgpID0+XG4gICAgICAgIFVuaXRzQW1vdW50Lm1hcCgodW5pdCkgPT4gKHsgbGFiZWw6IHVuaXQuYWJicmV2aWF0aW9uLCB2YWx1ZTogdW5pdC52YWx1ZSB9KSlcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25zdW1wdGlvbk9wdGlvbnMgPSBpbnB1dC5yZXF1aXJlZDxDdWlPcHRpb25bXT4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IGlucHV0LnJlcXVpcmVkPEZvcm1Hcm91cDxDb25zdW1hYmxlRm9ybUdyb3VwPj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uc3VtYWJsZUNoYW5nZWQgPSBvdXRwdXQ8UGFydGlhbDxDb25zdW1hYmxlRm9ybVZhbHVlcz4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5pbml0Rm9ybUNoYW5nZXNFZmZlY3QoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFzRm9ybUVycm9yKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtKCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm0uaW52YWxpZCAmJiBmb3JtLnRvdWNoZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0Rm9ybUNoYW5nZXNFZmZlY3QoKTogdm9pZCB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtKCk7XG5cbiAgICAgICAgICAgIGZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKENVSV9ERUZBVUxUX0NPTlRST0xfREVMQVkpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWFibGVDaGFuZ2VkLmVtaXQodmFsdWUgYXMgUGFydGlhbDxDb25zdW1hYmxlRm9ybVZhbHVlcz4pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBtZWFzdXJlRm9ybUdyb3VwID0gZm9ybS5jb250cm9scy5tZWFzdXJlO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZU1lYXN1cmVDb250cm9sID0gbWVhc3VyZUZvcm1Hcm91cC5jb250cm9scy5tZWFzdXJlO1xuICAgICAgICAgICAgY29uc3QgbWVhc3VyZVVuaXRDb250cm9sID0gbWVhc3VyZUZvcm1Hcm91cC5jb250cm9scy51bml0O1xuXG4gICAgICAgICAgICBtZWFzdXJlVW5pdENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodW5pdCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lYXN1cmUgPSB0aGlzLmN1aUNvbnN1bXB0aW9uVW5pdHNTZXJ2aWNlLmdldENvbnN1bXB0aW9uQnlVbml0KHVuaXQpO1xuICAgICAgICAgICAgICAgIG1lYXN1cmVNZWFzdXJlQ29udHJvbC5wYXRjaFZhbHVlKG1lYXN1cmUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCJAbGV0IGZvcm1EYXRhID0gZm9ybSgpO1xuXG5AaWYgKHJlYWRvbmx5KCkpIHtcbiAgICA8Y3VpLWNvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5XG4gICAgICAgIFt0aXRsZV09XCJ0aXRsZSgpXCJcbiAgICAgICAgW2NvbnN1bWFibGVdPVwiY29uc3VtYWJsZSgpXCJcbiAgICAvPlxufSBAZWxzZSB7XG4gICAgPGZvcm1cbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtRGF0YVwiXG4gICAgICAgICp0cmFuc2xvY289XCJsZXQgdFwiXG4gICAgICAgIGNsYXNzPVwiZm9ybVwiXG4gICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgdGl0bGUoKSB9fTwvc3Bhbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlci1pbnB1dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2lucHV0XCI+XG4gICAgICAgICAgICAgICAgQGxldCBxdWFudGl0eSA9IGZvcm1EYXRhLmNvbnRyb2xzLnF1YW50aXR5O1xuXG4gICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiY29uc3VtcHRpb25JZFwiPnt7IHQoJ0FNT1VOVCcpIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGN1aS1pbnB1dC1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdWlUZXh0RmllbGRJZF09XCJxdWFudGl0eUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1aVRleHRGaWVsZFBsYWNlaG9sZGVyPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCIhIXF1YW50aXR5LmVycm9ycyAmJiBxdWFudGl0eS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8Y3VpLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicGllY2VzT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5vcHRpb25zLS1lcnJvcl09XCJoYXNGb3JtRXJyb3IoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1bml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGN1aS1nZW5lcmFsLWNvbnRyb2wtZXJyb3ItaGludFxuICAgICAgICAgICAgICAgICAgICBbY29udHJvbF09XCJxdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1Zpc2libGVdPVwiISFxdWFudGl0eS5lcnJvcnMgJiYgcXVhbnRpdHkuZGlydHlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2lucHV0XCI+XG4gICAgICAgICAgICAgICAgQGxldCBtZWFzdXJlRm9ybUdyb3VwID0gZm9ybURhdGEuY29udHJvbHMubWVhc3VyZTtcbiAgICAgICAgICAgICAgICBAbGV0IGNvbnN1bXB0aW9uID0gbWVhc3VyZUZvcm1Hcm91cC5jb250cm9scy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImNvbnN1bXB0aW9uSWRcIj57eyB0KCdNRUFTVVJFJykgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwibWVhc3VyZUZvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Y3VpLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZElkXT1cImNvbnN1bXB0aW9uSWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3VpVGV4dEZpZWxkUGxhY2Vob2xkZXI9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVjaXNpb25dPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCIhIWNvbnN1bXB0aW9uLmVycm9ycyAmJiBjb25zdW1wdGlvbi5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICA8Y3VpLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiY29uc3VtcHRpb25PcHRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLm9wdGlvbnMtLWVycm9yXT1cImhhc0Zvcm1FcnJvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVuaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8Y3VpLWdlbmVyYWwtY29udHJvbC1lcnJvci1oaW50XG4gICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImNvbnN1bXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzVmlzaWJsZV09XCIhIWNvbnN1bXB0aW9uLmVycm9ycyAmJiBjb25zdW1wdGlvbi5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG59XG4iXX0=
@@ -8,10 +8,10 @@ export class ConsumableFormItemReadonlyComponent {
8
8
  this.consumable = input.required();
9
9
  }
10
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormItemReadonlyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ConsumableFormItemReadonlyComponent, isStandalone: true, selector: "cui-consumable-form-item-readonly", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, consumable: { classPropertyName: "consumable", publicName: "consumable", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let consumableData = consumable();\n\n<form\n *transloco=\"let t\"\n class=\"form\"\n>\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"content\">\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('AMOUNT') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.quantity }}</span>\n <span class=\"readonly-item\">{{ consumableData.unit | lowercase }}</span>\n </div>\n\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('MEASURE') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.measure.value }}</span>\n <span class=\"readonly-item\">{{ consumableData.measure.unit | lowercase }}</span>\n </div>\n </div>\n</form>\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px}.content{display:flex;flex-direction:column;gap:8px}.input{padding-right:84px;width:134px}.options{position:absolute;inset:1px 1px 1px auto;min-width:80px}.options ::ng-deep .c-button{border:0}.form{display:flex;gap:8px}.field{display:flex;gap:4px;position:relative}\n"], dependencies: [{ kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ConsumableFormItemReadonlyComponent, isStandalone: true, selector: "cui-consumable-form-item-readonly", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, consumable: { classPropertyName: "consumable", publicName: "consumable", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "@let consumableData = consumable();\n\n<form\n *transloco=\"let t\"\n class=\"form\"\n>\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"content\">\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('AMOUNT') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.quantity }}</span>\n <span class=\"readonly-item\">{{ consumableData.unit | lowercase }}</span>\n </div>\n\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('MEASURE') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.measure.value }}</span>\n <span class=\"readonly-item\">{{ consumableData.measure.unit | lowercase }}</span>\n </div>\n </div>\n</form>\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px}.content{display:flex;flex-direction:column;gap:8px}.input{padding-right:84px;width:134px}.options{position:absolute;inset:1px 1px 1px auto;min-width:80px}.options ::ng-deep .c-button{border:0}.form{display:flex;flex-direction:row;gap:8px}.field{display:flex;flex-direction:row;gap:4px;position:relative}\n"], dependencies: [{ kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "pipe", type: LowerCasePipe, name: "lowercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
12
  }
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormItemReadonlyComponent, decorators: [{
14
14
  type: Component,
15
- args: [{ selector: 'cui-consumable-form-item-readonly', imports: [TranslocoDirective, LowerCasePipe], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "@let consumableData = consumable();\n\n<form\n *transloco=\"let t\"\n class=\"form\"\n>\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"content\">\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('AMOUNT') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.quantity }}</span>\n <span class=\"readonly-item\">{{ consumableData.unit | lowercase }}</span>\n </div>\n\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('MEASURE') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.measure.value }}</span>\n <span class=\"readonly-item\">{{ consumableData.measure.unit | lowercase }}</span>\n </div>\n </div>\n</form>\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px}.content{display:flex;flex-direction:column;gap:8px}.input{padding-right:84px;width:134px}.options{position:absolute;inset:1px 1px 1px auto;min-width:80px}.options ::ng-deep .c-button{border:0}.form{display:flex;gap:8px}.field{display:flex;gap:4px;position:relative}\n"] }]
15
+ args: [{ selector: 'cui-consumable-form-item-readonly', imports: [TranslocoDirective, LowerCasePipe], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "@let consumableData = consumable();\n\n<form\n *transloco=\"let t\"\n class=\"form\"\n>\n <span class=\"title\">{{ title() }}</span>\n\n <div class=\"content\">\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('AMOUNT') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.quantity }}</span>\n <span class=\"readonly-item\">{{ consumableData.unit | lowercase }}</span>\n </div>\n\n <div class=\"field\">\n <span class=\"readonly-item\">{{ t('MEASURE') }}:</span>\n <span class=\"readonly-item\">{{ consumableData.measure.value }}</span>\n <span class=\"readonly-item\">{{ consumableData.measure.unit | lowercase }}</span>\n </div>\n </div>\n</form>\n", styles: [":host{padding-top:6px;padding-bottom:6px;display:block}.title{font-weight:400;font-size:14px;line-height:20px;min-width:80px}.content{display:flex;flex-direction:column;gap:8px}.input{padding-right:84px;width:134px}.options{position:absolute;inset:1px 1px 1px auto;min-width:80px}.options ::ng-deep .c-button{border:0}.form{display:flex;flex-direction:row;gap:8px}.field{display:flex;flex-direction:row;gap:4px;position:relative}\n"] }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtYWJsZS1mb3JtLWl0ZW0tcmVhZG9ubHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3VpL2NvbnN1bWFibGUtZm9ybS9jb21wb25lbnRzL2NvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5L2NvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29tcG9uZW50cy9jb25zdW1hYmxlLWZvcm0taXRlbS1yZWFkb25seS9jb25zdW1hYmxlLWZvcm0taXRlbS1yZWFkb25seS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBWXhELE1BQU0sT0FBTyxtQ0FBbUM7SUFSaEQ7UUFTb0IsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBd0IsQ0FBQztLQUN2RTsrR0FIWSxtQ0FBbUM7bUdBQW5DLG1DQUFtQyxzV0NkaEQsNndCQXNCQSxtY0RkYyxrQkFBa0IsMkxBQUUsYUFBYTs7NEZBTWxDLG1DQUFtQztrQkFSL0MsU0FBUzsrQkFDSSxtQ0FBbUMsV0FDcEMsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbG9jb0RpcmVjdGl2ZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3VtYWJsZUZvcm1WYWx1ZXMgfSBmcm9tICcuLi8uLi9jb25zdW1hYmxlLWZvcm0ub3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWNvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5JyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsb2NvRGlyZWN0aXZlLCBMb3dlckNhc2VQaXBlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uc3VtYWJsZS1mb3JtLWl0ZW0tcmVhZG9ubHkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0taXRlbS1yZWFkb25seS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb25zdW1hYmxlRm9ybUl0ZW1SZWFkb25seUNvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25zdW1hYmxlID0gaW5wdXQucmVxdWlyZWQ8Q29uc3VtYWJsZUZvcm1WYWx1ZXM+KCk7XG59XG4iLCJAbGV0IGNvbnN1bWFibGVEYXRhID0gY29uc3VtYWJsZSgpO1xuXG48Zm9ybVxuICAgICp0cmFuc2xvY289XCJsZXQgdFwiXG4gICAgY2xhc3M9XCJmb3JtXCJcbj5cbiAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgdGl0bGUoKSB9fTwvc3Bhbj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+e3sgdCgnQU1PVU5UJykgfX06PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+e3sgY29uc3VtYWJsZURhdGEucXVhbnRpdHkgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj57eyBjb25zdW1hYmxlRGF0YS51bml0IHwgbG93ZXJjYXNlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPnt7IHQoJ01FQVNVUkUnKSB9fTo8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj57eyBjb25zdW1hYmxlRGF0YS5tZWFzdXJlLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+e3sgY29uc3VtYWJsZURhdGEubWVhc3VyZS51bml0IHwgbG93ZXJjYXNlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtYWJsZS1mb3JtLWl0ZW0tcmVhZG9ubHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS93aWRnZXRzL3VpL2NvbnN1bWFibGUtZm9ybS9jb21wb25lbnRzL2NvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5L2NvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29tcG9uZW50cy9jb25zdW1hYmxlLWZvcm0taXRlbS1yZWFkb25seS9jb25zdW1hYmxlLWZvcm0taXRlbS1yZWFkb25seS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBWXhELE1BQU0sT0FBTyxtQ0FBbUM7SUFSaEQ7UUFTb0IsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNqQyxlQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBd0IsQ0FBQztLQUN2RTsrR0FIWSxtQ0FBbUM7bUdBQW5DLG1DQUFtQyxzV0NkaEQsNndCQXNCQSx5ZURkYyxrQkFBa0IsMkxBQUUsYUFBYTs7NEZBTWxDLG1DQUFtQztrQkFSL0MsU0FBUzsrQkFDSSxtQ0FBbUMsV0FDcEMsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLENBQUMsbUJBRzNCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbG9jb0RpcmVjdGl2ZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5cbmltcG9ydCB0eXBlIHsgQ29uc3VtYWJsZUZvcm1WYWx1ZXMgfSBmcm9tICcuLi8uLi9jb25zdW1hYmxlLWZvcm0ub3B0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY3VpLWNvbnN1bWFibGUtZm9ybS1pdGVtLXJlYWRvbmx5JyxcbiAgICBpbXBvcnRzOiBbVHJhbnNsb2NvRGlyZWN0aXZlLCBMb3dlckNhc2VQaXBlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uc3VtYWJsZS1mb3JtLWl0ZW0tcmVhZG9ubHkuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0taXRlbS1yZWFkb25seS5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDb25zdW1hYmxlRm9ybUl0ZW1SZWFkb25seUNvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IHRpdGxlID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyByZWFkb25seSBjb25zdW1hYmxlID0gaW5wdXQucmVxdWlyZWQ8Q29uc3VtYWJsZUZvcm1WYWx1ZXM+KCk7XG59XG4iLCJAbGV0IGNvbnN1bWFibGVEYXRhID0gY29uc3VtYWJsZSgpO1xuXG48Zm9ybVxuICAgICp0cmFuc2xvY289XCJsZXQgdFwiXG4gICAgY2xhc3M9XCJmb3JtXCJcbj5cbiAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+e3sgdGl0bGUoKSB9fTwvc3Bhbj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+e3sgdCgnQU1PVU5UJykgfX06PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+e3sgY29uc3VtYWJsZURhdGEucXVhbnRpdHkgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj57eyBjb25zdW1hYmxlRGF0YS51bml0IHwgbG93ZXJjYXNlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPnt7IHQoJ01FQVNVUkUnKSB9fTo8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj57eyBjb25zdW1hYmxlRGF0YS5tZWFzdXJlLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+e3sgY29uc3VtYWJsZURhdGEubWVhc3VyZS51bml0IHwgbG93ZXJjYXNlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -160,7 +160,7 @@ export class ConsumableFormComponent {
160
160
  };
161
161
  }
162
162
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConsumableFormComponent, isStandalone: true, selector: "cui-consumable-form", inputs: { utilityId: { classPropertyName: "utilityId", publicName: "utilityId", isSignal: true, isRequired: true, transformFunction: null }, consumable: { classPropertyName: "consumable", publicName: "consumable", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { consumableChanged: "consumableChanged", consumableDeleted: "consumableDeleted" }, ngImport: i0, template: "<cui-accordion-item\n *transloco=\"let t\"\n class=\"accordion\"\n>\n <div class=\"header\">\n {{ consumable().name }}\n\n @if (!readonly()) {\n <cui-options-button [options]=\"CONSUMABLE_OPTIONS\" />\n }\n </div>\n\n <div\n cuiAccordionItemContent\n class=\"content\"\n >\n <div class=\"info\">\n <div class=\"title\">{{ t('SEASON_CONSUMPTION') }}</div>\n\n @if (allSeasonForm() && consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t('ALL_SEASON') }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"allSeasonForm()!\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n </div>\n\n <div>\n @for (season of seasonForms(); track season) {\n <div class=\"season\">\n @if (consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t(season.type) }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"season.form\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n\n @if (!readonly()) {\n <div class=\"container-trash\">\n <button\n type=\"button\"\n cuiButton\n size=\"xxs\"\n appearance=\"ghost\"\n icon=\"cuiIconTrash\"\n (click)=\"onRemoveSeason(season.type)\"\n ></button>\n </div>\n }\n </div>\n }\n </div>\n @if (!readonly()) {\n <button\n #seasonButton=\"elementRef\"\n cuiButton\n cuiElement\n type=\"button\"\n appearance=\"flat\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n [disabled]=\"!availableSeasons().length\"\n class=\"add-button\"\n >\n {{ t('ADD_SEASON') }}\n </button>\n <cui-context-menu\n [items]=\"SEASON_OPTIONS()\"\n [target]=\"seasonButton.nativeElement\"\n />\n }\n </div>\n</cui-accordion-item>\n", styles: [":host{display:flex;width:100%}.info{display:flex;flex-direction:column;gap:8px;padding-bottom:8px}.accordion{display:flex;flex-direction:column;gap:16px;padding-top:8px;padding-bottom:8px;flex-grow:1;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.season{display:flex;gap:8px;align-items:center;padding:16px;border:solid 1px var(--cui-base-200);border-radius:8px}.header{display:flex;justify-content:space-between;align-items:center}.title{font-weight:400;font-size:12px;line-height:14px;color:var(--cui-base-500);text-transform:uppercase}.content{display:flex;flex-direction:column;gap:4px}.container-trash{display:flex;align-items:center;justify-content:center}.add-button{align-self:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "component", type: i1.CuiAccordionItemComponent, selector: "cui-accordion-item", inputs: ["isOpen", "appearance"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "component", type: i3.CuiContextMenuComponent, selector: "cui-context-menu[items][target]", inputs: ["items", "target", "width", "withPaddings"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: OptionsButtonComponent, selector: "cui-options-button", inputs: ["options", "hoverBackgroundColor"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: ConsumableFormItemComponent, selector: "cc-consumable-form-item", inputs: ["title", "consumptionOptions", "form", "readonly"], outputs: ["consumableChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
163
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ConsumableFormComponent, isStandalone: true, selector: "cui-consumable-form", inputs: { utilityId: { classPropertyName: "utilityId", publicName: "utilityId", isSignal: true, isRequired: true, transformFunction: null }, consumable: { classPropertyName: "consumable", publicName: "consumable", isSignal: true, isRequired: true, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { consumableChanged: "consumableChanged", consumableDeleted: "consumableDeleted" }, ngImport: i0, template: "<cui-accordion-item\n *transloco=\"let t\"\n class=\"accordion\"\n>\n <div class=\"header\">\n {{ consumable().name }}\n\n @if (!readonly()) {\n <cui-options-button [options]=\"CONSUMABLE_OPTIONS\" />\n }\n </div>\n\n <div\n cuiAccordionItemContent\n class=\"content\"\n >\n <div class=\"info\">\n <div class=\"title\">{{ t('SEASON_CONSUMPTION') }}</div>\n\n @if (allSeasonForm() && consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t('ALL_SEASON') }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"allSeasonForm()!\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n </div>\n\n <div>\n @for (season of seasonForms(); track season) {\n <div class=\"season\">\n @if (consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t(season.type) }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"season.form\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n\n @if (!readonly()) {\n <div class=\"container-trash\">\n <button\n type=\"button\"\n cuiButton\n size=\"xxs\"\n appearance=\"ghost\"\n icon=\"cuiIconTrash\"\n (click)=\"onRemoveSeason(season.type)\"\n ></button>\n </div>\n }\n </div>\n }\n </div>\n @if (!readonly()) {\n <button\n #seasonButton=\"elementRef\"\n cuiButton\n cuiElement\n type=\"button\"\n appearance=\"flat\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n [disabled]=\"!availableSeasons().length\"\n class=\"add-button\"\n >\n {{ t('ADD_SEASON') }}\n </button>\n <cui-context-menu\n [items]=\"SEASON_OPTIONS()\"\n [target]=\"seasonButton.nativeElement\"\n />\n }\n </div>\n</cui-accordion-item>\n", styles: [":host{display:flex;flex-direction:row;gap:0;width:100%}.info{display:flex;flex-direction:column;gap:8px;padding-bottom:8px}.accordion{display:flex;flex-direction:column;gap:16px;padding-top:8px;padding-bottom:8px;flex-grow:1;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.season{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start;padding:16px;border:solid 1px var(--cui-base-200);border-radius:8px}.header{display:flex;flex-direction:row;gap:0;justify-content:space-between;align-items:center}.title{font-weight:400;font-size:12px;line-height:14px;color:var(--cui-base-500);text-transform:uppercase}.content{display:flex;flex-direction:column;gap:4px}.container-trash{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:center}.add-button{align-self:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CuiAccordionModule }, { kind: "component", type: i1.CuiAccordionItemComponent, selector: "cui-accordion-item", inputs: ["isOpen", "appearance"], outputs: ["isOpenChange"] }, { kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "theme", "size"] }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "component", type: i3.CuiContextMenuComponent, selector: "cui-context-menu[items][target]", inputs: ["items", "target", "width", "withPaddings"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: OptionsButtonComponent, selector: "cui-options-button", inputs: ["options", "hoverBackgroundColor"] }, { kind: "ngmodule", type: CuiInputNumberModule }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: ConsumableFormItemComponent, selector: "cc-consumable-form-item", inputs: ["title", "consumptionOptions", "form", "readonly"], outputs: ["consumableChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
164
164
  }
165
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConsumableFormComponent, decorators: [{
166
166
  type: Component,
@@ -179,6 +179,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
179
179
  ConsumableFormItemComponent,
180
180
  ConsumableFormItemComponent,
181
181
  ConsumableFormItemComponent
182
- ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<cui-accordion-item\n *transloco=\"let t\"\n class=\"accordion\"\n>\n <div class=\"header\">\n {{ consumable().name }}\n\n @if (!readonly()) {\n <cui-options-button [options]=\"CONSUMABLE_OPTIONS\" />\n }\n </div>\n\n <div\n cuiAccordionItemContent\n class=\"content\"\n >\n <div class=\"info\">\n <div class=\"title\">{{ t('SEASON_CONSUMPTION') }}</div>\n\n @if (allSeasonForm() && consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t('ALL_SEASON') }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"allSeasonForm()!\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n </div>\n\n <div>\n @for (season of seasonForms(); track season) {\n <div class=\"season\">\n @if (consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t(season.type) }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"season.form\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n\n @if (!readonly()) {\n <div class=\"container-trash\">\n <button\n type=\"button\"\n cuiButton\n size=\"xxs\"\n appearance=\"ghost\"\n icon=\"cuiIconTrash\"\n (click)=\"onRemoveSeason(season.type)\"\n ></button>\n </div>\n }\n </div>\n }\n </div>\n @if (!readonly()) {\n <button\n #seasonButton=\"elementRef\"\n cuiButton\n cuiElement\n type=\"button\"\n appearance=\"flat\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n [disabled]=\"!availableSeasons().length\"\n class=\"add-button\"\n >\n {{ t('ADD_SEASON') }}\n </button>\n <cui-context-menu\n [items]=\"SEASON_OPTIONS()\"\n [target]=\"seasonButton.nativeElement\"\n />\n }\n </div>\n</cui-accordion-item>\n", styles: [":host{display:flex;width:100%}.info{display:flex;flex-direction:column;gap:8px;padding-bottom:8px}.accordion{display:flex;flex-direction:column;gap:16px;padding-top:8px;padding-bottom:8px;flex-grow:1;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.season{display:flex;gap:8px;align-items:center;padding:16px;border:solid 1px var(--cui-base-200);border-radius:8px}.header{display:flex;justify-content:space-between;align-items:center}.title{font-weight:400;font-size:12px;line-height:14px;color:var(--cui-base-500);text-transform:uppercase}.content{display:flex;flex-direction:column;gap:4px}.container-trash{display:flex;align-items:center;justify-content:center}.add-button{align-self:flex-start}\n"] }]
182
+ ], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<cui-accordion-item\n *transloco=\"let t\"\n class=\"accordion\"\n>\n <div class=\"header\">\n {{ consumable().name }}\n\n @if (!readonly()) {\n <cui-options-button [options]=\"CONSUMABLE_OPTIONS\" />\n }\n </div>\n\n <div\n cuiAccordionItemContent\n class=\"content\"\n >\n <div class=\"info\">\n <div class=\"title\">{{ t('SEASON_CONSUMPTION') }}</div>\n\n @if (allSeasonForm() && consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t('ALL_SEASON') }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"allSeasonForm()!\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n </div>\n\n <div>\n @for (season of seasonForms(); track season) {\n <div class=\"season\">\n @if (consumptionOptions().length) {\n <cc-consumable-form-item\n title=\"{{ t(season.type) }}:\"\n [consumptionOptions]=\"consumptionOptions()\"\n [form]=\"season.form\"\n [readonly]=\"readonly()\"\n (consumableChanged)=\"onConsumableChanged()\"\n />\n }\n\n @if (!readonly()) {\n <div class=\"container-trash\">\n <button\n type=\"button\"\n cuiButton\n size=\"xxs\"\n appearance=\"ghost\"\n icon=\"cuiIconTrash\"\n (click)=\"onRemoveSeason(season.type)\"\n ></button>\n </div>\n }\n </div>\n }\n </div>\n @if (!readonly()) {\n <button\n #seasonButton=\"elementRef\"\n cuiButton\n cuiElement\n type=\"button\"\n appearance=\"flat\"\n size=\"xxs\"\n icon=\"cuiIconPlus\"\n [disabled]=\"!availableSeasons().length\"\n class=\"add-button\"\n >\n {{ t('ADD_SEASON') }}\n </button>\n <cui-context-menu\n [items]=\"SEASON_OPTIONS()\"\n [target]=\"seasonButton.nativeElement\"\n />\n }\n </div>\n</cui-accordion-item>\n", styles: [":host{display:flex;flex-direction:row;gap:0;width:100%}.info{display:flex;flex-direction:column;gap:8px;padding-bottom:8px}.accordion{display:flex;flex-direction:column;gap:16px;padding-top:8px;padding-bottom:8px;flex-grow:1;border:1px solid var(--cui-base-200);background-color:var(--cui-base-0)}.season{display:flex;flex-direction:row;gap:8px;align-items:center;justify-content:flex-start;padding:16px;border:solid 1px var(--cui-base-200);border-radius:8px}.header{display:flex;flex-direction:row;gap:0;justify-content:space-between;align-items:center}.title{font-weight:400;font-size:12px;line-height:14px;color:var(--cui-base-500);text-transform:uppercase}.content{display:flex;flex-direction:column;gap:4px}.container-trash{display:flex;flex-direction:row;gap:0;align-items:center;justify-content:center}.add-button{align-self:flex-start}\n"] }]
183
183
  }], ctorParameters: () => [] });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtYWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29uc3VtYWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29uc3VtYWJsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE9BQU8sRUFBZSwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUNILDJDQUEyQyxFQUczQyxVQUFVLEVBQ2IsTUFBTSxjQUFjLENBQUM7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QUFrQixnTUFDbEIsc0JBQXNCLDJHQUN0QixvQkFBb0IsOEJBQ3BCLFlBQVksOEJBQ1osa0JBQWtCLDhCQUNsQixjQUFjLCtCQUNkLDJCQUEyQjs7NEZBU3RCLHVCQUF1QjtrQkF2Qm5DLFNBQVM7K0JBQ0kscUJBQXFCLFdBQ3RCO3dCQUNMLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCwyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3FCQUM5QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHR5cGUgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHR5cGUgeyBDdWlOdWxsYWJsZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgeyBDb25zdW1wdGlvbiwgQ3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UsIEN1aUVsZW1lbnREaXJlY3RpdmUsIFVuaXRzQW1vdW50IH0gZnJvbSAnQGN1YnktdWkvY2RrJztcblxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcbmltcG9ydCB7IGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVV0aWxpdHlNYXRlcmlhbCB9IGZyb20gJy4uL3Jlc291cmNlcy1ibG9jay9jb21wb25lbnRzJztcblxuaW1wb3J0IHsgQ29uc3VtYWJsZUZvcm1JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgQ29uc3VtYWJsZUZvcm1WYWx1ZXMsIFNlYXNvbkZvcm0gfSBmcm9tICcuL2NvbnN1bWFibGUtZm9ybS5vcHRpb25zJztcbmltcG9ydCB7IFJlc291cmNlQ29udGVudFR5cGUsIFJlc291cmNlUmVxdWVzdFR5cGUgfSBmcm9tICdAY3VieS11aS9hcGknO1xuaW1wb3J0IHsgT3B0aW9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvb3B0aW9ucy1idXR0b24vb3B0aW9ucy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQ3VpUXVhbnR1bUdyb3VwUmVzb3VyY2VzU3RydWN0dXJlQXBpU2VydmljZSxcbiAgICBNYXRlcmlhbFR5cGVEZWZvbGlhdGUsXG4gICAgTWF0ZXJpYWxUeXBlU3VwcGx5LFxuICAgIFNlYXNvblR5cGVcbn0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB7IEN1aUNvbnRleHRNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBDdWlBY2NvcmRpb25Nb2R1bGUsXG4gICAgQ3VpQWxlcnRTZXJ2aWNlLFxuICAgIEN1aUJ1dHRvbk1vZHVsZSxcbiAgICBDdWlDb250ZXh0TWVudU1vZHVsZSxcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgQ3VpU3ZnTW9kdWxlXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1jb25zdW1hYmxlLWZvcm0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUNvbnRleHRNZW51TW9kdWxlLFxuICAgICAgICBDdWlFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xvY29EaXJlY3RpdmUsXG4gICAgICAgIE9wdGlvbnNCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEN1aUlucHV0TnVtYmVyTW9kdWxlLFxuICAgICAgICBDdWlTdmdNb2R1bGUsXG4gICAgICAgIEN1aUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgICAgIENvbnN1bWFibGVGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ29uc3VtYWJsZUZvcm1JdGVtQ29tcG9uZW50LFxuICAgICAgICBDb25zdW1hYmxlRm9ybUl0ZW1Db21wb25lbnRcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ29uc3VtYWJsZUZvcm1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChOb25OdWxsYWJsZUZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUFsZXJ0U2VydmljZSA9IGluamVjdChDdWlBbGVydFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UgPSBpbmplY3QoQ3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVhbnR1bUdyb3VwUmVzb3VyY2VzU3RydWN0dXJlQXBpU2VydmljZSA9IGluamVjdChDdWlRdWFudHVtR3JvdXBSZXNvdXJjZXNTdHJ1Y3R1cmVBcGlTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENPTlNVTUFCTEVfV0FTX0RFTEVURUQgPSAnQ09OU1VNQUJMRV9XQVNfU1VDQ0VTU0ZVTExZX0RFTEVURUQnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IENPTlNVTUFCTEVfT1BUSU9OUzogQ3VpQ29udGV4dE1lbnVJdGVtW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcbiAgICAgICAgICAgIGljb246ICdjdWlJY29uVHJhc2gnLFxuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1jdWktZGFuZ2VyKScsXG4gICAgICAgICAgICBjb21tYW5kOiB0aGlzLm9uRGVsZXRlQ29uc3VtYWJsZS5iaW5kKHRoaXMpXG4gICAgICAgIH1cbiAgICBdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZWFzb25zID0gT2JqZWN0LnZhbHVlcyhTZWFzb25UeXBlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGxTZWFzb25Gb3JtID0gc2lnbmFsPEN1aU51bGxhYmxlPEZvcm1Hcm91cD4+KG51bGwpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZWFzb25Gb3JtcyA9IHNpZ25hbDxTZWFzb25Gb3JtW10+KFtdKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhdmFpbGFibGVTZWFzb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VkU2Vhc29ucyA9IHRoaXMuc2Vhc29uRm9ybXMoKS5tYXAoKGZvcm0pID0+IGZvcm0udHlwZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vhc29ucy5maWx0ZXIoKHNlYXNvbikgPT4gIXVzZWRTZWFzb25zLmluY2x1ZGVzKHNlYXNvbikpO1xuICAgIH0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25zdW1wdGlvbk9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN1bWFibGUgPSB0aGlzLmNvbnN1bWFibGUoKTtcblxuICAgICAgICBpZiAoIShjb25zdW1hYmxlLnNwZWNpZmljYXRpb25zIHx8IGNvbnN1bWFibGUucGFyYW1ldGVycykpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnN1bWFibGVVbml0cyA9IHRoaXMuY3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UuZ2V0Q29uc3VtcHRpb25zVW5pdHMoY29uc3VtYWJsZSk7XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoY29uc3VtYWJsZVVuaXRzKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIHZhbHVlKSA9PiBhY2N1bXVsYXRvci5jb25jYXQodmFsdWUpLCBbXSlcbiAgICAgICAgICAgIC5tYXAoKHVuaXQpID0+ICh7IGxhYmVsOiB1bml0LmFiYnJldmlhdGlvbiwgdmFsdWU6IHVuaXQudmFsdWUgfSkpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFNFQVNPTl9PUFRJT05TID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5hdmFpbGFibGVTZWFzb25zKCkubWFwKChzZWFzb24pID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogc2Vhc29uLFxuICAgICAgICAgICAgY29tbWFuZDogKCk6IHZvaWQgPT4gdGhpcy5hZGRTZWFzb24oc2Vhc29uLCB0aGlzLmNyZWF0ZUZvcm0oKSlcbiAgICAgICAgfSkpXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB1dGlsaXR5SWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnN1bWFibGUgPSBpbnB1dC5yZXF1aXJlZDxSZXNvdXJjZVV0aWxpdHlNYXRlcmlhbD4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uc3VtYWJsZUNoYW5nZWQgPSBvdXRwdXQ8UmVzb3VyY2VVdGlsaXR5TWF0ZXJpYWw+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnN1bWFibGVEZWxldGVkID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXRGb3JtVmFsdWVzRWZmZWN0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ29uc3VtYWJsZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29uc3VtYWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblJlbW92ZVNlYXNvbih0eXBlOiBTZWFzb25UeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vhc29uRm9ybXMudXBkYXRlKChmb3JtcykgPT4gZm9ybXMuZmlsdGVyKChmb3JtKSA9PiBmb3JtLnR5cGUgIT09IHR5cGUpKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb25zdW1hYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlQ29uc3VtYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gdGhpcy5jb25zdW1hYmxlKCk7XG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnF1YW50dW1Hcm91cFJlc291cmNlc1N0cnVjdHVyZUFwaVNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGVFbGVtZW50SW5TdHJ1Y3R1cmUodGhpcy51dGlsaXR5SWQoKSwgUmVzb3VyY2VDb250ZW50VHlwZS5Db25zdW1hYmxlcy50b0xvd2VyQ2FzZSgpLCBpZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbnN1bWFibGVEZWxldGVkLmVtaXQoaWQpKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdWlBbGVydFNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoQ29uc3VtYWJsZUZvcm1Db21wb25lbnQuQ09OU1VNQUJMRV9XQVNfREVMRVRFRCksXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRGb3JtVmFsdWVzRWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vhc29uRm9ybXMgPSB1bnRyYWNrZWQodGhpcy5zZWFzb25Gb3Jtcyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWFibGUoKS5zdXBwbHk/LmZvckVhY2goKHNlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0V4aXN0ID0gc2Vhc29uRm9ybXMuZmluZCgoZm9ybSkgPT4gZm9ybS50eXBlID09PSBzZWFzb24uc2Vhc29uKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTZWFzb24oc2Vhc29uLnNlYXNvbiwgdGhpcy5jcmVhdGVGb3JtKHNlYXNvbikpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxsU2Vhc29uRm9ybSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFsbFNlYXNvbkZvcm0uc2V0KHRoaXMuY3JlYXRlRm9ybSh0aGlzLmNvbnN1bWFibGUoKS5zdXBwbHlEZWZvbGlhdGUpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFNlYXNvbihzZWFzb25UeXBlOiBTZWFzb25UeXBlLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFzb25Gb3Jtcy51cGRhdGUoKGZvcm1zKSA9PiBbXG4gICAgICAgICAgICAuLi5mb3JtcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBzZWFzb25UeXBlLFxuICAgICAgICAgICAgICAgIGZvcm1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb25zdW1hYmxlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxTZWFzb25Gb3JtID0gdGhpcy5hbGxTZWFzb25Gb3JtKCk7XG5cbiAgICAgICAgaWYgKCFhbGxTZWFzb25Gb3JtPy52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwcGx5ID0gdGhpcy5zZWFzb25Gb3JtcygpXG4gICAgICAgICAgICAuZmlsdGVyKChzZWFzb24pID0+IHNlYXNvbi5mb3JtLnZhbGlkKVxuICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAoc2Vhc29uKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdE1lYXN1cmVVbml0cyh7IHNlYXNvbjogc2Vhc29uLnR5cGUsIC4uLnNlYXNvbi5mb3JtLmdldFJhd1ZhbHVlKCkgfSkgYXMgTWF0ZXJpYWxUeXBlU3VwcGx5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuY29uc3VtYWJsZSgpLmlkLFxuICAgICAgICAgICAgdHlwZTogUmVzb3VyY2VSZXF1ZXN0VHlwZS5Db25zdW1hYmxlcyxcbiAgICAgICAgICAgIHN1cHBseURlZm9saWF0ZTogdGhpcy5mb3JtYXRNZWFzdXJlVW5pdHMoYWxsU2Vhc29uRm9ybS52YWx1ZSkgYXMgTWF0ZXJpYWxUeXBlRGVmb2xpYXRlLFxuICAgICAgICAgICAgc3VwcGx5XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRDb25zdW1hYmxlID0ge1xuICAgICAgICAgICAgLi4udGhpcy5jb25zdW1hYmxlKCksXG4gICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucXVhbnR1bUdyb3VwUmVzb3VyY2VzU3RydWN0dXJlQXBpU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZUVsZW1lbnRJblN0cnVjdHVyZSh0aGlzLnV0aWxpdHlJZCgpLCBSZXNvdXJjZUNvbnRlbnRUeXBlLkNvbnN1bWFibGVzLCByZXF1ZXN0Qm9keSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbnN1bWFibGVDaGFuZ2VkLmVtaXQodXBkYXRlZENvbnN1bWFibGUpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybSh2YWx1ZXM/OiBDb25zdW1hYmxlRm9ybVZhbHVlcyk6IEZvcm1Hcm91cCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodmFsdWVzPy5xdWFudGl0eSwgW1xuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oMSksXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTkpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHVuaXQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChVbml0c0Ftb3VudFswXS52YWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgICAgIG1lYXN1cmU6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgIG1lYXN1cmU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzPy5tZWFzdXJlPy5tZWFzdXJlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jb25zdW1wdGlvbk9wdGlvbnM/LigpWzBdPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5jdWlDb25zdW1wdGlvblVuaXRzU2VydmljZS5nZXRDb25zdW1wdGlvbkJ5VW5pdCh0aGlzLmNvbnN1bXB0aW9uT3B0aW9ucygpWzBdLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQ29uc3VtcHRpb24uTGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHZhbHVlcz8ubWVhc3VyZT8udmFsdWUsIFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oMC4wMDEpLFxuICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OSlcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICB1bml0OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz8ubWVhc3VyZT8ubWVhc3VyZSA9PT0gJ0FNT1VOVCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ1BJRUNFUydcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKHZhbHVlcz8ubWVhc3VyZT8udW5pdCA/PyB0aGlzLmNvbnN1bXB0aW9uT3B0aW9ucz8uKClbMF0udmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdE1lYXN1cmVVbml0cyhcbiAgICAgICAgbWF0ZXJpYWw6IE1hdGVyaWFsVHlwZURlZm9saWF0ZSB8IE1hdGVyaWFsVHlwZVN1cHBseVxuICAgICk6IE1hdGVyaWFsVHlwZURlZm9saWF0ZSB8IE1hdGVyaWFsVHlwZVN1cHBseSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5tYXRlcmlhbCxcbiAgICAgICAgICAgIG1lYXN1cmU6IHtcbiAgICAgICAgICAgICAgICAuLi5tYXRlcmlhbC5tZWFzdXJlLFxuICAgICAgICAgICAgICAgIHVuaXQ6XG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLm1lYXN1cmUubWVhc3VyZSA9PT0gJ0FNT1VOVCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAobWF0ZXJpYWw/Lm1lYXN1cmU/LnVuaXQgPz8gdGhpcy5jb25zdW1wdGlvbk9wdGlvbnM/LigpWzBdLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxjdWktYWNjb3JkaW9uLWl0ZW1cbiAgICAqdHJhbnNsb2NvPVwibGV0IHRcIlxuICAgIGNsYXNzPVwiYWNjb3JkaW9uXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIHt7IGNvbnN1bWFibGUoKS5uYW1lIH19XG5cbiAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgPGN1aS1vcHRpb25zLWJ1dHRvbiBbb3B0aW9uc109XCJDT05TVU1BQkxFX09QVElPTlNcIiAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGN1aUFjY29yZGlvbkl0ZW1Db250ZW50XG4gICAgICAgIGNsYXNzPVwiY29udGVudFwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgdCgnU0VBU09OX0NPTlNVTVBUSU9OJykgfX08L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChhbGxTZWFzb25Gb3JtKCkgJiYgY29uc3VtcHRpb25PcHRpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGNjLWNvbnN1bWFibGUtZm9ybS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgdCgnQUxMX1NFQVNPTicpIH19OlwiXG4gICAgICAgICAgICAgICAgICAgIFtjb25zdW1wdGlvbk9wdGlvbnNdPVwiY29uc3VtcHRpb25PcHRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJhbGxTZWFzb25Gb3JtKCkhXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgICAgICAgICAgICAoY29uc3VtYWJsZUNoYW5nZWQpPVwib25Db25zdW1hYmxlQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGZvciAoc2Vhc29uIG9mIHNlYXNvbkZvcm1zKCk7IHRyYWNrIHNlYXNvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb25zdW1wdGlvbk9wdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjYy1jb25zdW1hYmxlLWZvcm0taXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgdChzZWFzb24udHlwZSkgfX06XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uc3VtcHRpb25PcHRpb25zXT1cImNvbnN1bXB0aW9uT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzZWFzb24uZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdW1hYmxlQ2hhbmdlZCk9XCJvbkNvbnN1bWFibGVDaGFuZ2VkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdHJhc2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uVHJhc2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVTZWFzb24oc2Vhc29uLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICNzZWFzb25CdXR0b249XCJlbGVtZW50UmVmXCJcbiAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICBjdWlFbGVtZW50XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uUGx1c1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhdmFpbGFibGVTZWFzb25zKCkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZC1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FERF9TRUFTT04nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Y3VpLWNvbnRleHQtbWVudVxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJTRUFTT05fT1BUSU9OUygpXCJcbiAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cInNlYXNvbkJ1dHRvbi5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvY3VpLWFjY29yZGlvbi1pdGVtPlxuIl19
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtYWJsZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29uc3VtYWJsZS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvd2lkZ2V0cy91aS9jb25zdW1hYmxlLWZvcm0vY29uc3VtYWJsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE9BQU8sRUFBZSwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNELE9BQU8sRUFBRSxtQkFBbUIsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUNILDJDQUEyQyxFQUczQyxVQUFVLEVBQ2IsTUFBTSxjQUFjLENBQUM7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QUFrQixnTUFDbEIsc0JBQXNCLDJHQUN0QixvQkFBb0IsOEJBQ3BCLFlBQVksOEJBQ1osa0JBQWtCLDhCQUNsQixjQUFjLCtCQUNkLDJCQUEyQjs7NEZBU3RCLHVCQUF1QjtrQkF2Qm5DLFNBQVM7K0JBQ0kscUJBQXFCLFdBQ3RCO3dCQUNMLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCwyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3FCQUM5QixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRGVzdHJveVJlZixcbiAgICBlZmZlY3QsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHR5cGUgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHR5cGUgeyBDdWlOdWxsYWJsZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XG5pbXBvcnQgeyBDb25zdW1wdGlvbiwgQ3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UsIEN1aUVsZW1lbnREaXJlY3RpdmUsIFVuaXRzQW1vdW50IH0gZnJvbSAnQGN1YnktdWkvY2RrJztcblxuaW1wb3J0IHsgVHJhbnNsb2NvRGlyZWN0aXZlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcbmltcG9ydCB7IGZpbmFsaXplLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVV0aWxpdHlNYXRlcmlhbCB9IGZyb20gJy4uL3Jlc291cmNlcy1ibG9jay9jb21wb25lbnRzJztcblxuaW1wb3J0IHsgQ29uc3VtYWJsZUZvcm1JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB0eXBlIHsgQ29uc3VtYWJsZUZvcm1WYWx1ZXMsIFNlYXNvbkZvcm0gfSBmcm9tICcuL2NvbnN1bWFibGUtZm9ybS5vcHRpb25zJztcbmltcG9ydCB7IFJlc291cmNlQ29udGVudFR5cGUsIFJlc291cmNlUmVxdWVzdFR5cGUgfSBmcm9tICdAY3VieS11aS9hcGknO1xuaW1wb3J0IHsgT3B0aW9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvb3B0aW9ucy1idXR0b24vb3B0aW9ucy1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7XG4gICAgQ3VpUXVhbnR1bUdyb3VwUmVzb3VyY2VzU3RydWN0dXJlQXBpU2VydmljZSxcbiAgICBNYXRlcmlhbFR5cGVEZWZvbGlhdGUsXG4gICAgTWF0ZXJpYWxUeXBlU3VwcGx5LFxuICAgIFNlYXNvblR5cGVcbn0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB7IEN1aUNvbnRleHRNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBDdWlBY2NvcmRpb25Nb2R1bGUsXG4gICAgQ3VpQWxlcnRTZXJ2aWNlLFxuICAgIEN1aUJ1dHRvbk1vZHVsZSxcbiAgICBDdWlDb250ZXh0TWVudU1vZHVsZSxcbiAgICBDdWlGb3JtRmllbGRNb2R1bGUsXG4gICAgQ3VpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgQ3VpU3ZnTW9kdWxlXG59IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2N1aS1jb25zdW1hYmxlLWZvcm0nLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ3VpQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBDdWlCdXR0b25Nb2R1bGUsXG4gICAgICAgIEN1aUNvbnRleHRNZW51TW9kdWxlLFxuICAgICAgICBDdWlFbGVtZW50RGlyZWN0aXZlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBUcmFuc2xvY29EaXJlY3RpdmUsXG4gICAgICAgIE9wdGlvbnNCdXR0b25Db21wb25lbnQsXG4gICAgICAgIEN1aUlucHV0TnVtYmVyTW9kdWxlLFxuICAgICAgICBDdWlTdmdNb2R1bGUsXG4gICAgICAgIEN1aUZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXG4gICAgICAgIENvbnN1bWFibGVGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ29uc3VtYWJsZUZvcm1JdGVtQ29tcG9uZW50LFxuICAgICAgICBDb25zdW1hYmxlRm9ybUl0ZW1Db21wb25lbnRcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jb25zdW1hYmxlLWZvcm0uY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ29uc3VtYWJsZUZvcm1Db21wb25lbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlciA9IGluamVjdChOb25OdWxsYWJsZUZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUFsZXJ0U2VydmljZSA9IGluamVjdChDdWlBbGVydFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UgPSBpbmplY3QoQ3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcXVhbnR1bUdyb3VwUmVzb3VyY2VzU3RydWN0dXJlQXBpU2VydmljZSA9IGluamVjdChDdWlRdWFudHVtR3JvdXBSZXNvdXJjZXNTdHJ1Y3R1cmVBcGlTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENPTlNVTUFCTEVfV0FTX0RFTEVURUQgPSAnQ09OU1VNQUJMRV9XQVNfU1VDQ0VTU0ZVTExZX0RFTEVURUQnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IENPTlNVTUFCTEVfT1BUSU9OUzogQ3VpQ29udGV4dE1lbnVJdGVtW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcbiAgICAgICAgICAgIGljb246ICdjdWlJY29uVHJhc2gnLFxuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1jdWktZGFuZ2VyKScsXG4gICAgICAgICAgICBjb21tYW5kOiB0aGlzLm9uRGVsZXRlQ29uc3VtYWJsZS5iaW5kKHRoaXMpXG4gICAgICAgIH1cbiAgICBdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZWFzb25zID0gT2JqZWN0LnZhbHVlcyhTZWFzb25UeXBlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhbGxTZWFzb25Gb3JtID0gc2lnbmFsPEN1aU51bGxhYmxlPEZvcm1Hcm91cD4+KG51bGwpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzZWFzb25Gb3JtcyA9IHNpZ25hbDxTZWFzb25Gb3JtW10+KFtdKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhdmFpbGFibGVTZWFzb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1c2VkU2Vhc29ucyA9IHRoaXMuc2Vhc29uRm9ybXMoKS5tYXAoKGZvcm0pID0+IGZvcm0udHlwZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vhc29ucy5maWx0ZXIoKHNlYXNvbikgPT4gIXVzZWRTZWFzb25zLmluY2x1ZGVzKHNlYXNvbikpO1xuICAgIH0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb25zdW1wdGlvbk9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN1bWFibGUgPSB0aGlzLmNvbnN1bWFibGUoKTtcblxuICAgICAgICBpZiAoIShjb25zdW1hYmxlLnNwZWNpZmljYXRpb25zIHx8IGNvbnN1bWFibGUucGFyYW1ldGVycykpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnN1bWFibGVVbml0cyA9IHRoaXMuY3VpQ29uc3VtcHRpb25Vbml0c1NlcnZpY2UuZ2V0Q29uc3VtcHRpb25zVW5pdHMoY29uc3VtYWJsZSk7XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoY29uc3VtYWJsZVVuaXRzKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjdW11bGF0b3IsIHZhbHVlKSA9PiBhY2N1bXVsYXRvci5jb25jYXQodmFsdWUpLCBbXSlcbiAgICAgICAgICAgIC5tYXAoKHVuaXQpID0+ICh7IGxhYmVsOiB1bml0LmFiYnJldmlhdGlvbiwgdmFsdWU6IHVuaXQudmFsdWUgfSkpO1xuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFNFQVNPTl9PUFRJT05TID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy5hdmFpbGFibGVTZWFzb25zKCkubWFwKChzZWFzb24pID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogc2Vhc29uLFxuICAgICAgICAgICAgY29tbWFuZDogKCk6IHZvaWQgPT4gdGhpcy5hZGRTZWFzb24oc2Vhc29uLCB0aGlzLmNyZWF0ZUZvcm0oKSlcbiAgICAgICAgfSkpXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB1dGlsaXR5SWQgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnN1bWFibGUgPSBpbnB1dC5yZXF1aXJlZDxSZXNvdXJjZVV0aWxpdHlNYXRlcmlhbD4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZG9ubHkgPSBpbnB1dChmYWxzZSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uc3VtYWJsZUNoYW5nZWQgPSBvdXRwdXQ8UmVzb3VyY2VVdGlsaXR5TWF0ZXJpYWw+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnN1bWFibGVEZWxldGVkID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmluaXRGb3JtVmFsdWVzRWZmZWN0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ29uc3VtYWJsZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29uc3VtYWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblJlbW92ZVNlYXNvbih0eXBlOiBTZWFzb25UeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Vhc29uRm9ybXMudXBkYXRlKChmb3JtcykgPT4gZm9ybXMuZmlsdGVyKChmb3JtKSA9PiBmb3JtLnR5cGUgIT09IHR5cGUpKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb25zdW1hYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGVsZXRlQ29uc3VtYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gdGhpcy5jb25zdW1hYmxlKCk7XG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLnF1YW50dW1Hcm91cFJlc291cmNlc1N0cnVjdHVyZUFwaVNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGVFbGVtZW50SW5TdHJ1Y3R1cmUodGhpcy51dGlsaXR5SWQoKSwgUmVzb3VyY2VDb250ZW50VHlwZS5Db25zdW1hYmxlcy50b0xvd2VyQ2FzZSgpLCBpZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbnN1bWFibGVEZWxldGVkLmVtaXQoaWQpKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdWlBbGVydFNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoQ29uc3VtYWJsZUZvcm1Db21wb25lbnQuQ09OU1VNQUJMRV9XQVNfREVMRVRFRCksXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcydcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRGb3JtVmFsdWVzRWZmZWN0KCk6IHZvaWQge1xuICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2Vhc29uRm9ybXMgPSB1bnRyYWNrZWQodGhpcy5zZWFzb25Gb3Jtcyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWFibGUoKS5zdXBwbHk/LmZvckVhY2goKHNlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0V4aXN0ID0gc2Vhc29uRm9ybXMuZmluZCgoZm9ybSkgPT4gZm9ybS50eXBlID09PSBzZWFzb24uc2Vhc29uKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTZWFzb24oc2Vhc29uLnNlYXNvbiwgdGhpcy5jcmVhdGVGb3JtKHNlYXNvbikpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxsU2Vhc29uRm9ybSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFsbFNlYXNvbkZvcm0uc2V0KHRoaXMuY3JlYXRlRm9ybSh0aGlzLmNvbnN1bWFibGUoKS5zdXBwbHlEZWZvbGlhdGUpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFNlYXNvbihzZWFzb25UeXBlOiBTZWFzb25UeXBlLCBmb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFzb25Gb3Jtcy51cGRhdGUoKGZvcm1zKSA9PiBbXG4gICAgICAgICAgICAuLi5mb3JtcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBzZWFzb25UeXBlLFxuICAgICAgICAgICAgICAgIGZvcm1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb25zdW1hYmxlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxTZWFzb25Gb3JtID0gdGhpcy5hbGxTZWFzb25Gb3JtKCk7XG5cbiAgICAgICAgaWYgKCFhbGxTZWFzb25Gb3JtPy52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VwcGx5ID0gdGhpcy5zZWFzb25Gb3JtcygpXG4gICAgICAgICAgICAuZmlsdGVyKChzZWFzb24pID0+IHNlYXNvbi5mb3JtLnZhbGlkKVxuICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAoc2Vhc29uKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdE1lYXN1cmVVbml0cyh7IHNlYXNvbjogc2Vhc29uLnR5cGUsIC4uLnNlYXNvbi5mb3JtLmdldFJhd1ZhbHVlKCkgfSkgYXMgTWF0ZXJpYWxUeXBlU3VwcGx5XG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuY29uc3VtYWJsZSgpLmlkLFxuICAgICAgICAgICAgdHlwZTogUmVzb3VyY2VSZXF1ZXN0VHlwZS5Db25zdW1hYmxlcyxcbiAgICAgICAgICAgIHN1cHBseURlZm9saWF0ZTogdGhpcy5mb3JtYXRNZWFzdXJlVW5pdHMoYWxsU2Vhc29uRm9ybS52YWx1ZSkgYXMgTWF0ZXJpYWxUeXBlRGVmb2xpYXRlLFxuICAgICAgICAgICAgc3VwcGx5XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRDb25zdW1hYmxlID0ge1xuICAgICAgICAgICAgLi4udGhpcy5jb25zdW1hYmxlKCksXG4gICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucXVhbnR1bUdyb3VwUmVzb3VyY2VzU3RydWN0dXJlQXBpU2VydmljZVxuICAgICAgICAgICAgLnVwZGF0ZUVsZW1lbnRJblN0cnVjdHVyZSh0aGlzLnV0aWxpdHlJZCgpLCBSZXNvdXJjZUNvbnRlbnRUeXBlLkNvbnN1bWFibGVzLCByZXF1ZXN0Qm9keSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbnN1bWFibGVDaGFuZ2VkLmVtaXQodXBkYXRlZENvbnN1bWFibGUpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybSh2YWx1ZXM/OiBDb25zdW1hYmxlRm9ybVZhbHVlcyk6IEZvcm1Hcm91cCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIHF1YW50aXR5OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wodmFsdWVzPy5xdWFudGl0eSwgW1xuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oMSksXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgoOTk5OTkpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHVuaXQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChVbml0c0Ftb3VudFswXS52YWx1ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgICAgICAgIG1lYXN1cmU6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgIG1lYXN1cmU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzPy5tZWFzdXJlPy5tZWFzdXJlID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5jb25zdW1wdGlvbk9wdGlvbnM/LigpWzBdPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5jdWlDb25zdW1wdGlvblVuaXRzU2VydmljZS5nZXRDb25zdW1wdGlvbkJ5VW5pdCh0aGlzLmNvbnN1bXB0aW9uT3B0aW9ucygpWzBdLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQ29uc3VtcHRpb24uTGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHZhbHVlcz8ubWVhc3VyZT8udmFsdWUsIFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oMC4wMDEpLFxuICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCg5OTk5OSlcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICB1bml0OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2woXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcz8ubWVhc3VyZT8ubWVhc3VyZSA9PT0gJ0FNT1VOVCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ1BJRUNFUydcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKHZhbHVlcz8ubWVhc3VyZT8udW5pdCA/PyB0aGlzLmNvbnN1bXB0aW9uT3B0aW9ucz8uKClbMF0udmFsdWUpLFxuICAgICAgICAgICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdE1lYXN1cmVVbml0cyhcbiAgICAgICAgbWF0ZXJpYWw6IE1hdGVyaWFsVHlwZURlZm9saWF0ZSB8IE1hdGVyaWFsVHlwZVN1cHBseVxuICAgICk6IE1hdGVyaWFsVHlwZURlZm9saWF0ZSB8IE1hdGVyaWFsVHlwZVN1cHBseSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5tYXRlcmlhbCxcbiAgICAgICAgICAgIG1lYXN1cmU6IHtcbiAgICAgICAgICAgICAgICAuLi5tYXRlcmlhbC5tZWFzdXJlLFxuICAgICAgICAgICAgICAgIHVuaXQ6XG4gICAgICAgICAgICAgICAgICAgIG1hdGVyaWFsLm1lYXN1cmUubWVhc3VyZSA9PT0gJ0FNT1VOVCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAobWF0ZXJpYWw/Lm1lYXN1cmU/LnVuaXQgPz8gdGhpcy5jb25zdW1wdGlvbk9wdGlvbnM/LigpWzBdLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxjdWktYWNjb3JkaW9uLWl0ZW1cbiAgICAqdHJhbnNsb2NvPVwibGV0IHRcIlxuICAgIGNsYXNzPVwiYWNjb3JkaW9uXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIHt7IGNvbnN1bWFibGUoKS5uYW1lIH19XG5cbiAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgPGN1aS1vcHRpb25zLWJ1dHRvbiBbb3B0aW9uc109XCJDT05TVU1BQkxFX09QVElPTlNcIiAvPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGN1aUFjY29yZGlvbkl0ZW1Db250ZW50XG4gICAgICAgIGNsYXNzPVwiY29udGVudFwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgdCgnU0VBU09OX0NPTlNVTVBUSU9OJykgfX08L2Rpdj5cblxuICAgICAgICAgICAgQGlmIChhbGxTZWFzb25Gb3JtKCkgJiYgY29uc3VtcHRpb25PcHRpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGNjLWNvbnN1bWFibGUtZm9ybS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgdCgnQUxMX1NFQVNPTicpIH19OlwiXG4gICAgICAgICAgICAgICAgICAgIFtjb25zdW1wdGlvbk9wdGlvbnNdPVwiY29uc3VtcHRpb25PcHRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJhbGxTZWFzb25Gb3JtKCkhXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgICAgICAgICAgICAoY29uc3VtYWJsZUNoYW5nZWQpPVwib25Db25zdW1hYmxlQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGZvciAoc2Vhc29uIG9mIHNlYXNvbkZvcm1zKCk7IHRyYWNrIHNlYXNvbikge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFzb25cIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb25zdW1wdGlvbk9wdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjYy1jb25zdW1hYmxlLWZvcm0taXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgdChzZWFzb24udHlwZSkgfX06XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uc3VtcHRpb25PcHRpb25zXT1cImNvbnN1bXB0aW9uT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzZWFzb24uZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdW1hYmxlQ2hhbmdlZCk9XCJvbkNvbnN1bWFibGVDaGFuZ2VkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIXJlYWRvbmx5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItdHJhc2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uVHJhc2hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVTZWFzb24oc2Vhc29uLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmICghcmVhZG9ubHkoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICNzZWFzb25CdXR0b249XCJlbGVtZW50UmVmXCJcbiAgICAgICAgICAgICAgICBjdWlCdXR0b25cbiAgICAgICAgICAgICAgICBjdWlFbGVtZW50XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJ4eHNcIlxuICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uUGx1c1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFhdmFpbGFibGVTZWFzb25zKCkubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZC1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IHQoJ0FERF9TRUFTT04nKSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Y3VpLWNvbnRleHQtbWVudVxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJTRUFTT05fT1BUSU9OUygpXCJcbiAgICAgICAgICAgICAgICBbdGFyZ2V0XT1cInNlYXNvbkJ1dHRvbi5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvY3VpLWFjY29yZGlvbi1pdGVtPlxuIl19