{"version":3,"file":"edsis-component-dropdown-menu.mjs","sources":["../../../library/component/dropdown-menu/menu-item.component.ts","../../../library/component/dropdown-menu/menu-surface.component.ts","../../../library/component/dropdown-menu/menu-trigger.directive.ts","../../../library/component/dropdown-menu/edsis-component-dropdown-menu.ts"],"sourcesContent":["import {\n  Component,\n  Directive,\n  ElementRef,\n  computed,\n  forwardRef,\n  inject,\n  input,\n  model,\n  output,\n} from '@angular/core';\nimport { cn } from '@edsis/component/class';\n\nexport type MenuItemVariant = 'default' | 'destructive';\n\n@Directive()\nexport abstract class MenuFocusableItem {\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n  readonly disabledInput = input<boolean>(false, { alias: 'disabled' });\n  readonly inset = input<boolean>(false);\n  readonly class = input<string>('');\n  readonly variant = input<MenuItemVariant>('default');\n\n  readonly selected = output<MouseEvent | KeyboardEvent>();\n\n  get disabled(): boolean {\n    return this.disabledInput();\n  }\n\n  focus(): void {\n    this.el.nativeElement.focus();\n  }\n\n  getLabel(): string {\n    return this.el.nativeElement.textContent?.trim() ?? '';\n  }\n\n  protected buildItemClasses(extraClass = ''): string {\n    return cn(\n      'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none',\n      'transition-colors focus:bg-accent focus:text-accent-foreground',\n      'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n      'data-[inset=true]:pl-8',\n      'data-[variant=destructive]:text-destructive',\n      'data-[variant=destructive]:focus:bg-destructive/10',\n      'data-[variant=destructive]:focus:text-destructive',\n      extraClass,\n      this.class(),\n    );\n  }\n\n  protected emitSelection(event: MouseEvent | KeyboardEvent): boolean {\n    if (this.disabled) {\n      event.preventDefault();\n      return false;\n    }\n\n    this.selected.emit(event);\n    return true;\n  }\n}\n\n@Component({\n  selector: 'MenuGroup',\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"group\"',\n  },\n  template: `<ng-content />`,\n})\nexport class MenuGroupComponent {\n  readonly class = input<string>('');\n  protected readonly classes = computed(() => cn('block', this.class()));\n}\n\n@Directive()\nexport abstract class MenuRadioGroupBase {\n  abstract isChecked(value: string): boolean;\n  abstract select(value: string): void;\n}\n\n@Component({\n  selector: 'MenuRadioGroup',\n  providers: [\n    { provide: MenuRadioGroupBase, useExisting: forwardRef(() => MenuRadioGroupComponent) },\n  ],\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"group\"',\n  },\n  template: `<ng-content />`,\n})\nexport class MenuRadioGroupComponent extends MenuRadioGroupBase {\n  readonly value = model<string | null>(null);\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() => cn('block', this.class()));\n\n  override isChecked(value: string): boolean {\n    return this.value() === value;\n  }\n\n  override select(value: string): void {\n    this.value.set(value);\n  }\n}\n\n@Component({\n  selector: 'MenuItem, button[MenuItem]',\n  providers: [{ provide: MenuFocusableItem, useExisting: forwardRef(() => MenuItemComponent) }],\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"menuitem\"',\n    tabindex: '-1',\n    '[attr.aria-disabled]': 'disabled ? \"true\" : null',\n    '[attr.data-inset]': 'inset() ? \"true\" : null',\n    '[attr.data-variant]': 'variant()',\n    '(click)': 'handleClick($any($event))',\n    '(keydown.enter)': 'handleClick($any($event))',\n    '(keydown.space)': 'handleClick($any($event))',\n  },\n  template: `<ng-content />`,\n})\nexport class MenuItemComponent extends MenuFocusableItem {\n  protected readonly classes = computed(() => this.buildItemClasses());\n\n  protected handleClick(e: MouseEvent | KeyboardEvent): void {\n    this.emitSelection(e);\n  }\n}\n\n@Component({\n  selector: 'MenuCheckboxItem, button[MenuCheckboxItem]',\n  providers: [\n    { provide: MenuFocusableItem, useExisting: forwardRef(() => MenuCheckboxItemComponent) },\n  ],\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"menuitemcheckbox\"',\n    tabindex: '-1',\n    '[attr.aria-disabled]': 'disabled ? \"true\" : null',\n    '[attr.aria-checked]': 'checked()',\n    '[attr.data-state]': 'checked() ? \"checked\" : \"unchecked\"',\n    '[attr.data-variant]': 'variant()',\n    '(click)': 'toggle($any($event))',\n    '(keydown.enter)': 'toggle($any($event))',\n    '(keydown.space)': 'toggle($any($event))',\n  },\n  template: `\n    <span class=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      @if (checked()) {\n        <svg\n          aria-hidden=\"true\"\n          class=\"h-4 w-4\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"currentColor\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n        >\n          <polyline points=\"20 6 9 17 4 12\" />\n        </svg>\n      }\n    </span>\n    <ng-content />\n  `,\n})\nexport class MenuCheckboxItemComponent extends MenuFocusableItem {\n  readonly checked = model<boolean>(false);\n\n  protected readonly classes = computed(() => this.buildItemClasses('pl-8'));\n\n  protected toggle(event: MouseEvent | KeyboardEvent): void {\n    if (!this.emitSelection(event)) {\n      return;\n    }\n\n    this.checked.set(!this.checked());\n  }\n}\n\n@Component({\n  selector: 'MenuRadioItem, button[MenuRadioItem]',\n  providers: [\n    { provide: MenuFocusableItem, useExisting: forwardRef(() => MenuRadioItemComponent) },\n  ],\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"menuitemradio\"',\n    tabindex: '-1',\n    '[attr.aria-disabled]': 'disabled ? \"true\" : null',\n    '[attr.aria-checked]': 'checked()',\n    '[attr.data-state]': 'checked() ? \"checked\" : \"unchecked\"',\n    '[attr.data-variant]': 'variant()',\n    '(click)': 'select($any($event))',\n    '(keydown.enter)': 'select($any($event))',\n    '(keydown.space)': 'select($any($event))',\n  },\n  template: `\n    <span class=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      @if (checked()) {\n        <span aria-hidden=\"true\" class=\"h-2 w-2 rounded-full bg-current\"></span>\n      }\n    </span>\n    <ng-content />\n  `,\n})\nexport class MenuRadioItemComponent extends MenuFocusableItem {\n  private readonly group = inject(MenuRadioGroupBase);\n\n  readonly value = input.required<string>();\n\n  protected readonly checked = computed(() => this.group.isChecked(this.value()));\n  protected readonly classes = computed(() => this.buildItemClasses('pl-8'));\n\n  protected select(event: MouseEvent | KeyboardEvent): void {\n    if (!this.emitSelection(event)) {\n      return;\n    }\n\n    this.group.select(this.value());\n  }\n}\n\n@Component({\n  selector: 'MenuSeparator',\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"separator\"',\n    '[attr.aria-orientation]': '\"horizontal\"',\n  },\n  template: '',\n})\nexport class MenuSeparatorComponent {\n  readonly class = input<string>('');\n  protected readonly classes = computed(() => cn('-mx-1 my-1 block h-px bg-border', this.class()));\n}\n\n@Component({\n  selector: 'MenuLabel',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class MenuLabelComponent {\n  readonly inset = input<boolean>(false);\n  readonly class = input<string>('');\n  protected readonly classes = computed(() =>\n    cn(\n      'px-2 py-1.5 text-sm font-semibold text-foreground',\n      this.inset() ? 'pl-8' : '',\n      this.class(),\n    ),\n  );\n}\n\n@Component({\n  selector: 'MenuShortcut, span[MenuShortcut]',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class MenuShortcutComponent {\n  readonly class = input<string>('');\n  protected readonly classes = computed(() =>\n    cn('ml-auto text-xs tracking-widest text-muted-foreground', this.class()),\n  );\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n  AfterContentInit,\n  Component,\n  Directive,\n  Injector,\n  TemplateRef,\n  computed,\n  contentChildren,\n  inject,\n  input,\n  output,\n} from '@angular/core';\nimport { cn } from '@edsis/component/class';\nimport { MenuFocusableItem } from './menu-item.component';\n\n/**\n * Surface rendered inside the overlay. Hosts keyboard navigation for its items.\n */\n@Component({\n  selector: 'MenuSurface',\n  host: {\n    '[class]': 'classes()',\n    '[attr.role]': '\"menu\"',\n    tabindex: '-1',\n    '(keydown.arrowDown)': 'onArrow($any($event), 1)',\n    '(keydown.arrowUp)': 'onArrow($any($event), -1)',\n    '(keydown.home)': 'onHome($any($event))',\n    '(keydown.end)': 'onEnd($any($event))',\n    '(keydown.tab)': 'onTab($any($event))',\n  },\n  template: `<ng-content />`,\n})\nexport class MenuSurfaceComponent implements AfterContentInit {\n  readonly class = input<string>('');\n\n  private readonly items = contentChildren(MenuFocusableItem, { descendants: true });\n  private readonly injector = inject(Injector);\n\n  readonly closeRequested = output<void>();\n\n  private keyManager: FocusKeyManager<MenuFocusableItem> | null = null;\n\n  protected readonly classes = computed(() =>\n    cn(\n      'z-50 min-w-[8rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none',\n      this.class(),\n    ),\n  );\n\n  ngAfterContentInit(): void {\n    this.keyManager = new FocusKeyManager(this.items, this.injector)\n      .withWrap()\n      .withTypeAhead()\n      .skipPredicate((item) => item.disabled);\n    // Focus the first enabled item when the menu opens.\n    queueMicrotask(() => this.keyManager?.setFirstItemActive());\n  }\n\n  protected onArrow(e: KeyboardEvent, delta: number): void {\n    e.preventDefault();\n    if (!this.keyManager) return;\n    delta > 0 ? this.keyManager.setNextItemActive() : this.keyManager.setPreviousItemActive();\n  }\n\n  protected onHome(e: KeyboardEvent): void {\n    e.preventDefault();\n    this.keyManager?.setFirstItemActive();\n  }\n\n  protected onEnd(e: KeyboardEvent): void {\n    e.preventDefault();\n    this.keyManager?.setLastItemActive();\n  }\n\n  protected onTab(e: KeyboardEvent): void {\n    e.preventDefault();\n    this.closeRequested.emit();\n  }\n}\n\n/**\n * Wraps an `<ng-template>` that holds `<MenuSurface>` + items.\n */\n@Directive({\n  selector: 'ng-template[MenuContent]',\n  exportAs: 'MenuContent',\n})\nexport class MenuContentDirective {\n  readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n  booleanAttribute,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  ViewContainerRef,\n  inject,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport {\n  connectedPositionFor,\n  oppositeSide,\n  type OverlayAlign,\n  type OverlaySide,\n} from '@edsis/component/overlay';\nimport type { MenuContentDirective } from './menu-surface.component';\n\nexport type MenuSide = OverlaySide;\nexport type MenuAlign = OverlayAlign;\n\nconst MENU_SIDE_OFFSET = 4;\n\n/**\n * Opens an `<ng-template MenuContent>` anchored to the trigger element.\n */\n@Directive({\n  selector: '[MenuTrigger]',\n  exportAs: 'MenuTrigger',\n  host: {\n    '[attr.aria-haspopup]': '\"menu\"',\n    '[attr.aria-expanded]': 'isOpen()',\n    '(click)': 'toggle()',\n    '(keydown.enter)': 'openAndFocus($any($event))',\n    '(keydown.space)': 'openAndFocus($any($event))',\n    '(keydown.arrowDown)': 'openAndFocus($any($event))',\n    '(keydown.arrowRight)': 'openForSide($any($event), \"right\")',\n    '(keydown.arrowLeft)': 'openForSide($any($event), \"left\")',\n  },\n})\nexport class MenuTriggerDirective {\n  private readonly overlay = inject(Overlay);\n  private readonly vcr = inject(ViewContainerRef);\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly destroyRef = inject(DestroyRef);\n\n  readonly MenuTrigger = input.required<MenuContentDirective>();\n  readonly side = input<MenuSide>('bottom');\n  readonly align = input<MenuAlign>('start');\n  readonly disabled = input(false, { transform: booleanAttribute });\n\n  readonly openedChange = output<boolean>();\n\n  private overlayRef: OverlayRef | null = null;\n  readonly isOpen = signal(false);\n\n  constructor() {\n    this.destroyRef.onDestroy(() => this.close({ restoreFocus: false }));\n  }\n\n  toggle(): void {\n    if (this.disabled()) return;\n    this.isOpen() ? this.close() : this.open();\n  }\n\n  protected openAndFocus(e: KeyboardEvent): void {\n    if (this.disabled()) return;\n    e.preventDefault();\n    this.open();\n  }\n\n  protected openForSide(e: KeyboardEvent, side: MenuSide): void {\n    if (this.disabled() || this.side() !== side) return;\n    e.preventDefault();\n    this.open();\n  }\n\n  open(): void {\n    if (this.isOpen() || this.disabled()) return;\n    const primary = connectedPositionFor(this.side(), this.align(), MENU_SIDE_OFFSET);\n    const fallbackSide =\n      this.side() === 'top' || this.side() === 'bottom' ? oppositeSide(this.side()) : this.side();\n    const fallback = connectedPositionFor(fallbackSide, this.align(), MENU_SIDE_OFFSET);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy: this.overlay\n        .position()\n        .flexibleConnectedTo(this.el)\n        .withPositions([primary, fallback]),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n      hasBackdrop: false,\n      panelClass: 'menu-panel',\n    });\n\n    const portal = new TemplatePortal(this.MenuTrigger().template, this.vcr);\n    this.overlayRef.attach(portal);\n\n    merge(\n      this.overlayRef\n        .outsidePointerEvents()\n        .pipe(filter((e) => !this.el.nativeElement.contains(e.target as Node))),\n      this.overlayRef.detachments(),\n    )\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.close({ restoreFocus: false }));\n\n    this.overlayRef\n      .keydownEvents()\n      .pipe(\n        takeUntilDestroyed(this.destroyRef),\n        filter((e) => e.key === 'Escape'),\n      )\n      .subscribe(() => this.close());\n\n    this.isOpen.set(true);\n    this.openedChange.emit(true);\n  }\n\n  close(options: { restoreFocus?: boolean } = {}): void {\n    const { restoreFocus = true } = options;\n\n    if (!this.isOpen()) return;\n\n    const overlayRef = this.overlayRef;\n    this.overlayRef = null;\n    this.isOpen.set(false);\n    overlayRef?.dispose();\n    if (!this.destroyRef.destroyed) {\n      this.openedChange.emit(false);\n    }\n\n    if (restoreFocus) {\n      this.el.nativeElement.focus();\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAgBsB,iBAAiB,CAAA;AACpB,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;IAExD,aAAa,GAAG,KAAK,CAAU,KAAK,qFAAI,KAAK,EAAE,UAAU,EAAA,CAAG;IAC5D,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;IAC7B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,OAAO,GAAG,KAAK,CAAkB,SAAS;gFAAC;IAE3C,QAAQ,GAAG,MAAM,EAA8B;AAExD,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC7B;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD;IAEU,gBAAgB,CAAC,UAAU,GAAG,EAAE,EAAA;QACxC,OAAO,EAAE,CACP,gHAAgH,EAChH,gEAAgE,EAChE,4DAA4D,EAC5D,wBAAwB,EACxB,6CAA6C,EAC7C,oDAAoD,EACpD,mDAAmD,EACnD,UAAU,EACV,IAAI,CAAC,KAAK,EAAE,CACb;IACH;AAEU,IAAA,aAAa,CAAC,KAAiC,EAAA;AACvD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,OAAO,IAAI;IACb;uGA5CoB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC;;MAwDY,kBAAkB,CAAA;IACpB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AACf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;uGAF3D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,mRAFnB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,SAAS;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAOqB,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC;;AAiBK,MAAO,uBAAwB,SAAQ,kBAAkB,CAAA;IACpD,KAAK,GAAG,KAAK,CAAgB,IAAI;8EAAC;IAClC,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AAEf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;AAE7D,IAAA,SAAS,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK;IAC/B;AAES,IAAA,MAAM,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;uGAZW,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EATvB;AACT,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC,EAAE;AACxF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAKS,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,uBAAwB,CAAC,EAAE;AACxF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,SAAS;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;AAgCK,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;IACnC,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE;gFAAC;AAE1D,IAAA,WAAW,CAAC,CAA6B,EAAA;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvB;uGALW,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,+cAdjB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC,EAAE,CAAC,iDAYnF,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,iBAAkB,CAAC,EAAE,CAAC;AAC7F,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,mBAAmB,EAAE,yBAAyB;AAC9C,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,SAAS,EAAE,2BAA2B;AACtC,wBAAA,iBAAiB,EAAE,2BAA2B;AAC9C,wBAAA,iBAAiB,EAAE,2BAA2B;AAC/C,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;AA8CK,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;IACrD,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAErB,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;gFAAC;AAEhE,IAAA,MAAM,CAAC,KAAiC,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC9B;QACF;QAEA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACnC;uGAXW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,yCAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAnCzB;AACT,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAAE;SACzF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAaS;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBArCrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,yBAA0B,CAAC,EAAE;AACzF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,mBAAmB,EAAE,qCAAqC;AAC1D,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,iBAAiB,EAAE,sBAAsB;AACzC,wBAAA,iBAAiB,EAAE,sBAAsB;AAC1C,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;AACF,iBAAA;;AAyCK,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAC1C,IAAA,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAE1C,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;AAEtB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;IAC5D,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;gFAAC;AAEhE,IAAA,MAAM,CAAC,KAAiC,EAAA;QAChD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC9B;QACF;QAEA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC;uGAdW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,yCAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAxBtB;AACT,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE;SACtF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAaS;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA1BlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,sBAAuB,CAAC,EAAE;AACtF,qBAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,iBAAiB;AAChC,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,mBAAmB,EAAE,qCAAqC;AAC1D,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,iBAAiB,EAAE,sBAAsB;AACzC,wBAAA,iBAAiB,EAAE,sBAAsB;AAC1C,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA;;MA2BY,sBAAsB,CAAA;IACxB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AACf,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,iCAAiC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;uGAFrF,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,sUAFvB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAED,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,yBAAyB,EAAE,cAAc;AAC1C,qBAAA;AACD,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;MAWY,kBAAkB,CAAA;IACpB,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;IAC7B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACf,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,mDAAmD,EACnD,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,EAC1B,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;uGATU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,iXAFnB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;AAChC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;MAkBY,qBAAqB,CAAA;IACvB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AACf,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CAAC,uDAAuD,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gFAC1E;uGAJU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,gRAFtB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;AAChC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACrPD;;AAEG;MAeU,oBAAoB,CAAA;IACtB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IAEjB,KAAK,GAAG,eAAe,CAAC,iBAAiB,6EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AACjE,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEnC,cAAc,GAAG,MAAM,EAAQ;IAEhC,UAAU,GAA8C,IAAI;AAEjD,IAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,EAAE,CACA,iIAAiI,EACjI,IAAI,CAAC,KAAK,EAAE,CACb;gFACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ;AAC5D,aAAA,QAAQ;AACR,aAAA,aAAa;aACb,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;;QAEzC,cAAc,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAC;IAC7D;IAEU,OAAO,CAAC,CAAgB,EAAE,KAAa,EAAA;QAC/C,CAAC,CAAC,cAAc,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QACtB,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;IAC3F;AAEU,IAAA,MAAM,CAAC,CAAgB,EAAA;QAC/B,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,UAAU,EAAE,kBAAkB,EAAE;IACvC;AAEU,IAAA,KAAK,CAAC,CAAgB,EAAA;QAC9B,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE;IACtC;AAEU,IAAA,KAAK,CAAC,CAAgB,EAAA;QAC9B,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;uGA7CW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAGU,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALhD,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,qBAAqB,EAAE,0BAA0B;AACjD,wBAAA,mBAAmB,EAAE,2BAA2B;AAChD,wBAAA,gBAAgB,EAAE,sBAAsB;AACxC,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,eAAe,EAAE,qBAAqB;AACvC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;AAI0C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,iBAAiB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AA6CnF;;AAEG;MAKU,oBAAoB,CAAA;AACtB,IAAA,QAAQ,GAAG,MAAM,CAAuB,WAAW,CAAC;uGADlD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA;;;AC5DD,MAAM,gBAAgB,GAAG,CAAC;AAE1B;;AAEG;MAeU,oBAAoB,CAAA;AACd,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAwB;IACpD,IAAI,GAAG,KAAK,CAAW,QAAQ;6EAAC;IAChC,KAAK,GAAG,KAAK,CAAY,OAAO;8EAAC;IACjC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAExD,YAAY,GAAG,MAAM,EAAW;IAEjC,UAAU,GAAsB,IAAI;IACnC,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;AAE/B,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;IAC5C;AAEU,IAAA,YAAY,CAAC,CAAgB,EAAA;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,CAAC,CAAC,cAAc,EAAE;QAClB,IAAI,CAAC,IAAI,EAAE;IACb;IAEU,WAAW,CAAC,CAAgB,EAAE,IAAc,EAAA;QACpD,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI;YAAE;QAC7C,CAAC,CAAC,cAAc,EAAE;QAClB,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACtC,QAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC;AACjF,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AAC7F,QAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC;QAEnF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB,EAAE,IAAI,CAAC;AACpB,iBAAA,QAAQ;AACR,iBAAA,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAC3B,iBAAA,aAAa,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,UAAU,EAAE,YAAY;AACzB,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC;AACxE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QAE9B,KAAK,CACH,IAAI,CAAC;AACF,aAAA,oBAAoB;AACpB,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,CAAC,CAAC,EACzE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAE5B,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;aACb,IAAI,CACH,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EACnC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;aAElC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEA,KAAK,CAAC,UAAsC,EAAE,EAAA;AAC5C,QAAA,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO;AAEvC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE;AAEpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,UAAU,EAAE,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;QAEA,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;QAC/B;IACF;uGA9FW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,sCAAA,EAAA,mBAAA,EAAA,qCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,qBAAqB,EAAE,4BAA4B;AACnD,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,qBAAqB,EAAE,mCAAmC;AAC3D,qBAAA;AACF,iBAAA;;;AC7CD;;AAEG;;;;"}