{"version":3,"file":"ng-zorro-antd-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/ng-zorro-antd-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 { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'nz-auto-optgroup',\n  exportAs: 'nzAutoOptgroup',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"ant-select-item ant-select-item-group\">\n      <ng-container *nzStringTemplateOutlet=\"nzLabel\">{{ nzLabel }}</ng-container>\n    </div>\n    <ng-content select=\"nz-auto-option\"></ng-content>\n  `\n})\nexport class NzAutocompleteOptgroupComponent {\n  @Input() nzLabel?: 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  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { BooleanInput, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean, scrollIntoView } from 'ng-zorro-antd/core/util';\n\nimport { NzAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';\n\nexport class NzOptionSelectionChange {\n  constructor(public source: NzAutocompleteOptionComponent, public isUserInput: boolean = false) {}\n}\n\n@Component({\n  selector: 'nz-auto-option',\n  exportAs: 'nzAutoOption',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <div class=\"ant-select-item-option-content\">\n      <ng-content></ng-content>\n    </div>\n  `,\n  host: {\n    role: 'menuitem',\n    class: 'ant-select-item ant-select-item-option',\n    '[class.ant-select-item-option-grouped]': 'nzAutocompleteOptgroupComponent',\n    '[class.ant-select-item-option-selected]': 'selected',\n    '[class.ant-select-item-option-active]': 'active',\n    '[class.ant-select-item-option-disabled]': 'nzDisabled',\n    '[attr.aria-selected]': 'selected.toString()',\n    '[attr.aria-disabled]': 'nzDisabled.toString()',\n    '(click)': 'selectViaInteraction()'\n  }\n})\nexport class NzAutocompleteOptionComponent implements OnInit, OnDestroy {\n  static ngAcceptInputType_nzDisabled: BooleanInput;\n\n  @Input() nzValue: NzSafeAny;\n  @Input() nzLabel?: string;\n  @Input() @InputBoolean() nzDisabled = false;\n  @Output() readonly selectionChange = new EventEmitter<NzOptionSelectionChange>();\n  @Output() readonly mouseEntered = new EventEmitter<NzAutocompleteOptionComponent>();\n\n  active = false;\n  selected = false;\n\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private ngZone: NgZone,\n    private changeDetectorRef: ChangeDetectorRef,\n    private element: ElementRef<HTMLElement>,\n    @Optional()\n    public nzAutocompleteOptgroupComponent: NzAutocompleteOptgroupComponent\n  ) {}\n\n  ngOnInit(): void {\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.element.nativeElement, 'mouseenter')\n        .pipe(\n          filter(() => this.mouseEntered.observers.length > 0),\n          takeUntil(this.destroy$)\n        )\n        .subscribe(() => {\n          this.ngZone.run(() => this.mouseEntered.emit(this));\n        });\n\n      fromEvent(this.element.nativeElement, 'mousedown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(event => event.preventDefault());\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\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  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.nzLabel || this.nzValue.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.nzDisabled) {\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 NzOptionSelectionChange(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  NgZone,\n  OnDestroy,\n  Optional,\n  ViewContainerRef\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { delay, filter, takeUntil, tap } from 'rxjs/operators';\n\nimport { NzSafeAny, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';\nimport { NzInputGroupWhitSuffixOrPrefixDirective } from 'ng-zorro-antd/input';\n\nimport { NzAutocompleteOptionComponent } from './autocomplete-option.component';\nimport { NzAutocompleteComponent } from './autocomplete.component';\n\nexport const NZ_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NzAutocompleteTriggerDirective),\n  multi: true\n};\n\nexport function getNzAutocompleteMissingPanelError(): Error {\n  return Error(\n    'Attempting to open an undefined instance of `nz-autocomplete`. ' +\n      'Make sure that the id passed to the `nzAutocomplete` is correct and that ' +\n      \"you're attempting to open it after the ngAfterContentInit hook.\"\n  );\n}\n\n@Directive({\n  selector: `input[nzAutocomplete], textarea[nzAutocomplete]`,\n  exportAs: 'nzAutocompleteTrigger',\n  providers: [NZ_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 NzAutocompleteTriggerDirective implements AfterViewInit, ControlValueAccessor, OnDestroy {\n  /** Bind nzAutocomplete component */\n  @Input() nzAutocomplete!: NzAutocompleteComponent;\n\n  onChange: OnChangeType = () => {};\n  onTouched: OnTouchedType = () => {};\n  panelOpen: boolean = false;\n\n  /** Current active option */\n  get activeOption(): NzAutocompleteOptionComponent | null {\n    if (this.nzAutocomplete && this.nzAutocomplete.options.length) {\n      return this.nzAutocomplete.activeItem;\n    } else {\n      return null;\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 ngZone: NgZone,\n    private elementRef: ElementRef,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    @Optional() private nzInputGroupWhitSuffixOrPrefixDirective: NzInputGroupWhitSuffixOrPrefixDirective,\n    @Optional() @Inject(DOCUMENT) private document: NzSafeAny\n  ) {}\n\n  ngAfterViewInit(): void {\n    if (this.nzAutocomplete) {\n      this.nzAutocomplete.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.destroy$.next();\n    this.destroy$.complete();\n    this.destroyPanel();\n  }\n\n  writeValue(value: NzSafeAny): void {\n    this.ngZone.runOutsideAngular(() => 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.nzAutocomplete.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.nzAutocomplete.showPanel) {\n        event.preventDefault();\n        if (this.activeOption) {\n          this.activeOption.selectViaInteraction();\n        } else {\n          this.closePanel();\n        }\n      }\n    } else if (this.panelOpen && isArrowKey && this.nzAutocomplete.showPanel) {\n      event.stopPropagation();\n      event.preventDefault();\n      if (keyCode === UP_ARROW) {\n        this.nzAutocomplete.setPreviousItemActive();\n      } else {\n        this.nzAutocomplete.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.nzAutocomplete.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.nzAutocomplete.selectionChange.subscribe((option: NzAutocompleteOptionComponent) => {\n      this.setValueAndClose(option);\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.nzAutocomplete) {\n      throw getNzAutocompleteMissingPanelError();\n    }\n\n    if (!this.portal && this.nzAutocomplete.template) {\n      this.portal = new TemplatePortal(this.nzAutocomplete.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.nzAutocomplete.isOpen = this.panelOpen = true;\n  }\n\n  private updateStatus(): void {\n    if (this.overlayRef) {\n      this.overlayRef.updateSize({ width: this.nzAutocomplete.nzWidth || this.getHostWidth() });\n    }\n    this.nzAutocomplete.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.nzAutocomplete.nzWidth || this.getHostWidth()\n    });\n  }\n\n  private getConnectedElement(): ElementRef {\n    return this.nzInputGroupWhitSuffixOrPrefixDirective\n      ? this.nzInputGroupWhitSuffixOrPrefixDirective.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({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n      new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n    ];\n    this.positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(this.getConnectedElement())\n      .withFlexibleDimensions(false)\n      .withPush(false)\n      .withPositions(positions)\n      .withTransformOriginOn('.ant-select-dropdown');\n    return this.positionStrategy;\n  }\n\n  private resetActiveItem(): void {\n    const index = this.nzAutocomplete.getOptionIndex(this.previousValue);\n    this.nzAutocomplete.clearSelectedOptions(null, true);\n    if (index !== -1) {\n      this.nzAutocomplete.setActiveItem(index);\n      this.nzAutocomplete.activeItem!.select(false);\n    } else {\n      this.nzAutocomplete.setActiveItem(this.nzAutocomplete.nzDefaultActiveFirstOption ? 0 : -1);\n    }\n  }\n\n  private setValueAndClose(option: NzAutocompleteOptionComponent): void {\n    const value = option.nzValue;\n    this.setTriggerValue(option.getLabel());\n    this.onChange(value);\n    this.elementRef.nativeElement.focus();\n    this.closePanel();\n  }\n\n  private setTriggerValue(value: NzSafeAny): void {\n    const option = this.nzAutocomplete.getOption(value);\n    const displayValue = option ? option.getLabel() : value;\n    this.elementRef.nativeElement.value = displayValue != null ? displayValue : '';\n    if (!this.nzAutocomplete.nzBackfill) {\n      this.previousValue = displayValue;\n    }\n  }\n\n  private doBackfill(): void {\n    if (this.nzAutocomplete.nzBackfill && this.nzAutocomplete.activeItem) {\n      this.setTriggerValue(this.nzAutocomplete.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 { Direction, Directionality } from '@angular/cdk/bidi';\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 { defer, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { filter, switchMap, take, takeUntil } from 'rxjs/operators';\n\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { BooleanInput, CompareWith, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { NzAutocompleteOptionComponent, NzOptionSelectionChange } 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: 'nz-autocomplete',\n  exportAs: 'nzAutocomplete',\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  template: `\n    <ng-template>\n      <div\n        #panel\n        class=\"ant-select-dropdown ant-select-dropdown-placement-bottomLeft\"\n        [class.ant-select-dropdown-hidden]=\"!showPanel\"\n        [class.ant-select-dropdown-rtl]=\"dir === 'rtl'\"\n        [ngClass]=\"nzOverlayClassName\"\n        [ngStyle]=\"nzOverlayStyle\"\n        [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n        @slideMotion\n        (@slideMotion.done)=\"onAnimationEvent($event)\"\n        [@.disabled]=\"noAnimation?.nzNoAnimation\"\n      >\n        <div style=\"max-height: 256px; overflow-y: auto; overflow-anchor: none;\">\n          <div style=\"display: flex; flex-direction: column;\">\n            <ng-template *ngTemplateOutlet=\"nzDataSource ? optionsTemplate : contentTemplate\"></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        <nz-auto-option\n          *ngFor=\"let option of nzDataSource!\"\n          [nzValue]=\"option\"\n          [nzLabel]=\"option && $any(option).label ? $any(option).label : $any(option)\"\n        >\n          {{ option && $any(option).label ? $any(option).label : $any(option) }}\n        </nz-auto-option>\n      </ng-template>\n    </ng-template>\n  `,\n  animations: [slideMotion]\n})\nexport class NzAutocompleteComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnInit {\n  static ngAcceptInputType_nzDefaultActiveFirstOption: BooleanInput;\n  static ngAcceptInputType_nzBackfill: BooleanInput;\n\n  @Input() nzWidth?: number;\n  @Input() nzOverlayClassName = '';\n  @Input() nzOverlayStyle: { [key: string]: string } = {};\n  @Input() @InputBoolean() nzDefaultActiveFirstOption = true;\n  @Input() @InputBoolean() nzBackfill = false;\n  @Input() compareWith: CompareWith = (o1, o2) => o1 === o2;\n  @Input() nzDataSource?: AutocompleteDataSource;\n  @Output()\n  readonly selectionChange: EventEmitter<NzAutocompleteOptionComponent> = new EventEmitter<NzAutocompleteOptionComponent>();\n\n  showPanel: boolean = true;\n  isOpen: boolean = false;\n  activeItem: NzAutocompleteOptionComponent | null = null;\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<NzAutocompleteOptionComponent> {\n    // first dataSource\n    if (this.nzDataSource) {\n      return this.fromDataSourceOptions;\n    } else {\n      return this.fromContentOptions;\n    }\n  }\n\n  /** Provided by content */\n  @ContentChildren(NzAutocompleteOptionComponent, { descendants: true })\n  fromContentOptions!: QueryList<NzAutocompleteOptionComponent>;\n  /** Provided by dataSource */\n  @ViewChildren(NzAutocompleteOptionComponent) fromDataSourceOptions!: QueryList<NzAutocompleteOptionComponent>;\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 | null = Subscription.EMPTY;\n  private optionMouseEnterSubscription: Subscription | null = Subscription.EMPTY;\n  private dataSourceChangeSubscription: Subscription | null = Subscription.EMPTY;\n  /** Options changes listener */\n  readonly optionSelectionChanges: Observable<NzOptionSelectionChange> = defer(() => {\n    if (this.options) {\n      return merge<NzOptionSelectionChange>(...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<NzAutocompleteOptionComponent> = defer(() => {\n    if (this.options) {\n      return merge<NzAutocompleteOptionComponent>(...this.options.map(option => option.mouseEntered));\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?: NzNoAnimationDirective\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.nzDataSource) {\n      this.optionsInit();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this.nzDataSource) {\n      this.optionsInit();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.dataSourceChangeSubscription!.unsubscribe();\n    this.selectionChangeSubscription!.unsubscribe();\n    this.optionMouseEnterSubscription!.unsubscribe();\n    // Caretaker note: we have to set these subscriptions to `null` since these will be closed subscriptions, but they\n    // still keep references to destinations (which are `SafeSubscriber`s). Destinations keep referencing `next` functions,\n    // which we pass, for instance, to `this.optionSelectionChanges.subscribe(...)`.\n    this.dataSourceChangeSubscription = this.selectionChangeSubscription = this.optionMouseEnterSubscription = null;\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.get(index);\n    if (activeItem && !activeItem.active) {\n      this.activeItem = activeItem;\n      this.activeItemIndex = index;\n      this.clearSelectedOptions(this.activeItem);\n      this.activeItem.setActiveStyles();\n    } else {\n      this.activeItem = null;\n      this.activeItemIndex = -1;\n      this.clearSelectedOptions();\n    }\n    this.changeDetectorRef.markForCheck();\n  }\n\n  setNextItemActive(): void {\n    const nextIndex = this.activeItemIndex + 1 <= this.options.length - 1 ? this.activeItemIndex + 1 : 0;\n    this.setActiveItem(nextIndex);\n  }\n\n  setPreviousItemActive(): void {\n    const previousIndex = this.activeItemIndex - 1 < 0 ? this.options.length - 1 : this.activeItemIndex - 1;\n    this.setActiveItem(previousIndex);\n  }\n\n  getOptionIndex(value: NzSafeAny): number {\n    return this.options.reduce(\n      (result: number, current: NzAutocompleteOptionComponent, index: number) =>\n        result === -1 ? (this.compareWith(value, current.nzValue) ? index : -1) : result,\n      -1\n    )!;\n  }\n\n  getOption(value: NzSafeAny): NzAutocompleteOptionComponent | null {\n    return this.options.find(item => this.compareWith(value, item.nzValue)) || null;\n  }\n\n  private optionsInit(): void {\n    this.setVisibility();\n    this.subscribeOptionChanges();\n    const changes = this.nzDataSource ? this.fromDataSourceOptions.changes : 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(skip?: NzAutocompleteOptionComponent | null, deselect: boolean = false): 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: NzOptionSelectionChange) => event.isUserInput))\n      .subscribe((event: NzOptionSelectionChange) => {\n        event.source.select();\n        event.source.setActiveStyles();\n        this.activeItem = event.source;\n        this.activeItemIndex = this.getOptionIndex(this.activeItem.nzValue);\n        this.clearSelectedOptions(event.source, true);\n        this.selectionChange.emit(event.source);\n      });\n\n    this.optionMouseEnterSubscription!.unsubscribe();\n    this.optionMouseEnterSubscription = this.optionMouseEnter.subscribe((event: NzAutocompleteOptionComponent) => {\n      event.setActiveStyles();\n      this.activeItem = event;\n      this.activeItemIndex = this.getOptionIndex(this.activeItem.nzValue);\n      this.clearSelectedOptions(event);\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 { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzInputModule } from 'ng-zorro-antd/input';\n\nimport { NzAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';\nimport { NzAutocompleteOptionComponent } from './autocomplete-option.component';\nimport { NzAutocompleteTriggerDirective } from './autocomplete-trigger.directive';\nimport { NzAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n  declarations: [\n    NzAutocompleteComponent,\n    NzAutocompleteOptionComponent,\n    NzAutocompleteTriggerDirective,\n    NzAutocompleteOptgroupComponent\n  ],\n  exports: [\n    NzAutocompleteComponent,\n    NzAutocompleteOptionComponent,\n    NzAutocompleteTriggerDirective,\n    NzAutocompleteOptgroupComponent\n  ],\n  imports: [BidiModule, CommonModule, OverlayModule, FormsModule, NzOutletModule, NzNoAnimationModule, NzInputModule]\n})\nexport class NzAutocompleteModule {}\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":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;MAoBa,+BAA+B;IAG1C,iBAAgB;;4HAHL,+BAA+B;gHAA/B,+BAA+B,sHAPhC;;;;;GAKT;2FAEU,+BAA+B;kBAb3C,SAAS;mBAAC;oBACT,QAAQ,EAAE,kBAAkB;oBAC5B,QAAQ,EAAE,gBAAgB;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,QAAQ,EAAE;;;;;GAKT;iBACF;0EAEU,OAAO;sBAAf,KAAK;;;MCMK,uBAAuB;IAClC,YAAmB,MAAqC,EAAS,cAAuB,KAAK;QAA1E,WAAM,GAAN,MAAM,CAA+B;QAAS,gBAAW,GAAX,WAAW,CAAiB;KAAI;CAClG;MAyBY,6BAA6B;IAcxC,YACU,MAAc,EACd,iBAAoC,EACpC,OAAgC,EAEjC,+BAAgE;QAJ/D,WAAM,GAAN,MAAM,CAAQ;QACd,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,YAAO,GAAP,OAAO,CAAyB;QAEjC,oCAA+B,GAA/B,+BAA+B,CAAiC;QAdhD,eAAU,GAAG,KAAK,CAAC;QACzB,oBAAe,GAAG,IAAI,YAAY,EAA2B,CAAC;QAC9D,iBAAY,GAAG,IAAI,YAAY,EAAiC,CAAC;QAEpF,WAAM,GAAG,KAAK,CAAC;QACf,aAAQ,GAAG,KAAK,CAAC;QAET,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;KAQnC;IAEJ,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;iBAChD,IAAI,CACH,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EACpD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;iBACA,SAAS,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACrD,CAAC,CAAC;YAEL,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC;iBAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;SAC/C,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAED,MAAM,CAAC,OAAgB,IAAI;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;KACF;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;;IAGD,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KAChD;;IAGD,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;SACvC;KACF;;IAGD,iBAAiB;QACf,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;SACvC;KACF;IAED,sBAAsB;QACpB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KAC5C;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,eAAe,EAAE,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;YACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;SACvC;KACF;IAEO,wBAAwB,CAAC,cAAuB,KAAK;QAC3D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;KAC3E;;0HAjGU,6BAA6B;8GAA7B,6BAA6B,6tBAjB9B;;;;GAIT;AAkBwB;IAAf,YAAY,EAAE;iEAAoB;2FALjC,6BAA6B;kBAvBzC,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,QAAQ,EAAE;;;;GAIT;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,KAAK,EAAE,wCAAwC;wBAC/C,wCAAwC,EAAE,iCAAiC;wBAC3E,yCAAyC,EAAE,UAAU;wBACrD,uCAAuC,EAAE,QAAQ;wBACjD,yCAAyC,EAAE,YAAY;wBACvD,sBAAsB,EAAE,qBAAqB;wBAC7C,sBAAsB,EAAE,uBAAuB;wBAC/C,SAAS,EAAE,wBAAwB;qBACpC;iBACF;;;8BAmBI,QAAQ;;yBAfF,OAAO;sBAAf,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACmB,UAAU;sBAAlC,KAAK;gBACa,eAAe;sBAAjC,MAAM;gBACY,YAAY;sBAA9B,MAAM;;;AC7DT;;;;MAuCa,8BAA8B,GAAqB;IAC9D,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;IAC7D,KAAK,EAAE,IAAI;EACX;SAEc,kCAAkC;IAChD,OAAO,KAAK,CACV,iEAAiE;QAC/D,2EAA2E;QAC3E,iEAAiE,CACpE,CAAC;AACJ,CAAC;MAeY,8BAA8B;IA0BzC,YACU,MAAc,EACd,UAAsB,EACtB,OAAgB,EAChB,gBAAkC,EACtB,uCAAgF,EAC9D,QAAmB;QALjD,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAY;QACtB,YAAO,GAAP,OAAO,CAAS;QAChB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACtB,4CAAuC,GAAvC,uCAAuC,CAAyC;QAC9D,aAAQ,GAAR,QAAQ,CAAW;QA5B3D,aAAQ,GAAiB,SAAQ,CAAC;QAClC,cAAS,GAAkB,SAAQ,CAAC;QACpC,cAAS,GAAY,KAAK,CAAC;QAWnB,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAC/B,eAAU,GAAsB,IAAI,CAAC;QACrC,WAAM,GAA8B,IAAI,CAAC;QAEzC,kBAAa,GAA2B,IAAI,CAAC;KAYjD;;IAxBJ,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE;YAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;SACvC;aAAM;YACL,OAAO,IAAI,CAAC;SACb;KACF;IAoBD,eAAe;QACb,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;gBACrF,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;oBAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;wBACnB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;wBAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;qBACxB;iBACF;aACF,CAAC,CAAC;SACJ;KACF;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,UAAU,CAAC,KAAgB;QACzB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACpG;IAED,gBAAgB,CAAC,EAAqB;QACpC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAY;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,gBAAgB,CAAC,UAAmB;QAClC,MAAM,OAAO,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChE,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,SAAS;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;QACR,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEpD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;gBACpD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;gBAC/C,IAAI,CAAC,+BAA+B,CAAC,WAAW,EAAE,CAAC;gBACnD,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;aACpB;SACF;KACF;IAED,aAAa,CAAC,KAAoB;QAChC,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;SACxB;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,GAAG,CAAC,EAAE;;YAE7D,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,aAAa,EAAE;gBAC5E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,KAAK,EAAE;YAC9C,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;iBAC1C;qBAAM;oBACL,IAAI,CAAC,UAAU,EAAE,CAAC;iBACnB;aACF;SACF;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YACxE,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,QAAQ,EAAE;gBACxB,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;aAC7C;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;aACzC;YACD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;aAC5C;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAED,WAAW,CAAC,KAAoB;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAoB,CAAC;QAC3C,IAAI,KAAK,GAA2B,MAAM,CAAC,KAAK,CAAC;QAEjD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5B,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;SACjD;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;YAChC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErB,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;gBAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;SACF;KACF;IAED,WAAW;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;KACF;IAED,UAAU;QACR,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;;;IAKO,sBAAsB;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC5D,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,EACtD,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;QACF,OAAO,aAAa,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAW,CAAC,cAAc,EAAE,CAAC;aACnC;SACF,CAAC,CAAC;KACJ;;;;IAKO,wBAAwB;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAqC;YACzF,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;SAC/B,CAAC,CAAC;KACJ;IAEO,4BAA4B;QAClC,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;YACT,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB,CAAC,CAAC;KACN;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,MAAM,kCAAkC,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACvF;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SAChE;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;YACpC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnE,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/D,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAC3E,IAAI,CAAC,UAAU;iBACZ,WAAW,EAAE;iBACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC;gBACT,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB,CAAC,CAAC;SACN;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACpD;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;SAC3F;QACD,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;SAC5C;KACF;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAEO,gBAAgB;QACtB,OAAO,IAAI,aAAa,CAAC;YACvB,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC3C,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;;YAE1D,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;SAC1D,CAAC,CAAC;KACJ;IAEO,mBAAmB;QACzB,OAAO,IAAI,CAAC,uCAAuC;cAC/C,IAAI,CAAC,uCAAuC,CAAC,UAAU;cACvD,IAAI,CAAC,UAAU,CAAC;KACrB;IAEO,YAAY;QAClB,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;KAC/E;IAEO,kBAAkB;QACxB,MAAM,SAAS,GAAG;YAChB,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAC3G,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;SAC5G,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO;aACjC,QAAQ,EAAE;aACV,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;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,UAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC/C;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,0BAA0B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC5F;KACF;IAEO,gBAAgB,CAAC,MAAqC;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAEO,eAAe,CAAC,KAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,GAAG,EAAE,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACnC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;SACnC;KACF;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACpE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACjE;KACF;IAEO,OAAO;QACb,MAAM,OAAO,GAAqB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChE,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC/C;;2HApTU,8BAA8B,kMAgCnB,QAAQ;+GAhCnB,8BAA8B,6UAV9B,CAAC,8BAA8B,CAAC;2FAUhC,8BAA8B;kBAb1C,SAAS;mBAAC;oBACT,QAAQ,EAAE,iDAAiD;oBAC3D,QAAQ,EAAE,uBAAuB;oBACjC,SAAS,EAAE,CAAC,8BAA8B,CAAC;oBAC3C,IAAI,EAAE;wBACJ,YAAY,EAAE,KAAK;wBACnB,mBAAmB,EAAE,MAAM;wBAC3B,WAAW,EAAE,eAAe;wBAC5B,QAAQ,EAAE,cAAc;wBACxB,SAAS,EAAE,qBAAqB;wBAChC,WAAW,EAAE,uBAAuB;qBACrC;iBACF;;;8BAgCI,QAAQ;;8BACR,QAAQ;;8BAAI,MAAM;+BAAC,QAAQ;;yBA9BrB,cAAc;sBAAtB,KAAK;;;MCoBK,uBAAuB;IAoElC,YACU,iBAAoC,EACpC,MAAc,EACF,cAA8B,EACvB,WAAoC;QAHvD,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,WAAM,GAAN,MAAM,CAAQ;QACF,mBAAc,GAAd,cAAc,CAAgB;QACvB,gBAAW,GAAX,WAAW,CAAyB;QAnExD,uBAAkB,GAAG,EAAE,CAAC;QACxB,mBAAc,GAA8B,EAAE,CAAC;QAC/B,+BAA0B,GAAG,IAAI,CAAC;QAClC,eAAU,GAAG,KAAK,CAAC;QACnC,gBAAW,GAAgB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAGjD,oBAAe,GAAgD,IAAI,YAAY,EAAiC,CAAC;QAE1H,cAAS,GAAY,IAAI,CAAC;QAC1B,WAAM,GAAY,KAAK,CAAC;QACxB,eAAU,GAAyC,IAAI,CAAC;QACxD,QAAG,GAAc,KAAK,CAAC;QACf,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QACvC,yBAAoB,GAAG,IAAI,YAAY,EAAkB,CAAC;QAyBlD,oBAAe,GAAW,CAAC,CAAC,CAAC;QAC7B,gCAA2B,GAAwB,YAAY,CAAC,KAAK,CAAC;QACtE,iCAA4B,GAAwB,YAAY,CAAC,KAAK,CAAC;QACvE,iCAA4B,GAAwB,YAAY,CAAC,KAAK,CAAC;;QAEtE,2BAAsB,GAAwC,KAAK,CAAC;YAC3E,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,KAAK,CAA0B,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;aAC9F;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;SACH,CAAC,CAAC;QACM,qBAAgB,GAA8C,KAAK,CAAC;YAC3E,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,KAAK,CAAgC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;aACjG;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;SACH,CAAC,CAAC;KAOC;;;;IAjDJ,IAAI,OAAO;;QAET,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC;SACnC;aAAM;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAChC;KACF;IA2CD,QAAQ;;QACN,MAAA,IAAI,CAAC,cAAc,CAAC,MAAM,0CAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,SAAoB;YACxF,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KACtC;IAED,gBAAgB,CAAC,KAAqB;QACpC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IAED,eAAe;QACb,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IAED,WAAW;QACT,IAAI,CAAC,4BAA6B,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,CAAC,2BAA4B,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,4BAA6B,CAAC,WAAW,EAAE,CAAC;;;;QAIjD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAChH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;IAED,aAAa,CAAC,KAAa;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QACD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KACvC;IAED,iBAAiB;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC;QACrG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAC/B;IAED,qBAAqB;QACnB,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACxG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;KACnC;IAED,cAAc,CAAC,KAAgB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,MAAc,EAAE,OAAsC,EAAE,KAAa,KACpE,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,EAClF,CAAC,CAAC,CACF,CAAC;KACJ;IAED,SAAS,CAAC,KAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;KACjF;IAEO,WAAW;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;;QAEzG,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC3B,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B,CAAC,CAAC;KACJ;;;;IAKD,oBAAoB,CAAC,IAA2C,EAAE,WAAoB,KAAK;QACzF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;YACzB,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,IAAI,QAAQ,EAAE;oBACZ,MAAM,CAAC,QAAQ,EAAE,CAAC;iBACnB;gBACD,MAAM,CAAC,iBAAiB,EAAE,CAAC;aAC5B;SACF,CAAC,CAAC;KACJ;IAEO,sBAAsB;QAC5B,IAAI,CAAC,2BAA4B,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,sBAAsB;aAC3D,IAAI,CAAC,MAAM,CAAC,CAAC,KAA8B,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC;aACnE,SAAS,CAAC,CAAC,KAA8B;YACxC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACzC,CAAC,CAAC;QAEL,IAAI,CAAC,4BAA6B,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAoC;YACvG,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAClC,CAAC,CAAC;KACJ;;oHAxMU,uBAAuB;wGAAvB,uBAAuB,qYAkCjB,6BAA6B,0FAMnC,WAAW,iPAHR,6BAA6B,8EAzEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT,kuBACW,CAAC,WAAW,CAAC;AASA;IAAf,YAAY,EAAE;2EAAmC;AAClC;IAAf,YAAY,EAAE;2DAAoB;2FARjC,uBAAuB;kBA1CnC,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,gBAAgB;oBAC1B,mBAAmB,EAAE,KAAK;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT;oBACD,UAAU,EAAE,CAAC,WAAW,CAAC;iBAC1B;;;8BAwEI,QAAQ;;8BACR,IAAI;;8BAAI,QAAQ;;yBApEV,OAAO;sBAAf,KAAK;gBACG,kBAAkB;sBAA1B,KAAK;gBACG,cAAc;sBAAtB,KAAK;gBACmB,0BAA0B;sBAAlD,KAAK;gBACmB,UAAU;sBAAlC,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,YAAY;sBAApB,KAAK;gBAEG,eAAe;sBADvB,MAAM;gBAwBP,kBAAkB;sBADjB,eAAe;uBAAC,6BAA6B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAGxB,qBAAqB;sBAAjE,YAAY;uBAAC,6BAA6B;gBAGA,QAAQ;sBAAlD,SAAS;uBAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBACF,KAAK;sBAA3C,SAAS;uBAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBACI,OAAO;sBAA/C,SAAS;uBAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;AClIzC;;;;MAmCa,oBAAoB;;iHAApB,oBAAoB;kHAApB,oBAAoB,iBAb7B,uBAAuB;QACvB,6BAA6B;QAC7B,8BAA8B;QAC9B,+BAA+B,aAQvB,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,aALhH,uBAAuB;QACvB,6BAA6B;QAC7B,8BAA8B;QAC9B,+BAA+B;kHAItB,oBAAoB,YAFtB,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC;2FAExG,oBAAoB;kBAfhC,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,6BAA6B;wBAC7B,8BAA8B;wBAC9B,+BAA+B;qBAChC;oBACD,OAAO,EAAE;wBACP,uBAAuB;wBACvB,6BAA6B;wBAC7B,8BAA8B;wBAC9B,+BAA+B;qBAChC;oBACD,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC;iBACpH;;;AClCD;;;;;ACAA;;;;;;"}