{"version":3,"file":"webresto-components-verification-code.mjs","sources":["../../../projects/components/verification-code/verification-code.component.ts","../../../projects/components/verification-code/verification-code.component.html","../../../projects/components/verification-code/webresto-components-verification-code.ts"],"sourcesContent":["import { NgClass, NgFor, NgIf } from '@angular/common';\nimport type { AfterViewInit, OnDestroy } from '@angular/core';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validators,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TrackByIndexDirective, isValue, objectEntries } from '@axrl/common';\nimport { ScanFormType, makeForm } from '@axrl/ngx-extended-form-builder';\nimport { createPaletteArray } from '@webresto/components/utils/colors';\n\nexport interface VerificationCodeConfig {\n  'primary-text-color': string;\n  'secondary-color': string;\n}\n\n/**\n * Alias-тип, описывающий множество цифр.\n */\ntype Digits = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n\n/**\n * Интерфейс полей формы для ввода четырехзначного кода пордтверждения\n */\ntype CodeControl = `${Digits}` | '' | null;\n\n@Component({\n  selector: 'verification-code',\n  templateUrl: './verification-code.component.html',\n  standalone: true,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => VerificationCodeComponent),\n      multi: true,\n    },\n  ],\n  imports: [\n    ReactiveFormsModule,\n    MatButtonModule,\n    MatIconModule,\n    MatProgressSpinnerModule,\n    NgFor,\n    NgIf,\n    NgClass,\n    TrackByIndexDirective,\n  ],\n  host: {\n    class: 'verification-code',\n    '(change)': '_onChange($event?.target?.value)',\n    '(blur)': '_onTouched()',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VerificationCodeComponent\n  implements OnDestroy, AfterViewInit, OnChanges, ControlValueAccessor\n{\n  private _config: VerificationCodeConfig | undefined;\n\n  private _value = '';\n\n  form: ScanFormType<CodeControl[]> | undefined;\n\n  @Output() readonly valueChanges = new EventEmitter<string>();\n\n  @Input()\n  set value(val) {\n    this._value = val;\n    this._onChange(this._value);\n    this._onTouched();\n  }\n\n  get value(): string {\n    return this._value;\n  }\n\n  @ViewChildren('codeInput')\n  inputs: QueryList<ElementRef<HTMLInputElement>> | undefined;\n\n  @Input() codeLength: number | undefined;\n\n  @Input() isLoading: boolean | null | undefined;\n\n  @Input({ required: true }) set config(cfg: VerificationCodeConfig) {\n    this._config = cfg;\n    objectEntries(cfg).forEach((entry) =>\n      this._elementRef.nativeElement.style.setProperty(\n        `--${entry[0]}`,\n        entry[1]\n      )\n    );\n    const palette = createPaletteArray(cfg['secondary-color']);\n    this._elementRef.nativeElement.style.setProperty(\n      '--light-secondary-color',\n      `#${palette[0]}`\n    );\n  }\n  get config(): VerificationCodeConfig | undefined {\n    return this._config;\n  }\n\n  constructor(private _elementRef: ElementRef<HTMLElement>) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['codeLength'] && isValue(this.codeLength)) {\n      this.codeLength =\n        changes['codeLength'].currentValue < 4 ? 4 : this.codeLength;\n      const sourceControlArray = new Array<CodeControl>(this.codeLength).fill(\n        null\n      );\n      this.form = makeForm<CodeControl[]>(\n        sourceControlArray,\n        new Map([\n          [\n            'mainItems',\n            {\n              updateOn: 'change',\n              validators: [\n                (control): ValidationErrors | null =>\n                  isValue(control.value) && control.value !== ''\n                    ? null\n                    : {\n                        required: true,\n                      },\n                Validators.pattern(/\\d/),\n                Validators.minLength(1),\n                Validators.maxLength(1),\n              ],\n            },\n          ],\n        ])\n      );\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (isValue(this.inputs) && isValue(this.inputs.first)) {\n      this.inputs.first.nativeElement.focus();\n    }\n  }\n\n  _onChange(_: any): void {}\n\n  _onTouched(): void {}\n\n  writeValue(value: string): void {\n    this.value = value;\n  }\n\n  registerOnChange(fn: (_: string) => void): void {\n    this._onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    if (this.form) {\n      if (isDisabled) {\n        if (this.form.enabled) {\n          this.form.disable();\n        }\n      } else {\n        if (this.form.disabled) {\n          this.form.enable();\n        }\n      }\n    }\n  }\n\n  isDigit(item: string): item is `${Digits}` {\n    const digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n    return digits.includes(item);\n  }\n\n  verifyCodeKeyPress(\n    event: InputEvent,\n    currentInputName: number,\n    actionBtnBlock: HTMLParagraphElement\n  ): void {\n    const data = event.data;\n\n    if (isValue(this.form)) {\n      const dataArray = data?.split('');\n\n      const previousInput =\n        currentInputName > 0\n          ? document.getElementById(\n              'verification-code-input-' + (currentInputName - 1)\n            )\n          : undefined;\n\n      if (event.inputType.includes('deleteContent')) {\n        if (isValue(previousInput)) {\n          event.preventDefault();\n          previousInput.focus();\n          const control = <FormControl<CodeControl>>(\n            this.form.controls[`${currentInputName - 1}`]\n          );\n          control.setValue(null);\n        }\n      } else {\n        if (isValue(dataArray)) {\n          event.preventDefault();\n          dataArray.forEach((item, index) => {\n            const control = <FormControl<CodeControl>>(\n              this.form?.controls[`${currentInputName + index}`]\n            );\n            if (isValue(control) && this.isDigit(item)) {\n              control.setValue(item);\n            }\n          });\n\n          const nextInputIndex = currentInputName + dataArray.length;\n          const nextInput = document.getElementById(\n            `verification-code-input-${\n              nextInputIndex < this.form.controls.length\n                ? nextInputIndex\n                : 'submit'\n            }`\n          );\n\n          if (isValue(nextInput)) {\n            if (currentInputName < this.form.controls.length - 1) {\n              nextInput.focus();\n            } else {\n              actionBtnBlock.focus();\n              setTimeout(() => {\n                this.focusSubmit(nextInput);\n              }, 100);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  focusSubmit(nextInput: HTMLElement): void {\n    if (this.form?.valid) {\n      nextInput.focus();\n    }\n  }\n\n  pasteCode(event: ClipboardEvent): void {\n    const data = event.clipboardData?.getData('text/plain');\n    const dataArray = data?.split('');\n    if (isValue(dataArray) && dataArray.length > 0) {\n      dataArray.forEach((item, index) => {\n        const control = <FormControl<CodeControl> | undefined>(\n          this.form?.controls?.[index]\n        );\n        if (isValue(control)) {\n          control.setValue(<CodeControl>item);\n        }\n      });\n    }\n  }\n\n  submit(): void {\n    if (this.form && this.form.valid) {\n      const value = this.form.value.join('');\n      this.value = value;\n      this.valueChanges.emit(value);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.valueChanges.complete();\n  }\n}\n","<div class=\"verification-code-controls\" *ngIf=\"config\">\n  <div\n    class=\"digit-field\"\n    *ngFor=\"let control of form?.controls; let i = index; let last = last; trackByIndex\"\n    [class.filled]=\"control.valid\"\n  >\n    <input\n      #codeInput\n      inputmode=\"numeric\"\n      [formControl]=\"control\"\n      [maxlength]=\"1\"\n      [minlength]=\"1\"\n      pattern=\"\\d\"\n      type=\"text\"\n      [id]=\"'verification-code-input-' + i\"\n      [autofocus]=\"i === 0\"\n      autocomplete=\"off\"\n      (beforeinput)=\"verifyCodeKeyPress($event, i, actionBtnBlock)\"\n    />\n  </div>\n</div>\n<p class=\"action-btns\" #actionBtnBlock>\n  <button\n    id=\"verification-code-input-submit\"\n    (click)=\"submit()\"\n    [disabled]=\"form?.invalid || form?.disabled || isLoading\"\n    type=\"button\"\n    mat-flat-button\n    color=\"primary\"\n    [attr.aria-label]=\"'Submit'\"\n  >\n    <mat-spinner [diameter]=\"24\" *ngIf=\"isLoading; else nextText\" class=\"mr-4\"></mat-spinner>\n    <ng-template #nextText>\"Next\"</ng-template>\n  </button>\n</p>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MA2Ea,yBAAyB,CAAA;IAWpC,IACI,KAAK,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IASD,IAA+B,MAAM,CAAC,GAA2B,EAAA;AAC/D,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,QAAA,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAC9C,CAAK,EAAA,EAAA,KAAK,CAAC,CAAC,CAAC,CAAE,CAAA,EACf,KAAK,CAAC,CAAC,CAAC,CACT,CACF,CAAC;QACF,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAC9C,yBAAyB,EACzB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CACjB,CAAC;KACH;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,WAAA,CAAoB,WAAoC,EAAA;QAApC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAyB;QA1ChD,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;AAID,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;KAsCD;AAE5D,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,UAAU;AACb,gBAAA,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/D,YAAA,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAc,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CACrE,IAAI,CACL,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,QAAQ,CAClB,kBAAkB,EAClB,IAAI,GAAG,CAAC;AACN,gBAAA;oBACE,WAAW;AACX,oBAAA;AACE,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,UAAU,EAAE;AACV,4BAAA,CAAC,OAAO,KACN,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE;AAC5C,kCAAE,IAAI;AACN,kCAAE;AACE,oCAAA,QAAQ,EAAE,IAAI;AACf,iCAAA;AACP,4BAAA,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACxB,4BAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,4BAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACxB,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC,CACH,CAAC;SACH;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACzC;KACF;IAED,SAAS,CAAC,CAAM,EAAA,GAAU;AAE1B,IAAA,UAAU,MAAW;AAErB,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,oBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;iBACrB;aACF;iBAAM;AACL,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtB,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;iBACpB;aACF;SACF;KACF;AAED,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED,IAAA,kBAAkB,CAChB,KAAiB,EACjB,gBAAwB,EACxB,cAAoC,EAAA;AAEpC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAElC,YAAA,MAAM,aAAa,GACjB,gBAAgB,GAAG,CAAC;AAClB,kBAAE,QAAQ,CAAC,cAAc,CACrB,0BAA0B,IAAI,gBAAgB,GAAG,CAAC,CAAC,CACpD;kBACD,SAAS,CAAC;YAEhB,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC7C,gBAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;oBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,aAAa,CAAC,KAAK,EAAE,CAAC;AACtB,oBAAA,MAAM,OAAO,IACX,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,EAAG,gBAAgB,GAAG,CAAC,CAAE,CAAA,CAAC,CAC9C,CAAC;AACF,oBAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBACxB;aACF;iBAAM;AACL,gBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;oBACtB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAChC,wBAAA,MAAM,OAAO,IACX,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA,EAAG,gBAAgB,GAAG,KAAK,CAAE,CAAA,CAAC,CACnD,CAAC;AACF,wBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC1C,4BAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;yBACxB;AACH,qBAAC,CAAC,CAAC;AAEH,oBAAA,MAAM,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC;AAC3D,oBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CACvC,CAAA,wBAAA,EACE,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;AACxC,0BAAE,cAAc;AAChB,0BAAE,QACN,CAAE,CAAA,CACH,CAAC;AAEF,oBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,wBAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;4BACpD,SAAS,CAAC,KAAK,EAAE,CAAC;yBACnB;6BAAM;4BACL,cAAc,CAAC,KAAK,EAAE,CAAC;4BACvB,UAAU,CAAC,MAAK;AACd,gCAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;6BAC7B,EAAE,GAAG,CAAC,CAAC;yBACT;qBACF;iBACF;aACF;SACF;KACF;AAED,IAAA,WAAW,CAAC,SAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YACpB,SAAS,CAAC,KAAK,EAAE,CAAC;SACnB;KACF;AAED,IAAA,SAAS,CAAC,KAAqB,EAAA;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAChC,gBAAA,MAAM,OAAO,IACX,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC,CAC7B,CAAC;AACF,gBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AACpB,oBAAA,OAAO,CAAC,QAAQ,CAAc,IAAI,CAAC,CAAC;iBACrC;AACH,aAAC,CAAC,CAAC;SACJ;KACF;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAC9B;+GAvNU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAzBzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxDH,+jCAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDuBI,mBAAmB,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,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,UAAA,EAAA,IAAA,EACnB,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,wBAAwB,EACxB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FAEJ,qBAAqB,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAUZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA7BrC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EAEjB,IAAI,EACL,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;AACxD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;qBACF,EACQ,OAAA,EAAA;wBACP,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,wBAAwB;wBACxB,KAAK;wBACL,IAAI;wBACJ,OAAO;wBACP,qBAAqB;qBACtB,EACK,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,UAAU,EAAE,kCAAkC;AAC9C,wBAAA,QAAQ,EAAE,cAAc;AACzB,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+jCAAA,EAAA,CAAA;+EAW5B,YAAY,EAAA,CAAA;sBAA9B,MAAM;gBAGH,KAAK,EAAA,CAAA;sBADR,KAAK;gBAYN,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,WAAW,CAAA;gBAGhB,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEyB,MAAM,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;;;AExG3B;;AAEG;;;;"}