@rlucan/ui 20.0.3 → 20.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"rlucan-ui.mjs","sources":["../../../projects/ui/src/lib/button/button.component.ts","../../../projects/ui/src/lib/button/button.component.html","../../../projects/ui/src/lib/layouts/base/ui-base.component.ts","../../../projects/ui/src/lib/layouts/simple/ui-simple.component.ts","../../../projects/ui/src/lib/services/ui-translate.service.ts","../../../projects/ui/src/lib/elements/validation-message/validation-message.component.ts","../../../projects/ui/src/lib/elements/validation-message/validation-message.component.html","../../../projects/ui/src/lib/layouts/base/ui-base-layout.component.ts","../../../projects/ui/src/lib/layouts/base/ui-base-layout.component.html","../../../projects/ui/src/lib/layouts/simple/ui-simple-layout.component.ts","../../../projects/ui/src/lib/layouts/simple/ui-simple-layout.component.html","../../../projects/ui/src/lib/action-icon/action-icon.component.ts","../../../projects/ui/src/lib/action-icon/action-icon.component.html","../../../projects/ui/src/lib/input/input.component.ts","../../../projects/ui/src/lib/input/input.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/services/ui-file.service.ts","../../../projects/ui/src/lib/file/file.component.ts","../../../projects/ui/src/lib/file/file.component.html","../../../projects/ui/src/lib/file-uploader/ui-file-uploader.component.ts","../../../projects/ui/src/lib/file-uploader/ui-file-uploader.component.html","../../../projects/ui/src/lib/elements/expander/expander.component.ts","../../../projects/ui/src/lib/elements/expander/expander.component.html","../../../projects/ui/src/lib/directives/force-visibility/force-visibility.directive.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/services/message-box.service.ts","../../../projects/ui/src/lib/currency/currency.component.ts","../../../projects/ui/src/lib/currency/currency.component.html","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/avatar/avatar.component.ts","../../../projects/ui/src/lib/avatar/avatar.component.html","../../../projects/ui/src/lib/submit-button/submit-button.component.ts","../../../projects/ui/src/lib/submit-button/submit-button.component.html","../../../projects/ui/src/lib/text-area/text-area.component.ts","../../../projects/ui/src/lib/text-area/text-area.component.html","../../../projects/ui/src/lib/date/date.component.ts","../../../projects/ui/src/lib/date/date.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/elements/burger/burger.component.ts","../../../projects/ui/src/lib/elements/burger/burger.component.html","../../../projects/ui/src/lib/autocomplete/autocomplete.component.ts","../../../projects/ui/src/lib/autocomplete/autocomplete.component.html","../../../projects/ui/src/lib/action-button/action-button.component.ts","../../../projects/ui/src/lib/action-button/action-button.component.html","../../../projects/ui/src/lib/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio.component.html","../../../projects/ui/src/lib/checkbox-group/checkbox-group.component.ts","../../../projects/ui/src/lib/checkbox-group/checkbox-group.component.html","../../../projects/ui/src/lib/radio-group/radio-group.component.ts","../../../projects/ui/src/lib/radio-group/radio-group.component.html","../../../projects/ui/src/lib/editor/editor.component.ts","../../../projects/ui/src/lib/editor/editor.component.html","../../../projects/ui/src/lib/input-autocomplete/input-autocomplete.component.ts","../../../projects/ui/src/lib/input-autocomplete/input-autocomplete.component.html","../../../projects/ui/src/lib/auto-complete/auto-complete.component.ts","../../../projects/ui/src/lib/auto-complete/auto-complete.component.html","../../../projects/ui/src/lib/ui.module.ts","../../../projects/ui/src/lib/services/toast.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/rlucan-ui.ts"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\r\nimport { ControlColor, ControlSize } from '../ui.model';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n standalone: false\r\n})\r\nexport class ButtonComponent {\r\n\r\n @Input() type: 'submit' | 'button' = 'button';\r\n @Input() matIconPrefix: any;\r\n @Input() label: string | undefined;\r\n @Input() disabled = false;\r\n @Input() busy = false;\r\n @Input() kind: 'basic' | 'flat' | 'stroked' = 'flat';\r\n @Input() color: ControlColor = 'primary';\r\n @Input() size: ControlSize = 'normal';\r\n\r\n @HostBinding('class')\r\n get class(): string {\r\n return this.kind +\r\n (this.color ? ' ' + this.color : '') +\r\n (this.size ? ' ' + this.size : '') +\r\n ((this.disabled || this.busy) ? ' disabled' : '');\r\n }\r\n\r\n @HostBinding('class.formInvalid')\r\n @Input() formInvalid = false;\r\n\r\n constructor() { }\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.busy;\r\n }\r\n\r\n}\r\n","<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n @if(label) {\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { ValidationErrors } from '@angular/forms';\r\n\r\nexport interface UiValidators {\r\n required?: boolean;\r\n maxLength?: number\r\n}\r\n\r\n@Component({\r\n selector: 'ui-abstract-base-component',\r\n template: '** abstract **',\r\n standalone: false\r\n})\r\nexport abstract class UiBaseComponent implements OnInit {\r\n\r\n @Input() placeholder = '';\r\n @Input() label: string | undefined;\r\n @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n @Input() inputMessagesPosition: 'absolute' | 'relative' = 'relative';\r\n @Input() hint?: string;\r\n\r\n @HostBinding('class')\r\n @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n\r\n // control = new FormControl();\r\n\r\n // controlFormGroup;\r\n\r\n required = false;\r\n\r\n // get control() {\r\n // return this.controlFormGroup.get('text');\r\n // }\r\n\r\n constructor() {\r\n // this.ngControl.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n // console.log(this.controlContainer);\r\n\r\n // this.controlFormGroup.valueChanges.subscribe(v => {\r\n // this.onChange(v);\r\n // });\r\n\r\n // this.ngControl.control.statusChanges.subscribe(v => console.log(v));\r\n //\r\n // this.ngControl.control.markAsTouched = (opts?: {\r\n // onlySelf?: boolean;\r\n // }) => {\r\n // if (!this.control.touched) {\r\n // console.log('marking as touched');\r\n // this.control.markAsTouched(opts);\r\n // }\r\n // this.control.updateValueAndValidity({onlySelf: opts?.onlySelf, emitEvent: false});\r\n // }\r\n\r\n // setTimeout(() => {\r\n // this.applyValidators(this.validators);\r\n // });\r\n }\r\n\r\n // bindValidators(validators: ValidatorFn[]): void {\r\n // this.control.setValidators(validators);\r\n // }\r\n\r\n\r\n\r\n get validationErrors(): ValidationErrors {\r\n return null;\r\n }\r\n\r\n get validationMessage(): string {\r\n return 'obsolete...';\r\n }\r\n\r\n get isInvalid(): boolean {\r\n return false;\r\n }\r\n\r\n // @HostBinding('class')\r\n // get class(): string {\r\n // return (this.isInvalid ? 'invalid ' : '') + this.size;\r\n // }\r\n\r\n\r\n}\r\n","import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n UntypedFormControl,\r\n NgControl,\r\n ValidationErrors, Validator,\r\n ValidatorFn,\r\n Validators, FormControl, ControlContainer, FormGroupDirective\r\n} from '@angular/forms';\r\nimport { UiBaseComponent, UiValidators } from '../base/ui-base.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ui-abstract-simple-component',\r\n template: '** abstract **',\r\n standalone: false\r\n})\r\nexport abstract class UiSimpleComponent extends UiBaseComponent\r\n implements OnInit, OnChanges, OnDestroy, ControlValueAccessor, Validator { // }, Validator {\r\n\r\n @Input() validators: UiValidators | undefined;\r\n @Input() formControl;\r\n @Input() formControlName;\r\n\r\n componentFormControl: UntypedFormControl;\r\n // tslint:disable-next-line:ban-types\r\n parentFormControl: UntypedFormControl & { _componentFormControl: FormControl; _markAsTouched: Function; _setErrors: Function };\r\n\r\n sub: Subscription = new Subscription();\r\n\r\n constructor(public ngControl: NgControl, // <-- obsolete\r\n protected controlContainer: ControlContainer = null) {\r\n super();\r\n\r\n if (ngControl) {\r\n ngControl.valueAccessor = this;\r\n } else {\r\n this.componentFormControl = new FormControl();\r\n// this.componentFormControl.markAsUntouched();\r\n this.sub.add(this.componentFormControl.valueChanges.subscribe(v => {\r\n try {\r\n // console.log(v, this.componentFormControl.value);\r\n this.onChange(v);\r\n } catch (e) { /*console.error(e);*/\r\n }\r\n } ));\r\n }\r\n // this.ngControl.valueAccessor = this;\r\n }\r\n\r\n get maxLenRequired(): boolean {\r\n return this.componentFormControl.value && (this.componentFormControl.value.length > (this.validators?.maxLength || 0));\r\n }\r\n\r\n get isInvalid(): boolean {\r\n // console.log(this.label, this.componentFormControl.touched);\r\n return this.componentFormControl.touched && !!this.componentFormControl.errors;\r\n }\r\n\r\n get validationErrors(): ValidationErrors {\r\n return this.componentFormControl?.errors;\r\n }\r\n\r\n onChange = (val) => {};\r\n\r\n onTouched = () => {};\r\n\r\n onValidatorChange = () => {};\r\n\r\n ngOnDestroy() {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.ngControl) {\r\n if (this.formControl) {\r\n this.componentFormControl = this.formControl;\r\n } else {\r\n this.componentFormControl = this.ngControl.control as UntypedFormControl;\r\n }\r\n setTimeout(() => this.applyTemplateValidators());\r\n } else {\r\n this.parentFormControl = this.formControlName ?\r\n (this.controlContainer as FormGroupDirective).control.get(this.formControlName) : this.formControl;\r\n if (this.parentFormControl) {\r\n this.componentFormControl.setValidators(this.parentFormControl.validator);\r\n this.parentFormControl._componentFormControl = this.componentFormControl;\r\n if (this.parentFormControl._markAsTouched === undefined) {\r\n this.parentFormControl._markAsTouched = this.parentFormControl.markAsTouched;\r\n this.parentFormControl._setErrors = this.parentFormControl.setErrors;\r\n this.parentFormControl.markAsTouched = ({onlySelf}: { onlySelf?: boolean } = {}): void => {\r\n this.parentFormControl._markAsTouched({onlySelf});\r\n this.parentFormControl._componentFormControl.markAsTouched({onlySelf});\r\n this.componentFormControl.setErrors(this.parentFormControl.errors);\r\n }\r\n this.parentFormControl.setErrors = (errors: any): void => {\r\n this.parentFormControl._setErrors(errors);\r\n this.parentFormControl._componentFormControl.setErrors(errors);\r\n }\r\n }\r\n setTimeout(() => this.applyTemplateValidators());\r\n }\r\n }\r\n }\r\n\r\n applyTemplateValidators(): void {\r\n const inputValidators = this.validators;\r\n if (inputValidators) {\r\n const validators: ValidatorFn[] = [];\r\n Object.keys(inputValidators).forEach(v => {\r\n switch (v) {\r\n case 'required':\r\n validators.push(Validators.required);\r\n this.required = true;\r\n break;\r\n case 'maxLength':\r\n validators.push((c) => {\r\n const requiredLength = inputValidators.maxLength || 0;\r\n if (this.inputLength() > requiredLength) {\r\n return { maxlength: { requiredLength }}\r\n } else {\r\n return null\r\n }\r\n }); // Validators.maxLength(inputValidators.maxLength || 0));\r\n break;\r\n }\r\n });\r\n if (this.parentFormControl) {\r\n this.parentFormControl.setValidators(validators);\r\n this.parentFormControl.updateValueAndValidity({ emitEvent: false });\r\n this.componentFormControl.setValidators(this.parentFormControl.validator);\r\n } else {\r\n this.componentFormControl.addValidators(validators);\r\n this.componentFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.validators && this.componentFormControl) {\r\n this.applyTemplateValidators(); // changes.validators.currentValue as UiValidators);\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (this.componentFormControl) {\r\n isDisabled ? this.componentFormControl.disable({ emitEvent: false }) : this.componentFormControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (!this.ngControl) {\r\n if (obj && obj.error) {\r\n console.log('setting error', obj, obj.error);\r\n this.componentFormControl.setErrors(obj.error === 'clear' ? null : { custom: obj.error }, { emitEvent: false });\r\n } else {\r\n this.componentFormControl.setValue(obj);\r\n }\r\n }\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n inputLength() {\r\n return this.componentFormControl.value ? this.componentFormControl.value.length : 0;\r\n }\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\n\r\nexport interface IUiTranslateService {\r\n instant: (code: string, data?: any) => string;\r\n}\r\n\r\nexport const UI_TRANSLATESERVICE = new InjectionToken<IUiTranslateService>('IUiTranslateServiceToken');\r\n\r\n@Injectable()\r\nexport class UiTranslateService implements IUiTranslateService {\r\n instant(code: string, data: any): string {\r\n switch (code) {\r\n case 'ui.controls.ui-file-uploader.menu.change': return 'Změnit';\r\n case 'ui.controls.ui-file-uploader.menu.delete': return 'Smazat';\r\n case 'ui.controls.ui-file-uploader.uploadError': return 'Chyba při ukládání souboru';\r\n case 'ui.controls.validation.required': return 'Povinná položka';\r\n case 'ui.controls.validation.email': return 'Neplatný email';\r\n case 'ui.controls.validation.matDatepickerParse': return 'Neplatné datum';\r\n case 'ui.controls.validation.maxlength': return 'Zadej maximálně ' + data.requiredLength + ' znaků';\r\n case 'ui.controls.validation.minlength': return 'Zadej minimálně ' + data.requiredLength + ' znaků';\r\n case 'ui.controls.validation.invalidNumber': return 'Neplatné číslo';\r\n case 'ui.controls.validation.positive': return 'Musí být větší než 0';\r\n case 'ui.controls.validation.cbGroupRequired': return 'Zaškrtni alespoň jednu položku';\r\n case 'ui.controls.ui-select.clear-selection': return 'Zrušit výběr';\r\n case 'ui.controls.ui-select.all': return 'Vše';\r\n case 'ui.controls.ui-select.apply-selection': return 'Použít výběr';\r\n case 'ui.messagebox.button.cancel': return 'Zrušit';\r\n case 'ui.messagebox.button.delete': return 'Smazat';\r\n default: return code;\r\n }\r\n }\r\n}\r\n","import { Component, Inject, Input, OnInit } from '@angular/core';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from '../../services/ui-translate.service';\r\n\r\n@Component({\r\n selector: 'ui-validation-message',\r\n templateUrl: './validation-message.component.html',\r\n standalone: false\r\n})\r\nexport class ValidationMessageComponent implements OnInit {\r\n\r\n @Input() validationErrors;\r\n\r\n constructor(@Inject(UI_TRANSLATESERVICE) protected translateService: IUiTranslateService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n get errorMessage(): string {\r\n let e: any = {code: 'Neznámá chyba'};\r\n const errors = this.validationErrors;\r\n if (errors) {\r\n Object.keys(errors).find(a => {\r\n e = {code: a, data: errors[a]};\r\n return true;\r\n });\r\n switch (e.code) {\r\n case 'required':\r\n case 'cbGroupRequired':\r\n case 'email':\r\n case 'matDatepickerParse':\r\n case 'maxlength':\r\n case 'minlength':\r\n return this.translateService.instant('ui.controls.validation.' + e.code, e.data);\r\n case 'positive':\r\n return this.translateService.instant(isNaN(Number(e.data)) ? 'ui.controls.validation.invalidNumber' : 'ui.controls.validation.positive');\r\n case 'custom':\r\n return this.translateService.instant(e.data);\r\n default:\r\n return this.translateService.instant(e.code);\r\n }\r\n }\r\n }\r\n}\r\n","{{ errorMessage }}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { UiBaseComponent } from './ui-base.component';\r\n\r\n@Component({\r\n selector: 'ui-base-layout',\r\n templateUrl: './ui-base-layout.component.html',\r\n styleUrls: ['./ui-base-layout.component.scss'],\r\n standalone: false\r\n})\r\nexport class UiBaseLayoutComponent {\r\n\r\n @Input() ctx: UiBaseComponent;\r\n\r\n @HostBinding('class')\r\n get class(): string {\r\n return `${this.ctx.isInvalid ? 'invalid ' : ''} ${this.ctx.inputMessagesPosition}`;\r\n }\r\n\r\n}\r\n","<div class=\"label\" *ngIf=\"ctx.label\">\r\n <div class=\"text-container\" [matTooltip]=\"false && ctx.required ? 'Povinná položka' : undefined\" [matTooltipPosition]=\"'above'\">\r\n <div class=\"text\" >{{ctx.label}}</div>\r\n <div *ngIf=\"false && ctx.required\" class=\"required\">*</div>\r\n </div>\r\n <ng-content select=\".counter-top\"></ng-content>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div class=\"hint-container\" *ngIf=\"ctx.useInputMessages === 'always' || (ctx.useInputMessages === 'ondemand' && (ctx.isInvalid || ctx.hint))\">\r\n <ui-validation-message class=\"invalid\" *ngIf=\"ctx.isInvalid\" [validationErrors]=\"ctx.validationErrors\"></ui-validation-message>\r\n <div class=\"hint\" *ngIf=\"!ctx.isInvalid && ctx.hint\" [innerHTML]=\"ctx.hint\"></div>\r\n <ng-container *ngIf=\"!ctx.label\">\r\n <ng-content select=\".counter-bottom\"></ng-content>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { UiSimpleComponent } from './ui-simple.component';\r\n\r\n@Component({\r\n selector: 'ui-simple-layout',\r\n templateUrl: './ui-simple-layout.component.html'\r\n // styleUrls: [ './ui-simple-layout.component.scss' ]\r\n ,\r\n standalone: false\r\n})\r\nexport class UiSimpleLayoutComponent {\r\n\r\n @Input() ctx: UiSimpleComponent;\r\n\r\n length() {\r\n return this.ctx.inputLength();\r\n }\r\n\r\n}\r\n","<ui-base-layout [ctx]=\"ctx\">\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-top\">\r\n {{ length() }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-bottom\">\r\n {{ length() }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n</ui-base-layout>\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { ControlColor, ControlSize } from '../ui.model';\r\n\r\n@Component({\r\n selector: 'ui-action-icon',\r\n templateUrl: './action-icon.component.html',\r\n styleUrls: ['./action-icon.component.scss'],\r\n standalone: false\r\n})\r\nexport class ActionIconComponent implements OnInit {\r\n\r\n @Input() size: ControlSize = 'normal';\r\n\r\n @Input() color: ControlColor = 'primary';\r\n\r\n @Input() disabled = false;\r\n\r\n @Input() busy = false;\r\n\r\n @Input() matIcon = 'close';\r\n\r\n @HostBinding('class')\r\n get class() {\r\n return `${this.size} ${this.color}${this.disabled ? ' disabled': ''}${this.busy ? ' busy' : ''}`;\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<mat-icon>{{matIcon}}</mat-icon>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Host, HostBinding,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, ControlContainer, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\ntype PrefixSuffix = { icon: string, tooltip?: string };\r\n@Component({\r\n selector: 'ui-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', './input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: InputComponent\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: InputComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputComponent extends UiSimpleComponent\r\n implements OnInit { // }, ControlValueAccessor { // }, ControlValueAccessor, Validator { // }, AfterViewInit {\r\n\r\n // UiSimpleComponent = InputComponent;\r\n\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint: string | undefined;\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n // @Input() formControlName;\r\n\r\n // componentFormControl: UntypedFormControl;\r\n //\r\n // ngControl: NgControl;\r\n //\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() formControlName;\r\n //\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint?: string;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n\r\n @Input() prefixIcon: PrefixSuffix;\r\n @Input() suffixIcon: PrefixSuffix;\r\n @Input() type: 'text' | 'number' | 'password' = 'text';\r\n @Input() clearButton = false;\r\n @Input() activeIcons = true;\r\n @Input() forceHasPrefix = false;\r\n @Input() forceHasSuffix = false;\r\n\r\n @HostBinding('class')\r\n get textAlignClass() {\r\n return `text-align-${this.textAlign}`;\r\n }\r\n\r\n @Input() textAlign: 'left' | 'center' | 'right' = 'left';\r\n\r\n @ViewChild('input') input: ElementRef | undefined;\r\n @ViewChild('prefix', { static: true }) prefix: ElementRef | undefined;\r\n @ViewChild('suffix', { static: true }) suffix: ElementRef | undefined;\r\n\r\n @Output() focusChanged = new EventEmitter<boolean>();\r\n @Output() keyPressed = new EventEmitter<KeyboardEvent>();\r\n\r\n get hasPrefix() {\r\n return (this.prefixIcon && this.prefixIcon.icon !== '') || this.prefix?.nativeElement?.innerText !== '' || this.forceHasPrefix;\r\n }\r\n\r\n get hasSuffix() {\r\n return (this.suffixIcon && this.suffixIcon.icon !== '') || this.suffix?.nativeElement?.innerText !== '' || this.forceHasSuffix;\r\n }\r\n\r\n // control = new FormControl();\r\n\r\n required = false;\r\n hasFocus = false;\r\n\r\n value: string;\r\n\r\n // control;\r\n\r\n\r\n // onTouched = () => {};\r\n // onChange = (value) => {};\r\n\r\n // get showInvalid(): boolean {\r\n // return true;\r\n // // return this.control.touched && !!this.control.errors;\r\n // }\r\n\r\n // get validationMessage(): string {\r\n // // console.log(this.control?.errors);\r\n // let e: any = {code: 'Neznámá chyba'};\r\n // const errors = this.control?.errors || {};\r\n // Object.keys(errors).find(a => {\r\n // e = {code: a, data: errors[a]};\r\n // return true;\r\n // });\r\n // switch (e.code) {\r\n // case 'required':\r\n // return this.translateService.instant('ui.controls.validation.required');\r\n // case 'email':\r\n // return this.translateService.instant('ui.controls.validation.email');\r\n // case 'matDatepickerParse':\r\n // return this.translateService.instant('ui.controls.validation.matDatepickerParse');\r\n // case 'maxlength':\r\n // return this.translateService.instant('ui.controls.validation.maxlength', e.data);\r\n // case 'minlength':\r\n // return this.translateService.instant('ui.controls.validation.minlength', e.data);\r\n // case 'positive':\r\n // return this.translateService.instant(isNaN(Number(e.data)) ? 'ui.controls.validation.invalidNumber' : 'ui.controls.validation.positive');\r\n // case 'custom':\r\n // return this.translateService.instant(e.data);\r\n // default:\r\n // return this.translateService.instant(e.code);\r\n // }\r\n // }\r\n\r\n get maxLenRequired(): boolean {\r\n return true;\r\n // return this.control.value && (this.control.value.length > (this.validators?.maxLength || 0));\r\n }\r\n\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n /*\r\n bud pres @Optional() @Self() public control: NgControl a control.valueAccessor = this => ztratime ale custom validaci\r\n anebo pres DI jako providers a pak this.control = viz ngOnInit - pokud jej vubec potrebujem\r\n\r\n */\r\n // private injector: Injector,\r\n // @Optional() @Self() public control: NgControl,\r\n // @Self() private controlDirective: NgControl,\r\n ) {\r\n super(null, controlContainer);\r\n\r\n // this.componentFormControl = new FormControl();\r\n // super();\r\n // super(undefined, /*ngControl*/ translateService);\r\n // super(control);\r\n // console.log(control);\r\n // if (control) {\r\n // control.valueAccessor = this;\r\n // }\r\n\r\n // if (ngControl != null) {\r\n // // Setting the value accessor directly (instead of using\r\n // // the providers) to avoid running into a circular import.\r\n // ngControl.valueAccessor = this;\r\n // }\r\n }\r\n\r\n get showClearButton(): boolean {\r\n return this.clearButton && this.componentFormControl?.value !== '';\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n // console.log('probiha vubec oninit?');\r\n // if (this.ngControl) {\r\n // console.log('from ngControl....??');\r\n // if (this.formControl) {\r\n // this.componentFormControl = this.formControl;\r\n // } else {\r\n // this.componentFormControl = this.ngControl.control as UntypedFormControl;\r\n // }\r\n // setTimeout(() => {\r\n // this.applyValidators();\r\n // });\r\n // } else {\r\n // const control = this.formControlName ?\r\n // (this.controlContainer as FormGroupDirective).control.get(this.formControlName) : this.formControl;\r\n // this.componentFormControl.setValidators(control.validator);\r\n // this.componentFormControl.valueChanges.subscribe(v => console.log('onitin sub', v));\r\n // control._componentFormControl = this.componentFormControl;\r\n // if (control._markAsTouched === undefined) {\r\n // // control._componentFormControl = this.componentFormControl;\r\n // console.log('overriding markAsTouched for', this.formControlName);\r\n // control._markAsTouched = control.markAsTouched;\r\n // control.markAsTouched = ({onlySelf}: { onlySelf?: boolean } = {}): void => {\r\n // console.log('marking as touched', this.componentFormControl.value, control.value, this.xxx.value, control._componentFormControl.value);\r\n // control._markAsTouched({onlySelf});\r\n // setTimeout(() => control._componentFormControl.markAsTouched(), 1000);\r\n // }\r\n // }\r\n // }\r\n }\r\n\r\n clearValue(): void {\r\n this.componentFormControl?.setValue('');\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n focus(): void {\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n onFocus(focus: boolean): void {\r\n setTimeout(() => {\r\n this.hasFocus = focus;\r\n this.focusChanged.emit(focus);\r\n });\r\n }\r\n\r\n onKeypressed($event: any): void {\r\n this.keyPressed.emit($event);\r\n }\r\n\r\n // registerOnChange(onChange: any): void {\r\n // this.onChange = onChange;\r\n // }\r\n //\r\n // registerOnTouched(onTouched: any): void {\r\n // this.onTouched = onTouched;\r\n // }\r\n\r\n // registerOnValidatorChange(fn: () => void): void {\r\n // }\r\n\r\n // setDisabledState(isDisabled: boolean): void {\r\n // // isDisabled ? this.control.disable() : this.control.enable();\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // // this.control = control;\r\n // // console.log(control, control.value, control.errors);\r\n // if (this.value === 'error') {\r\n // return { customError: 'muj error'}\r\n // } else {\r\n // return null;\r\n // }\r\n // // console.log('custom validate');\r\n // // return null;\r\n // }\r\n //\r\n // writeValue(obj: any): void {\r\n // console.log('writevalue: ', obj);\r\n // this.componentFormControl.setValue(obj);\r\n // // this.value = obj;\r\n // // this.control.setValue(obj);\r\n // }\r\n //\r\n // registerOnChange(fn: any): void {\r\n // }\r\n //\r\n // registerOnTouched(fn: any): void {\r\n // }\r\n //\r\n // setDisabledState(isDisabled: boolean): void {\r\n // }\r\n\r\n // modelChange($event: any) {\r\n // console.log($event);\r\n // this.onTouched();\r\n // this.onChange($event)\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // console.log(this.label, 'validate');\r\n // return this.componentFormControl.errors;\r\n // // return undefined;\r\n // }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.parentFormControl) {\r\n return this.parentFormControl._componentFormControl.errors;\r\n }\r\n // console.log('validate', this.componentFormControl.errors);\r\n // // this.componentFormControl.setErrors( { custom: 'xxx' });\r\n // this.componentFormControl.setErrors( this.componentFormControl.errors);\r\n // console.log('validate 2', this.componentFormControl.errors);\r\n // return this.componentFormControl.errors;\r\n // console.log(this.componentFormControl.errors, control.errors, this.parentFormControl.errors, this);\r\n // return this.componentFormControl.errors;\r\n }\r\n}\r\n\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [ngClass]=\"{'has-suffix': hasSuffix, 'has-prefix': hasPrefix, 'has-clear-icon': showClearButton, 'active-icons': activeIcons, 'has-focus': hasFocus}\">\r\n <input #input [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" />\r\n <div #prefix><ng-content select=\"[slot=prefix]\"></ng-content></div>\r\n <div #suffix><ng-content select=\"[slot=suffix]\"></ng-content></div>\r\n <mat-icon *ngIf=\"prefixIcon\" class=\"prefix-icon\" [matTooltip]=\"prefixIcon.tooltip\">{{ prefixIcon.icon }}</mat-icon>\r\n <mat-icon *ngIf=\"suffixIcon\" class=\"suffix-icon\" [matTooltip]=\"suffixIcon.tooltip\">{{ suffixIcon.icon }}</mat-icon>\r\n <ui-action-icon [size]=\"'small'\" [color]=\"'warn'\" *ngIf=\"showClearButton\" (click)=\"clearValue()\" [matIcon]=\"'clear'\" class=\"clear-icon\"></ui-action-icon>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional,\r\n Self,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from '../services/ui-translate.service';\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', './select.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class SelectComponent extends UiSimpleComponent implements OnInit, OnChanges {\r\n\r\n @Input() multiple = false;\r\n @Input() triggerFormatter: any;\r\n @Input() valueAttribute: string | undefined;\r\n @Input() resetText: string | undefined;\r\n @Input() displayAttribute: string | undefined;\r\n\r\n @Input() options: any[] = [];\r\n @Input() optionFormatter: ((arg: any) => string | undefined) | undefined = (o) => this.displayAttribute ? o[this.displayAttribute] : o;\r\n @Input() optionTemplateRef?: TemplateRef<any>;\r\n @Input() triggerTemplateRef?: TemplateRef<any>;\r\n @Input() panelClass = '';\r\n @Input() allowEmptySelection = false;\r\n @Input() trackBy: any;\r\n\r\n @ViewChild('select') select?: MatSelect;\r\n\r\n lastCount = -1;\r\n overoption: any;\r\n\r\n constructor(@Optional() @Self() public override ngControl: NgControl,\r\n @Inject(UI_TRANSLATESERVICE) public translateService: IUiTranslateService) {\r\n super(ngControl);\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n if (this.multiple && this.componentFormControl) {\r\n this.lastCount = this.componentFormControl.value.length;\r\n this.componentFormControl.valueChanges.subscribe(v => {\r\n if (v.length === 1 && this.lastCount === 0 && this.overoption !== undefined) {\r\n this.select!.selectionChange.emit(this.optionToValue(v));\r\n this.select!.close();\r\n }\r\n this.lastCount = v.length;\r\n });\r\n }\r\n if (this.trackBy && this.componentFormControl && this.componentFormControl.value) {\r\n this.componentFormControl.setValue(this.mapValues(this.componentFormControl.value), {emitEvent: false});\r\n }\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes['options'] && this.componentFormControl && this.trackBy) {\r\n this.componentFormControl.setValue(this.mapValues(this.componentFormControl.value), {emitEvent: false});\r\n }\r\n }\r\n\r\n mapValues(src: any) {\r\n if (src && this.trackBy && this.options) {\r\n if (this.multiple) {\r\n return this.options.filter(o => src.find((v: any) => v[this.trackBy] === o[this.trackBy]));\r\n } else {\r\n return this.options.find(o => o[this.trackBy] === src[this.trackBy]);\r\n }\r\n } else {\r\n return src;\r\n }\r\n }\r\n\r\n optionToValue = (o: any) => this.valueAttribute ? o[this.valueAttribute] : o;\r\n\r\n selectOption(o: any, select: MatSelect) {\r\n select.selectionChange.emit(this.optionToValue(o));\r\n select.close();\r\n }\r\n\r\n selectAll() {\r\n this.componentFormControl.setValue(this.options.map(o => this.optionToValue(o)));\r\n }\r\n\r\n clearAll() {\r\n this.componentFormControl.setValue([]);\r\n }\r\n\r\n override setDisabledState(): void {\r\n }\r\n\r\n override writeValue(obj: any): void {\r\n if (!this.ngControl) {\r\n if (obj && obj.error) {\r\n console.log('setting error', obj, obj.error);\r\n this.componentFormControl.setErrors(obj.error === 'clear' ? null : {custom: obj.error}, {emitEvent: false});\r\n } else {\r\n this.componentFormControl.setValue(this.mapValues(obj));\r\n }\r\n }\r\n }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-select class=\"control-container\" #select [panelClass]=\"panelClass\" [placeholder]=\"placeholder\"\r\n [formControl]=\"componentFormControl\" [multiple]=\"multiple\">\r\n\r\n <mat-select-trigger *ngIf=\"triggerTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTemplateRef\"\r\n [ngTemplateOutletContext]=\"{option:componentFormControl?.value}\"></ng-template>\r\n </mat-select-trigger>\r\n\r\n <mat-select-trigger *ngIf=\"triggerFormatter\"\r\n [innerHTML]=\"componentFormControl?.value ? triggerFormatter(componentFormControl?.value) : ''\"></mat-select-trigger>\r\n\r\n <mat-option *ngIf=\"resetText\">{{ resetText }}</mat-option>\r\n\r\n <mat-option *ngFor=\"let o of options\" [value]=\"optionToValue(o)\">\r\n\r\n <div class=\"over-container\" (mouseenter)=\"overoption = options.indexOf(o);\"\r\n (mouseleave)=\"overoption = undefined\">\r\n </div>\r\n\r\n <div class=\"option-container\" (mouseenter)=\"overoption = options.indexOf(o);\"\r\n (mouseleave)=\"overoption = undefined\">\r\n\r\n <ng-container *ngIf=\"optionTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"optionTemplateRef\"\r\n [ngTemplateOutletContext]=\"{option:o}\"></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!optionTemplateRef\">\r\n {{ optionFormatter(o) }}\r\n </ng-container>\r\n\r\n <mat-icon class=\"select-one\" *ngIf=\"multiple && componentFormControl?.value?.length === 0\"\r\n (click)=\"selectOption(o, select)\">north_west\r\n </mat-icon>\r\n </div>\r\n\r\n <mat-icon class=\"select-one\" [ngClass]=\"{visible: overoption === options.indexOf(o)}\"\r\n *ngIf=\"multiple && componentFormControl?.value?.length === 0\" (click)=\"selectOption(o, select)\">\r\n north_west\r\n </mat-icon>\r\n </mat-option>\r\n\r\n <div class=\"buttons\" *ngIf=\"multiple\">\r\n <ui-button style=\"margin-right: auto;\" [kind]=\"'basic'\" [size]=\"'smaller'\"\r\n [label]=\"translateService.instant('ui.controls.ui-select.clear-selection')\"\r\n (click)=\"clearAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.all')\"\r\n (click)=\"selectAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" style=\"padding-left: 0.2em;\"\r\n [disabled]=\"componentFormControl?.value?.length === 0 && !allowEmptySelection\"\r\n [label]=\"translateService.instant('ui.controls.ui-select.apply-selection') + (componentFormControl?.value?.length > 0 ? ' (' + componentFormControl.value.length + ')' : '')\"\r\n (click)=\"select.close()\"></ui-button>\r\n </div>\r\n\r\n </mat-select>\r\n\r\n</ui-simple-layout>\r\n","import { EventEmitter, Inject, Injectable, InjectionToken, Optional } from '@angular/core';\r\nimport { UploadFile, UploadInput } from 'ngx-uploader';\r\nimport { Subject } from 'rxjs';\r\n// import { UiFileUploaderComponent } from '../file-uploader/ui-file-uploader.component';\r\n\r\n// export interface IGetAuthHeader {\r\n// getAuthHeader: () => { [key: string]: string };\r\n// }\r\n\r\nexport interface IUiFileSize {\r\n name: string,\r\n width: number,\r\n height: number,\r\n limit?: 'fit' | 'maxWidth' | 'maxHeight'\r\n}\r\n\r\nexport type IUiFileServiceMessages = 'cropInvalidFileType' | 'extensionNotAllowed' | 'fileAdded' | 'fileRemoved';\r\n\r\nexport interface IUiFileService {\r\n getAuthHeader: () => { [ key: string ]: string },\r\n uploadUrl: (size?: IUiFileSize) => string;\r\n // // upload64Url: string;\r\n getMediaSrc: (size: IUiFileSize, data: any, options: any) => string,\r\n getPreviewUrl: (size: IUiFileSize, data: any) => string,\r\n addFileImgSrc: (size: IUiFileSize) => string,\r\n getMimeType: (data: any) => string;\r\n imageSizes: IUiFileSize[];\r\n concurrentUploads: number,\r\n useRetinaSrc: boolean,\r\n\r\n fileValidation?: (size: IUiFileSize, file: UploadFile) => Promise<boolean>\r\n}\r\n\r\nexport const UI_FILESERVICE = new InjectionToken<IUiFileService>('IUiFileService');\r\n\r\n// export const FileServiceConfigService = new InjectionToken<FileServiceConfig>('FileServiceConfig');\r\n\r\n@Injectable()\r\nexport class UiFileService {\r\n\r\n uploadInput: EventEmitter<UploadInput> = new EventEmitter<UploadInput>();\r\n\r\n uploadSubscription = new Subject();\r\n\r\n filesToRemove: string[] = [];\r\n controls = new Set<any>();\r\n\r\n constructor(@Optional() @Inject(UI_FILESERVICE) public fileServiceConfig: IUiFileService) {\r\n this.uploadSubscription.subscribe((v: any) => {\r\n switch (v.action) {\r\n case 'register': this.controls.add(v.data); return;\r\n case 'destroy': this.controls.delete(v.data); return;\r\n\r\n case 'uploadStarted':\r\n let cnt = 0;\r\n this.controls.forEach(c => cnt += c.hasFilesToUpload ? 1 : 0);\r\n if (cnt === 0) {\r\n this.uploadSubscription.next({action: 'uploadSuccess'});\r\n }\r\n break;\r\n\r\n case 'uploadControlFailed':\r\n case 'uploadControlSuccess':\r\n let cnt2 = 0;\r\n this.controls.forEach(c => cnt2 += c.hasFilesToUpload ? 1 : 0);\r\n if (cnt2 === 0) {\r\n this.uploadSubscription.next({action: v.action === 'uploadControlFailed' ? 'uploadFailed' : 'uploadSuccess'});\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n public upload(): Promise<'uploadSuccess' | 'uploadFailed'> {\r\n const promises = [];\r\n this.controls.forEach(c => promises.push(c.beforeSave()));\r\n\r\n return new Promise<'uploadSuccess' | 'uploadFailed'>((res) => {\r\n\r\n this.uploadSubscription.subscribe((v: any) => {\r\n if (v.action === 'uploadSuccess' || v.action === 'uploadFailed') {\r\n res(v.action);\r\n }\r\n });\r\n\r\n this.uploadSubscription.next({action: 'uploadStarted'});\r\n\r\n Promise.all(promises).then((r) => {\r\n const event: UploadInput = {\r\n type: 'uploadAll',\r\n url: this.fileServiceConfig.uploadUrl(),\r\n method: 'POST',\r\n headers: this.fileServiceConfig.getAuthHeader()\r\n };\r\n\r\n this.uploadInput.emit(event);\r\n\r\n })\r\n });\r\n }\r\n}\r\n","import { Component, HostBinding, Inject, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\r\nimport { IUiFileService, UI_FILESERVICE, UiFileService, IUiFileSize } from '../services/ui-file.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'ui-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.scss'],\r\n standalone: false\r\n})\r\nexport class FileComponent implements OnChanges {\r\n\r\n private uiFileSize?: IUiFileSize;\r\n\r\n @Input({ required: true })\r\n set fileSize(fs: string | IUiFileSize) {\r\n if (typeof fs === 'string') {\r\n const f = this.fileServiceConfig.imageSizes.find(n => n.name === fs);\r\n if (!f) {\r\n console.error('Missing filesize for ' + fs);\r\n } else {\r\n this.uiFileSize = f;\r\n }\r\n } else {\r\n this.uiFileSize = fs;\r\n }\r\n }\r\n\r\n @Input() srcOptions: any;\r\n @Input() srcData: any;\r\n @Input() srcUrl?: { src: string, mimeType?: string };\r\n\r\n get fitImageFileSize() {\r\n return this.uiFileSize!.limit === 'maxHeight' || this.uiFileSize!.limit === 'maxWidth';\r\n }\r\n\r\n visible = false;\r\n src: any;\r\n srcUrlMimeType?: string;\r\n nativeFileSizeRatio = -1;\r\n nativeFileWidth: any;\r\n nativeFileHeight: any;\r\n\r\n @HostBinding('style.width')\r\n get width(): string {\r\n if (this.fitImageFileSize) {\r\n return '';\r\n // if (this.nativeFileSizeRatio === -1) {\r\n // return '100%';\r\n // } else {\r\n // return this.nativeFileWidth + 'px'\r\n // }\r\n } else {\r\n return this.uiFileSize!.width + 'px';\r\n }\r\n }\r\n\r\n @HostBinding('style.maxWidth')\r\n get maxWidth(): string {\r\n return this.width; // uiFileSize.x + 'px';\r\n // if (this.fileServiceConfig.imageSizes[this.fileSize][0] < 0) {\r\n // return this.width;\r\n // }\r\n // return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][0] + 'px' : undefined;\r\n }\r\n\r\n @HostBinding('style.height')\r\n get height(): string {\r\n if (this.fitImageFileSize) {\r\n return '';\r\n // if (this.nativeFileSizeRatio === -1) {\r\n // return '100%';\r\n // } else {\r\n // return this.nativeFileHeight + 'px';\r\n // }\r\n } else {\r\n return this.uiFileSize!.height + 'px';\r\n }\r\n }\r\n\r\n @HostBinding('style.maxHeight')\r\n get maxHeight(): string {\r\n return this.height; // uiFileSize.y + 'px';\r\n // if (this.fileServiceConfig.imageSizes[this.fileSize][1] < 0) {\r\n // return this.height;\r\n // }\r\n // return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][1] + 'px' : undefined;\r\n }\r\n\r\n get imgStyle() {\r\n const ret: any = {};\r\n switch (this.uiFileSize!.limit) {\r\n case 'maxHeight': ret['height'] = this.uiFileSize!.height + 'px'; break;\r\n case 'maxWidth': ret['width'] = this.uiFileSize!.width + 'px'; break;\r\n default: ret['height'] = '100%'; ret['width'] = '100%';\r\n }\r\n return ret;\r\n }\r\n\r\n get isVideo() {\r\n return this.mime.startsWith('video/');\r\n }\r\n\r\n get mime() {\r\n if (this.srcUrlMimeType) {\r\n return this.srcUrlMimeType\r\n } else {\r\n if (this.srcData.nativeFile) {\r\n return this.srcData.nativeFile.type;\r\n }\r\n return this.fileServiceConfig.getMimeType(this.srcData);\r\n }\r\n }\r\n\r\n get useRetinaSrc() {\r\n return this.fileServiceConfig.useRetinaSrc\r\n }\r\n\r\n constructor(@Optional() @Inject(UI_FILESERVICE) private fileServiceConfig: IUiFileService,\r\n private domSanitizer: DomSanitizer,\r\n private fileService: UiFileService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['srcData']) {\r\n this.nativeFileSizeRatio = -1;\r\n if (changes['srcData'].currentValue.nativeFile) {\r\n const nf = changes['srcData'].currentValue.nativeFile;\r\n\r\n if (nf.type.startsWith('image/') || nf.type.startsWith('video/')) {\r\n this.src = this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(changes['srcData'].currentValue.nativeFile));\r\n\r\n const img = new Image();\r\n\r\n img.onload = () => {\r\n if (this.fitImageFileSize) {\r\n this.nativeFileSizeRatio = Math.max(img.width / this.uiFileSize!.width,\r\n img.height / this.uiFileSize!.height, 1);\r\n } else {\r\n this.nativeFileSizeRatio = 1;\r\n }\r\n this.nativeFileWidth = img.width / this.nativeFileSizeRatio;\r\n this.nativeFileHeight = img.height / this.nativeFileSizeRatio;\r\n URL.revokeObjectURL(img.src);\r\n };\r\n\r\n img.src = URL.createObjectURL(changes['srcData'].currentValue.nativeFile);\r\n } else {\r\n this.src = this.fileServiceConfig.getMediaSrc(this.uiFileSize!, {name: nf.name, mimeType: nf.type }, this.srcOptions);\r\n }\r\n\r\n } else {\r\n this.src = this.fileServiceConfig.getMediaSrc(this.uiFileSize!, changes['srcData'].currentValue, this.srcOptions);\r\n }\r\n }\r\n if (changes['srcUrl']) {\r\n this.src = changes['srcUrl'].currentValue?.src;\r\n if (this.src) {\r\n this.srcUrlMimeType = changes['srcUrl'].currentValue?.mimeType || 'image/png';\r\n } else {\r\n this.srcUrlMimeType = undefined;\r\n }\r\n }\r\n }\r\n}\r\n","<mat-spinner *ngIf=\"visible\"></mat-spinner>\r\n<img *ngIf=\"!isVideo && useRetinaSrc\" [ngStyle]=\"imgStyle\" [src]=\"src\" [srcset]=\"src + ' 2x'\"/>\r\n<img *ngIf=\"!isVideo && !useRetinaSrc\" [ngStyle]=\"imgStyle\" [src]=\"src\" />\r\n<video *ngIf=\"isVideo\" muted controls [src]=\"src\" [ngStyle]=\"imgStyle\"></video>\r\n\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Host,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n SkipSelf\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { UploaderOptions, UploadFile, UploadInput, UploadOutput } from 'ngx-uploader';\r\nimport {\r\n IUiFileService,\r\n IUiFileServiceMessages,\r\n UI_FILESERVICE,\r\n UiFileService,\r\n IUiFileSize\r\n} from '../services/ui-file.service';\r\nimport { Dimensions, ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from '../services/ui-translate.service';\r\n\r\nexport interface UploadOutputEx extends UploadOutput {\r\n file: UploadFileEx;\r\n}\r\n\r\nexport interface UploadFileEx extends UploadFile {\r\n imagePreview?: any;\r\n base64?: any;\r\n}\r\n\r\nexport interface IUiUploaderUserMessage {\r\n message: IUiFileServiceMessages,\r\n data: any\r\n}\r\n\r\n@Component({\r\n selector: 'ui-file-uploader',\r\n templateUrl: './ui-file-uploader.component.html',\r\n styleUrls: ['./ui-file-uploader.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: UiFileUploaderComponent,\r\n }],\r\n standalone: false\r\n})\r\nexport class UiFileUploaderComponent extends UiSimpleComponent implements OnInit, OnDestroy {\r\n\r\n private uiFileSize: IUiFileSize;\r\n _fileSize: string | IUiFileSize;\r\n\r\n @Input()\r\n set fileSize(fs: string | IUiFileSize) {\r\n this._fileSize = fs;\r\n if (typeof fs === 'string') {\r\n const f = this.fileServiceConfig.imageSizes.find(n => n.name === fs);\r\n if (!f) {\r\n console.error('Missing filesize for ' + fs);\r\n } else {\r\n this.uiFileSize = f;\r\n }\r\n } else {\r\n this.uiFileSize = fs;\r\n }\r\n }\r\n\r\n @Input() maxFiles = 1;\r\n @Input() multiple = true;\r\n @Input() crop = false;\r\n @Input() cropRounded = false;\r\n @Input() cropMaxWidth;\r\n @Input() customFileMenu = false;\r\n @Input() addHint;\r\n @Input() newFilePosition: 'first' | 'last' = 'last';\r\n\r\n @Input() templates: { menuTemplate?: any, addFileTemplate?: any, fileTemplate?: any, customContentTemplate?: any } = {}\r\n \r\n @Output() cropChanged = new EventEmitter<string>();\r\n\r\n get menuTemplate() {\r\n return this.templates?.menuTemplate;\r\n }\r\n\r\n get addFileTemplate() {\r\n return this.templates?.addFileTemplate;\r\n }\r\n\r\n get customContentTemplate() {\r\n return this.templates?.customContentTemplate;\r\n }\r\n\r\n get fileTemplate() {\r\n return this.templates?.fileTemplate;\r\n }\r\n\r\n @Input() previewPosition: 'left' | 'bottom' | 'above' = 'bottom';\r\n\r\n @Output() imageCropped = new EventEmitter();\r\n @Output() fileEvent = new EventEmitter<IUiUploaderUserMessage>();\r\n\r\n uploadOptions: UploaderOptions = {\r\n concurrency: this.fileServiceConfig.concurrentUploads\r\n };\r\n\r\n public uploading = false;\r\n\r\n changeFileIndex;\r\n\r\n showCropper = false;\r\n menuVisible: any;\r\n showCropPreview = {};\r\n cropPreviewTimeouts = {};\r\n cropSourceImages = {};\r\n cropperImageLoaded = {};\r\n imagesDone = {};\r\n transform: ImageTransform = {};\r\n canvasRotation = {}\r\n\r\n public files : { custom?: any, $newFile?: UploadFile }[];\r\n\r\n public responseFiles;\r\n\r\n refreshAddInput = false;\r\n\r\n fileMenuOpened;\r\n\r\n patchingValues = false;\r\n\r\n inputArray = false;\r\n dragging = false;\r\n\r\n uploaderId = Math.round(Math.random() * 1000000);\r\n\r\n constructor(@Optional() @Inject(UI_FILESERVICE) private fileServiceConfig: IUiFileService,\r\n @Inject(UI_TRANSLATESERVICE) public translateService: IUiTranslateService,\r\n @Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n private fileService: UiFileService) {\r\n\r\n super(null, controlContainer);\r\n\r\n this.fileService.uploadSubscription.next({action: 'register', data: this});\r\n\r\n this.fileService.uploadSubscription.subscribe((v: any) => {\r\n switch (v.action) {\r\n case 'uploadStarted': this.uploading = true; break;\r\n case 'uploadFailed':\r\n case 'uploadSuccess':\r\n setTimeout(() => {\r\n this.uploading = false;\r\n });\r\n this.patchValues();\r\n }\r\n });\r\n }\r\n\r\n get uploadInput(): EventEmitter<UploadInput> {\r\n return this.fileService.uploadInput;\r\n }\r\n\r\n croppedImages = {};\r\n\r\n get editable() {\r\n return this.componentFormControl.enabled;\r\n }\r\n\r\n get ngAddStyle() {\r\n return {\r\n width: Math.abs(this.uiFileSize.width) + 'px',\r\n height: Math.abs(this.uiFileSize.height) + 'px',\r\n }\r\n }\r\n\r\n get aspectRatio() {\r\n return this.uiFileSize.width / this.uiFileSize.height;\r\n }\r\n\r\n get addFileImgSrc() {\r\n return this.fileServiceConfig.addFileImgSrc;\r\n }\r\n\r\n cropDone(f) {\r\n return !f.$newFile || this.imagesDone[f.$newFile.id];\r\n }\r\n\r\n // ngOnInit(): void {\r\n // super.ngOnInit();\r\n // }\r\n\r\n ngOnDestroy(): void {\r\n this.fileService.uploadSubscription.next({action: 'destroy', data: this});\r\n }\r\n\r\n remove(f: any): void {\r\n if (f.$newFile) {\r\n this.uploadInput.emit({type: 'remove', id: f.$newFile.id});\r\n }\r\n this.files.splice(this.files.indexOf(f), 1);\r\n this.prepareResponse();\r\n // this.onChange(this.inputArray ? this.files : (this.files.length > 0 ? this.files[0] : null));\r\n this.fileEvent.emit({ message: 'fileRemoved', data: f });\r\n// this.patchValues();\r\n }\r\n\r\n patchValues(): void {\r\n this.patchingValues = true;\r\n // if (this.inputArray) {\r\n // this.componentFormControl.setValue(this.files.map(f => f.custom));\r\n // } else {\r\n // this.componentFormControl.setValue(this.files.length === 0 ? null : this.files[0].custom);\r\n // }\r\n this.patchingValues = false;\r\n }\r\n\r\n get hasFilesToUpload(): boolean {\r\n return !!this.files.find(f => f.$newFile && f.$newFile.progress.status !== 2);\r\n }\r\n\r\n canImagePreview(type: string) {\r\n return type.startsWith('image/') || type.startsWith('video/');\r\n }\r\n\r\n onUploadOutput($event: UploadOutput, skipCustomValidation = false): void {\r\n switch ($event.type) {\r\n case 'start':\r\n break;\r\n\r\n case 'dragOver':\r\n this.dragging = true;\r\n break;\r\n case 'dragOut':\r\n case 'drop':\r\n this.dragging = false;\r\n break;\r\n\r\n case 'addedToQueue':\r\n if (this.crop && !$event.file.type.startsWith('image/')) {\r\n this.uploadInput.emit({ type: 'remove', id: $event.file.id });\r\n this.fileEvent.emit({ message: 'cropInvalidFileType', data: $event.file });\r\n return;\r\n }\r\n\r\n if (!skipCustomValidation && this.fileServiceConfig.fileValidation) {\r\n this.fileServiceConfig.fileValidation(this.uiFileSize, $event.file).then(valid => {\r\n if (valid) {\r\n this.onUploadOutput($event, true)\r\n } else {\r\n this.uploadInput.emit({ type: 'remove', id: $event.file.id });\r\n // this.fileEvent.emit({ message: 'cropInvalidFileType', data: $event.file });\r\n }\r\n })\r\n } else {\r\n let f;\r\n if (this.changeFileIndex !== undefined) {\r\n f = this.files[this.changeFileIndex];\r\n if (f.$newFile) {\r\n this.uploadInput.emit({ type: 'remove', id: f.$newFile.id });\r\n }\r\n f.$newFile = $event.file;\r\n f.custom = $event.file;\r\n this.changeFileIndex = undefined;\r\n } else {\r\n f = { custom: $event.file, $newFile: $event.file };\r\n if (this.newFilePosition === 'last') {\r\n this.files.push(f);\r\n } else {\r\n this.files.unshift(f);\r\n }\r\n }\r\n if (this.canImagePreview($event.file.type)) {\r\n if (this.crop) {\r\n this.canvasRotation[$event.file.id] = 0;\r\n this.cropSourceImages[$event.file.id] = $event.file.nativeFile;\r\n this.cropperImageLoaded[$event.file.id] = false;\r\n this.cropChanged.emit('started');\r\n }\r\n }\r\n if (!this.crop) {\r\n this.prepareResponse();\r\n }\r\n this.fileEvent.emit({ message: 'fileAdded', data: f });\r\n }\r\n break;\r\n\r\n case 'done':\r\n const df = this.files.find(f => f.$newFile === $event.file);\r\n if (df) {\r\n if (df.$newFile.responseStatus === 200) {\r\n this.files[this.files.indexOf(df)].custom = df.$newFile.response;\r\n df.$newFile = null;\r\n } else {\r\n // console.log('error on upload', df.$event);\r\n }\r\n }\r\n if (!this.hasFilesToUpload) {\r\n this.prepareResponse(false);\r\n this.fileService.uploadSubscription.next({\r\n action: this.files.find(f => !!f.$newFile) ? 'uploadControlFailed' : 'uploadControlSuccess'\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n\r\n prepareResponse(doemit = true) {\r\n if (this.inputArray) {\r\n if (!this.responseFiles) {\r\n this.responseFiles = [];\r\n }\r\n this.responseFiles.length = 0;\r\n this.files.forEach(f => this.responseFiles.push({...f.custom, $newFile: f.$newFile}));\r\n } else {\r\n if (this.files.length === 0) {\r\n this.responseFiles = null;\r\n } else {\r\n if (!this.responseFiles) {\r\n this.responseFiles = {};\r\n }\r\n Object.keys(this.files[0].custom).forEach(k => {\r\n this.responseFiles[k] = this.files[0].custom[k];\r\n });\r\n this.responseFiles.$newFile = this.files[0].$newFile;\r\n }\r\n }\r\n if (doemit) {\r\n this.onChange(this.responseFiles);\r\n if (this.crop) {\r\n this.cropChanged.emit('done');\r\n }\r\n }\r\n\r\n // console.log('emit', this.files[1], { ...this.files[1].custom, $newFile: this.files[1].$newFile });\r\n // this.onChange(this.inputArray ?\r\n // this.files.map(f => ({ ...f.custom, $newFile: f.$newFile})) :\r\n // (this.files.length > 0 ? { ...this.files[0].custom, $newFile: this.files[0].$newFile } : null));\r\n // this.onChange(this.inputArray ?\r\n // this.files :\r\n // (this.files.length > 0 ? this.files[0] : null));\r\n }\r\n\r\n beforeSave() {\r\n return new Promise((res) => {\r\n this.files.forEach(f => {\r\n if (f.$newFile && f.$newFile.progress.status === 2) {\r\n f.$newFile.progress.status = 0;\r\n }\r\n if (this.crop && f.$newFile && !this.imagesDone[f.$newFile.id]) {\r\n this.cropperDone(f.$newFile.id);\r\n }\r\n })\r\n setTimeout(() => {\r\n res('done');\r\n }, 250);\r\n })\r\n }\r\n\r\n fileChangeEvent(event: any, f: any): void {\r\n this.changeFileIndex = this.files.indexOf(f);\r\n }\r\n\r\n startCropPreview(id) {\r\n clearTimeout(this.cropPreviewTimeouts[id]);\r\n this.showCropPreview[id] = !!this.cropSourceImages[id];\r\n }\r\n\r\n stopCropPreview(id) {\r\n this.cropPreviewTimeouts[id] = setTimeout(() => {\r\n this.showCropPreview[id] = false;\r\n }, 250);\r\n }\r\n\r\n zoomCroppedImage(dir, id) {\r\n let scale = this.transform[id].scale;\r\n scale += dir;\r\n if (scale < 0.1) {\r\n scale = 0.1;\r\n }\r\n this.transform[id] = {\r\n ...this.transform[id],\r\n scale\r\n };\r\n }\r\n\r\n rotateCroppedImage(dir, id) {\r\n this.canvasRotation[id] += dir;\r\n const flippedH = this.transform[id].flipH;\r\n const flippedV = this.transform[id].flipV;\r\n this.transform[id] = {\r\n ...this.transform[id],\r\n flipH: flippedV,\r\n flipV: flippedH\r\n };\r\n }\r\n\r\n onImageCropped(event: ImageCroppedEvent, id) {\r\n this.croppedImages[id] = event;\r\n this.imageCropped.emit(event);\r\n }\r\n\r\n imageLoaded(id) {\r\n this.showCropper = true;\r\n setTimeout(() => {\r\n this.transform[id] = {\r\n scale: 1\r\n };\r\n });\r\n }\r\n\r\n cropperReady(sourceImageDimensions: Dimensions, id) {\r\n this.cropperImageLoaded[id] = true;\r\n }\r\n\r\n loadImageFailed() {\r\n }\r\n\r\n toggleMenuVisibility(f) {\r\n this.fileMenuOpened = f;\r\n }\r\n\r\n menuClick() {\r\n this.fileMenuOpened = undefined;\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.inputArray = obj instanceof Array;\r\n if (this.inputArray) {\r\n this.files = obj.map(f => ({ custom: f, $newFile: null }));\r\n } else {\r\n this.files = obj ? [ { custom:obj, $newFile: null} ] : [];\r\n }\r\n this.cropSourceImages = {};\r\n }\r\n\r\n cropperDone(id) {\r\n const f = this.files.find(fx => fx.$newFile && fx.$newFile.id === id);\r\n if (f) {\r\n // const url = this.croppedImages[id];\r\n // console.log(url);\r\n // fetch(url)\r\n // .then(res => res.blob())\r\n // .then(blob => {\r\n // f.$newFile.nativeFile = new File([ blob ], 'crop.png', {\r\n // type: 'image/png'\r\n // });\r\n // f.$newFile.name = 'crop.png';\r\n // f.$newFile.size = f.$newFile.nativeFile.size;\r\n // f.$newFile.type = f.$newFile.nativeFile.type;\r\n // this.imagesDone[id] = true;\r\n // console.log(f);\r\n // })\r\n const croppedImage = this.croppedImages[id];\r\n f.$newFile.nativeFile = new File([ croppedImage.blob ], 'crop.png', {\r\n type: 'image/png'\r\n });\r\n f.$newFile.name = 'crop.png';\r\n f.$newFile.size = f.$newFile.nativeFile.size;\r\n f.$newFile.type = f.$newFile.nativeFile.type;\r\n this.imagesDone[id] = true;\r\n this.prepareResponse();\r\n }\r\n }\r\n\r\n uploadImgSrc() {\r\n return this.addFileImgSrc(this.uiFileSize)\r\n }\r\n}\r\n","<div class=\"label\" *ngIf=\"label\">\r\n <div class=\"text-container\"\r\n [matTooltip]=\"required ? translateService.instant('ui.controls.validation.required') : undefined\"\r\n [matTooltipPosition]=\"'above'\">\r\n <div class=\"text\">{{ label }}</div>\r\n <div *ngIf=\"required\" class=\"required\">*</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"files-container\" [ngClass]=\"{dragging: dragging, disabled: uploading || !editable}\">\r\n\r\n <div class=\"existing-files\">\r\n\r\n <div class=\"file-container\" *ngFor=\"let f of files\">\r\n\r\n @if (customContentTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"customContentTemplate\" [ngTemplateOutletContext]=\"{fileUploader: this, file: f}\"></ng-template>\r\n }\r\n\r\n <div class=\"file-menu\" (click)=\"toggleMenuVisibility(f)\" *ngIf=\"!customFileMenu && editable && !uploading\">\r\n <mat-icon>menu</mat-icon>\r\n </div>\r\n <div class=\"file-menu-container mat-elevation-z2\" [ngClass]=\"{visible: f === fileMenuOpened}\"\r\n (click)=\"menuClick()\" (mouseleave)=\"menuClick()\">\r\n <ng-container *ngIf=\"!menuTemplate\">\r\n <label class=\"menu-item\">{{ translateService.instant('ui.controls.ui-file-uploader.menu.change') }}\r\n <input *ngIf=\"!refreshAddInput\" style=\"display: none;\" type=\"file\" ngFileSelect\r\n [options]=\"uploadOptions\" (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </label>\r\n <div class=\"menu-item\"\r\n (click)=\"remove(f)\">{{ translateService.instant('ui.controls.ui-file-uploader.menu.delete') }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"menuTemplate\"\r\n [ngTemplateOutletContext]=\"{fileInput: fileInput}\"></ng-template>\r\n <ng-template #fileInput>\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"crop && !cropDone(f)\" (mouseenter)=\"startCropPreview(f.$newFile.id)\"\r\n (mouseleave)=\"stopCropPreview(f.$newFile.id)\">\r\n <div class=\"crop-container\" [ngStyle]=\"ngAddStyle\">\r\n\r\n <ui-file *ngIf=\"false && files.length > 0 && !cropSourceImages\" [fileSize]=\"null\"\r\n [srcData]=\"files[0].custom\" [ngClass]=\"{rounded: cropRounded}\"></ui-file>\r\n\r\n <mat-spinner *ngIf=\"!cropperImageLoaded[f.$newFile.id] && cropSourceImages[f.$newFile.id]\"\r\n [diameter]=\"75\"></mat-spinner>\r\n\r\n <image-cropper *ngIf=\"cropSourceImages[f.$newFile.id]\"\r\n [imageFile]=\"cropSourceImages[f.$newFile.id]\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"false\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [resizeToWidth]=\"cropMaxWidth\"\r\n [onlyScaleDown]=\"false\"\r\n [roundCropper]=\"cropRounded\"\r\n [canvasRotation]=\"canvasRotation[f.$newFile.id]\"\r\n [transform]=\"transform[f.$newFile.id]\"\r\n [alignImage]=\"'center'\"\r\n [style.display]=\"showCropper ? null : 'none'\"\r\n [format]=\"'png'\"\r\n (imageCropped)=\"onImageCropped($event, f.$newFile.id)\"\r\n (imageLoaded)=\"imageLoaded(f.$newFile.id)\"\r\n (cropperReady)=\"cropperReady($event, f.$newFile.id)\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n ></image-cropper>\r\n\r\n <div class=\"crop-preview mat-elevation-z2\" [class]=\"previewPosition\"\r\n *ngIf=\"true || (showCropPreview[f.$newFile.id] && cropperImageLoaded[f.$newFile.id])\">\r\n <div class=\"crop-menu\">\r\n <mat-icon (click)=\"zoomCroppedImage(.1, f.$newFile.id)\">zoom_in</mat-icon>\r\n <mat-icon (click)=\"zoomCroppedImage(- .1, f.$newFile.id)\">zoom_out</mat-icon>\r\n <mat-icon (click)=\"rotateCroppedImage(-1, f.$newFile.id)\">rotate_left</mat-icon>\r\n <mat-icon (click)=\"rotateCroppedImage(1, f.$newFile.id)\">rotate_right</mat-icon>\r\n <div style=\"flex: 1 1 100%\"></div>\r\n <label *ngIf=\"false\" class=\"menu-item\">\r\n <mat-icon>upload_file</mat-icon>\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </label>\r\n <mat-icon (click)=\"remove(f)\">delete_outline</mat-icon>\r\n <div style=\"flex: 1 1 100%\"></div>\r\n <mat-icon (click)=\"cropperDone(f.$newFile.id)\">done</mat-icon>\r\n </div>\r\n <img *ngIf=\"croppedImages[f.$newFile.id]\" [src]=\"croppedImages[f.$newFile.id].objectUrl\"\r\n [ngClass]=\"{rounded: cropRounded}\"/>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <ng-container *ngIf=\"!crop || cropDone(f)\">\r\n <ng-container *ngIf=\"fileTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"fileTemplate\"\r\n [ngTemplateOutletContext]=\"{file: f, fileInput: fileInput2}\"></ng-template>\r\n <ng-template #fileInput2>\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ui-file *ngIf=\"!fileTemplate\" [fileSize]=\"_fileSize\" [srcData]=\"f.$newFile ? f.$newFile: f.custom\"\r\n [ngClass]=\"{rounded: crop && cropRounded}\">\r\n </ui-file>\r\n\r\n <ng-container *ngIf=\"f.$newFile\">\r\n <div *ngIf=\"f.$newFile.responseStatus && f.$newFile.responseStatus !== 200\"\r\n class=\"progress-container error\">\r\n {{ translateService.instant('ui.controls.ui-file-uploader.uploadError', f.$newFile.response) }}\r\n </div>\r\n <div *ngIf=\"!f.$newFile.responseStatus && f.$newFile.progress.status === 1\"\r\n class=\"progress-container\">\r\n <div class=\"progress\" [ngStyle]=\"{width: f.$newFile.progress.data.percentage + '%'}\"></div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"file-container add\" ngFileDrop [options]=\"uploadOptions\" (uploadOutput)=\"onUploadOutput($event)\"\r\n [uploadInput]=\"uploadInput\" [ngClass]=\"{visible: files.length < maxFiles || maxFiles === 0}\"\r\n [ngStyle]=\"addFileTemplate ? {} : ngAddStyle\">\r\n <label>\r\n @if (addFileTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"addFileTemplate\"></ng-template>\r\n } @else {\r\n <div class=\"upload-image-container\"></div>\r\n <img [src]=\"uploadImgSrc()\" [ngClass]=\"{'with-hint': addHint}\"/>\r\n <div *ngIf=\"addHint\" class=\"add-hint\">{{ addHint }}</div>\r\n }\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\"\r\n [multiple]=\"maxFiles === 0 && multiple\">\r\n </label>\r\n </div>\r\n\r\n</div>\r\n","import {Component, HostBinding, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-expander',\r\n templateUrl: './expander.component.html',\r\n styleUrls: ['./expander.component.scss'],\r\n standalone: false\r\n})\r\nexport class ExpanderComponent implements OnInit {\r\n\r\n @HostBinding('class.expanded')\r\n @Input() expanded = false;\r\n\r\n @HostBinding('class')\r\n @Input() direction: 'right-down' | 'up-down' = 'right-down';\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<mat-icon>keyboard_arrow_up</mat-icon>\r\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[uiForceVisibility]',\r\n exportAs: 'ForceVisibilityDirective',\r\n standalone: false\r\n})\r\nexport class ForceVisibilityDirective implements OnInit, OnChanges {\r\n\r\n private static disabled = false;\r\n\r\n @Input() visibilityWithin: HTMLElement;\r\n @Input() visibilityPadding = 15;\r\n @Input() visibilityOnRequestOnly = false;\r\n @Input() visibilityEmitChange = false;\r\n @Input() visibilityFromTop = 0;\r\n @Input() visibilityCheckEnabled = true;\r\n\r\n @Output() visibilityChanged = new EventEmitter<boolean>();\r\n\r\n private visible;\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n\r\n public static disableFor(timeoutMs: number): void {\r\n this.disabled = true;\r\n setTimeout(() => this.disabled = false, timeoutMs);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.visibilityOnRequestOnly && !this.visibilityEmitChange) {\r\n setTimeout(() => {\r\n this.forceVisibility();\r\n }, 125);\r\n }\r\n if (this.visibilityEmitChange) {\r\n if (!this.visibilityWithin) {\r\n throw Error('traceVisibilityChanged requires visibilityWithin')\r\n } else {\r\n this.visible = this.isVisible();\r\n this.visibilityWithin.onscroll = () => {\r\n const v = this.isVisible();\r\n if (v !== this.visible) {\r\n this.visible = v;\r\n this.visibilityChanged.emit(v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.visibilityCheckEnabled && changes.visibilityCheckEnabled.currentValue !== changes.visibilityCheckEnabled.previousValue) {\r\n this.forceVisibility();\r\n }\r\n }\r\n\r\n private isVisible() {\r\n const rect = (this.el.nativeElement as HTMLElement).getBoundingClientRect();\r\n const rectIn = this.visibilityWithin.getBoundingClientRect();\r\n return rect.top + +this.visibilityPadding - rectIn.bottom < 0;\r\n }\r\n\r\n public forceVisibility(): void {\r\n if (ForceVisibilityDirective.disabled || !this.visibilityCheckEnabled) {\r\n return;\r\n }\r\n const rect = (this.el.nativeElement as HTMLElement).getBoundingClientRect();\r\n const padding = +this.visibilityPadding;\r\n if (this.visibilityWithin) {\r\n const rectIn = this.visibilityWithin.getBoundingClientRect();\r\n let diff = rect.top + rect.height + padding - rectIn.bottom;\r\n if (diff > 0) {\r\n this.visibilityWithin.scrollBy(0, diff);\r\n } else {\r\n diff = rect.top - rectIn.top - padding;\r\n if (diff < 0) {\r\n this.visibilityWithin.scrollBy(0, diff);\r\n }\r\n }\r\n } else {\r\n if (this.visibilityFromTop !== 0) {\r\n document.getElementsByTagName('app-root')[0].scrollTo(0, rect.top - +this.visibilityFromTop);\r\n } else {\r\n if (rect.bottom > window.innerHeight) {\r\n document.getElementsByTagName('app-root')[0].scrollBy(0, rect.bottom - window.innerHeight + 15);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import {MatDialogRef} from '@angular/material/dialog';\r\nimport {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class DialogComponent {\r\n\r\n @Input() title = '';\r\n @Input() draggable = false; // true;\r\n @Input() hideCloseButton = false;\r\n\r\n @Input() close: (() => void) | undefined;\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogComponent>) {\r\n }\r\n\r\n clickClose(): void {\r\n if (!this.close) {\r\n this.dialogRef.close();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n\r\n}\r\n","<ui-action-icon *ngIf=\"title && !hideCloseButton\" (click)=\"clickClose()\" class=\"close-icon\" [matIcon]=\"'close'\" [color]=\"'warn'\"></ui-action-icon>\r\n\r\n<ng-container *ngIf=\"title\">\r\n <h1 class=\"draggable\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle mat-dialog-title *ngIf=\"draggable\">\r\n {{title}}\r\n </h1>\r\n <h1 mat-dialog-title *ngIf=\"!draggable\">\r\n {{title}}\r\n </h1>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>\r\n","import { Component, Inject, Injectable, TemplateRef } from '@angular/core';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from './ui-translate.service';\r\n\r\nexport interface MessageBoxButton {\r\n id: string;\r\n text: string;\r\n kind?: 'basic' | 'flat' | 'stroked';\r\n color?: 'primary' | 'accent' | 'warn';\r\n process?: () => Promise<any>;\r\n disabled?: () => boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ui-message-box-modal',\r\n template: `\r\n <ui-dialog [title]=\"title\" [hideCloseButton]=\"hideCloseButton\">\r\n <div mat-dialog-content *ngIf=\"message\" style=\"padding: 7px 16px 12px 16px;\">\r\n <div [innerHTML]=\"message\" style=\"line-height: 24px;\"></div>\r\n <pre *ngIf=\"errorMessage\" [innerHTML]=\"errorMessage\"></pre>\r\n <pre *ngIf=\"errorDetail\" [innerHTML]=\"errorDetail\"></pre>\r\n </div>\r\n \r\n <div mat-dialog-content *ngIf=\"template\" style=\"padding: 7px 16px 12px 16px;\">\r\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\r\n </div>\r\n\r\n <div mat-dialog-actions>\r\n <div class=\"buttons\">\r\n <ui-button *ngFor=\"let b of buttons\" [color]=\"b.color || 'primary'\" [tabIndex]=\"-1\"\r\n [kind]=\"b.kind || 'stroked'\" [busy]=\"processing === b\" [disabled]=\"!!processing || (b.disabled && b.disabled())\" (click)=\"buttonClick(b)\" [label]=\"b.text\"></ui-button>\r\n </div>\r\n </div>\r\n </ui-dialog>\r\n `,\r\n standalone: false\r\n})\r\nexport class MessageBoxModalComponent {\r\n\r\n message;\r\n errorMessage;\r\n errorDetail;\r\n buttons: MessageBoxButton[] = [];\r\n title: string;\r\n template: any;\r\n hideCloseButton = false;\r\n processing: MessageBoxButton = null;\r\n\r\n constructor(public dialogRef: MatDialogRef<MessageBoxModalComponent>,\r\n public sanitizer: DomSanitizer,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n\r\n if (data.message) {\r\n this.message = this.sanitizer.bypassSecurityTrustHtml(data.message);\r\n }\r\n\r\n if (this.data.options.template) {\r\n this.template = this.data.options.template;\r\n }\r\n\r\n if (this.data.options.errorMessage) {\r\n this.errorMessage = this.sanitizer.bypassSecurityTrustHtml(data.options.errorMessage);\r\n }\r\n if (this.data.options.errorDetail) {\r\n this.errorDetail = this.sanitizer.bypassSecurityTrustHtml(data.options.errorDetail);\r\n }\r\n if (this.data.options.hideCloseButton !== undefined) {\r\n this.hideCloseButton = this.data.options.hideCloseButton;\r\n }\r\n\r\n this.buttons = data.options.buttons ? data.options.buttons : [{id: 'close', text: 'Close'}];\r\n this.title = data.options.title;\r\n }\r\n\r\n close(result: any): void {\r\n this.dialogRef.close(result);\r\n }\r\n\r\n buttonClick(b: MessageBoxButton) {\r\n if (b.process) {\r\n this.processing = b;\r\n b.process().then(r => {\r\n this.close(r);\r\n }).catch(e => {\r\n this.processing = null;\r\n })\r\n } else {\r\n this.close(b.id);\r\n }\r\n }\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageBoxService {\r\n\r\n constructor(private dialog: MatDialog,\r\n @Inject(UI_TRANSLATESERVICE) public translateService: IUiTranslateService) {\r\n }\r\n\r\n confirm(message: string, options: {\r\n buttons?: MessageBoxButton[],\r\n title?: string,\r\n errorMessage?: string,\r\n errorDetail?: string,\r\n hideCloseButton?: boolean,\r\n maxWidth?: string\r\n } = {}): Observable<any> {\r\n const config = new MatDialogConfig();\r\n config.disableClose = false;\r\n config.minWidth = '340px';\r\n config.maxWidth = options.maxWidth || '600px';\r\n config.width = '40vw';\r\n config.data = {message, options};\r\n\r\n return this.dialog.open(MessageBoxModalComponent, config).afterClosed();\r\n }\r\n\r\n open(options: {\r\n buttons?: MessageBoxButton[],\r\n title?: string,\r\n errorMessage?: string,\r\n errorDetail?: string,\r\n hideCloseButton?: boolean,\r\n maxWidth?: string,\r\n message?: string,\r\n template?: TemplateRef<any>\r\n } = {}): Observable<any> {\r\n const config = new MatDialogConfig();\r\n config.disableClose = true;\r\n config.minWidth = '340px';\r\n config.maxWidth = options.maxWidth || '600px';\r\n config.width = '40vw';\r\n config.data = {message: options.message, options};\r\n\r\n return this.dialog.open(MessageBoxModalComponent, config).afterClosed();\r\n }\r\n\r\n confirmDelete(title: string, message: string): Observable<any> {\r\n const options = {\r\n title,\r\n buttons: [\r\n { id: 'cancel', text: this.translateService.instant('ui.messagebox.button.cancel') },\r\n { id: 'delete', text: this.translateService.instant('ui.messagebox.button.delete'), color: 'warn', kind: 'flat' }\r\n ]\r\n };\r\n // @ts-ignore\r\n return this.confirm(message, options);\r\n }\r\n\r\n\r\n}\r\n","import { Component, Host, HostBinding, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { UiBaseComponent } from '../layouts/base/ui-base.component';\r\nimport {\r\n AbstractControl, ControlContainer,\r\n ControlValueAccessor,\r\n UntypedFormControl,\r\n UntypedFormGroup, FormGroupDirective,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ui-currency',\r\n templateUrl: './currency.component.html',\r\n styleUrls: ['./currency.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: CurrencyComponent\r\n }, {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: CurrencyComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class CurrencyComponent extends UiBaseComponent implements OnInit, ControlValueAccessor, Validator {\r\n\r\n @Input() currencies: Partial<{ code: string; }>[] = [];\r\n @Input() currencyDisabled = false;\r\n @Input() formControlName: string;\r\n @Input() panelClass = 'ui-currency';\r\n\r\n @HostBinding('class.amount-hidden')\r\n @Input() amountHidden = false;\r\n\r\n formGroup = new UntypedFormGroup({\r\n amount: new UntypedFormControl(),\r\n currency: new UntypedFormControl()\r\n });\r\n\r\n parentFormControl: AbstractControl;\r\n\r\n @HostBinding('class.focus')\r\n hasFocus = false;\r\n\r\n // @HostBinding('class')\r\n // get sizeClass(): string {\r\n // return this.size;\r\n // }\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n onChange = (value) => {};\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.formGroup.valueChanges.subscribe(v => this.onChange(v));\r\n // this.formGroup = new FormGroup({\r\n // amount: new FormControl(this.control?.value.amount),\r\n // currency: new FormControl(this.currencies.find(c => c.code === this.control?.value.currency.code))\r\n // });\r\n // this.formGroup.valueChanges.subscribe(v => {\r\n // this.onChange(this.formGroup?.getRawValue());\r\n // });\r\n if (this.currencyDisabled) {\r\n this.formGroup.get('currency')?.disable();\r\n }\r\n // this.ngControl.control.statusChanges.subscribe(s => {\r\n // if (s === 'INVALID') {\r\n // // this.formGroup?.get('amount')?.setErrors(this.control?.errors || null);\r\n // this.formGroup?.get('currency')?.markAsTouched();\r\n // // this.formGroup?.get('currency')?.setErrors(this.control?.errors || null);\r\n // }\r\n // if (s === 'DISABLED') {\r\n // this.formGroup?.disable({emitEvent: false});\r\n // }\r\n // if (s === 'VALID') {\r\n // this.formGroup?.enable({emitEvent: false});\r\n // if (this.currencyDisabled) {\r\n // this.formGroup?.get('currency')?.disable({emitEvent: false});\r\n // }\r\n // }\r\n // });\r\n this.parentFormControl = (this.controlContainer as FormGroupDirective).control.get(this.formControlName);\r\n }\r\n\r\n // bindValidators(validators) {\r\n // console.log('binding validators', validators);\r\n // if (this.formGroup) {\r\n // this.formGroup.get('amount').setValidators(validators);\r\n // this.formGroup.get('currency').markAsTouched();\r\n // this.formGroup.get('currency').setErrors(validators);\r\n // }\r\n // }\r\n\r\n get isInvalid(): boolean {\r\n return this.parentFormControl.invalid;\r\n }\r\n\r\n get validationErrors(): ValidationErrors {\r\n return this.parentFormControl.errors;\r\n }\r\n\r\n focusChanged(hasFocus: boolean): void {\r\n this.hasFocus = hasFocus;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.formGroup.get('amount').disable();\r\n if (!this.currencyDisabled) {\r\n this.formGroup.get('currency').disable();\r\n }\r\n } else {\r\n this.formGroup.get('amount').enable();\r\n if (!this.currencyDisabled) {\r\n this.formGroup.get('currency').enable();\r\n }\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return undefined;\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.formGroup.setValue(obj);\r\n }\r\n}\r\n","<ui-base-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [formGroup]=\"formGroup\">\r\n <ui-input *ngIf=\"!amountHidden\" [textAlign]=\"'right'\" [formControlName]=\"'amount'\" [placeholder]=\"placeholder\" #input [useInputMessages]=\"'never'\" (focusChanged)=\"focusChanged($event)\"></ui-input>\r\n <ui-select [panelClass]=\"panelClass\" [formControlName]=\"'currency'\" [displayAttribute]=\"'symbol'\" [options]=\"currencies\" [useInputMessages]=\"'never'\"></ui-select>\r\n</div>\r\n\r\n</ui-base-layout>\r\n\r\n","import { Component, Host, HostBinding, Input, OnInit, Optional, Self } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\n@Component({\r\n selector: 'ui-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n standalone: false\r\n})\r\nexport class CheckboxComponent extends UiSimpleComponent implements OnInit {\r\n\r\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary';\r\n @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'never';\r\n\r\n text;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n super(ngControl);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n if (this.label) {\r\n this.text = this.label;\r\n this.label = undefined;\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n </mat-checkbox>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </div>\r\n</ui-simple-layout>\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n standalone: false\r\n})\r\nexport class AvatarComponent {\r\n\r\n @Input() user: Partial<{ avatar: any, shortName: string, shortColour: string }> = {};\r\n\r\n @Input() srcOptions;\r\n\r\n @HostBinding('class')\r\n @Input() size: 'big' | 'bigger' | 'normal' | 'smaller' | 'small' | 'mini' = 'normal';\r\n\r\n get contrast(): string {\r\n const hexCode = this.user.shortColour.substring(1, 7);\r\n\r\n const hexR = parseInt(hexCode.substring(0, 2), 16);\r\n const hexG = parseInt(hexCode.substring(2, 4), 16);\r\n const hexB = parseInt(hexCode.substring(4, 6), 16);\r\n const contrastRatio = hexR * 0.299 + hexG * 0.587 + hexB * 0.114;\r\n\r\n return contrastRatio >= 200 ? 'black' : 'white';\r\n }\r\n\r\n constructor() { }\r\n\r\n}\r\n","<ui-file *ngIf=\"user.avatar || (!user.avatar && !user.shortName)\" [fileSize]=\"'avatar-' + size\" [srcData]=\"user.avatar || { mimeType: 'image/png'}\" [srcOptions]=\"srcOptions\" ></ui-file>\r\n<div *ngIf=\"!user.avatar && user.shortName\" [ngStyle]=\"{backgroundColor: user.shortColour, color: contrast}\">\r\n {{ user.shortName }}\r\n</div>\r\n","import {Component, Host, HostBinding, Input, OnInit, Optional, SkipSelf} from '@angular/core';\r\nimport {ControlContainer, UntypedFormGroup} from '@angular/forms';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'ui-submit-button',\r\n templateUrl: './submit-button.component.html',\r\n styleUrls: ['./submit-button.component.scss'],\r\n standalone: false\r\n})\r\nexport class SubmitButtonComponent implements OnInit {\r\n\r\n @Input() busy = false;\r\n @Input() disabled = false;\r\n @Input() formGroups: UntypedFormGroup | UntypedFormGroup[] = [];\r\n @Input() label = 'Save';\r\n @Input() submit: (() => void) | undefined;\r\n @Input() formInvalid: boolean | undefined;\r\n\r\n @HostBinding('class.with-close')\r\n @Input() prependCloseButton = true;\r\n\r\n constructor(public dialogRef: MatDialogRef<any>,\r\n @Optional() @Host() @SkipSelf()\r\n protected controlContainer: ControlContainer) { }\r\n\r\n ngOnInit(): void {\r\n if (this.formInvalid === undefined) {\r\n if (this.formGroups === undefined && this.controlContainer && this.controlContainer.control instanceof UntypedFormGroup) {\r\n this.formGroups = this.controlContainer.control;\r\n }\r\n if (!Array.isArray(this.formGroups)) {\r\n this.formGroups = [this.formGroups];\r\n }\r\n }\r\n }\r\n\r\n get formsValid(): boolean {\r\n if (this.formInvalid !== undefined) {\r\n return !this.formInvalid;\r\n } else {\r\n return !(this.formGroups as UntypedFormGroup[]).find(f => f.invalid);\r\n }\r\n }\r\n\r\n doSubmit(): void {\r\n (this.formGroups as UntypedFormGroup[]).forEach(f => f.markAllAsTouched());\r\n if (this.formsValid && this.submit) {\r\n this.submit();\r\n }\r\n }\r\n}\r\n","<ui-button *ngIf=\"prependCloseButton\" [label]=\"'Close'\" (click)=\"dialogRef.close()\"></ui-button>\r\n\r\n<ui-button [busy]=\"busy\"\r\n [disabled]=\"disabled || busy\" [type]=\"'submit'\"\r\n [formInvalid]=\"!formsValid\"\r\n [label]=\"label\" (click)=\"doSubmit()\"></ui-button>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n NgZone,\r\n Optional,\r\n Output,\r\n Self,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { take } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ui-text-area',\r\n templateUrl: './text-area.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss'],\r\n standalone: false\r\n})\r\nexport class TextAreaComponent extends UiSimpleComponent {\r\n\r\n @Input() rows = 5;\r\n\r\n @Input() autoResize = false;\r\n\r\n lastClientHeight = -1;\r\n // height = -1;\r\n\r\n\r\n @ViewChild('textarea') textarea: ElementRef;\r\n\r\n @Output() focusChanged = new EventEmitter<boolean>();\r\n\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl/*, private _ngZone: NgZone, private cdr: ChangeDetectorRef*/) {\r\n super(ngControl);\r\n }\r\n\r\n focus(): void {\r\n this.textarea.nativeElement.focus();\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n }\r\n\r\n onFocus(focus: boolean): void {\r\n this.focusChanged.emit(focus);\r\n }\r\n\r\n\r\n // onKeydown() {\r\n // // setTimeout(() => {\r\n // console.log('onkeydown');\r\n // // if (this.lastClientHeight !== this.textarea.nativeElement.clientHeight + 20) {\r\n // this.height = this.textarea.nativeElement.clientHeight + 20;\r\n // // this.textarea.nativeElement.setAttribute('style', 'color: white; background: red; height: ' + this.height + 'px;');\r\n // // this.cdr.detectChanges();\r\n // this.lastClientHeight = this.height;\r\n // console.log(this.height);\r\n // // }\r\n // // });\r\n // }\r\n\r\n // @ViewChild('autosize') autosize: CdkTextareaAutosize;\r\n //\r\n // triggerResize() {\r\n // // Wait for changes to be applied, then trigger textarea resize.\r\n // this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n // console.log('xxx');\r\n // this.autosize.resizeToFitContent(true)\r\n // });\r\n // }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"input-wrapper\">\r\n <ng-container *ngIf=\"componentFormControl\">\r\n <textarea *ngIf=\"autoResize \"#textarea matInput\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"rows\"\r\n class=\"autoresize\"\r\n [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" [rows]=\"rows\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\"></textarea>\r\n <textarea *ngIf=\"!autoResize \"#textarea matInput\r\n [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" [rows]=\"rows\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\"></textarea>\r\n </ng-container>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import { Component, EventEmitter, Optional, Output, Self, TemplateRef, ViewChild } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\n@Component({\r\n selector: 'ui-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss']\r\n // providers: [\r\n // {\r\n // provide: NG_VALUE_ACCESSOR,\r\n // multi: true,\r\n // useExisting: forwardRef(() => DateComponent),\r\n // }\r\n // ]\r\n ,\r\n standalone: false\r\n})\r\n\r\nexport class DateComponent extends UiSimpleComponent { // implements ControlValueAccessor {\r\n // @Input() placeholder: string | undefined;\r\n // @Input() control;\r\n // // @Input() controlName;\r\n // @Input() label;\r\n // @Input() type;\r\n // @Input() floatLabel;\r\n\r\n @Output() doKeyup = new EventEmitter();\r\n\r\n @ViewChild('picker') picker?: TemplateRef<any>;\r\n @ViewChild('input') input?: TemplateRef<any>;\r\n\r\n onChange: any;\r\n hasFocus = false;\r\n\r\n controlTypeName = 'date';\r\n\r\n opening = false;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n super(ngControl);\r\n }\r\n\r\n open(): void {\r\n this.hasFocus = true;\r\n // this.opening = true;\r\n // this.picker.open();\r\n // setTimeout(() => {\r\n // this.input.nativeElement.focus();\r\n // this.opening = false;\r\n // }); // , 150);\r\n }\r\n\r\n close(): void {\r\n this.hasFocus = false;\r\n // if (!this.opening) {\r\n // this.picker.close();h\r\n // }\r\n }\r\n\r\n keyup(): void {\r\n this.doKeyup.emit();\r\n // this.onChange(this.control.value);\r\n }\r\n\r\n writeValue(obj: any): void { }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void { }\r\n\r\n setDisabledState(isDisabled: boolean): void { }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container has-suffix active-icons\" [ngClass]=\"{'has-focus': hasFocus}\">\r\n <input #input (blur)=\"close()\" (focus)=\"open()\" [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" (keyup)=\"keyup()\">\r\n <mat-icon slot=\"suffix\" (click)=\"picker.open()\" [ngClass]=\"{disabled: componentFormControl.disabled}\">today</mat-icon>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import { AfterViewInit, Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport {MatSort, SortDirection} from '@angular/material/sort';\r\n// import {PersistService} from '../../services/persist.service';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\n\r\nexport interface TableColumn {\r\n name: string;\r\n sortable?: boolean | ((row: any, direction?: SortDirection) => number | string);\r\n sticky?: boolean;\r\n label?: string;\r\n colSpan?: (row: any) => number;\r\n formatter?: (row: any) => string;\r\n cellClass?: (row: any, c?: TableColumn) => string;\r\n headerTemplate?: (c: TableColumn) => TemplateRef<any>;\r\n cellTemplate?: (row: any, c: TableColumn) => TemplateRef<any>;\r\n}\r\n\r\nexport interface TableOptions {\r\n sticky?: boolean;\r\n}\r\n@Component({\r\n selector: 'ui-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n standalone: false\r\n})\r\nexport class TableComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() columns: TableColumn[] = [];\r\n @Input() dataSource: any;\r\n @Input() options: TableOptions | undefined;\r\n @Input() rowTemplates: any = {};\r\n @Input() headerTemplates: any = {};\r\n @Input() stateStoreKey = '';\r\n @Input() rowAction: (row: any) => void;\r\n\r\n @Input() matSortActive;\r\n @Input() matSortDirection;\r\n\r\n @ViewChild(MatSort) matSort: MatSort | undefined;\r\n\r\n get columnList(): string[] {\r\n return this.columns.map(c => c.name);\r\n }\r\n\r\n constructor(/*private persistService: PersistService, */private domSanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.options = {...{sticky: false}, ...this.options};\r\n if (this.dataSource) {\r\n // if (this.stateStoreKey !== '') {\r\n // const storeKey = this.stateStoreKey + '.sort';\r\n // const ms = this.persistService.get(storeKey, { active: '', direction: ''});\r\n // this.matSort.active = ms.active;\r\n // this.matSort.direction = ms.direction;\r\n // this.matSort.sortChange.subscribe(sc => {\r\n // this.persistService.set(storeKey, sc.direction === '' ? { active: '', direction: ''} : sc);\r\n // });\r\n // }\r\n if (this.columns.find(c => c.sortable !== undefined)) {\r\n this.dataSource.sortData = (rows: any[], sort: MatSort) => {\r\n if (sort.direction) {\r\n const sortColumn = this.columns.find(c => c.name === sort.active);\r\n if (sortColumn) {\r\n const res = sort.direction === 'asc' ? 1 : -1;\r\n return rows.sort((r1: any, r2: any) => {\r\n if (sortColumn.sortable === true) {\r\n return r1[sortColumn.name] < r2[sortColumn.name] ? -res : res;\r\n }\r\n if (typeof sortColumn.sortable === 'function') {\r\n return sortColumn.sortable(r1, sort.direction) < sortColumn.sortable(r2, sort.direction) ? -res : res;\r\n }\r\n return 0;\r\n });\r\n }\r\n }\r\n return rows;\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.dataSource.sort = this.matSort;\r\n }\r\n\r\n display(row: any, col: TableColumn): any {\r\n if (col.formatter) {\r\n return this.domSanitizer.bypassSecurityTrustHtml(col.formatter(row));\r\n } else {\r\n return row[col.name];\r\n }\r\n }\r\n\r\n rowClicked(row) {\r\n if (this.rowAction) {\r\n this.rowAction( row);\r\n }\r\n }\r\n}\r\n","<table mat-table matSort [dataSource]=\"dataSource\" style=\"width: 100%\" [matSortActive]=\"matSortActive\" [matSortDirection]=\"matSortDirection\">\r\n\r\n <ng-container *ngFor=\"let c of columns\" [matColumnDef]=\"c.name\" [sticky]=\"c.sticky || false\">\r\n\r\n <ng-container *ngIf=\"c.sortable\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{c.label}}</th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!c.sortable\">\r\n <ng-container *ngIf=\"!headerTemplates[c.name] && !c.headerTemplate\">\r\n <th mat-header-cell *matHeaderCellDef>{{c.label}}</th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"c.headerTemplate\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-template [ngTemplateOutlet]=\"c.headerTemplate(c)\" [ngTemplateOutletContext]=\"{column:c}\"></ng-template>\r\n </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"headerTemplates[c.name]\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-template [ngTemplateOutlet]=\"headerTemplates[c.name]\"></ng-template>\r\n </th>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let element\" [colSpan]=\"c.colSpan ? c.colSpan(element) : 1\" [class]=\"c.cellClass ? c.cellClass(element, c) : ''\">\r\n <ng-container *ngIf=\"!c.colSpan || c.colSpan(element) > 0\">\r\n <ng-container *ngIf=\"rowTemplates[c.name]\">\r\n <ng-template [ngTemplateOutlet]=\"rowTemplates[c.name]\" [ngTemplateOutletContext]=\"{row:element}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"c.cellTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"c.cellTemplate(c, element)\" [ngTemplateOutletContext]=\"{row:element, column: c}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!rowTemplates[c.name] && !c.cellTemplate\">\r\n <span [innerHTML]=\"display(element, c)\"></span>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnList; sticky: options?.sticky\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columnList;\" (click)=\"rowClicked(row)\"></tr>\r\n</table>\r\n","import {Component, HostBinding, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-burger',\r\n templateUrl: './burger.component.html',\r\n styleUrls: ['./burger.component.scss'],\r\n standalone: false\r\n})\r\nexport class BurgerComponent implements OnInit {\r\n\r\n @HostBinding('class.open')\r\n @Input() open = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n"," <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, Optional, SkipSelf, ViewChild } from '@angular/core';\r\nimport { ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { UiBaseComponent } from '../layouts/base/ui-base.component';\r\nimport { InputComponent } from '../input/input.component';\r\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'ui-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: AutocompleteComponent\r\n }],\r\n standalone: false\r\n})\r\nexport class AutocompleteComponent extends UiBaseComponent implements OnInit, ControlValueAccessor {\r\n\r\n private SHOWN_USERS_DELTA = 10;\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n // @Optional() @Self() public ngControl: NgControl,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @Input() options?: any[];\r\n @Input() multiple = true;\r\n @Input() allowNew = false;\r\n @Input() displayAttribute = 'name';\r\n @Input() idAttribute = 'id';\r\n\r\n // value?: any;\r\n searchableOptions?: any[];\r\n filteredOptions: any[] = [];\r\n filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n\r\n // skipBlur = false;\r\n // typingStarted = false;\r\n messageShown = false;\r\n initialOption?: any;\r\n selectedOption?: any;\r\n lastEmittedId?: any;\r\n focusedOption?: any;\r\n alreadyAdded = false;\r\n optionsVisible = false;\r\n\r\n @ViewChild('input') input?: InputComponent;\r\n @ViewChild('trigger') optionsTrigger: CdkOverlayOrigin;\r\n\r\n inputFocused = false;\r\n inputControl = new UntypedFormControl('');\r\n checkboxSelection: Set<any> = new Set<any>();\r\n\r\n onChange: (value) => void;\r\n\r\n @Input() optionDisabled: (any) => boolean = () => false;\r\n @Input() optionFormatter: (any) => string = (o) => o[this.displayAttribute];\r\n\r\n protected buildSearchableOptions() {\r\n return this.options.map(o => ({\r\n ...o,\r\n unselectable: this.optionDisabled(o),\r\n searchString: `${this.optionFormatter(o)}`.toLowerCase()\r\n }));\r\n }\r\n\r\n protected filterOptions(text: string) {\r\n this.filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n return this.searchableOptions.filter(u => u.searchString.includes(text));\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n // console.log('ngoninit');\r\n\r\n super.ngOnInit();\r\n\r\n // if (this.formControlName && this.controlContainer.control) {\r\n // this.control = this.controlContainer.control.get(this.formControlName) as FormControl;\r\n // }\r\n //\r\n // this.user = this.control.value;\r\n\r\n // this.value = this.control.value;\r\n\r\n this.searchableOptions = this.buildSearchableOptions();\r\n\r\n // if (this.control.disabled) {\r\n // this.inputControl.disable();\r\n // }\r\n\r\n // this.control.statusChanges.subscribe(v => {\r\n // if (v === 'DISABLED') {\r\n // this.inputControl.disable();\r\n // }\r\n // if (v === 'VALID') {\r\n // this.inputControl.enable();\r\n // }\r\n // });\r\n\r\n\r\n\r\n this.inputControl.valueChanges.pipe(debounceTime(200)).subscribe(v => {\r\n const lcv = v.toLowerCase();\r\n\r\n this.filteredOptions = this.filterOptions(lcv);\r\n\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n } else {\r\n this.focusedOption = undefined;\r\n }\r\n\r\n if (v === '') {\r\n this.focusedOption = undefined;\r\n this.selectedOption = undefined;\r\n }\r\n\r\n // if (v !== '') {\r\n // if (this.newUsername === v) {\r\n // this.selectedUser = {id: null, fullName: v};\r\n // this.initialUser = this.selectedUser;\r\n // } else {\r\n // if (this.filteredGroupsAndUsers.length > 0) {\r\n // this.focusedGroup = this.filteredGroupsAndUsers[0];\r\n // this.focusedUser = this.focusedGroup.filteredUsers[0];\r\n // } else {\r\n // this.focusedGroup = null;\r\n // this.focusedUser = null;\r\n // }\r\n // if ((this.focusedUser && !this.focusedUser.unselectable) || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // } else {\r\n // this.selectedUser = null;\r\n // }\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.focusedUser = null;\r\n // this.focusedGroup = null;\r\n // }\r\n\r\n // this.onChange(v);\r\n });\r\n\r\n // if (this.user !== null) {\r\n // let selectedUser = null;\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.user.id) {\r\n // selectedUser = u;\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n //\r\n // if (selectedUser) {\r\n // this.inputControl.setValue(selectedUser.fullName);\r\n // this.selectedUser = selectedUser;\r\n // } else {\r\n // this.newUsername = this.user.fullName;\r\n // this.inputControl.setValue(this.user.fullName);\r\n // this.selectedUser = { id: null, fullName: this.newUsername };\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.inputControl.setValue('');\r\n // }\r\n // this.initialUser = this.selectedUser;\r\n // }\r\n }\r\n\r\n inputFocusChanged(focused: boolean): void {\r\n if (focused) {\r\n this.optionsVisible = true;\r\n }\r\n }\r\n // setTimeout(() => {\r\n // if (!focused && this.skipBlur) {\r\n // this.skipBlur = false;\r\n // return;\r\n // }\r\n // if (!this.typingStarted && focused) {\r\n // this.inputControl.setValue(this.inputControl.value);\r\n // this.typingStarted = true;\r\n // }\r\n // if (!this.messageShown) {\r\n // this.inputFocused = focused;\r\n // if (!focused) {\r\n // this.emitSelection('focus lost');\r\n // }\r\n // }\r\n // }, 250);\r\n // }\r\n\r\n get hasCheckboxSelected(): boolean {\r\n return this.checkboxSelection.size > 0;\r\n }\r\n\r\n optionChecked(u: any): boolean {\r\n return this.checkboxSelection.has(u[this.idAttribute]);\r\n }\r\n\r\n select(u: any): void {\r\n if (this.hasCheckboxSelected || u.unselectable) {\r\n return;\r\n }\r\n if (!u.unselectable) {\r\n this.selectedOption = u;\r\n this.initialOption = u;\r\n this.toggleDropdown();\r\n }\r\n }\r\n\r\n toggleOptionCheckboxed(u: any): void {\r\n if (!u.unselectable) {\r\n this.checkboxSelection.has(u[this.idAttribute]) ?\r\n this.checkboxSelection.delete(u[this.idAttribute]) : this.checkboxSelection.add(u[this.idAttribute]);\r\n }\r\n this.input?.focus();\r\n }\r\n\r\n\r\n // get optionsVisible(): boolean {\r\n // return this.inputFocused && this.typingStarted;\r\n // }\r\n\r\n keyPressed(keyEvent: KeyboardEvent): void {\r\n this.lastEmittedId = -1;\r\n this.optionsVisible = true;\r\n // this.typingStarted = keyEvent.key !== 'Tab' && keyEvent.key !== 'Escape';\r\n if (keyEvent.key === 'Escape') {\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.optionsVisible = false;\r\n return;\r\n }\r\n if (keyEvent.key === 'Enter' && this.hasCheckboxSelected) {\r\n if (this.focusedOption && !this.focusedOption.unselectable) {\r\n this.toggleOptionCheckboxed(this.focusedOption);\r\n }\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n return;\r\n }\r\n // if (keyEvent.key === 'Enter' && this.filteredGroupsAndUsers.length === 0 && this.focusedUser === null && !this.alreadyAdded) {\r\n // this.newUser();\r\n // keyEvent.stopPropagation();\r\n // keyEvent.preventDefault();\r\n // return;\r\n // }\r\n if (keyEvent.key === 'Enter') {\r\n this.selectedOption = this.focusedOption;\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.toggleDropdown();\r\n return;\r\n }\r\n if ((keyEvent.key === 'ArrowDown' || keyEvent.key === 'ArrowUp') && !this.focusedOption) {\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n // if (!this.focusedUser.unselectable || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // }\r\n this.selectedOption = this.focusedOption;\r\n return;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowDown' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx === this.filteredMaxItemsShown - 1) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n if (idx < this.filteredOptions.length - 1) {\r\n this.focusedOption = this.filteredOptions[idx + 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowUp' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx > 0) {\r\n this.focusedOption = this.filteredOptions[idx - 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleDropdown() {\r\n this.optionsVisible = false;\r\n this.emitSelection('toggle');\r\n }\r\n\r\n emitSelection(src?: string): void {\r\n this.initialOption = this.selectedOption;\r\n\r\n if (this.selectedOption) {\r\n const checkId = this.selectedOption.id === null ? 0 : this.selectedOption.id;\r\n if (this.lastEmittedId !== checkId) {\r\n this.lastEmittedId = checkId;\r\n this.onChange(this.options.find(o => o[this.idAttribute] === this.selectedOption[this.idAttribute]));\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute]);\r\n }\r\n } else {\r\n // this.control.setValue(null);\r\n this.onChange(null);\r\n this.inputControl.setValue('', {emitEvent: false});\r\n }\r\n\r\n\r\n\r\n // if (this.selectedOption) {\r\n // const checkId = this.selectedUser.id === null ? 0 : this.selectedUser.id;\r\n // if (this.lastEmittedId !== checkId) {\r\n // this.inputControl.setValue(this.selectedUser.fullName, {emitEvent: false});\r\n // if (this.selectedUser.id) {\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.selectedUser.id) {\r\n // this.control.setValue(u);\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n // } else {\r\n // this.control.setValue(this.selectedUser);\r\n // }\r\n // this.lastEmittedId = checkId;\r\n // }\r\n // } else {\r\n // if (this.lastEmittedId !== null || this.lastEmittedId === -1/* || this.selectedUser?.unselectable*/) {\r\n // this.control?.setValue(null);\r\n // this.inputControl.setValue('', {emitEvent: false});\r\n // this.lastEmittedId = null;\r\n // }\r\n // }\r\n // this.typingStarted = false;\r\n }\r\n\r\n cancelCheckboxSelection(): void {\r\n this.checkboxSelection.clear();\r\n // this.skipBlur = true;\r\n // this.input?.focus();\r\n }\r\n\r\n useCheckboxSelection(): void {\r\n // this.newUsername = '';\r\n // const users = [];\r\n // this.groupsAndUsers.forEach(g => g.users.forEach(u => {\r\n // if (!users.includes(u) && this.checkboxSelection.has(u.id)) {\r\n // users.push(u);\r\n // }\r\n // }));\r\n const outputOptions = this.options.filter(o => this.checkboxSelection.has(o[this.idAttribute]) && !this.optionDisabled(o));\r\n if (outputOptions.length > 0) {\r\n this.selectedOption = outputOptions[0];\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute], {emitEvent: false});\r\n this.onChange(outputOptions);\r\n this.toggleDropdown();\r\n // this.control?.setValue(outputOptions);\r\n // this.typingStarted = false;\r\n // this.skipBlur = true;\r\n }\r\n this.checkboxSelection.clear();\r\n }\r\n\r\n newOption() {\r\n\r\n }\r\n\r\n loadMore(visible: boolean) {\r\n if (visible) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n }\r\n\r\n public focus() {\r\n this.input?.focus();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n if (obj.id) {\r\n this.filteredOptions = this.searchableOptions.filter(so => so.id === obj.id);\r\n } else {\r\n this.filteredOptions = this.filterOptions(obj[this.displayAttribute].toLowerCase());\r\n }\r\n if (this.filteredOptions.length === 1) {\r\n this.selectedOption = this.filteredOptions[0];\r\n this.focusedOption = this.filteredOptions[0];\r\n }\r\n this.inputControl.setValue(obj[this.displayAttribute]);\r\n } else {\r\n this.filteredOptions = this.filterOptions('');\r\n }\r\n }\r\n}\r\n","<div class=\"wrapper\" #wrapper>\r\n <div *ngIf=\"optionsVisible\" (click)=\"toggleDropdown()\" class=\"overlay\"></div>\r\n <ui-input [formControl]=\"inputControl\" #input #trigger=\"cdkOverlayOrigin\" cdkOverlayOrigin (focusChanged)=\"inputFocusChanged($event)\" (keyPressed)=\"keyPressed($event)\" [placeholder]=\"placeholder\" [useInputMessages]=\"'never'\">\r\n <div slot=\"prefix\"><ng-content select=\"[slot=acprefix]\"></ng-content></div>\r\n </ui-input>\r\n\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"optionsVisible\">\r\n <div class=\"options-box\" style=\"display: flex; flex-direction: column\" [ngStyle]=\"{width: wrapper.offsetWidth + 'px'}\">\r\n <div class=\"options\" #options>\r\n\r\n <ng-container *ngFor=\"let option of filteredOptions; index as i\">\r\n <div *ngIf=\"i < filteredMaxItemsShown\" class=\"option-container\" [ngClass]=\"{selected: focusedOption === option}\">\r\n <mat-checkbox [checked]=\"optionChecked(option) || option.unselectable\" [disabled]=\"option.unselectable\" (change)=\"toggleOptionCheckboxed(option)\">\r\n <div class=\"option-container-inner\" (click)=\"select(option)\">\r\n <div class=\"option-option\" uiForceVisibility [visibilityWithin]=\"options\" [visibilityPadding]=\"4\" *ngIf=\"focusedOption === option\" [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{optionFormatter(option)}}\r\n </div>\r\n <div class=\"option-option\" *ngIf=\"focusedOption !== option\" [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{optionFormatter(option)}}\r\n </div>\r\n <mat-icon *ngIf=\"!hasCheckboxSelected && !option.unselectable\">north_west</mat-icon>\r\n </div>\r\n </mat-checkbox>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"filteredOptions.length >= filteredMaxItemsShown\" class=\"option-container\" uiForceVisibility [visibilityWithin]=\"options\" [visibilityEmitChange]=\"true\" (visibilityChanged)=\"loadMore($event)\">\r\n &nbsp;\r\n </div>\r\n\r\n\r\n <div *ngIf=\"filteredOptions.length === 0 && !focusedOption\" class=\"new-user\">\r\n <ng-container *ngIf=\"alreadyAdded\">\r\n <div style=\"text-align: center\">Uživatel {{inputControl.value}} už je mezi dlužníky</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!alreadyAdded\">\r\n <div style=\"text-align: center; padding: 1em 0\">Uživatele <strong>{{inputControl.value}}</strong> neznáme</div>\r\n <ui-button *ngIf=\"allowNew\" style=\"margin-top: 6px;\" [size]=\"'small'\" [label]=\"'Přidat jej?'\" (click)=\"newOption()\"></ui-button>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"filteredOptions.length === 0 && focusedOption\" class=\"new-user\">\r\n <div style=\"text-align: center\">Neznámý uživatel {{inputControl.value}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"hasCheckboxSelected && filteredOptions.length > 0\" class=\"checkbox-buttons\">\r\n <ui-button [size]=\"'small'\" [kind]=\"'basic'\" [label]=\"'Zrušit výběr'\" (click)=\"cancelCheckboxSelection()\"></ui-button>\r\n <ui-button [size]=\"'small'\" [label]=\"'Použít výběr (' + checkboxSelection.size + ')'\" (click)=\"useCheckboxSelection()\"></ui-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n","import { Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'ui-action-button',\r\n templateUrl: './action-button.component.html',\r\n styleUrls: ['../button/button.component.scss', './action-button.component.scss'],\r\n standalone: false\r\n})\r\nexport class ActionButtonComponent extends ButtonComponent implements OnInit {\r\n\r\n @Input() withPrimary = false;\r\n @Input() overlayAlignment: 'left' | 'right' = 'left';\r\n @Input() hasBackdrop = false;\r\n @Input() triggerTpl;\r\n @Input() autoClose = true;\r\n\r\n @Output() primaryClick = new EventEmitter<void>();\r\n @Output() overlayToggled = new EventEmitter<boolean>();\r\n\r\n @ViewChild('trigger1', { static: false }) trigger1;\r\n\r\n deferredRender = false;\r\n\r\n iconHover = false;\r\n\r\n @HostBinding('class')\r\n get class(): string {\r\n return super.class + (this.withPrimary ? ' with-primary' : '');\r\n }\r\n\r\n private rightPositions: ConnectedPosition[] = [\r\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},\r\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'}\r\n ];\r\n\r\n private leftPositions: ConnectedPosition[] = [\r\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\r\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'}\r\n ];\r\n\r\n openOverlay = false;\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (this.openOverlay) {\r\n this.toggleOverlay(false);\r\n }\r\n }\r\n\r\n\r\n // constructor() {\r\n // super();\r\n // }\r\n\r\n get positions() {\r\n switch (this.overlayAlignment) {\r\n case 'left': return this.leftPositions;\r\n default: return this.rightPositions;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.deferredRender = true;\r\n });\r\n }\r\n\r\n toggleOverlay(status) {\r\n if (status || this.autoClose) {\r\n this.openOverlay = status;\r\n this.overlayToggled.emit(status);\r\n }\r\n }\r\n\r\n closeOverlay() {\r\n this.openOverlay = false;\r\n }\r\n\r\n togglePrimaryOverlay(status, $event) {\r\n this.toggleOverlay(status);\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n }\r\n}\r\n","<ng-container *ngIf=\"triggerTpl\">\r\n <div style=\"display: flex;\" (click)=\"toggleOverlay(true)\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTpl\"></ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy, 'icon-hover': iconHover}\" [class]=\"class\" (click)=\"primaryClick.emit()\">\r\n <div class=\"hover-container\"></div>\r\n {{label}}\r\n <div class=\"mat-icon-container\" (mouseenter)=\"iconHover = true\" (mouseleave)=\"iconHover = false\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"togglePrimaryOverlay(true, $event)\">\r\n ▼\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && !withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"toggleOverlay(true)\">\r\n {{label}}\r\n <div class=\"mat-icon-container\">\r\n ▼\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-template *ngIf=\"deferredRender\" cdkConnectedOverlay [cdkConnectedOverlayPositions]=\"positions\" [cdkConnectedOverlayOrigin]=\"trigger1\" [cdkConnectedOverlayOpen]=\"openOverlay\" [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\" [cdkConnectedOverlayDisableClose]=\"!autoClose\" (overlayOutsideClick)=\"toggleOverlay(false)\">\r\n <ng-content></ng-content>\r\n</ng-template>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n standalone: false\r\n})\r\nexport class RadioComponent { // extends UiSimpleComponent {\r\n\r\n @Input() value;\r\n @Input() label;\r\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary'\r\n\r\n // constructor(@Optional() @Self() public ngControl: NgControl) {\r\n // super(ngControl);\r\n // }\r\n}\r\n","<mat-radio-button [value]=\"value\" [color]=\"color\">\r\n {{label}}\r\n</mat-radio-button>\r\n","import { Component, Input, OnChanges, Optional, Self, SimpleChanges } from '@angular/core';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { UntypedFormControl, NgControl, Validators } from '@angular/forms';\r\n\r\n// export interface CheckboxGroupOption {\r\n// value: any,\r\n// label: string,\r\n// hint?: string\r\n// }\r\n\r\n@Component({\r\n selector: 'ui-checkbox-group',\r\n templateUrl: './checkbox-group.component.html',\r\n styleUrls: ['./checkbox-group.component.scss'],\r\n standalone: false\r\n})\r\nexport class CheckboxGroupComponent extends UiSimpleComponent implements /*OnInit, */OnChanges { // }, Validator {\r\n\r\n cbxs: any;\r\n\r\n private valueMode: 'array' | 'object';\r\n\r\n @Input() valueAttribute: string | undefined;\r\n @Input() displayAttribute = 'label';\r\n @Input() hintAttribute = 'hint';\r\n\r\n @Input() options: any[];\r\n @Input() optionEnabled = (option: any) => true;\r\n\r\n constructor(@Optional() @Self() public control: NgControl) {\r\n super(control);\r\n }\r\n\r\n // ngOnInit(): void {\r\n // super.ngOnInit();\r\n // }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes.options) {\r\n this.cbxs = [];\r\n this.valueMode = Array.isArray(this.control.value) ? 'array' : 'object';\r\n Object.keys(changes.options.currentValue).forEach(k => {\r\n const v = changes.options.currentValue[k];\r\n const ct = new UntypedFormControl(this.valueMode === 'array' ? this.control.value.includes(v) : this.control.value[k] === true);\r\n if (!this.optionEnabled(v)) {\r\n ct.disable();\r\n }\r\n ct.valueChanges.subscribe(() => {\r\n const value = this.valueMode === 'array' ? [] : {};\r\n let hasChecked = false;\r\n this.cbxs.forEach((cbx) => {\r\n const checked = cbx.control.value;\r\n hasChecked = hasChecked || checked;\r\n if (this.valueMode === 'array') {\r\n if (checked) {\r\n (value as any[]).push(cbx.value.value);\r\n }\r\n } else {\r\n value[cbx.key] = checked;\r\n }\r\n });\r\n this.componentFormControl.markAsTouched();\r\n this.componentFormControl.setValue(value);\r\n if (this.componentFormControl.hasValidator(Validators.required) && !hasChecked) {\r\n this.componentFormControl.setErrors({cbGroupRequired: true});\r\n } else {\r\n this.componentFormControl.setErrors(null);\r\n }\r\n });\r\n this.cbxs.push({\r\n control: ct,\r\n value: this.valueAttribute ? v[this.valueAttribute] : v,\r\n label: this.displayAttribute ? v[this.displayAttribute] : v,\r\n hint: this.hintAttribute ? v[this.hintAttribute] : undefined,\r\n key: this.valueMode === 'object' ? k : undefined\r\n })\r\n });\r\n }\r\n }\r\n\r\n // registerOnValidatorChange(fn: () => void): void {\r\n // }\r\n //\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // console.log('validate');\r\n // return undefined;\r\n // }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n","import { Component, Input, OnChanges, Optional, Self, SimpleChanges } from '@angular/core';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ui-radio-group',\r\n templateUrl: './radio-group.component.html',\r\n styleUrls: ['./radio-group.component.scss'],\r\n standalone: false\r\n})\r\nexport class RadioGroupComponent extends UiSimpleComponent implements /*OnInit, */OnChanges {\r\n\r\n cbxs: any;\r\n id = Math.round(Math.random() * 999999);\r\n\r\n @Input() options: any[] = [];\r\n @Input() displayAttribute = 'name';\r\n @Input() hintAttribute = 'hint';\r\n @Input() valueAttribute: any;\r\n\r\n @Input() groupName = 'radio-' + this.id;\r\n\r\n @Input() optionEnabled = (option: any) => true;\r\n\r\n constructor(@Optional() @Self() public control: NgControl) {\r\n super(control);\r\n }\r\n\r\n // ngOnInit(): void {\r\n // super.ngOnInit();\r\n // }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes['options']) {\r\n this.cbxs = [];\r\n changes['options'].currentValue.forEach((cv: any) => {\r\n this.cbxs.push({\r\n value: this.valueAttribute ? cv[this.valueAttribute] : cv,\r\n label: cv[this.displayAttribute],\r\n hint: cv[this.hintAttribute]\r\n })\r\n });\r\n }\r\n }\r\n\r\n // writeValue(obj: any): void {\r\n // if (this.componentFormControl) {\r\n // this.componentFormControl.setValue(obj);\r\n // }\r\n // }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-radio-group [formControl]=\"componentFormControl\" [name]=\"groupName\" [class]=\"size\">\r\n\r\n <ng-container *ngFor=\"let cbx of cbxs\">\r\n <mat-radio-button [value]=\"cbx.value\">{{ cbx.label }}</mat-radio-button>\r\n <div *ngIf=\"cbx.hint\" class=\"hint\">{{ cbx.hint }}</div>\r\n </ng-container>\r\n\r\n </mat-radio-group>\r\n\r\n</ui-simple-layout>\r\n","import { AfterViewInit, Component, ElementRef, HostListener, Input, Optional, Self } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport EditorJS, { ToolConstructable } from '@editorjs/editorjs';\r\nimport List from '@editorjs/list';\r\nimport Header from '@editorjs/header';\r\n\r\n@Component({\r\n selector: 'ui-editor',\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', './editor.component.scss'],\r\n standalone: false\r\n})\r\nexport class EditorComponent extends UiSimpleComponent implements AfterViewInit {\r\n\r\n @Input() rows = 5;\r\n\r\n @Input() autoResize = false;\r\n\r\n focused = false;\r\n\r\n editor: EditorJS;\r\n\r\n data: any;\r\n\r\n editorId = `editorJs${Math.round(Math.random() * 10000000)}`;\r\n\r\n @HostListener('document:click', ['$event'])\r\n clickout(event) {\r\n const cr = this.el.nativeElement.getBoundingClientRect();\r\n const outside = event.x < cr.x || event.x > cr.x + cr.width || event.y < cr.y || event.y > cr.y + cr.height;\r\n this.focused = !outside;\r\n if (!this.focused) {\r\n this.componentFormControl.markAsTouched();\r\n }\r\n }\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl/*, private _ngZone: NgZone, private cdr: ChangeDetectorRef*/,\r\n private el:ElementRef) {\r\n super(ngControl);\r\n }\r\n\r\n focus(): void {\r\n this.focused = true;\r\n this.editor.focus();\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editor = new EditorJS({\r\n holder: this.editorId,\r\n inlineToolbar: ['bold', 'italic'],\r\n tools: {\r\n header: {\r\n class: Header as any,\r\n inlineToolbar: true,\r\n config: {\r\n levels: [ 1, 2 ],\r\n defaultLevel: 1\r\n }\r\n },\r\n list: {\r\n class: List as any,\r\n inlineToolbar: true,\r\n config: {\r\n defaultStyle: 'unordered'\r\n },\r\n },\r\n },\r\n i18n: {\r\n messages: {\r\n ui: {\r\n \"inlineToolbar\": {\r\n \"converter\": {\r\n \"Convert to\": \"Odstavec změnit na\"\r\n }\r\n }\r\n },\r\n toolNames: {\r\n \"Heading\": \"Nadpis\",\r\n \"List\": \"Seznam\"\r\n }\r\n }\r\n },\r\n minHeight: 90,\r\n placeholder: 'Něco napiš...',\r\n onChange: () => { this.focused = true; this.editor.save().then((r) => this.onChange(r)) },\r\n onReady: () => {\r\n const editorElement = document.getElementById(this.editorId) // your \"holder\" ID\r\n editorElement.addEventListener('focusin', () => {\r\n this.focused = true;\r\n });\r\n },\r\n data: this.data\r\n });\r\n }\r\n\r\n inputLength(): any {\r\n let len = 0;\r\n if (this.componentFormControl && this.componentFormControl.value && this.componentFormControl.value.blocks) {\r\n this.componentFormControl.value.blocks.forEach(b => {\r\n if (b.type === 'paragraph' || b.type === 'header') {\r\n len += b.data.text.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&nbsp;/, '').length;\r\n }\r\n if (b.type === 'list') {\r\n b.data.items.forEach(i => {\r\n len += i.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&nbsp;/, '').length;\r\n })\r\n }\r\n })\r\n }\r\n return len;\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.data = obj;\r\n }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"editor-wrapper\" [ngClass]=\"{focus: focused}\">\r\n <ng-container *ngIf=\"componentFormControl\">\r\n\r\n <p [id]=editorId></p>\r\n\r\n </ng-container>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Host, HostBinding,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, ControlContainer, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\ntype PrefixSuffix = { icon: string, tooltip?: string };\r\n@Component({\r\n selector: 'ui-input-autocomplete',\r\n templateUrl: './input-autocomplete.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', '../input/input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: InputAutocompleteComponent\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: InputAutocompleteComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputAutocompleteComponent extends UiSimpleComponent\r\n implements OnInit { // }, ControlValueAccessor { // }, ControlValueAccessor, Validator { // }, AfterViewInit {\r\n\r\n // UiSimpleComponent = InputComponent;\r\n\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint: string | undefined;\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n // @Input() formControlName;\r\n\r\n // componentFormControl: UntypedFormControl;\r\n //\r\n // ngControl: NgControl;\r\n //\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() formControlName;\r\n //\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint?: string;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n\r\n @Input() prefixIcon: PrefixSuffix;\r\n @Input() suffixIcon: PrefixSuffix;\r\n @Input() type: 'text' | 'number' | 'password' = 'text';\r\n @Input() clearButton = false;\r\n @Input() activeIcons = true;\r\n @Input() forceHasPrefix = false;\r\n @Input() forceHasSuffix = false;\r\n @Input() options: any[] = [];\r\n\r\n @HostBinding('class')\r\n get textAlignClass() {\r\n return `text-align-${this.textAlign}`;\r\n }\r\n\r\n @Input() textAlign: 'left' | 'center' | 'right' = 'left';\r\n\r\n @ViewChild('input') input: ElementRef | undefined;\r\n @ViewChild('prefix', { static: true }) prefix: ElementRef | undefined;\r\n @ViewChild('suffix', { static: true }) suffix: ElementRef | undefined;\r\n\r\n @Output() focusChanged = new EventEmitter<boolean>();\r\n @Output() keyPressed = new EventEmitter<KeyboardEvent>();\r\n\r\n get hasPrefix() {\r\n return (this.prefixIcon && this.prefixIcon.icon !== '') || this.prefix?.nativeElement?.innerText !== '' || this.forceHasPrefix;\r\n }\r\n\r\n get hasSuffix() {\r\n return (this.suffixIcon && this.suffixIcon.icon !== '') || this.suffix?.nativeElement?.innerText !== '' || this.forceHasSuffix;\r\n }\r\n\r\n filteredOptions: any[] = [];\r\n\r\n // control = new FormControl();\r\n\r\n required = false;\r\n hasFocus = false;\r\n\r\n value: string;\r\n\r\n // control;\r\n\r\n\r\n // onTouched = () => {};\r\n // onChange = (value) => {};\r\n\r\n // get showInvalid(): boolean {\r\n // return true;\r\n // // return this.control.touched && !!this.control.errors;\r\n // }\r\n\r\n // get validationMessage(): string {\r\n // // console.log(this.control?.errors);\r\n // let e: any = {code: 'Neznámá chyba'};\r\n // const errors = this.control?.errors || {};\r\n // Object.keys(errors).find(a => {\r\n // e = {code: a, data: errors[a]};\r\n // return true;\r\n // });\r\n // switch (e.code) {\r\n // case 'required':\r\n // return this.translateService.instant('ui.controls.validation.required');\r\n // case 'email':\r\n // return this.translateService.instant('ui.controls.validation.email');\r\n // case 'matDatepickerParse':\r\n // return this.translateService.instant('ui.controls.validation.matDatepickerParse');\r\n // case 'maxlength':\r\n // return this.translateService.instant('ui.controls.validation.maxlength', e.data);\r\n // case 'minlength':\r\n // return this.translateService.instant('ui.controls.validation.minlength', e.data);\r\n // case 'positive':\r\n // return this.translateService.instant(isNaN(Number(e.data)) ? 'ui.controls.validation.invalidNumber' : 'ui.controls.validation.positive');\r\n // case 'custom':\r\n // return this.translateService.instant(e.data);\r\n // default:\r\n // return this.translateService.instant(e.code);\r\n // }\r\n // }\r\n\r\n get maxLenRequired(): boolean {\r\n return true;\r\n // return this.control.value && (this.control.value.length > (this.validators?.maxLength || 0));\r\n }\r\n\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n /*\r\n bud pres @Optional() @Self() public control: NgControl a control.valueAccessor = this => ztratime ale custom validaci\r\n anebo pres DI jako providers a pak this.control = viz ngOnInit - pokud jej vubec potrebujem\r\n\r\n */\r\n // private injector: Injector,\r\n // @Optional() @Self() public control: NgControl,\r\n // @Self() private controlDirective: NgControl,\r\n ) {\r\n super(null, controlContainer);\r\n\r\n // this.componentFormControl = new FormControl();\r\n // super();\r\n // super(undefined, /*ngControl*/ translateService);\r\n // super(control);\r\n // console.log(control);\r\n // if (control) {\r\n // control.valueAccessor = this;\r\n // }\r\n\r\n // if (ngControl != null) {\r\n // // Setting the value accessor directly (instead of using\r\n // // the providers) to avoid running into a circular import.\r\n // ngControl.valueAccessor = this;\r\n // }\r\n }\r\n\r\n get showClearButton(): boolean {\r\n return this.clearButton && this.componentFormControl?.value !== '';\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n this.filteredOptions = this.options;\r\n this.componentFormControl?.valueChanges.subscribe((v) => {\r\n const vl = v.toLowerCase();\r\n this.filteredOptions = this.options.filter(o => vl === '' || o.toLowerCase().includes(vl))\r\n })\r\n // console.log('probiha vubec oninit?');\r\n // if (this.ngControl) {\r\n // console.log('from ngControl....??');\r\n // if (this.formControl) {\r\n // this.componentFormControl = this.formControl;\r\n // } else {\r\n // this.componentFormControl = this.ngControl.control as UntypedFormControl;\r\n // }\r\n // setTimeout(() => {\r\n // this.applyValidators();\r\n // });\r\n // } else {\r\n // const control = this.formControlName ?\r\n // (this.controlContainer as FormGroupDirective).control.get(this.formControlName) : this.formControl;\r\n // this.componentFormControl.setValidators(control.validator);\r\n // this.componentFormControl.valueChanges.subscribe(v => console.log('onitin sub', v));\r\n // control._componentFormControl = this.componentFormControl;\r\n // if (control._markAsTouched === undefined) {\r\n // // control._componentFormControl = this.componentFormControl;\r\n // console.log('overriding markAsTouched for', this.formControlName);\r\n // control._markAsTouched = control.markAsTouched;\r\n // control.markAsTouched = ({onlySelf}: { onlySelf?: boolean } = {}): void => {\r\n // console.log('marking as touched', this.componentFormControl.value, control.value, this.xxx.value, control._componentFormControl.value);\r\n // control._markAsTouched({onlySelf});\r\n // setTimeout(() => control._componentFormControl.markAsTouched(), 1000);\r\n // }\r\n // }\r\n // }\r\n }\r\n\r\n clearValue(): void {\r\n this.componentFormControl?.setValue('');\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n focus(): void {\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n onFocus(focus: boolean): void {\r\n setTimeout(() => {\r\n this.hasFocus = focus;\r\n this.focusChanged.emit(focus);\r\n });\r\n }\r\n\r\n onKeypressed($event: any): void {\r\n this.keyPressed.emit($event);\r\n }\r\n\r\n // registerOnChange(onChange: any): void {\r\n // this.onChange = onChange;\r\n // }\r\n //\r\n // registerOnTouched(onTouched: any): void {\r\n // this.onTouched = onTouched;\r\n // }\r\n\r\n // registerOnValidatorChange(fn: () => void): void {\r\n // }\r\n\r\n // setDisabledState(isDisabled: boolean): void {\r\n // // isDisabled ? this.control.disable() : this.control.enable();\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // // this.control = control;\r\n // // console.log(control, control.value, control.errors);\r\n // if (this.value === 'error') {\r\n // return { customError: 'muj error'}\r\n // } else {\r\n // return null;\r\n // }\r\n // // console.log('custom validate');\r\n // // return null;\r\n // }\r\n //\r\n // writeValue(obj: any): void {\r\n // console.log('writevalue: ', obj);\r\n // this.componentFormControl.setValue(obj);\r\n // // this.value = obj;\r\n // // this.control.setValue(obj);\r\n // }\r\n //\r\n // registerOnChange(fn: any): void {\r\n // }\r\n //\r\n // registerOnTouched(fn: any): void {\r\n // }\r\n //\r\n // setDisabledState(isDisabled: boolean): void {\r\n // }\r\n\r\n // modelChange($event: any) {\r\n // console.log($event);\r\n // this.onTouched();\r\n // this.onChange($event)\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // console.log(this.label, 'validate');\r\n // return this.componentFormControl.errors;\r\n // // return undefined;\r\n // }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.parentFormControl) {\r\n return this.parentFormControl._componentFormControl.errors;\r\n }\r\n // console.log('validate', this.componentFormControl.errors);\r\n // // this.componentFormControl.setErrors( { custom: 'xxx' });\r\n // this.componentFormControl.setErrors( this.componentFormControl.errors);\r\n // console.log('validate 2', this.componentFormControl.errors);\r\n // return this.componentFormControl.errors;\r\n // console.log(this.componentFormControl.errors, control.errors, this.parentFormControl.errors, this);\r\n // return this.componentFormControl.errors;\r\n }\r\n}\r\n\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [ngClass]=\"{'has-suffix': hasSuffix, 'has-prefix': hasPrefix, 'has-clear-icon': showClearButton, 'active-icons': activeIcons, 'has-focus': hasFocus}\">\r\n <input #input matInput [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" [matAutocomplete]=\"auto\"/>\r\n\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-autocomplete>\r\n <div #prefix><ng-content select=\"[slot=prefix]\"></ng-content></div>\r\n <div #suffix><ng-content select=\"[slot=suffix]\"></ng-content></div>\r\n <mat-icon *ngIf=\"prefixIcon\" class=\"prefix-icon\" [matTooltip]=\"prefixIcon.tooltip\">{{ prefixIcon.icon }}</mat-icon>\r\n <mat-icon *ngIf=\"suffixIcon\" class=\"suffix-icon\" [matTooltip]=\"suffixIcon.tooltip\">{{ suffixIcon.icon }}</mat-icon>\r\n <ui-action-icon [size]=\"'small'\" [color]=\"'warn'\" *ngIf=\"showClearButton\" (click)=\"clearValue()\" [matIcon]=\"'clear'\" class=\"clear-icon\"></ui-action-icon>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n Host,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional, SimpleChanges,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { UiBaseComponent } from '../layouts/base/ui-base.component';\r\nimport { InputComponent } from '../input/input.component';\r\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'ui-auto-complete',\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: AutoCompleteComponent\r\n }],\r\n standalone: false\r\n})\r\nexport class AutoCompleteComponent extends UiBaseComponent implements OnInit, ControlValueAccessor, OnChanges {\r\n\r\n private SHOWN_USERS_DELTA = 10;\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n // @Optional() @Self() public ngControl: NgControl,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @Input() templates: { optionTemplate?: any, notFound?: any, fileTemplate?: any, customContentTemplate?: any } = {}\r\n\r\n @Input() options?: any[];\r\n @Input() multiple = true;\r\n @Input() allowNew = false;\r\n @Input() displayAttribute = 'name';\r\n @Input() idAttribute = 'id';\r\n @Input() panelClass = '';\r\n @Input() clearButton = false;\r\n @Input() removeDiacritics = false;\r\n\r\n // value?: any;\r\n searchableOptions?: any[];\r\n filteredOptions: any[] = [];\r\n filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n\r\n // skipBlur = false;\r\n // typingStarted = false;\r\n messageShown = false;\r\n initialOption?: any;\r\n selectedOption?: any;\r\n lastEmittedId?: any;\r\n focusedOption?: any;\r\n alreadyAdded = false;\r\n optionsVisible = false;\r\n\r\n @ViewChild('input') input?: InputComponent;\r\n @ViewChild('trigger') optionsTrigger: CdkOverlayOrigin;\r\n\r\n inputFocused = false;\r\n inputControl = new UntypedFormControl('');\r\n checkboxSelection: Set<any> = new Set<any>();\r\n\r\n onChange: (value) => void;\r\n\r\n @Input() optionDisabled: (any) => boolean = () => false;\r\n @Input() optionFormatter: (any) => string = (o) => o[this.displayAttribute];\r\n\r\n protected buildSearchableOptions() {\r\n return this.options.map(o => ({\r\n ...o,\r\n unselectable: this.optionDisabled(o),\r\n searchString: this.removeDiacritics\r\n ? `${this.optionFormatter(o)}`.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase()\r\n : `${this.optionFormatter(o)}`.toLowerCase()\r\n }));\r\n }\r\n\r\n protected filterOptions(text: string) {\r\n this.filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n return this.searchableOptions.filter(u => u.searchString.includes(text));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options']) {\r\n this.searchableOptions = this.buildSearchableOptions();\r\n this.inputControl.setValue('');\r\n }\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n super.ngOnInit();\r\n\r\n // if (this.formControlName && this.controlContainer.control) {\r\n // this.control = this.controlContainer.control.get(this.formControlName) as FormControl;\r\n // }\r\n //\r\n // this.user = this.control.value;\r\n\r\n // this.value = this.control.value;\r\n\r\n // this.searchableOptions = this.buildSearchableOptions();\r\n\r\n // if (this.control.disabled) {\r\n // this.inputControl.disable();\r\n // }\r\n\r\n // this.control.statusChanges.subscribe(v => {\r\n // if (v === 'DISABLED') {\r\n // this.inputControl.disable();\r\n // }\r\n // if (v === 'VALID') {\r\n // this.inputControl.enable();\r\n // }\r\n // });\r\n\r\n\r\n\r\n this.inputControl.valueChanges.pipe(debounceTime(200)).subscribe(v => {\r\n const lcv = this.removeDiacritics\r\n ? v.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase()\r\n : v.toLowerCase()\r\n\r\n this.filteredOptions = this.filterOptions(lcv);\r\n\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n } else {\r\n this.focusedOption = undefined;\r\n }\r\n\r\n if (v === '') {\r\n this.focusedOption = undefined;\r\n this.selectedOption = undefined;\r\n }\r\n\r\n // if (v !== '') {\r\n // if (this.newUsername === v) {\r\n // this.selectedUser = {id: null, fullName: v};\r\n // this.initialUser = this.selectedUser;\r\n // } else {\r\n // if (this.filteredGroupsAndUsers.length > 0) {\r\n // this.focusedGroup = this.filteredGroupsAndUsers[0];\r\n // this.focusedUser = this.focusedGroup.filteredUsers[0];\r\n // } else {\r\n // this.focusedGroup = null;\r\n // this.focusedUser = null;\r\n // }\r\n // if ((this.focusedUser && !this.focusedUser.unselectable) || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // } else {\r\n // this.selectedUser = null;\r\n // }\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.focusedUser = null;\r\n // this.focusedGroup = null;\r\n // }\r\n\r\n // this.onChange(v);\r\n });\r\n\r\n // if (this.user !== null) {\r\n // let selectedUser = null;\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.user.id) {\r\n // selectedUser = u;\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n //\r\n // if (selectedUser) {\r\n // this.inputControl.setValue(selectedUser.fullName);\r\n // this.selectedUser = selectedUser;\r\n // } else {\r\n // this.newUsername = this.user.fullName;\r\n // this.inputControl.setValue(this.user.fullName);\r\n // this.selectedUser = { id: null, fullName: this.newUsername };\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.inputControl.setValue('');\r\n // }\r\n // this.initialUser = this.selectedUser;\r\n // }\r\n }\r\n\r\n inputFocusChanged(focused: boolean): void {\r\n if (focused) {\r\n this.optionsVisible = true;\r\n }\r\n }\r\n // setTimeout(() => {\r\n // if (!focused && this.skipBlur) {\r\n // this.skipBlur = false;\r\n // return;\r\n // }\r\n // if (!this.typingStarted && focused) {\r\n // this.inputControl.setValue(this.inputControl.value);\r\n // this.typingStarted = true;\r\n // }\r\n // if (!this.messageShown) {\r\n // this.inputFocused = focused;\r\n // if (!focused) {\r\n // this.emitSelection('focus lost');\r\n // }\r\n // }\r\n // }, 250);\r\n // }\r\n\r\n get hasCheckboxSelected(): boolean {\r\n return this.checkboxSelection.size > 0;\r\n }\r\n\r\n optionChecked(u: any): boolean {\r\n return this.checkboxSelection.has(u[this.idAttribute]);\r\n }\r\n\r\n select(u: any): void {\r\n if (this.hasCheckboxSelected || u.unselectable) {\r\n return;\r\n }\r\n if (!u.unselectable) {\r\n this.selectedOption = u;\r\n this.initialOption = u;\r\n this.toggleDropdown();\r\n }\r\n }\r\n\r\n toggleOptionCheckboxed(u: any): void {\r\n if (!u.unselectable) {\r\n this.checkboxSelection.has(u[this.idAttribute]) ?\r\n this.checkboxSelection.delete(u[this.idAttribute]) : this.checkboxSelection.add(u[this.idAttribute]);\r\n }\r\n this.input?.focus();\r\n }\r\n\r\n\r\n // get optionsVisible(): boolean {\r\n // return this.inputFocused && this.typingStarted;\r\n // }\r\n\r\n keyPressed(keyEvent: KeyboardEvent): void {\r\n this.lastEmittedId = -1;\r\n this.optionsVisible = true;\r\n // this.typingStarted = keyEvent.key !== 'Tab' && keyEvent.key !== 'Escape';\r\n if (keyEvent.key === 'Escape') {\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.optionsVisible = false;\r\n return;\r\n }\r\n if (keyEvent.key === 'Enter' && this.hasCheckboxSelected) {\r\n if (this.focusedOption && !this.focusedOption.unselectable) {\r\n this.toggleOptionCheckboxed(this.focusedOption);\r\n }\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n return;\r\n }\r\n // if (keyEvent.key === 'Enter' && this.filteredGroupsAndUsers.length === 0 && this.focusedUser === null && !this.alreadyAdded) {\r\n // this.newUser();\r\n // keyEvent.stopPropagation();\r\n // keyEvent.preventDefault();\r\n // return;\r\n // }\r\n if (keyEvent.key === 'Enter') {\r\n this.selectedOption = this.focusedOption;\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.toggleDropdown();\r\n return;\r\n }\r\n if ((keyEvent.key === 'ArrowDown' || keyEvent.key === 'ArrowUp') && !this.focusedOption) {\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n // if (!this.focusedUser.unselectable || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // }\r\n this.selectedOption = this.focusedOption;\r\n return;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowDown' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx === this.filteredMaxItemsShown - 1) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n if (idx < this.filteredOptions.length - 1) {\r\n this.focusedOption = this.filteredOptions[idx + 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowUp' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx > 0) {\r\n this.focusedOption = this.filteredOptions[idx - 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleDropdown() {\r\n this.optionsVisible = false;\r\n this.emitSelection('toggle');\r\n }\r\n\r\n emitSelection(src?: string): void {\r\n this.initialOption = this.selectedOption;\r\n\r\n if (this.selectedOption) {\r\n const checkId = this.selectedOption.id === null ? 0 : this.selectedOption.id;\r\n if (this.lastEmittedId !== checkId) {\r\n this.lastEmittedId = checkId;\r\n this.onChange(this.options.find(o => o[this.idAttribute] === this.selectedOption[this.idAttribute]));\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute]);\r\n }\r\n } else {\r\n // this.control.setValue(null);\r\n this.onChange(null);\r\n this.inputControl.setValue('', {emitEvent: false});\r\n }\r\n\r\n\r\n\r\n // if (this.selectedOption) {\r\n // const checkId = this.selectedUser.id === null ? 0 : this.selectedUser.id;\r\n // if (this.lastEmittedId !== checkId) {\r\n // this.inputControl.setValue(this.selectedUser.fullName, {emitEvent: false});\r\n // if (this.selectedUser.id) {\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.selectedUser.id) {\r\n // this.control.setValue(u);\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n // } else {\r\n // this.control.setValue(this.selectedUser);\r\n // }\r\n // this.lastEmittedId = checkId;\r\n // }\r\n // } else {\r\n // if (this.lastEmittedId !== null || this.lastEmittedId === -1/* || this.selectedUser?.unselectable*/) {\r\n // this.control?.setValue(null);\r\n // this.inputControl.setValue('', {emitEvent: false});\r\n // this.lastEmittedId = null;\r\n // }\r\n // }\r\n // this.typingStarted = false;\r\n }\r\n\r\n cancelCheckboxSelection(): void {\r\n this.checkboxSelection.clear();\r\n // this.skipBlur = true;\r\n // this.input?.focus();\r\n }\r\n\r\n useCheckboxSelection(): void {\r\n // this.newUsername = '';\r\n // const users = [];\r\n // this.groupsAndUsers.forEach(g => g.users.forEach(u => {\r\n // if (!users.includes(u) && this.checkboxSelection.has(u.id)) {\r\n // users.push(u);\r\n // }\r\n // }));\r\n const outputOptions = this.options.filter(o => this.checkboxSelection.has(o[this.idAttribute]) && !this.optionDisabled(o));\r\n if (outputOptions.length > 0) {\r\n this.selectedOption = outputOptions[0];\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute], {emitEvent: false});\r\n this.onChange(outputOptions);\r\n this.toggleDropdown();\r\n // this.control?.setValue(outputOptions);\r\n // this.typingStarted = false;\r\n // this.skipBlur = true;\r\n }\r\n this.checkboxSelection.clear();\r\n }\r\n\r\n newOption() {\r\n\r\n }\r\n\r\n loadMore(visible: boolean) {\r\n if (visible) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n }\r\n\r\n public focus() {\r\n this.input?.focus();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n if (obj.id) {\r\n this.filteredOptions = this.searchableOptions.filter(so => so.id === obj.id);\r\n } else {\r\n this.filteredOptions = this.filterOptions(obj[this.displayAttribute].toLowerCase());\r\n }\r\n if (this.filteredOptions.length === 1) {\r\n this.selectedOption = this.filteredOptions[0];\r\n this.focusedOption = this.filteredOptions[0];\r\n }\r\n this.inputControl.setValue(obj[this.displayAttribute]);\r\n } else {\r\n this.filteredOptions = this.filterOptions('');\r\n }\r\n }\r\n}\r\n","<div class=\"wrapper\" #wrapper>\r\n <div *ngIf=\"optionsVisible\" (click)=\"toggleDropdown()\" class=\"overlay\"></div>\r\n <ui-input [formControl]=\"inputControl\" #input #trigger=\"cdkOverlayOrigin\" cdkOverlayOrigin\r\n (focusChanged)=\"inputFocusChanged($event)\" (keyPressed)=\"keyPressed($event)\" [placeholder]=\"placeholder\"\r\n [useInputMessages]=\"'never'\" [clearButton]=\"clearButton\" [label]=\"label\">\r\n <div slot=\"prefix\">\r\n <ng-content select=\"[slot=acprefix]\"></ng-content>\r\n </div>\r\n </ui-input>\r\n\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"optionsVisible\">\r\n <div class=\"options-box\" [class]=\"panelClass\" style=\"display: flex; flex-direction: column\"\r\n [ngStyle]=\"{width: wrapper.offsetWidth + 'px'}\">\r\n <div class=\"options\" #options>\r\n\r\n <ng-container *ngFor=\"let option of filteredOptions; index as i\">\r\n <div *ngIf=\"i < filteredMaxItemsShown\" class=\"option-container\"\r\n [ngClass]=\"{selected: focusedOption === option}\">\r\n @if (multiple) {\r\n <mat-checkbox [checked]=\"optionChecked(option) || option.unselectable\"\r\n [disabled]=\"option.unselectable\" (change)=\"toggleOptionCheckboxed(option)\">\r\n <div class=\"option-container-inner\" (click)=\"select(option)\">\r\n <div class=\"option-option\" uiForceVisibility [visibilityWithin]=\"options\"\r\n [visibilityPadding]=\"4\" *ngIf=\"focusedOption === option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{ optionFormatter(option) }}\r\n </div>\r\n <div class=\"option-option\" *ngIf=\"focusedOption !== option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{ optionFormatter(option) }}\r\n </div>\r\n <mat-icon *ngIf=\"!hasCheckboxSelected && !option.unselectable\">north_west</mat-icon>\r\n </div>\r\n </mat-checkbox>\r\n } @else {\r\n <div class=\"option-container-inner\" (click)=\"select(option)\">\r\n <div class=\"option-option\" uiForceVisibility [visibilityWithin]=\"options\"\r\n [visibilityPadding]=\"4\" *ngIf=\"focusedOption === option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n @if (templates?.optionTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"templates?.optionTemplate\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-template>\r\n } @else {\r\n {{ optionFormatter(option) }}\r\n }\r\n </div>\r\n <div class=\"option-option\" *ngIf=\"focusedOption !== option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n @if (templates?.optionTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"templates?.optionTemplate\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-template>\r\n } @else {\r\n {{ optionFormatter(option) }}\r\n }\r\n </div>\r\n <mat-icon *ngIf=\"!hasCheckboxSelected && !option.unselectable\">north_west</mat-icon>\r\n </div>\r\n }\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"filteredOptions.length >= filteredMaxItemsShown\" class=\"option-container\" uiForceVisibility\r\n [visibilityWithin]=\"options\" [visibilityEmitChange]=\"true\" (visibilityChanged)=\"loadMore($event)\">\r\n &nbsp;\r\n </div>\r\n\r\n\r\n <div *ngIf=\"filteredOptions.length === 0 && !focusedOption\" class=\"new-user\">\r\n @if (templates?.notFound) {\r\n <ng-template [ngTemplateOutlet]=\"templates?.notFound\"\r\n [ngTemplateOutletContext]=\"{searchText: inputControl.value}\"></ng-template>\r\n } @else {\r\n <ng-container *ngIf=\"alreadyAdded\">\r\n <div style=\"text-align: center\">Uživatel {{ inputControl.value }} už je mezi dlužníky</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!alreadyAdded\">\r\n <div style=\"text-align: center; padding: 1em 0\">Uživatele\r\n <strong>{{ inputControl.value }}</strong> neznáme\r\n </div>\r\n <ui-button *ngIf=\"allowNew\" style=\"margin-top: 6px;\" [size]=\"'small'\" [label]=\"'Přidat jej?'\"\r\n (click)=\"newOption()\"></ui-button>\r\n </ng-container>\r\n }\r\n </div>\r\n <div *ngIf=\"filteredOptions.length === 0 && focusedOption\" class=\"new-user\">\r\n <div style=\"text-align: center\">Neznámý uživatel {{ inputControl.value }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"hasCheckboxSelected && filteredOptions.length > 0\" class=\"checkbox-buttons\">\r\n <ui-button [size]=\"'small'\" [kind]=\"'basic'\" [label]=\"'Zrušit výběr'\"\r\n (click)=\"cancelCheckboxSelection()\"></ui-button>\r\n <ui-button [size]=\"'small'\" [label]=\"'Použít výběr (' + checkboxSelection.size + ')'\"\r\n (click)=\"useCheckboxSelection()\"></ui-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ButtonComponent } from './button/button.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { RouterModule } from '@angular/router';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { MAT_DATE_LOCALE, MatRippleModule } from '@angular/material/core';\r\nimport { NgxUploaderModule } from 'ngx-uploader';\r\nimport { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MatMomentDateModule } from '@angular/material-moment-adapter';\r\nimport { InputComponent } from './input/input.component';\r\nimport { SelectComponent } from './select/select.component';\r\nimport { FileComponent } from './file/file.component';\r\nimport { UiFileUploaderComponent } from './file-uploader/ui-file-uploader.component';\r\nimport { ExpanderComponent } from './elements/expander/expander.component';\r\nimport { ForceVisibilityDirective } from './directives/force-visibility/force-visibility.directive';\r\nimport { MessageBoxModalComponent } from './services/message-box.service';\r\nimport { DialogComponent } from './dialog/dialog.component';\r\nimport { CurrencyComponent } from './currency/currency.component';\r\nimport { CheckboxComponent } from './checkbox/checkbox.component';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { SubmitButtonComponent } from './submit-button/submit-button.component';\r\nimport { TextAreaComponent } from './text-area/text-area.component';\r\nimport { DateComponent } from './date/date.component';\r\nimport { TableComponent } from './table/table.component';\r\nimport { BurgerComponent } from './elements/burger/burger.component';\r\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\r\nimport { UiFileService } from './services/ui-file.service';\r\nimport { UI_TRANSLATESERVICE, UiTranslateService } from './services/ui-translate.service';\r\nimport { ActionButtonComponent } from './action-button/action-button.component';\r\nimport { UiSimpleLayoutComponent } from './layouts/simple/ui-simple-layout.component';\r\nimport { UiBaseLayoutComponent } from './layouts/base/ui-base-layout.component';\r\nimport { ValidationMessageComponent } from './elements/validation-message/validation-message.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { RadioComponent } from './radio/radio.component';\r\nimport { MAT_RADIO_DEFAULT_OPTIONS, MatRadioModule } from '@angular/material/radio';\r\nimport { CheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\r\nimport { ActionIconComponent } from './action-icon/action-icon.component';\r\nimport { EditorComponent } from './editor/editor.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { InputAutocompleteComponent } from './input-autocomplete/input-autocomplete.component';\r\nimport { AutoCompleteComponent } from './auto-complete/auto-complete.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ButtonComponent,\r\n InputComponent,\r\n InputAutocompleteComponent,\r\n SelectComponent,\r\n FileComponent,\r\n UiFileUploaderComponent,\r\n ExpanderComponent,\r\n ForceVisibilityDirective,\r\n MessageBoxModalComponent,\r\n DialogComponent,\r\n CurrencyComponent,\r\n CheckboxComponent,\r\n AvatarComponent,\r\n SubmitButtonComponent,\r\n TextAreaComponent,\r\n DateComponent,\r\n TableComponent,\r\n BurgerComponent,\r\n AutocompleteComponent,\r\n AutoCompleteComponent,\r\n ActionButtonComponent,\r\n UiBaseLayoutComponent,\r\n UiSimpleLayoutComponent,\r\n ValidationMessageComponent,\r\n RadioComponent,\r\n CheckboxGroupComponent,\r\n RadioGroupComponent,\r\n ActionIconComponent,\r\n EditorComponent\r\n ],\r\n exports: [\r\n ActionButtonComponent,\r\n ActionIconComponent,\r\n AutocompleteComponent,\r\n AutoCompleteComponent,\r\n AvatarComponent,\r\n BurgerComponent,\r\n ButtonComponent,\r\n CheckboxComponent,\r\n CheckboxGroupComponent,\r\n CurrencyComponent,\r\n DateComponent,\r\n DialogComponent,\r\n ExpanderComponent,\r\n FileComponent,\r\n ForceVisibilityDirective,\r\n InputComponent,\r\n InputAutocompleteComponent,\r\n MessageBoxModalComponent,\r\n RadioComponent,\r\n RadioGroupComponent,\r\n SelectComponent,\r\n SubmitButtonComponent,\r\n TableComponent,\r\n TextAreaComponent,\r\n UiFileUploaderComponent,\r\n EditorComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatMomentDateModule,\r\n DragDropModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatTooltipModule,\r\n MatProgressBarModule,\r\n MatTableModule,\r\n MatSortModule,\r\n MatSelectModule,\r\n NgxUploaderModule,\r\n MatProgressSpinnerModule,\r\n MatMenuModule,\r\n ImageCropperModule,\r\n RouterModule,\r\n OverlayModule,\r\n MatRippleModule,\r\n MatInputModule,\r\n MatRadioModule,\r\n MatSnackBarModule,\r\n MatAutocompleteModule\r\n ],\r\n providers: [\r\n UiFileService,\r\n {provide: UI_TRANSLATESERVICE, useClass: UiTranslateService},\r\n {provide: MAT_DATE_LOCALE, useValue: 'cs-CZ'},\r\n {provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: {useUtc: false}},\r\n {provide: MAT_RADIO_DEFAULT_OPTIONS, useValue: { color: 'primary' }},\r\n {provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { color: 'primary' }}\r\n ]\r\n})\r\nexport class UiModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nexport type ToastType = 'info' | 'success' | 'warning' | 'fail';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService {\r\n\r\n constructor(private snackService: MatSnackBar) { }\r\n\r\n public open(message: string, options: { duration?: number, type?: ToastType } = { duration: 2500, type: 'info'}) {\r\n this.snackService.open(message, null, {\r\n duration: options.duration || 2500,\r\n panelClass: [ options.type || 'message']\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ui\r\n */\r\n\r\n// export * from './lib/ui.service';\r\n// export * from './lib/ui.component';\r\nexport * from './lib/ui.module';\r\nexport * from './lib/action-button/action-button.component';\r\nexport * from './lib/action-icon/action-icon.component';\r\nexport * from './lib/autocomplete/autocomplete.component';\r\nexport * from './lib/auto-complete/auto-complete.component';\r\nexport * from './lib/avatar/avatar.component';\r\nexport * from './lib/button/button.component';\r\nexport * from './lib/checkbox/checkbox.component';\r\nexport * from './lib/checkbox-group/checkbox-group.component';\r\nexport * from './lib/currency/currency.component';\r\nexport * from './lib/date/date.component';\r\nexport * from './lib/dialog/dialog.component';\r\nexport * from './lib/file/file.component';\r\nexport * from './lib/file-uploader/ui-file-uploader.component';\r\nexport * from './lib/input/input.component';\r\nexport * from './lib/input-autocomplete/input-autocomplete.component';\r\nexport * from './lib/radio/radio.component';\r\nexport * from './lib/radio-group/radio-group.component';\r\nexport * from './lib/select/select.component';\r\nexport * from './lib/submit-button/submit-button.component';\r\nexport * from './lib/table/table.component';\r\nexport * from './lib/text-area/text-area.component';\r\nexport * from './lib/editor/editor.component';\r\n\r\nexport * from './lib/directives/force-visibility/force-visibility.directive';\r\n\r\nexport * from './lib/elements/burger/burger.component';\r\nexport * from './lib/elements/expander/expander.component';\r\n\r\nexport * from './lib/services/message-box.service';\r\nexport * from './lib/services/toast.service';\r\nexport * from './lib/services/ui-file.service';\r\nexport * from './lib/services/ui-translate.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i3.ValidationMessageComponent","i2.UiBaseLayoutComponent","i4","i5.UiSimpleLayoutComponent","i6.ActionIconComponent","i5.ButtonComponent","i6.UiSimpleLayoutComponent","i2.UiFileService","i5","i7","i9.FileComponent","i4.ActionIconComponent","i4.ButtonComponent","i5.DialogComponent","i3.InputComponent","i4.SelectComponent","i5.UiBaseLayoutComponent","i4.UiSimpleLayoutComponent","i2.FileComponent","i6.ButtonComponent","i7.InputComponent","i8.ForceVisibilityDirective","i3.CheckboxComponent","i3.UiSimpleLayoutComponent","i6","i8.UiSimpleLayoutComponent","i9.ActionIconComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASa,eAAe,CAAA;AAW1B,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,IAAI;AACd,aAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACpC,aAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAClC,aAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;;AAMrD,IAAA,WAAA,GAAA;QApBS,IAAI,CAAA,IAAA,GAAwB,QAAQ;QAGpC,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAI,CAAA,IAAA,GAAG,KAAK;QACZ,IAAI,CAAA,IAAA,GAAiC,MAAM;QAC3C,IAAK,CAAA,KAAA,GAAiB,SAAS;QAC/B,IAAI,CAAA,IAAA,GAAgB,QAAQ;QAW5B,IAAW,CAAA,WAAA,GAAG,KAAK;;AAI5B,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI;;8GAzBxB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,sVCT5B,2ZASA,EAAA,MAAA,EAAA,CAAA,uhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,2ZAAA,EAAA,MAAA,EAAA,CAAA,uhBAAA,CAAA,EAAA;wDAIV,IAAI,EAAA,CAAA;sBAAZ;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAGG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,OAAO;gBASX,WAAW,EAAA,CAAA;sBADnB,WAAW;uBAAC,mBAAmB;;sBAC/B;;;MEhBmB,eAAe,CAAA;;;;AAqBnC,IAAA,WAAA,GAAA;QAnBS,IAAW,CAAA,WAAA,GAAG,EAAE;QAEhB,IAAgB,CAAA,gBAAA,GAAoC,QAAQ;QAC5D,IAAqB,CAAA,qBAAA,GAA4B,UAAU;QAI3D,IAAI,CAAA,IAAA,GAAwD,QAAQ;;;QAM7E,IAAQ,CAAA,QAAA,GAAG,KAAK;;;IAUhB,QAAQ,GAAA;;;;;;;;;;;;;;;;;;;;;;;AA8BR,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI;;AAGb,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,aAAa;;AAGtB,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,KAAK;;8GAhEM,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,iTAHvB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGR,eAAe,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;wDAGU,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBAGQ,IAAI,EAAA,CAAA;sBADZ,WAAW;uBAAC,OAAO;;sBACnB;;;ACJG,MAAgB,iBAAkB,SAAQ,eAAe,CAAA;IAa7D,WAAmB,CAAA,SAAoB;AACjB,IAAA,gBAAA,GAAqC,IAAI,EAAA;AAC7D,QAAA,KAAK,EAAE;QAFU,IAAS,CAAA,SAAA,GAAT,SAAS;QACN,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;AAHtC,QAAA,IAAA,CAAA,GAAG,GAAiB,IAAI,YAAY,EAAE;AAmCtC,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,GAAG,KAAI,GAAG;AAEtB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG;AAEpB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAK,GAAG;QAjC1B,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,aAAa,GAAG,IAAI;;aACzB;AACL,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,WAAW,EAAE;;AAE7C,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAG;AAChE,gBAAA,IAAI;;AAEF,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;;AAChB,gBAAA,OAAO,CAAC,EAAE;;aAEb,CAAE,CAAC;;;;AAKR,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;;AAGxH,IAAA,IAAI,SAAS,GAAA;;AAEX,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM;;AAGhF,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,MAAM;;IAS1C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;IAGxB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW;;iBACvC;gBACL,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,OAA6B;;YAE1E,UAAU,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;;aAC3C;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe;AAC1C,gBAAA,IAAI,CAAC,gBAAuC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,WAAW;AACpG,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACzE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB;gBACxE,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,KAAK,SAAS,EAAE;oBACvD,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa;oBAC5E,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS;oBACpE,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,CAAC,EAAC,QAAQ,EAAA,GAA4B,EAAE,KAAU;wBACvF,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAC,QAAQ,EAAC,CAAC;wBACjD,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAC,CAAC;wBACtE,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACpE,qBAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,MAAW,KAAU;AACvD,wBAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC;wBACzC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC;AAChE,qBAAC;;gBAEH,UAAU,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;;;;IAKtD,uBAAuB,GAAA;AACrB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU;QACvC,IAAI,eAAe,EAAE;YACnB,MAAM,UAAU,GAAkB,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;gBACvC,QAAQ,CAAC;AACP,oBAAA,KAAK,UAAU;AACb,wBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AACpC,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;wBACpB;AACF,oBAAA,KAAK,WAAW;AACd,wBAAA,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACpB,4BAAA,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,IAAI,CAAC;AACrD,4BAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,cAAc,EAAE;AACvC,gCAAA,OAAO,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,EAAC;;iCAClC;AACL,gCAAA,OAAO,IAAI;;yBAEd,CAAC,CAAC;wBACH;;AAEN,aAAC,CAAC;AACF,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,UAAU,CAAC;gBAChD,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACnE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;;iBACpE;AACL,gBAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE;;;;AAKxD,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACnD,YAAA,IAAI,CAAC,uBAAuB,EAAE,CAAC;;;AAInC,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;;AAIjI,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;iBAC1G;AACL,gBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC;;;;AAK7C,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;;AAG7B,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,IAAI;;IAGb,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;;8GAjKjE,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,2OAHzB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGR,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;6GAIU,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;;;MCjBU,mBAAmB,GAAG,IAAI,cAAc,CAAsB,0BAA0B;MAGxF,kBAAkB,CAAA;IAC7B,OAAO,CAAC,IAAY,EAAE,IAAS,EAAA;QAC7B,QAAQ,IAAI;AACV,YAAA,KAAK,0CAA0C,EAAE,OAAO,QAAQ;AAChE,YAAA,KAAK,0CAA0C,EAAE,OAAO,QAAQ;AAChE,YAAA,KAAK,0CAA0C,EAAE,OAAO,4BAA4B;AACpF,YAAA,KAAK,iCAAiC,EAAE,OAAO,iBAAiB;AAChE,YAAA,KAAK,8BAA8B,EAAE,OAAO,gBAAgB;AAC5D,YAAA,KAAK,2CAA2C,EAAE,OAAO,gBAAgB;YACzE,KAAK,kCAAkC,EAAE,OAAO,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,QAAQ;YACnG,KAAK,kCAAkC,EAAE,OAAO,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,QAAQ;AACnG,YAAA,KAAK,sCAAsC,EAAE,OAAO,gBAAgB;AACpE,YAAA,KAAK,iCAAiC,EAAE,OAAO,sBAAsB;AACrE,YAAA,KAAK,wCAAwC,EAAE,OAAO,gCAAgC;AACtF,YAAA,KAAK,uCAAuC,EAAE,OAAO,cAAc;AACnE,YAAA,KAAK,2BAA2B,EAAE,OAAO,KAAK;AAC9C,YAAA,KAAK,uCAAuC,EAAE,OAAO,cAAc;AACnE,YAAA,KAAK,6BAA6B,EAAE,OAAO,QAAQ;AACnD,YAAA,KAAK,6BAA6B,EAAE,OAAO,QAAQ;AACnD,YAAA,SAAS,OAAO,IAAI;;;8GAnBb,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCAY,0BAA0B,CAAA;AAIrC,IAAA,WAAA,CAAmD,gBAAqC,EAAA;QAArC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;IAEnE,QAAQ,GAAA;;AAGR,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,GAAQ,EAAC,IAAI,EAAE,eAAe,EAAC;AACpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB;QACpC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;AAC3B,gBAAA,CAAC,GAAG,EAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAC;AAC9B,gBAAA,OAAO,IAAI;AACb,aAAC,CAAC;AACF,YAAA,QAAQ,CAAC,CAAC,IAAI;AACZ,gBAAA,KAAK,UAAU;AACf,gBAAA,KAAK,iBAAiB;AACtB,gBAAA,KAAK,OAAO;AACZ,gBAAA,KAAK,oBAAoB;AACzB,gBAAA,KAAK,WAAW;AAChB,gBAAA,KAAK,WAAW;AACd,oBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,yBAAyB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClF,gBAAA,KAAK,UAAU;oBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,sCAAsC,GAAG,iCAAiC,CAAC;AAC1I,gBAAA,KAAK,QAAQ;oBACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,gBAAA;oBACE,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;;;;AA9BzC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAIjB,mBAAmB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAJ5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,oICRvC,wBACA,EAAA,CAAA,CAAA;;2FDOa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAErB,KAAK,EAAA,QAAA,EAAA,wBAAA,EAAA;;0BAMN,MAAM;2BAAC,mBAAmB;yCAF9B,gBAAgB,EAAA,CAAA;sBAAxB;;;MEDU,qBAAqB,CAAA;AAIhC,IAAA,IACI,KAAK,GAAA;QACP,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAA,CAAE;;8GANzE,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oJCTlC,i7BAiBA,EAAA,MAAA,EAAA,CAAA,2oBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,0BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDRa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,i7BAAA,EAAA,MAAA,EAAA,CAAA,2oBAAA,CAAA,EAAA;8BAIV,GAAG,EAAA,CAAA;sBAAX;gBAGG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,OAAO;;;MEHT,uBAAuB,CAAA;IAIlC,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;;8GALpB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,qGCVpC,6YAaA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDHa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAIhB,KAAK,EAAA,QAAA,EAAA,6YAAA,EAAA;8BAIV,GAAG,EAAA,CAAA;sBAAX;;;MEHU,mBAAmB,CAAA;AAY9B,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAA,EAAG,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAE,EAAE,CAAG,EAAA,IAAI,CAAC,IAAI,GAAG,OAAO,GAAG,EAAE,EAAE;;AAGlG,IAAA,WAAA,GAAA;QAfS,IAAI,CAAA,IAAA,GAAgB,QAAQ;QAE5B,IAAK,CAAA,KAAA,GAAiB,SAAS;QAE/B,IAAQ,CAAA,QAAA,GAAG,KAAK;QAEhB,IAAI,CAAA,IAAA,GAAG,KAAK;QAEZ,IAAO,CAAA,OAAA,GAAG,OAAO;;IAS1B,QAAQ,GAAA;;8GAnBG,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8NCThC,sCACA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDQa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,gTAAA,CAAA,EAAA;wDAIV,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,KAAK,EAAA,CAAA;sBAAb;gBAEQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBAGG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,OAAO;;;AEahB,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAkCnD,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAc,WAAA,EAAA,IAAI,CAAC,SAAS,EAAE;;AAYvC,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc;;AAGhI,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDhI,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI;;;AAKb,IAAA,WAAA,CAAsD,gBAAkC,EAAA;AAUtF,QAAA,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAVuB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAhF7D,IAAI,CAAA,IAAA,GAAmC,MAAM;QAC7C,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAW,CAAA,WAAA,GAAG,IAAI;QAClB,IAAc,CAAA,cAAA,GAAG,KAAK;QACtB,IAAc,CAAA,cAAA,GAAG,KAAK;QAOtB,IAAS,CAAA,SAAA,GAAgC,MAAM;AAM9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAiB;;QAYxD,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAQ,CAAA,QAAA,GAAG,KAAK;;;;;;;;;;;;;;;AA6EhB,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,KAAK,EAAE;;IAG7D,QAAQ,GAAA;QACb,KAAK,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BlB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;IAGnC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;AAGnC,IAAA,OAAO,CAAC,KAAc,EAAA;QACpB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0D9B,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,MAAM;;;;;;;;;;8GAzPnD,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAdZ,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BL,8gCAYA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,4KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDsBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAGT,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAgB;AAC9B,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAgB;AAC9B;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,8gCAAA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,4KAAA,CAAA,EAAA;;0BA8GN;;0BAAY;;0BAAQ;yCAlFxB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBAGG,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,OAAO;gBAKX,SAAS,EAAA,CAAA;sBAAjB;gBAEmB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;gBACqB,MAAM,EAAA,CAAA;sBAA5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACE,MAAM,EAAA,CAAA;sBAA5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAE3B,YAAY,EAAA,CAAA;sBAArB;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AExDG,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;IAqBpD,WAAgD,CAAA,SAAoB,EACpB,gBAAqC,EAAA;QACnF,KAAK,CAAC,SAAS,CAAC;QAF8B,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QApBvD,IAAQ,CAAA,QAAA,GAAG,KAAK;QAMhB,IAAO,CAAA,OAAA,GAAU,EAAE;QACnB,IAAe,CAAA,eAAA,GAAmD,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;QAG7H,IAAU,CAAA,UAAA,GAAG,EAAE;QACf,IAAmB,CAAA,mBAAA,GAAG,KAAK;QAKpC,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QA4Cd,IAAa,CAAA,aAAA,GAAG,CAAC,CAAM,KAAK,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;IApCnE,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM;YACvD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAG;AACnD,gBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC3E,oBAAA,IAAI,CAAC,MAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACxD,oBAAA,IAAI,CAAC,MAAO,CAAC,KAAK,EAAE;;AAEtB,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM;AAC3B,aAAC,CAAC;;AAEJ,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;YAChF,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;;AAIlG,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,OAAO,EAAE;YACnE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;;AAI3G,IAAA,SAAS,CAAC,GAAQ,EAAA;QAChB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;AACvC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;iBACrF;gBACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;aAEjE;AACL,YAAA,OAAO,GAAG;;;IAMd,YAAY,CAAC,CAAM,EAAE,MAAiB,EAAA;AACpC,QAAA,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,EAAE;;IAGhB,SAAS,GAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;;IAGlF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;;IAG/B,gBAAgB,GAAA;;AAGhB,IAAA,UAAU,CAAC,GAAQ,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;gBACpB,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;AAC5C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,GAAG,IAAI,GAAG,EAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;iBACtG;AACL,gBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;;;AAtFlD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,uEAsBN,mBAAmB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtB5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,gmBCxB5B,qqGA2DA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,iiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnCa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,qqGAAA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,iiBAAA,CAAA,EAAA;;0BAwBJ;;0BAAY;;0BACZ,MAAM;2BAAC,mBAAmB;yCApB9B,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,kBAAkB,EAAA,CAAA;sBAA1B;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEoB,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;;;MEPR,cAAc,GAAG,IAAI,cAAc,CAAiB,gBAAgB;AAEjF;MAGa,aAAa,CAAA;AASxB,IAAA,WAAA,CAAuD,iBAAiC,EAAA;QAAjC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;AAPxE,QAAA,IAAA,CAAA,WAAW,GAA8B,IAAI,YAAY,EAAe;AAExE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAE;QAElC,IAAa,CAAA,aAAA,GAAa,EAAE;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAO;QAGvB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AAC3C,YAAA,QAAQ,CAAC,CAAC,MAAM;AACd,gBAAA,KAAK,UAAU;oBAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE;AAC5C,gBAAA,KAAK,SAAS;oBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE;AAE9C,gBAAA,KAAK,eAAe;oBAClB,IAAI,GAAG,GAAG,CAAC;oBACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,oBAAA,IAAI,GAAG,KAAK,CAAC,EAAE;wBACb,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,eAAe,EAAC,CAAC;;oBAEzD;AAEF,gBAAA,KAAK,qBAAqB;AAC1B,gBAAA,KAAK,sBAAsB;oBACzB,IAAI,IAAI,GAAG,CAAC;oBACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9D,oBAAA,IAAI,IAAI,KAAK,CAAC,EAAE;wBACd,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,qBAAqB,GAAG,cAAc,GAAG,eAAe,EAAC,CAAC;;oBAE/G;;AAEN,SAAC,CAAC;;IAGG,MAAM,GAAA;QACX,MAAM,QAAQ,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI,OAAO,CAAmC,CAAC,GAAG,KAAI;YAE3D,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AAC3C,gBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,EAAE;AAC/D,oBAAA,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;;AAEjB,aAAC,CAAC;YAEF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,eAAe,EAAC,CAAC;YAEvD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AAC/B,gBAAA,MAAM,KAAK,GAAgB;AACzB,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;AACvC,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;iBAC9C;AAED,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAE9B,aAAC,CAAC;AACJ,SAAC,CAAC;;AA5DO,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBASQ,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHATnC,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;0BAUc;;0BAAY,MAAM;2BAAC,cAAc;;;MCrCnC,aAAa,CAAA;IAIxB,IACI,QAAQ,CAAC,EAAwB,EAAA;AACnC,QAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACpE,IAAI,CAAC,CAAC,EAAE;AACN,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC;;iBACtC;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;;;aAEhB;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;;AAQxB,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAW,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,UAAW,CAAC,KAAK,KAAK,UAAU;;AAUxF,IAAA,IACI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,OAAO,EAAE;;;;;;;aAMJ;AACL,YAAA,OAAO,IAAI,CAAC,UAAW,CAAC,KAAK,GAAG,IAAI;;;AAIxC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC;;;;;;AAOpB,IAAA,IACI,MAAM,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,OAAO,EAAE;;;;;;;aAMJ;AACL,YAAA,OAAO,IAAI,CAAC,UAAW,CAAC,MAAM,GAAG,IAAI;;;AAIzC,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC;;;;;;AAOrB,IAAA,IAAI,QAAQ,GAAA;QACV,MAAM,GAAG,GAAQ,EAAE;AACnB,QAAA,QAAQ,IAAI,CAAC,UAAW,CAAC,KAAK;AAC5B,YAAA,KAAK,WAAW;gBAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAW,CAAC,MAAM,GAAG,IAAI;gBAAE;AAClE,YAAA,KAAK,UAAU;gBAAE,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,UAAW,CAAC,KAAK,GAAG,IAAI;gBAAE;AAC/D,YAAA;AAAS,gBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM;AAAE,gBAAA,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM;;AAExD,QAAA,OAAO,GAAG;;AAGZ,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAGvC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAC,cAAc;;aACrB;AACL,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;;YAErC,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;;AAI3D,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY;;AAG5C,IAAA,WAAA,CAAwD,iBAAiC,EACrE,YAA0B,EAC1B,WAA0B,EAAA;QAFU,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACrD,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAW,CAAA,WAAA,GAAX,WAAW;QApF/B,IAAO,CAAA,OAAA,GAAG,KAAK;QAGf,IAAmB,CAAA,mBAAA,GAAG,CAAC,CAAC;;AAmFxB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAC7B,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE;gBAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,UAAU;AAErD,gBAAA,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAChE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAEpH,oBAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;AAEvB,oBAAA,GAAG,CAAC,MAAM,GAAG,MAAK;AAChB,wBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,4BAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,UAAW,CAAC,KAAK,EACpE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,UAAW,CAAC,MAAM,EAAE,CAAC,CAAC;;6BACrC;AACL,4BAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC;;wBAE9B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB;wBAC3D,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB;AAC7D,wBAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,qBAAC;AAED,oBAAA,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC;;qBACpE;AACL,oBAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAW,EAAE,EAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;;;iBAGlH;gBACL,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;;;AAGrH,QAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,GAAG;AAC9C,YAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AACZ,gBAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,QAAQ,IAAI,WAAW;;iBACxE;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;;;;AArJ1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,kBA4GQ,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5GnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,yVCV1B,+UAKA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cAGP,KAAK,EAAA,QAAA,EAAA,+UAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA;;0BA8GN;;0BAAY,MAAM;2BAAC,cAAc;+FAvG1C,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAchB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBAcG,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,aAAa;gBAetB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,gBAAgB;gBAUzB,MAAM,EAAA,CAAA;sBADT,WAAW;uBAAC,cAAc;gBAevB,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,iBAAiB;;;AE9B1B,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;IAK5D,IACI,QAAQ,CAAC,EAAwB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACpE,IAAI,CAAC,CAAC,EAAE;AACN,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC;;iBACtC;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC;;;aAEhB;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;;AAiBxB,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY;;AAGrC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,eAAe;;AAGxC,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,qBAAqB;;AAG9C,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY;;AAyCrC,IAAA,WAAA,CAAwD,iBAAiC,EACzC,gBAAqC,EAC/B,gBAAkC,EACpE,WAA0B,EAAA;AAE5C,QAAA,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;QALyB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACzB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QACV,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAClD,IAAW,CAAA,WAAA,GAAX,WAAW;QAtEtB,IAAQ,CAAA,QAAA,GAAG,CAAC;QACZ,IAAQ,CAAA,QAAA,GAAG,IAAI;QACf,IAAI,CAAA,IAAA,GAAG,KAAK;QACZ,IAAW,CAAA,WAAA,GAAG,KAAK;QAEnB,IAAc,CAAA,cAAA,GAAG,KAAK;QAEtB,IAAe,CAAA,eAAA,GAAqB,MAAM;QAE1C,IAAS,CAAA,SAAA,GAAmG,EAAE;AAE7G,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU;QAkBzC,IAAe,CAAA,eAAA,GAAgC,QAAQ;AAEtD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA0B;AAEhE,QAAA,IAAA,CAAA,aAAa,GAAoB;AAC/B,YAAA,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC;SACrC;QAEM,IAAS,CAAA,SAAA,GAAG,KAAK;QAIxB,IAAW,CAAA,WAAA,GAAG,KAAK;QAEnB,IAAe,CAAA,eAAA,GAAG,EAAE;QACpB,IAAmB,CAAA,mBAAA,GAAG,EAAE;QACxB,IAAgB,CAAA,gBAAA,GAAG,EAAE;QACrB,IAAkB,CAAA,kBAAA,GAAG,EAAE;QACvB,IAAU,CAAA,UAAA,GAAG,EAAE;QACf,IAAS,CAAA,SAAA,GAAmB,EAAE;QAC9B,IAAc,CAAA,cAAA,GAAG,EAAE;QAMnB,IAAe,CAAA,eAAA,GAAG,KAAK;QAIvB,IAAc,CAAA,cAAA,GAAG,KAAK;QAEtB,IAAU,CAAA,UAAA,GAAG,KAAK;QAClB,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEhB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;QA4BhD,IAAa,CAAA,aAAA,GAAG,EAAE;AAnBhB,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;QAE1E,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAM,KAAI;AACvD,YAAA,QAAQ,CAAC,CAAC,MAAM;AACd,gBAAA,KAAK,eAAe;AAAE,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;oBAAE;AAC7C,gBAAA,KAAK,cAAc;AACnB,gBAAA,KAAK,eAAe;oBAClB,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,qBAAC,CAAC;oBACF,IAAI,CAAC,WAAW,EAAE;;AAExB,SAAC,CAAC;;AAGJ,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW;;AAKrC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO;;AAG1C,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI;AAC7C,YAAA,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI;SAChD;;AAGH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;;AAGvD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa;;AAG7C,IAAA,QAAQ,CAAC,CAAC,EAAA;AACR,QAAA,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;;;;;IAOtD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;;AAG3E,IAAA,MAAM,CAAC,CAAM,EAAA;AACX,QAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAC,CAAC;;AAE5D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,EAAE;;AAEtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;IAI1D,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;;;;AAM1B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAG7B,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;;AAG/E,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAG/D,IAAA,cAAc,CAAC,MAAoB,EAAE,oBAAoB,GAAG,KAAK,EAAA;AAC/D,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,OAAO;gBACV;AAEF,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB;AACF,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;gBACrB;AAEF,YAAA,KAAK,cAAc;AACjB,gBAAA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACvD,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;AAC7D,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC1E;;gBAGF,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;AAClE,oBAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAG;wBAC/E,IAAI,KAAK,EAAE;AACT,4BAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;;6BAC5B;AACL,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;;;AAGjE,qBAAC,CAAC;;qBACG;AACL,oBAAA,IAAI,CAAC;AACL,oBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;wBACtC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;AACpC,wBAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACd,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;;AAE9D,wBAAA,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI;AACxB,wBAAA,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI;AACtB,wBAAA,IAAI,CAAC,eAAe,GAAG,SAAS;;yBAC3B;AACL,wBAAA,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE;AAClD,wBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE;AACnC,4BAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;;6BACb;AACL,4BAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;;;oBAGzB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1C,wBAAA,IAAI,IAAI,CAAC,IAAI,EAAE;4BACb,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;AACvC,4BAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU;4BAC9D,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK;AAC/C,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAGpC,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBACd,IAAI,CAAC,eAAe,EAAE;;AAExB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;gBAExD;AAEF,YAAA,KAAK,MAAM;gBACT,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC3D,IAAI,EAAE,EAAE;oBACN,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,KAAK,GAAG,EAAE;wBACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ;AAChE,wBAAA,EAAE,CAAC,QAAQ,GAAG,IAAI;;yBACb;;;;AAIT,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,oBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3B,oBAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC;wBACvC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,qBAAqB,GAAG;AACtE,qBAAA,CAAC;;gBAEJ;;;IAIN,eAAe,CAAC,MAAM,GAAG,IAAI,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;AAEzB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAC,CAAC,CAAC;;aAChF;YACL,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;iBACpB;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,oBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;AAEzB,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AAC5C,oBAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;;;QAGxD,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;IAanC,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,KAAI;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACrB,gBAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClD,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;;gBAEhC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;oBAC9D,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAEnC,aAAC,CAAC;YACF,UAAU,CAAC,MAAK;gBACd,GAAG,CAAC,MAAM,CAAC;aACZ,EAAE,GAAG,CAAC;AACT,SAAC,CAAC;;IAGJ,eAAe,CAAC,KAAU,EAAE,CAAM,EAAA;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;;AAG9C,IAAA,gBAAgB,CAAC,EAAE,EAAA;QACjB,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;;AAGxD,IAAA,eAAe,CAAC,EAAE,EAAA;QAChB,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,KAAK;SACjC,EAAE,GAAG,CAAC;;IAGT,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAA;QACtB,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK;QACpC,KAAK,IAAI,GAAG;AACZ,QAAA,IAAI,KAAK,GAAG,GAAG,EAAE;YACf,KAAK,GAAG,GAAG;;AAEb,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACnB,YAAA,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB;SACD;;IAGH,kBAAkB,CAAC,GAAG,EAAE,EAAE,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,GAAG;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACnB,YAAA,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACrB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE;SACR;;IAGH,cAAc,CAAC,KAAwB,EAAE,EAAE,EAAA;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG/B,IAAA,WAAW,CAAC,EAAE,EAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACnB,gBAAA,KAAK,EAAE;aACR;AACH,SAAC,CAAC;;IAGJ,YAAY,CAAC,qBAAiC,EAAE,EAAE,EAAA;AAChD,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,IAAI;;IAGpC,eAAe,GAAA;;AAGf,IAAA,oBAAoB,CAAC,CAAC,EAAA;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC;;IAGzB,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;;AAIjC,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,YAAY,KAAK;AACtC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;aACrD;YACL,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,CAAE,EAAE,MAAM,EAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAE,GAAG,EAAE;;AAE3D,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;;AAG5B,IAAA,WAAW,CAAC,EAAE,EAAA;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QACrE,IAAI,CAAC,EAAE;;;;;;;;;;;;;;;YAeL,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AAC3C,YAAA,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,CAAE,YAAY,CAAC,IAAI,CAAE,EAAE,UAAU,EAAE;AAClE,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;AACF,YAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU;AAC5B,YAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;AAC5C,YAAA,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI;YAC1B,IAAI,CAAC,eAAe,EAAE;;;IAI1B,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;;8GAjajC,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAuFF,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC1B,mBAAmB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxF5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,2cAPrB,CAAC;AACJ,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,uBAAuB;AACvC,aAAA,CAAC,iDC/CV,qkSAqJA,EAAA,MAAA,EAAA,CAAA,q0GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnGa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,aAGjB,CAAC;AACJ,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAyB,uBAAA;AACvC,yBAAA,CAAC,cACM,KAAK,EAAA,QAAA,EAAA,qkSAAA,EAAA,MAAA,EAAA,CAAA,q0GAAA,CAAA,EAAA;;0BAyFN;;0BAAY,MAAM;2BAAC,cAAc;;0BACjC,MAAM;2BAAC,mBAAmB;;0BAC1B;;0BAAY;;0BAAQ;kEAnF7B,QAAQ,EAAA,CAAA;sBADX;gBAeQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,WAAW,EAAA,CAAA;sBAApB;gBAkBQ,eAAe,EAAA,CAAA;sBAAvB;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;ME9FU,iBAAiB,CAAA;AAQ5B,IAAA,WAAA,GAAA;QALS,IAAQ,CAAA,QAAA,GAAG,KAAK;QAGhB,IAAS,CAAA,SAAA,GAA6B,YAAY;;IAI3D,QAAQ,GAAA;;8GAVG,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,0NCR9B,4CACA,EAAA,MAAA,EAAA,CAAA,iMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,iMAAA,CAAA,EAAA;wDAKV,QAAQ,EAAA,CAAA;sBADhB,WAAW;uBAAC,gBAAgB;;sBAC5B;gBAGQ,SAAS,EAAA,CAAA;sBADjB,WAAW;uBAAC,OAAO;;sBACnB;;;MEPU,wBAAwB,CAAA;aAEpB,IAAQ,CAAA,QAAA,GAAG,KAAH,CAAS;AAahC,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE;QAVb,IAAiB,CAAA,iBAAA,GAAG,EAAE;QACtB,IAAuB,CAAA,uBAAA,GAAG,KAAK;QAC/B,IAAoB,CAAA,oBAAA,GAAG,KAAK;QAC5B,IAAiB,CAAA,iBAAA,GAAG,CAAC;QACrB,IAAsB,CAAA,sBAAA,GAAG,IAAI;AAE5B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;;IAQlD,OAAO,UAAU,CAAC,SAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,SAAS,CAAC;;IAGpD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC/D,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,eAAe,EAAE;aACvB,EAAE,GAAG,CAAC;;AAET,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,MAAM,KAAK,CAAC,kDAAkD,CAAC;;iBAC1D;AACL,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,MAAK;AACpC,oBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1B,oBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;AACtB,wBAAA,IAAI,CAAC,OAAO,GAAG,CAAC;AAChB,wBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;;AAElC,iBAAC;;;;AAKP,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,CAAC,YAAY,KAAK,OAAO,CAAC,sBAAsB,CAAC,aAAa,EAAE;YAClI,IAAI,CAAC,eAAe,EAAE;;;IAIlB,SAAS,GAAA;QACf,MAAM,IAAI,GAAI,IAAI,CAAC,EAAE,CAAC,aAA6B,CAAC,qBAAqB,EAAE;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE;AAC5D,QAAA,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;;IAGxD,eAAe,GAAA;QACpB,IAAI,wBAAwB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrE;;QAEF,MAAM,IAAI,GAAI,IAAI,CAAC,EAAE,CAAC,aAA6B,CAAC,qBAAqB,EAAE;AAC3E,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,iBAAiB;AACvC,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE;AAC5D,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM;AAC3D,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;;iBAClC;gBACL,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO;AACtC,gBAAA,IAAI,IAAI,GAAG,CAAC,EAAE;oBACZ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;;;;aAGtC;AACL,YAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE;gBAChC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;;iBACvF;gBACL,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE;oBACpC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;;;;;8GAhF5F,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE;AACf,iBAAA;+EAKU,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,sBAAsB,EAAA,CAAA;sBAA9B;gBAES,iBAAiB,EAAA,CAAA;sBAA1B;;;MCTU,eAAe,CAAA;AAQ1B,IAAA,WAAA,CAAmB,SAAwC,EAAA;QAAxC,IAAS,CAAA,SAAA,GAAT,SAAS;QANnB,IAAK,CAAA,KAAA,GAAG,EAAE;AACV,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC;QAClB,IAAe,CAAA,eAAA,GAAG,KAAK;;IAOhC,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;;aACjB;YACL,IAAI,CAAC,KAAK,EAAE;;;8GAfL,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,8KCT5B,seAYA,EAAA,MAAA,EAAA,CAAA,ghDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDHa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,seAAA,EAAA,MAAA,EAAA,CAAA,ghDAAA,CAAA,EAAA;mFAIV,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBAEQ,KAAK,EAAA,CAAA;sBAAb;;;MEwBU,wBAAwB,CAAA;AAWnC,IAAA,WAAA,CAAmB,SAAiD,EACjD,SAAuB,EACG,IAAS,EAAA;QAFnC,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAS,CAAA,SAAA,GAAT,SAAS;QACiB,IAAI,CAAA,IAAA,GAAJ,IAAI;QARjD,IAAO,CAAA,OAAA,GAAuB,EAAE;QAGhC,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAU,CAAA,UAAA,GAAqB,IAAI;AAMjC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;;QAGrE,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;;QAG5C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;;QAEvF,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;;QAErF,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;YACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;;AAG1D,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,EAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;;AAGjC,IAAA,KAAK,CAAC,MAAW,EAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;;AAG9B,IAAA,WAAW,CAAC,CAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;YACnB,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAG;AACnB,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,aAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAG;AACX,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACxB,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;;;AAlDT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,8EAaf,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAbxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAtBvB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAxBpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBX,EAAA,CAAA;AACC,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAcc,MAAM;2BAAC,eAAe;;MA8CxB,iBAAiB,CAAA;IAE5B,WAAoB,CAAA,MAAiB,EACW,gBAAqC,EAAA;QADjE,IAAM,CAAA,MAAA,GAAN,MAAM;QACsB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;;AAGhE,IAAA,OAAO,CAAC,OAAe,EAAE,OAAA,GAOrB,EAAE,EAAA;AACJ,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;AACpC,QAAA,MAAM,CAAC,YAAY,GAAG,KAAK;AAC3B,QAAA,MAAM,CAAC,QAAQ,GAAG,OAAO;QACzB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO;AAC7C,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM;QACrB,MAAM,CAAC,IAAI,GAAG,EAAC,OAAO,EAAE,OAAO,EAAC;AAEhC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE;;IAGzE,IAAI,CAAC,UASD,EAAE,EAAA;AACJ,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;AACpC,QAAA,MAAM,CAAC,YAAY,GAAG,IAAI;AAC1B,QAAA,MAAM,CAAC,QAAQ,GAAG,OAAO;QACzB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO;AAC7C,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM;AACrB,QAAA,MAAM,CAAC,IAAI,GAAG,EAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAC;AAEjD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE;;IAGzE,aAAa,CAAC,KAAa,EAAE,OAAe,EAAA;AAC1C,QAAA,MAAM,OAAO,GAAG;YACd,KAAK;AACL,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAAE;gBACpF,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;AAChH;SACF;;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;;AArD5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,6CAGR,mBAAmB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAH5B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAIc,MAAM;2BAAC,mBAAmB;;;ACxEnC,MAAO,iBAAkB,SAAQ,eAAe,CAAA;;;;;AAyBpD,IAAA,WAAA,CAAsD,gBAAkC,EAAA;AACtF,QAAA,KAAK,EAAE;QAD6C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAvB7D,IAAU,CAAA,UAAA,GAAiC,EAAE;QAC7C,IAAgB,CAAA,gBAAA,GAAG,KAAK;QAExB,IAAU,CAAA,UAAA,GAAG,aAAa;QAG1B,IAAY,CAAA,YAAA,GAAG,KAAK;QAE7B,IAAS,CAAA,SAAA,GAAG,IAAI,gBAAgB,CAAC;YAC/B,MAAM,EAAE,IAAI,kBAAkB,EAAE;YAChC,QAAQ,EAAE,IAAI,kBAAkB;AACjC,SAAA,CAAC;QAKF,IAAQ,CAAA,QAAA,GAAG,KAAK;AAWhB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAK,KAAI,GAAG;;IAExB,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;;;;;;AAQ5D,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE;;;;;;;;;;;;;;;;;;AAkB3C,QAAA,IAAI,CAAC,iBAAiB,GAAI,IAAI,CAAC,gBAAuC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;;;;;;;;;;AAY1G,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO;;AAGvC,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM;;AAGtC,IAAA,YAAY,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;;AAGzB,IAAA,yBAAyB,CAAC,EAAc,EAAA;;AAGxC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;QAClC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;;;aAErC;YACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;;;;AAK7C,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,OAAO,SAAS;;AAGlB,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;;8GAjHnB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,yUAZf,CAAC;AACJ,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;aAChB,EAAE;AACC,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BL,uhBASA,EAAA,MAAA,EAAA,CAAA,i9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDoBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,aAGZ,CAAC;AACJ,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAmB;yBACjC,EAAE;AACC,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAmB;AACjC;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,uhBAAA,EAAA,MAAA,EAAA,CAAA,i9BAAA,CAAA,EAAA;;0BA2BN;;0BAAY;;0BAAQ;yCAvBxB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,YAAY,EAAA,CAAA;sBADpB,WAAW;uBAAC,qBAAqB;;sBACjC;gBAUD,QAAQ,EAAA,CAAA;sBADP,WAAW;uBAAC,aAAa;;;AEpCtB,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAOtD,IAAA,WAAA,CAAuC,SAAoB,EAAA;QACzD,KAAK,CAAC,SAAS,CAAC;QADqB,IAAS,CAAA,SAAA,GAAT,SAAS;QALvC,IAAK,CAAA,KAAA,GAAkC,SAAS;QAChD,IAAgB,CAAA,gBAAA,GAAoC,OAAO;;IAQpE,QAAQ,GAAA;QACN,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS;;;AAI1B,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;8GAnBzB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,iKCV9B,yaAUA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDAa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cAGX,KAAK,EAAA,QAAA,EAAA,yaAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA;;0BASN;;0BAAY;yCALhB,KAAK,EAAA,CAAA;sBAAb;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;;;MELU,eAAe,CAAA;AAS1B,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAErD,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK;QAEhE,OAAO,aAAa,IAAI,GAAG,GAAG,OAAO,GAAG,OAAO;;AAGjD,IAAA,WAAA,GAAA;QAlBS,IAAI,CAAA,IAAA,GAAqE,EAAE;QAK3E,IAAI,CAAA,IAAA,GAA+D,QAAQ;;8GAPzE,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,wLCR5B,gWAIA,EAAA,MAAA,EAAA,CAAA,koBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApB,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqB,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,gWAAA,EAAA,MAAA,EAAA,CAAA,koBAAA,CAAA,EAAA;wDAIV,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,IAAI,EAAA,CAAA;sBADZ,WAAW;uBAAC,OAAO;;sBACnB;;;MELU,qBAAqB,CAAA;IAYhC,WAAmB,CAAA,SAA4B,EAEzB,gBAAkC,EAAA;QAFrC,IAAS,CAAA,SAAA,GAAT,SAAS;QAEN,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAZ7B,IAAI,CAAA,IAAA,GAAG,KAAK;QACZ,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAU,CAAA,UAAA,GAA0C,EAAE;QACtD,IAAK,CAAA,KAAA,GAAG,MAAM;QAKd,IAAkB,CAAA,kBAAA,GAAG,IAAI;;IAMlC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,YAAY,gBAAgB,EAAE;gBACvH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;;YAEjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACnC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;;;;AAKzC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AAClC,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW;;aACnB;AACL,YAAA,OAAO,CAAE,IAAI,CAAC,UAAiC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;;;IAIxE,QAAQ,GAAA;AACL,QAAA,IAAI,CAAC,UAAiC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC1E,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,MAAM,EAAE;;;8GAtCN,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArB,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,wUCVlC,mUAMA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,mUAAA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA;;0BAeN;;0BAAY;;0BAAQ;yCAXxB,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAGQ,kBAAkB,EAAA,CAAA;sBAD1B,WAAW;uBAAC,kBAAkB;;sBAC9B;;;AEKG,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;IAetD,WAAuC,CAAA,SAAoB,gEAA6D;QACtH,KAAK,CAAC,SAAS,CAAC;QADqB,IAAS,CAAA,SAAA,GAAT,SAAS;QAbvC,IAAI,CAAA,IAAA,GAAG,CAAC;QAER,IAAU,CAAA,UAAA,GAAG,KAAK;QAE3B,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;AAMX,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;;IAOpD,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;;AAGrC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;AAGpC,IAAA,OAAO,CAAC,KAAc,EAAA;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;8GA3BpB,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,qSCzB9B,mtBAcA,EAAA,MAAA,EAAA,CAAA,o4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDWa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cAGZ,KAAK,EAAA,QAAA,EAAA,mtBAAA,EAAA,MAAA,EAAA,CAAA,o4EAAA,CAAA,EAAA;;0BAiBN;;0BAAY;yCAbhB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAMsB,QAAQ,EAAA,CAAA;sBAA9B,SAAS;uBAAC,UAAU;gBAEX,YAAY,EAAA,CAAA;sBAArB;;;AElBG,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAoBlD,IAAA,WAAA,CAAuC,SAAoB,EAAA;QACzD,KAAK,CAAC,SAAS,CAAC;QADqB,IAAS,CAAA,SAAA,GAAT,SAAS;;;;;;;AAZtC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;QAMtC,IAAQ,CAAA,QAAA,GAAG,KAAK;QAEhB,IAAe,CAAA,eAAA,GAAG,MAAM;QAExB,IAAO,CAAA,OAAA,GAAG,KAAK;;IAMf,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;;;;;;;;IAStB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;;;;IAMvB,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;;IAIrB,UAAU,CAAC,GAAQ,EAAA;AAEnB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;IAGpB,iBAAiB,CAAC,EAAO,EAAA;IAEzB,gBAAgB,CAAC,UAAmB,EAAA;8GAtDzB,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,+SCnB1B,khBASA,EAAA,MAAA,EAAA,CAAA,o4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDUa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,cAWP,KAAK,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,o4EAAA,CAAA,EAAA;;0BAuBN;;0BAAY;yCAZf,OAAO,EAAA,CAAA;sBAAhB;gBAEoB,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ;gBACC,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;;;MEJP,cAAc,CAAA;AAezB,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;;IAGtC,WAAY,8CAAoD,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY;QAjBnE,IAAO,CAAA,OAAA,GAAkB,EAAE;QAG3B,IAAY,CAAA,YAAA,GAAQ,EAAE;QACtB,IAAe,CAAA,eAAA,GAAQ,EAAE;QACzB,IAAa,CAAA,aAAA,GAAG,EAAE;;IAc3B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,EAAC,GAAG,EAAC,MAAM,EAAE,KAAK,EAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAC;AACpD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;;;;;;;;;AAUnB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;gBACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,IAAW,EAAE,IAAa,KAAI;AACxD,oBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;wBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC;wBACjE,IAAI,UAAU,EAAE;AACd,4BAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;4BAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAO,EAAE,EAAO,KAAI;AACpC,gCAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;oCAChC,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG;;AAE/D,gCAAA,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE;AAC7C,oCAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG;;AAEvG,gCAAA,OAAO,CAAC;AACV,6BAAC,CAAC;;;AAGN,oBAAA,OAAO,IAAI;AACb,iBAAC;;;;IAKP,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;;IAGrC,OAAO,CAAC,GAAQ,EAAE,GAAgB,EAAA;AAChC,QAAA,IAAI,GAAG,CAAC,SAAS,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;aAC/D;AACL,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAIxB,IAAA,UAAU,CAAC,GAAG,EAAA;AACZ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAE,GAAG,CAAC;;;8GAtEb,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAad,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCpB,wvEA8CA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDpBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,wvEAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA;mFAIV,OAAO,EAAA,CAAA;sBAAf;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAEmB,OAAO,EAAA,CAAA;sBAA1B,SAAS;uBAAC,OAAO;;;ME/BP,eAAe,CAAA;AAK1B,IAAA,WAAA,GAAA;QAFS,IAAI,CAAA,IAAA,GAAG,KAAK;;IAIrB,QAAQ,GAAA;;8GAPG,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,qJCR5B,8EAIA,EAAA,MAAA,EAAA,CAAA,wnBAAA,CAAA,EAAA,CAAA,CAAA;;2FDIa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,8EAAA,EAAA,MAAA,EAAA,CAAA,wnBAAA,CAAA,EAAA;wDAKV,IAAI,EAAA,CAAA;sBADZ,WAAW;uBAAC,YAAY;;sBACxB;;;AEOG,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AAIxD,IAAA,WAAA,CAAsD,gBAAkC;;IAEpE,GAAsB,EAAA;AACxC,QAAA,KAAK,EAAE;QAH6C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAElD,IAAG,CAAA,GAAA,GAAH,GAAG;QAJf,IAAiB,CAAA,iBAAA,GAAG,EAAE;QASrB,IAAQ,CAAA,QAAA,GAAG,IAAI;QACf,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAgB,CAAA,gBAAA,GAAG,MAAM;QACzB,IAAW,CAAA,WAAA,GAAG,IAAI;QAI3B,IAAe,CAAA,eAAA,GAAU,EAAE;AAC3B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;;;QAI9C,IAAY,CAAA,YAAA,GAAG,KAAK;QAKpB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAc,CAAA,cAAA,GAAG,KAAK;QAKtB,IAAY,CAAA,YAAA,GAAG,KAAK;AACpB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAa,IAAI,GAAG,EAAO;AAInC,QAAA,IAAA,CAAA,cAAc,GAAqB,MAAM,KAAK;AAC9C,QAAA,IAAA,CAAA,eAAe,GAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;;IAEjE,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK;AAC5B,YAAA,GAAG,CAAC;AACJ,YAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,YAAY,EAAE,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,WAAW;AACvD,SAAA,CAAC,CAAC;;AAGK,IAAA,aAAa,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;AACnD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;IAG1E,QAAQ,GAAA;;QAIN,KAAK,CAAC,QAAQ,EAAE;;;;;;;AAUhB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;;;;;;;;;;;AAiBtD,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACnE,YAAA,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE;YAE3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAE9C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;iBACvC;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;;AAGhC,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BnC,SAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BJ,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QAChC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;AAqB9B,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC;;AAGxC,IAAA,aAAa,CAAC,CAAM,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGxD,IAAA,MAAM,CAAC,CAAM,EAAA;QACX,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,YAAY,EAAE;YAC9C;;AAEF,QAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;YACtB,IAAI,CAAC,cAAc,EAAE;;;AAIzB,IAAA,sBAAsB,CAAC,CAAM,EAAA;AAC3B,QAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAExG,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;;;;;AAQrB,IAAA,UAAU,CAAC,QAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AAE1B,QAAA,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC7B,QAAQ,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,cAAc,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B;;QAEF,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACxD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAC1D,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC;;YAEjD,QAAQ,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,cAAc,EAAE;YACzB;;;;;;;;AAQF,QAAA,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;YACxC,QAAQ,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,cAAc,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE;YACrB;;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,WAAW,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE;YACvF,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;;;AAI5C,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;gBACxC;;;QAGJ,IAAI,QAAQ,CAAC,GAAG,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE;AACtD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5D,IAAI,GAAG,KAAK,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB;;YAEtD,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;;;QAG5C,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;AACpD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5D,YAAA,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;;;AAI5C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;AAG9B,IAAA,aAAa,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;AAExC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE;AAC5E,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACpG,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;;aAEnE;;AAEL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCtD,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;;;IAKhC,oBAAoB,GAAA;;;;;;;;AAQlB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1H,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE;;;;;AAKvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;IAGhC,SAAS,GAAA;;AAIT,IAAA,QAAQ,CAAC,OAAgB,EAAA;QACvB,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB;;;IAIjD,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;;AAGzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;AAGvE,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,GAAG,CAAC,EAAE,EAAE;gBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;;iBACvE;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;;YAErF,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;AAE9C,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;aACjD;YACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;;;8GAtYtC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,mRAPnB,CAAC;AACJ,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB,aAAA,CAAC,6OCfV,0jHAqDA,EAAA,MAAA,EAAA,CAAA,isCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDnCa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,aAGhB,CAAC;AACJ,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAuB;AACrC,yBAAA,CAAC,cACM,KAAK,EAAA,QAAA,EAAA,0jHAAA,EAAA,MAAA,EAAA,CAAA,isCAAA,CAAA,EAAA;;0BAMN;;0BAAY;;0BAAQ;yEAMxB,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBAiBmB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;gBACI,cAAc,EAAA,CAAA;sBAAnC,SAAS;uBAAC,SAAS;gBAQX,cAAc,EAAA,CAAA;sBAAtB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;;;AEjDG,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AAN1D,IAAA,WAAA,GAAA;;QAQW,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAgB,CAAA,gBAAA,GAAqB,MAAM;QAC3C,IAAW,CAAA,WAAA,GAAG,KAAK;QAEnB,IAAS,CAAA,SAAA,GAAG,IAAI;AAEf,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AACvC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;QAItD,IAAc,CAAA,cAAA,GAAG,KAAK;QAEtB,IAAS,CAAA,SAAA,GAAG,KAAK;AAOT,QAAA,IAAA,CAAA,cAAc,GAAwB;AAC5C,YAAA,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAC;AACrE,YAAA,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC;AACrE,YAAA,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC;AACrE,YAAA,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;SACrE;AAEO,QAAA,IAAA,CAAA,aAAa,GAAwB;AAC3C,YAAA,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAC;AACzE,YAAA,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAC;AACzE,YAAA,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC;AACrE,YAAA,EAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK;SACrE;QAED,IAAW,CAAA,WAAA,GAAG,KAAK;AA2CpB;AA9DC,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,eAAe,GAAG,EAAE,CAAC;;AAoBhE,IAAA,gBAAgB,CAAC,GAAkB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;;;;;AAS7B,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QAAQ,IAAI,CAAC,gBAAgB;AAC3B,YAAA,KAAK,MAAM,EAAE,OAAO,IAAI,CAAC,aAAa;AACtC,YAAA,SAAS,OAAO,IAAI,CAAC,cAAc;;;IAIvC,QAAQ,GAAA;QACN,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC5B,SAAC,CAAC;;AAGJ,IAAA,aAAa,CAAC,MAAM,EAAA;AAClB,QAAA,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;;;IAIpC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;IAG1B,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,eAAe,EAAE;QACxB,MAAM,CAAC,cAAc,EAAE;;8GA7Ed,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0iBCVlC,owDA8BA,EAAA,MAAA,EAAA,CAAA,uhBAAA,EAAA,ybAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDpBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,owDAAA,EAAA,MAAA,EAAA,CAAA,uhBAAA,EAAA,ybAAA,CAAA,EAAA;8BAIV,WAAW,EAAA,CAAA;sBAAnB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,cAAc,EAAA,CAAA;sBAAvB;gBAEyC,QAAQ,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAOpC,KAAK,EAAA,CAAA;sBADR,WAAW;uBAAC,OAAO;gBAsBpB,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC;;;MExCxC,cAAc,CAAA;AAN3B,IAAA,WAAA,GAAA;QAUW,IAAK,CAAA,KAAA,GAAkC,SAAS;AAK1D;8GATY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,iICR3B,kGAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDKa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,kGAAA,EAAA;8BAIV,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;AERH;AACA;AACA;AACA;AACA;AAQM,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAa3D,IAAA,WAAA,CAAuC,OAAkB,EAAA;QACvD,KAAK,CAAC,OAAO,CAAC;QADuB,IAAO,CAAA,OAAA,GAAP,OAAO;QANrC,IAAgB,CAAA,gBAAA,GAAG,OAAO;QAC1B,IAAa,CAAA,aAAA,GAAG,MAAM;AAGtB,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,MAAW,KAAK,IAAI;;;;;AAU9C,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ;AACvE,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;gBACpD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AACzC,gBAAA,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;gBAC/H,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;oBAC1B,EAAE,CAAC,OAAO,EAAE;;AAEd,gBAAA,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;AAC7B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE;oBAClD,IAAI,UAAU,GAAG,KAAK;oBACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxB,wBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK;AACjC,wBAAA,UAAU,GAAG,UAAU,IAAI,OAAO;AAClC,wBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;4BAC9B,IAAI,OAAO,EAAE;gCACV,KAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;;6BAEnC;AACL,4BAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO;;AAE5B,qBAAC,CAAC;AACF,oBAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;AACzC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzC,oBAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE;wBAC9E,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC;;yBACvD;AACL,wBAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC;;AAE7C,iBAAC,CAAC;AACF,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACvD,oBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AAC3D,oBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,SAAS;AAC5D,oBAAA,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC,GAAG;AACxC,iBAAA,CAAC;AACJ,aAAC,CAAC;;;8GA7DK,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,kSChBnC,wMAKA,EAAA,MAAA,EAAA,CAAA,yDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDWa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,wMAAA,EAAA,MAAA,EAAA,CAAA,yDAAA,CAAA,EAAA;;0BAeN;;0BAAY;yCAPhB,cAAc,EAAA,CAAA;sBAAtB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,aAAa,EAAA,CAAA;sBAArB;;;AEjBG,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;AAcxD,IAAA,WAAA,CAAuC,OAAkB,EAAA;QACvD,KAAK,CAAC,OAAO,CAAC;QADuB,IAAO,CAAA,OAAA,GAAP,OAAO;AAX9C,QAAA,IAAA,CAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC;QAE9B,IAAO,CAAA,OAAA,GAAU,EAAE;QACnB,IAAgB,CAAA,gBAAA,GAAG,MAAM;QACzB,IAAa,CAAA,aAAA,GAAG,MAAM;AAGtB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,MAAW,KAAK,IAAI;;;;;AAUrC,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE;YACd,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAO,KAAI;AAClD,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,oBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;AACzD,oBAAA,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAChC,oBAAA,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa;AAC5B,iBAAA,CAAC;AACJ,aAAC,CAAC;;;8GAhCK,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uTCVhC,ocAYA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDFa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,ocAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA;;0BAgBN;;0BAAY;yCAThB,OAAO,EAAA,CAAA;sBAAf;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,aAAa,EAAA,CAAA;sBAArB;;;AETG,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAepD,IAAA,QAAQ,CAAC,KAAK,EAAA;QACV,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACxD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM;AAC3G,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE;;;AAI/C,IAAA,WAAA,CAAuC,SAAoB,gEACvC,EAAa,EAAA;QAC/B,KAAK,CAAC,SAAS,CAAC;QAFqB,IAAS,CAAA,SAAA,GAAT,SAAS;QAC5B,IAAE,CAAA,EAAA,GAAF,EAAE;QAvBb,IAAI,CAAA,IAAA,GAAG,CAAC;QAER,IAAU,CAAA,UAAA,GAAG,KAAK;QAE3B,IAAO,CAAA,OAAA,GAAG,KAAK;AAMf,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE;;IAiB5D,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;AAErB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;;IAGpC,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,YAAA,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;AACjC,YAAA,KAAK,EAAE;AACL,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,MAAa;AACpB,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,CAAE,CAAC,EAAE,CAAC,CAAE;AAChB,wBAAA,YAAY,EAAE;AACf;AACF,iBAAA;AACD,gBAAA,IAAI,EAAE;AACJ,oBAAA,KAAK,EAAE,IAAW;AAClB,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,MAAM,EAAE;AACN,wBAAA,YAAY,EAAE;AACf,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,QAAQ,EAAE;AACR,oBAAA,EAAE,EAAE;AACF,wBAAA,eAAe,EAAE;AACf,4BAAA,WAAW,EAAE;AACX,gCAAA,YAAY,EAAE;AACf;AACF;AACF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,MAAM,EAAE;AACT;AACF;AACF,aAAA;AACD,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,WAAW,EAAE,eAAe;AAC5B,YAAA,QAAQ,EAAE,MAAK,EAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA,EAAE;YACzF,OAAO,EAAE,MAAK;AACZ,gBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC5D,gBAAA,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAK;AAC7C,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACrB,iBAAC,CAAC;aACH;YACD,IAAI,EAAE,IAAI,CAAC;AACZ,SAAA,CAAC;;IAGJ,WAAW,GAAA;QACT,IAAI,GAAG,GAAG,CAAC;AACX,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1G,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACjD,gBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACjD,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM;;AAEhF,gBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;oBACrB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,wBAAA,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,MAAM;AACtE,qBAAC,CAAC;;AAEN,aAAC,CAAC;;AAEJ,QAAA,OAAO,GAAG;;AAGZ,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;;8GAvGN,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,gNCb5B,8PAWA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,08CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDEa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cAGT,KAAK,EAAA,QAAA,EAAA,8PAAA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,08CAAA,CAAA,EAAA;;0BA0BN;;0BAAY;kEAtBhB,IAAI,EAAA,CAAA;sBAAZ;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAWD,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AEOtC,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;AAmC/D,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAc,WAAA,EAAA,IAAI,CAAC,SAAS,EAAE;;AAYvC,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc;;AAGhI,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDhI,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI;;;AAKb,IAAA,WAAA,CAAsD,gBAAkC,EAAA;AAUtF,QAAA,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAVuB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAnF7D,IAAI,CAAA,IAAA,GAAmC,MAAM;QAC7C,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAW,CAAA,WAAA,GAAG,IAAI;QAClB,IAAc,CAAA,cAAA,GAAG,KAAK;QACtB,IAAc,CAAA,cAAA,GAAG,KAAK;QACtB,IAAO,CAAA,OAAA,GAAU,EAAE;QAOnB,IAAS,CAAA,SAAA,GAAgC,MAAM;AAM9C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAiB;QAUxD,IAAe,CAAA,eAAA,GAAU,EAAE;;QAI3B,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAQ,CAAA,QAAA,GAAG,KAAK;;;;;;;;;;;;;;;AA6EhB,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,KAAK,EAAE;;IAG7D,QAAQ,GAAA;QACb,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;QACnC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;AACtD,YAAA,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5F,SAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BJ,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;IAGnC,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;;AAGnC,IAAA,OAAO,CAAC,KAAc,EAAA;QACpB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0D9B,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,MAAM;;;;;;;;;;8GAjQnD,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAdxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BL,qwCAgBA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,4KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDkBa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAlBtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGtB,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA4B;AAC1C,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAA4B;AAC1C;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,qwCAAA,EAAA,MAAA,EAAA,CAAA,o4EAAA,EAAA,4KAAA,CAAA,EAAA;;0BAiHN;;0BAAY;;0BAAQ;yCArFxB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAGG,cAAc,EAAA,CAAA;sBADjB,WAAW;uBAAC,OAAO;gBAKX,SAAS,EAAA,CAAA;sBAAjB;gBAEmB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;gBACqB,MAAM,EAAA,CAAA;sBAA5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACE,MAAM,EAAA,CAAA;sBAA5C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAE3B,YAAY,EAAA,CAAA;sBAArB;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AErDG,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AAIxD,IAAA,WAAA,CAAsD,gBAAkC;;IAEpE,GAAsB,EAAA;AACxC,QAAA,KAAK,EAAE;QAH6C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAElD,IAAG,CAAA,GAAA,GAAH,GAAG;QAJf,IAAiB,CAAA,iBAAA,GAAG,EAAE;QAQrB,IAAS,CAAA,SAAA,GAA8F,EAAE;QAGzG,IAAQ,CAAA,QAAA,GAAG,IAAI;QACf,IAAQ,CAAA,QAAA,GAAG,KAAK;QAChB,IAAgB,CAAA,gBAAA,GAAG,MAAM;QACzB,IAAW,CAAA,WAAA,GAAG,IAAI;QAClB,IAAU,CAAA,UAAA,GAAG,EAAE;QACf,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAgB,CAAA,gBAAA,GAAG,KAAK;QAIjC,IAAe,CAAA,eAAA,GAAU,EAAE;AAC3B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;;;QAI9C,IAAY,CAAA,YAAA,GAAG,KAAK;QAKpB,IAAY,CAAA,YAAA,GAAG,KAAK;QACpB,IAAc,CAAA,cAAA,GAAG,KAAK;QAKtB,IAAY,CAAA,YAAA,GAAG,KAAK;AACpB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC;AACzC,QAAA,IAAA,CAAA,iBAAiB,GAAa,IAAI,GAAG,EAAO;AAInC,QAAA,IAAA,CAAA,cAAc,GAAqB,MAAM,KAAK;AAC9C,QAAA,IAAA,CAAA,eAAe,GAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;;IAEjE,sBAAsB,GAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK;AAC5B,YAAA,GAAG,CAAC;AACJ,YAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC;kBACf,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,WAAW;kBACzF,CAAG,EAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,WAAW;AAC7C,SAAA,CAAC,CAAC;;AAGK,IAAA,aAAa,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;AACnD,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAG1E,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE;AACtD,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;;;IAKlC,QAAQ,GAAA;QAEN,KAAK,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;AA2BhB,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACnE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC;AACf,kBAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,WAAW;AAChE,kBAAE,CAAC,CAAC,WAAW,EAAE;YAEnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAE9C,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;iBACvC;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;;AAGhC,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE;AACZ,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BnC,SAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BJ,IAAA,iBAAiB,CAAC,OAAgB,EAAA;QAChC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;AAqB9B,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC;;AAGxC,IAAA,aAAa,CAAC,CAAM,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAGxD,IAAA,MAAM,CAAC,CAAM,EAAA;QACX,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,YAAY,EAAE;YAC9C;;AAEF,QAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;YACtB,IAAI,CAAC,cAAc,EAAE;;;AAIzB,IAAA,sBAAsB,CAAC,CAAM,EAAA;AAC3B,QAAA,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAExG,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;;;;;AAQrB,IAAA,UAAU,CAAC,QAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;AAE1B,QAAA,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC7B,QAAQ,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,cAAc,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B;;QAEF,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACxD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAC1D,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC;;YAEjD,QAAQ,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,cAAc,EAAE;YACzB;;;;;;;;AAQF,QAAA,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;YACxC,QAAQ,CAAC,eAAe,EAAE;YAC1B,QAAQ,CAAC,cAAc,EAAE;YACzB,IAAI,CAAC,cAAc,EAAE;YACrB;;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,WAAW,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE;YACvF,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;;;AAI5C,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;gBACxC;;;QAGJ,IAAI,QAAQ,CAAC,GAAG,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE;AACtD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YAC5D,IAAI,GAAG,KAAK,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB;;YAEtD,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;;;QAG5C,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;AACpD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5D,YAAA,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;;;AAI5C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAG1B,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;AAG9B,IAAA,aAAa,CAAC,GAAY,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;AAExC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE;AAC5E,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACpG,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;;aAEnE;;AAEL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCtD,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;;;IAKhC,oBAAoB,GAAA;;;;;;;;AAQlB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC1H,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE;;;;;AAKvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;;IAGhC,SAAS,GAAA;;AAIT,IAAA,QAAQ,CAAC,OAAgB,EAAA;QACvB,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,iBAAiB;;;IAIjD,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;;AAGrB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAGpB,IAAA,iBAAiB,CAAC,EAAO,EAAA;;AAGzB,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;;AAGvE,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,GAAG,CAAC,EAAE,EAAE;gBACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;;iBACvE;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;;YAErF,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;AAE9C,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;aACjD;YACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;;;8GArZtC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,wYAPnB,CAAC;AACJ,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB,aAAA,CAAC,kQCzBV,usNAmGA,EAAA,MAAA,EAAA,CAAA,isCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiB,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDvEa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,aAGjB,CAAC;AACJ,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAuB;AACrC,yBAAA,CAAC,cACM,KAAK,EAAA,QAAA,EAAA,usNAAA,EAAA,MAAA,EAAA,CAAA,isCAAA,CAAA,EAAA;;0BAMN;;0BAAY;;0BAAQ;yEAMxB,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBAiBmB,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO;gBACI,cAAc,EAAA,CAAA;sBAAnC,SAAS;uBAAC,SAAS;gBAQX,cAAc,EAAA,CAAA;sBAAtB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;;;MEiFU,QAAQ,CAAA;8GAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,iBA/FjB,eAAe;YACf,cAAc;YACZ,0BAA0B;YAC5B,eAAe;YACf,aAAa;YACb,uBAAuB;YACvB,iBAAiB;YACjB,wBAAwB;YACxB,wBAAwB;YACxB,eAAe;YACf,iBAAiB;YACjB,iBAAiB;YACjB,eAAe;YACf,qBAAqB;YACrB,iBAAiB;YACjB,aAAa;YACb,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,qBAAqB;YACrB,qBAAqB;YACrB,uBAAuB;YACvB,0BAA0B;YAC1B,cAAc;YACd,sBAAsB;YACtB,mBAAmB;YACnB,mBAAmB;AACnB,YAAA,eAAe,aA+BX,YAAY;YACZ,eAAe;YACf,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,oBAAoB;YACpB,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,wBAAwB;YACxB,aAAa;YACb,kBAAkB;YAClB,YAAY;YACZ,aAAa;YACb,eAAe;YACf,cAAc;YACd,cAAc;YACd,iBAAiB;AACjB,YAAA,qBAAqB,aArDzB,qBAAqB;YACrB,mBAAmB;YACnB,qBAAqB;YACrB,qBAAqB;YACrB,eAAe;YACf,eAAe;YACf,eAAe;YACf,iBAAiB;YACjB,sBAAsB;YACtB,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,aAAa;YACb,wBAAwB;YACxB,cAAc;YACZ,0BAA0B;YAC5B,wBAAwB;YACxB,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,iBAAiB;YACjB,uBAAuB;YACvB,eAAe,CAAA,EAAA,CAAA,CAAA;AAuCN,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,EATR,SAAA,EAAA;YACT,aAAa;AACb,YAAA,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAC;AAC5D,YAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAC;YAC7C,EAAC,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,EAAC;YACrE,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAC;YACpE,EAAC,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AACvE,SAAA,EAAA,OAAA,EAAA,CAlCK,YAAY;YACZ,eAAe;YACf,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,oBAAoB;YACpB,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,wBAAwB;YACxB,aAAa;YACb,kBAAkB;YAClB,YAAY;YACZ,aAAa;YACb,eAAe;YACf,cAAc;YACd,cAAc;YACd,iBAAiB;YACjB,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAWhB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAjGpB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,eAAe;wBACf,cAAc;wBACZ,0BAA0B;wBAC5B,eAAe;wBACf,aAAa;wBACb,uBAAuB;wBACvB,iBAAiB;wBACjB,wBAAwB;wBACxB,wBAAwB;wBACxB,eAAe;wBACf,iBAAiB;wBACjB,iBAAiB;wBACjB,eAAe;wBACf,qBAAqB;wBACrB,iBAAiB;wBACjB,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,qBAAqB;wBACrB,qBAAqB;wBACrB,qBAAqB;wBACrB,qBAAqB;wBACrB,uBAAuB;wBACvB,0BAA0B;wBAC1B,cAAc;wBACd,sBAAsB;wBACtB,mBAAmB;wBACnB,mBAAmB;wBACnB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB,sBAAsB;wBACtB,iBAAiB;wBACjB,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,wBAAwB;wBACxB,cAAc;wBACZ,0BAA0B;wBAC5B,wBAAwB;wBACxB,cAAc;wBACd,mBAAmB;wBACnB,eAAe;wBACf,qBAAqB;wBACrB,cAAc;wBACd,iBAAiB;wBACjB,uBAAuB;wBACvB;AACD,qBAAA;AACC,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,cAAc;wBACd,mBAAmB;wBACnB,WAAW;wBACX,gBAAgB;wBAChB,oBAAoB;wBACpB,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,wBAAwB;wBACxB,aAAa;wBACb,kBAAkB;wBAClB,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,iBAAiB;wBACjB;AACH,qBAAA;AACH,oBAAA,SAAS,EAAE;wBACT,aAAa;AACb,wBAAA,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAC;AAC5D,wBAAA,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAC;wBAC7C,EAAC,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,EAAC;wBACrE,EAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAC;wBACpE,EAAC,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AACvE;AACF,iBAAA;;;MClJY,YAAY,CAAA;AAEvB,IAAA,WAAA,CAAoB,YAAyB,EAAA;QAAzB,IAAY,CAAA,YAAA,GAAZ,YAAY;;AAEzB,IAAA,IAAI,CAAC,OAAe,EAAE,OAAA,GAAmD,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,EAAA;QAC7G,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AACpC,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;AAClC,YAAA,UAAU,EAAE,CAAE,OAAO,CAAC,IAAI,IAAI,SAAS;AACxC,SAAA,CAAC;;8GARO,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxB,IAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;AAEG;AAEH;AACA;;ACLA;;AAEG;;;;"}
1
+ {"version":3,"file":"rlucan-ui.mjs","sources":["../../../projects/ui/src/lib/button/button.component.ts","../../../projects/ui/src/lib/button/button.component.html","../../../projects/ui/src/lib/layouts/base/ui-base.component.ts","../../../projects/ui/src/lib/layouts/simple/ui-simple.component.ts","../../../projects/ui/src/lib/services/ui-translate.service.ts","../../../projects/ui/src/lib/elements/validation-message/validation-message.component.ts","../../../projects/ui/src/lib/elements/validation-message/validation-message.component.html","../../../projects/ui/src/lib/layouts/base/ui-base-layout.component.ts","../../../projects/ui/src/lib/layouts/base/ui-base-layout.component.html","../../../projects/ui/src/lib/layouts/simple/ui-simple-layout.component.ts","../../../projects/ui/src/lib/layouts/simple/ui-simple-layout.component.html","../../../projects/ui/src/lib/action-icon/action-icon.component.ts","../../../projects/ui/src/lib/action-icon/action-icon.component.html","../../../projects/ui/src/lib/input/input.component.ts","../../../projects/ui/src/lib/input/input.component.html","../../../projects/ui/src/lib/select/select.component.ts","../../../projects/ui/src/lib/select/select.component.html","../../../projects/ui/src/lib/services/ui-file.service.ts","../../../projects/ui/src/lib/file/file.component.ts","../../../projects/ui/src/lib/file/file.component.html","../../../projects/ui/src/lib/file-uploader/ui-file-uploader.component.ts","../../../projects/ui/src/lib/file-uploader/ui-file-uploader.component.html","../../../projects/ui/src/lib/elements/expander/expander.component.ts","../../../projects/ui/src/lib/elements/expander/expander.component.html","../../../projects/ui/src/lib/directives/force-visibility/force-visibility.directive.ts","../../../projects/ui/src/lib/dialog/dialog.component.ts","../../../projects/ui/src/lib/dialog/dialog.component.html","../../../projects/ui/src/lib/services/message-box.service.ts","../../../projects/ui/src/lib/currency/currency.component.ts","../../../projects/ui/src/lib/currency/currency.component.html","../../../projects/ui/src/lib/checkbox/checkbox.component.ts","../../../projects/ui/src/lib/checkbox/checkbox.component.html","../../../projects/ui/src/lib/avatar/avatar.component.ts","../../../projects/ui/src/lib/avatar/avatar.component.html","../../../projects/ui/src/lib/submit-button/submit-button.component.ts","../../../projects/ui/src/lib/submit-button/submit-button.component.html","../../../projects/ui/src/lib/text-area/text-area.component.ts","../../../projects/ui/src/lib/text-area/text-area.component.html","../../../projects/ui/src/lib/date/date.component.ts","../../../projects/ui/src/lib/date/date.component.html","../../../projects/ui/src/lib/table/table.component.ts","../../../projects/ui/src/lib/table/table.component.html","../../../projects/ui/src/lib/elements/burger/burger.component.ts","../../../projects/ui/src/lib/elements/burger/burger.component.html","../../../projects/ui/src/lib/autocomplete/autocomplete.component.ts","../../../projects/ui/src/lib/autocomplete/autocomplete.component.html","../../../projects/ui/src/lib/action-button/action-button.component.ts","../../../projects/ui/src/lib/action-button/action-button.component.html","../../../projects/ui/src/lib/radio/radio.component.ts","../../../projects/ui/src/lib/radio/radio.component.html","../../../projects/ui/src/lib/checkbox-group/checkbox-group.component.ts","../../../projects/ui/src/lib/checkbox-group/checkbox-group.component.html","../../../projects/ui/src/lib/radio-group/radio-group.component.ts","../../../projects/ui/src/lib/radio-group/radio-group.component.html","../../../projects/ui/src/lib/editor/editor.component.ts","../../../projects/ui/src/lib/editor/editor.component.html","../../../projects/ui/src/lib/input-autocomplete/input-autocomplete.component.ts","../../../projects/ui/src/lib/input-autocomplete/input-autocomplete.component.html","../../../projects/ui/src/lib/auto-complete/auto-complete.component.ts","../../../projects/ui/src/lib/auto-complete/auto-complete.component.html","../../../projects/ui/src/lib/ui.module.ts","../../../projects/ui/src/lib/services/toast.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/rlucan-ui.ts"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\r\nimport { ControlColor, ControlSize } from '../ui.model';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n standalone: false\r\n})\r\nexport class ButtonComponent {\r\n\r\n @Input() type: 'submit' | 'button' = 'button';\r\n @Input() matIconPrefix: any;\r\n @Input() label: string | undefined;\r\n @Input() disabled = false;\r\n @Input() busy = false;\r\n @Input() kind: 'basic' | 'flat' | 'stroked' = 'flat';\r\n @Input() color: ControlColor = 'primary';\r\n @Input() size: ControlSize = 'normal';\r\n\r\n @HostBinding('class')\r\n get class(): string {\r\n return this.kind +\r\n (this.color ? ' ' + this.color : '') +\r\n (this.size ? ' ' + this.size : '') +\r\n ((this.disabled || this.busy) ? ' disabled' : '');\r\n }\r\n\r\n @HostBinding('class.formInvalid')\r\n @Input() formInvalid = false;\r\n\r\n constructor() { }\r\n\r\n get isDisabled(): boolean {\r\n return this.disabled || this.busy;\r\n }\r\n\r\n}\r\n","<button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\">\r\n @if(label) {\r\n <mat-icon *ngIf=\"matIconPrefix\">{{matIconPrefix}}</mat-icon>\r\n {{label}}\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n</button>\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { ValidationErrors } from '@angular/forms';\r\n\r\nexport interface UiValidators {\r\n required?: boolean;\r\n maxLength?: number\r\n}\r\n\r\n@Component({\r\n selector: 'ui-abstract-base-component',\r\n template: '** abstract **',\r\n standalone: false\r\n})\r\nexport abstract class UiBaseComponent implements OnInit {\r\n\r\n @Input() placeholder = '';\r\n @Input() label: string | undefined;\r\n @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n @Input() inputMessagesPosition: 'absolute' | 'relative' = 'relative';\r\n @Input() hint?: string;\r\n\r\n @HostBinding('class')\r\n @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n\r\n // control = new FormControl();\r\n\r\n // controlFormGroup;\r\n\r\n required = false;\r\n\r\n // get control() {\r\n // return this.controlFormGroup.get('text');\r\n // }\r\n\r\n constructor() {\r\n // this.ngControl.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n // console.log(this.controlContainer);\r\n\r\n // this.controlFormGroup.valueChanges.subscribe(v => {\r\n // this.onChange(v);\r\n // });\r\n\r\n // this.ngControl.control.statusChanges.subscribe(v => console.log(v));\r\n //\r\n // this.ngControl.control.markAsTouched = (opts?: {\r\n // onlySelf?: boolean;\r\n // }) => {\r\n // if (!this.control.touched) {\r\n // console.log('marking as touched');\r\n // this.control.markAsTouched(opts);\r\n // }\r\n // this.control.updateValueAndValidity({onlySelf: opts?.onlySelf, emitEvent: false});\r\n // }\r\n\r\n // setTimeout(() => {\r\n // this.applyValidators(this.validators);\r\n // });\r\n }\r\n\r\n // bindValidators(validators: ValidatorFn[]): void {\r\n // this.control.setValidators(validators);\r\n // }\r\n\r\n\r\n\r\n get validationErrors(): ValidationErrors {\r\n return null;\r\n }\r\n\r\n get validationMessage(): string {\r\n return 'obsolete...';\r\n }\r\n\r\n get isInvalid(): boolean {\r\n return false;\r\n }\r\n\r\n // @HostBinding('class')\r\n // get class(): string {\r\n // return (this.isInvalid ? 'invalid ' : '') + this.size;\r\n // }\r\n\r\n\r\n}\r\n","import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n UntypedFormControl,\r\n NgControl,\r\n ValidationErrors, Validator,\r\n ValidatorFn,\r\n Validators, FormControl, ControlContainer, FormGroupDirective\r\n} from '@angular/forms';\r\nimport { UiBaseComponent, UiValidators } from '../base/ui-base.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'ui-abstract-simple-component',\r\n template: '** abstract **',\r\n standalone: false\r\n})\r\nexport abstract class UiSimpleComponent extends UiBaseComponent\r\n implements OnInit, OnChanges, OnDestroy, ControlValueAccessor, Validator { // }, Validator {\r\n\r\n @Input() validators: UiValidators | undefined;\r\n @Input() formControl;\r\n @Input() formControlName;\r\n\r\n componentFormControl: UntypedFormControl;\r\n // tslint:disable-next-line:ban-types\r\n parentFormControl: UntypedFormControl & { _componentFormControl: FormControl; _markAsTouched: Function; _setErrors: Function };\r\n\r\n sub: Subscription = new Subscription();\r\n\r\n constructor(public ngControl: NgControl, // <-- obsolete\r\n protected controlContainer: ControlContainer = null) {\r\n super();\r\n\r\n if (ngControl) {\r\n ngControl.valueAccessor = this;\r\n } else {\r\n this.componentFormControl = new FormControl();\r\n// this.componentFormControl.markAsUntouched();\r\n this.sub.add(this.componentFormControl.valueChanges.subscribe(v => {\r\n try {\r\n // console.log(v, this.componentFormControl.value);\r\n this.onChange(v);\r\n } catch (e) { /*console.error(e);*/\r\n }\r\n } ));\r\n }\r\n // this.ngControl.valueAccessor = this;\r\n }\r\n\r\n get maxLenRequired(): boolean {\r\n return this.componentFormControl.value && (this.componentFormControl.value.length > (this.validators?.maxLength || 0));\r\n }\r\n\r\n get isInvalid(): boolean {\r\n // console.log(this.label, this.componentFormControl.touched);\r\n return this.componentFormControl.touched && !!this.componentFormControl.errors;\r\n }\r\n\r\n get validationErrors(): ValidationErrors {\r\n return this.componentFormControl?.errors;\r\n }\r\n\r\n onChange = (val) => {};\r\n\r\n onTouched = () => {};\r\n\r\n onValidatorChange = () => {};\r\n\r\n ngOnDestroy() {\r\n this.sub.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.ngControl) {\r\n if (this.formControl) {\r\n this.componentFormControl = this.formControl;\r\n } else {\r\n this.componentFormControl = this.ngControl.control as UntypedFormControl;\r\n }\r\n setTimeout(() => this.applyTemplateValidators());\r\n } else {\r\n this.parentFormControl = this.formControlName ?\r\n (this.controlContainer as FormGroupDirective).control.get(this.formControlName) : this.formControl;\r\n if (this.parentFormControl) {\r\n this.componentFormControl.setValidators(this.parentFormControl.validator);\r\n this.parentFormControl._componentFormControl = this.componentFormControl;\r\n if (this.parentFormControl._markAsTouched === undefined) {\r\n this.parentFormControl._markAsTouched = this.parentFormControl.markAsTouched;\r\n this.parentFormControl._setErrors = this.parentFormControl.setErrors;\r\n this.parentFormControl.markAsTouched = ({onlySelf}: { onlySelf?: boolean } = {}): void => {\r\n this.parentFormControl._markAsTouched({onlySelf});\r\n this.parentFormControl._componentFormControl.markAsTouched({onlySelf});\r\n this.componentFormControl.setErrors(this.parentFormControl.errors);\r\n }\r\n this.parentFormControl.setErrors = (errors: any): void => {\r\n this.parentFormControl._setErrors(errors);\r\n this.parentFormControl._componentFormControl.setErrors(errors);\r\n }\r\n }\r\n setTimeout(() => this.applyTemplateValidators());\r\n }\r\n }\r\n }\r\n\r\n applyTemplateValidators(): void {\r\n const inputValidators = this.validators;\r\n if (inputValidators) {\r\n const validators: ValidatorFn[] = [];\r\n Object.keys(inputValidators).forEach(v => {\r\n switch (v) {\r\n case 'required':\r\n validators.push(Validators.required);\r\n this.required = true;\r\n break;\r\n case 'maxLength':\r\n validators.push((c) => {\r\n const requiredLength = inputValidators.maxLength || 0;\r\n if (this.inputLength() > requiredLength) {\r\n return { maxlength: { requiredLength }}\r\n } else {\r\n return null\r\n }\r\n }); // Validators.maxLength(inputValidators.maxLength || 0));\r\n break;\r\n }\r\n });\r\n if (this.parentFormControl) {\r\n this.parentFormControl.setValidators(validators);\r\n this.parentFormControl.updateValueAndValidity({ emitEvent: false });\r\n this.componentFormControl.setValidators(this.parentFormControl.validator);\r\n } else {\r\n this.componentFormControl.addValidators(validators);\r\n this.componentFormControl.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.validators && this.componentFormControl) {\r\n this.applyTemplateValidators(); // changes.validators.currentValue as UiValidators);\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (this.componentFormControl) {\r\n isDisabled ? this.componentFormControl.disable({ emitEvent: false }) : this.componentFormControl.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (!this.ngControl) {\r\n if (obj && obj.error) {\r\n console.log('setting error', obj, obj.error);\r\n this.componentFormControl.setErrors(obj.error === 'clear' ? null : { custom: obj.error }, { emitEvent: false });\r\n } else {\r\n this.componentFormControl.setValue(obj);\r\n }\r\n }\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.onValidatorChange = fn;\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n inputLength() {\r\n return this.componentFormControl.value ? this.componentFormControl.value.length : 0;\r\n }\r\n}\r\n","import { Injectable, InjectionToken } from '@angular/core';\r\n\r\nexport interface IUiTranslateService {\r\n instant: (code: string, data?: any) => string;\r\n}\r\n\r\nexport const UI_TRANSLATESERVICE = new InjectionToken<IUiTranslateService>('IUiTranslateServiceToken');\r\n\r\n@Injectable()\r\nexport class UiTranslateService implements IUiTranslateService {\r\n instant(code: string, data: any): string {\r\n switch (code) {\r\n case 'ui.controls.ui-file-uploader.menu.change': return 'Změnit';\r\n case 'ui.controls.ui-file-uploader.menu.delete': return 'Smazat';\r\n case 'ui.controls.ui-file-uploader.uploadError': return 'Chyba při ukládání souboru';\r\n case 'ui.controls.validation.required': return 'Povinná položka';\r\n case 'ui.controls.validation.email': return 'Neplatný email';\r\n case 'ui.controls.validation.matDatepickerParse': return 'Neplatné datum';\r\n case 'ui.controls.validation.maxlength': return 'Zadej maximálně ' + data.requiredLength + ' znaků';\r\n case 'ui.controls.validation.minlength': return 'Zadej minimálně ' + data.requiredLength + ' znaků';\r\n case 'ui.controls.validation.invalidNumber': return 'Neplatné číslo';\r\n case 'ui.controls.validation.positive': return 'Musí být větší než 0';\r\n case 'ui.controls.validation.cbGroupRequired': return 'Zaškrtni alespoň jednu položku';\r\n case 'ui.controls.ui-select.clear-selection': return 'Zrušit výběr';\r\n case 'ui.controls.ui-select.all': return 'Vše';\r\n case 'ui.controls.ui-select.apply-selection': return 'Použít výběr';\r\n case 'ui.messagebox.button.cancel': return 'Zrušit';\r\n case 'ui.messagebox.button.delete': return 'Smazat';\r\n default: return code;\r\n }\r\n }\r\n}\r\n","import { Component, Inject, Input, OnInit } from '@angular/core';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from '../../services/ui-translate.service';\r\n\r\n@Component({\r\n selector: 'ui-validation-message',\r\n templateUrl: './validation-message.component.html',\r\n standalone: false\r\n})\r\nexport class ValidationMessageComponent implements OnInit {\r\n\r\n @Input() validationErrors;\r\n\r\n constructor(@Inject(UI_TRANSLATESERVICE) protected translateService: IUiTranslateService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n get errorMessage(): string {\r\n let e: any = {code: 'Neznámá chyba'};\r\n const errors = this.validationErrors;\r\n if (errors) {\r\n Object.keys(errors).find(a => {\r\n e = {code: a, data: errors[a]};\r\n return true;\r\n });\r\n switch (e.code) {\r\n case 'required':\r\n case 'cbGroupRequired':\r\n case 'email':\r\n case 'matDatepickerParse':\r\n case 'maxlength':\r\n case 'minlength':\r\n return this.translateService.instant('ui.controls.validation.' + e.code, e.data);\r\n case 'positive':\r\n return this.translateService.instant(isNaN(Number(e.data)) ? 'ui.controls.validation.invalidNumber' : 'ui.controls.validation.positive');\r\n case 'custom':\r\n return this.translateService.instant(e.data);\r\n default:\r\n return this.translateService.instant(e.code);\r\n }\r\n }\r\n }\r\n}\r\n","{{ errorMessage }}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { UiBaseComponent } from './ui-base.component';\r\n\r\n@Component({\r\n selector: 'ui-base-layout',\r\n templateUrl: './ui-base-layout.component.html',\r\n styleUrls: ['./ui-base-layout.component.scss'],\r\n standalone: false\r\n})\r\nexport class UiBaseLayoutComponent {\r\n\r\n @Input() ctx: UiBaseComponent;\r\n\r\n @HostBinding('class')\r\n get class(): string {\r\n return `${this.ctx.isInvalid ? 'invalid ' : ''} ${this.ctx.inputMessagesPosition}`;\r\n }\r\n\r\n}\r\n","<div class=\"label\" *ngIf=\"ctx.label\">\r\n <div class=\"text-container\" [matTooltip]=\"false && ctx.required ? 'Povinná položka' : undefined\" [matTooltipPosition]=\"'above'\">\r\n <div class=\"text\" >{{ctx.label}}</div>\r\n <div *ngIf=\"false && ctx.required\" class=\"required\">*</div>\r\n </div>\r\n <ng-content select=\".counter-top\"></ng-content>\r\n</div>\r\n\r\n<ng-content></ng-content>\r\n\r\n<div class=\"hint-container\" *ngIf=\"ctx.useInputMessages === 'always' || (ctx.useInputMessages === 'ondemand' && (ctx.isInvalid || ctx.hint))\">\r\n <ui-validation-message class=\"invalid\" *ngIf=\"ctx.isInvalid\" [validationErrors]=\"ctx.validationErrors\"></ui-validation-message>\r\n <div class=\"hint\" *ngIf=\"!ctx.isInvalid && ctx.hint\" [innerHTML]=\"ctx.hint\"></div>\r\n <ng-container *ngIf=\"!ctx.label\">\r\n <ng-content select=\".counter-bottom\"></ng-content>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { UiSimpleComponent } from './ui-simple.component';\r\n\r\n@Component({\r\n selector: 'ui-simple-layout',\r\n templateUrl: './ui-simple-layout.component.html'\r\n // styleUrls: [ './ui-simple-layout.component.scss' ]\r\n ,\r\n standalone: false\r\n})\r\nexport class UiSimpleLayoutComponent {\r\n\r\n @Input() ctx: UiSimpleComponent;\r\n\r\n length() {\r\n return this.ctx.inputLength();\r\n }\r\n\r\n}\r\n","<ui-base-layout [ctx]=\"ctx\">\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-top\">\r\n {{ length() }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <div *ngIf=\"ctx.validators?.maxLength\" class=\"counter counter-bottom\">\r\n {{ length() }} / {{ ctx.validators?.maxLength }}\r\n </div>\r\n\r\n <ng-content></ng-content>\r\n\r\n</ui-base-layout>\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { ControlColor, ControlSize } from '../ui.model';\r\n\r\n@Component({\r\n selector: 'ui-action-icon',\r\n templateUrl: './action-icon.component.html',\r\n styleUrls: ['./action-icon.component.scss'],\r\n standalone: false\r\n})\r\nexport class ActionIconComponent implements OnInit {\r\n\r\n @Input() size: ControlSize = 'normal';\r\n\r\n @Input() color: ControlColor = 'primary';\r\n\r\n @Input() disabled = false;\r\n\r\n @Input() busy = false;\r\n\r\n @Input() matIcon = 'close';\r\n\r\n @HostBinding('class')\r\n get class() {\r\n return `${this.size} ${this.color}${this.disabled ? ' disabled': ''}${this.busy ? ' busy' : ''}`;\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<mat-icon>{{matIcon}}</mat-icon>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Host, HostBinding,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, ControlContainer, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\ntype PrefixSuffix = { icon: string, tooltip?: string };\r\n@Component({\r\n selector: 'ui-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', './input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: InputComponent\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: InputComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputComponent extends UiSimpleComponent\r\n implements OnInit { // }, ControlValueAccessor { // }, ControlValueAccessor, Validator { // }, AfterViewInit {\r\n\r\n // UiSimpleComponent = InputComponent;\r\n\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint: string | undefined;\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n // @Input() formControlName;\r\n\r\n // componentFormControl: UntypedFormControl;\r\n //\r\n // ngControl: NgControl;\r\n //\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() formControlName;\r\n //\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint?: string;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n\r\n @Input() prefixIcon: PrefixSuffix;\r\n @Input() suffixIcon: PrefixSuffix;\r\n @Input() type: 'text' | 'number' | 'password' = 'text';\r\n @Input() clearButton = false;\r\n @Input() activeIcons = true;\r\n @Input() forceHasPrefix = false;\r\n @Input() forceHasSuffix = false;\r\n\r\n @HostBinding('class')\r\n get textAlignClass() {\r\n return `text-align-${this.textAlign}`;\r\n }\r\n\r\n @Input() textAlign: 'left' | 'center' | 'right' = 'left';\r\n\r\n @ViewChild('input') input: ElementRef | undefined;\r\n @ViewChild('prefix', { static: true }) prefix: ElementRef | undefined;\r\n @ViewChild('suffix', { static: true }) suffix: ElementRef | undefined;\r\n\r\n @Output() focusChanged = new EventEmitter<boolean>();\r\n @Output() keyPressed = new EventEmitter<KeyboardEvent>();\r\n\r\n get hasPrefix() {\r\n return (this.prefixIcon && this.prefixIcon.icon !== '') || this.prefix?.nativeElement?.innerText !== '' || this.forceHasPrefix;\r\n }\r\n\r\n get hasSuffix() {\r\n return (this.suffixIcon && this.suffixIcon.icon !== '') || this.suffix?.nativeElement?.innerText !== '' || this.forceHasSuffix;\r\n }\r\n\r\n // control = new FormControl();\r\n\r\n required = false;\r\n hasFocus = false;\r\n\r\n value: string;\r\n\r\n // control;\r\n\r\n\r\n // onTouched = () => {};\r\n // onChange = (value) => {};\r\n\r\n // get showInvalid(): boolean {\r\n // return true;\r\n // // return this.control.touched && !!this.control.errors;\r\n // }\r\n\r\n // get validationMessage(): string {\r\n // // console.log(this.control?.errors);\r\n // let e: any = {code: 'Neznámá chyba'};\r\n // const errors = this.control?.errors || {};\r\n // Object.keys(errors).find(a => {\r\n // e = {code: a, data: errors[a]};\r\n // return true;\r\n // });\r\n // switch (e.code) {\r\n // case 'required':\r\n // return this.translateService.instant('ui.controls.validation.required');\r\n // case 'email':\r\n // return this.translateService.instant('ui.controls.validation.email');\r\n // case 'matDatepickerParse':\r\n // return this.translateService.instant('ui.controls.validation.matDatepickerParse');\r\n // case 'maxlength':\r\n // return this.translateService.instant('ui.controls.validation.maxlength', e.data);\r\n // case 'minlength':\r\n // return this.translateService.instant('ui.controls.validation.minlength', e.data);\r\n // case 'positive':\r\n // return this.translateService.instant(isNaN(Number(e.data)) ? 'ui.controls.validation.invalidNumber' : 'ui.controls.validation.positive');\r\n // case 'custom':\r\n // return this.translateService.instant(e.data);\r\n // default:\r\n // return this.translateService.instant(e.code);\r\n // }\r\n // }\r\n\r\n get maxLenRequired(): boolean {\r\n return true;\r\n // return this.control.value && (this.control.value.length > (this.validators?.maxLength || 0));\r\n }\r\n\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n /*\r\n bud pres @Optional() @Self() public control: NgControl a control.valueAccessor = this => ztratime ale custom validaci\r\n anebo pres DI jako providers a pak this.control = viz ngOnInit - pokud jej vubec potrebujem\r\n\r\n */\r\n // private injector: Injector,\r\n // @Optional() @Self() public control: NgControl,\r\n // @Self() private controlDirective: NgControl,\r\n ) {\r\n super(null, controlContainer);\r\n\r\n // this.componentFormControl = new FormControl();\r\n // super();\r\n // super(undefined, /*ngControl*/ translateService);\r\n // super(control);\r\n // console.log(control);\r\n // if (control) {\r\n // control.valueAccessor = this;\r\n // }\r\n\r\n // if (ngControl != null) {\r\n // // Setting the value accessor directly (instead of using\r\n // // the providers) to avoid running into a circular import.\r\n // ngControl.valueAccessor = this;\r\n // }\r\n }\r\n\r\n get showClearButton(): boolean {\r\n return this.clearButton && this.componentFormControl?.value !== '';\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n // console.log('probiha vubec oninit?');\r\n // if (this.ngControl) {\r\n // console.log('from ngControl....??');\r\n // if (this.formControl) {\r\n // this.componentFormControl = this.formControl;\r\n // } else {\r\n // this.componentFormControl = this.ngControl.control as UntypedFormControl;\r\n // }\r\n // setTimeout(() => {\r\n // this.applyValidators();\r\n // });\r\n // } else {\r\n // const control = this.formControlName ?\r\n // (this.controlContainer as FormGroupDirective).control.get(this.formControlName) : this.formControl;\r\n // this.componentFormControl.setValidators(control.validator);\r\n // this.componentFormControl.valueChanges.subscribe(v => console.log('onitin sub', v));\r\n // control._componentFormControl = this.componentFormControl;\r\n // if (control._markAsTouched === undefined) {\r\n // // control._componentFormControl = this.componentFormControl;\r\n // console.log('overriding markAsTouched for', this.formControlName);\r\n // control._markAsTouched = control.markAsTouched;\r\n // control.markAsTouched = ({onlySelf}: { onlySelf?: boolean } = {}): void => {\r\n // console.log('marking as touched', this.componentFormControl.value, control.value, this.xxx.value, control._componentFormControl.value);\r\n // control._markAsTouched({onlySelf});\r\n // setTimeout(() => control._componentFormControl.markAsTouched(), 1000);\r\n // }\r\n // }\r\n // }\r\n }\r\n\r\n clearValue(): void {\r\n this.componentFormControl?.setValue('');\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n focus(): void {\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n onFocus(focus: boolean): void {\r\n setTimeout(() => {\r\n this.hasFocus = focus;\r\n this.focusChanged.emit(focus);\r\n });\r\n }\r\n\r\n onKeypressed($event: any): void {\r\n this.keyPressed.emit($event);\r\n }\r\n\r\n // registerOnChange(onChange: any): void {\r\n // this.onChange = onChange;\r\n // }\r\n //\r\n // registerOnTouched(onTouched: any): void {\r\n // this.onTouched = onTouched;\r\n // }\r\n\r\n // registerOnValidatorChange(fn: () => void): void {\r\n // }\r\n\r\n // setDisabledState(isDisabled: boolean): void {\r\n // // isDisabled ? this.control.disable() : this.control.enable();\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // // this.control = control;\r\n // // console.log(control, control.value, control.errors);\r\n // if (this.value === 'error') {\r\n // return { customError: 'muj error'}\r\n // } else {\r\n // return null;\r\n // }\r\n // // console.log('custom validate');\r\n // // return null;\r\n // }\r\n //\r\n // writeValue(obj: any): void {\r\n // console.log('writevalue: ', obj);\r\n // this.componentFormControl.setValue(obj);\r\n // // this.value = obj;\r\n // // this.control.setValue(obj);\r\n // }\r\n //\r\n // registerOnChange(fn: any): void {\r\n // }\r\n //\r\n // registerOnTouched(fn: any): void {\r\n // }\r\n //\r\n // setDisabledState(isDisabled: boolean): void {\r\n // }\r\n\r\n // modelChange($event: any) {\r\n // console.log($event);\r\n // this.onTouched();\r\n // this.onChange($event)\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // console.log(this.label, 'validate');\r\n // return this.componentFormControl.errors;\r\n // // return undefined;\r\n // }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.parentFormControl) {\r\n return this.parentFormControl._componentFormControl.errors;\r\n }\r\n // console.log('validate', this.componentFormControl.errors);\r\n // // this.componentFormControl.setErrors( { custom: 'xxx' });\r\n // this.componentFormControl.setErrors( this.componentFormControl.errors);\r\n // console.log('validate 2', this.componentFormControl.errors);\r\n // return this.componentFormControl.errors;\r\n // console.log(this.componentFormControl.errors, control.errors, this.parentFormControl.errors, this);\r\n // return this.componentFormControl.errors;\r\n }\r\n}\r\n\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [ngClass]=\"{'has-suffix': hasSuffix, 'has-prefix': hasPrefix, 'has-clear-icon': showClearButton, 'active-icons': activeIcons, 'has-focus': hasFocus}\">\r\n <input #input [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" />\r\n <div #prefix><ng-content select=\"[slot=prefix]\"></ng-content></div>\r\n <div #suffix><ng-content select=\"[slot=suffix]\"></ng-content></div>\r\n <mat-icon *ngIf=\"prefixIcon\" class=\"prefix-icon\" [matTooltip]=\"prefixIcon.tooltip\">{{ prefixIcon.icon }}</mat-icon>\r\n <mat-icon *ngIf=\"suffixIcon\" class=\"suffix-icon\" [matTooltip]=\"suffixIcon.tooltip\">{{ suffixIcon.icon }}</mat-icon>\r\n <ui-action-icon [size]=\"'small'\" [color]=\"'warn'\" *ngIf=\"showClearButton\" (click)=\"clearValue()\" [matIcon]=\"'clear'\" class=\"clear-icon\"></ui-action-icon>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional,\r\n Self,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from '../services/ui-translate.service';\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', './select.component.scss'],\r\n standalone: false\r\n})\r\n\r\nexport class SelectComponent extends UiSimpleComponent implements OnInit, OnChanges {\r\n\r\n @Input() multiple = false;\r\n @Input() triggerFormatter: any;\r\n @Input() valueAttribute: string | undefined;\r\n @Input() resetText: string | undefined;\r\n @Input() displayAttribute: string | undefined;\r\n\r\n @Input() options: any[] = [];\r\n @Input() optionFormatter: ((arg: any) => string | undefined) | undefined = (o) => this.displayAttribute ? o[this.displayAttribute] : o;\r\n @Input() optionTemplateRef?: TemplateRef<any>;\r\n @Input() triggerTemplateRef?: TemplateRef<any>;\r\n @Input() panelClass = '';\r\n @Input() allowEmptySelection = false;\r\n @Input() trackBy: any;\r\n\r\n @ViewChild('select') select?: MatSelect;\r\n\r\n lastCount = -1;\r\n overoption: any;\r\n\r\n constructor(@Optional() @Self() public override ngControl: NgControl,\r\n @Inject(UI_TRANSLATESERVICE) public translateService: IUiTranslateService) {\r\n super(ngControl);\r\n }\r\n\r\n override ngOnInit(): void {\r\n super.ngOnInit();\r\n if (this.multiple && this.componentFormControl) {\r\n this.lastCount = this.componentFormControl.value.length;\r\n this.componentFormControl.valueChanges.subscribe(v => {\r\n if (v.length === 1 && this.lastCount === 0 && this.overoption !== undefined) {\r\n this.select!.selectionChange.emit(this.optionToValue(v));\r\n this.select!.close();\r\n }\r\n this.lastCount = v.length;\r\n });\r\n }\r\n if (this.trackBy && this.componentFormControl && this.componentFormControl.value) {\r\n this.componentFormControl.setValue(this.mapValues(this.componentFormControl.value), {emitEvent: false});\r\n }\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes['options'] && this.componentFormControl && this.trackBy) {\r\n this.componentFormControl.setValue(this.mapValues(this.componentFormControl.value), {emitEvent: false});\r\n }\r\n }\r\n\r\n mapValues(src: any) {\r\n if (src && this.trackBy && this.options) {\r\n if (this.multiple) {\r\n return this.options.filter(o => src.find((v: any) => v[this.trackBy] === o[this.trackBy]));\r\n } else {\r\n return this.options.find(o => o[this.trackBy] === src[this.trackBy]);\r\n }\r\n } else {\r\n return src;\r\n }\r\n }\r\n\r\n optionToValue = (o: any) => this.valueAttribute ? o[this.valueAttribute] : o;\r\n\r\n selectOption(o: any, select: MatSelect) {\r\n select.selectionChange.emit(this.optionToValue(o));\r\n select.close();\r\n }\r\n\r\n selectAll() {\r\n this.componentFormControl.setValue(this.options.map(o => this.optionToValue(o)));\r\n }\r\n\r\n clearAll() {\r\n this.componentFormControl.setValue([]);\r\n }\r\n\r\n override setDisabledState(): void {\r\n }\r\n\r\n override writeValue(obj: any): void {\r\n if (!this.ngControl) {\r\n if (obj && obj.error) {\r\n console.log('setting error', obj, obj.error);\r\n this.componentFormControl.setErrors(obj.error === 'clear' ? null : {custom: obj.error}, {emitEvent: false});\r\n } else {\r\n this.componentFormControl.setValue(this.mapValues(obj));\r\n }\r\n }\r\n }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-select class=\"control-container\" #select [panelClass]=\"panelClass\" [placeholder]=\"placeholder\"\r\n [formControl]=\"componentFormControl\" [multiple]=\"multiple\">\r\n\r\n <mat-select-trigger *ngIf=\"triggerTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTemplateRef\"\r\n [ngTemplateOutletContext]=\"{option:componentFormControl?.value}\"></ng-template>\r\n </mat-select-trigger>\r\n\r\n <mat-select-trigger *ngIf=\"triggerFormatter\"\r\n [innerHTML]=\"componentFormControl?.value ? triggerFormatter(componentFormControl?.value) : ''\"></mat-select-trigger>\r\n\r\n <mat-option *ngIf=\"resetText\">{{ resetText }}</mat-option>\r\n\r\n <mat-option *ngFor=\"let o of options\" [value]=\"optionToValue(o)\">\r\n\r\n <div class=\"over-container\" (mouseenter)=\"overoption = options.indexOf(o);\"\r\n (mouseleave)=\"overoption = undefined\">\r\n </div>\r\n\r\n <div class=\"option-container\" (mouseenter)=\"overoption = options.indexOf(o);\"\r\n (mouseleave)=\"overoption = undefined\">\r\n\r\n <ng-container *ngIf=\"optionTemplateRef\">\r\n <ng-template [ngTemplateOutlet]=\"optionTemplateRef\"\r\n [ngTemplateOutletContext]=\"{option:o}\"></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!optionTemplateRef\">\r\n {{ optionFormatter(o) }}\r\n </ng-container>\r\n\r\n <mat-icon class=\"select-one\" *ngIf=\"multiple && componentFormControl?.value?.length === 0\"\r\n (click)=\"selectOption(o, select)\">north_west\r\n </mat-icon>\r\n </div>\r\n\r\n <mat-icon class=\"select-one\" [ngClass]=\"{visible: overoption === options.indexOf(o)}\"\r\n *ngIf=\"multiple && componentFormControl?.value?.length === 0\" (click)=\"selectOption(o, select)\">\r\n north_west\r\n </mat-icon>\r\n </mat-option>\r\n\r\n <div class=\"buttons\" *ngIf=\"multiple\">\r\n <ui-button style=\"margin-right: auto;\" [kind]=\"'basic'\" [size]=\"'smaller'\"\r\n [label]=\"translateService.instant('ui.controls.ui-select.clear-selection')\"\r\n (click)=\"clearAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" [label]=\"translateService.instant('ui.controls.ui-select.all')\"\r\n (click)=\"selectAll()\"></ui-button>\r\n <ui-button [size]=\"'smaller'\" style=\"padding-left: 0.2em;\"\r\n [disabled]=\"componentFormControl?.value?.length === 0 && !allowEmptySelection\"\r\n [label]=\"translateService.instant('ui.controls.ui-select.apply-selection') + (componentFormControl?.value?.length > 0 ? ' (' + componentFormControl.value.length + ')' : '')\"\r\n (click)=\"select.close()\"></ui-button>\r\n </div>\r\n\r\n </mat-select>\r\n\r\n</ui-simple-layout>\r\n","import { EventEmitter, Inject, Injectable, InjectionToken, Optional } from '@angular/core';\r\nimport { UploadFile, UploadInput } from 'ngx-uploader';\r\nimport { Subject } from 'rxjs';\r\n// import { UiFileUploaderComponent } from '../file-uploader/ui-file-uploader.component';\r\n\r\n// export interface IGetAuthHeader {\r\n// getAuthHeader: () => { [key: string]: string };\r\n// }\r\n\r\nexport interface IUiFileSize {\r\n name: string,\r\n width: number,\r\n height: number,\r\n limit?: 'fit' | 'maxWidth' | 'maxHeight'\r\n}\r\n\r\nexport type IUiFileServiceMessages = 'cropInvalidFileType' | 'extensionNotAllowed' | 'fileAdded' | 'fileRemoved';\r\n\r\nexport interface IUiFileService {\r\n getAuthHeader: () => { [ key: string ]: string },\r\n uploadUrl: (size?: IUiFileSize) => string;\r\n // // upload64Url: string;\r\n getMediaSrc: (size: IUiFileSize, data: any, options: any) => string,\r\n getPreviewUrl: (size: IUiFileSize, data: any) => string,\r\n addFileImgSrc: (size: IUiFileSize) => string,\r\n getMimeType: (data: any) => string;\r\n imageSizes: IUiFileSize[];\r\n concurrentUploads: number,\r\n useRetinaSrc: boolean,\r\n\r\n fileValidation?: (size: IUiFileSize, file: UploadFile) => Promise<boolean>\r\n}\r\n\r\nexport const UI_FILESERVICE = new InjectionToken<IUiFileService>('IUiFileService');\r\n\r\n// export const FileServiceConfigService = new InjectionToken<FileServiceConfig>('FileServiceConfig');\r\n\r\n@Injectable()\r\nexport class UiFileService {\r\n\r\n uploadInput: EventEmitter<UploadInput> = new EventEmitter<UploadInput>();\r\n\r\n uploadSubscription = new Subject();\r\n\r\n filesToRemove: string[] = [];\r\n controls = new Set<any>();\r\n\r\n constructor(@Optional() @Inject(UI_FILESERVICE) public fileServiceConfig: IUiFileService) {\r\n this.uploadSubscription.subscribe((v: any) => {\r\n switch (v.action) {\r\n case 'register': this.controls.add(v.data); return;\r\n case 'destroy': this.controls.delete(v.data); return;\r\n\r\n case 'uploadStarted':\r\n let cnt = 0;\r\n this.controls.forEach(c => cnt += c.hasFilesToUpload ? 1 : 0);\r\n if (cnt === 0) {\r\n this.uploadSubscription.next({action: 'uploadSuccess'});\r\n }\r\n break;\r\n\r\n case 'uploadControlFailed':\r\n case 'uploadControlSuccess':\r\n let cnt2 = 0;\r\n this.controls.forEach(c => cnt2 += c.hasFilesToUpload ? 1 : 0);\r\n if (cnt2 === 0) {\r\n this.uploadSubscription.next({action: v.action === 'uploadControlFailed' ? 'uploadFailed' : 'uploadSuccess'});\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n public upload(): Promise<'uploadSuccess' | 'uploadFailed'> {\r\n const promises = [];\r\n this.controls.forEach(c => promises.push(c.beforeSave()));\r\n\r\n return new Promise<'uploadSuccess' | 'uploadFailed'>((res) => {\r\n\r\n this.uploadSubscription.subscribe((v: any) => {\r\n if (v.action === 'uploadSuccess' || v.action === 'uploadFailed') {\r\n res(v.action);\r\n }\r\n });\r\n\r\n this.uploadSubscription.next({action: 'uploadStarted'});\r\n\r\n Promise.all(promises).then((r) => {\r\n const event: UploadInput = {\r\n type: 'uploadAll',\r\n url: this.fileServiceConfig.uploadUrl(),\r\n method: 'POST',\r\n headers: this.fileServiceConfig.getAuthHeader()\r\n };\r\n\r\n this.uploadInput.emit(event);\r\n\r\n })\r\n });\r\n }\r\n}\r\n","import { Component, HostBinding, Inject, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\r\nimport { IUiFileService, UI_FILESERVICE, UiFileService, IUiFileSize } from '../services/ui-file.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'ui-file',\r\n templateUrl: './file.component.html',\r\n styleUrls: ['./file.component.scss'],\r\n standalone: false\r\n})\r\nexport class FileComponent implements OnChanges {\r\n\r\n private uiFileSize?: IUiFileSize;\r\n\r\n @Input({ required: true })\r\n set fileSize(fs: string | IUiFileSize) {\r\n if (typeof fs === 'string') {\r\n const f = this.fileServiceConfig.imageSizes.find(n => n.name === fs);\r\n if (!f) {\r\n console.error('Missing filesize for ' + fs);\r\n } else {\r\n this.uiFileSize = f;\r\n }\r\n } else {\r\n this.uiFileSize = fs;\r\n }\r\n }\r\n\r\n @Input() srcOptions: any;\r\n @Input() srcData: any;\r\n @Input() srcUrl?: { src: string, mimeType?: string };\r\n\r\n get fitImageFileSize() {\r\n return this.uiFileSize!.limit === 'maxHeight' || this.uiFileSize!.limit === 'maxWidth';\r\n }\r\n\r\n visible = false;\r\n src: any;\r\n srcUrlMimeType?: string;\r\n nativeFileSizeRatio = -1;\r\n nativeFileWidth: any;\r\n nativeFileHeight: any;\r\n\r\n @HostBinding('style.width')\r\n get width(): string {\r\n if (this.fitImageFileSize) {\r\n return '';\r\n // if (this.nativeFileSizeRatio === -1) {\r\n // return '100%';\r\n // } else {\r\n // return this.nativeFileWidth + 'px'\r\n // }\r\n } else {\r\n return this.uiFileSize!.width + 'px';\r\n }\r\n }\r\n\r\n @HostBinding('style.maxWidth')\r\n get maxWidth(): string {\r\n return this.width; // uiFileSize.x + 'px';\r\n // if (this.fileServiceConfig.imageSizes[this.fileSize][0] < 0) {\r\n // return this.width;\r\n // }\r\n // return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][0] + 'px' : undefined;\r\n }\r\n\r\n @HostBinding('style.height')\r\n get height(): string {\r\n if (this.fitImageFileSize) {\r\n return '';\r\n // if (this.nativeFileSizeRatio === -1) {\r\n // return '100%';\r\n // } else {\r\n // return this.nativeFileHeight + 'px';\r\n // }\r\n } else {\r\n return this.uiFileSize!.height + 'px';\r\n }\r\n }\r\n\r\n @HostBinding('style.maxHeight')\r\n get maxHeight(): string {\r\n return this.height; // uiFileSize.y + 'px';\r\n // if (this.fileServiceConfig.imageSizes[this.fileSize][1] < 0) {\r\n // return this.height;\r\n // }\r\n // return this.fileServiceConfig.imageSizes[this.fileSize] ? this.fileServiceConfig.imageSizes[this.fileSize][1] + 'px' : undefined;\r\n }\r\n\r\n get imgStyle() {\r\n const ret: any = {};\r\n switch (this.uiFileSize!.limit) {\r\n case 'maxHeight': ret['height'] = this.uiFileSize!.height + 'px'; break;\r\n case 'maxWidth': ret['width'] = this.uiFileSize!.width + 'px'; break;\r\n default: ret['height'] = '100%'; ret['width'] = '100%';\r\n }\r\n return ret;\r\n }\r\n\r\n get isVideo() {\r\n return this.mime.startsWith('video/');\r\n }\r\n\r\n get mime() {\r\n if (this.srcUrlMimeType) {\r\n return this.srcUrlMimeType\r\n } else {\r\n if (this.srcData.nativeFile) {\r\n return this.srcData.nativeFile.type;\r\n }\r\n return this.fileServiceConfig.getMimeType(this.srcData);\r\n }\r\n }\r\n\r\n get useRetinaSrc() {\r\n return this.fileServiceConfig.useRetinaSrc\r\n }\r\n\r\n constructor(@Optional() @Inject(UI_FILESERVICE) private fileServiceConfig: IUiFileService,\r\n private domSanitizer: DomSanitizer,\r\n private fileService: UiFileService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['srcData']) {\r\n this.nativeFileSizeRatio = -1;\r\n if (changes['srcData'].currentValue.nativeFile) {\r\n const nf = changes['srcData'].currentValue.nativeFile;\r\n\r\n if (nf.type.startsWith('image/') || nf.type.startsWith('video/')) {\r\n this.src = this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(changes['srcData'].currentValue.nativeFile));\r\n\r\n const img = new Image();\r\n\r\n img.onload = () => {\r\n if (this.fitImageFileSize) {\r\n this.nativeFileSizeRatio = Math.max(img.width / this.uiFileSize!.width,\r\n img.height / this.uiFileSize!.height, 1);\r\n } else {\r\n this.nativeFileSizeRatio = 1;\r\n }\r\n this.nativeFileWidth = img.width / this.nativeFileSizeRatio;\r\n this.nativeFileHeight = img.height / this.nativeFileSizeRatio;\r\n URL.revokeObjectURL(img.src);\r\n };\r\n\r\n img.src = URL.createObjectURL(changes['srcData'].currentValue.nativeFile);\r\n } else {\r\n this.src = this.fileServiceConfig.getMediaSrc(this.uiFileSize!, {name: nf.name, mimeType: nf.type }, this.srcOptions);\r\n }\r\n\r\n } else {\r\n this.src = this.fileServiceConfig.getMediaSrc(this.uiFileSize!, changes['srcData'].currentValue, this.srcOptions);\r\n }\r\n }\r\n if (changes['srcUrl']) {\r\n this.src = changes['srcUrl'].currentValue?.src;\r\n if (this.src) {\r\n this.srcUrlMimeType = changes['srcUrl'].currentValue?.mimeType || 'image/png';\r\n } else {\r\n this.srcUrlMimeType = undefined;\r\n }\r\n }\r\n }\r\n}\r\n","<mat-spinner *ngIf=\"visible\"></mat-spinner>\r\n<img *ngIf=\"!isVideo && useRetinaSrc\" [ngStyle]=\"imgStyle\" [src]=\"src\" [srcset]=\"src + ' 2x'\"/>\r\n<img *ngIf=\"!isVideo && !useRetinaSrc\" [ngStyle]=\"imgStyle\" [src]=\"src\" />\r\n<video *ngIf=\"isVideo\" muted controls [src]=\"src\" [ngStyle]=\"imgStyle\"></video>\r\n\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Host,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n SkipSelf\r\n} from '@angular/core';\r\nimport { ControlContainer, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { UploaderOptions, UploadFile, UploadInput, UploadOutput } from 'ngx-uploader';\r\nimport {\r\n IUiFileService,\r\n IUiFileServiceMessages,\r\n UI_FILESERVICE,\r\n UiFileService,\r\n IUiFileSize\r\n} from '../services/ui-file.service';\r\nimport { Dimensions, ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from '../services/ui-translate.service';\r\n\r\nexport interface UploadOutputEx extends UploadOutput {\r\n file: UploadFileEx;\r\n}\r\n\r\nexport interface UploadFileEx extends UploadFile {\r\n imagePreview?: any;\r\n base64?: any;\r\n}\r\n\r\nexport interface IUiUploaderUserMessage {\r\n message: IUiFileServiceMessages,\r\n data: any\r\n}\r\n\r\n@Component({\r\n selector: 'ui-file-uploader',\r\n templateUrl: './ui-file-uploader.component.html',\r\n styleUrls: ['./ui-file-uploader.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: UiFileUploaderComponent,\r\n }],\r\n standalone: false\r\n})\r\nexport class UiFileUploaderComponent extends UiSimpleComponent implements OnInit, OnDestroy {\r\n\r\n private uiFileSize: IUiFileSize;\r\n _fileSize: string | IUiFileSize;\r\n\r\n @Input()\r\n set fileSize(fs: string | IUiFileSize) {\r\n this._fileSize = fs;\r\n if (typeof fs === 'string') {\r\n const f = this.fileServiceConfig.imageSizes.find(n => n.name === fs);\r\n if (!f) {\r\n console.error('Missing filesize for ' + fs);\r\n } else {\r\n this.uiFileSize = f;\r\n }\r\n } else {\r\n this.uiFileSize = fs;\r\n }\r\n }\r\n\r\n @Input() maxFiles = 1;\r\n @Input() multiple = true;\r\n @Input() crop = false;\r\n @Input() cropRounded = false;\r\n @Input() cropMaxWidth;\r\n @Input() customFileMenu = false;\r\n @Input() addHint;\r\n @Input() newFilePosition: 'first' | 'last' = 'last';\r\n\r\n @Input() templates: { menuTemplate?: any, addFileTemplate?: any, fileTemplate?: any, customContentTemplate?: any } = {}\r\n \r\n @Output() cropChanged = new EventEmitter<string>();\r\n\r\n get menuTemplate() {\r\n return this.templates?.menuTemplate;\r\n }\r\n\r\n get addFileTemplate() {\r\n return this.templates?.addFileTemplate;\r\n }\r\n\r\n get customContentTemplate() {\r\n return this.templates?.customContentTemplate;\r\n }\r\n\r\n get fileTemplate() {\r\n return this.templates?.fileTemplate;\r\n }\r\n\r\n @Input() previewPosition: 'left' | 'bottom' | 'above' = 'bottom';\r\n\r\n @Output() imageCropped = new EventEmitter();\r\n @Output() fileEvent = new EventEmitter<IUiUploaderUserMessage>();\r\n\r\n uploadOptions: UploaderOptions = {\r\n concurrency: this.fileServiceConfig.concurrentUploads\r\n };\r\n\r\n public uploading = false;\r\n\r\n changeFileIndex;\r\n\r\n showCropper = false;\r\n menuVisible: any;\r\n showCropPreview = {};\r\n cropPreviewTimeouts = {};\r\n cropSourceImages = {};\r\n cropperImageLoaded = {};\r\n imagesDone = {};\r\n transform: ImageTransform = {};\r\n canvasRotation = {}\r\n\r\n public files : { custom?: any, $newFile?: UploadFile }[];\r\n\r\n public responseFiles;\r\n\r\n refreshAddInput = false;\r\n\r\n fileMenuOpened;\r\n\r\n patchingValues = false;\r\n\r\n inputArray = false;\r\n dragging = false;\r\n\r\n uploaderId = Math.round(Math.random() * 1000000);\r\n\r\n constructor(@Optional() @Inject(UI_FILESERVICE) private fileServiceConfig: IUiFileService,\r\n @Inject(UI_TRANSLATESERVICE) public translateService: IUiTranslateService,\r\n @Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n private fileService: UiFileService) {\r\n\r\n super(null, controlContainer);\r\n\r\n this.fileService.uploadSubscription.next({action: 'register', data: this});\r\n\r\n this.fileService.uploadSubscription.subscribe((v: any) => {\r\n switch (v.action) {\r\n case 'uploadStarted': this.uploading = true; break;\r\n case 'uploadFailed':\r\n case 'uploadSuccess':\r\n setTimeout(() => {\r\n this.uploading = false;\r\n });\r\n this.patchValues();\r\n }\r\n });\r\n }\r\n\r\n get uploadInput(): EventEmitter<UploadInput> {\r\n return this.fileService.uploadInput;\r\n }\r\n\r\n croppedImages = {};\r\n\r\n get editable() {\r\n return this.componentFormControl.enabled;\r\n }\r\n\r\n get ngAddStyle() {\r\n return {\r\n width: Math.abs(this.uiFileSize.width) + 'px',\r\n height: Math.abs(this.uiFileSize.height) + 'px',\r\n }\r\n }\r\n\r\n get aspectRatio() {\r\n return this.uiFileSize.width / this.uiFileSize.height;\r\n }\r\n\r\n get addFileImgSrc() {\r\n return this.fileServiceConfig.addFileImgSrc;\r\n }\r\n\r\n cropDone(f) {\r\n return !f.$newFile || this.imagesDone[f.$newFile.id];\r\n }\r\n\r\n // ngOnInit(): void {\r\n // super.ngOnInit();\r\n // }\r\n\r\n ngOnDestroy(): void {\r\n this.fileService.uploadSubscription.next({action: 'destroy', data: this});\r\n }\r\n\r\n remove(f: any): void {\r\n if (f.$newFile) {\r\n this.uploadInput.emit({type: 'remove', id: f.$newFile.id});\r\n }\r\n this.files.splice(this.files.indexOf(f), 1);\r\n this.prepareResponse();\r\n // this.onChange(this.inputArray ? this.files : (this.files.length > 0 ? this.files[0] : null));\r\n this.fileEvent.emit({ message: 'fileRemoved', data: f });\r\n// this.patchValues();\r\n }\r\n\r\n patchValues(): void {\r\n this.patchingValues = true;\r\n // if (this.inputArray) {\r\n // this.componentFormControl.setValue(this.files.map(f => f.custom));\r\n // } else {\r\n // this.componentFormControl.setValue(this.files.length === 0 ? null : this.files[0].custom);\r\n // }\r\n this.patchingValues = false;\r\n }\r\n\r\n get hasFilesToUpload(): boolean {\r\n return !!this.files.find(f => f.$newFile && f.$newFile.progress.status !== 2);\r\n }\r\n\r\n canImagePreview(type: string) {\r\n return type.startsWith('image/') || type.startsWith('video/');\r\n }\r\n\r\n onUploadOutput($event: UploadOutput, skipCustomValidation = false): void {\r\n switch ($event.type) {\r\n case 'start':\r\n break;\r\n\r\n case 'dragOver':\r\n this.dragging = true;\r\n break;\r\n case 'dragOut':\r\n case 'drop':\r\n this.dragging = false;\r\n break;\r\n\r\n case 'addedToQueue':\r\n if (this.crop && !$event.file.type.startsWith('image/')) {\r\n this.uploadInput.emit({ type: 'remove', id: $event.file.id });\r\n this.fileEvent.emit({ message: 'cropInvalidFileType', data: $event.file });\r\n return;\r\n }\r\n\r\n if (!skipCustomValidation && this.fileServiceConfig.fileValidation) {\r\n this.fileServiceConfig.fileValidation(this.uiFileSize, $event.file).then(valid => {\r\n if (valid) {\r\n this.onUploadOutput($event, true)\r\n } else {\r\n this.uploadInput.emit({ type: 'remove', id: $event.file.id });\r\n // this.fileEvent.emit({ message: 'cropInvalidFileType', data: $event.file });\r\n }\r\n })\r\n } else {\r\n let f;\r\n if (this.changeFileIndex !== undefined) {\r\n f = this.files[this.changeFileIndex];\r\n if (f.$newFile) {\r\n this.uploadInput.emit({ type: 'remove', id: f.$newFile.id });\r\n }\r\n f.$newFile = $event.file;\r\n f.custom = $event.file;\r\n this.changeFileIndex = undefined;\r\n } else {\r\n f = { custom: $event.file, $newFile: $event.file };\r\n if (this.newFilePosition === 'last') {\r\n this.files.push(f);\r\n } else {\r\n this.files.unshift(f);\r\n }\r\n }\r\n if (this.canImagePreview($event.file.type)) {\r\n if (this.crop) {\r\n this.canvasRotation[$event.file.id] = 0;\r\n this.cropSourceImages[$event.file.id] = $event.file.nativeFile;\r\n this.cropperImageLoaded[$event.file.id] = false;\r\n this.cropChanged.emit('started');\r\n }\r\n }\r\n if (!this.crop) {\r\n this.prepareResponse();\r\n }\r\n this.fileEvent.emit({ message: 'fileAdded', data: f });\r\n }\r\n break;\r\n\r\n case 'done':\r\n const df = this.files.find(f => f.$newFile === $event.file);\r\n if (df) {\r\n if (df.$newFile.responseStatus === 200) {\r\n this.files[this.files.indexOf(df)].custom = df.$newFile.response;\r\n df.$newFile = null;\r\n } else {\r\n // console.log('error on upload', df.$event);\r\n }\r\n }\r\n if (!this.hasFilesToUpload) {\r\n this.prepareResponse(false);\r\n this.fileService.uploadSubscription.next({\r\n action: this.files.find(f => !!f.$newFile) ? 'uploadControlFailed' : 'uploadControlSuccess'\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n\r\n prepareResponse(doemit = true) {\r\n if (this.inputArray) {\r\n if (!this.responseFiles) {\r\n this.responseFiles = [];\r\n }\r\n this.responseFiles.length = 0;\r\n this.files.forEach(f => this.responseFiles.push({...f.custom, $newFile: f.$newFile}));\r\n } else {\r\n if (this.files.length === 0) {\r\n this.responseFiles = null;\r\n } else {\r\n if (!this.responseFiles) {\r\n this.responseFiles = {};\r\n }\r\n Object.keys(this.files[0].custom).forEach(k => {\r\n this.responseFiles[k] = this.files[0].custom[k];\r\n });\r\n this.responseFiles.$newFile = this.files[0].$newFile;\r\n }\r\n }\r\n if (doemit) {\r\n this.onChange(this.responseFiles);\r\n if (this.crop) {\r\n this.cropChanged.emit('done');\r\n }\r\n }\r\n\r\n // console.log('emit', this.files[1], { ...this.files[1].custom, $newFile: this.files[1].$newFile });\r\n // this.onChange(this.inputArray ?\r\n // this.files.map(f => ({ ...f.custom, $newFile: f.$newFile})) :\r\n // (this.files.length > 0 ? { ...this.files[0].custom, $newFile: this.files[0].$newFile } : null));\r\n // this.onChange(this.inputArray ?\r\n // this.files :\r\n // (this.files.length > 0 ? this.files[0] : null));\r\n }\r\n\r\n beforeSave() {\r\n return new Promise((res) => {\r\n this.files.forEach(f => {\r\n if (f.$newFile && f.$newFile.progress.status === 2) {\r\n f.$newFile.progress.status = 0;\r\n }\r\n if (this.crop && f.$newFile && !this.imagesDone[f.$newFile.id]) {\r\n this.cropperDone(f.$newFile.id);\r\n }\r\n })\r\n setTimeout(() => {\r\n res('done');\r\n }, 250);\r\n })\r\n }\r\n\r\n fileChangeEvent(event: any, f: any): void {\r\n this.changeFileIndex = this.files.indexOf(f);\r\n }\r\n\r\n startCropPreview(id) {\r\n clearTimeout(this.cropPreviewTimeouts[id]);\r\n this.showCropPreview[id] = !!this.cropSourceImages[id];\r\n }\r\n\r\n stopCropPreview(id) {\r\n this.cropPreviewTimeouts[id] = setTimeout(() => {\r\n this.showCropPreview[id] = false;\r\n }, 250);\r\n }\r\n\r\n zoomCroppedImage(dir, id) {\r\n let scale = this.transform[id].scale;\r\n scale += dir;\r\n if (scale < 0.1) {\r\n scale = 0.1;\r\n }\r\n this.transform[id] = {\r\n ...this.transform[id],\r\n scale\r\n };\r\n }\r\n\r\n rotateCroppedImage(dir, id) {\r\n this.canvasRotation[id] += dir;\r\n const flippedH = this.transform[id].flipH;\r\n const flippedV = this.transform[id].flipV;\r\n this.transform[id] = {\r\n ...this.transform[id],\r\n flipH: flippedV,\r\n flipV: flippedH\r\n };\r\n }\r\n\r\n onImageCropped(event: ImageCroppedEvent, id) {\r\n this.croppedImages[id] = event;\r\n this.imageCropped.emit(event);\r\n }\r\n\r\n imageLoaded(id) {\r\n this.showCropper = true;\r\n setTimeout(() => {\r\n this.transform[id] = {\r\n scale: 1\r\n };\r\n });\r\n }\r\n\r\n cropperReady(sourceImageDimensions: Dimensions, id) {\r\n this.cropperImageLoaded[id] = true;\r\n }\r\n\r\n loadImageFailed() {\r\n }\r\n\r\n toggleMenuVisibility(f) {\r\n this.fileMenuOpened = f;\r\n }\r\n\r\n menuClick() {\r\n this.fileMenuOpened = undefined;\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.inputArray = obj instanceof Array;\r\n if (this.inputArray) {\r\n this.files = obj.map(f => ({ custom: f, $newFile: null }));\r\n } else {\r\n this.files = obj ? [ { custom:obj, $newFile: null} ] : [];\r\n }\r\n this.cropSourceImages = {};\r\n }\r\n\r\n cropperDone(id) {\r\n const f = this.files.find(fx => fx.$newFile && fx.$newFile.id === id);\r\n if (f) {\r\n // const url = this.croppedImages[id];\r\n // console.log(url);\r\n // fetch(url)\r\n // .then(res => res.blob())\r\n // .then(blob => {\r\n // f.$newFile.nativeFile = new File([ blob ], 'crop.png', {\r\n // type: 'image/png'\r\n // });\r\n // f.$newFile.name = 'crop.png';\r\n // f.$newFile.size = f.$newFile.nativeFile.size;\r\n // f.$newFile.type = f.$newFile.nativeFile.type;\r\n // this.imagesDone[id] = true;\r\n // console.log(f);\r\n // })\r\n const croppedImage = this.croppedImages[id];\r\n f.$newFile.nativeFile = new File([ croppedImage.blob ], 'crop.png', {\r\n type: 'image/png'\r\n });\r\n f.$newFile.name = 'crop.png';\r\n f.$newFile.size = f.$newFile.nativeFile.size;\r\n f.$newFile.type = f.$newFile.nativeFile.type;\r\n this.imagesDone[id] = true;\r\n this.prepareResponse();\r\n }\r\n }\r\n\r\n uploadImgSrc() {\r\n return this.addFileImgSrc(this.uiFileSize)\r\n }\r\n}\r\n","<div class=\"label\" *ngIf=\"label\">\r\n <div class=\"text-container\"\r\n [matTooltip]=\"required ? translateService.instant('ui.controls.validation.required') : undefined\"\r\n [matTooltipPosition]=\"'above'\">\r\n <div class=\"text\">{{ label }}</div>\r\n <div *ngIf=\"required\" class=\"required\">*</div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"files-container\" [ngClass]=\"{dragging: dragging, disabled: uploading || !editable}\">\r\n\r\n <div class=\"existing-files\">\r\n\r\n <div class=\"file-container\" *ngFor=\"let f of files\">\r\n\r\n @if (customContentTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"customContentTemplate\" [ngTemplateOutletContext]=\"{fileUploader: this, file: f}\"></ng-template>\r\n }\r\n\r\n <div class=\"file-menu\" (click)=\"toggleMenuVisibility(f)\" *ngIf=\"!customFileMenu && editable && !uploading\">\r\n <mat-icon>menu</mat-icon>\r\n </div>\r\n <div class=\"file-menu-container mat-elevation-z2\" [ngClass]=\"{visible: f === fileMenuOpened}\"\r\n (click)=\"menuClick()\" (mouseleave)=\"menuClick()\">\r\n <ng-container *ngIf=\"!menuTemplate\">\r\n <label class=\"menu-item\">{{ translateService.instant('ui.controls.ui-file-uploader.menu.change') }}\r\n <input *ngIf=\"!refreshAddInput\" style=\"display: none;\" type=\"file\" ngFileSelect\r\n [options]=\"uploadOptions\" (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </label>\r\n <div class=\"menu-item\"\r\n (click)=\"remove(f)\">{{ translateService.instant('ui.controls.ui-file-uploader.menu.delete') }}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"menuTemplate\"\r\n [ngTemplateOutletContext]=\"{fileInput: fileInput}\"></ng-template>\r\n <ng-template #fileInput>\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"crop && !cropDone(f)\" (mouseenter)=\"startCropPreview(f.$newFile.id)\"\r\n (mouseleave)=\"stopCropPreview(f.$newFile.id)\">\r\n <div class=\"crop-container\" [ngStyle]=\"ngAddStyle\">\r\n\r\n <ui-file *ngIf=\"false && files.length > 0 && !cropSourceImages\" [fileSize]=\"null\"\r\n [srcData]=\"files[0].custom\" [ngClass]=\"{rounded: cropRounded}\"></ui-file>\r\n\r\n <mat-spinner *ngIf=\"!cropperImageLoaded[f.$newFile.id] && cropSourceImages[f.$newFile.id]\"\r\n [diameter]=\"75\"></mat-spinner>\r\n\r\n <image-cropper *ngIf=\"cropSourceImages[f.$newFile.id]\"\r\n [imageFile]=\"cropSourceImages[f.$newFile.id]\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"false\"\r\n [aspectRatio]=\"aspectRatio\"\r\n [resizeToWidth]=\"cropMaxWidth\"\r\n [onlyScaleDown]=\"false\"\r\n [roundCropper]=\"cropRounded\"\r\n [canvasRotation]=\"canvasRotation[f.$newFile.id]\"\r\n [transform]=\"transform[f.$newFile.id]\"\r\n [alignImage]=\"'center'\"\r\n [style.display]=\"showCropper ? null : 'none'\"\r\n [format]=\"'png'\"\r\n (imageCropped)=\"onImageCropped($event, f.$newFile.id)\"\r\n (imageLoaded)=\"imageLoaded(f.$newFile.id)\"\r\n (cropperReady)=\"cropperReady($event, f.$newFile.id)\"\r\n (loadImageFailed)=\"loadImageFailed()\"\r\n ></image-cropper>\r\n\r\n <div class=\"crop-preview mat-elevation-z2\" [class]=\"previewPosition\"\r\n *ngIf=\"true || (showCropPreview[f.$newFile.id] && cropperImageLoaded[f.$newFile.id])\">\r\n <div class=\"crop-menu\">\r\n <mat-icon (click)=\"zoomCroppedImage(.1, f.$newFile.id)\">zoom_in</mat-icon>\r\n <mat-icon (click)=\"zoomCroppedImage(- .1, f.$newFile.id)\">zoom_out</mat-icon>\r\n <mat-icon (click)=\"rotateCroppedImage(-1, f.$newFile.id)\">rotate_left</mat-icon>\r\n <mat-icon (click)=\"rotateCroppedImage(1, f.$newFile.id)\">rotate_right</mat-icon>\r\n <div style=\"flex: 1 1 100%\"></div>\r\n <label *ngIf=\"false\" class=\"menu-item\">\r\n <mat-icon>upload_file</mat-icon>\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </label>\r\n <mat-icon (click)=\"remove(f)\">delete_outline</mat-icon>\r\n <div style=\"flex: 1 1 100%\"></div>\r\n <mat-icon (click)=\"cropperDone(f.$newFile.id)\">done</mat-icon>\r\n </div>\r\n <img *ngIf=\"croppedImages[f.$newFile.id]\" [src]=\"croppedImages[f.$newFile.id].objectUrl\"\r\n [ngClass]=\"{rounded: cropRounded}\"/>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <ng-container *ngIf=\"!crop || cropDone(f)\">\r\n <ng-container *ngIf=\"fileTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"fileTemplate\"\r\n [ngTemplateOutletContext]=\"{file: f, fileInput: fileInput2}\"></ng-template>\r\n <ng-template #fileInput2>\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (change)=\"fileChangeEvent($event, f)\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\">\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ui-file *ngIf=\"!fileTemplate\" [fileSize]=\"_fileSize\" [srcData]=\"f.$newFile ? f.$newFile: f.custom\"\r\n [ngClass]=\"{rounded: crop && cropRounded}\">\r\n </ui-file>\r\n\r\n <ng-container *ngIf=\"f.$newFile\">\r\n <div *ngIf=\"f.$newFile.responseStatus && f.$newFile.responseStatus !== 200\"\r\n class=\"progress-container error\">\r\n {{ translateService.instant('ui.controls.ui-file-uploader.uploadError', f.$newFile.response) }}\r\n </div>\r\n <div *ngIf=\"!f.$newFile.responseStatus && f.$newFile.progress.status === 1\"\r\n class=\"progress-container\">\r\n <div class=\"progress\" [ngStyle]=\"{width: f.$newFile.progress.data.percentage + '%'}\"></div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"file-container add\" ngFileDrop [options]=\"uploadOptions\" (uploadOutput)=\"onUploadOutput($event)\"\r\n [uploadInput]=\"uploadInput\" [ngClass]=\"{visible: files.length < maxFiles || maxFiles === 0}\"\r\n [ngStyle]=\"addFileTemplate ? {} : ngAddStyle\">\r\n <label>\r\n @if (addFileTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"addFileTemplate\"></ng-template>\r\n } @else {\r\n <div class=\"upload-image-container\"></div>\r\n <img [src]=\"uploadImgSrc()\" [ngClass]=\"{'with-hint': addHint}\"/>\r\n <div *ngIf=\"addHint\" class=\"add-hint\">{{ addHint }}</div>\r\n }\r\n <input style=\"display: none;\" type=\"file\" ngFileSelect [options]=\"uploadOptions\"\r\n (uploadOutput)=\"onUploadOutput($event)\" [uploadInput]=\"uploadInput\"\r\n [multiple]=\"maxFiles === 0 && multiple\">\r\n </label>\r\n </div>\r\n\r\n</div>\r\n","import {Component, HostBinding, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-expander',\r\n templateUrl: './expander.component.html',\r\n styleUrls: ['./expander.component.scss'],\r\n standalone: false\r\n})\r\nexport class ExpanderComponent implements OnInit {\r\n\r\n @HostBinding('class.expanded')\r\n @Input() expanded = false;\r\n\r\n @HostBinding('class')\r\n @Input() direction: 'right-down' | 'up-down' = 'right-down';\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<mat-icon>keyboard_arrow_up</mat-icon>\r\n","import { Directive, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChange, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[uiForceVisibility]',\r\n exportAs: 'ForceVisibilityDirective',\r\n standalone: false\r\n})\r\nexport class ForceVisibilityDirective implements OnInit, OnChanges {\r\n\r\n private static disabled = false;\r\n\r\n @Input() visibilityWithin: HTMLElement;\r\n @Input() visibilityPadding = 15;\r\n @Input() visibilityOnRequestOnly = false;\r\n @Input() visibilityEmitChange = false;\r\n @Input() visibilityFromTop = 0;\r\n @Input() visibilityCheckEnabled = true;\r\n\r\n @Output() visibilityChanged = new EventEmitter<boolean>();\r\n\r\n private visible;\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n\r\n public static disableFor(timeoutMs: number): void {\r\n this.disabled = true;\r\n setTimeout(() => this.disabled = false, timeoutMs);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.visibilityOnRequestOnly && !this.visibilityEmitChange) {\r\n setTimeout(() => {\r\n this.forceVisibility();\r\n }, 125);\r\n }\r\n if (this.visibilityEmitChange) {\r\n if (!this.visibilityWithin) {\r\n throw Error('traceVisibilityChanged requires visibilityWithin')\r\n } else {\r\n this.visible = this.isVisible();\r\n this.visibilityWithin.onscroll = () => {\r\n const v = this.isVisible();\r\n if (v !== this.visible) {\r\n this.visible = v;\r\n this.visibilityChanged.emit(v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.visibilityCheckEnabled && changes.visibilityCheckEnabled.currentValue !== changes.visibilityCheckEnabled.previousValue) {\r\n this.forceVisibility();\r\n }\r\n }\r\n\r\n private isVisible() {\r\n const rect = (this.el.nativeElement as HTMLElement).getBoundingClientRect();\r\n const rectIn = this.visibilityWithin.getBoundingClientRect();\r\n return rect.top + +this.visibilityPadding - rectIn.bottom < 0;\r\n }\r\n\r\n public forceVisibility(): void {\r\n if (ForceVisibilityDirective.disabled || !this.visibilityCheckEnabled) {\r\n return;\r\n }\r\n const rect = (this.el.nativeElement as HTMLElement).getBoundingClientRect();\r\n const padding = +this.visibilityPadding;\r\n if (this.visibilityWithin) {\r\n const rectIn = this.visibilityWithin.getBoundingClientRect();\r\n let diff = rect.top + rect.height + padding - rectIn.bottom;\r\n if (diff > 0) {\r\n this.visibilityWithin.scrollBy(0, diff);\r\n } else {\r\n diff = rect.top - rectIn.top - padding;\r\n if (diff < 0) {\r\n this.visibilityWithin.scrollBy(0, diff);\r\n }\r\n }\r\n } else {\r\n if (this.visibilityFromTop !== 0) {\r\n document.getElementsByTagName('app-root')[0].scrollTo(0, rect.top - +this.visibilityFromTop);\r\n } else {\r\n if (rect.bottom > window.innerHeight) {\r\n document.getElementsByTagName('app-root')[0].scrollBy(0, rect.bottom - window.innerHeight + 15);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import {MatDialogRef} from '@angular/material/dialog';\r\nimport {Component, Input} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n standalone: false\r\n})\r\nexport class DialogComponent {\r\n\r\n @Input() title = '';\r\n @Input() draggable = false; // true;\r\n @Input() hideCloseButton = false;\r\n\r\n @Input() close: (() => void) | undefined;\r\n\r\n constructor(public dialogRef: MatDialogRef<DialogComponent>) {\r\n }\r\n\r\n clickClose(): void {\r\n if (!this.close) {\r\n this.dialogRef.close();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n\r\n}\r\n","<ui-action-icon *ngIf=\"title && !hideCloseButton\" (click)=\"clickClose()\" class=\"close-icon\" [matIcon]=\"'close'\" [color]=\"'warn'\"></ui-action-icon>\r\n\r\n<ng-container *ngIf=\"title\">\r\n <h1 class=\"draggable\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle mat-dialog-title *ngIf=\"draggable\">\r\n {{title}}\r\n </h1>\r\n <h1 mat-dialog-title *ngIf=\"!draggable\">\r\n {{title}}\r\n </h1>\r\n</ng-container>\r\n\r\n<ng-content></ng-content>\r\n","import { Component, Inject, Injectable, TemplateRef } from '@angular/core';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { IUiTranslateService, UI_TRANSLATESERVICE } from './ui-translate.service';\r\n\r\nexport interface MessageBoxButton {\r\n id: string;\r\n text: string;\r\n kind?: 'basic' | 'flat' | 'stroked';\r\n color?: 'primary' | 'accent' | 'warn';\r\n process?: () => Promise<any>;\r\n disabled?: () => boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ui-message-box-modal',\r\n template: `\r\n <ui-dialog [title]=\"title\" [hideCloseButton]=\"hideCloseButton\">\r\n <div mat-dialog-content *ngIf=\"message\" style=\"padding: 7px 16px 12px 16px;\">\r\n <div [innerHTML]=\"message\" style=\"line-height: 24px;\"></div>\r\n <pre *ngIf=\"errorMessage\" [innerHTML]=\"errorMessage\"></pre>\r\n <pre *ngIf=\"errorDetail\" [innerHTML]=\"errorDetail\"></pre>\r\n </div>\r\n \r\n <div mat-dialog-content *ngIf=\"template\" style=\"padding: 7px 16px 12px 16px;\">\r\n <ng-template [ngTemplateOutlet]=\"template\"></ng-template>\r\n </div>\r\n\r\n <div mat-dialog-actions>\r\n <div class=\"buttons\">\r\n <ui-button *ngFor=\"let b of buttons\" [color]=\"b.color || 'primary'\" [tabIndex]=\"-1\"\r\n [kind]=\"b.kind || 'stroked'\" [busy]=\"processing === b\" [disabled]=\"!!processing || (b.disabled && b.disabled())\" (click)=\"buttonClick(b)\" [label]=\"b.text\"></ui-button>\r\n </div>\r\n </div>\r\n </ui-dialog>\r\n `,\r\n standalone: false\r\n})\r\nexport class MessageBoxModalComponent {\r\n\r\n message;\r\n errorMessage;\r\n errorDetail;\r\n buttons: MessageBoxButton[] = [];\r\n title: string;\r\n template: any;\r\n hideCloseButton = false;\r\n processing: MessageBoxButton = null;\r\n\r\n constructor(public dialogRef: MatDialogRef<MessageBoxModalComponent>,\r\n public sanitizer: DomSanitizer,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n\r\n if (data.message) {\r\n this.message = this.sanitizer.bypassSecurityTrustHtml(data.message);\r\n }\r\n\r\n if (this.data.options.template) {\r\n this.template = this.data.options.template;\r\n }\r\n\r\n if (this.data.options.errorMessage) {\r\n this.errorMessage = this.sanitizer.bypassSecurityTrustHtml(data.options.errorMessage);\r\n }\r\n if (this.data.options.errorDetail) {\r\n this.errorDetail = this.sanitizer.bypassSecurityTrustHtml(data.options.errorDetail);\r\n }\r\n if (this.data.options.hideCloseButton !== undefined) {\r\n this.hideCloseButton = this.data.options.hideCloseButton;\r\n }\r\n\r\n this.buttons = data.options.buttons ? data.options.buttons : [{id: 'close', text: 'Close'}];\r\n this.title = data.options.title;\r\n }\r\n\r\n close(result: any): void {\r\n this.dialogRef.close(result);\r\n }\r\n\r\n buttonClick(b: MessageBoxButton) {\r\n if (b.process) {\r\n this.processing = b;\r\n b.process().then(r => {\r\n this.close(r);\r\n }).catch(e => {\r\n this.processing = null;\r\n })\r\n } else {\r\n this.close(b.id);\r\n }\r\n }\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageBoxService {\r\n\r\n constructor(private dialog: MatDialog,\r\n @Inject(UI_TRANSLATESERVICE) public translateService: IUiTranslateService) {\r\n }\r\n\r\n confirm(message: string, options: {\r\n buttons?: MessageBoxButton[],\r\n title?: string,\r\n errorMessage?: string,\r\n errorDetail?: string,\r\n hideCloseButton?: boolean,\r\n maxWidth?: string\r\n } = {}): Observable<any> {\r\n const config = new MatDialogConfig();\r\n config.disableClose = false;\r\n config.minWidth = '340px';\r\n config.maxWidth = options.maxWidth || '600px';\r\n config.width = '40vw';\r\n config.data = {message, options};\r\n\r\n return this.dialog.open(MessageBoxModalComponent, config).afterClosed();\r\n }\r\n\r\n open(options: {\r\n buttons?: MessageBoxButton[],\r\n title?: string,\r\n errorMessage?: string,\r\n errorDetail?: string,\r\n hideCloseButton?: boolean,\r\n maxWidth?: string,\r\n message?: string,\r\n template?: TemplateRef<any>\r\n } = {}): Observable<any> {\r\n const config = new MatDialogConfig();\r\n config.disableClose = true;\r\n config.minWidth = '340px';\r\n config.maxWidth = options.maxWidth || '600px';\r\n config.width = '40vw';\r\n config.data = {message: options.message, options};\r\n\r\n return this.dialog.open(MessageBoxModalComponent, config).afterClosed();\r\n }\r\n\r\n confirmDelete(title: string, message: string): Observable<any> {\r\n const options = {\r\n title,\r\n buttons: [\r\n { id: 'cancel', text: this.translateService.instant('ui.messagebox.button.cancel') },\r\n { id: 'delete', text: this.translateService.instant('ui.messagebox.button.delete'), color: 'warn', kind: 'flat' }\r\n ]\r\n };\r\n // @ts-ignore\r\n return this.confirm(message, options);\r\n }\r\n\r\n\r\n}\r\n","import { Component, Host, HostBinding, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { UiBaseComponent } from '../layouts/base/ui-base.component';\r\nimport {\r\n AbstractControl, ControlContainer,\r\n ControlValueAccessor,\r\n UntypedFormControl,\r\n UntypedFormGroup, FormGroupDirective,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ui-currency',\r\n templateUrl: './currency.component.html',\r\n styleUrls: ['./currency.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: CurrencyComponent\r\n }, {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: CurrencyComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class CurrencyComponent extends UiBaseComponent implements OnInit, ControlValueAccessor, Validator {\r\n\r\n @Input() currencies: Partial<{ code: string; }>[] = [];\r\n @Input() currencyDisabled = false;\r\n @Input() formControlName: string;\r\n @Input() panelClass = 'ui-currency';\r\n\r\n @HostBinding('class.amount-hidden')\r\n @Input() amountHidden = false;\r\n\r\n formGroup = new UntypedFormGroup({\r\n amount: new UntypedFormControl(),\r\n currency: new UntypedFormControl()\r\n });\r\n\r\n parentFormControl: AbstractControl;\r\n\r\n @HostBinding('class.focus')\r\n hasFocus = false;\r\n\r\n // @HostBinding('class')\r\n // get sizeClass(): string {\r\n // return this.size;\r\n // }\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer) {\r\n super();\r\n }\r\n\r\n onChange = (value) => {};\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.formGroup.valueChanges.subscribe(v => this.onChange(v));\r\n // this.formGroup = new FormGroup({\r\n // amount: new FormControl(this.control?.value.amount),\r\n // currency: new FormControl(this.currencies.find(c => c.code === this.control?.value.currency.code))\r\n // });\r\n // this.formGroup.valueChanges.subscribe(v => {\r\n // this.onChange(this.formGroup?.getRawValue());\r\n // });\r\n if (this.currencyDisabled) {\r\n this.formGroup.get('currency')?.disable();\r\n }\r\n // this.ngControl.control.statusChanges.subscribe(s => {\r\n // if (s === 'INVALID') {\r\n // // this.formGroup?.get('amount')?.setErrors(this.control?.errors || null);\r\n // this.formGroup?.get('currency')?.markAsTouched();\r\n // // this.formGroup?.get('currency')?.setErrors(this.control?.errors || null);\r\n // }\r\n // if (s === 'DISABLED') {\r\n // this.formGroup?.disable({emitEvent: false});\r\n // }\r\n // if (s === 'VALID') {\r\n // this.formGroup?.enable({emitEvent: false});\r\n // if (this.currencyDisabled) {\r\n // this.formGroup?.get('currency')?.disable({emitEvent: false});\r\n // }\r\n // }\r\n // });\r\n this.parentFormControl = (this.controlContainer as FormGroupDirective).control.get(this.formControlName);\r\n }\r\n\r\n // bindValidators(validators) {\r\n // console.log('binding validators', validators);\r\n // if (this.formGroup) {\r\n // this.formGroup.get('amount').setValidators(validators);\r\n // this.formGroup.get('currency').markAsTouched();\r\n // this.formGroup.get('currency').setErrors(validators);\r\n // }\r\n // }\r\n\r\n get isInvalid(): boolean {\r\n return this.parentFormControl.invalid;\r\n }\r\n\r\n get validationErrors(): ValidationErrors {\r\n return this.parentFormControl.errors;\r\n }\r\n\r\n focusChanged(hasFocus: boolean): void {\r\n this.hasFocus = hasFocus;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.formGroup.get('amount').disable();\r\n if (!this.currencyDisabled) {\r\n this.formGroup.get('currency').disable();\r\n }\r\n } else {\r\n this.formGroup.get('amount').enable();\r\n if (!this.currencyDisabled) {\r\n this.formGroup.get('currency').enable();\r\n }\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return undefined;\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.formGroup.setValue(obj);\r\n }\r\n}\r\n","<ui-base-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [formGroup]=\"formGroup\">\r\n <ui-input *ngIf=\"!amountHidden\" [textAlign]=\"'right'\" [formControlName]=\"'amount'\" [placeholder]=\"placeholder\" #input [useInputMessages]=\"'never'\" (focusChanged)=\"focusChanged($event)\"></ui-input>\r\n <ui-select [panelClass]=\"panelClass\" [formControlName]=\"'currency'\" [displayAttribute]=\"'symbol'\" [options]=\"currencies\" [useInputMessages]=\"'never'\"></ui-select>\r\n</div>\r\n\r\n</ui-base-layout>\r\n\r\n","import { Component, Host, HostBinding, Input, OnInit, Optional, Self } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\n@Component({\r\n selector: 'ui-checkbox',\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n standalone: false\r\n})\r\nexport class CheckboxComponent extends UiSimpleComponent implements OnInit {\r\n\r\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary';\r\n @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'never';\r\n\r\n text;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n super(ngControl);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n if (this.label) {\r\n this.text = this.label;\r\n this.label = undefined;\r\n }\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n <div class=\"control-container\">\r\n <mat-checkbox [formControl]=\"componentFormControl\" [color]=\"color\" [class]=\"size\">\r\n <div *ngIf=\"!text\"><ng-content></ng-content></div>\r\n <div *ngIf=\"text\" [innerHTML]=\"text\"></div>\r\n </mat-checkbox>\r\n <div *ngIf=\"hint\" class=\"hint\" [innerHTML]=\"hint\"></div>\r\n </div>\r\n</ui-simple-layout>\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-avatar',\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n standalone: false\r\n})\r\nexport class AvatarComponent {\r\n\r\n @Input({ required: true }) user: Partial<{ avatar: any, shortName: string, shortColour: string }> = {};\r\n\r\n @Input() srcOptions;\r\n\r\n @HostBinding('class')\r\n @Input() size: 'big' | 'bigger' | 'normal' | 'smaller' | 'small' | 'mini' = 'normal';\r\n @Input() diameter: string | undefined;\r\n \r\n private get styleDiameter() {\r\n if (this.diameter === undefined) {\r\n return undefined;\r\n }\r\n if (!isNaN(Number(this.diameter))) {\r\n return this.diameter + 'px';\r\n }\r\n return this.diameter;\r\n }\r\n \r\n @HostBinding('style.height')\r\n get height() {\r\n return this.styleDiameter;\r\n }\r\n \r\n @HostBinding('style.width')\r\n get width() {\r\n return this.styleDiameter;\r\n }\r\n \r\n get fontSize() {\r\n if (this.diameter === undefined) {\r\n return undefined;\r\n }\r\n return 'calc(' + this.styleDiameter + ' / 2)';\r\n }\r\n \r\n get paddingBottom() {\r\n if (this.diameter === undefined) {\r\n return undefined;\r\n }\r\n return 'calc(' + this.styleDiameter + ' / 20)';\r\n }\r\n \r\n get contrast(): string {\r\n const hexCode = this.user!.shortColour!.substring(1, 7);\r\n\r\n const hexR = parseInt(hexCode.substring(0, 2), 16);\r\n const hexG = parseInt(hexCode.substring(2, 4), 16);\r\n const hexB = parseInt(hexCode.substring(4, 6), 16);\r\n const contrastRatio = hexR * 0.299 + hexG * 0.587 + hexB * 0.114;\r\n\r\n return contrastRatio >= 200 ? 'black' : 'white';\r\n }\r\n\r\n constructor() { }\r\n\r\n}\r\n","@if (user.avatar || (!user.avatar && !user.shortName)) {\r\n <ui-file [fileSize]=\"'avatar-' + size\" [srcData]=\"user.avatar || { mimeType: 'image/png'}\" [srcOptions]=\"srcOptions\" ></ui-file>\r\n}\r\n@if (!user.avatar && user.shortName) {\r\n <div [ngStyle]=\"{backgroundColor: user.shortColour, color: contrast, 'font-size': fontSize, 'padding-bottom': paddingBottom}\">\r\n {{ user.shortName }}\r\n </div>\r\n}\r\n","import {Component, Host, HostBinding, Input, OnInit, Optional, SkipSelf} from '@angular/core';\r\nimport {ControlContainer, UntypedFormGroup} from '@angular/forms';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'ui-submit-button',\r\n templateUrl: './submit-button.component.html',\r\n styleUrls: ['./submit-button.component.scss'],\r\n standalone: false\r\n})\r\nexport class SubmitButtonComponent implements OnInit {\r\n\r\n @Input() busy = false;\r\n @Input() disabled = false;\r\n @Input() formGroups: UntypedFormGroup | UntypedFormGroup[] = [];\r\n @Input() label = 'Save';\r\n @Input() submit: (() => void) | undefined;\r\n @Input() formInvalid: boolean | undefined;\r\n\r\n @HostBinding('class.with-close')\r\n @Input() prependCloseButton = true;\r\n\r\n constructor(public dialogRef: MatDialogRef<any>,\r\n @Optional() @Host() @SkipSelf()\r\n protected controlContainer: ControlContainer) { }\r\n\r\n ngOnInit(): void {\r\n if (this.formInvalid === undefined) {\r\n if (this.formGroups === undefined && this.controlContainer && this.controlContainer.control instanceof UntypedFormGroup) {\r\n this.formGroups = this.controlContainer.control;\r\n }\r\n if (!Array.isArray(this.formGroups)) {\r\n this.formGroups = [this.formGroups];\r\n }\r\n }\r\n }\r\n\r\n get formsValid(): boolean {\r\n if (this.formInvalid !== undefined) {\r\n return !this.formInvalid;\r\n } else {\r\n return !(this.formGroups as UntypedFormGroup[]).find(f => f.invalid);\r\n }\r\n }\r\n\r\n doSubmit(): void {\r\n (this.formGroups as UntypedFormGroup[]).forEach(f => f.markAllAsTouched());\r\n if (this.formsValid && this.submit) {\r\n this.submit();\r\n }\r\n }\r\n}\r\n","<ui-button *ngIf=\"prependCloseButton\" [label]=\"'Close'\" (click)=\"dialogRef.close()\"></ui-button>\r\n\r\n<ui-button [busy]=\"busy\"\r\n [disabled]=\"disabled || busy\" [type]=\"'submit'\"\r\n [formInvalid]=\"!formsValid\"\r\n [label]=\"label\" (click)=\"doSubmit()\"></ui-button>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n NgZone,\r\n Optional,\r\n Output,\r\n Self,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { CdkTextareaAutosize } from '@angular/cdk/text-field';\r\nimport { take } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ui-text-area',\r\n templateUrl: './text-area.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss'],\r\n standalone: false\r\n})\r\nexport class TextAreaComponent extends UiSimpleComponent {\r\n\r\n @Input() rows = 5;\r\n\r\n @Input() autoResize = false;\r\n\r\n lastClientHeight = -1;\r\n // height = -1;\r\n\r\n\r\n @ViewChild('textarea') textarea: ElementRef;\r\n\r\n @Output() focusChanged = new EventEmitter<boolean>();\r\n\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl/*, private _ngZone: NgZone, private cdr: ChangeDetectorRef*/) {\r\n super(ngControl);\r\n }\r\n\r\n focus(): void {\r\n this.textarea.nativeElement.focus();\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n }\r\n\r\n onFocus(focus: boolean): void {\r\n this.focusChanged.emit(focus);\r\n }\r\n\r\n\r\n // onKeydown() {\r\n // // setTimeout(() => {\r\n // console.log('onkeydown');\r\n // // if (this.lastClientHeight !== this.textarea.nativeElement.clientHeight + 20) {\r\n // this.height = this.textarea.nativeElement.clientHeight + 20;\r\n // // this.textarea.nativeElement.setAttribute('style', 'color: white; background: red; height: ' + this.height + 'px;');\r\n // // this.cdr.detectChanges();\r\n // this.lastClientHeight = this.height;\r\n // console.log(this.height);\r\n // // }\r\n // // });\r\n // }\r\n\r\n // @ViewChild('autosize') autosize: CdkTextareaAutosize;\r\n //\r\n // triggerResize() {\r\n // // Wait for changes to be applied, then trigger textarea resize.\r\n // this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n // console.log('xxx');\r\n // this.autosize.resizeToFitContent(true)\r\n // });\r\n // }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"input-wrapper\">\r\n <ng-container *ngIf=\"componentFormControl\">\r\n <textarea *ngIf=\"autoResize \"#textarea matInput\r\n cdkTextareaAutosize cdkAutosizeMinRows=\"rows\"\r\n class=\"autoresize\"\r\n [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" [rows]=\"rows\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\"></textarea>\r\n <textarea *ngIf=\"!autoResize \"#textarea matInput\r\n [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" [rows]=\"rows\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\"></textarea>\r\n </ng-container>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import { Component, EventEmitter, Optional, Output, Self, TemplateRef, ViewChild } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\n@Component({\r\n selector: 'ui-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss']\r\n // providers: [\r\n // {\r\n // provide: NG_VALUE_ACCESSOR,\r\n // multi: true,\r\n // useExisting: forwardRef(() => DateComponent),\r\n // }\r\n // ]\r\n ,\r\n standalone: false\r\n})\r\n\r\nexport class DateComponent extends UiSimpleComponent { // implements ControlValueAccessor {\r\n // @Input() placeholder: string | undefined;\r\n // @Input() control;\r\n // // @Input() controlName;\r\n // @Input() label;\r\n // @Input() type;\r\n // @Input() floatLabel;\r\n\r\n @Output() doKeyup = new EventEmitter();\r\n\r\n @ViewChild('picker') picker?: TemplateRef<any>;\r\n @ViewChild('input') input?: TemplateRef<any>;\r\n\r\n onChange: any;\r\n hasFocus = false;\r\n\r\n controlTypeName = 'date';\r\n\r\n opening = false;\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl) {\r\n super(ngControl);\r\n }\r\n\r\n open(): void {\r\n this.hasFocus = true;\r\n // this.opening = true;\r\n // this.picker.open();\r\n // setTimeout(() => {\r\n // this.input.nativeElement.focus();\r\n // this.opening = false;\r\n // }); // , 150);\r\n }\r\n\r\n close(): void {\r\n this.hasFocus = false;\r\n // if (!this.opening) {\r\n // this.picker.close();h\r\n // }\r\n }\r\n\r\n keyup(): void {\r\n this.doKeyup.emit();\r\n // this.onChange(this.control.value);\r\n }\r\n\r\n writeValue(obj: any): void { }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void { }\r\n\r\n setDisabledState(isDisabled: boolean): void { }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container has-suffix active-icons\" [ngClass]=\"{'has-focus': hasFocus}\">\r\n <input #input (blur)=\"close()\" (focus)=\"open()\" [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [formControl]=\"componentFormControl\" (keyup)=\"keyup()\">\r\n <mat-icon slot=\"suffix\" (click)=\"picker.open()\" [ngClass]=\"{disabled: componentFormControl.disabled}\">today</mat-icon>\r\n <mat-datepicker #picker></mat-datepicker>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import { AfterViewInit, Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport {MatSort, SortDirection} from '@angular/material/sort';\r\n// import {PersistService} from '../../services/persist.service';\r\nimport {DomSanitizer} from '@angular/platform-browser';\r\n\r\nexport interface TableColumn {\r\n name: string;\r\n sortable?: boolean | ((row: any, direction?: SortDirection) => number | string);\r\n sticky?: boolean;\r\n label?: string;\r\n colSpan?: (row: any) => number;\r\n formatter?: (row: any) => string;\r\n cellClass?: (row: any, c?: TableColumn) => string;\r\n headerTemplate?: (c: TableColumn) => TemplateRef<any>;\r\n cellTemplate?: (row: any, c: TableColumn) => TemplateRef<any>;\r\n}\r\n\r\nexport interface TableOptions {\r\n sticky?: boolean;\r\n}\r\n@Component({\r\n selector: 'ui-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n standalone: false\r\n})\r\nexport class TableComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() columns: TableColumn[] = [];\r\n @Input() dataSource: any;\r\n @Input() options: TableOptions | undefined;\r\n @Input() rowTemplates: any = {};\r\n @Input() headerTemplates: any = {};\r\n @Input() stateStoreKey = '';\r\n @Input() rowAction: (row: any) => void;\r\n\r\n @Input() matSortActive;\r\n @Input() matSortDirection;\r\n\r\n @ViewChild(MatSort) matSort: MatSort | undefined;\r\n\r\n get columnList(): string[] {\r\n return this.columns.map(c => c.name);\r\n }\r\n\r\n constructor(/*private persistService: PersistService, */private domSanitizer: DomSanitizer) { }\r\n\r\n ngOnInit(): void {\r\n this.options = {...{sticky: false}, ...this.options};\r\n if (this.dataSource) {\r\n // if (this.stateStoreKey !== '') {\r\n // const storeKey = this.stateStoreKey + '.sort';\r\n // const ms = this.persistService.get(storeKey, { active: '', direction: ''});\r\n // this.matSort.active = ms.active;\r\n // this.matSort.direction = ms.direction;\r\n // this.matSort.sortChange.subscribe(sc => {\r\n // this.persistService.set(storeKey, sc.direction === '' ? { active: '', direction: ''} : sc);\r\n // });\r\n // }\r\n if (this.columns.find(c => c.sortable !== undefined)) {\r\n this.dataSource.sortData = (rows: any[], sort: MatSort) => {\r\n if (sort.direction) {\r\n const sortColumn = this.columns.find(c => c.name === sort.active);\r\n if (sortColumn) {\r\n const res = sort.direction === 'asc' ? 1 : -1;\r\n return rows.sort((r1: any, r2: any) => {\r\n if (sortColumn.sortable === true) {\r\n return r1[sortColumn.name] < r2[sortColumn.name] ? -res : res;\r\n }\r\n if (typeof sortColumn.sortable === 'function') {\r\n return sortColumn.sortable(r1, sort.direction) < sortColumn.sortable(r2, sort.direction) ? -res : res;\r\n }\r\n return 0;\r\n });\r\n }\r\n }\r\n return rows;\r\n };\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.dataSource.sort = this.matSort;\r\n }\r\n\r\n display(row: any, col: TableColumn): any {\r\n if (col.formatter) {\r\n return this.domSanitizer.bypassSecurityTrustHtml(col.formatter(row));\r\n } else {\r\n return row[col.name];\r\n }\r\n }\r\n\r\n rowClicked(row) {\r\n if (this.rowAction) {\r\n this.rowAction( row);\r\n }\r\n }\r\n}\r\n","<table mat-table matSort [dataSource]=\"dataSource\" style=\"width: 100%\" [matSortActive]=\"matSortActive\" [matSortDirection]=\"matSortDirection\">\r\n\r\n <ng-container *ngFor=\"let c of columns\" [matColumnDef]=\"c.name\" [sticky]=\"c.sticky || false\">\r\n\r\n <ng-container *ngIf=\"c.sortable\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header>{{c.label}}</th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!c.sortable\">\r\n <ng-container *ngIf=\"!headerTemplates[c.name] && !c.headerTemplate\">\r\n <th mat-header-cell *matHeaderCellDef>{{c.label}}</th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"c.headerTemplate\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-template [ngTemplateOutlet]=\"c.headerTemplate(c)\" [ngTemplateOutletContext]=\"{column:c}\"></ng-template>\r\n </th>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"headerTemplates[c.name]\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <ng-template [ngTemplateOutlet]=\"headerTemplates[c.name]\"></ng-template>\r\n </th>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <td mat-cell *matCellDef=\"let element\" [colSpan]=\"c.colSpan ? c.colSpan(element) : 1\" [class]=\"c.cellClass ? c.cellClass(element, c) : ''\">\r\n <ng-container *ngIf=\"!c.colSpan || c.colSpan(element) > 0\">\r\n <ng-container *ngIf=\"rowTemplates[c.name]\">\r\n <ng-template [ngTemplateOutlet]=\"rowTemplates[c.name]\" [ngTemplateOutletContext]=\"{row:element}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"c.cellTemplate\">\r\n <ng-template [ngTemplateOutlet]=\"c.cellTemplate(c, element)\" [ngTemplateOutletContext]=\"{row:element, column: c}\" ></ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!rowTemplates[c.name] && !c.cellTemplate\">\r\n <span [innerHTML]=\"display(element, c)\"></span>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnList; sticky: options?.sticky\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: columnList;\" (click)=\"rowClicked(row)\"></tr>\r\n</table>\r\n","import {Component, HostBinding, Input, OnInit} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-burger',\r\n templateUrl: './burger.component.html',\r\n styleUrls: ['./burger.component.scss'],\r\n standalone: false\r\n})\r\nexport class BurgerComponent implements OnInit {\r\n\r\n @HostBinding('class.open')\r\n @Input() open = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n"," <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n","import { ChangeDetectorRef, Component, Host, Input, OnInit, Optional, SkipSelf, ViewChild } from '@angular/core';\r\nimport { ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { UiBaseComponent } from '../layouts/base/ui-base.component';\r\nimport { InputComponent } from '../input/input.component';\r\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'ui-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: AutocompleteComponent\r\n }],\r\n standalone: false\r\n})\r\nexport class AutocompleteComponent extends UiBaseComponent implements OnInit, ControlValueAccessor {\r\n\r\n private SHOWN_USERS_DELTA = 10;\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n // @Optional() @Self() public ngControl: NgControl,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @Input() options?: any[];\r\n @Input() multiple = true;\r\n @Input() allowNew = false;\r\n @Input() displayAttribute = 'name';\r\n @Input() idAttribute = 'id';\r\n\r\n // value?: any;\r\n searchableOptions?: any[];\r\n filteredOptions: any[] = [];\r\n filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n\r\n // skipBlur = false;\r\n // typingStarted = false;\r\n messageShown = false;\r\n initialOption?: any;\r\n selectedOption?: any;\r\n lastEmittedId?: any;\r\n focusedOption?: any;\r\n alreadyAdded = false;\r\n optionsVisible = false;\r\n\r\n @ViewChild('input') input?: InputComponent;\r\n @ViewChild('trigger') optionsTrigger: CdkOverlayOrigin;\r\n\r\n inputFocused = false;\r\n inputControl = new UntypedFormControl('');\r\n checkboxSelection: Set<any> = new Set<any>();\r\n\r\n onChange: (value) => void;\r\n\r\n @Input() optionDisabled: (any) => boolean = () => false;\r\n @Input() optionFormatter: (any) => string = (o) => o[this.displayAttribute];\r\n\r\n protected buildSearchableOptions() {\r\n return this.options.map(o => ({\r\n ...o,\r\n unselectable: this.optionDisabled(o),\r\n searchString: `${this.optionFormatter(o)}`.toLowerCase()\r\n }));\r\n }\r\n\r\n protected filterOptions(text: string) {\r\n this.filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n return this.searchableOptions.filter(u => u.searchString.includes(text));\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n // console.log('ngoninit');\r\n\r\n super.ngOnInit();\r\n\r\n // if (this.formControlName && this.controlContainer.control) {\r\n // this.control = this.controlContainer.control.get(this.formControlName) as FormControl;\r\n // }\r\n //\r\n // this.user = this.control.value;\r\n\r\n // this.value = this.control.value;\r\n\r\n this.searchableOptions = this.buildSearchableOptions();\r\n\r\n // if (this.control.disabled) {\r\n // this.inputControl.disable();\r\n // }\r\n\r\n // this.control.statusChanges.subscribe(v => {\r\n // if (v === 'DISABLED') {\r\n // this.inputControl.disable();\r\n // }\r\n // if (v === 'VALID') {\r\n // this.inputControl.enable();\r\n // }\r\n // });\r\n\r\n\r\n\r\n this.inputControl.valueChanges.pipe(debounceTime(200)).subscribe(v => {\r\n const lcv = v.toLowerCase();\r\n\r\n this.filteredOptions = this.filterOptions(lcv);\r\n\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n } else {\r\n this.focusedOption = undefined;\r\n }\r\n\r\n if (v === '') {\r\n this.focusedOption = undefined;\r\n this.selectedOption = undefined;\r\n }\r\n\r\n // if (v !== '') {\r\n // if (this.newUsername === v) {\r\n // this.selectedUser = {id: null, fullName: v};\r\n // this.initialUser = this.selectedUser;\r\n // } else {\r\n // if (this.filteredGroupsAndUsers.length > 0) {\r\n // this.focusedGroup = this.filteredGroupsAndUsers[0];\r\n // this.focusedUser = this.focusedGroup.filteredUsers[0];\r\n // } else {\r\n // this.focusedGroup = null;\r\n // this.focusedUser = null;\r\n // }\r\n // if ((this.focusedUser && !this.focusedUser.unselectable) || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // } else {\r\n // this.selectedUser = null;\r\n // }\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.focusedUser = null;\r\n // this.focusedGroup = null;\r\n // }\r\n\r\n // this.onChange(v);\r\n });\r\n\r\n // if (this.user !== null) {\r\n // let selectedUser = null;\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.user.id) {\r\n // selectedUser = u;\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n //\r\n // if (selectedUser) {\r\n // this.inputControl.setValue(selectedUser.fullName);\r\n // this.selectedUser = selectedUser;\r\n // } else {\r\n // this.newUsername = this.user.fullName;\r\n // this.inputControl.setValue(this.user.fullName);\r\n // this.selectedUser = { id: null, fullName: this.newUsername };\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.inputControl.setValue('');\r\n // }\r\n // this.initialUser = this.selectedUser;\r\n // }\r\n }\r\n\r\n inputFocusChanged(focused: boolean): void {\r\n if (focused) {\r\n this.optionsVisible = true;\r\n }\r\n }\r\n // setTimeout(() => {\r\n // if (!focused && this.skipBlur) {\r\n // this.skipBlur = false;\r\n // return;\r\n // }\r\n // if (!this.typingStarted && focused) {\r\n // this.inputControl.setValue(this.inputControl.value);\r\n // this.typingStarted = true;\r\n // }\r\n // if (!this.messageShown) {\r\n // this.inputFocused = focused;\r\n // if (!focused) {\r\n // this.emitSelection('focus lost');\r\n // }\r\n // }\r\n // }, 250);\r\n // }\r\n\r\n get hasCheckboxSelected(): boolean {\r\n return this.checkboxSelection.size > 0;\r\n }\r\n\r\n optionChecked(u: any): boolean {\r\n return this.checkboxSelection.has(u[this.idAttribute]);\r\n }\r\n\r\n select(u: any): void {\r\n if (this.hasCheckboxSelected || u.unselectable) {\r\n return;\r\n }\r\n if (!u.unselectable) {\r\n this.selectedOption = u;\r\n this.initialOption = u;\r\n this.toggleDropdown();\r\n }\r\n }\r\n\r\n toggleOptionCheckboxed(u: any): void {\r\n if (!u.unselectable) {\r\n this.checkboxSelection.has(u[this.idAttribute]) ?\r\n this.checkboxSelection.delete(u[this.idAttribute]) : this.checkboxSelection.add(u[this.idAttribute]);\r\n }\r\n this.input?.focus();\r\n }\r\n\r\n\r\n // get optionsVisible(): boolean {\r\n // return this.inputFocused && this.typingStarted;\r\n // }\r\n\r\n keyPressed(keyEvent: KeyboardEvent): void {\r\n this.lastEmittedId = -1;\r\n this.optionsVisible = true;\r\n // this.typingStarted = keyEvent.key !== 'Tab' && keyEvent.key !== 'Escape';\r\n if (keyEvent.key === 'Escape') {\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.optionsVisible = false;\r\n return;\r\n }\r\n if (keyEvent.key === 'Enter' && this.hasCheckboxSelected) {\r\n if (this.focusedOption && !this.focusedOption.unselectable) {\r\n this.toggleOptionCheckboxed(this.focusedOption);\r\n }\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n return;\r\n }\r\n // if (keyEvent.key === 'Enter' && this.filteredGroupsAndUsers.length === 0 && this.focusedUser === null && !this.alreadyAdded) {\r\n // this.newUser();\r\n // keyEvent.stopPropagation();\r\n // keyEvent.preventDefault();\r\n // return;\r\n // }\r\n if (keyEvent.key === 'Enter') {\r\n this.selectedOption = this.focusedOption;\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.toggleDropdown();\r\n return;\r\n }\r\n if ((keyEvent.key === 'ArrowDown' || keyEvent.key === 'ArrowUp') && !this.focusedOption) {\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n // if (!this.focusedUser.unselectable || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // }\r\n this.selectedOption = this.focusedOption;\r\n return;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowDown' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx === this.filteredMaxItemsShown - 1) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n if (idx < this.filteredOptions.length - 1) {\r\n this.focusedOption = this.filteredOptions[idx + 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowUp' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx > 0) {\r\n this.focusedOption = this.filteredOptions[idx - 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleDropdown() {\r\n this.optionsVisible = false;\r\n this.emitSelection('toggle');\r\n }\r\n\r\n emitSelection(src?: string): void {\r\n this.initialOption = this.selectedOption;\r\n\r\n if (this.selectedOption) {\r\n const checkId = this.selectedOption.id === null ? 0 : this.selectedOption.id;\r\n if (this.lastEmittedId !== checkId) {\r\n this.lastEmittedId = checkId;\r\n this.onChange(this.options.find(o => o[this.idAttribute] === this.selectedOption[this.idAttribute]));\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute]);\r\n }\r\n } else {\r\n // this.control.setValue(null);\r\n this.onChange(null);\r\n this.inputControl.setValue('', {emitEvent: false});\r\n }\r\n\r\n\r\n\r\n // if (this.selectedOption) {\r\n // const checkId = this.selectedUser.id === null ? 0 : this.selectedUser.id;\r\n // if (this.lastEmittedId !== checkId) {\r\n // this.inputControl.setValue(this.selectedUser.fullName, {emitEvent: false});\r\n // if (this.selectedUser.id) {\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.selectedUser.id) {\r\n // this.control.setValue(u);\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n // } else {\r\n // this.control.setValue(this.selectedUser);\r\n // }\r\n // this.lastEmittedId = checkId;\r\n // }\r\n // } else {\r\n // if (this.lastEmittedId !== null || this.lastEmittedId === -1/* || this.selectedUser?.unselectable*/) {\r\n // this.control?.setValue(null);\r\n // this.inputControl.setValue('', {emitEvent: false});\r\n // this.lastEmittedId = null;\r\n // }\r\n // }\r\n // this.typingStarted = false;\r\n }\r\n\r\n cancelCheckboxSelection(): void {\r\n this.checkboxSelection.clear();\r\n // this.skipBlur = true;\r\n // this.input?.focus();\r\n }\r\n\r\n useCheckboxSelection(): void {\r\n // this.newUsername = '';\r\n // const users = [];\r\n // this.groupsAndUsers.forEach(g => g.users.forEach(u => {\r\n // if (!users.includes(u) && this.checkboxSelection.has(u.id)) {\r\n // users.push(u);\r\n // }\r\n // }));\r\n const outputOptions = this.options.filter(o => this.checkboxSelection.has(o[this.idAttribute]) && !this.optionDisabled(o));\r\n if (outputOptions.length > 0) {\r\n this.selectedOption = outputOptions[0];\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute], {emitEvent: false});\r\n this.onChange(outputOptions);\r\n this.toggleDropdown();\r\n // this.control?.setValue(outputOptions);\r\n // this.typingStarted = false;\r\n // this.skipBlur = true;\r\n }\r\n this.checkboxSelection.clear();\r\n }\r\n\r\n newOption() {\r\n\r\n }\r\n\r\n loadMore(visible: boolean) {\r\n if (visible) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n }\r\n\r\n public focus() {\r\n this.input?.focus();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n if (obj.id) {\r\n this.filteredOptions = this.searchableOptions.filter(so => so.id === obj.id);\r\n } else {\r\n this.filteredOptions = this.filterOptions(obj[this.displayAttribute].toLowerCase());\r\n }\r\n if (this.filteredOptions.length === 1) {\r\n this.selectedOption = this.filteredOptions[0];\r\n this.focusedOption = this.filteredOptions[0];\r\n }\r\n this.inputControl.setValue(obj[this.displayAttribute]);\r\n } else {\r\n this.filteredOptions = this.filterOptions('');\r\n }\r\n }\r\n}\r\n","<div class=\"wrapper\" #wrapper>\r\n <div *ngIf=\"optionsVisible\" (click)=\"toggleDropdown()\" class=\"overlay\"></div>\r\n <ui-input [formControl]=\"inputControl\" #input #trigger=\"cdkOverlayOrigin\" cdkOverlayOrigin (focusChanged)=\"inputFocusChanged($event)\" (keyPressed)=\"keyPressed($event)\" [placeholder]=\"placeholder\" [useInputMessages]=\"'never'\">\r\n <div slot=\"prefix\"><ng-content select=\"[slot=acprefix]\"></ng-content></div>\r\n </ui-input>\r\n\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"optionsVisible\">\r\n <div class=\"options-box\" style=\"display: flex; flex-direction: column\" [ngStyle]=\"{width: wrapper.offsetWidth + 'px'}\">\r\n <div class=\"options\" #options>\r\n\r\n <ng-container *ngFor=\"let option of filteredOptions; index as i\">\r\n <div *ngIf=\"i < filteredMaxItemsShown\" class=\"option-container\" [ngClass]=\"{selected: focusedOption === option}\">\r\n <mat-checkbox [checked]=\"optionChecked(option) || option.unselectable\" [disabled]=\"option.unselectable\" (change)=\"toggleOptionCheckboxed(option)\">\r\n <div class=\"option-container-inner\" (click)=\"select(option)\">\r\n <div class=\"option-option\" uiForceVisibility [visibilityWithin]=\"options\" [visibilityPadding]=\"4\" *ngIf=\"focusedOption === option\" [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{optionFormatter(option)}}\r\n </div>\r\n <div class=\"option-option\" *ngIf=\"focusedOption !== option\" [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{optionFormatter(option)}}\r\n </div>\r\n <mat-icon *ngIf=\"!hasCheckboxSelected && !option.unselectable\">north_west</mat-icon>\r\n </div>\r\n </mat-checkbox>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"filteredOptions.length >= filteredMaxItemsShown\" class=\"option-container\" uiForceVisibility [visibilityWithin]=\"options\" [visibilityEmitChange]=\"true\" (visibilityChanged)=\"loadMore($event)\">\r\n &nbsp;\r\n </div>\r\n\r\n\r\n <div *ngIf=\"filteredOptions.length === 0 && !focusedOption\" class=\"new-user\">\r\n <ng-container *ngIf=\"alreadyAdded\">\r\n <div style=\"text-align: center\">Uživatel {{inputControl.value}} už je mezi dlužníky</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!alreadyAdded\">\r\n <div style=\"text-align: center; padding: 1em 0\">Uživatele <strong>{{inputControl.value}}</strong> neznáme</div>\r\n <ui-button *ngIf=\"allowNew\" style=\"margin-top: 6px;\" [size]=\"'small'\" [label]=\"'Přidat jej?'\" (click)=\"newOption()\"></ui-button>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"filteredOptions.length === 0 && focusedOption\" class=\"new-user\">\r\n <div style=\"text-align: center\">Neznámý uživatel {{inputControl.value}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"hasCheckboxSelected && filteredOptions.length > 0\" class=\"checkbox-buttons\">\r\n <ui-button [size]=\"'small'\" [kind]=\"'basic'\" [label]=\"'Zrušit výběr'\" (click)=\"cancelCheckboxSelection()\"></ui-button>\r\n <ui-button [size]=\"'small'\" [label]=\"'Použít výběr (' + checkboxSelection.size + ')'\" (click)=\"useCheckboxSelection()\"></ui-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n","import { Component, EventEmitter, HostBinding, HostListener, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'ui-action-button',\r\n templateUrl: './action-button.component.html',\r\n styleUrls: ['../button/button.component.scss', './action-button.component.scss'],\r\n standalone: false\r\n})\r\nexport class ActionButtonComponent extends ButtonComponent implements OnInit {\r\n\r\n @Input() withPrimary = false;\r\n @Input() overlayAlignment: 'left' | 'right' = 'left';\r\n @Input() hasBackdrop = false;\r\n @Input() triggerTpl;\r\n @Input() autoClose = true;\r\n\r\n @Output() primaryClick = new EventEmitter<void>();\r\n @Output() overlayToggled = new EventEmitter<boolean>();\r\n\r\n @ViewChild('trigger1', { static: false }) trigger1;\r\n\r\n deferredRender = false;\r\n\r\n iconHover = false;\r\n\r\n @HostBinding('class')\r\n get class(): string {\r\n return super.class + (this.withPrimary ? ' with-primary' : '');\r\n }\r\n\r\n private rightPositions: ConnectedPosition[] = [\r\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'},\r\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'}\r\n ];\r\n\r\n private leftPositions: ConnectedPosition[] = [\r\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\r\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom'},\r\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'}\r\n ];\r\n\r\n openOverlay = false;\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(evt: KeyboardEvent) {\r\n if (this.openOverlay) {\r\n this.toggleOverlay(false);\r\n }\r\n }\r\n\r\n\r\n // constructor() {\r\n // super();\r\n // }\r\n\r\n get positions() {\r\n switch (this.overlayAlignment) {\r\n case 'left': return this.leftPositions;\r\n default: return this.rightPositions;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.deferredRender = true;\r\n });\r\n }\r\n\r\n toggleOverlay(status) {\r\n if (status || this.autoClose) {\r\n this.openOverlay = status;\r\n this.overlayToggled.emit(status);\r\n }\r\n }\r\n\r\n closeOverlay() {\r\n this.openOverlay = false;\r\n }\r\n\r\n togglePrimaryOverlay(status, $event) {\r\n this.toggleOverlay(status);\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n }\r\n}\r\n","<ng-container *ngIf=\"triggerTpl\">\r\n <div style=\"display: flex;\" (click)=\"toggleOverlay(true)\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\">\r\n <ng-template [ngTemplateOutlet]=\"triggerTpl\"></ng-template>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy, 'icon-hover': iconHover}\" [class]=\"class\" (click)=\"primaryClick.emit()\">\r\n <div class=\"hover-container\"></div>\r\n {{label}}\r\n <div class=\"mat-icon-container\" (mouseenter)=\"iconHover = true\" (mouseleave)=\"iconHover = false\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"togglePrimaryOverlay(true, $event)\">\r\n ▼\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"!triggerTpl && !withPrimary\">\r\n <button matRipple [type]=\"type\" [disabled]=\"isDisabled || busy\" [ngClass]=\"{busy: busy}\" [class]=\"class\" cdkOverlayOrigin #trigger1=\"cdkOverlayOrigin\" (click)=\"toggleOverlay(true)\">\r\n {{label}}\r\n <div class=\"mat-icon-container\">\r\n ▼\r\n </div>\r\n <mat-progress-bar *ngIf=\"busy\" mode=\"indeterminate\" [color]=\"color\"></mat-progress-bar>\r\n </button>\r\n</ng-container>\r\n\r\n<ng-template *ngIf=\"deferredRender\" cdkConnectedOverlay [cdkConnectedOverlayPositions]=\"positions\" [cdkConnectedOverlayOrigin]=\"trigger1\" [cdkConnectedOverlayOpen]=\"openOverlay\" [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\" [cdkConnectedOverlayDisableClose]=\"!autoClose\" (overlayOutsideClick)=\"toggleOverlay(false)\">\r\n <ng-content></ng-content>\r\n</ng-template>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-radio',\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n standalone: false\r\n})\r\nexport class RadioComponent { // extends UiSimpleComponent {\r\n\r\n @Input() value;\r\n @Input() label;\r\n @Input() color: 'primary' | 'accent' | 'warn' = 'primary'\r\n\r\n // constructor(@Optional() @Self() public ngControl: NgControl) {\r\n // super(ngControl);\r\n // }\r\n}\r\n","<mat-radio-button [value]=\"value\" [color]=\"color\">\r\n {{label}}\r\n</mat-radio-button>\r\n","import { Component, Input, OnChanges, Optional, Self, SimpleChanges } from '@angular/core';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { UntypedFormControl, NgControl, Validators } from '@angular/forms';\r\n\r\n// export interface CheckboxGroupOption {\r\n// value: any,\r\n// label: string,\r\n// hint?: string\r\n// }\r\n\r\n@Component({\r\n selector: 'ui-checkbox-group',\r\n templateUrl: './checkbox-group.component.html',\r\n styleUrls: ['./checkbox-group.component.scss'],\r\n standalone: false\r\n})\r\nexport class CheckboxGroupComponent extends UiSimpleComponent implements /*OnInit, */OnChanges { // }, Validator {\r\n\r\n cbxs: any;\r\n\r\n private valueMode: 'array' | 'object';\r\n\r\n @Input() valueAttribute: string | undefined;\r\n @Input() displayAttribute = 'label';\r\n @Input() hintAttribute = 'hint';\r\n\r\n @Input() options: any[];\r\n @Input() optionEnabled = (option: any) => true;\r\n\r\n constructor(@Optional() @Self() public control: NgControl) {\r\n super(control);\r\n }\r\n\r\n // ngOnInit(): void {\r\n // super.ngOnInit();\r\n // }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes.options) {\r\n this.cbxs = [];\r\n this.valueMode = Array.isArray(this.control.value) ? 'array' : 'object';\r\n Object.keys(changes.options.currentValue).forEach(k => {\r\n const v = changes.options.currentValue[k];\r\n const ct = new UntypedFormControl(this.valueMode === 'array' ? this.control.value.includes(v) : this.control.value[k] === true);\r\n if (!this.optionEnabled(v)) {\r\n ct.disable();\r\n }\r\n ct.valueChanges.subscribe(() => {\r\n const value = this.valueMode === 'array' ? [] : {};\r\n let hasChecked = false;\r\n this.cbxs.forEach((cbx) => {\r\n const checked = cbx.control.value;\r\n hasChecked = hasChecked || checked;\r\n if (this.valueMode === 'array') {\r\n if (checked) {\r\n (value as any[]).push(cbx.value.value);\r\n }\r\n } else {\r\n value[cbx.key] = checked;\r\n }\r\n });\r\n this.componentFormControl.markAsTouched();\r\n this.componentFormControl.setValue(value);\r\n if (this.componentFormControl.hasValidator(Validators.required) && !hasChecked) {\r\n this.componentFormControl.setErrors({cbGroupRequired: true});\r\n } else {\r\n this.componentFormControl.setErrors(null);\r\n }\r\n });\r\n this.cbxs.push({\r\n control: ct,\r\n value: this.valueAttribute ? v[this.valueAttribute] : v,\r\n label: this.displayAttribute ? v[this.displayAttribute] : v,\r\n hint: this.hintAttribute ? v[this.hintAttribute] : undefined,\r\n key: this.valueMode === 'object' ? k : undefined\r\n })\r\n });\r\n }\r\n }\r\n\r\n // registerOnValidatorChange(fn: () => void): void {\r\n // }\r\n //\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // console.log('validate');\r\n // return undefined;\r\n // }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<ui-checkbox *ngFor=\"let cbx of cbxs\" [formControl]=\"cbx.control\" [label]=\"cbx.label\" [hint]=\"cbx.hint\"></ui-checkbox>\r\n\r\n</ui-simple-layout>\r\n","import { Component, Input, OnChanges, Optional, Self, SimpleChanges } from '@angular/core';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'ui-radio-group',\r\n templateUrl: './radio-group.component.html',\r\n styleUrls: ['./radio-group.component.scss'],\r\n standalone: false\r\n})\r\nexport class RadioGroupComponent extends UiSimpleComponent implements /*OnInit, */OnChanges {\r\n\r\n cbxs: any;\r\n id = Math.round(Math.random() * 999999);\r\n\r\n @Input() options: any[] = [];\r\n @Input() displayAttribute = 'name';\r\n @Input() hintAttribute = 'hint';\r\n @Input() valueAttribute: any;\r\n\r\n @Input() groupName = 'radio-' + this.id;\r\n\r\n @Input() optionEnabled = (option: any) => true;\r\n\r\n constructor(@Optional() @Self() public control: NgControl) {\r\n super(control);\r\n }\r\n\r\n // ngOnInit(): void {\r\n // super.ngOnInit();\r\n // }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n if (changes['options']) {\r\n this.cbxs = [];\r\n changes['options'].currentValue.forEach((cv: any) => {\r\n this.cbxs.push({\r\n value: this.valueAttribute ? cv[this.valueAttribute] : cv,\r\n label: cv[this.displayAttribute],\r\n hint: cv[this.hintAttribute]\r\n })\r\n });\r\n }\r\n }\r\n\r\n // writeValue(obj: any): void {\r\n // if (this.componentFormControl) {\r\n // this.componentFormControl.setValue(obj);\r\n // }\r\n // }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n <mat-radio-group [formControl]=\"componentFormControl\" [name]=\"groupName\" [class]=\"size\">\r\n\r\n <ng-container *ngFor=\"let cbx of cbxs\">\r\n <mat-radio-button [value]=\"cbx.value\">{{ cbx.label }}</mat-radio-button>\r\n <div *ngIf=\"cbx.hint\" class=\"hint\">{{ cbx.hint }}</div>\r\n </ng-container>\r\n\r\n </mat-radio-group>\r\n\r\n</ui-simple-layout>\r\n","import { AfterViewInit, Component, ElementRef, HostListener, Input, Optional, Self } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\nimport EditorJS, { ToolConstructable } from '@editorjs/editorjs';\r\nimport List from '@editorjs/list';\r\nimport Header from '@editorjs/header';\r\n\r\n@Component({\r\n selector: 'ui-editor',\r\n templateUrl: './editor.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', './editor.component.scss'],\r\n standalone: false\r\n})\r\nexport class EditorComponent extends UiSimpleComponent implements AfterViewInit {\r\n\r\n @Input() rows = 5;\r\n\r\n @Input() autoResize = false;\r\n\r\n focused = false;\r\n\r\n editor: EditorJS;\r\n\r\n data: any;\r\n\r\n editorId = `editorJs${Math.round(Math.random() * 10000000)}`;\r\n\r\n @HostListener('document:click', ['$event'])\r\n clickout(event) {\r\n const cr = this.el.nativeElement.getBoundingClientRect();\r\n const outside = event.x < cr.x || event.x > cr.x + cr.width || event.y < cr.y || event.y > cr.y + cr.height;\r\n this.focused = !outside;\r\n if (!this.focused) {\r\n this.componentFormControl.markAsTouched();\r\n }\r\n }\r\n\r\n constructor(@Optional() @Self() public ngControl: NgControl/*, private _ngZone: NgZone, private cdr: ChangeDetectorRef*/,\r\n private el:ElementRef) {\r\n super(ngControl);\r\n }\r\n\r\n focus(): void {\r\n this.focused = true;\r\n this.editor.focus();\r\n }\r\n setDisabledState(isDisabled: boolean): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editor = new EditorJS({\r\n holder: this.editorId,\r\n inlineToolbar: ['bold', 'italic'],\r\n tools: {\r\n header: {\r\n class: Header as any,\r\n inlineToolbar: true,\r\n config: {\r\n levels: [ 1, 2 ],\r\n defaultLevel: 1\r\n }\r\n },\r\n list: {\r\n class: List as any,\r\n inlineToolbar: true,\r\n config: {\r\n defaultStyle: 'unordered'\r\n },\r\n },\r\n },\r\n i18n: {\r\n messages: {\r\n ui: {\r\n \"inlineToolbar\": {\r\n \"converter\": {\r\n \"Convert to\": \"Odstavec změnit na\"\r\n }\r\n }\r\n },\r\n toolNames: {\r\n \"Heading\": \"Nadpis\",\r\n \"List\": \"Seznam\"\r\n }\r\n }\r\n },\r\n minHeight: 90,\r\n placeholder: 'Něco napiš...',\r\n onChange: () => { this.focused = true; this.editor.save().then((r) => this.onChange(r)) },\r\n onReady: () => {\r\n const editorElement = document.getElementById(this.editorId) // your \"holder\" ID\r\n editorElement.addEventListener('focusin', () => {\r\n this.focused = true;\r\n });\r\n },\r\n data: this.data\r\n });\r\n }\r\n\r\n inputLength(): any {\r\n let len = 0;\r\n if (this.componentFormControl && this.componentFormControl.value && this.componentFormControl.value.blocks) {\r\n this.componentFormControl.value.blocks.forEach(b => {\r\n if (b.type === 'paragraph' || b.type === 'header') {\r\n len += b.data.text.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&nbsp;/, '').length;\r\n }\r\n if (b.type === 'list') {\r\n b.data.items.forEach(i => {\r\n len += i.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&nbsp;/, '').length;\r\n })\r\n }\r\n })\r\n }\r\n return len;\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.data = obj;\r\n }\r\n}\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"editor-wrapper\" [ngClass]=\"{focus: focused}\">\r\n <ng-container *ngIf=\"componentFormControl\">\r\n\r\n <p [id]=editorId></p>\r\n\r\n </ng-container>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Host, HostBinding,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { AbstractControl, ControlContainer, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { UiSimpleComponent } from '../layouts/simple/ui-simple.component';\r\n\r\ntype PrefixSuffix = { icon: string, tooltip?: string };\r\n@Component({\r\n selector: 'ui-input-autocomplete',\r\n templateUrl: './input-autocomplete.component.html',\r\n styleUrls: ['../layouts/simple/ui-simple-layout.component.scss', '../input/input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: InputAutocompleteComponent\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: InputAutocompleteComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputAutocompleteComponent extends UiSimpleComponent\r\n implements OnInit { // }, ControlValueAccessor { // }, ControlValueAccessor, Validator { // }, AfterViewInit {\r\n\r\n // UiSimpleComponent = InputComponent;\r\n\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint: string | undefined;\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n // @Input() formControlName;\r\n\r\n // componentFormControl: UntypedFormControl;\r\n //\r\n // ngControl: NgControl;\r\n //\r\n // @Input() validators: UiValidators | undefined;\r\n // @Input() formControlName;\r\n //\r\n // @Input() placeholder = '';\r\n // @Input() label: string | undefined;\r\n // @Input() useInputMessages: 'never' | 'always' | 'ondemand' = 'always';\r\n // @Input() hint?: string;\r\n // @Input() size: 'small' | 'smaller' | 'normal' | 'larger' | 'large' = 'normal';\r\n\r\n @Input() prefixIcon: PrefixSuffix;\r\n @Input() suffixIcon: PrefixSuffix;\r\n @Input() type: 'text' | 'number' | 'password' = 'text';\r\n @Input() clearButton = false;\r\n @Input() activeIcons = true;\r\n @Input() forceHasPrefix = false;\r\n @Input() forceHasSuffix = false;\r\n @Input() options: any[] = [];\r\n\r\n @HostBinding('class')\r\n get textAlignClass() {\r\n return `text-align-${this.textAlign}`;\r\n }\r\n\r\n @Input() textAlign: 'left' | 'center' | 'right' = 'left';\r\n\r\n @ViewChild('input') input: ElementRef | undefined;\r\n @ViewChild('prefix', { static: true }) prefix: ElementRef | undefined;\r\n @ViewChild('suffix', { static: true }) suffix: ElementRef | undefined;\r\n\r\n @Output() focusChanged = new EventEmitter<boolean>();\r\n @Output() keyPressed = new EventEmitter<KeyboardEvent>();\r\n\r\n get hasPrefix() {\r\n return (this.prefixIcon && this.prefixIcon.icon !== '') || this.prefix?.nativeElement?.innerText !== '' || this.forceHasPrefix;\r\n }\r\n\r\n get hasSuffix() {\r\n return (this.suffixIcon && this.suffixIcon.icon !== '') || this.suffix?.nativeElement?.innerText !== '' || this.forceHasSuffix;\r\n }\r\n\r\n filteredOptions: any[] = [];\r\n\r\n // control = new FormControl();\r\n\r\n required = false;\r\n hasFocus = false;\r\n\r\n value: string;\r\n\r\n // control;\r\n\r\n\r\n // onTouched = () => {};\r\n // onChange = (value) => {};\r\n\r\n // get showInvalid(): boolean {\r\n // return true;\r\n // // return this.control.touched && !!this.control.errors;\r\n // }\r\n\r\n // get validationMessage(): string {\r\n // // console.log(this.control?.errors);\r\n // let e: any = {code: 'Neznámá chyba'};\r\n // const errors = this.control?.errors || {};\r\n // Object.keys(errors).find(a => {\r\n // e = {code: a, data: errors[a]};\r\n // return true;\r\n // });\r\n // switch (e.code) {\r\n // case 'required':\r\n // return this.translateService.instant('ui.controls.validation.required');\r\n // case 'email':\r\n // return this.translateService.instant('ui.controls.validation.email');\r\n // case 'matDatepickerParse':\r\n // return this.translateService.instant('ui.controls.validation.matDatepickerParse');\r\n // case 'maxlength':\r\n // return this.translateService.instant('ui.controls.validation.maxlength', e.data);\r\n // case 'minlength':\r\n // return this.translateService.instant('ui.controls.validation.minlength', e.data);\r\n // case 'positive':\r\n // return this.translateService.instant(isNaN(Number(e.data)) ? 'ui.controls.validation.invalidNumber' : 'ui.controls.validation.positive');\r\n // case 'custom':\r\n // return this.translateService.instant(e.data);\r\n // default:\r\n // return this.translateService.instant(e.code);\r\n // }\r\n // }\r\n\r\n get maxLenRequired(): boolean {\r\n return true;\r\n // return this.control.value && (this.control.value.length > (this.validators?.maxLength || 0));\r\n }\r\n\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n /*\r\n bud pres @Optional() @Self() public control: NgControl a control.valueAccessor = this => ztratime ale custom validaci\r\n anebo pres DI jako providers a pak this.control = viz ngOnInit - pokud jej vubec potrebujem\r\n\r\n */\r\n // private injector: Injector,\r\n // @Optional() @Self() public control: NgControl,\r\n // @Self() private controlDirective: NgControl,\r\n ) {\r\n super(null, controlContainer);\r\n\r\n // this.componentFormControl = new FormControl();\r\n // super();\r\n // super(undefined, /*ngControl*/ translateService);\r\n // super(control);\r\n // console.log(control);\r\n // if (control) {\r\n // control.valueAccessor = this;\r\n // }\r\n\r\n // if (ngControl != null) {\r\n // // Setting the value accessor directly (instead of using\r\n // // the providers) to avoid running into a circular import.\r\n // ngControl.valueAccessor = this;\r\n // }\r\n }\r\n\r\n get showClearButton(): boolean {\r\n return this.clearButton && this.componentFormControl?.value !== '';\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n this.filteredOptions = this.options;\r\n this.componentFormControl?.valueChanges.subscribe((v) => {\r\n const vl = v.toLowerCase();\r\n this.filteredOptions = this.options.filter(o => vl === '' || o.toLowerCase().includes(vl))\r\n })\r\n // console.log('probiha vubec oninit?');\r\n // if (this.ngControl) {\r\n // console.log('from ngControl....??');\r\n // if (this.formControl) {\r\n // this.componentFormControl = this.formControl;\r\n // } else {\r\n // this.componentFormControl = this.ngControl.control as UntypedFormControl;\r\n // }\r\n // setTimeout(() => {\r\n // this.applyValidators();\r\n // });\r\n // } else {\r\n // const control = this.formControlName ?\r\n // (this.controlContainer as FormGroupDirective).control.get(this.formControlName) : this.formControl;\r\n // this.componentFormControl.setValidators(control.validator);\r\n // this.componentFormControl.valueChanges.subscribe(v => console.log('onitin sub', v));\r\n // control._componentFormControl = this.componentFormControl;\r\n // if (control._markAsTouched === undefined) {\r\n // // control._componentFormControl = this.componentFormControl;\r\n // console.log('overriding markAsTouched for', this.formControlName);\r\n // control._markAsTouched = control.markAsTouched;\r\n // control.markAsTouched = ({onlySelf}: { onlySelf?: boolean } = {}): void => {\r\n // console.log('marking as touched', this.componentFormControl.value, control.value, this.xxx.value, control._componentFormControl.value);\r\n // control._markAsTouched({onlySelf});\r\n // setTimeout(() => control._componentFormControl.markAsTouched(), 1000);\r\n // }\r\n // }\r\n // }\r\n }\r\n\r\n clearValue(): void {\r\n this.componentFormControl?.setValue('');\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n focus(): void {\r\n this.input?.nativeElement.focus();\r\n }\r\n\r\n onFocus(focus: boolean): void {\r\n setTimeout(() => {\r\n this.hasFocus = focus;\r\n this.focusChanged.emit(focus);\r\n });\r\n }\r\n\r\n onKeypressed($event: any): void {\r\n this.keyPressed.emit($event);\r\n }\r\n\r\n // registerOnChange(onChange: any): void {\r\n // this.onChange = onChange;\r\n // }\r\n //\r\n // registerOnTouched(onTouched: any): void {\r\n // this.onTouched = onTouched;\r\n // }\r\n\r\n // registerOnValidatorChange(fn: () => void): void {\r\n // }\r\n\r\n // setDisabledState(isDisabled: boolean): void {\r\n // // isDisabled ? this.control.disable() : this.control.enable();\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // // this.control = control;\r\n // // console.log(control, control.value, control.errors);\r\n // if (this.value === 'error') {\r\n // return { customError: 'muj error'}\r\n // } else {\r\n // return null;\r\n // }\r\n // // console.log('custom validate');\r\n // // return null;\r\n // }\r\n //\r\n // writeValue(obj: any): void {\r\n // console.log('writevalue: ', obj);\r\n // this.componentFormControl.setValue(obj);\r\n // // this.value = obj;\r\n // // this.control.setValue(obj);\r\n // }\r\n //\r\n // registerOnChange(fn: any): void {\r\n // }\r\n //\r\n // registerOnTouched(fn: any): void {\r\n // }\r\n //\r\n // setDisabledState(isDisabled: boolean): void {\r\n // }\r\n\r\n // modelChange($event: any) {\r\n // console.log($event);\r\n // this.onTouched();\r\n // this.onChange($event)\r\n // }\r\n\r\n // validate(control: AbstractControl): ValidationErrors | null {\r\n // console.log(this.label, 'validate');\r\n // return this.componentFormControl.errors;\r\n // // return undefined;\r\n // }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.parentFormControl) {\r\n return this.parentFormControl._componentFormControl.errors;\r\n }\r\n // console.log('validate', this.componentFormControl.errors);\r\n // // this.componentFormControl.setErrors( { custom: 'xxx' });\r\n // this.componentFormControl.setErrors( this.componentFormControl.errors);\r\n // console.log('validate 2', this.componentFormControl.errors);\r\n // return this.componentFormControl.errors;\r\n // console.log(this.componentFormControl.errors, control.errors, this.parentFormControl.errors, this);\r\n // return this.componentFormControl.errors;\r\n }\r\n}\r\n\r\n","<ui-simple-layout [ctx]=\"this\">\r\n\r\n<div class=\"control-container\" [ngClass]=\"{'has-suffix': hasSuffix, 'has-prefix': hasPrefix, 'has-clear-icon': showClearButton, 'active-icons': activeIcons, 'has-focus': hasFocus}\">\r\n <input #input matInput [type]=\"type\" [formControl]=\"componentFormControl\" [placeholder]=\"placeholder\" (keydown)=\"onKeypressed($event)\" (focus)=\"onFocus(true)\" (blur)=\"onFocus(false)\" [matAutocomplete]=\"auto\"/>\r\n\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-autocomplete>\r\n <div #prefix><ng-content select=\"[slot=prefix]\"></ng-content></div>\r\n <div #suffix><ng-content select=\"[slot=suffix]\"></ng-content></div>\r\n <mat-icon *ngIf=\"prefixIcon\" class=\"prefix-icon\" [matTooltip]=\"prefixIcon.tooltip\">{{ prefixIcon.icon }}</mat-icon>\r\n <mat-icon *ngIf=\"suffixIcon\" class=\"suffix-icon\" [matTooltip]=\"suffixIcon.tooltip\">{{ suffixIcon.icon }}</mat-icon>\r\n <ui-action-icon [size]=\"'small'\" [color]=\"'warn'\" *ngIf=\"showClearButton\" (click)=\"clearValue()\" [matIcon]=\"'clear'\" class=\"clear-icon\"></ui-action-icon>\r\n</div>\r\n\r\n</ui-simple-layout>\r\n","import {\r\n ChangeDetectorRef,\r\n Component,\r\n Host,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Optional, SimpleChanges,\r\n SkipSelf,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, UntypedFormControl } from '@angular/forms';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { UiBaseComponent } from '../layouts/base/ui-base.component';\r\nimport { InputComponent } from '../input/input.component';\r\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\r\n\r\n@Component({\r\n selector: 'ui-auto-complete',\r\n templateUrl: './auto-complete.component.html',\r\n styleUrls: ['./auto-complete.component.scss'],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: AutoCompleteComponent\r\n }],\r\n standalone: false\r\n})\r\nexport class AutoCompleteComponent extends UiBaseComponent implements OnInit, ControlValueAccessor, OnChanges {\r\n\r\n private SHOWN_USERS_DELTA = 10;\r\n\r\n constructor(@Optional() @Host() @SkipSelf() protected controlContainer: ControlContainer,\r\n // @Optional() @Self() public ngControl: NgControl,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @Input() templates: { optionTemplate?: any, notFound?: any, fileTemplate?: any, customContentTemplate?: any } = {}\r\n\r\n @Input() options?: any[];\r\n @Input() multiple = true;\r\n @Input() allowNew = false;\r\n @Input() displayAttribute = 'name';\r\n @Input() idAttribute = 'id';\r\n @Input() panelClass = '';\r\n @Input() clearButton = false;\r\n @Input() removeDiacritics = false;\r\n\r\n // value?: any;\r\n searchableOptions?: any[];\r\n filteredOptions: any[] = [];\r\n filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n\r\n // skipBlur = false;\r\n // typingStarted = false;\r\n messageShown = false;\r\n initialOption?: any;\r\n selectedOption?: any;\r\n lastEmittedId?: any;\r\n focusedOption?: any;\r\n alreadyAdded = false;\r\n optionsVisible = false;\r\n\r\n @ViewChild('input') input?: InputComponent;\r\n @ViewChild('trigger') optionsTrigger: CdkOverlayOrigin;\r\n\r\n inputFocused = false;\r\n inputControl = new UntypedFormControl('');\r\n checkboxSelection: Set<any> = new Set<any>();\r\n\r\n onChange: (value) => void;\r\n\r\n @Input() optionDisabled: (any) => boolean = () => false;\r\n @Input() optionFormatter: (any) => string = (o) => o[this.displayAttribute];\r\n\r\n protected buildSearchableOptions() {\r\n return this.options.map(o => ({\r\n ...o,\r\n unselectable: this.optionDisabled(o),\r\n searchString: this.removeDiacritics\r\n ? `${this.optionFormatter(o)}`.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase()\r\n : `${this.optionFormatter(o)}`.toLowerCase()\r\n }));\r\n }\r\n\r\n protected filterOptions(text: string) {\r\n this.filteredMaxItemsShown = this.SHOWN_USERS_DELTA;\r\n return this.searchableOptions.filter(u => u.searchString.includes(text));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options']) {\r\n this.searchableOptions = this.buildSearchableOptions();\r\n this.inputControl.setValue('');\r\n }\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n super.ngOnInit();\r\n\r\n // if (this.formControlName && this.controlContainer.control) {\r\n // this.control = this.controlContainer.control.get(this.formControlName) as FormControl;\r\n // }\r\n //\r\n // this.user = this.control.value;\r\n\r\n // this.value = this.control.value;\r\n\r\n // this.searchableOptions = this.buildSearchableOptions();\r\n\r\n // if (this.control.disabled) {\r\n // this.inputControl.disable();\r\n // }\r\n\r\n // this.control.statusChanges.subscribe(v => {\r\n // if (v === 'DISABLED') {\r\n // this.inputControl.disable();\r\n // }\r\n // if (v === 'VALID') {\r\n // this.inputControl.enable();\r\n // }\r\n // });\r\n\r\n\r\n\r\n this.inputControl.valueChanges.pipe(debounceTime(200)).subscribe(v => {\r\n const lcv = this.removeDiacritics\r\n ? v.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase()\r\n : v.toLowerCase()\r\n\r\n this.filteredOptions = this.filterOptions(lcv);\r\n\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n } else {\r\n this.focusedOption = undefined;\r\n }\r\n\r\n if (v === '') {\r\n this.focusedOption = undefined;\r\n this.selectedOption = undefined;\r\n }\r\n\r\n // if (v !== '') {\r\n // if (this.newUsername === v) {\r\n // this.selectedUser = {id: null, fullName: v};\r\n // this.initialUser = this.selectedUser;\r\n // } else {\r\n // if (this.filteredGroupsAndUsers.length > 0) {\r\n // this.focusedGroup = this.filteredGroupsAndUsers[0];\r\n // this.focusedUser = this.focusedGroup.filteredUsers[0];\r\n // } else {\r\n // this.focusedGroup = null;\r\n // this.focusedUser = null;\r\n // }\r\n // if ((this.focusedUser && !this.focusedUser.unselectable) || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // } else {\r\n // this.selectedUser = null;\r\n // }\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.focusedUser = null;\r\n // this.focusedGroup = null;\r\n // }\r\n\r\n // this.onChange(v);\r\n });\r\n\r\n // if (this.user !== null) {\r\n // let selectedUser = null;\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.user.id) {\r\n // selectedUser = u;\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n //\r\n // if (selectedUser) {\r\n // this.inputControl.setValue(selectedUser.fullName);\r\n // this.selectedUser = selectedUser;\r\n // } else {\r\n // this.newUsername = this.user.fullName;\r\n // this.inputControl.setValue(this.user.fullName);\r\n // this.selectedUser = { id: null, fullName: this.newUsername };\r\n // }\r\n // } else {\r\n // this.selectedUser = null;\r\n // this.inputControl.setValue('');\r\n // }\r\n // this.initialUser = this.selectedUser;\r\n // }\r\n }\r\n\r\n inputFocusChanged(focused: boolean): void {\r\n if (focused) {\r\n this.optionsVisible = true;\r\n }\r\n }\r\n // setTimeout(() => {\r\n // if (!focused && this.skipBlur) {\r\n // this.skipBlur = false;\r\n // return;\r\n // }\r\n // if (!this.typingStarted && focused) {\r\n // this.inputControl.setValue(this.inputControl.value);\r\n // this.typingStarted = true;\r\n // }\r\n // if (!this.messageShown) {\r\n // this.inputFocused = focused;\r\n // if (!focused) {\r\n // this.emitSelection('focus lost');\r\n // }\r\n // }\r\n // }, 250);\r\n // }\r\n\r\n get hasCheckboxSelected(): boolean {\r\n return this.checkboxSelection.size > 0;\r\n }\r\n\r\n optionChecked(u: any): boolean {\r\n return this.checkboxSelection.has(u[this.idAttribute]);\r\n }\r\n\r\n select(u: any): void {\r\n if (this.hasCheckboxSelected || u.unselectable) {\r\n return;\r\n }\r\n if (!u.unselectable) {\r\n this.selectedOption = u;\r\n this.initialOption = u;\r\n this.toggleDropdown();\r\n }\r\n }\r\n\r\n toggleOptionCheckboxed(u: any): void {\r\n if (!u.unselectable) {\r\n this.checkboxSelection.has(u[this.idAttribute]) ?\r\n this.checkboxSelection.delete(u[this.idAttribute]) : this.checkboxSelection.add(u[this.idAttribute]);\r\n }\r\n this.input?.focus();\r\n }\r\n\r\n\r\n // get optionsVisible(): boolean {\r\n // return this.inputFocused && this.typingStarted;\r\n // }\r\n\r\n keyPressed(keyEvent: KeyboardEvent): void {\r\n this.lastEmittedId = -1;\r\n this.optionsVisible = true;\r\n // this.typingStarted = keyEvent.key !== 'Tab' && keyEvent.key !== 'Escape';\r\n if (keyEvent.key === 'Escape') {\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.optionsVisible = false;\r\n return;\r\n }\r\n if (keyEvent.key === 'Enter' && this.hasCheckboxSelected) {\r\n if (this.focusedOption && !this.focusedOption.unselectable) {\r\n this.toggleOptionCheckboxed(this.focusedOption);\r\n }\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n return;\r\n }\r\n // if (keyEvent.key === 'Enter' && this.filteredGroupsAndUsers.length === 0 && this.focusedUser === null && !this.alreadyAdded) {\r\n // this.newUser();\r\n // keyEvent.stopPropagation();\r\n // keyEvent.preventDefault();\r\n // return;\r\n // }\r\n if (keyEvent.key === 'Enter') {\r\n this.selectedOption = this.focusedOption;\r\n keyEvent.stopPropagation();\r\n keyEvent.preventDefault();\r\n this.toggleDropdown();\r\n return;\r\n }\r\n if ((keyEvent.key === 'ArrowDown' || keyEvent.key === 'ArrowUp') && !this.focusedOption) {\r\n if (this.filteredOptions.length > 0) {\r\n this.focusedOption = this.filteredOptions[0];\r\n // if (!this.focusedUser.unselectable || this.focusedUser === this.initialUser) {\r\n // this.selectedUser = this.focusedUser;\r\n // }\r\n this.selectedOption = this.focusedOption;\r\n return;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowDown' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx === this.filteredMaxItemsShown - 1) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n if (idx < this.filteredOptions.length - 1) {\r\n this.focusedOption = this.filteredOptions[idx + 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n if (keyEvent.key === 'ArrowUp' && this.focusedOption) {\r\n const idx = this.filteredOptions.indexOf(this.focusedOption);\r\n if (idx > 0) {\r\n this.focusedOption = this.filteredOptions[idx - 1];\r\n this.selectedOption = this.focusedOption;\r\n }\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n toggleDropdown() {\r\n this.optionsVisible = false;\r\n this.emitSelection('toggle');\r\n }\r\n\r\n emitSelection(src?: string): void {\r\n this.initialOption = this.selectedOption;\r\n\r\n if (this.selectedOption) {\r\n const checkId = this.selectedOption.id === null ? 0 : this.selectedOption.id;\r\n if (this.lastEmittedId !== checkId) {\r\n this.lastEmittedId = checkId;\r\n this.onChange(this.options.find(o => o[this.idAttribute] === this.selectedOption[this.idAttribute]));\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute]);\r\n }\r\n } else {\r\n // this.control.setValue(null);\r\n this.onChange(null);\r\n this.inputControl.setValue('', {emitEvent: false});\r\n }\r\n\r\n\r\n\r\n // if (this.selectedOption) {\r\n // const checkId = this.selectedUser.id === null ? 0 : this.selectedUser.id;\r\n // if (this.lastEmittedId !== checkId) {\r\n // this.inputControl.setValue(this.selectedUser.fullName, {emitEvent: false});\r\n // if (this.selectedUser.id) {\r\n // this.groupsAndUsers.find(g => g.users.find(u => {\r\n // if (u.id === this.selectedUser.id) {\r\n // this.control.setValue(u);\r\n // return true;\r\n // } else {\r\n // return false;\r\n // }\r\n // }));\r\n // } else {\r\n // this.control.setValue(this.selectedUser);\r\n // }\r\n // this.lastEmittedId = checkId;\r\n // }\r\n // } else {\r\n // if (this.lastEmittedId !== null || this.lastEmittedId === -1/* || this.selectedUser?.unselectable*/) {\r\n // this.control?.setValue(null);\r\n // this.inputControl.setValue('', {emitEvent: false});\r\n // this.lastEmittedId = null;\r\n // }\r\n // }\r\n // this.typingStarted = false;\r\n }\r\n\r\n cancelCheckboxSelection(): void {\r\n this.checkboxSelection.clear();\r\n // this.skipBlur = true;\r\n // this.input?.focus();\r\n }\r\n\r\n useCheckboxSelection(): void {\r\n // this.newUsername = '';\r\n // const users = [];\r\n // this.groupsAndUsers.forEach(g => g.users.forEach(u => {\r\n // if (!users.includes(u) && this.checkboxSelection.has(u.id)) {\r\n // users.push(u);\r\n // }\r\n // }));\r\n const outputOptions = this.options.filter(o => this.checkboxSelection.has(o[this.idAttribute]) && !this.optionDisabled(o));\r\n if (outputOptions.length > 0) {\r\n this.selectedOption = outputOptions[0];\r\n this.inputControl.setValue(this.selectedOption[this.displayAttribute], {emitEvent: false});\r\n this.onChange(outputOptions);\r\n this.toggleDropdown();\r\n // this.control?.setValue(outputOptions);\r\n // this.typingStarted = false;\r\n // this.skipBlur = true;\r\n }\r\n this.checkboxSelection.clear();\r\n }\r\n\r\n newOption() {\r\n\r\n }\r\n\r\n loadMore(visible: boolean) {\r\n if (visible) {\r\n this.filteredMaxItemsShown += this.SHOWN_USERS_DELTA;\r\n }\r\n }\r\n\r\n public focus() {\r\n this.input?.focus();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n isDisabled ? this.inputControl.disable() : this.inputControl.enable();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n if (obj.id) {\r\n this.filteredOptions = this.searchableOptions.filter(so => so.id === obj.id);\r\n } else {\r\n this.filteredOptions = this.filterOptions(obj[this.displayAttribute].toLowerCase());\r\n }\r\n if (this.filteredOptions.length === 1) {\r\n this.selectedOption = this.filteredOptions[0];\r\n this.focusedOption = this.filteredOptions[0];\r\n }\r\n this.inputControl.setValue(obj[this.displayAttribute]);\r\n } else {\r\n this.filteredOptions = this.filterOptions('');\r\n }\r\n }\r\n}\r\n","<div class=\"wrapper\" #wrapper>\r\n <div *ngIf=\"optionsVisible\" (click)=\"toggleDropdown()\" class=\"overlay\"></div>\r\n <ui-input [formControl]=\"inputControl\" #input #trigger=\"cdkOverlayOrigin\" cdkOverlayOrigin\r\n (focusChanged)=\"inputFocusChanged($event)\" (keyPressed)=\"keyPressed($event)\" [placeholder]=\"placeholder\"\r\n [useInputMessages]=\"'never'\" [clearButton]=\"clearButton\" [label]=\"label\">\r\n <div slot=\"prefix\">\r\n <ng-content select=\"[slot=acprefix]\"></ng-content>\r\n </div>\r\n </ui-input>\r\n\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger\" [cdkConnectedOverlayOpen]=\"optionsVisible\">\r\n <div class=\"options-box\" [class]=\"panelClass\" style=\"display: flex; flex-direction: column\"\r\n [ngStyle]=\"{width: wrapper.offsetWidth + 'px'}\">\r\n <div class=\"options\" #options>\r\n\r\n <ng-container *ngFor=\"let option of filteredOptions; index as i\">\r\n <div *ngIf=\"i < filteredMaxItemsShown\" class=\"option-container\"\r\n [ngClass]=\"{selected: focusedOption === option}\">\r\n @if (multiple) {\r\n <mat-checkbox [checked]=\"optionChecked(option) || option.unselectable\"\r\n [disabled]=\"option.unselectable\" (change)=\"toggleOptionCheckboxed(option)\">\r\n <div class=\"option-container-inner\" (click)=\"select(option)\">\r\n <div class=\"option-option\" uiForceVisibility [visibilityWithin]=\"options\"\r\n [visibilityPadding]=\"4\" *ngIf=\"focusedOption === option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{ optionFormatter(option) }}\r\n </div>\r\n <div class=\"option-option\" *ngIf=\"focusedOption !== option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n {{ optionFormatter(option) }}\r\n </div>\r\n <mat-icon *ngIf=\"!hasCheckboxSelected && !option.unselectable\">north_west</mat-icon>\r\n </div>\r\n </mat-checkbox>\r\n } @else {\r\n <div class=\"option-container-inner\" (click)=\"select(option)\">\r\n <div class=\"option-option\" uiForceVisibility [visibilityWithin]=\"options\"\r\n [visibilityPadding]=\"4\" *ngIf=\"focusedOption === option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n @if (templates?.optionTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"templates?.optionTemplate\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-template>\r\n } @else {\r\n {{ optionFormatter(option) }}\r\n }\r\n </div>\r\n <div class=\"option-option\" *ngIf=\"focusedOption !== option\"\r\n [ngClass]=\"{unselectable: option.unselectable}\">\r\n @if (templates?.optionTemplate) {\r\n <ng-template [ngTemplateOutlet]=\"templates?.optionTemplate\"\r\n [ngTemplateOutletContext]=\"{option: option}\"></ng-template>\r\n } @else {\r\n {{ optionFormatter(option) }}\r\n }\r\n </div>\r\n <mat-icon *ngIf=\"!hasCheckboxSelected && !option.unselectable\">north_west</mat-icon>\r\n </div>\r\n }\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"filteredOptions.length >= filteredMaxItemsShown\" class=\"option-container\" uiForceVisibility\r\n [visibilityWithin]=\"options\" [visibilityEmitChange]=\"true\" (visibilityChanged)=\"loadMore($event)\">\r\n &nbsp;\r\n </div>\r\n\r\n\r\n <div *ngIf=\"filteredOptions.length === 0 && !focusedOption\" class=\"new-user\">\r\n @if (templates?.notFound) {\r\n <ng-template [ngTemplateOutlet]=\"templates?.notFound\"\r\n [ngTemplateOutletContext]=\"{searchText: inputControl.value}\"></ng-template>\r\n } @else {\r\n <ng-container *ngIf=\"alreadyAdded\">\r\n <div style=\"text-align: center\">Uživatel {{ inputControl.value }} už je mezi dlužníky</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!alreadyAdded\">\r\n <div style=\"text-align: center; padding: 1em 0\">Uživatele\r\n <strong>{{ inputControl.value }}</strong> neznáme\r\n </div>\r\n <ui-button *ngIf=\"allowNew\" style=\"margin-top: 6px;\" [size]=\"'small'\" [label]=\"'Přidat jej?'\"\r\n (click)=\"newOption()\"></ui-button>\r\n </ng-container>\r\n }\r\n </div>\r\n <div *ngIf=\"filteredOptions.length === 0 && focusedOption\" class=\"new-user\">\r\n <div style=\"text-align: center\">Neznámý uživatel {{ inputControl.value }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"hasCheckboxSelected && filteredOptions.length > 0\" class=\"checkbox-buttons\">\r\n <ui-button [size]=\"'small'\" [kind]=\"'basic'\" [label]=\"'Zrušit výběr'\"\r\n (click)=\"cancelCheckboxSelection()\"></ui-button>\r\n <ui-button [size]=\"'small'\" [label]=\"'Použít výběr (' + checkboxSelection.size + ')'\"\r\n (click)=\"useCheckboxSelection()\"></ui-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { ButtonComponent } from './button/button.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_CHECKBOX_DEFAULT_OPTIONS, MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { RouterModule } from '@angular/router';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { MAT_DATE_LOCALE, MatRippleModule } from '@angular/material/core';\r\nimport { NgxUploaderModule } from 'ngx-uploader';\r\nimport { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MatMomentDateModule } from '@angular/material-moment-adapter';\r\nimport { InputComponent } from './input/input.component';\r\nimport { SelectComponent } from './select/select.component';\r\nimport { FileComponent } from './file/file.component';\r\nimport { UiFileUploaderComponent } from './file-uploader/ui-file-uploader.component';\r\nimport { ExpanderComponent } from './elements/expander/expander.component';\r\nimport { ForceVisibilityDirective } from './directives/force-visibility/force-visibility.directive';\r\nimport { MessageBoxModalComponent } from './services/message-box.service';\r\nimport { DialogComponent } from './dialog/dialog.component';\r\nimport { CurrencyComponent } from './currency/currency.component';\r\nimport { CheckboxComponent } from './checkbox/checkbox.component';\r\nimport { AvatarComponent } from './avatar/avatar.component';\r\nimport { SubmitButtonComponent } from './submit-button/submit-button.component';\r\nimport { TextAreaComponent } from './text-area/text-area.component';\r\nimport { DateComponent } from './date/date.component';\r\nimport { TableComponent } from './table/table.component';\r\nimport { BurgerComponent } from './elements/burger/burger.component';\r\nimport { AutocompleteComponent } from './autocomplete/autocomplete.component';\r\nimport { UiFileService } from './services/ui-file.service';\r\nimport { UI_TRANSLATESERVICE, UiTranslateService } from './services/ui-translate.service';\r\nimport { ActionButtonComponent } from './action-button/action-button.component';\r\nimport { UiSimpleLayoutComponent } from './layouts/simple/ui-simple-layout.component';\r\nimport { UiBaseLayoutComponent } from './layouts/base/ui-base-layout.component';\r\nimport { ValidationMessageComponent } from './elements/validation-message/validation-message.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { RadioComponent } from './radio/radio.component';\r\nimport { MAT_RADIO_DEFAULT_OPTIONS, MatRadioModule } from '@angular/material/radio';\r\nimport { CheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\r\nimport { ActionIconComponent } from './action-icon/action-icon.component';\r\nimport { EditorComponent } from './editor/editor.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { InputAutocompleteComponent } from './input-autocomplete/input-autocomplete.component';\r\nimport { AutoCompleteComponent } from './auto-complete/auto-complete.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ButtonComponent,\r\n InputComponent,\r\n InputAutocompleteComponent,\r\n SelectComponent,\r\n FileComponent,\r\n UiFileUploaderComponent,\r\n ExpanderComponent,\r\n ForceVisibilityDirective,\r\n MessageBoxModalComponent,\r\n DialogComponent,\r\n CurrencyComponent,\r\n CheckboxComponent,\r\n AvatarComponent,\r\n SubmitButtonComponent,\r\n TextAreaComponent,\r\n DateComponent,\r\n TableComponent,\r\n BurgerComponent,\r\n AutocompleteComponent,\r\n AutoCompleteComponent,\r\n ActionButtonComponent,\r\n UiBaseLayoutComponent,\r\n UiSimpleLayoutComponent,\r\n ValidationMessageComponent,\r\n RadioComponent,\r\n CheckboxGroupComponent,\r\n RadioGroupComponent,\r\n ActionIconComponent,\r\n EditorComponent\r\n ],\r\n exports: [\r\n ActionButtonComponent,\r\n ActionIconComponent,\r\n AutocompleteComponent,\r\n AutoCompleteComponent,\r\n AvatarComponent,\r\n BurgerComponent,\r\n ButtonComponent,\r\n CheckboxComponent,\r\n CheckboxGroupComponent,\r\n CurrencyComponent,\r\n DateComponent,\r\n DialogComponent,\r\n ExpanderComponent,\r\n FileComponent,\r\n ForceVisibilityDirective,\r\n InputComponent,\r\n InputAutocompleteComponent,\r\n MessageBoxModalComponent,\r\n RadioComponent,\r\n RadioGroupComponent,\r\n SelectComponent,\r\n SubmitButtonComponent,\r\n TableComponent,\r\n TextAreaComponent,\r\n UiFileUploaderComponent,\r\n EditorComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatMomentDateModule,\r\n DragDropModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatTooltipModule,\r\n MatProgressBarModule,\r\n MatTableModule,\r\n MatSortModule,\r\n MatSelectModule,\r\n NgxUploaderModule,\r\n MatProgressSpinnerModule,\r\n MatMenuModule,\r\n ImageCropperModule,\r\n RouterModule,\r\n OverlayModule,\r\n MatRippleModule,\r\n MatInputModule,\r\n MatRadioModule,\r\n MatSnackBarModule,\r\n MatAutocompleteModule\r\n ],\r\n providers: [\r\n UiFileService,\r\n {provide: UI_TRANSLATESERVICE, useClass: UiTranslateService},\r\n {provide: MAT_DATE_LOCALE, useValue: 'cs-CZ'},\r\n {provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: {useUtc: false}},\r\n {provide: MAT_RADIO_DEFAULT_OPTIONS, useValue: { color: 'primary' }},\r\n {provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { color: 'primary' }}\r\n ]\r\n})\r\nexport class UiModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\nexport type ToastType = 'info' | 'success' | 'warning' | 'fail';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService {\r\n\r\n constructor(private snackService: MatSnackBar) { }\r\n\r\n public open(message: string, options: { duration?: number, type?: ToastType } = { duration: 2500, type: 'info'}) {\r\n this.snackService.open(message, null, {\r\n duration: options.duration || 2500,\r\n panelClass: [ options.type || 'message']\r\n });\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ui\r\n */\r\n\r\n// export * from './lib/ui.service';\r\n// export * from './lib/ui.component';\r\nexport * from './lib/ui.module';\r\nexport * from './lib/action-button/action-button.component';\r\nexport * from './lib/action-icon/action-icon.component';\r\nexport * from './lib/autocomplete/autocomplete.component';\r\nexport * from './lib/auto-complete/auto-complete.component';\r\nexport * from './lib/avatar/avatar.component';\r\nexport * from './lib/button/button.component';\r\nexport * from './lib/checkbox/checkbox.component';\r\nexport * from './lib/checkbox-group/checkbox-group.component';\r\nexport * from './lib/currency/currency.component';\r\nexport * from './lib/date/date.component';\r\nexport * from './lib/dialog/dialog.component';\r\nexport * from './lib/file/file.component';\r\nexport * from './lib/file-uploader/ui-file-uploader.component';\r\nexport * from './lib/input/input.component';\r\nexport * from './lib/input-autocomplete/input-autocomplete.component';\r\nexport * from './lib/radio/radio.component';\r\nexport * from './lib/radio-group/radio-group.component';\r\nexport * from './lib/select/select.component';\r\nexport * from './lib/submit-button/submit-button.component';\r\nexport * from './lib/table/table.component';\r\nexport * from './lib/text-area/text-area.component';\r\nexport * from './lib/editor/editor.component';\r\n\r\nexport * from './lib/directives/force-visibility/force-visibility.directive';\r\n\r\nexport * from './lib/elements/burger/burger.component';\r\nexport * from './lib/elements/expander/expander.component';\r\n\r\nexport * from './lib/services/message-box.service';\r\nexport * from './lib/services/toast.service';\r\nexport * from './lib/services/ui-file.service';\r\nexport * from './lib/services/ui-translate.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i3.ValidationMessageComponent","i2.UiBaseLayoutComponent","i4","i5.UiSimpleLayoutComponent","i6.ActionIconComponent","i5.ButtonComponent","i6.UiSimpleLayoutComponent","i2.UiFileService","i5","i7","i9.FileComponent","i4.ActionIconComponent","i4.ButtonComponent","i5.DialogComponent","i3.InputComponent","i4.SelectComponent","i5.UiBaseLayoutComponent","i4.UiSimpleLayoutComponent","i2.FileComponent","i6.ButtonComponent","i7.InputComponent","i8.ForceVisibilityDirective","i3.CheckboxComponent","i3.UiSimpleLayoutComponent","i6","i8.UiSimpleLayoutComponent","i9.ActionIconComponent"],"mappings":"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"}