valtech-components 2.0.858 → 2.0.860

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 (29) hide show
  1. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +153 -268
  2. package/esm2022/lib/components/molecules/feedback-form/types.mjs +1 -1
  3. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +3 -3
  4. package/esm2022/lib/components/organisms/attachment-uploader/attachment-uploader.component.mjs +77 -0
  5. package/esm2022/lib/components/organisms/attachment-uploader/types.mjs +2 -0
  6. package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +21 -3
  7. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +5 -5
  8. package/esm2022/lib/components/organisms/wizard/types.mjs +1 -1
  9. package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +13 -37
  10. package/esm2022/lib/components/types.mjs +1 -1
  11. package/esm2022/lib/services/auth/auth.service.mjs +6 -1
  12. package/esm2022/lib/services/i18n/default-content.mjs +19 -1
  13. package/esm2022/lib/services/icons.service.mjs +3 -2
  14. package/esm2022/lib/version.mjs +2 -2
  15. package/esm2022/public-api.mjs +3 -1
  16. package/fesm2022/valtech-components.mjs +911 -933
  17. package/fesm2022/valtech-components.mjs.map +1 -1
  18. package/lib/components/molecules/feedback-form/feedback-form.component.d.ts +8 -39
  19. package/lib/components/molecules/feedback-form/types.d.ts +1 -0
  20. package/lib/components/organisms/attachment-uploader/attachment-uploader.component.d.ts +23 -0
  21. package/lib/components/organisms/attachment-uploader/types.d.ts +12 -0
  22. package/lib/components/organisms/mfa-modal/mfa-modal.component.d.ts +2 -0
  23. package/lib/components/organisms/wizard/types.d.ts +3 -3
  24. package/lib/components/organisms/wizard/wizard.component.d.ts +2 -1
  25. package/lib/components/types.d.ts +2 -0
  26. package/lib/services/auth/auth.service.d.ts +3 -0
  27. package/lib/version.d.ts +1 -1
  28. package/package.json +1 -1
  29. package/public-api.d.ts +2 -0
@@ -160,7 +160,7 @@ export class TextareaInputComponent {
160
160
  </ion-note>
161
161
  }
162
162
  </div>
163
- `, isInline: true, styles: [":host{display:block;width:100%}.textarea-container{position:relative}.textarea-container ion-textarea{--background: var(--ion-background-color, #fff);--padding-start: 12px;--padding-end: 12px;--padding-top: 12px;--padding-bottom: 12px}.textarea-container ion-textarea.no-resize textarea{resize:none!important}.textarea-container.has-error ion-textarea{--border-color: var(--ion-color-danger);--highlight-color: var(--ion-color-danger)}.char-counter{font-size:12px;color:var(--ion-color-medium);text-align:right;margin-top:4px;padding-right:4px}.char-counter.remaining{color:var(--ion-color-medium-shade)}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}ion-textarea::part(counter){font-size:12px;color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }] }); }
163
+ `, isInline: true, styles: [":host{display:block;width:100%}.textarea-container{position:relative}.textarea-container ion-textarea{--background: var(--ion-background-color, #fff);--padding-start: 12px;--padding-end: 12px;--padding-top: 12px;--padding-bottom: 12px}.textarea-container ion-textarea.no-resize textarea{resize:none!important}.textarea-container.has-error ion-textarea{--border-color: var(--ion-color-danger);--highlight-color: var(--ion-color-danger)}.char-counter{font-size:12px;color:var(--ion-color-medium);text-align:right;margin-top:4px;padding-right:4px}.char-counter.remaining{color:var(--ion-color-medium-shade)}.hint{display:block;font-size:12px;color:var(--ion-color-dark);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}ion-textarea::part(counter){font-size:12px;color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }] }); }
164
164
  }
