{"version":3,"file":"ui-vts-kit-ng-vts-auto-complete.mjs","sources":["../../components/auto-complete/autocomplete-optgroup.component.ts","../../components/auto-complete/autocomplete-option.component.ts","../../components/auto-complete/autocomplete-trigger.directive.ts","../../components/auto-complete/autocomplete.component.ts","../../components/auto-complete/autocomplete.module.ts","../../components/auto-complete/public-api.ts","../../components/auto-complete/ui-vts-kit-ng-vts-auto-complete.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n  selector: 'vts-auto-optgroup',\n  exportAs: 'vtsAutoOptgroup',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"vts-select-item vts-select-item-group\">\n      <ng-container *vtsStringTemplateOutlet=\"vtsLabel\">\n        {{ vtsLabel }}\n      </ng-container>\n    </div>\n    <ng-content select=\"vts-auto-option\"></ng-content>\n  `\n})\nexport class VtsAutocompleteOptgroupComponent {\n  @Input() vtsLabel?: string | TemplateRef<void>;\n\n  constructor() {}\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Optional,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BooleanInput, VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean, scrollIntoView } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { VtsAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';\n\nexport class VtsOptionSelectionChange {\n  constructor(public source: VtsAutocompleteOptionComponent, public isUserInput: boolean = false) {}\n}\n\n@Component({\n  selector: 'vts-auto-option',\n  exportAs: 'vtsAutoOption',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"vts-select-item-option-content\">\n      <ng-content></ng-content>\n    </div>\n  `,\n  host: {\n    role: 'menuitem',\n    class: 'vts-select-item vts-select-item-option',\n    '[class.vts-select-item-option-grouped]': 'vtsAutocompleteOptgroupComponent',\n    '[class.vts-select-item-option-selected]': 'selected',\n    '[class.vts-select-item-option-active]': 'active',\n    '[class.vts-select-item-option-disabled]': 'vtsDisabled',\n    '[attr.aria-selected]': 'selected.toString()',\n    '[attr.aria-disabled]': 'vtsDisabled.toString()',\n    '(click)': 'selectViaInteraction()',\n    '(mouseenter)': 'onMouseEnter()',\n    '(mousedown)': '$event.preventDefault()'\n  }\n})\nexport class VtsAutocompleteOptionComponent {\n  static ngAcceptInputType_vtsDisabled: BooleanInput;\n\n  @Input() vtsValue: VtsSafeAny;\n  @Input() vtsLabel?: string;\n  @Input() @InputBoolean() vtsDisabled = false;\n  @Output()\n  readonly selectionChange = new EventEmitter<VtsOptionSelectionChange>();\n  @Output()\n  readonly mouseEntered = new EventEmitter<VtsAutocompleteOptionComponent>();\n\n  active = false;\n  selected = false;\n\n  constructor(\n    private changeDetectorRef: ChangeDetectorRef,\n    private element: ElementRef,\n    @Optional()\n    public vtsAutocompleteOptgroupComponent: VtsAutocompleteOptgroupComponent\n  ) {}\n\n  select(emit: boolean = true): void {\n    this.selected = true;\n    this.changeDetectorRef.markForCheck();\n    if (emit) {\n      this.emitSelectionChangeEvent();\n    }\n  }\n\n  onMouseEnter(): void {\n    this.mouseEntered.emit(this);\n  }\n\n  deselect(): void {\n    this.selected = false;\n    this.changeDetectorRef.markForCheck();\n    this.emitSelectionChangeEvent();\n  }\n\n  /** Git display label */\n  getLabel(): string {\n    return this.vtsLabel || this.vtsValue.toString();\n  }\n\n  /** Set active (only styles) */\n  setActiveStyles(): void {\n    if (!this.active) {\n      this.active = true;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  /** Unset active (only styles) */\n  setInactiveStyles(): void {\n    if (this.active) {\n      this.active = false;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  scrollIntoViewIfNeeded(): void {\n    scrollIntoView(this.element.nativeElement);\n  }\n\n  selectViaInteraction(): void {\n    if (!this.vtsDisabled) {\n      this.selected = !this.selected;\n      if (this.selected) {\n        this.setActiveStyles();\n      } else {\n        this.setInactiveStyles();\n      }\n      this.emitSelectionChangeEvent(true);\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  private emitSelectionChangeEvent(isUserInput: boolean = false): void {\n    this.selectionChange.emit(new VtsOptionSelectionChange(this, isUserInput));\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  ConnectionPositionPair,\n  FlexibleConnectedPositionStrategy,\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  ExistingProvider,\n  forwardRef,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  ViewContainerRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { VtsSafeAny, OnChangeType, OnTouchedType } from '@ui-vts-kit/ng-vts/core/types';\nimport { VtsInputGroupWhitSuffixOrPrefixDirective } from '@ui-vts-kit/ng-vts/input';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { delay, filter, takeUntil, tap } from 'rxjs/operators';\n\nimport { VtsAutocompleteOptionComponent } from './autocomplete-option.component';\nimport { VtsAutocompleteComponent } from './autocomplete.component';\n\nexport const VTS_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => VtsAutocompleteTriggerDirective),\n  multi: true\n};\n\nexport function getVtsAutocompleteMissingPanelError(): Error {\n  return Error(\n    'Attempting to open an undefined instance of `vts-autocomplete`. ' +\n      'Make sure that the id passed to the `vtsAutocomplete` is correct and that ' +\n      \"you're attempting to open it after the ngAfterContentInit hook.\"\n  );\n}\n\n@Directive({\n  selector: `input[vtsAutocomplete], textarea[vtsAutocomplete]`,\n  exportAs: 'vtsAutocompleteTrigger',\n  providers: [VTS_AUTOCOMPLETE_VALUE_ACCESSOR],\n  host: {\n    autocomplete: 'off',\n    'aria-autocomplete': 'list',\n    '(focusin)': 'handleFocus()',\n    '(blur)': 'handleBlur()',\n    '(input)': 'handleInput($event)',\n    '(keydown)': 'handleKeydown($event)'\n  }\n})\nexport class VtsAutocompleteTriggerDirective\n  implements AfterViewInit, ControlValueAccessor, OnDestroy\n{\n  /** Bind vtsAutocomplete component */\n  @Input() vtsAutocomplete!: VtsAutocompleteComponent;\n\n  onChange: OnChangeType = () => {};\n  onTouched: OnTouchedType = () => {};\n  panelOpen: boolean = false;\n\n  /** Current active option */\n  get activeOption(): VtsAutocompleteOptionComponent | void {\n    if (this.vtsAutocomplete && this.vtsAutocomplete.options.length) {\n      return this.vtsAutocomplete.activeItem;\n    }\n  }\n\n  private destroy$ = new Subject<void>();\n  private overlayRef: OverlayRef | null = null;\n  private portal: TemplatePortal<{}> | null = null;\n  private positionStrategy!: FlexibleConnectedPositionStrategy;\n  private previousValue: string | number | null = null;\n  private selectionChangeSubscription!: Subscription;\n  private optionsChangeSubscription!: Subscription;\n  private overlayOutsideClickSubscription!: Subscription;\n\n  constructor(\n    private elementRef: ElementRef,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    @Optional()\n    private vtsInputGroupWhitSuffixOrPrefixDirective: VtsInputGroupWhitSuffixOrPrefixDirective,\n    @Optional() @Inject(DOCUMENT) private document: VtsSafeAny\n  ) {}\n\n  ngAfterViewInit(): void {\n    if (this.vtsAutocomplete) {\n      this.vtsAutocomplete.animationStateChange.pipe(takeUntil(this.destroy$)).subscribe(event => {\n        if (event.toState === 'void') {\n          if (this.overlayRef) {\n            this.overlayRef.dispose();\n            this.overlayRef = null;\n          }\n        }\n      });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroyPanel();\n  }\n\n  writeValue(value: VtsSafeAny): void {\n    Promise.resolve(null).then(() => this.setTriggerValue(value));\n  }\n\n  registerOnChange(fn: (value: {}) => {}): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => {}): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    const element: HTMLInputElement = this.elementRef.nativeElement;\n    element.disabled = isDisabled;\n    this.closePanel();\n  }\n\n  openPanel(): void {\n    this.previousValue = this.elementRef.nativeElement.value;\n    this.attachOverlay();\n    this.updateStatus();\n  }\n\n  closePanel(): void {\n    if (this.panelOpen) {\n      this.vtsAutocomplete.isOpen = this.panelOpen = false;\n\n      if (this.overlayRef && this.overlayRef.hasAttached()) {\n        this.overlayRef.detach();\n        this.selectionChangeSubscription.unsubscribe();\n        this.overlayOutsideClickSubscription.unsubscribe();\n        this.optionsChangeSubscription.unsubscribe();\n        this.portal = null;\n      }\n    }\n  }\n\n  handleKeydown(event: KeyboardEvent): void {\n    const keyCode = event.keyCode;\n    const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n\n    if (keyCode === ESCAPE) {\n      event.preventDefault();\n    }\n\n    if (this.panelOpen && (keyCode === ESCAPE || keyCode === TAB)) {\n      // Reset value when tab / ESC close\n      if (this.activeOption && this.activeOption.getLabel() !== this.previousValue) {\n        this.setTriggerValue(this.previousValue);\n      }\n      this.closePanel();\n    } else if (this.panelOpen && keyCode === ENTER) {\n      if (this.vtsAutocomplete.showPanel && this.activeOption) {\n        event.preventDefault();\n        this.activeOption.selectViaInteraction();\n      }\n    } else if (this.panelOpen && isArrowKey && this.vtsAutocomplete.showPanel) {\n      event.stopPropagation();\n      event.preventDefault();\n      if (keyCode === UP_ARROW) {\n        this.vtsAutocomplete.setPreviousItemActive();\n      } else {\n        this.vtsAutocomplete.setNextItemActive();\n      }\n      if (this.activeOption) {\n        this.activeOption.scrollIntoViewIfNeeded();\n      }\n      this.doBackfill();\n    }\n  }\n\n  handleInput(event: KeyboardEvent): void {\n    const target = event.target as HTMLInputElement;\n    const document = this.document as Document;\n    let value: number | string | null = target.value;\n\n    if (target.type === 'number') {\n      value = value === '' ? null : parseFloat(value);\n    }\n    if (this.previousValue !== value) {\n      this.previousValue = value;\n      this.onChange(value);\n\n      if (this.canOpen() && document.activeElement === event.target) {\n        this.openPanel();\n      }\n    }\n  }\n\n  handleFocus(): void {\n    if (this.canOpen()) {\n      this.openPanel();\n    }\n  }\n\n  handleBlur(): void {\n    this.onTouched();\n  }\n\n  /**\n   * Subscription data source changes event\n   */\n  private subscribeOptionsChange(): Subscription {\n    const optionChanges = this.vtsAutocomplete.options.changes.pipe(\n      tap(() => this.positionStrategy.reapplyLastPosition()),\n      delay(0)\n    );\n    return optionChanges.subscribe(() => {\n      this.resetActiveItem();\n      if (this.panelOpen) {\n        this.overlayRef!.updatePosition();\n      }\n    });\n  }\n\n  /**\n   * Subscription option changes event and set the value\n   */\n  private subscribeSelectionChange(): Subscription {\n    return this.vtsAutocomplete.selectionChange.subscribe(\n      (option: VtsAutocompleteOptionComponent) => {\n        this.setValueAndClose(option);\n      }\n    );\n  }\n\n  private subscribeOverlayOutsideClick(): Subscription {\n    return this.overlayRef!.outsidePointerEvents()\n      .pipe(filter((e: MouseEvent) => !this.elementRef.nativeElement.contains(e.target)))\n      .subscribe(() => {\n        this.closePanel();\n      });\n  }\n\n  private attachOverlay(): void {\n    if (!this.vtsAutocomplete) {\n      throw getVtsAutocompleteMissingPanelError();\n    }\n\n    if (!this.portal && this.vtsAutocomplete.template) {\n      this.portal = new TemplatePortal(this.vtsAutocomplete.template, this.viewContainerRef);\n    }\n\n    if (!this.overlayRef) {\n      this.overlayRef = this.overlay.create(this.getOverlayConfig());\n    }\n\n    if (this.overlayRef && !this.overlayRef.hasAttached()) {\n      this.overlayRef.attach(this.portal);\n      this.selectionChangeSubscription = this.subscribeSelectionChange();\n      this.optionsChangeSubscription = this.subscribeOptionsChange();\n      this.overlayOutsideClickSubscription = this.subscribeOverlayOutsideClick();\n      this.overlayRef\n        .detachments()\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.closePanel();\n        });\n    }\n    this.vtsAutocomplete.isOpen = this.panelOpen = true;\n  }\n\n  private updateStatus(): void {\n    if (this.overlayRef) {\n      this.overlayRef.updateSize({\n        width: this.vtsAutocomplete.vtsWidth || this.getHostWidth()\n      });\n    }\n    this.vtsAutocomplete.setVisibility();\n    this.resetActiveItem();\n    if (this.activeOption) {\n      this.activeOption.scrollIntoViewIfNeeded();\n    }\n  }\n\n  private destroyPanel(): void {\n    if (this.overlayRef) {\n      this.closePanel();\n    }\n  }\n\n  private getOverlayConfig(): OverlayConfig {\n    return new OverlayConfig({\n      positionStrategy: this.getOverlayPosition(),\n      disposeOnNavigation: true,\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      // default host element width\n      width: this.vtsAutocomplete.vtsWidth || this.getHostWidth()\n    });\n  }\n\n  private getConnectedElement(): ElementRef {\n    return this.vtsInputGroupWhitSuffixOrPrefixDirective\n      ? this.vtsInputGroupWhitSuffixOrPrefixDirective.elementRef\n      : this.elementRef;\n  }\n\n  private getHostWidth(): number {\n    return this.getConnectedElement().nativeElement.getBoundingClientRect().width;\n  }\n\n  private getOverlayPosition(): PositionStrategy {\n    const positions = [\n      new ConnectionPositionPair(\n        { originX: 'start', originY: 'bottom' },\n        { overlayX: 'start', overlayY: 'top' }\n      ),\n      new ConnectionPositionPair(\n        { originX: 'start', originY: 'top' },\n        { overlayX: 'start', overlayY: 'bottom' }\n      )\n    ];\n    this.positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.getConnectedElement())\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withPositions(positions)\n      .withTransformOriginOn('.vts-select-dropdown');\n    return this.positionStrategy;\n  }\n\n  private resetActiveItem(): void {\n    const index = this.vtsAutocomplete.getOptionIndex(this.previousValue);\n    this.vtsAutocomplete.clearSelectedOptions(null, true);\n    if (index !== -1) {\n      this.vtsAutocomplete.setActiveItem(index);\n      this.vtsAutocomplete.activeItem.select(false);\n    } else {\n      this.vtsAutocomplete.setActiveItem(this.vtsAutocomplete.vtsDefaultActiveFirstOption ? 0 : -1);\n    }\n  }\n\n  private setValueAndClose(option: VtsAutocompleteOptionComponent): void {\n    const value = option.vtsValue;\n    this.setTriggerValue(option.getLabel());\n    this.onChange(value);\n    this.elementRef.nativeElement.focus();\n    this.closePanel();\n  }\n\n  private setTriggerValue(value: VtsSafeAny): void {\n    const option = this.vtsAutocomplete.getOption(value);\n    const displayValue = option ? option.getLabel() : value;\n    this.elementRef.nativeElement.value = displayValue != null ? displayValue : '';\n    if (!this.vtsAutocomplete.vtsBackfill) {\n      this.previousValue = displayValue;\n    }\n  }\n\n  private doBackfill(): void {\n    if (this.vtsAutocomplete.vtsBackfill && this.vtsAutocomplete.activeItem) {\n      this.setTriggerValue(this.vtsAutocomplete.activeItem.getLabel());\n    }\n  }\n\n  private canOpen(): boolean {\n    const element: HTMLInputElement = this.elementRef.nativeElement;\n    return !element.readOnly && !element.disabled;\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { AnimationEvent } from '@angular/animations';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Host,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { slideMotion } from '@ui-vts-kit/ng-vts/core/animation';\nimport { VtsNoAnimationDirective } from '@ui-vts-kit/ng-vts/core/no-animation';\nimport { BooleanInput, CompareWith, VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean } from '@ui-vts-kit/ng-vts/core/util';\nimport { defer, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n  VtsAutocompleteOptionComponent,\n  VtsOptionSelectionChange\n} from './autocomplete-option.component';\n\nexport interface AutocompleteDataSourceItem {\n  value: string;\n  label: string;\n}\n\nexport type AutocompleteDataSource = Array<AutocompleteDataSourceItem | string | number>;\n\n@Component({\n  selector: 'vts-autocomplete',\n  exportAs: 'vtsAutocomplete',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-template>\n      <div\n        #panel\n        class=\"vts-select-dropdown vts-select-dropdown-placement-bottomLeft\"\n        [class.vts-select-dropdown-hidden]=\"!showPanel\"\n        [class.vts-select-dropdown-rtl]=\"dir === 'rtl'\"\n        [ngClass]=\"vtsOverlayClassName\"\n        [ngStyle]=\"vtsOverlayStyle\"\n        [vtsNoAnimation]=\"noAnimation?.vtsNoAnimation\"\n        @slideMotion\n        (@slideMotion.done)=\"onAnimationEvent($event)\"\n        [@.disabled]=\"noAnimation?.vtsNoAnimation\"\n      >\n        <div style=\"max-height: 256px; overflow-y: auto; overflow-anchor: none;\">\n          <div style=\"display: flex; flex-direction: column;\">\n            <ng-template\n              *ngTemplateOutlet=\"vtsDataSource ? optionsTemplate : contentTemplate\"\n            ></ng-template>\n          </div>\n        </div>\n      </div>\n      <ng-template #contentTemplate>\n        <ng-content></ng-content>\n      </ng-template>\n      <ng-template #optionsTemplate>\n        <vts-auto-option\n          *ngFor=\"let option of vtsDataSource!\"\n          [vtsValue]=\"option\"\n          [vtsLabel]=\"option && $any(option).label ? $any(option).label : $any(option)\"\n        >\n          {{ option && $any(option).label ? $any(option).label : $any(option) }}\n        </vts-auto-option>\n      </ng-template>\n    </ng-template>\n  `,\n  animations: [slideMotion]\n})\nexport class VtsAutocompleteComponent\n  implements AfterContentInit, AfterViewInit, OnDestroy, OnInit\n{\n  static ngAcceptInputType_vtsDefaultActiveFirstOption: BooleanInput;\n  static ngAcceptInputType_vtsBackfill: BooleanInput;\n\n  @Input() vtsWidth?: number;\n  @Input() vtsOverlayClassName = '';\n  @Input() vtsOverlayStyle: { [key: string]: string } = {};\n  @Input() @InputBoolean() vtsDefaultActiveFirstOption = true;\n  @Input() @InputBoolean() vtsBackfill = false;\n  @Input() vtsCustomCompareFn: CompareWith = (o1, o2) => o1 === o2;\n  @Input() vtsDataSource?: AutocompleteDataSource;\n  @Output()\n  readonly selectionChange: EventEmitter<VtsAutocompleteOptionComponent> =\n    new EventEmitter<VtsAutocompleteOptionComponent>();\n\n  showPanel: boolean = true;\n  isOpen: boolean = false;\n  activeItem!: VtsAutocompleteOptionComponent;\n  dir: Direction = 'ltr';\n  private destroy$ = new Subject<void>();\n  animationStateChange = new EventEmitter<AnimationEvent>();\n\n  /**\n   * Options accessor, its source may be content or dataSource\n   */\n  get options(): QueryList<VtsAutocompleteOptionComponent> {\n    // first dataSource\n    if (this.vtsDataSource) {\n      return this.fromDataSourceOptions;\n    } else {\n      return this.fromContentOptions;\n    }\n  }\n\n  /** Provided by content */\n  @ContentChildren(VtsAutocompleteOptionComponent, { descendants: true })\n  fromContentOptions!: QueryList<VtsAutocompleteOptionComponent>;\n  /** Provided by dataSource */\n  @ViewChildren(VtsAutocompleteOptionComponent)\n  fromDataSourceOptions!: QueryList<VtsAutocompleteOptionComponent>;\n\n  /** cdk-overlay */\n  @ViewChild(TemplateRef, { static: false }) template?: TemplateRef<{}>;\n  @ViewChild('panel', { static: false }) panel?: ElementRef;\n  @ViewChild('content', { static: false }) content?: ElementRef;\n\n  private activeItemIndex: number = -1;\n  private selectionChangeSubscription = Subscription.EMPTY;\n  private optionMouseEnterSubscription = Subscription.EMPTY;\n  private dataSourceChangeSubscription = Subscription.EMPTY;\n  /** Options changes listener */\n  readonly optionSelectionChanges: Observable<VtsOptionSelectionChange> = defer(() => {\n    if (this.options) {\n      return merge<VtsOptionSelectionChange>(...this.options.map(option => option.selectionChange));\n    }\n    return this.ngZone.onStable.asObservable().pipe(\n      take(1),\n      switchMap(() => this.optionSelectionChanges)\n    );\n  });\n  readonly optionMouseEnter: Observable<VtsAutocompleteOptionComponent> = defer(() => {\n    if (this.options) {\n      return merge<VtsAutocompleteOptionComponent>(\n        ...this.options.map(option => option.mouseEntered)\n      );\n    }\n    return this.ngZone.onStable.asObservable().pipe(\n      take(1),\n      switchMap(() => this.optionMouseEnter)\n    );\n  });\n\n  constructor(\n    private changeDetectorRef: ChangeDetectorRef,\n    private ngZone: NgZone,\n    @Optional() private directionality: Directionality,\n    @Host() @Optional() public noAnimation?: VtsNoAnimationDirective\n  ) {}\n  ngOnInit(): void {\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.changeDetectorRef.detectChanges();\n    });\n\n    this.dir = this.directionality.value;\n  }\n\n  onAnimationEvent(event: AnimationEvent): void {\n    this.animationStateChange.emit(event);\n  }\n\n  ngAfterContentInit(): void {\n    if (!this.vtsDataSource) {\n      this.optionsInit();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.vtsDataSource) {\n      this.optionsInit();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.dataSourceChangeSubscription.unsubscribe();\n    this.selectionChangeSubscription.unsubscribe();\n    this.optionMouseEnterSubscription.unsubscribe();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  setVisibility(): void {\n    this.showPanel = !!this.options.length;\n    this.changeDetectorRef.markForCheck();\n  }\n\n  setActiveItem(index: number): void {\n    const activeItem = this.options.toArray()[index];\n    if (activeItem && !activeItem.active) {\n      this.activeItem = activeItem;\n      this.activeItemIndex = index;\n      this.clearSelectedOptions(this.activeItem);\n      this.activeItem.setActiveStyles();\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  setNextItemActive(): void {\n    const nextIndex =\n      this.activeItemIndex + 1 <= this.options.length - 1 ? this.activeItemIndex + 1 : 0;\n    this.setActiveItem(nextIndex);\n  }\n\n  setPreviousItemActive(): void {\n    const previousIndex =\n      this.activeItemIndex - 1 < 0 ? this.options.length - 1 : this.activeItemIndex - 1;\n    this.setActiveItem(previousIndex);\n  }\n\n  getOptionIndex(value: VtsSafeAny): number {\n    return this.options.reduce(\n      (result: number, current: VtsAutocompleteOptionComponent, index: number) => {\n        return result === -1\n          ? this.vtsCustomCompareFn(value, current.vtsValue)\n            ? index\n            : -1\n          : result;\n      },\n      -1\n    )!;\n  }\n\n  getOption(value: VtsSafeAny): VtsAutocompleteOptionComponent | null {\n    return this.options.find(item => this.vtsCustomCompareFn(value, item.vtsValue)) || null;\n  }\n\n  private optionsInit(): void {\n    this.setVisibility();\n    this.subscribeOptionChanges();\n    const changes = this.vtsDataSource\n      ? this.fromDataSourceOptions.changes\n      : this.fromContentOptions.changes;\n    // async\n    this.dataSourceChangeSubscription = changes.subscribe(e => {\n      if (!e.dirty && this.isOpen) {\n        setTimeout(() => this.setVisibility());\n      }\n      this.subscribeOptionChanges();\n    });\n  }\n\n  /**\n   * Clear the status of options\n   */\n  clearSelectedOptions(\n    skip?: VtsAutocompleteOptionComponent | null,\n    deselect: boolean = false\n  ): void {\n    this.options.forEach(option => {\n      if (option !== skip) {\n        if (deselect) {\n          option.deselect();\n        }\n        option.setInactiveStyles();\n      }\n    });\n  }\n\n  private subscribeOptionChanges(): void {\n    this.selectionChangeSubscription.unsubscribe();\n    this.selectionChangeSubscription = this.optionSelectionChanges\n      .pipe(filter((event: VtsOptionSelectionChange) => event.isUserInput))\n      .subscribe((event: VtsOptionSelectionChange) => {\n        event.source.select();\n        event.source.setActiveStyles();\n        this.activeItem = event.source;\n        this.activeItemIndex = this.getOptionIndex(this.activeItem.vtsValue);\n        this.clearSelectedOptions(event.source, true);\n        this.selectionChange.emit(event.source);\n      });\n\n    this.optionMouseEnterSubscription.unsubscribe();\n    this.optionMouseEnterSubscription = this.optionMouseEnter.subscribe(\n      (event: VtsAutocompleteOptionComponent) => {\n        event.setActiveStyles();\n        this.activeItem = event;\n        this.activeItemIndex = this.getOptionIndex(this.activeItem.vtsValue);\n        this.clearSelectedOptions(event);\n      }\n    );\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { VtsNoAnimationModule } from '@ui-vts-kit/ng-vts/core/no-animation';\nimport { VtsOutletModule } from '@ui-vts-kit/ng-vts/core/outlet';\nimport { VtsInputModule } from '@ui-vts-kit/ng-vts/input';\n\nimport { VtsAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';\nimport { VtsAutocompleteOptionComponent } from './autocomplete-option.component';\nimport { VtsAutocompleteTriggerDirective } from './autocomplete-trigger.directive';\nimport { VtsAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n  declarations: [\n    VtsAutocompleteComponent,\n    VtsAutocompleteOptionComponent,\n    VtsAutocompleteTriggerDirective,\n    VtsAutocompleteOptgroupComponent\n  ],\n  exports: [\n    VtsAutocompleteComponent,\n    VtsAutocompleteOptionComponent,\n    VtsAutocompleteTriggerDirective,\n    VtsAutocompleteOptgroupComponent\n  ],\n  imports: [\n    BidiModule,\n    CommonModule,\n    OverlayModule,\n    FormsModule,\n    VtsOutletModule,\n    VtsNoAnimationModule,\n    VtsInputModule\n  ]\n})\nexport class VtsAutocompleteModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './autocomplete.module';\nexport * from './autocomplete.component';\nexport * from './autocomplete-trigger.directive';\nexport * from './autocomplete-option.component';\nexport * from './autocomplete-optgroup.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VtsAutocompleteOptgroupComponent","i1","i2","i4.VtsAutocompleteOptionComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;AAGG;MAyBU,gCAAgC,CAAA;AAG3C,IAAA,WAAA,GAAA,GAAgB;+GAHL,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EATjC,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gCAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAEU,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAf5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA,CAAA;0EAEU,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MCRK,wBAAwB,CAAA;IACnC,WAAmB,CAAA,MAAsC,EAAS,WAAA,GAAuB,KAAK,EAAA;QAA3E,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgC;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;KAAI;AACnG,CAAA;MA2BY,8BAA8B,CAAA;AAczC,IAAA,WAAA,CACU,iBAAoC,EACpC,OAAmB,EAEpB,gCAAkE,EAAA;QAHjE,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAEpB,IAAgC,CAAA,gCAAA,GAAhC,gCAAgC,CAAkC;QAblD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA4B,CAAC;AAE/D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAkC,CAAC;QAE3E,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACf,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAOb;IAEJ,MAAM,CAAC,OAAgB,IAAI,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACjC,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;;IAGD,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAClD;;IAGD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;KACF;;IAGD,iBAAiB,GAAA;QACf,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;KACF;IAED,sBAAsB,GAAA;AACpB,QAAA,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KAC5C;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,aAAA;AACD,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;KACF;IAEO,wBAAwB,CAAC,cAAuB,KAAK,EAAA;AAC3D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;KAC5E;+GA/EU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAnB/B,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sCAAA,EAAA,kCAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,EAAA,cAAA,EAAA,wCAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;AAoBwB,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAAqB,CAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;4FALlC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAzB1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,KAAK,EAAE,wCAAwC;AAC/C,wBAAA,wCAAwC,EAAE,kCAAkC;AAC5E,wBAAA,yCAAyC,EAAE,UAAU;AACrD,wBAAA,uCAAuC,EAAE,QAAQ;AACjD,wBAAA,yCAAyC,EAAE,aAAa;AACxD,wBAAA,sBAAsB,EAAE,qBAAqB;AAC7C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,SAAS,EAAE,wBAAwB;AACnC,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,aAAa,EAAE,yBAAyB;AACzC,qBAAA;AACF,iBAAA,CAAA;;0BAkBI,QAAQ;4CAdF,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACmB,WAAW,EAAA,CAAA;sBAAnC,KAAK;gBAEG,eAAe,EAAA,CAAA;sBADvB,MAAM;gBAGE,YAAY,EAAA,CAAA;sBADpB,MAAM;;;AC1DT;;;AAGG;AAmCU,MAAA,+BAA+B,GAAqB;AAC/D,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,+BAA+B,CAAC;AAC9D,IAAA,KAAK,EAAE,IAAI;EACX;SAEc,mCAAmC,GAAA;IACjD,OAAO,KAAK,CACV,kEAAkE;QAChE,4EAA4E;AAC5E,QAAA,iEAAiE,CACpE,CAAC;AACJ,CAAC;MAeY,+BAA+B,CAAA;;AAW1C,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE;AAC/D,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AACxC,SAAA;KACF;IAWD,WACU,CAAA,UAAsB,EACtB,OAAgB,EAChB,gBAAkC,EAElC,wCAAkF,EACpD,QAAoB,EAAA;QALlD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAElC,IAAwC,CAAA,wCAAA,GAAxC,wCAAwC,CAA0C;QACpD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AA1B5D,QAAA,IAAA,CAAA,QAAQ,GAAiB,MAAK,GAAG,CAAC;AAClC,QAAA,IAAA,CAAA,SAAS,GAAkB,MAAK,GAAG,CAAC;QACpC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AASnB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC/B,IAAU,CAAA,UAAA,GAAsB,IAAI,CAAC;QACrC,IAAM,CAAA,MAAA,GAA8B,IAAI,CAAC;QAEzC,IAAa,CAAA,aAAA,GAA2B,IAAI,CAAC;KAYjD;IAEJ,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACzF,gBAAA,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;oBAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,wBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,wBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,UAAU,CAAC,KAAiB,EAAA;AAC1B,QAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/D;AAED,IAAA,gBAAgB,CAAC,EAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,MAAM,OAAO,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAChE,QAAA,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,SAAS,GAAA;QACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAErD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AACpD,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAC/C,gBAAA,IAAI,CAAC,+BAA+B,CAAC,WAAW,EAAE,CAAC;AACnD,gBAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;AAC7C,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,aAAA;AACF,SAAA;KACF;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU,CAAC;QAElE,IAAI,OAAO,KAAK,MAAM,EAAE;YACtB,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,GAAG,CAAC,EAAE;;AAE7D,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE;AAC5E,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,aAAA;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,EAAE;YAC9C,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE;gBACvD,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;AAC1C,aAAA;AACF,SAAA;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;YACzE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,QAAQ,EAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;AAC1C,aAAA;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;AAC5C,aAAA;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAoB,CAAC;AAC3C,QAAA,IAAI,KAAK,GAA2B,MAAM,CAAC,KAAK,CAAC;AAEjD,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAErB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;gBAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;IAED,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED;;AAEG;IACK,sBAAsB,GAAA;AAC5B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC7D,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,EACtD,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;AACF,QAAA,OAAO,aAAa,CAAC,SAAS,CAAC,MAAK;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAW,CAAC,cAAc,EAAE,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,SAAS,CACnD,CAAC,MAAsC,KAAI;AACzC,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChC,SAAC,CACF,CAAC;KACH;IAEO,4BAA4B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,UAAW,CAAC,oBAAoB,EAAE;aAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAa,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClF,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACN;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,MAAM,mCAAmC,EAAE,CAAC;AAC7C,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AACjD,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxF,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAChE,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACnE,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAC3E,YAAA,IAAI,CAAC,UAAU;AACZ,iBAAA,WAAW,EAAE;AACb,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,aAAC,CAAC,CAAC;AACN,SAAA;QACD,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACrD;IAEO,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBACzB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5D,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;AAC5C,SAAA;KACF;IAEO,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;IAEO,gBAAgB,GAAA;QACtB,OAAO,IAAI,aAAa,CAAC;AACvB,YAAA,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;;YAE1D,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC5D,SAAA,CAAC,CAAC;KACJ;IAEO,mBAAmB,GAAA;QACzB,OAAO,IAAI,CAAC,wCAAwC;AAClD,cAAE,IAAI,CAAC,wCAAwC,CAAC,UAAU;AAC1D,cAAE,IAAI,CAAC,UAAU,CAAC;KACrB;IAEO,YAAY,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;KAC/E;IAEO,kBAAkB,GAAA;AACxB,QAAA,MAAM,SAAS,GAAG;YAChB,IAAI,sBAAsB,CACxB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EACvC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CACvC;YACD,IAAI,sBAAsB,CACxB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EACpC,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAC1C;SACF,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO;AACjC,aAAA,QAAQ,EAAE;AACV,aAAA,mBAAmB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC/C,sBAAsB,CAAC,KAAK,CAAC;aAC7B,QAAQ,CAAC,KAAK,CAAC;aACf,aAAa,CAAC,SAAS,CAAC;aACxB,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IAEO,eAAe,GAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,2BAA2B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/F,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,MAAsC,EAAA;AAC7D,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAEO,IAAA,eAAe,CAAC,KAAiB,EAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACrD,QAAA,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,EAAE,CAAC;AAC/E,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AACrC,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AACnC,SAAA;KACF;IAEO,UAAU,GAAA;QAChB,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AACvE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,SAAA;KACF;IAEO,OAAO,GAAA;AACb,QAAA,MAAM,OAAO,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChE,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC/C;AAxTU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,6KAgCpB,QAAQ,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAhCnB,+BAA+B,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EAV/B,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAUjC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAb3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAmD,iDAAA,CAAA;AAC7D,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,SAAS,EAAE,CAAC,+BAA+B,CAAC;AAC5C,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,KAAK;AACnB,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,WAAW,EAAE,eAAe;AAC5B,wBAAA,QAAQ,EAAE,cAAc;AACxB,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,WAAW,EAAE,uBAAuB;AACrC,qBAAA;AACF,iBAAA,CAAA;;0BA+BI,QAAQ;;0BAER,QAAQ;;0BAAI,MAAM;2BAAC,QAAQ,CAAA;4CA5BrB,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;MCuBK,wBAAwB,CAAA;AAwBnC;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;;QAET,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACnC,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAChC,SAAA;KACF;AAwCD,IAAA,WAAA,CACU,iBAAoC,EACpC,MAAc,EACF,cAA8B,EACvB,WAAqC,EAAA;QAHxD,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACF,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QACvB,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;QAvEzD,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;QACzB,IAAe,CAAA,eAAA,GAA8B,EAAE,CAAC;QAChC,IAA2B,CAAA,2BAAA,GAAG,IAAI,CAAC;QACnC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpC,IAAkB,CAAA,kBAAA,GAAgB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAGxD,QAAA,IAAA,CAAA,eAAe,GACtB,IAAI,YAAY,EAAkC,CAAC;QAErD,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QAC1B,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QAExB,IAAG,CAAA,GAAA,GAAc,KAAK,CAAC;AACf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAkB,CAAC;QA0BlD,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,2BAA2B,GAAG,YAAY,CAAC,KAAK,CAAC;AACjD,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAC,KAAK,CAAC;AAClD,QAAA,IAAA,CAAA,4BAA4B,GAAG,YAAY,CAAC,KAAK,CAAC;;AAEjD,QAAA,IAAA,CAAA,sBAAsB,GAAyC,KAAK,CAAC,MAAK;YACjF,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,OAAO,KAAK,CAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/F,aAAA;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAC7C,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,CAC7C,CAAC;AACJ,SAAC,CAAC,CAAC;AACM,QAAA,IAAA,CAAA,gBAAgB,GAA+C,KAAK,CAAC,MAAK;YACjF,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,gBAAA,OAAO,KAAK,CACV,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CACnD,CAAC;AACH,aAAA;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAC7C,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,CACvC,CAAC;AACJ,SAAC,CAAC,CAAC;KAOC;IACJ,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAoB,KAAI;AAC5F,YAAA,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;AACrB,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AACzC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KACtC;AAED,IAAA,gBAAgB,CAAC,KAAqB,EAAA;AACpC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,aAAa,GAAA;QACX,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;KACF;IAED,iBAAiB,GAAA;QACf,MAAM,SAAS,GACb,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC;AACrF,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAC/B;IAED,qBAAqB,GAAA;QACnB,MAAM,aAAa,GACjB,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;KACnC;AAED,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,MAAc,EAAE,OAAuC,EAAE,KAAa,KAAI;YACzE,OAAO,MAAM,KAAK,CAAC,CAAC;kBAChB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AAChD,sBAAE,KAAK;sBACL,CAAC,CAAC;kBACJ,MAAM,CAAC;AACb,SAAC,EACD,CAAC,CAAC,CACF,CAAC;KACJ;AAED,IAAA,SAAS,CAAC,KAAiB,EAAA;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC;KACzF;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa;AAChC,cAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO;AACpC,cAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;;QAEpC,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,IAAG;YACxD,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC3B,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AACxC,aAAA;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,oBAAoB,CAClB,IAA4C,EAC5C,QAAA,GAAoB,KAAK,EAAA;AAEzB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;YAC5B,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,IAAI,QAAQ,EAAE;oBACZ,MAAM,CAAC,QAAQ,EAAE,CAAC;AACnB,iBAAA;gBACD,MAAM,CAAC,iBAAiB,EAAE,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,sBAAsB;AAC3D,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,KAA+B,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;AACpE,aAAA,SAAS,CAAC,CAAC,KAA+B,KAAI;AAC7C,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACtB,YAAA,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACjE,CAAC,KAAqC,KAAI;YACxC,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACnC,SAAC,CACF,CAAC;KACH;+GApNU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gaAqClB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOpC,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,SAAA,EAJR,8BAA8B,EA9ElC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCT,EACW,QAAA,EAAA,IAAA,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,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,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAC,WAAW,CAAC,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;AAWA,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAAoC,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACnC,UAAA,CAAA;AAAf,IAAA,YAAY,EAAE;AAAqB,CAAA,EAAA,wBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;4FAVlC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA5CpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,EAAA,CAAA;oBACD,UAAU,EAAE,CAAC,WAAW,CAAC;AAC1B,iBAAA,CAAA;;0BA8EI,QAAQ;;0BACR,IAAI;;0BAAI,QAAQ;4CAxEV,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACmB,2BAA2B,EAAA,CAAA;sBAAnD,KAAK;gBACmB,WAAW,EAAA,CAAA;sBAAnC,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,eAAe,EAAA,CAAA;sBADvB,MAAM;gBAyBP,kBAAkB,EAAA,CAAA;sBADjB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,8BAA8B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAItE,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,8BAA8B,CAAA;gBAID,QAAQ,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACF,KAAK,EAAA,CAAA;sBAA3C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACI,OAAO,EAAA,CAAA;sBAA/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;AC1IzC;;;AAGG;MAwCU,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBArB9B,wBAAwB;YACxB,8BAA8B;YAC9B,+BAA+B;AAC/B,YAAA,gCAAgC,aAShC,UAAU;YACV,YAAY;YACZ,aAAa;YACb,WAAW;YACX,eAAe;YACf,oBAAoB;AACpB,YAAA,cAAc,aAZd,wBAAwB;YACxB,8BAA8B;YAC9B,+BAA+B;YAC/B,gCAAgC,CAAA,EAAA,CAAA,CAAA,EAAA;AAYvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAT9B,UAAU;YACV,YAAY;YACZ,aAAa;YACb,WAAW;YACX,eAAe;YACf,oBAAoB;YACpB,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGL,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,8BAA8B;wBAC9B,+BAA+B;wBAC/B,gCAAgC;AACjC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,8BAA8B;wBAC9B,+BAA+B;wBAC/B,gCAAgC;AACjC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACV,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,eAAe;wBACf,oBAAoB;wBACpB,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;AC1CD;;;AAGG;;ACHH;;AAEG;;;;"}