165
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TextareaInputComponent, decorators: [{
166
166
  type: Component,
@@ -204,10 +204,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
204
204
  </ion-note>
205
205
  }
206
206
  </div>
207
- `, styles: [":host{display:block;width:100%}.textarea-container{position:relative}.textarea-container ion-textarea{--background: var(--ion-background-color, #fff);--padding-start: 12px;--padding-end: 12px;--padding-top: 12px;--padding-bottom: 12px}.textarea-container ion-textarea.no-resize textarea{resize:none!important}.textarea-container.has-error ion-textarea{--border-color: var(--ion-color-danger);--highlight-color: var(--ion-color-danger)}.char-counter{font-size:12px;color:var(--ion-color-medium);text-align:right;margin-top:4px;padding-right:4px}.char-counter.remaining{color:var(--ion-color-medium-shade)}.hint{display:block;font-size:12px;color:var(--ion-color-medium);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}ion-textarea::part(counter){font-size:12px;color:var(--ion-color-medium)}\n"] }]
207
+ `, styles: [":host{display:block;width:100%}.textarea-container{position:relative}.textarea-container ion-textarea{--background: var(--ion-background-color, #fff);--padding-start: 12px;--padding-end: 12px;--padding-top: 12px;--padding-bottom: 12px}.textarea-container ion-textarea.no-resize textarea{resize:none!important}.textarea-container.has-error ion-textarea{--border-color: var(--ion-color-danger);--highlight-color: var(--ion-color-danger)}.char-counter{font-size:12px;color:var(--ion-color-medium);text-align:right;margin-top:4px;padding-right:4px}.char-counter.remaining{color:var(--ion-color-medium-shade)}.hint{display:block;font-size:12px;color:var(--ion-color-dark);margin-top:4px;padding-left:4px}.error-message{display:block;font-size:12px;margin-top:4px;padding-left:4px}ion-textarea::part(counter){font-size:12px;color:var(--ion-color-medium)}\n"] }]
208
208
  }], propDecorators: { preset: [{
209
209
  type: Input
210
210
  }], props: [{
211
211
  type: Input
212
212
  }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90ZXh0YXJlYS1pbnB1dC90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBa0Q5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBaEZuQztRQWlGVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBV3hDOztXQUVHO1FBQ00sVUFBSyxHQUFtQyxFQUFFLENBQUM7UUFFcEQ7O1dBRUc7UUFDSCxrQkFBYSxHQUEwQixFQUEyQixDQUFDO1FBRW5FLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFnRnpCLGlEQUFpRDtRQUNqRCxxQkFBZ0IsR0FBRyxDQUFDLFdBQW1CLEVBQUUsU0FBaUIsRUFBVSxFQUFFO1lBQ3BFLE9BQU8sR0FBRyxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDO0tBQ0g7SUFsRkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FB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Q0FBQztJQUM3RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsT0FBTyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFDMUUsQ0FBQzsrR0FwR1Usc0JBQXNCO21HQUF0QixzQkFBc0IsaUpBNUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDVCw2NUJBekNTLFlBQVksOEJBQUUsbUJBQW1CLGdvQkFBRSxXQUFXLGlhQUFFLE9BQU87OzRGQTZFdEQsc0JBQXNCO2tCQWhGbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsWUFDeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7OEJBOENRLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvblRleHRhcmVhLCBJb25Ob3RlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBUZXh0YXJlYUlucHV0TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRleHRhcmVhLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uVGV4dGFyZWEsIElvbk5vdGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0YXJlYS1jb250YWluZXJcIiBbY2xhc3NdPVwicmVzb2x2ZWRQcm9wcy5jc3NDbGFzc1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgICAgIDxpb24tdGV4dGFyZWFcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlc29sdmVkUHJvcHMuY29udHJvbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2xhYmVsXT1cImdldExhYmVsKClcIlxuICAgICAgICBbbGFiZWxQbGFjZW1lbnRdPVwicmVzb2x2ZWRQcm9wcy5sYWJlbFBsYWNlbWVudCB8fCAnc3RhY2tlZCdcIlxuICAgICAgICBbZmlsbF09XCJyZXNvbHZlZFByb3BzLmZpbGwgfHwgJ291dGxpbmUnXCJcbiAgICAgICAgW2NvbG9yXT1cImhhc0Vycm9yID8gJ2RhbmdlcicgOiByZXNvbHZlZFByb3BzLmNvbG9yXCJcbiAgICAgICAgW3Jvd3NdPVwicmVzb2x2ZWRQcm9wcy5yb3dzIHx8IDRcIlxuICAgICAgICBbYXV0b0dyb3ddPVwicmVzb2x2ZWRQcm9wcy5hdXRvR3JvdyA/PyBmYWxzZVwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwicmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGhcIlxuICAgICAgICBbbWlubGVuZ3RoXT1cInJlc29sdmVkUHJvcHMubWluTGVuZ3RoXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZXNvbHZlZFByb3BzLnN0YXRlID09PSBzdGF0ZXMuV09SS0lOR1wiXG4gICAgICAgIFtzcGVsbGNoZWNrXT1cInJlc29sdmVkUHJvcHMuc3BlbGxjaGVjayA/PyB0cnVlXCJcbiAgICAgICAgW2F1dG9jYXBpdGFsaXplXT1cInJlc29sdmVkUHJvcHMuYXV0b2NhcGl0YWxpemUgfHwgJ3NlbnRlbmNlcydcIlxuICAgICAgICBbaW5wdXRtb2RlXT1cInJlc29sdmVkUHJvcHMuaW5wdXRNb2RlIHx8ICd0ZXh0J1wiXG4gICAgICAgIFt3cmFwXT1cInJlc29sdmVkUHJvcHMud3JhcCB8fCAnc29mdCdcIlxuICAgICAgICBbY291bnRlcl09XCJyZXNvbHZlZFByb3BzLnNob3dDb3VudGVyICYmICEhcmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGhcIlxuICAgICAgICBbY291bnRlckZvcm1hdHRlcl09XCJjb3VudGVyRm9ybWF0dGVyXCJcbiAgICAgICAgW2NsYXNzLm5vLXJlc2l6ZV09XCJyZXNvbHZlZFByb3BzLmRpc2FibGVSZXNpemVcIlxuICAgICAgPjwvaW9uLXRleHRhcmVhPlxuXG4gICAgICBAaWYgKHJlc29sdmVkUHJvcHMuc2hvd0NvdW50ZXIgJiYgcmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGggJiYgcmVzb2x2ZWRQcm9wcy5jb3VudGVyRm9ybWF0ID09PSAncmVtYWluaW5nJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhci1jb3VudGVyIHJlbWFpbmluZ1wiPlxuICAgICAgICAgIHt7IGdldFJlbWFpbmluZ0NoYXJzKCkgfX0ge3sgZ2V0UmVtYWluaW5nTGFiZWwoKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZFByb3BzLmhpbnQgJiYgIWhhc0Vycm9yKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImhpbnRcIj57eyBnZXRIaW50KCkgfX08L2lvbi1ub3RlPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc0Vycm9yICYmIHJlc29sdmVkUHJvcHMuc2hvd0Vycm9ycykge1xuICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoKSB9fVxuICAgICAgICA8L2lvbi1ub3RlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXRleHRhcmVhLWlucHV0XG4gKlxuICogQSB0ZXh0YXJlYSBpbnB1dCBmaWVsZCB3aXRoIGNoYXJhY3RlciBjb3VudGVyLCBhdXRvLWdyb3csIGFuZCB2YWxpZGF0aW9uIHN1cHBvcnQuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtdGV4dGFyZWEtaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiBtZXNzYWdlQ29udHJvbCxcbiAqICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgbWVzc2FnZScsXG4gKiAgICAgcm93czogNFxuICogICB9XCJcbiAqID48L3ZhbC10ZXh0YXJlYS1pbnB1dD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggY291bnRlciBhbmQgdmFsaWRhdGlvblxuICogYGBgaHRtbFxuICogPHZhbC10ZXh0YXJlYS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IGJpb0NvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdCaW8nLFxuICogICAgIHBsYWNlaG9sZGVyOiAnVGVsbCB1cyBhYm91dCB5b3Vyc2VsZicsXG4gKiAgICAgbWF4TGVuZ3RoOiA1MDAsXG4gKiAgICAgc2hvd0NvdW50ZXI6IHRydWUsXG4gKiAgICAgY291bnRlckZvcm1hdDogJ3JlbWFpbmluZycsXG4gKiAgICAgYXV0b0dyb3c6IHRydWUsXG4gKiAgICAgc2hvd0Vycm9yczogdHJ1ZSxcbiAqICAgICBlcnJvcnM6IHsgbWF4bGVuZ3RoOiAnQmlvIGlzIHRvbyBsb25nJyB9XG4gKiAgIH1cIlxuICogPjwvdmFsLXRleHRhcmVhLWlucHV0PlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXh0YXJlYUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSB0ZXh0YXJlYSBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtdGV4dGFyZWEtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7IGNvbnRyb2w6IGN0cmwgfVwiPjwvdmFsLXRleHRhcmVhLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXh0YXJlYSBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFRleHRhcmVhSW5wdXRNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFRleHRhcmVhSW5wdXRNZXRhZGF0YSA9IHt9IGFzIFRleHRhcmVhSW5wdXRNZXRhZGF0YTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbHVlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCd0ZXh0YXJlYUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8VGV4dGFyZWFJbnB1dE1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBUZXh0YXJlYUlucHV0TWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHM/LndpdGhEZWZhdWx0IHx8IHRoaXMucmVzb2x2ZWRQcm9wcz8udmFsdWUpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9XG4gICAgICAgIHR5cGVvZiB0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnID8gdGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0IDogdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlIHx8ICcnO1xuICAgICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sICYmICF0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC52YWx1ZSkge1xuICAgICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5sYWJlbCB8fCAnJztcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlciB8fCAnJztcbiAgfVxuXG4gIGdldEhpbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy50b3VjaGVkICYmIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5yZXNvbHZlZFByb3BzLmVycm9ycykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLmVycm9ycyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuZXJyb3JzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0UmVtYWluaW5nQ2hhcnMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjdXJyZW50TGVuZ3RoID0gdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LnZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICByZXR1cm4gKHRoaXMucmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGggfHwgMCkgLSBjdXJyZW50TGVuZ3RoO1xuICB9XG5cbiAgZ2V0UmVtYWluaW5nTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSB0aGlzLmdldFJlbWFpbmluZ0NoYXJzKCk7XG4gICAgcmV0dXJuIHJlbWFpbmluZyA9PT0gMSA/ICdjaGFyYWN0ZXIgcmVtYWluaW5nJyA6ICdjaGFyYWN0ZXJzIHJlbWFpbmluZyc7XG4gIH1cblxuICAvLyBDb3VudGVyIGZvcm1hdHRlciBmb3IgSW9uaWMncyBidWlsdC1pbiBjb3VudGVyXG4gIGNvdW50ZXJGb3JtYXR0ZXIgPSAoaW5wdXRMZW5ndGg6IG51bWJlciwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBgJHtpbnB1dExlbmd0aH0vJHttYXhMZW5ndGh9YDtcbiAgfTtcbn1cbiJdfQ==
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy90ZXh0YXJlYS1pbnB1dC90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBa0Q5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBaEZuQztRQWlGVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBV3hDOztXQUVHO1FBQ00sVUFBSyxHQUFtQyxFQUFFLENBQUM7UUFFcEQ7O1dBRUc7UUFDSCxrQkFBYSxHQUEwQixFQUEyQixDQUFDO1FBRW5FLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFnRnpCLGlEQUFpRDtRQUNqRCxxQkFBZ0IsR0FBRyxDQUFDLFdBQW1CLEVBQUUsU0FBaUIsRUFBVSxFQUFFO1lBQ3BFLE9BQU8sR0FBRyxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDO0tBQ0g7SUFsRkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FB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Q0FBQztJQUM3RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0MsT0FBTyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUM7SUFDMUUsQ0FBQzsrR0FwR1Usc0JBQXNCO21HQUF0QixzQkFBc0IsaUpBNUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDVCwyNUJBekNTLFlBQVksOEJBQUUsbUJBQW1CLGdvQkFBRSxXQUFXLGlhQUFFLE9BQU87OzRGQTZFdEQsc0JBQXNCO2tCQWhGbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsWUFDeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Q1Q7OEJBOENRLE1BQU07c0JBQWQsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvblRleHRhcmVhLCBJb25Ob3RlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBUZXh0YXJlYUlucHV0TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXRleHRhcmVhLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uVGV4dGFyZWEsIElvbk5vdGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0YXJlYS1jb250YWluZXJcIiBbY2xhc3NdPVwicmVzb2x2ZWRQcm9wcy5jc3NDbGFzc1wiIFtjbGFzcy5oYXMtZXJyb3JdPVwiaGFzRXJyb3JcIj5cbiAgICAgIDxpb24tdGV4dGFyZWFcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlc29sdmVkUHJvcHMuY29udHJvbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2xhYmVsXT1cImdldExhYmVsKClcIlxuICAgICAgICBbbGFiZWxQbGFjZW1lbnRdPVwicmVzb2x2ZWRQcm9wcy5sYWJlbFBsYWNlbWVudCB8fCAnc3RhY2tlZCdcIlxuICAgICAgICBbZmlsbF09XCJyZXNvbHZlZFByb3BzLmZpbGwgfHwgJ291dGxpbmUnXCJcbiAgICAgICAgW2NvbG9yXT1cImhhc0Vycm9yID8gJ2RhbmdlcicgOiByZXNvbHZlZFByb3BzLmNvbG9yXCJcbiAgICAgICAgW3Jvd3NdPVwicmVzb2x2ZWRQcm9wcy5yb3dzIHx8IDRcIlxuICAgICAgICBbYXV0b0dyb3ddPVwicmVzb2x2ZWRQcm9wcy5hdXRvR3JvdyA/PyBmYWxzZVwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwicmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGhcIlxuICAgICAgICBbbWlubGVuZ3RoXT1cInJlc29sdmVkUHJvcHMubWluTGVuZ3RoXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlc29sdmVkUHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZXNvbHZlZFByb3BzLnN0YXRlID09PSBzdGF0ZXMuV09SS0lOR1wiXG4gICAgICAgIFtzcGVsbGNoZWNrXT1cInJlc29sdmVkUHJvcHMuc3BlbGxjaGVjayA/PyB0cnVlXCJcbiAgICAgICAgW2F1dG9jYXBpdGFsaXplXT1cInJlc29sdmVkUHJvcHMuYXV0b2NhcGl0YWxpemUgfHwgJ3NlbnRlbmNlcydcIlxuICAgICAgICBbaW5wdXRtb2RlXT1cInJlc29sdmVkUHJvcHMuaW5wdXRNb2RlIHx8ICd0ZXh0J1wiXG4gICAgICAgIFt3cmFwXT1cInJlc29sdmVkUHJvcHMud3JhcCB8fCAnc29mdCdcIlxuICAgICAgICBbY291bnRlcl09XCJyZXNvbHZlZFByb3BzLnNob3dDb3VudGVyICYmICEhcmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGhcIlxuICAgICAgICBbY291bnRlckZvcm1hdHRlcl09XCJjb3VudGVyRm9ybWF0dGVyXCJcbiAgICAgICAgW2NsYXNzLm5vLXJlc2l6ZV09XCJyZXNvbHZlZFByb3BzLmRpc2FibGVSZXNpemVcIlxuICAgICAgPjwvaW9uLXRleHRhcmVhPlxuXG4gICAgICBAaWYgKHJlc29sdmVkUHJvcHMuc2hvd0NvdW50ZXIgJiYgcmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGggJiYgcmVzb2x2ZWRQcm9wcy5jb3VudGVyRm9ybWF0ID09PSAncmVtYWluaW5nJykge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhci1jb3VudGVyIHJlbWFpbmluZ1wiPlxuICAgICAgICAgIHt7IGdldFJlbWFpbmluZ0NoYXJzKCkgfX0ge3sgZ2V0UmVtYWluaW5nTGFiZWwoKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZFByb3BzLmhpbnQgJiYgIWhhc0Vycm9yKSB7XG4gICAgICAgIDxpb24tbm90ZSBjbGFzcz1cImhpbnRcIj57eyBnZXRIaW50KCkgfX08L2lvbi1ub3RlPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc0Vycm9yICYmIHJlc29sdmVkUHJvcHMuc2hvd0Vycm9ycykge1xuICAgICAgICA8aW9uLW5vdGUgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoKSB9fVxuICAgICAgICA8L2lvbi1ub3RlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXRleHRhcmVhLWlucHV0XG4gKlxuICogQSB0ZXh0YXJlYSBpbnB1dCBmaWVsZCB3aXRoIGNoYXJhY3RlciBjb3VudGVyLCBhdXRvLWdyb3csIGFuZCB2YWxpZGF0aW9uIHN1cHBvcnQuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYGh0bWxcbiAqIDx2YWwtdGV4dGFyZWEtaW5wdXRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiBtZXNzYWdlQ29udHJvbCxcbiAqICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgbWVzc2FnZScsXG4gKiAgICAgcm93czogNFxuICogICB9XCJcbiAqID48L3ZhbC10ZXh0YXJlYS1pbnB1dD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggY291bnRlciBhbmQgdmFsaWRhdGlvblxuICogYGBgaHRtbFxuICogPHZhbC10ZXh0YXJlYS1pbnB1dFxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IGJpb0NvbnRyb2wsXG4gKiAgICAgbGFiZWw6ICdCaW8nLFxuICogICAgIHBsYWNlaG9sZGVyOiAnVGVsbCB1cyBhYm91dCB5b3Vyc2VsZicsXG4gKiAgICAgbWF4TGVuZ3RoOiA1MDAsXG4gKiAgICAgc2hvd0NvdW50ZXI6IHRydWUsXG4gKiAgICAgY291bnRlckZvcm1hdDogJ3JlbWFpbmluZycsXG4gKiAgICAgYXV0b0dyb3c6IHRydWUsXG4gKiAgICAgc2hvd0Vycm9yczogdHJ1ZSxcbiAqICAgICBlcnJvcnM6IHsgbWF4bGVuZ3RoOiAnQmlvIGlzIHRvbyBsb25nJyB9XG4gKiAgIH1cIlxuICogPjwvdmFsLXRleHRhcmVhLWlucHV0PlxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXh0YXJlYUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSB0ZXh0YXJlYSBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtdGV4dGFyZWEtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7IGNvbnRyb2w6IGN0cmwgfVwiPjwvdmFsLXRleHRhcmVhLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXh0YXJlYSBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPFRleHRhcmVhSW5wdXRNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IFRleHRhcmVhSW5wdXRNZXRhZGF0YSA9IHt9IGFzIFRleHRhcmVhSW5wdXRNZXRhZGF0YTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbHVlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgICB0aGlzLmFwcGx5RGVmYXVsdFZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHByZXNldCBjb25maWd1cmF0aW9uIHdpdGggZXhwbGljaXQgcHJvcHMuXG4gICAqIEV4cGxpY2l0IHByb3BzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHByZXNldCB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCd0ZXh0YXJlYUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8VGV4dGFyZWFJbnB1dE1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBUZXh0YXJlYUlucHV0TWV0YWRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHM/LndpdGhEZWZhdWx0IHx8IHRoaXMucmVzb2x2ZWRQcm9wcz8udmFsdWUpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9XG4gICAgICAgIHR5cGVvZiB0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnID8gdGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0IDogdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlIHx8ICcnO1xuICAgICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sICYmICF0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC52YWx1ZSkge1xuICAgICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5sYWJlbCB8fCAnJztcbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlciB8fCAnJztcbiAgfVxuXG4gIGdldEhpbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLmhpbnQgfHwgJyc7XG4gIH1cblxuICBnZXQgaGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy50b3VjaGVkICYmIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sPy5pbnZhbGlkKTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LmVycm9ycyB8fCAhdGhpcy5yZXNvbHZlZFByb3BzLmVycm9ycykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGVycm9yS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLmVycm9ycyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgZXJyb3JLZXlzKSB7XG4gICAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLmVycm9yc1trZXldKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMuZXJyb3JzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0UmVtYWluaW5nQ2hhcnMoKTogbnVtYmVyIHtcbiAgICBjb25zdCBjdXJyZW50TGVuZ3RoID0gdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2w/LnZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICByZXR1cm4gKHRoaXMucmVzb2x2ZWRQcm9wcy5tYXhMZW5ndGggfHwgMCkgLSBjdXJyZW50TGVuZ3RoO1xuICB9XG5cbiAgZ2V0UmVtYWluaW5nTGFiZWwoKTogc3RyaW5nIHtcbiAgICBjb25zdCByZW1haW5pbmcgPSB0aGlzLmdldFJlbWFpbmluZ0NoYXJzKCk7XG4gICAgcmV0dXJuIHJlbWFpbmluZyA9PT0gMSA/ICdjaGFyYWN0ZXIgcmVtYWluaW5nJyA6ICdjaGFyYWN0ZXJzIHJlbWFpbmluZyc7XG4gIH1cblxuICAvLyBDb3VudGVyIGZvcm1hdHRlciBmb3IgSW9uaWMncyBidWlsdC1pbiBjb3VudGVyXG4gIGNvdW50ZXJGb3JtYXR0ZXIgPSAoaW5wdXRMZW5ndGg6IG51bWJlciwgbWF4TGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBgJHtpbnB1dExlbmd0aH0vJHttYXhMZW5ndGh9YDtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,77 @@
1
+ import { Component, computed, inject, input, output, signal } from '@angular/core';
2
+ import { IonButton, IonIcon, IonNote, IonSpinner } from '@ionic/angular/standalone';
3
+ import { addIcons } from 'ionicons';
4
+ import { attachOutline, cameraOutline, checkmarkCircleOutline, closeCircleOutline, documentOutline, imageOutline, trashOutline, } from 'ionicons/icons';
5
+ import { FeedbackService } from '../../../services/feedback';
6
+ import { I18nService } from '../../../services/i18n';
7
+ import * as i0 from "@angular/core";
8
+ export class AttachmentUploaderComponent {
9
+ get readyUrls() {
10
+ return this.attachments()
11
+ .filter(a => a.status === 'ready')
12
+ .map(a => a.url);
13
+ }
14
+ constructor() {
15
+ this.props = input({});
16
+ this.attachmentsChange = output();
17
+ this.i18n = inject(I18nService);
18
+ this.feedbackService = inject(FeedbackService);
19
+ this.attachments = signal([]);
20
+ this.maxFiles = computed(() => this.props().maxFiles ?? 5);
21
+ this.accept = computed(() => this.props().accept ?? 'image/jpeg,image/png,image/webp,application/pdf');
22
+ this.maxReached = computed(() => this.attachments().length >= this.maxFiles());
23
+ this.isDisabled = computed(() => this.props().disabled === true || this.maxReached());
24
+ this.isUploading = computed(() => this.attachments().some(a => a.status === 'uploading'));
25
+ addIcons({
26
+ attachOutline,
27
+ cameraOutline,
28
+ checkmarkCircleOutline,
29
+ closeCircleOutline,
30
+ documentOutline,
31
+ imageOutline,
32
+ trashOutline,
33
+ });
34
+ }
35
+ async onFilesSelected(event) {
36
+ const input = event.target;
37
+ const files = Array.from(input.files ?? []);
38
+ input.value = '';
39
+ const available = this.maxFiles() - this.attachments().length;
40
+ const toProcess = files.slice(0, available);
41
+ for (const file of toProcess) {
42
+ const id = crypto.randomUUID();
43
+ this.attachments.update(list => [...list, { id, file, status: 'uploading' }]);
44
+ this.attachmentsChange.emit(this.attachments());
45
+ this.uploadFile(id, file);
46
+ }
47
+ }
48
+ async uploadFile(id, file) {
49
+ try {
50
+ const url = await this.feedbackService.uploadAttachment(file);
51
+ this.attachments.update(list => list.map(a => (a.id === id ? { ...a, status: 'ready', url } : a)));
52
+ }
53
+ catch {
54
+ const error = this.i18n.t('attachUploadFailed');
55
+ this.attachments.update(list => list.map(a => (a.id === id ? { ...a, status: 'error', error } : a)));
56
+ }
57
+ this.attachmentsChange.emit(this.attachments());
58
+ }
59
+ remove(id) {
60
+ this.attachments.update(list => list.filter(a => a.id !== id));
61
+ this.attachmentsChange.emit(this.attachments());
62
+ }
63
+ formatSize(bytes) {
64
+ if (bytes < 1024)
65
+ return `${bytes} B`;
66
+ if (bytes < 1024 * 1024)
67
+ return `${Math.round(bytes / 1024)} KB`;
68
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AttachmentUploaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AttachmentUploaderComponent, isStandalone: true, selector: "val-attachment-uploader", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { attachmentsChange: "attachmentsChange" }, ngImport: i0, template: "<div class=\"attachment-uploader\">\n <input #filePicker type=\"file\" [accept]=\"accept()\" multiple class=\"hidden-input\" (change)=\"onFilesSelected($event)\" />\n <input\n #cameraPicker\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n class=\"hidden-input\"\n (change)=\"onFilesSelected($event)\"\n />\n\n <div class=\"attachment-actions\">\n <ion-button fill=\"outline\" size=\"small\" [disabled]=\"isDisabled()\" (click)=\"filePicker.click()\">\n <ion-icon slot=\"start\" name=\"attach-outline\"></ion-icon>\n {{ i18n.t('attachAdd') }}\n </ion-button>\n <ion-button fill=\"outline\" size=\"small\" [disabled]=\"isDisabled()\" (click)=\"cameraPicker.click()\">\n <ion-icon slot=\"start\" name=\"camera-outline\"></ion-icon>\n {{ i18n.t('attachCamera') }}\n </ion-button>\n </div>\n\n @if (maxReached()) {\n <ion-note color=\"warning\" class=\"max-note\">\n {{ i18n.t('attachMaxCount', '_global', { count: maxFiles().toString() }) }}\n </ion-note>\n } @if (attachments().length > 0) {\n <div class=\"attachment-list\">\n @for (item of attachments(); track item.id) {\n <div class=\"attachment-item\" [class]=\"'status-' + item.status\">\n <ion-icon\n class=\"file-icon\"\n [name]=\"item.file.type.startsWith('image/') ? 'image-outline' : 'document-outline'\"\n ></ion-icon>\n <div class=\"file-info\">\n <span class=\"file-name\">{{ item.file.name }}</span>\n <span class=\"file-size\">{{ formatSize(item.file.size) }}</span>\n </div>\n\n @if (item.status === 'uploading') {\n <ion-spinner class=\"status-icon\" name=\"circular\"></ion-spinner>\n } @else if (item.status === 'ready') {\n <ion-icon class=\"status-icon\" name=\"checkmark-circle-outline\" color=\"success\"></ion-icon>\n } @else if (item.status === 'error') {\n <ion-icon class=\"status-icon\" name=\"close-circle-outline\" color=\"danger\"></ion-icon>\n } @if (item.status !== 'uploading') {\n <ion-button fill=\"clear\" size=\"small\" color=\"medium\" (click)=\"remove(item.id)\">\n <ion-icon slot=\"icon-only\" name=\"trash-outline\"></ion-icon>\n </ion-button>\n } @if (item.status === 'error' && item.error) {\n <ion-note color=\"danger\" class=\"error-note\">{{ item.error }}</ion-note>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: [".hidden-input{display:none}.attachment-uploader{display:flex;flex-direction:column;gap:8px}.attachment-actions{display:flex;gap:8px;flex-wrap:wrap}.attachment-list{display:flex;flex-direction:column;gap:4px}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:var(--ion-color-light);flex-wrap:wrap}.attachment-item.status-error{background:var(--ion-color-danger-tint)}.attachment-item.status-ready{background:var(--ion-color-success-tint)}.file-icon{font-size:20px;flex-shrink:0}.file-info{flex:1;min-width:0;display:flex;flex-direction:column}.file-name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-size{font-size:12px;color:var(--ion-color-medium)}.status-icon{font-size:20px;flex-shrink:0}.error-note{font-size:11px;width:100%}.max-note{font-size:12px}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }] }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AttachmentUploaderComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'val-attachment-uploader', standalone: true, imports: [IonButton, IonIcon, IonNote, IonSpinner], template: "<div class=\"attachment-uploader\">\n <input #filePicker type=\"file\" [accept]=\"accept()\" multiple class=\"hidden-input\" (change)=\"onFilesSelected($event)\" />\n <input\n #cameraPicker\n type=\"file\"\n accept=\"image/*\"\n capture=\"environment\"\n class=\"hidden-input\"\n (change)=\"onFilesSelected($event)\"\n />\n\n <div class=\"attachment-actions\">\n <ion-button fill=\"outline\" size=\"small\" [disabled]=\"isDisabled()\" (click)=\"filePicker.click()\">\n <ion-icon slot=\"start\" name=\"attach-outline\"></ion-icon>\n {{ i18n.t('attachAdd') }}\n </ion-button>\n <ion-button fill=\"outline\" size=\"small\" [disabled]=\"isDisabled()\" (click)=\"cameraPicker.click()\">\n <ion-icon slot=\"start\" name=\"camera-outline\"></ion-icon>\n {{ i18n.t('attachCamera') }}\n </ion-button>\n </div>\n\n @if (maxReached()) {\n <ion-note color=\"warning\" class=\"max-note\">\n {{ i18n.t('attachMaxCount', '_global', { count: maxFiles().toString() }) }}\n </ion-note>\n } @if (attachments().length > 0) {\n <div class=\"attachment-list\">\n @for (item of attachments(); track item.id) {\n <div class=\"attachment-item\" [class]=\"'status-' + item.status\">\n <ion-icon\n class=\"file-icon\"\n [name]=\"item.file.type.startsWith('image/') ? 'image-outline' : 'document-outline'\"\n ></ion-icon>\n <div class=\"file-info\">\n <span class=\"file-name\">{{ item.file.name }}</span>\n <span class=\"file-size\">{{ formatSize(item.file.size) }}</span>\n </div>\n\n @if (item.status === 'uploading') {\n <ion-spinner class=\"status-icon\" name=\"circular\"></ion-spinner>\n } @else if (item.status === 'ready') {\n <ion-icon class=\"status-icon\" name=\"checkmark-circle-outline\" color=\"success\"></ion-icon>\n } @else if (item.status === 'error') {\n <ion-icon class=\"status-icon\" name=\"close-circle-outline\" color=\"danger\"></ion-icon>\n } @if (item.status !== 'uploading') {\n <ion-button fill=\"clear\" size=\"small\" color=\"medium\" (click)=\"remove(item.id)\">\n <ion-icon slot=\"icon-only\" name=\"trash-outline\"></ion-icon>\n </ion-button>\n } @if (item.status === 'error' && item.error) {\n <ion-note color=\"danger\" class=\"error-note\">{{ item.error }}</ion-note>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: [".hidden-input{display:none}.attachment-uploader{display:flex;flex-direction:column;gap:8px}.attachment-actions{display:flex;gap:8px;flex-wrap:wrap}.attachment-list{display:flex;flex-direction:column;gap:4px}.attachment-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:var(--ion-color-light);flex-wrap:wrap}.attachment-item.status-error{background:var(--ion-color-danger-tint)}.attachment-item.status-ready{background:var(--ion-color-success-tint)}.file-icon{font-size:20px;flex-shrink:0}.file-info{flex:1;min-width:0;display:flex;flex-direction:column}.file-name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-size{font-size:12px;color:var(--ion-color-medium)}.status-icon{font-size:20px;flex-shrink:0}.error-note{font-size:11px;width:100%}.max-note{font-size:12px}\n"] }]
76
+ }], ctorParameters: () => [] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEVBQ2Isc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsWUFBWSxFQUNaLFlBQVksR0FDYixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBVXJELE1BQU0sT0FBTywyQkFBMkI7SUFnQnRDLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRTthQUN0QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQzthQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEO1FBckJBLFVBQUssR0FBRyxLQUFLLENBQTZCLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLHNCQUFpQixHQUFHLE1BQU0sRUFBb0IsQ0FBQztRQUVyQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxELGdCQUFXLEdBQUcsTUFBTSxDQUFtQixFQUFFLENBQUMsQ0FBQztRQUUzQyxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxJQUFJLGlEQUFpRCxDQUFDLENBQUM7UUFDbEcsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDakYsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztRQVNuRixRQUFRLENBQUM7WUFDUCxhQUFhO1lBQ2IsYUFBYTtZQUNiLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLFlBQVk7WUFDWixZQUFZO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBWTtRQUNoQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDOUQsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUMsS0FBSyxNQUFNLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQVUsRUFBRSxJQUFVO1FBQzdDLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSTtZQUFFLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztRQUN0QyxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSTtZQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pFLE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUM7K0dBcEVVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRRQ3ZCeEMsMjJFQXlEQSxtNUJEdENZLFNBQVMsb1BBQUUsT0FBTywySkFBRSxPQUFPLGdGQUFFLFVBQVU7OzRGQUl0QywyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvbk5vdGUsIElvblNwaW5uZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYXR0YWNoT3V0bGluZSxcbiAgY2FtZXJhT3V0bGluZSxcbiAgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSxcbiAgY2xvc2VDaXJjbGVPdXRsaW5lLFxuICBkb2N1bWVudE91dGxpbmUsXG4gIGltYWdlT3V0bGluZSxcbiAgdHJhc2hPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBGZWVkYmFja1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mZWVkYmFjayc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQXR0YWNobWVudEl0ZW0sIEF0dGFjaG1lbnRVcGxvYWRlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hdHRhY2htZW50LXVwbG9hZGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uTm90ZSwgSW9uU3Bpbm5lcl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2htZW50LXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F0dGFjaG1lbnQtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQge1xuICBwcm9wcyA9IGlucHV0PEF0dGFjaG1lbnRVcGxvYWRlck1ldGFkYXRhPih7fSk7XG5cbiAgYXR0YWNobWVudHNDaGFuZ2UgPSBvdXRwdXQ8QXR0YWNobWVudEl0ZW1bXT4oKTtcblxuICBwcm90ZWN0ZWQgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgZmVlZGJhY2tTZXJ2aWNlID0gaW5qZWN0KEZlZWRiYWNrU2VydmljZSk7XG5cbiAgYXR0YWNobWVudHMgPSBzaWduYWw8QXR0YWNobWVudEl0ZW1bXT4oW10pO1xuXG4gIG1heEZpbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLm1heEZpbGVzID8/IDUpO1xuICBhY2NlcHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCkuYWNjZXB0ID8/ICdpbWFnZS9qcGVnLGltYWdlL3BuZyxpbWFnZS93ZWJwLGFwcGxpY2F0aW9uL3BkZicpO1xuICBtYXhSZWFjaGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hdHRhY2htZW50cygpLmxlbmd0aCA+PSB0aGlzLm1heEZpbGVzKCkpO1xuICBpc0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpLmRpc2FibGVkID09PSB0cnVlIHx8IHRoaXMubWF4UmVhY2hlZCgpKTtcbiAgaXNVcGxvYWRpbmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF0dGFjaG1lbnRzKCkuc29tZShhID0+IGEuc3RhdHVzID09PSAndXBsb2FkaW5nJykpO1xuXG4gIGdldCByZWFkeVVybHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmF0dGFjaG1lbnRzKClcbiAgICAgIC5maWx0ZXIoYSA9PiBhLnN0YXR1cyA9PT0gJ3JlYWR5JylcbiAgICAgIC5tYXAoYSA9PiBhLnVybCEpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoe1xuICAgICAgYXR0YWNoT3V0bGluZSxcbiAgICAgIGNhbWVyYU91dGxpbmUsXG4gICAgICBjaGVja21hcmtDaXJjbGVPdXRsaW5lLFxuICAgICAgY2xvc2VDaXJjbGVPdXRsaW5lLFxuICAgICAgZG9jdW1lbnRPdXRsaW5lLFxuICAgICAgaW1hZ2VPdXRsaW5lLFxuICAgICAgdHJhc2hPdXRsaW5lLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25GaWxlc1NlbGVjdGVkKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGlucHV0LmZpbGVzID8/IFtdKTtcbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICAgIGNvbnN0IGF2YWlsYWJsZSA9IHRoaXMubWF4RmlsZXMoKSAtIHRoaXMuYXR0YWNobWVudHMoKS5sZW5ndGg7XG4gICAgY29uc3QgdG9Qcm9jZXNzID0gZmlsZXMuc2xpY2UoMCwgYXZhaWxhYmxlKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdG9Qcm9jZXNzKSB7XG4gICAgICBjb25zdCBpZCA9IGNyeXB0by5yYW5kb21VVUlEKCk7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRzLnVwZGF0ZShsaXN0ID0+IFsuLi5saXN0LCB7IGlkLCBmaWxlLCBzdGF0dXM6ICd1cGxvYWRpbmcnIH1dKTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHNDaGFuZ2UuZW1pdCh0aGlzLmF0dGFjaG1lbnRzKCkpO1xuICAgICAgdGhpcy51cGxvYWRGaWxlKGlkLCBmaWxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwbG9hZEZpbGUoaWQ6IHN0cmluZywgZmlsZTogRmlsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLmZlZWRiYWNrU2VydmljZS51cGxvYWRBdHRhY2htZW50KGZpbGUpO1xuICAgICAgdGhpcy5hdHRhY2htZW50cy51cGRhdGUobGlzdCA9PiBsaXN0Lm1hcChhID0+IChhLmlkID09PSBpZCA/IHsgLi4uYSwgc3RhdHVzOiAncmVhZHknLCB1cmwgfSA6IGEpKSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuaTE4bi50KCdhdHRhY2hVcGxvYWRGYWlsZWQnKTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHMudXBkYXRlKGxpc3QgPT4gbGlzdC5tYXAoYSA9PiAoYS5pZCA9PT0gaWQgPyB7IC4uLmEsIHN0YXR1czogJ2Vycm9yJywgZXJyb3IgfSA6IGEpKSk7XG4gICAgfVxuICAgIHRoaXMuYXR0YWNobWVudHNDaGFuZ2UuZW1pdCh0aGlzLmF0dGFjaG1lbnRzKCkpO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmF0dGFjaG1lbnRzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKGEgPT4gYS5pZCAhPT0gaWQpKTtcbiAgICB0aGlzLmF0dGFjaG1lbnRzQ2hhbmdlLmVtaXQodGhpcy5hdHRhY2htZW50cygpKTtcbiAgfVxuXG4gIGZvcm1hdFNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCkgcmV0dXJuIGAke2J5dGVzfSBCYDtcbiAgICBpZiAoYnl0ZXMgPCAxMDI0ICogMTAyNCkgcmV0dXJuIGAke01hdGgucm91bmQoYnl0ZXMgLyAxMDI0KX0gS0JgO1xuICAgIHJldHVybiBgJHsoYnl0ZXMgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDEpfSBNQmA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhdHRhY2htZW50LXVwbG9hZGVyXCI+XG4gIDxpbnB1dCAjZmlsZVBpY2tlciB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0KClcIiBtdWx0aXBsZSBjbGFzcz1cImhpZGRlbi1pbnB1dFwiIChjaGFuZ2UpPVwib25GaWxlc1NlbGVjdGVkKCRldmVudClcIiAvPlxuICA8aW5wdXRcbiAgICAjY2FtZXJhUGlja2VyXG4gICAgdHlwZT1cImZpbGVcIlxuICAgIGFjY2VwdD1cImltYWdlLypcIlxuICAgIGNhcHR1cmU9XCJlbnZpcm9ubWVudFwiXG4gICAgY2xhc3M9XCJoaWRkZW4taW5wdXRcIlxuICAgIChjaGFuZ2UpPVwib25GaWxlc1NlbGVjdGVkKCRldmVudClcIlxuICAvPlxuXG4gIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWFjdGlvbnNcIj5cbiAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIHNpemU9XCJzbWFsbFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiAoY2xpY2spPVwiZmlsZVBpY2tlci5jbGljaygpXCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImF0dGFjaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgIHt7IGkxOG4udCgnYXR0YWNoQWRkJykgfX1cbiAgICA8L2lvbi1idXR0b24+XG4gICAgPGlvbi1idXR0b24gZmlsbD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCIgKGNsaWNrKT1cImNhbWVyYVBpY2tlci5jbGljaygpXCI+XG4gICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cImNhbWVyYS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgIHt7IGkxOG4udCgnYXR0YWNoQ2FtZXJhJykgfX1cbiAgICA8L2lvbi1idXR0b24+XG4gIDwvZGl2PlxuXG4gIEBpZiAobWF4UmVhY2hlZCgpKSB7XG4gIDxpb24tbm90ZSBjb2xvcj1cIndhcm5pbmdcIiBjbGFzcz1cIm1heC1ub3RlXCI+XG4gICAge3sgaTE4bi50KCdhdHRhY2hNYXhDb3VudCcsICdfZ2xvYmFsJywgeyBjb3VudDogbWF4RmlsZXMoKS50b1N0cmluZygpIH0pIH19XG4gIDwvaW9uLW5vdGU+XG4gIH0gQGlmIChhdHRhY2htZW50cygpLmxlbmd0aCA+IDApIHtcbiAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnQtbGlzdFwiPlxuICAgIEBmb3IgKGl0ZW0gb2YgYXR0YWNobWVudHMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgIDxkaXYgY2xhc3M9XCJhdHRhY2htZW50LWl0ZW1cIiBbY2xhc3NdPVwiJ3N0YXR1cy0nICsgaXRlbS5zdGF0dXNcIj5cbiAgICAgIDxpb24taWNvblxuICAgICAgICBjbGFzcz1cImZpbGUtaWNvblwiXG4gICAgICAgIFtuYW1lXT1cIml0ZW0uZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpID8gJ2ltYWdlLW91dGxpbmUnIDogJ2RvY3VtZW50LW91dGxpbmUnXCJcbiAgICAgID48L2lvbi1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImZpbGUtaW5mb1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbmFtZVwiPnt7IGl0ZW0uZmlsZS5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtc2l6ZVwiPnt7IGZvcm1hdFNpemUoaXRlbS5maWxlLnNpemUpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoaXRlbS5zdGF0dXMgPT09ICd1cGxvYWRpbmcnKSB7XG4gICAgICA8aW9uLXNwaW5uZXIgY2xhc3M9XCJzdGF0dXMtaWNvblwiIG5hbWU9XCJjaXJjdWxhclwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICB9IEBlbHNlIGlmIChpdGVtLnN0YXR1cyA9PT0gJ3JlYWR5Jykge1xuICAgICAgPGlvbi1pY29uIGNsYXNzPVwic3RhdHVzLWljb25cIiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZS1vdXRsaW5lXCIgY29sb3I9XCJzdWNjZXNzXCI+PC9pb24taWNvbj5cbiAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgICA8aW9uLWljb24gY2xhc3M9XCJzdGF0dXMtaWNvblwiIG5hbWU9XCJjbG9zZS1jaXJjbGUtb3V0bGluZVwiIGNvbG9yPVwiZGFuZ2VyXCI+PC9pb24taWNvbj5cbiAgICAgIH0gQGlmIChpdGVtLnN0YXR1cyAhPT0gJ3VwbG9hZGluZycpIHtcbiAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwibWVkaXVtXCIgKGNsaWNrKT1cInJlbW92ZShpdGVtLmlkKVwiPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIH0gQGlmIChpdGVtLnN0YXR1cyA9PT0gJ2Vycm9yJyAmJiBpdGVtLmVycm9yKSB7XG4gICAgICA8aW9uLW5vdGUgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yLW5vdGVcIj57eyBpdGVtLmVycm9yIH19PC9pb24tbm90ZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2F0dGFjaG1lbnQtdXBsb2FkZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudEl0ZW0ge1xuICBpZDogc3RyaW5nO1xuICBmaWxlOiBGaWxlO1xuICBzdGF0dXM6ICd1cGxvYWRpbmcnIHwgJ3JlYWR5JyB8ICdlcnJvcic7XG4gIHVybD86IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFVwbG9hZGVyTWV0YWRhdGEge1xuICBtYXhGaWxlcz86IG51bWJlcjtcbiAgYWNjZXB0Pzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG4iXX0=