@ng-solid/design-system 22.4.0 → 22.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-solid-design-system.mjs","sources":["../../../../packages/design-system/src/lib/a11y/aria-id.service.ts","../../../../packages/design-system/src/lib/a11y/field-context.ts","../../../../packages/design-system/src/lib/a11y/focus.ts","../../../../packages/design-system/src/lib/a11y/navigation.ts","../../../../packages/design-system/src/lib/a11y/typeahead.ts","../../../../packages/design-system/src/lib/accordion/accordion.component.ts","../../../../packages/design-system/src/lib/alert/alert.component.ts","../../../../packages/design-system/src/lib/avatar/avatar.component.ts","../../../../packages/design-system/src/lib/avatar/avatar-group.component.ts","../../../../packages/design-system/src/lib/badge/badge.component.ts","../../../../packages/design-system/src/lib/breadcrumbs/breadcrumb-item.component.ts","../../../../packages/design-system/src/lib/breadcrumbs/breadcrumbs.component.ts","../../../../packages/design-system/src/lib/button/button.component.ts","../../../../packages/design-system/src/lib/button-group/button-group.component.ts","../../../../packages/design-system/src/lib/card/card.component.ts","../../../../packages/design-system/src/lib/chip/chip.component.ts","../../../../packages/design-system/src/lib/collection/collection.controller.ts","../../../../packages/design-system/src/lib/empty-state/empty-state.component.ts","../../../../packages/design-system/src/lib/overlay/overlay.service.ts","../../../../packages/design-system/src/lib/command-palette/command-palette.component.ts","../../../../packages/design-system/src/lib/form/models/value-accessor.ts","../../../../packages/design-system/src/lib/form/components/checkbox/checkbox.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-calendar.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-range-picker.component.ts","../../../../packages/design-system/src/lib/form/components/dropdown/dropdown-item.directive.ts","../../../../packages/design-system/src/lib/skeleton/skeleton.component.ts","../../../../packages/design-system/src/lib/form/components/dropdown/dropdown.component.ts","../../../../packages/design-system/src/lib/form/components/dropdown/dropdown.component.html","../../../../packages/design-system/src/lib/form/components/input/input.component.ts","../../../../packages/design-system/src/lib/form/components/input/input.component.html","../../../../packages/design-system/src/lib/form/components/input-code/input-code.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group-addon.component.ts","../../../../packages/design-system/src/lib/form/components/input-number/input-number.component.ts","../../../../packages/design-system/src/lib/form/components/input-search/input-search.component.ts","../../../../packages/design-system/src/lib/form/components/radio/radio-context.ts","../../../../packages/design-system/src/lib/form/components/option-card/option-card.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.html","../../../../packages/design-system/src/lib/form/components/radio/radio.component.ts","../../../../packages/design-system/src/lib/form/components/radio/radio-group.component.ts","../../../../packages/design-system/src/lib/form/components/slider/slider.component.ts","../../../../packages/design-system/src/lib/form/components/switch/switch.component.ts","../../../../packages/design-system/src/lib/form/components/text-area/text-area.component.ts","../../../../packages/design-system/src/lib/form/directives/content-editable.directive.ts","../../../../packages/design-system/src/lib/form/index.ts","../../../../packages/design-system/src/lib/comment/comment.component.ts","../../../../packages/design-system/src/lib/comment/comment.component.html","../../../../packages/design-system/src/lib/description/description.component.ts","../../../../packages/design-system/src/lib/divider/divider.component.ts","../../../../packages/design-system/src/lib/drawer/drawer.component.ts","../../../../packages/design-system/src/lib/drawer/models/drawer-ref.ts","../../../../packages/design-system/src/lib/drawer/services/drawer.service.ts","../../../../packages/design-system/src/lib/editor/enums/commands.enum.ts","../../../../packages/design-system/src/lib/editor/models/labels.ts","../../../../packages/design-system/src/lib/editor/services/editor.service.ts","../../../../packages/design-system/src/lib/editor/pipes/editor-label.pipe.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.html","../../../../packages/design-system/src/lib/editor/components/image/image.component.ts","../../../../packages/design-system/src/lib/editor/components/image/image.component.html","../../../../packages/design-system/src/lib/editor/components/link/link.component.ts","../../../../packages/design-system/src/lib/editor/components/link/link.component.html","../../../../packages/design-system/src/lib/editor/components/list/list.component.ts","../../../../packages/design-system/src/lib/editor/components/list/list.component.html","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.ts","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.html","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.ts","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.html","../../../../packages/design-system/src/lib/editor/editor.component.ts","../../../../packages/design-system/src/lib/editor/editor.component.html","../../../../packages/design-system/src/lib/image-upload/pipes/image-url.pipe.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.html","../../../../packages/design-system/src/lib/link/link.component.ts","../../../../packages/design-system/src/lib/menu/menu-item.component.ts","../../../../packages/design-system/src/lib/menu/menu.component.ts","../../../../packages/design-system/src/lib/menu/menu-divider.component.ts","../../../../packages/design-system/src/lib/menu/menu-section.component.ts","../../../../packages/design-system/src/lib/meter/meter.component.ts","../../../../packages/design-system/src/lib/modal/modal.component.ts","../../../../packages/design-system/src/lib/modal/models/modal-ref.ts","../../../../packages/design-system/src/lib/modal/services/modal.service.ts","../../../../packages/design-system/src/lib/pagination/load-more.component.ts","../../../../packages/design-system/src/lib/pagination/pagination.component.ts","../../../../packages/design-system/src/lib/popover/popover.component.ts","../../../../packages/design-system/src/lib/progress-bar/progress-bar.component.ts","../../../../packages/design-system/src/lib/schedule/models/schedule.ts","../../../../packages/design-system/src/lib/schedule/services/schedule.service.ts","../../../../packages/design-system/src/lib/schedule/components/cell/cell.component.ts","../../../../packages/design-system/src/lib/schedule/pipes/week-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/pipes/filter-by-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.html","../../../../packages/design-system/src/lib/schedule/components/day/day.component.ts","../../../../packages/design-system/src/lib/schedule/components/day/day.component.html","../../../../packages/design-system/src/lib/schedule/components/week/week.component.ts","../../../../packages/design-system/src/lib/schedule/components/week/week.component.html","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.ts","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.html","../../../../packages/design-system/src/lib/schedule/schedule.component.ts","../../../../packages/design-system/src/lib/schedule/schedule.component.html","../../../../packages/design-system/src/lib/schema/schema.component.ts","../../../../packages/design-system/src/lib/side-nav/side-nav.component.ts","../../../../packages/design-system/src/lib/side-nav/side-nav-item.component.ts","../../../../packages/design-system/src/lib/side-nav/side-nav-section.component.ts","../../../../packages/design-system/src/lib/stat-card/stat-card.component.ts","../../../../packages/design-system/src/lib/template/template.directive.ts","../../../../packages/design-system/src/lib/theme/presets/arvisfy.preset.ts","../../../../packages/design-system/src/lib/theme/theme.provider.ts","../../../../packages/design-system/src/lib/theme/utils/theme.utils.ts","../../../../packages/design-system/src/lib/theme/services/theme.service.ts","../../../../packages/design-system/src/lib/timeline/timeline.component.ts","../../../../packages/design-system/src/lib/timeline/timeline-item.component.ts","../../../../packages/design-system/src/lib/toast/models/toast-handle.ts","../../../../packages/design-system/src/lib/toast/toast.component.ts","../../../../packages/design-system/src/lib/toast/toast-region.component.ts","../../../../packages/design-system/src/lib/toast/services/toast.service.ts","../../../../packages/design-system/src/lib/surface/surface.component.ts","../../../../packages/design-system/src/lib/tabs/tabs.component.ts","../../../../packages/design-system/src/lib/tag-group/tag-group.component.ts","../../../../packages/design-system/src/lib/tooltip/tooltip.component.ts","../../../../packages/design-system/src/lib/tooltip/tooltip.directive.ts","../../../../packages/design-system/src/index.ts","../../../../packages/design-system/src/ng-solid-design-system.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n/** Generates deterministic-within-a-session ids for ARIA relationships. */\n@Injectable({ providedIn: 'root' })\nexport class NsAriaIdService {\n private nextId = 0;\n\n create(prefix = 'ns'): string {\n this.nextId += 1;\n return `${prefix}-${this.nextId}`;\n }\n}\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { NsAriaIdService } from './aria-id.service';\n\nexport class NsFieldContext {\n private readonly descriptions = new Set<string>();\n private controlId = '';\n\n setControlId(controlId: string): void {\n this.controlId = controlId;\n }\n\n getControlId(): string {\n return this.controlId;\n }\n\n getDescribedBy(): string | undefined {\n return this.descriptions.size\n ? [...this.descriptions].join(' ')\n : undefined;\n }\n\n registerDescription(id: string): void {\n this.descriptions.add(id);\n }\n\n unregisterDescription(id: string): void {\n this.descriptions.delete(id);\n }\n}\n\n@Directive({\n selector: '[nsField]',\n standalone: true,\n providers: [NsFieldContext]\n})\nexport class NsFieldDirective {\n private readonly context = inject(NsFieldContext);\n private readonly ariaIds = inject(NsAriaIdService);\n\n readonly controlId = input(this.ariaIds.create('ns-field'), {\n alias: 'nsField'\n });\n\n constructor() {\n effect(() => this.context.setControlId(this.controlId()));\n }\n}\n","export const NS_FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable=\"true\"]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(',');\n\nexport function getNsFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(NS_FOCUSABLE_SELECTOR)\n ).filter((element) => !element.hasAttribute('hidden') && !element.inert);\n}\n\nexport function focusNsFirst(container: HTMLElement): boolean {\n const element = getNsFocusableElements(container)[0];\n element?.focus();\n return Boolean(element);\n}\n\nexport function focusNsLast(container: HTMLElement): boolean {\n const elements = getNsFocusableElements(container);\n const element = elements[elements.length - 1];\n element?.focus();\n return Boolean(element);\n}\n\nexport function isNsEventInside(\n event: Event,\n ...elements: Array<HTMLElement | undefined>\n): boolean {\n const path = event.composedPath();\n return elements.some((element) => Boolean(element && path.includes(element)));\n}\n","import { NsKey } from '../../types';\n\nexport interface NsNavigableItem {\n key: NsKey;\n disabled?: boolean;\n}\n\nexport type NsNavigationKey =\n 'ArrowDown' | 'ArrowLeft' | 'ArrowRight' | 'ArrowUp' | 'End' | 'Home';\n\nexport function getNsNextNavigableIndex(\n items: readonly NsNavigableItem[],\n currentIndex: number,\n key: NsNavigationKey,\n orientation: 'horizontal' | 'vertical' = 'vertical',\n loop = true\n): number {\n if (!items.length) {\n return -1;\n }\n\n const forward = key === 'ArrowDown' || key === 'ArrowRight';\n const backward = key === 'ArrowUp' || key === 'ArrowLeft';\n if (\n (key === 'ArrowLeft' || key === 'ArrowRight') &&\n orientation !== 'horizontal'\n ) {\n return currentIndex;\n }\n if (\n (key === 'ArrowUp' || key === 'ArrowDown') &&\n orientation !== 'vertical'\n ) {\n return currentIndex;\n }\n if (key === 'Home') {\n return getNsEnabledIndex(items, 0, 1);\n }\n if (key === 'End') {\n return getNsEnabledIndex(items, items.length - 1, -1);\n }\n if (!forward && !backward) {\n return currentIndex;\n }\n\n const step = forward ? 1 : -1;\n const start = currentIndex < 0 ? (forward ? -1 : items.length) : currentIndex;\n for (let offset = 1; offset <= items.length; offset += 1) {\n let index = start + step * offset;\n if (loop) {\n index = ((index % items.length) + items.length) % items.length;\n }\n if (index < 0 || index >= items.length) {\n return currentIndex;\n }\n if (!items[index].disabled) {\n return index;\n }\n }\n return currentIndex;\n}\n\nfunction getNsEnabledIndex(\n items: readonly NsNavigableItem[],\n start: number,\n step: 1 | -1\n): number {\n for (let index = start; index >= 0 && index < items.length; index += step) {\n if (!items[index].disabled) {\n return index;\n }\n }\n return -1;\n}\n","export interface NsTypeaheadItem {\n label?: string;\n disabled?: boolean;\n}\n\nexport class NsTypeaheadController<T extends NsTypeaheadItem> {\n private query = '';\n private lastInputAt = 0;\n\n constructor(private readonly timeout = 500) {}\n\n find(items: readonly T[], key: string, currentIndex = -1): number {\n if (key.length !== 1 || key.trim().length === 0) {\n return -1;\n }\n const now = Date.now();\n this.query = now - this.lastInputAt > this.timeout ? key : this.query + key;\n this.lastInputAt = now;\n const normalized = this.query.toLocaleLowerCase();\n\n for (let offset = 1; offset <= items.length; offset += 1) {\n const index = (currentIndex + offset + items.length) % items.length;\n const item = items[index];\n if (\n !item.disabled &&\n item.label?.toLocaleLowerCase().startsWith(normalized)\n ) {\n return index;\n }\n }\n return -1;\n }\n\n reset(): void {\n this.query = '';\n this.lastInputAt = 0;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n contentChildren,\n effect,\n inject,\n input,\n model\n} from '@angular/core';\nimport { NsKey } from '../../types';\nimport { getNsNextNavigableIndex, NsAriaIdService } from '../a11y';\n\n@Component({\n selector: 'ns-accordion-item',\n standalone: true,\n template: `\n <button\n class=\"ns-accordion-item__trigger\"\n type=\"button\"\n [attr.data-ns-accordion-key]=\"key()\"\n [attr.data-state]=\"expanded() ? 'open' : 'closed'\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId\"\n [disabled]=\"disabled()\"\n >\n {{ label() }}\n </button>\n <div\n class=\"ns-accordion-item__panel\"\n [id]=\"panelId\"\n role=\"region\"\n [attr.aria-label]=\"label()\"\n [hidden]=\"!expanded()\"\n >\n <ng-content />\n </div>\n `,\n styleUrls: ['./accordion.component.scss'],\n host: {\n '[class.ns-accordion-item]': 'true',\n '[class.ns-accordion-item--expanded]': 'expanded()',\n '[class.ns-accordion-item--disabled]': 'disabled()',\n '[attr.data-state]':\n \"disabled() ? 'disabled' : (expanded() ? 'open' : 'closed')\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAccordionItemComponent {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false);\n readonly expanded = model(false);\n readonly panelId = inject(NsAriaIdService).create('ns-accordion-panel');\n\n readonly element = inject(ElementRef<HTMLElement>);\n}\n\n@Component({\n selector: 'ns-accordion',\n standalone: true,\n template: '<ng-content />',\n styleUrls: ['./accordion.component.scss'],\n host: {\n '[class.ns-accordion]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAccordionComponent {\n readonly multiple = input(false);\n readonly expandedKeys = model<readonly NsKey[]>([]);\n readonly items = contentChildren(NsAccordionItemComponent);\n\n constructor() {\n effect(() => {\n const expanded = new Set(this.expandedKeys());\n for (const item of this.items()) {\n item.expanded.set(expanded.has(item.key()));\n }\n });\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const trigger = (event.target as HTMLElement | null)?.closest<HTMLElement>(\n '[data-ns-accordion-key]'\n );\n const key = this.findKey(trigger);\n if (key !== undefined) {\n this.toggle(key);\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n return;\n }\n const items = this.items();\n const current = items.findIndex((item) =>\n item.element.nativeElement.contains(event.target as Node)\n );\n const index = getNsNextNavigableIndex(\n items.map((item) => ({ key: item.key(), disabled: item.disabled() })),\n current,\n event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'\n );\n if (index >= 0) {\n event.preventDefault();\n const itemElement = items[index].element.nativeElement as HTMLElement;\n itemElement.querySelector<HTMLButtonElement>('button')?.focus();\n }\n }\n\n toggle(key: NsKey): void {\n const item = this.items().find((candidate) => candidate.key() === key);\n if (!item || item.disabled()) {\n return;\n }\n const expanded = new Set(this.expandedKeys());\n if (expanded.has(key)) {\n expanded.delete(key);\n } else {\n if (!this.multiple()) {\n expanded.clear();\n }\n expanded.add(key);\n }\n const next = [...expanded];\n this.expandedKeys.set(next);\n }\n\n private findKey(trigger: HTMLElement | null): NsKey | undefined {\n if (!trigger) {\n return undefined;\n }\n return this.items()\n .find((item) => item.element.nativeElement.contains(trigger))\n ?.key();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\nexport type NsAlertVariant = 'info' | 'warning' | 'danger' | 'success';\n\n@Component({\n selector: 'ns-alert',\n standalone: true,\n imports: [NsIconsComponent],\n template: `\n <ns-icon\n class=\"ns-alert__icon\"\n [name]=\"iconName()\"\n [size]=\"20\"\n aria-hidden=\"true\"\n />\n <div class=\"ns-alert__content\">\n @if (title()) {\n <strong class=\"ns-alert__title\">{{ title() }}</strong>\n }\n <div class=\"ns-alert__message\"><ng-content /></div>\n <div class=\"ns-alert__footer\"><ng-content select=\"ns-link\" /></div>\n </div>\n @if (dismissible()) {\n <button\n class=\"ns-alert__dismiss\"\n type=\"button\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"dismissed.emit()\"\n >\n ×\n </button>\n }\n `,\n styleUrl: './alert.component.scss',\n host: {\n role: 'alert',\n '[class.ns-alert]': 'true',\n '[class.ns-alert--info]': \"variant() === 'info'\",\n '[class.ns-alert--success]': \"variant() === 'success'\",\n '[class.ns-alert--warning]': \"variant() === 'warning'\",\n '[class.ns-alert--danger]': \"variant() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAlertComponent {\n readonly variant = input<NsAlertVariant>('info');\n readonly title = input<string>('');\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly dismissLabel = input<string>('Dismiss alert');\n readonly dismissed = output<void>();\n\n iconName(): string {\n switch (this.variant()) {\n case 'success':\n return 'circle-check';\n case 'warning':\n return 'triangle-alert';\n case 'danger':\n return 'circle-x';\n default:\n return 'info';\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n signal\n} from '@angular/core';\nimport { NsSize } from '../../types';\n\n@Component({\n selector: 'ns-avatar',\n standalone: true,\n template: `\n @if (showImage()) {\n <img\n class=\"ns-avatar__image\"\n [src]=\"src()\"\n [alt]=\"alt()\"\n (error)=\"onImageError()\"\n />\n } @else if (initials()) {\n <span class=\"ns-avatar__initials\">{{ initials() }}</span>\n } @else if (icon()) {\n <span class=\"ns-avatar__icon\" aria-hidden=\"true\">{{ icon() }}</span>\n }\n `,\n styleUrl: './avatar.component.scss',\n host: {\n '[class.ns-avatar]': 'true',\n '[class.ns-avatar--circle]': \"shape() === 'circle'\",\n '[class.ns-avatar--square]': \"shape() === 'square'\",\n '[class.ns-avatar--sm]': \"size() === 'sm'\",\n '[class.ns-avatar--md]': \"size() === 'md'\",\n '[class.ns-avatar--lg]': \"size() === 'lg'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAvatarComponent {\n readonly src = input<string>('');\n readonly alt = input<string>('');\n readonly initials = input<string>('');\n readonly icon = input<string>('');\n readonly shape = input<'circle' | 'square'>('circle');\n readonly size = input<NsSize>('md');\n\n private readonly imageFailed = signal(false);\n readonly showImage = computed(\n () => Boolean(this.src().trim()) && !this.imageFailed()\n );\n\n onImageError(): void {\n this.imageFailed.set(true);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n contentChildren,\n effect,\n input,\n numberAttribute\n} from '@angular/core';\nimport { NsAvatarComponent } from './avatar.component';\n\n/**\n * Stacks projected `ns-avatar` instances with a configurable overlap and\n * collapses the overflow into a \"+N\" counter. Overlap and visibility are\n * applied imperatively to each projected avatar's native element (read via\n * `contentChildren(..., { read: ElementRef })`) rather than through\n * `::ng-deep`, since the overlap is a per-instance numeric input, not a\n * design token.\n */\n@Component({\n selector: 'ns-avatar-group',\n standalone: true,\n template: `\n <ng-content />\n @if (overflowCount() > 0) {\n <span\n class=\"ns-avatar-group__counter\"\n [style.margin-inline-start.px]=\"-overlap()\"\n >+{{ overflowCount() }}</span\n >\n }\n `,\n styleUrl: './avatar-group.component.scss',\n host: {\n role: 'group',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.ns-avatar-group]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAvatarGroupComponent {\n readonly overlap = input(8, { transform: numberAttribute });\n readonly max = input<number | undefined>(undefined);\n readonly total = input<number | undefined>(undefined);\n readonly ariaLabel = input<string>('Avatar group');\n\n private readonly avatars = contentChildren(NsAvatarComponent, {\n read: ElementRef\n });\n\n readonly visibleCount = computed(() => {\n const count = this.avatars().length;\n const max = this.max();\n return max === undefined ? count : Math.min(max, count);\n });\n\n readonly overflowCount = computed(() => {\n const total = this.total();\n const baseline = total === undefined ? this.avatars().length : total;\n return Math.max(0, baseline - this.visibleCount());\n });\n\n constructor() {\n effect(() => this.syncAvatars());\n }\n\n private syncAvatars(): void {\n const avatars = this.avatars();\n const visible = this.visibleCount();\n const overlap = this.overlap();\n avatars.forEach((avatarRef, index) => {\n const element = avatarRef.nativeElement as HTMLElement;\n element.style.display = index < visible ? '' : 'none';\n element.style.marginInlineStart = index === 0 ? '0' : `${-overlap}px`;\n element.style.zIndex = String(avatars.length - index);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\n\nexport type NsBadgeMode = 'count' | 'dot';\n\nfunction numberOrUndefined(value: unknown): number | undefined {\n return value === undefined || value === null\n ? undefined\n : numberAttribute(value);\n}\n\n@Component({\n selector: 'ns-badge',\n standalone: true,\n template: \"@if (isVisible() && mode() === 'count') { {{ displayCount() }} }\",\n styleUrl: './badge.component.scss',\n host: {\n '[class.ns-badge]': 'true',\n '[class.ns-badge--single]': \"appearance() === 'single'\",\n '[class.ns-badge--double]': \"appearance() === 'double'\",\n '[class.ns-badge--overflow]': \"appearance() === 'overflow'\",\n '[class.ns-badge--dot]': \"appearance() === 'dot'\",\n '[class.ns-badge--hidden]': \"appearance() === 'hidden'\",\n '[attr.hidden]': 'isVisible() ? null : true',\n '[attr.aria-hidden]': \"isVisible() && ariaLabel() ? null : 'true'\",\n '[attr.role]': \"isVisible() && ariaLabel() ? 'img' : null\",\n '[attr.aria-label]': 'isVisible() && ariaLabel() ? ariaLabel() : null'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsBadgeComponent {\n readonly count = input<number | undefined, unknown>(undefined, {\n transform: numberOrUndefined\n });\n readonly mode = input<NsBadgeMode>('count');\n readonly ariaLabel = input<string | undefined>(undefined);\n\n readonly normalizedCount = computed(() => {\n const count = this.count();\n if (count === undefined || !Number.isFinite(count)) return undefined;\n\n const normalized = Math.trunc(count);\n return normalized > 0 ? normalized : undefined;\n });\n\n readonly isVisible = computed(\n () => this.mode() === 'dot' || this.normalizedCount() !== undefined\n );\n\n readonly displayCount = computed(() => {\n const count = this.normalizedCount();\n if (count === undefined) return '';\n return count >= 100 ? '99+' : String(count);\n });\n\n readonly appearance = computed<\n 'single' | 'double' | 'overflow' | 'dot' | 'hidden'\n >(() => {\n if (!this.isVisible()) return 'hidden';\n if (this.mode() === 'dot') return 'dot';\n\n const count = this.normalizedCount() as number;\n if (count >= 100) return 'overflow';\n return count >= 10 ? 'double' : 'single';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-breadcrumb-item',\n standalone: true,\n template: `\n @if (href() && !current()) {\n <a class=\"ns-breadcrumb-item__link\" [href]=\"href()\"><ng-content /></a>\n } @else {\n <span class=\"ns-breadcrumb-item__label\"><ng-content /></span>\n }\n `,\n styleUrl: './breadcrumbs.component.scss',\n host: {\n '[attr.aria-current]': \"current() ? 'page' : null\",\n '[class.ns-breadcrumb-item]': 'true',\n '[class.ns-breadcrumb-item--current]': 'current()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsBreadcrumbItemComponent {\n readonly href = input<string>('');\n readonly current = input(false);\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-breadcrumbs',\n standalone: true,\n template: '<ol class=\"ns-breadcrumbs__list\"><ng-content /></ol>',\n styleUrl: './breadcrumbs.component.scss',\n host: {\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.ns-breadcrumbs]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsBreadcrumbsComponent {\n readonly ariaLabel = input<string>('Breadcrumb');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n input,\n signal,\n viewChild\n} from '@angular/core';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsSize } from '../../types';\n\nexport type NsButtonVariant =\n 'primary' | 'secondary' | 'tertiary' | 'success' | 'danger' | 'dark';\n\nfunction booleanOrUndefined(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\n@Component({\n selector: 'ns-button',\n standalone: true,\n imports: [NsIconsComponent],\n template: `\n <button\n #control\n class=\"ns-button__control\"\n [attr.type]=\"type()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-busy]=\"loading() || null\"\n [attr.role]=\"checkable() ? 'radio' : null\"\n [attr.aria-checked]=\"checkable() ? selected() === true : null\"\n [attr.aria-pressed]=\"\n checkable() ? null : selected() === undefined ? null : selected()\n \"\n [attr.tabindex]=\"active() ? null : -1\"\n [disabled]=\"disabled() || loading()\"\n >\n @if (loading()) {\n <span class=\"ns-button__spinner\" aria-hidden=\"true\"></span>\n } @else if (icon()) {\n <ns-icon\n class=\"ns-button__icon\"\n [name]=\"icon()\"\n size=\"16\"\n aria-hidden=\"true\"\n />\n }\n <ng-content />\n </button>\n `,\n styleUrl: './button.component.scss',\n host: {\n '[class.ns-button]': 'true',\n '[class.ns-button--block]': 'block()',\n '[class.ns-button--icon-only]': 'iconOnly()',\n '[class.ns-button--loading]': 'loading()',\n '[class.ns-button--selected]': 'selected() === true',\n '[class.ns-button--unselected]': 'selected() === false',\n '[attr.data-selected]': 'selected() === undefined ? null : selected()',\n '[class.ns-button--sm]': \"size() === 'sm'\",\n '[class.ns-button--md]': \"size() === 'md'\",\n '[class.ns-button--lg]': \"size() === 'lg'\",\n '[class.ns-button--primary]': \"variant() === 'primary'\",\n '[class.ns-button--secondary]': \"variant() === 'secondary'\",\n '[class.ns-button--tertiary]': \"variant() === 'tertiary'\",\n '[class.ns-button--success]': \"variant() === 'success'\",\n '[class.ns-button--danger]': \"variant() === 'danger'\",\n '[class.ns-button--dark]': \"variant() === 'dark'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsButtonComponent {\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly variant = input<NsButtonVariant>('primary');\n readonly size = input<NsSize>('md');\n readonly icon = input<string>('');\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('');\n readonly block = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly selected = input<boolean | undefined, unknown>(undefined, {\n transform: booleanOrUndefined\n });\n\n /**\n * Roving-tabindex participation, managed by a hosting `ns-button-group`.\n * `true` (the default) leaves the button's native tabbing behavior alone;\n * a group sets it to `false` on every button except the current roving\n * stop.\n */\n readonly active = signal(true);\n\n /**\n * Radio semantics, managed by a hosting `ns-button-group` in\n * `selectionMode=\"single\"`. Swaps `aria-pressed` for `role=\"radio\"` +\n * `aria-checked`.\n */\n readonly checkable = signal(false);\n\n private readonly control =\n viewChild.required<ElementRef<HTMLButtonElement>>('control');\n\n focus(): void {\n this.control().nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n contentChildren,\n effect,\n input\n} from '@angular/core';\nimport { NsButtonComponent } from '../button/button.component';\nimport { NsOrientation } from '../../types';\nimport { getNsNextNavigableIndex, NsNavigationKey } from '../a11y';\n\nexport type NsButtonGroupSelectionMode = 'single' | 'multiple';\n\nconst NAVIGATION_KEYS: readonly string[] = [\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End'\n];\n\n@Component({\n selector: 'ns-button-group',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './button-group.component.scss',\n host: {\n '[attr.role]': \"selectionMode() === 'single' ? 'radiogroup' : 'group'\",\n '[attr.aria-label]': 'ariaLabel()',\n '[class.ns-button-group]': 'true',\n '[class.ns-button-group--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ns-button-group--vertical]': \"orientation() === 'vertical'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n/**\n * Segmented geometry is applied when direct `ns-button` children are projected\n * into the group. Wrapping a button is not part of this contract.\n *\n * Selection itself stays consumer-controlled through each `ns-button`'s own\n * `[selected]` input; the group only reflects it in ARIA (`aria-checked` for\n * `selectionMode=\"single\"`, the default `aria-pressed` for `\"multiple\"`) and\n * drives a roving tabindex so only one button sits in the tab order.\n */\nexport class NsButtonGroupComponent {\n readonly ariaLabel = input<string>('Actions');\n readonly orientation = input<NsOrientation>('horizontal');\n readonly selectionMode = input<NsButtonGroupSelectionMode>('multiple');\n readonly buttons = contentChildren(NsButtonComponent);\n\n private activeIndex = 0;\n\n constructor() {\n effect(() => this.syncState());\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n const buttons = this.buttons();\n if (!buttons.length || !NAVIGATION_KEYS.includes(event.key)) {\n return;\n }\n const next = getNsNextNavigableIndex(\n buttons.map((button) => ({ key: 0, disabled: button.disabled() })),\n this.activeIndex,\n event.key as NsNavigationKey,\n this.orientation()\n );\n if (next >= 0 && next !== this.activeIndex) {\n event.preventDefault();\n this.focus(next);\n }\n }\n\n private focus(index: number): void {\n this.activeIndex = index;\n this.syncState();\n this.buttons()[index]?.focus();\n }\n\n private syncState(): void {\n const buttons = this.buttons();\n if (!buttons.length) {\n return;\n }\n if (\n this.activeIndex >= buttons.length ||\n buttons[this.activeIndex].disabled()\n ) {\n const firstEnabled = buttons.findIndex((button) => !button.disabled());\n this.activeIndex = firstEnabled >= 0 ? firstEnabled : 0;\n }\n const checkable = this.selectionMode() === 'single';\n buttons.forEach((button, index) => {\n button.active.set(index === this.activeIndex);\n button.checkable.set(checkable);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsVariant } from '../../types';\n\n@Component({\n selector: 'ns-card',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: {\n '[attr.aria-label]': 'ariaLabel() || null',\n '[class.ns-card]': 'true',\n '[class.ns-card--solid]': \"variant() === 'solid'\",\n '[class.ns-card--soft]': \"variant() === 'soft'\",\n '[class.ns-card--outline]': \"variant() === 'outline'\",\n '[class.ns-card--ghost]': \"variant() === 'ghost'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardComponent {\n readonly ariaLabel = input<string>('');\n readonly variant = input<NsVariant>('solid');\n}\n\n@Component({\n selector: 'ns-card-header',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: { '[class.ns-card__header]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardHeaderComponent {}\n\n@Component({\n selector: 'ns-card-body',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: { '[class.ns-card__body]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardBodyComponent {}\n\n@Component({\n selector: 'ns-card-footer',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: { '[class.ns-card__footer]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardFooterComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\nimport { NsColor, NsVariant } from '../../types';\n\n/**\n * Chip-local color union. `info` and `selected` are compact filter/status\n * treatments specific to `ns-chip` and are intentionally not added to the\n * shared `NsColor` union, which many other components reuse.\n */\nexport type NsChipColor = NsColor | 'info' | 'selected';\n\n/**\n * Chip-local variant union. `tint` is a filter/selection treatment (filled\n * background, 1px border and text in the same status color) specific to\n * `ns-chip` and intentionally not added to the shared `NsVariant` union.\n */\nexport type NsChipVariant = Exclude<NsVariant, 'ghost'> | 'tint';\n\nexport type NsChipSize = 'md' | 'pill' | 'choice';\n\n@Component({\n selector: 'ns-chip',\n standalone: true,\n template: `\n <span class=\"ns-chip__label\"><ng-content /></span>\n @if (dismissible()) {\n <button\n class=\"ns-chip__dismiss\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"removed.emit()\"\n >\n ×\n </button>\n }\n `,\n styleUrl: './chip.component.scss',\n host: {\n '[class.ns-chip]': 'true',\n '[class.ns-chip--disabled]': 'disabled()',\n '[class.ns-chip--solid]': \"variant() === 'solid'\",\n '[class.ns-chip--soft]': \"variant() === 'soft'\",\n '[class.ns-chip--outline]': \"variant() === 'outline'\",\n '[class.ns-chip--tint]': \"variant() === 'tint'\",\n '[class.ns-chip--neutral]': \"color() === 'neutral'\",\n '[class.ns-chip--primary]': \"color() === 'primary'\",\n '[class.ns-chip--success]': \"color() === 'success'\",\n '[class.ns-chip--warning]': \"color() === 'warning'\",\n '[class.ns-chip--danger]': \"color() === 'danger'\",\n '[class.ns-chip--info]': \"color() === 'info'\",\n '[class.ns-chip--selected]': \"color() === 'selected'\",\n '[class.ns-chip--md]': \"size() === 'md'\",\n '[class.ns-chip--pill]': \"size() === 'pill'\",\n '[class.ns-chip--choice]': \"size() === 'choice'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsChipComponent {\n readonly color = input<NsChipColor>('neutral');\n readonly variant = input<NsChipVariant>('soft');\n readonly size = input<NsChipSize>('md');\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly dismissLabel = input<string>('Remove');\n readonly removed = output<void>();\n}\n","import { computed, signal } from '@angular/core';\nimport { NsCollectionItem, NsKey, NsSelectionMode } from '../../types';\n\nexport class NsCollectionController<T = unknown, TKey extends NsKey = NsKey> {\n private readonly itemsState = signal<readonly NsCollectionItem<T, TKey>[]>(\n []\n );\n private readonly selectedKeysState = signal<ReadonlySet<TKey>>(\n new Set<TKey>()\n );\n\n readonly items = this.itemsState.asReadonly();\n readonly selectedKeys = this.selectedKeysState.asReadonly();\n readonly selectedItems = computed(() =>\n this.itemsState().filter((item) => this.selectedKeysState().has(item.key))\n );\n\n constructor(private readonly selectionMode: NsSelectionMode = 'single') {}\n\n setItems(items: readonly NsCollectionItem<T, TKey>[]): void {\n this.itemsState.set(items);\n const knownKeys = new Set(items.map((item) => item.key));\n this.selectedKeysState.update(\n (keys) => new Set([...keys].filter((key) => knownKeys.has(key)))\n );\n }\n\n isSelected(key: TKey): boolean {\n return this.selectedKeysState().has(key);\n }\n\n select(key: TKey): void {\n const item = this.itemsState().find((candidate) => candidate.key === key);\n if (!item || item.disabled || this.selectionMode === 'none') {\n return;\n }\n if (this.selectionMode === 'single') {\n this.selectedKeysState.set(new Set([key]));\n return;\n }\n this.selectedKeysState.update((keys) => new Set(keys).add(key));\n }\n\n toggle(key: TKey): void {\n if (this.selectionMode !== 'multiple') {\n this.select(key);\n return;\n }\n const item = this.itemsState().find((candidate) => candidate.key === key);\n if (!item || item.disabled) {\n return;\n }\n this.selectedKeysState.update((keys) => {\n const next = new Set(keys);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n clear(): void {\n this.selectedKeysState.set(new Set<TKey>());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type NsEmptyStateSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'ns-empty-state',\n standalone: true,\n template: `\n <span class=\"ns-empty-state__icon\"\n ><ng-content select=\"[empty-state-icon]\"\n /></span>\n <div class=\"ns-empty-state__text\">\n <p class=\"ns-empty-state__title\">{{ title() }}</p>\n @if (description()) {\n <p class=\"ns-empty-state__description\">{{ description() }}</p>\n }\n </div>\n <div class=\"ns-empty-state__actions\">\n <ng-content select=\"[empty-state-actions]\" />\n </div>\n `,\n styleUrl: './empty-state.component.scss',\n host: {\n '[class.ns-empty-state]': 'true',\n '[class.ns-empty-state--sm]': \"size() === 'sm'\",\n '[class.ns-empty-state--md]': \"size() === 'md'\",\n '[class.ns-empty-state--lg]': \"size() === 'lg'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsEmptyStateComponent {\n readonly title = input.required<string>();\n readonly description = input<string | undefined>(undefined);\n readonly size = input<NsEmptyStateSize>('md');\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, inject, signal } from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport {\n focusNsFirst,\n focusNsLast,\n getNsFocusableElements,\n isNsEventInside\n} from '../a11y';\n\nexport type NsOverlayCloseReason = 'dismiss' | 'escape' | 'programmatic';\n\nexport interface NsOverlayConfig {\n origin?: HTMLElement;\n matchOriginWidth?: boolean;\n placement?: NsPlacement;\n offset?: number;\n closeOnEscape?: boolean;\n closeOnOutsidePointer?: boolean;\n trapFocus?: boolean;\n restoreFocus?: boolean;\n inert?: boolean;\n lockScroll?: boolean;\n}\n\nexport interface NsOverlayPosition {\n top: number;\n left: number;\n placement: NsPlacement;\n}\n\ninterface NsResolvedOverlayConfig {\n origin?: HTMLElement;\n matchOriginWidth: boolean;\n placement: NsPlacement;\n offset: number;\n closeOnEscape: boolean;\n closeOnOutsidePointer: boolean;\n trapFocus: boolean;\n restoreFocus: boolean;\n inert: boolean;\n lockScroll: boolean;\n}\n\ninterface NsAttachedContent {\n element: HTMLElement;\n parent: Node | null;\n nextSibling: Node | null;\n}\n\ninterface NsInertState {\n inert: boolean;\n ariaHidden: string | null;\n}\n\nconst VIEWPORT_GUTTER = 8;\n\nexport class NsOverlayRef {\n private readonly closeListeners = new Set<\n (reason: NsOverlayCloseReason) => void\n >();\n private attachedContent?: NsAttachedContent;\n private closedState = false;\n private readonly priorFocusedElement: HTMLElement | null;\n\n readonly closed = signal<NsOverlayCloseReason | undefined>(undefined);\n\n constructor(\n readonly portal: HTMLElement,\n readonly config: NsResolvedOverlayConfig,\n private readonly document: Document,\n private readonly closeOverlay: (\n ref: NsOverlayRef,\n reason: NsOverlayCloseReason\n ) => void\n ) {\n const activeElement = document.activeElement;\n this.priorFocusedElement =\n activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n attach(element: HTMLElement): void {\n if (this.closedState) {\n throw new Error('Cannot attach content to a closed overlay.');\n }\n this.detachContent();\n this.attachedContent = {\n element,\n parent: element.parentNode,\n nextSibling: element.nextSibling\n };\n this.portal.appendChild(element);\n this.updatePosition();\n }\n\n updatePosition(): void {\n if (this.closedState || !this.config.origin) {\n return;\n }\n const view = this.document.defaultView;\n if (!view) {\n return;\n }\n const origin = this.config.origin.getBoundingClientRect();\n if (this.config.matchOriginWidth) {\n this.portal.style.width = `${origin.width}px`;\n }\n const position = getNsOverlayPosition(\n origin,\n this.portal.getBoundingClientRect(),\n this.config.placement,\n this.config.offset,\n view.innerWidth,\n view.innerHeight\n );\n this.portal.style.top = `${position.top}px`;\n this.portal.style.left = `${position.left}px`;\n this.portal.dataset['nsPlacement'] = position.placement;\n }\n\n focusInitial(): void {\n if (\n !this.config.trapFocus ||\n this.closedState ||\n this.portal.inert ||\n this.portal.getAttribute('aria-hidden') === 'true'\n ) {\n return;\n }\n queueMicrotask(() => {\n if (!this.closedState) {\n focusNsFirst(this.portal) || this.portal.focus();\n }\n });\n }\n\n close(reason: NsOverlayCloseReason = 'programmatic'): void {\n this.closeOverlay(this, reason);\n }\n\n onClose(listener: (reason: NsOverlayCloseReason) => void): () => void {\n this.closeListeners.add(listener);\n return () => this.closeListeners.delete(listener);\n }\n\n isClosed(): boolean {\n return this.closedState;\n }\n\n finalizeClose(reason: NsOverlayCloseReason): void {\n if (this.closedState) {\n return;\n }\n this.closedState = true;\n this.detachContent();\n this.portal.remove();\n this.closed.set(reason);\n for (const listener of this.closeListeners) {\n listener(reason);\n }\n this.closeListeners.clear();\n }\n\n restoreFocus(): void {\n if (this.config.restoreFocus && this.priorFocusedElement?.isConnected) {\n this.priorFocusedElement.focus();\n }\n }\n\n private detachContent(): void {\n const attachedContent = this.attachedContent;\n if (!attachedContent || !attachedContent.parent) {\n return;\n }\n if (attachedContent.nextSibling?.parentNode === attachedContent.parent) {\n attachedContent.parent.insertBefore(\n attachedContent.element,\n attachedContent.nextSibling\n );\n } else {\n attachedContent.parent.appendChild(attachedContent.element);\n }\n this.attachedContent = undefined;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NsOverlayService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly browser = isPlatformBrowser(this.platformId);\n private readonly overlays: NsOverlayRef[] = [];\n private readonly inertStates = new Map<HTMLElement, NsInertState>();\n private readonly overlayStackStates = new Map<HTMLElement, NsInertState>();\n private scrollOverflow?: string;\n private resizeObserver?: ResizeObserver;\n\n open(config: NsOverlayConfig = {}): NsOverlayRef {\n if (!this.browser) {\n throw new Error('NsOverlayService requires a browser document.');\n }\n const portal = this.document.createElement('div');\n portal.className = 'ns-overlay__portal';\n portal.tabIndex = -1;\n portal.inert = false;\n // The portal is a positioning/stacking box only — it never paints\n // chrome. Every projected root (menu, popover, modal, drawer, ...)\n // already draws its own background/border/radius/shadow, so doing it\n // here again duplicated the chrome and, since no `overlay` component\n // tokens existed, silently fell back to invalid values.\n portal.style.position = 'fixed';\n portal.style.zIndex = `calc(var(--ns-component-overlay-layer) + ${this.overlays.length})`;\n this.document.body.appendChild(portal);\n this.overlayStackStates.set(portal, {\n inert: portal.inert,\n ariaHidden: portal.getAttribute('aria-hidden')\n });\n\n const ref = new NsOverlayRef(\n portal,\n {\n origin: config.origin,\n matchOriginWidth: config.matchOriginWidth ?? false,\n placement: config.placement ?? 'bottom-start',\n offset: config.offset ?? VIEWPORT_GUTTER,\n closeOnEscape: config.closeOnEscape ?? true,\n closeOnOutsidePointer: config.closeOnOutsidePointer ?? true,\n trapFocus: config.trapFocus ?? false,\n restoreFocus: config.restoreFocus ?? true,\n inert: config.inert ?? false,\n lockScroll: config.lockScroll ?? false\n },\n this.document,\n (overlay, reason) => this.close(overlay, reason)\n );\n this.overlays.push(ref);\n this.syncDocumentState();\n ref.updatePosition();\n ref.focusInitial();\n return ref;\n }\n\n closeAll(): void {\n [...this.overlays].reverse().forEach((overlay) => overlay.close());\n }\n\n private close(ref: NsOverlayRef, reason: NsOverlayCloseReason): void {\n const index = this.overlays.indexOf(ref);\n if (index < 0) {\n return;\n }\n this.overlays.splice(index, 1);\n ref.finalizeClose(reason);\n this.overlayStackStates.delete(ref.portal);\n this.syncDocumentState();\n ref.restoreFocus();\n }\n\n private syncDocumentState(): void {\n const top = this.overlays.at(-1);\n if (!top) {\n this.removeDocumentListeners();\n this.restoreDocumentState();\n return;\n }\n this.addDocumentListeners();\n this.syncOverlayStackState(top);\n this.updatePositions();\n if (this.overlays.some((overlay) => overlay.config.lockScroll)) {\n this.lockScroll();\n } else {\n this.unlockScroll();\n }\n if (this.overlays.some((overlay) => overlay.config.inert)) {\n this.applyInert();\n } else {\n this.restoreInert();\n }\n }\n\n private addDocumentListeners(): void {\n const view = this.document.defaultView;\n this.document.addEventListener('keydown', this.handleKeydown);\n this.document.addEventListener('pointerdown', this.handlePointerDown, true);\n this.document.addEventListener('scroll', this.updatePositions, true);\n view?.addEventListener('resize', this.updatePositions);\n if (!this.resizeObserver && view?.ResizeObserver) {\n this.resizeObserver = new view.ResizeObserver(this.updatePositions);\n }\n if (this.resizeObserver) {\n for (const overlay of this.overlays) {\n this.resizeObserver.observe(overlay.portal);\n if (overlay.config.origin) {\n this.resizeObserver.observe(overlay.config.origin);\n }\n }\n }\n }\n\n private removeDocumentListeners(): void {\n const view = this.document.defaultView;\n this.document.removeEventListener('keydown', this.handleKeydown);\n this.document.removeEventListener(\n 'pointerdown',\n this.handlePointerDown,\n true\n );\n this.document.removeEventListener('scroll', this.updatePositions, true);\n view?.removeEventListener('resize', this.updatePositions);\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n\n private readonly handleKeydown = (event: KeyboardEvent): void => {\n const top = this.overlays.at(-1);\n if (!top) {\n return;\n }\n if (event.key === 'Escape' && top.config.closeOnEscape) {\n event.preventDefault();\n top.close('escape');\n return;\n }\n if (event.key !== 'Tab' || !top.config.trapFocus) {\n return;\n }\n const focusable = getNsFocusableElements(top.portal);\n if (!focusable.length) {\n event.preventDefault();\n top.portal.focus();\n return;\n }\n const activeElement = this.document.activeElement;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (\n event.shiftKey &&\n (activeElement === first || !top.portal.contains(activeElement))\n ) {\n event.preventDefault();\n focusNsLast(top.portal);\n } else if (!event.shiftKey && activeElement === last) {\n event.preventDefault();\n focusNsFirst(top.portal);\n }\n };\n\n private readonly handlePointerDown = (event: PointerEvent): void => {\n const top = this.overlays.at(-1);\n if (\n !top ||\n !top.config.closeOnOutsidePointer ||\n isNsEventInside(event, top.portal, top.config.origin)\n ) {\n return;\n }\n top.close('dismiss');\n };\n\n private readonly updatePositions = (): void => {\n for (const overlay of this.overlays) {\n overlay.updatePosition();\n }\n };\n\n private lockScroll(): void {\n if (this.scrollOverflow !== undefined) {\n return;\n }\n this.scrollOverflow = this.document.body.style.overflow;\n this.document.body.style.overflow = 'hidden';\n }\n\n private unlockScroll(): void {\n if (this.scrollOverflow === undefined) {\n return;\n }\n this.document.body.style.overflow = this.scrollOverflow;\n this.scrollOverflow = undefined;\n }\n\n private applyInert(): void {\n const children = Array.from(this.document.body.children).filter(\n (child): child is HTMLElement => child instanceof HTMLElement\n );\n for (const child of children) {\n if (child.classList.contains('ns-overlay__portal')) {\n continue;\n }\n if (!this.inertStates.has(child)) {\n this.inertStates.set(child, {\n inert: child.inert,\n ariaHidden: child.getAttribute('aria-hidden')\n });\n }\n child.inert = true;\n child.setAttribute('aria-hidden', 'true');\n }\n }\n\n private syncOverlayStackState(top: NsOverlayRef): void {\n for (const overlay of this.overlays) {\n const portal = overlay.portal;\n const state = this.overlayStackStates.get(portal);\n if (!state) {\n continue;\n }\n if (overlay === top) {\n portal.inert = state.inert;\n if (state.ariaHidden === null) {\n portal.removeAttribute('aria-hidden');\n } else {\n portal.setAttribute('aria-hidden', state.ariaHidden);\n }\n } else {\n portal.inert = true;\n portal.setAttribute('aria-hidden', 'true');\n }\n }\n }\n\n private restoreInert(): void {\n for (const [element, state] of this.inertStates) {\n element.inert = state.inert;\n if (state.ariaHidden === null) {\n element.removeAttribute('aria-hidden');\n } else {\n element.setAttribute('aria-hidden', state.ariaHidden);\n }\n }\n this.inertStates.clear();\n }\n\n private restoreDocumentState(): void {\n this.unlockScroll();\n this.restoreInert();\n }\n}\n\nexport function getNsOverlayPosition(\n origin: DOMRect,\n overlay: DOMRect,\n placement: NsPlacement,\n offset: number,\n viewportWidth: number,\n viewportHeight: number\n): NsOverlayPosition {\n const candidate = getCandidatePosition(origin, overlay, placement, offset);\n const flippedPlacement = getFlippedPlacement(placement);\n const flippedCandidate = getCandidatePosition(\n origin,\n overlay,\n flippedPlacement,\n offset\n );\n const selected = hasPrimaryAxisOverflow(\n candidate,\n placement,\n overlay,\n viewportWidth,\n viewportHeight\n )\n ? flippedCandidate\n : candidate;\n return {\n top: clamp(\n selected.top,\n VIEWPORT_GUTTER,\n viewportHeight - overlay.height - VIEWPORT_GUTTER\n ),\n left: clamp(\n selected.left,\n VIEWPORT_GUTTER,\n viewportWidth - overlay.width - VIEWPORT_GUTTER\n ),\n placement: selected === flippedCandidate ? flippedPlacement : placement\n };\n}\n\nfunction getCandidatePosition(\n origin: DOMRect,\n overlay: DOMRect,\n placement: NsPlacement,\n offset: number\n): NsOverlayPosition {\n const [side, alignment] = placement.split('-') as [\n 'top' | 'right' | 'bottom' | 'left',\n 'start' | 'end' | undefined\n ];\n let top = origin.bottom + offset;\n let left = origin.left;\n\n if (side === 'top') {\n top = origin.top - overlay.height - offset;\n } else if (side === 'right') {\n top = origin.top;\n left = origin.right + offset;\n } else if (side === 'left') {\n top = origin.top;\n left = origin.left - overlay.width - offset;\n }\n if (side === 'top' || side === 'bottom') {\n if (alignment === 'end') {\n left = origin.right - overlay.width;\n } else if (!alignment) {\n left = origin.left + (origin.width - overlay.width) / 2;\n }\n } else if (alignment === 'end') {\n top = origin.bottom - overlay.height;\n } else if (!alignment) {\n top = origin.top + (origin.height - overlay.height) / 2;\n }\n return { top, left, placement };\n}\n\nfunction getFlippedPlacement(placement: NsPlacement): NsPlacement {\n const [side, alignment] = placement.split('-') as [\n string,\n string | undefined\n ];\n const opposite: Record<string, string> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n };\n return `${opposite[side]}${alignment ? `-${alignment}` : ''}` as NsPlacement;\n}\n\nfunction hasPrimaryAxisOverflow(\n position: NsOverlayPosition,\n placement: NsPlacement,\n overlay: DOMRect,\n viewportWidth: number,\n viewportHeight: number\n): boolean {\n return placement.startsWith('top') || placement.startsWith('bottom')\n ? position.top < VIEWPORT_GUTTER ||\n position.top + overlay.height > viewportHeight - VIEWPORT_GUTTER\n : position.left < VIEWPORT_GUTTER ||\n position.left + overlay.width > viewportWidth - VIEWPORT_GUTTER;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.max(min, max) < min ? min : Math.min(value, max));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n TemplateRef,\n booleanAttribute,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal\n} from '@angular/core';\nimport {\n NsAriaIdService,\n getNsNextNavigableIndex,\n NsNavigationKey\n} from '../a11y';\nimport { NsEmptyStateComponent } from '../empty-state';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsCommandGroup, NsCommandItem } from './models/command.model';\n\nconst NAVIGATION_KEYS: readonly string[] = [\n 'ArrowDown',\n 'ArrowUp',\n 'Home',\n 'End'\n];\n\n/**\n * Centered command palette (⌘K-style) built on `NsOverlayService` for its\n * focus trap, escape dismissal, scroll lock and inert background — the same\n * mechanism `ns-menu` and `ns-popover` use, minus anchor-relative placement\n * since this overlay is always centered in the viewport. It has no\n * dedicated open/close service: like `ns-menu` and `ns-popover`, it exposes\n * an `open` model that the host application binds to (for example from a\n * global keyboard shortcut), so a single declared instance can be toggled\n * from anywhere without an extra imperative API to keep in sync.\n *\n * `query` is a debounced model: the input reflects every keystroke\n * immediately, but `query` (and therefore `queryChange`) only updates after\n * `debounceMs` of inactivity, so consumers filtering `groups` server-side\n * are not flooded on every keystroke.\n *\n * `NsCommandItem.icon` is a plain string key, not markup — pair it with\n * `itemIconTemplate` (an `<ng-template let-item>`, rendered through\n * `ngTemplateOutlet` with `$implicit` bound to the item) to project an icon\n * component per item. Falls back to the `avatarText` initials badge, then to\n * a reserved-width placeholder so labels stay aligned when neither is set.\n */\n@Component({\n selector: 'ns-command-palette',\n standalone: true,\n imports: [NsEmptyStateComponent, NgTemplateOutlet],\n template: `\n <div class=\"ns-command-palette__backdrop\" (click)=\"close()\"></div>\n <div\n class=\"ns-command-palette__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div class=\"ns-command-palette__search\">\n <span class=\"ns-command-palette__search-icon\" aria-hidden=\"true\"\n ><ng-content select=\"[command-palette-icon]\"\n /></span>\n <input\n #searchInput\n class=\"ns-command-palette__input\"\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDomId() || null\"\n [placeholder]=\"placeholder()\"\n [value]=\"draft()\"\n (input)=\"onQueryInput($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n </div>\n <div class=\"ns-command-palette__body\">\n @if (loading()) {\n <p class=\"ns-command-palette__loading\">Buscando…</p>\n } @else if (!flatItems().length) {\n <ns-empty-state\n size=\"sm\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyDescription()\"\n />\n } @else {\n <div\n class=\"ns-command-palette__list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @for (group of groups(); track group.id) {\n @if (group.items.length) {\n <div class=\"ns-command-palette__group\">\n <p class=\"ns-command-palette__group-label\">\n {{ group.label }}\n </p>\n @for (item of group.items; track item.id) {\n <div\n [id]=\"itemDomId(item)\"\n class=\"ns-command-palette__item\"\n role=\"option\"\n [attr.aria-selected]=\"item.id === activeId()\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [class.ns-command-palette__item--active]=\"\n item.id === activeId()\n \"\n [class.ns-command-palette__item--disabled]=\"item.disabled\"\n (click)=\"activateItem(item)\"\n (mouseenter)=\"setActive(item)\"\n >\n @if (itemIconTemplate(); as iconTemplate) {\n <span class=\"ns-command-palette__item-icon\">\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </span>\n } @else if (item.avatarText) {\n <span class=\"ns-command-palette__item-avatar\">{{\n item.avatarText\n }}</span>\n } @else {\n <span\n class=\"ns-command-palette__item-icon-placeholder\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"ns-command-palette__item-label\">{{\n item.label\n }}</span>\n @if (item.meta) {\n <span class=\"ns-command-palette__item-meta\">{{\n item.meta\n }}</span>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n <div class=\"ns-command-palette__footer\">\n <ng-content select=\"[command-palette-footer]\" />\n </div>\n </div>\n `,\n styleUrl: './command-palette.component.scss',\n host: {\n '[class.ns-command-palette]': 'true',\n '[attr.data-state]': \"open() ? 'open' : 'closed'\",\n '[attr.aria-hidden]': '!open()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCommandPaletteComponent implements AfterViewInit, OnDestroy {\n readonly open = model(false);\n readonly query = model('');\n readonly placeholder = input<string>('Buscar…');\n readonly debounceMs = input(200, { transform: numberAttribute });\n readonly groups = input<readonly NsCommandGroup[]>([]);\n readonly itemIconTemplate = input<\n TemplateRef<{ $implicit: NsCommandItem }> | undefined\n >(undefined);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyTitle = input<string>('Sin resultados');\n readonly emptyDescription = input<string | undefined>(undefined);\n readonly ariaLabel = input<string>('Paleta de comandos');\n readonly activated = output<NsCommandItem>();\n readonly closed = output<NsOverlayCloseReason>();\n\n protected readonly draft = signal('');\n protected readonly activeId = signal<string | null>(null);\n protected readonly listboxId = inject(NsAriaIdService).create(\n 'ns-command-palette-listbox'\n );\n private readonly idPrefix = inject(NsAriaIdService).create(\n 'ns-command-palette-item'\n );\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n private debounceTimer?: ReturnType<typeof setTimeout>;\n\n constructor() {\n effect(() => {\n const open = this.open();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => {\n const value = this.query();\n if (!this.debounceTimer) {\n this.draft.set(value);\n }\n });\n effect(() => this.syncActiveItem());\n this.destroyRef.onDestroy(() => clearTimeout(this.debounceTimer));\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.open()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n close(): void {\n this.open.set(false);\n }\n\n protected flatItems(): NsCommandItem[] {\n return this.groups().flatMap((group) => [...group.items]);\n }\n\n protected itemDomId(item: NsCommandItem): string {\n return `${this.idPrefix}-${item.id}`;\n }\n\n protected activeDomId(): string | undefined {\n const id = this.activeId();\n if (!id) {\n return undefined;\n }\n const item = this.flatItems().find((candidate) => candidate.id === id);\n return item ? this.itemDomId(item) : undefined;\n }\n\n protected setActive(item: NsCommandItem): void {\n if (!item.disabled) {\n this.activeId.set(item.id);\n }\n }\n\n protected activateItem(item: NsCommandItem): void {\n if (item.disabled) {\n return;\n }\n this.activated.emit(item);\n this.close();\n }\n\n protected onQueryInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.draft.set(value);\n clearTimeout(this.debounceTimer);\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = undefined;\n this.query.set(value);\n }, this.debounceMs());\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const items = this.flatItems();\n if (event.key === 'Enter') {\n const active = items.find((item) => item.id === this.activeId());\n if (active) {\n event.preventDefault();\n this.activateItem(active);\n }\n return;\n }\n if (!items.length || !NAVIGATION_KEYS.includes(event.key)) {\n return;\n }\n const navigable = items.map((item) => ({\n key: item.id,\n disabled: item.disabled\n }));\n const currentIndex = items.findIndex((item) => item.id === this.activeId());\n const nextIndex = getNsNextNavigableIndex(\n navigable,\n currentIndex,\n event.key as NsNavigationKey,\n 'vertical'\n );\n if (nextIndex >= 0 && nextIndex !== currentIndex) {\n event.preventDefault();\n this.activeId.set(items[nextIndex].id);\n this.scrollActiveIntoView(nextIndex);\n }\n }\n\n private scrollActiveIntoView(index: number): void {\n const elements = this.element.nativeElement.querySelectorAll(\n '.ns-command-palette__item'\n ) as NodeListOf<HTMLElement>;\n elements[index]?.scrollIntoView?.({ block: 'nearest' });\n }\n\n private syncActiveItem(): void {\n const items = this.flatItems();\n const current = this.activeId();\n if (!items.length) {\n if (current !== null) {\n this.activeId.set(null);\n }\n return;\n }\n const stillValid = items.some(\n (item) => item.id === current && !item.disabled\n );\n if (!stillValid) {\n const firstEnabled = items.find((item) => !item.disabled);\n this.activeId.set(firstEnabled ? firstEnabled.id : null);\n }\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n closeOnEscape: true,\n closeOnOutsidePointer: false,\n trapFocus: true,\n restoreFocus: true,\n inert: true,\n lockScroll: true\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.open()) {\n this.open.set(false);\n }\n this.closed.emit(reason);\n });\n }\n}\n","import { Directive, computed, inject, input, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NsAriaIdService, NsFieldContext } from '../../a11y';\n\n@Directive()\nexport abstract class NsValueAccessor<\n T = string\n> implements ControlValueAccessor {\n private readonly ariaIds = inject(NsAriaIdService);\n private readonly field = inject(NsFieldContext, {\n optional: true,\n skipSelf: true\n });\n\n public readonly type = input('text');\n public readonly placeholder = input('');\n public readonly label = input<string | undefined>(undefined);\n public readonly description = input<string | undefined>(undefined);\n public readonly errorMessage = input<string | undefined>(undefined);\n public readonly required = input(false);\n public readonly invalid = input(false);\n public readonly disabled = model(false);\n public readonly readonly = input(false);\n public readonly name = input<string | undefined>(undefined);\n public readonly ariaLabel = input<string | undefined>(undefined);\n public readonly ariaDescribedBy = input<string | undefined>(undefined);\n public readonly size = input<'sm' | 'md' | 'lg'>('md');\n public readonly color = input<\n 'neutral' | 'primary' | 'success' | 'warning' | 'danger'\n >('neutral');\n public readonly variant = input<'solid' | 'soft' | 'outline' | 'ghost'>(\n 'outline'\n );\n\n public readonly id = this.ariaIds.create('ns-control');\n public readonly descriptionId = `${this.id}-description`;\n public readonly errorId = `${this.id}-error`;\n public readonly controlId = computed(\n () => this.field?.getControlId() || this.id\n );\n public readonly describedBy = computed(() => {\n const ids = [\n this.ariaDescribedBy(),\n this.field?.getDescribedBy(),\n this.description() ? this.descriptionId : undefined,\n this.invalid() && this.errorMessage() ? this.errorId : undefined\n ].filter((id): id is string => Boolean(id));\n return ids.length ? ids.join(' ') : undefined;\n });\n\n public readonly value = model<T>(undefined as T);\n\n public setValue(value: T): void {\n if (!Object.is(this.value(), value)) {\n this.value.set(value);\n this.onChange(value);\n }\n }\n\n public onTouched = () => {};\n\n public onChange: (value: T) => void = () => {};\n\n writeValue(value: T): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-checkbox',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<label class=\"ns-checkbox__label\" [for]=\"controlId()\"\n ><input\n class=\"ns-checkbox__input\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n type=\"checkbox\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n /><span>{{ label() }}</span>\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n @if (description()) {\n <p class=\"ns-checkbox__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-checkbox__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsCheckboxComponent),\n multi: true\n }\n ],\n host: { '[class.ns-checkbox]': 'true' }\n})\nexport class NsCheckboxComponent extends NsValueAccessor<boolean> {}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n LOCALE_ID,\n computed,\n effect,\n inject,\n input,\n output\n} from '@angular/core';\nimport {\n DateFormatter,\n DateValue,\n DayOfWeek,\n endOfMonth,\n getDayOfWeek,\n isToday,\n startOfMonth,\n startOfWeek\n} from '@internationalized/date';\nimport { NsCollectionController } from '../../../collection';\nimport { NsDateRangeValue } from '../../../../types';\n\ntype CalendarDay = {\n readonly date: DateValue;\n readonly key: string;\n readonly outside: boolean;\n readonly disabled: boolean;\n readonly current: boolean;\n readonly selected: boolean;\n readonly inRange: boolean;\n readonly label: string;\n};\n\n@Component({\n selector: 'ns-date-picker-calendar',\n standalone: true,\n imports: [CommonModule],\n template: `\n <table\n class=\"ns-date-picker__month\"\n role=\"grid\"\n [attr.aria-label]=\"monthLabel()\"\n (keydown)=\"onKeydown($event)\"\n >\n <thead>\n <tr role=\"row\">\n @for (weekday of weekdays(); track weekday.label) {\n <th\n class=\"ns-date-picker__weekday\"\n scope=\"col\"\n [attr.aria-label]=\"weekday.fullLabel\"\n >\n {{ weekday.label }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (week of days(); track week[0]?.key) {\n <tr role=\"row\">\n @for (day of week; track day.key) {\n @if (day.outside) {\n <td class=\"ns-date-picker__cell\" aria-hidden=\"true\"></td>\n } @else {\n <td\n class=\"ns-date-picker__cell\"\n role=\"gridcell\"\n [class.ns-date-picker__cell--selected]=\"day.selected\"\n [class.ns-date-picker__cell--range]=\"day.inRange\"\n [class.ns-date-picker__cell--disabled]=\"day.disabled\"\n [class.ns-date-picker__cell--current]=\"day.current\"\n [attr.data-state]=\"\n day.disabled\n ? 'unavailable'\n : day.selected\n ? 'selected'\n : day.inRange\n ? 'range'\n : 'available'\n \"\n [attr.aria-selected]=\"day.selected\"\n [attr.aria-current]=\"day.current ? 'date' : null\"\n [attr.aria-disabled]=\"day.disabled\"\n >\n <button\n class=\"ns-date-picker__day\"\n type=\"button\"\n [attr.data-date]=\"day.key\"\n [attr.aria-label]=\"day.label\"\n [attr.aria-selected]=\"day.selected\"\n [attr.aria-current]=\"day.current ? 'date' : null\"\n [attr.aria-disabled]=\"day.disabled\"\n [attr.tabindex]=\"isFocused(day.date) ? 0 : -1\"\n [disabled]=\"day.disabled\"\n (focus)=\"dateFocused.emit(day.date)\"\n (click)=\"select(day)\"\n >\n {{ day.date.day }}\n </button>\n </td>\n }\n }\n </tr>\n }\n </tbody>\n </table>\n `,\n styleUrl: './date-picker-calendar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDatePickerCalendarComponent {\n readonly month = input.required<DateValue>();\n readonly selected = input<DateValue | null>(null);\n readonly range = input<NsDateRangeValue<DateValue> | null>(null);\n readonly focused = input<DateValue | null>(null);\n readonly minDate = input<DateValue | null>(null);\n readonly maxDate = input<DateValue | null>(null);\n readonly unavailableDates = input<readonly DateValue[]>([]);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n readonly dateSelected = output<DateValue>();\n readonly dateFocused = output<DateValue>();\n\n private readonly locale = inject(LOCALE_ID);\n private readonly collection = new NsCollectionController<DateValue, string>(\n 'single'\n );\n private readonly weekdayFormatter = new DateFormatter(this.locale, {\n weekday: 'short',\n timeZone: 'UTC'\n });\n private readonly weekdayLongFormatter = new DateFormatter(this.locale, {\n weekday: 'long',\n timeZone: 'UTC'\n });\n private readonly dayFormatter = new DateFormatter(this.locale, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private readonly monthFormatter = new DateFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n\n readonly monthLabel = computed(() =>\n this.format(this.monthFormatter, this.month())\n );\n readonly weekdays = computed(() => {\n const start = startOfWeek(this.month(), this.locale, this.firstDayOfWeek());\n return Array.from({ length: 7 }, (_, index) => {\n const date = start.add({ days: index });\n return {\n label: this.format(this.weekdayFormatter, date),\n fullLabel: this.format(this.weekdayLongFormatter, date)\n };\n });\n });\n readonly days = computed(() => this.buildDays());\n\n constructor() {\n effect(() => {\n this.collection.setItems(\n this.days()\n .flat()\n .map((day) => ({\n key: day.key,\n value: day.date,\n label: day.label,\n disabled: day.disabled\n }))\n );\n const selected = this.selected();\n if (selected) {\n this.collection.select(selected.toString());\n }\n });\n }\n\n onKeydown(event: KeyboardEvent): void {\n const focused =\n this.focused() || this.selected() || this.firstAvailableDay();\n if (!focused) {\n return;\n }\n const delta = this.keyDelta(event.key, focused);\n if (!delta) {\n return;\n }\n event.preventDefault();\n const next = focused.add(delta);\n if (event.key === 'PageUp' || event.key === 'PageDown') {\n this.dateFocused.emit(next);\n return;\n }\n this.dateFocused.emit(this.closestAvailable(next, delta.days || 1));\n }\n\n isFocused(date: DateValue): boolean {\n const focused = this.focused();\n return !!focused && focused.compare(date) === 0;\n }\n\n select(day: CalendarDay): void {\n if (!day.disabled) {\n this.collection.select(day.key);\n this.dateSelected.emit(day.date);\n }\n }\n\n private buildDays(): readonly CalendarDay[][] {\n const firstMonthDay = startOfMonth(this.month());\n const gridStart = startOfWeek(\n firstMonthDay,\n this.locale,\n this.firstDayOfWeek()\n );\n const leadingDays = getDayOfWeek(\n firstMonthDay,\n this.locale,\n this.firstDayOfWeek()\n );\n const trailingDays =\n 6 -\n getDayOfWeek(\n endOfMonth(firstMonthDay),\n this.locale,\n this.firstDayOfWeek()\n );\n const totalDays = leadingDays + this.daysInMonth() + trailingDays;\n const weeks = Array.from({ length: totalDays / 7 }, (_, week) =>\n Array.from({ length: 7 }, (_, day) =>\n this.toCalendarDay(gridStart.add({ days: week * 7 + day }))\n )\n );\n const firstBlankDay = gridStart.add({ days: totalDays });\n\n while (weeks.length < 6) {\n weeks.push(\n Array.from({ length: 7 }, (_, day) =>\n this.toCalendarDay(\n firstBlankDay.add({ days: weeks.length * 7 + day })\n )\n )\n );\n }\n\n return weeks;\n }\n\n private daysInMonth(): number {\n return this.month().add({ months: 1 }).subtract({ days: 1 }).day;\n }\n\n private toCalendarDay(date: DateValue): CalendarDay {\n const visibleMonth = this.month();\n const range = this.range();\n const selected = this.selected();\n const isStart = !!range?.start && range.start.compare(date) === 0;\n const isEnd = !!range?.end && range.end.compare(date) === 0;\n return {\n date,\n key: date.toString(),\n outside:\n date.month !== visibleMonth.month || date.year !== visibleMonth.year,\n disabled: !this.isAvailable(date),\n current: isToday(date, 'UTC'),\n selected:\n (!!selected && selected.compare(date) === 0) || isStart || isEnd,\n inRange:\n !!range?.start &&\n !!range.end &&\n date.compare(range.start) >= 0 &&\n date.compare(range.end) <= 0,\n label: this.format(this.dayFormatter, date)\n };\n }\n\n private isAvailable(date: DateValue): boolean {\n const month = this.month();\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n date.month === month.month &&\n date.year === month.year &&\n (!minDate || date.compare(minDate) >= 0) &&\n (!maxDate || date.compare(maxDate) <= 0) &&\n !this.unavailableDates().some(\n (unavailable) => unavailable.compare(date) === 0\n )\n );\n }\n\n private firstAvailableDay(): DateValue | null {\n return (\n this.days()\n .flat()\n .find((day) => !day.disabled)?.date || null\n );\n }\n\n private closestAvailable(date: DateValue, direction: number): DateValue {\n let candidate = date;\n for (let attempt = 0; attempt < 366; attempt += 1) {\n if (this.isAvailable(candidate)) {\n return candidate;\n }\n candidate = candidate.add({ days: direction });\n }\n return date;\n }\n\n private keyDelta(\n key: string,\n focused: DateValue\n ): { days?: number; months?: number } | null {\n switch (key) {\n case 'ArrowLeft':\n return { days: -1 };\n case 'ArrowRight':\n return { days: 1 };\n case 'ArrowUp':\n return { days: -7 };\n case 'ArrowDown':\n return { days: 7 };\n case 'Home':\n return {\n days: -getDayOfWeek(focused, this.locale, this.firstDayOfWeek())\n };\n case 'End':\n return {\n days: 6 - getDayOfWeek(focused, this.locale, this.firstDayOfWeek())\n };\n case 'PageUp':\n return { months: -1 };\n case 'PageDown':\n return { months: 1 };\n default:\n return null;\n }\n }\n\n private format(formatter: DateFormatter, date: DateValue): string {\n return formatter.format(date.toDate('UTC'));\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n LOCALE_ID,\n ViewChild,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DateFormatter,\n DateValue,\n DayOfWeek,\n today\n} from '@internationalized/date';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsOverlayRef, NsOverlayService } from '../../../overlay';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDatePickerCalendarComponent } from './date-picker-calendar.component';\n\ntype PickerView = 'calendar' | 'months' | 'years';\n\ntype PickerOptionState = {\n readonly current: boolean;\n readonly selected: boolean;\n readonly visible: boolean;\n readonly focused: boolean;\n};\n\n@Component({\n selector: 'ns-date-picker',\n standalone: true,\n imports: [NsIconsComponent, NsDatePickerCalendarComponent],\n template: `\n @if (label()) {\n <label class=\"ns-date-picker__label\" [attr.for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <button\n #trigger\n class=\"ns-date-picker__control\"\n type=\"button\"\n [attr.id]=\"controlId()\"\n [attr.name]=\"name() || null\"\n [attr.aria-label]=\"ariaLabel() || label() || placeholder()\"\n [attr.aria-describedby]=\"describedBy()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggle()\"\n (blur)=\"onTouched()\"\n >\n <ns-icon name=\"calendar-plus\" size=\"20\" aria-hidden=\"true\" />\n <span class=\"ns-date-picker__value\">{{ displayValue() }}</span>\n </button>\n\n <section\n #calendar\n class=\"ns-date-picker__menu\"\n [attr.id]=\"calendarId\"\n role=\"dialog\"\n [attr.aria-label]=\"calendarLabel\"\n [hidden]=\"!isOpen()\"\n >\n <header class=\"ns-date-picker__header\">\n <h2 class=\"ns-date-picker__title\">Seleccionar fecha</h2>\n <div class=\"ns-date-picker__selectors\">\n <button\n class=\"ns-date-picker__selector\"\n type=\"button\"\n aria-label=\"Seleccionar mes\"\n [attr.aria-expanded]=\"isPickerView('months')\"\n [attr.aria-controls]=\"calendarId + '-months'\"\n [class.ns-date-picker__selector--active]=\"isPickerView('months')\"\n (click)=\"openMonthPicker()\"\n >\n <span>{{ monthOnlyLabel() }}</span>\n <ns-icon name=\"chevron-down\" size=\"18\" aria-hidden=\"true\" />\n </button>\n <button\n class=\"ns-date-picker__selector\"\n type=\"button\"\n aria-label=\"Seleccionar año\"\n [attr.aria-expanded]=\"isPickerView('years')\"\n [attr.aria-controls]=\"calendarId + '-years'\"\n [class.ns-date-picker__selector--active]=\"isPickerView('years')\"\n (click)=\"openYearPicker()\"\n >\n <span>{{ visibleMonth().year }}</span>\n <ns-icon name=\"chevron-down\" size=\"18\" aria-hidden=\"true\" />\n </button>\n </div>\n </header>\n @if (isPickerView('calendar')) {\n <ns-date-picker-calendar\n [month]=\"visibleMonth()\"\n [selected]=\"value()\"\n [focused]=\"focusedDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [unavailableDates]=\"unavailableDates()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n (dateSelected)=\"select($event)\"\n (dateFocused)=\"focusDate($event)\"\n ></ns-date-picker-calendar>\n } @else if (isPickerView('months')) {\n <div\n class=\"ns-date-picker__month-grid\"\n [attr.id]=\"calendarId + '-months'\"\n aria-label=\"Meses\"\n >\n @for (month of monthOptions(); track month.value) {\n <button\n class=\"ns-date-picker__picker-option\"\n type=\"button\"\n [disabled]=\"month.disabled\"\n [attr.aria-current]=\"month.current ? 'true' : null\"\n [attr.aria-pressed]=\"month.selected ? 'true' : null\"\n [class.ns-date-picker__picker-option--current]=\"month.current\"\n [class.ns-date-picker__picker-option--selected]=\"month.selected\"\n [class.ns-date-picker__picker-option--visible]=\"month.visible\"\n (click)=\"selectMonth(month.value)\"\n >\n {{ month.label }}\n </button>\n }\n </div>\n } @else {\n <div class=\"ns-date-picker__years\" [attr.id]=\"calendarId + '-years'\">\n <div class=\"ns-date-picker__year-pagination\">\n <button\n class=\"ns-date-picker__year-navigation\"\n type=\"button\"\n aria-label=\"Página de años anterior\"\n [disabled]=\"!canGoToPreviousYearPage()\"\n (click)=\"moveYearPage(-1)\"\n >\n <ns-icon name=\"chevron-left\" size=\"18\" aria-hidden=\"true\" />\n </button>\n <span class=\"ns-date-picker__year-range\">{{\n yearPageLabel()\n }}</span>\n <button\n class=\"ns-date-picker__year-navigation\"\n type=\"button\"\n aria-label=\"Página de años siguiente\"\n [disabled]=\"!canGoToNextYearPage()\"\n (click)=\"moveYearPage(1)\"\n >\n <ns-icon name=\"chevron-right\" size=\"18\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"ns-date-picker__year-grid\" aria-label=\"Años\">\n @for (year of yearPageOptionStates(); track $index) {\n <button\n class=\"ns-date-picker__picker-option\"\n type=\"button\"\n [attr.aria-current]=\"year.current ? 'true' : null\"\n [attr.aria-pressed]=\"year.selected ? 'true' : null\"\n [class.ns-date-picker__picker-option--current]=\"year.current\"\n [class.ns-date-picker__picker-option--selected]=\"year.selected\"\n [class.ns-date-picker__picker-option--visible]=\"year.visible\"\n (click)=\"selectYear(year.value)\"\n >\n {{ year.value }}\n </button>\n }\n </div>\n </div>\n }\n <p class=\"ns-date-picker__announcement\" aria-live=\"polite\">\n {{ calendarAnnouncement() }}\n </p>\n </section>\n `,\n styleUrl: './date-picker.component.scss',\n host: {\n '[class.ns-date-picker]': 'true',\n '[class.ns-date-picker--open]': 'isOpen()',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NsDatePickerComponent,\n multi: true\n }\n ]\n})\nexport class NsDatePickerComponent extends NsValueAccessor<DateValue | null> {\n readonly minDate = input<DateValue | null>(null);\n readonly maxDate = input<DateValue | null>(null);\n readonly unavailableDates = input<readonly DateValue[]>([]);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n\n @ViewChild('calendar') private calendar?: ElementRef<HTMLElement>;\n @ViewChild('trigger') private trigger?: ElementRef<HTMLElement>;\n\n readonly calendarId = `${this.id}-calendar`;\n readonly calendarLabel = 'Date picker';\n readonly isOpen = signal(false);\n readonly focusedDate = signal<DateValue | null>(null);\n readonly visibleMonth = signal<DateValue>(today('UTC'));\n readonly yearAnchor = signal(today('UTC').year);\n private readonly pickerView = signal<PickerView>('calendar');\n private readonly yearPageStart = signal(today('UTC').year);\n\n private readonly overlay = inject(NsOverlayService);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly locale = inject(LOCALE_ID);\n private readonly monthFormatter = new DateFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private readonly monthOnlyFormatter = new DateFormatter(this.locale, {\n month: 'long',\n timeZone: 'UTC'\n });\n private overlayRef: NsOverlayRef | null = null;\n\n readonly displayValue = computed(() => {\n const value = this.value();\n if (!value) {\n return this.placeholder();\n }\n return new DateFormatter(this.locale, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n timeZone: 'UTC'\n }).format(value.toDate('UTC'));\n });\n readonly monthLabel = computed(() =>\n this.monthFormatter.format(this.visibleMonth().toDate('UTC'))\n );\n readonly monthOnlyLabel = computed(() =>\n this.monthOnlyFormatter.format(this.visibleMonth().toDate('UTC'))\n );\n readonly monthOptions = computed(() =>\n Array.from({ length: 12 }, (_, index) => {\n const value = index + 1;\n const month = this.visibleMonth().set({ month: value, day: 1 });\n return {\n value,\n label: this.monthOnlyFormatter.format(month.toDate('UTC')),\n disabled: !this.isMonthAvailable(month),\n ...this.monthOptionState(month)\n };\n })\n );\n readonly yearOptions = computed(() => {\n const minYear = this.minDate()?.year;\n const maxYear = this.maxDate()?.year;\n const visibleYear = this.visibleMonth().year;\n const selectedYear = this.value()?.year;\n const anchor = this.yearAnchor();\n let start = anchor - 100;\n let end = anchor + 100;\n const earliestRequired = Math.min(visibleYear, selectedYear ?? visibleYear);\n const latestRequired = Math.max(visibleYear, selectedYear ?? visibleYear);\n\n if (earliestRequired < start) {\n start = earliestRequired;\n end = start + 200;\n }\n if (latestRequired > end) {\n end = latestRequired;\n start = end - 200;\n }\n start = Math.max(start, minYear ?? start);\n end = Math.min(end, maxYear ?? end);\n return Array.from(\n { length: Math.max(0, end - start + 1) },\n (_, index) => start + index\n );\n });\n readonly yearPageOptions = computed(() => {\n const years = this.yearOptions();\n const start = this.yearPageStart();\n const index = Math.max(0, years.indexOf(start));\n return years.slice(index, index + 20);\n });\n readonly yearPageOptionStates = computed(() =>\n this.yearPageOptions().map((year) => ({\n value: year,\n ...this.yearOptionState(year)\n }))\n );\n readonly yearPageLabel = computed(() => {\n const years = this.yearPageOptions();\n if (!years.length) {\n return '';\n }\n return `${years[0]} - ${years[years.length - 1]}`;\n });\n readonly calendarAnnouncement = computed(() => {\n if (this.pickerView() === 'months') {\n return `Seleccionar mes de ${this.visibleMonth().year}`;\n }\n if (this.pickerView() === 'years') {\n return `Seleccionar año, ${this.yearPageLabel()}`;\n }\n return this.monthLabel();\n });\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.overlayRef?.close('programmatic'));\n }\n\n override writeValue(value: DateValue | null): void {\n this.value.set(value || null);\n if (value) {\n this.visibleMonth.set(value.set({ day: 1 }));\n this.focusedDate.set(value);\n }\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n navigate(months: number): void {\n if (!Number.isInteger(months) || months === 0) {\n return;\n }\n const target = this.visibleMonth().add({ months }).set({ day: 1 });\n this.updateVisibleMonth({ year: target.year, month: target.month });\n }\n\n isPickerView(view: PickerView): boolean {\n return this.pickerView() === view;\n }\n\n openMonthPicker(): void {\n this.pickerView.set('months');\n }\n\n openYearPicker(): void {\n this.yearPageStart.set(\n this.pageStartForYear(this.visibleMonth().year, this.yearOptions())\n );\n this.pickerView.set('years');\n }\n\n selectMonth(month: number): void {\n if (!Number.isInteger(month) || month < 1 || month > 12) {\n return;\n }\n this.updateVisibleMonth({ month });\n this.pickerView.set('calendar');\n }\n\n selectYear(year: number): void {\n if (!this.yearOptions().includes(year)) {\n return;\n }\n this.updateVisibleMonth({ year });\n this.pickerView.set('calendar');\n }\n\n canGoToPreviousYearPage(): boolean {\n const years = this.yearOptions();\n return years.indexOf(this.yearPageOptions()[0]) > 0;\n }\n\n canGoToNextYearPage(): boolean {\n const years = this.yearOptions();\n const current = years.indexOf(this.yearPageOptions()[0]);\n return current >= 0 && current + 20 < years.length;\n }\n\n moveYearPage(direction: -1 | 1): void {\n const years = this.yearOptions();\n const current = Math.max(0, years.indexOf(this.yearPageOptions()[0]));\n const next = Math.min(\n Math.max(0, current + direction * 20),\n Math.max(0, years.length - 20)\n );\n if (years[next] !== undefined) {\n this.yearPageStart.set(years[next]);\n }\n }\n\n select(date: DateValue): void {\n if (!this.isSelectable(date)) {\n return;\n }\n this.value.set(date);\n this.onChange(date);\n this.onTouched();\n this.close();\n }\n\n focusDate(date: DateValue): void {\n if (\n date.month !== this.visibleMonth().month ||\n date.year !== this.visibleMonth().year\n ) {\n this.visibleMonth.set(date.set({ day: 1 }));\n }\n this.focusedDate.set(date);\n queueMicrotask(() => {\n const button = this.calendar?.nativeElement.querySelector<HTMLElement>(\n `[data-date=\"${date.toString()}\"]`\n );\n button?.focus();\n });\n }\n\n private open(): void {\n const trigger = this.trigger?.nativeElement;\n const calendar = this.calendar?.nativeElement;\n if (!trigger || !calendar || this.disabled() || this.readonly()) {\n return;\n }\n const selected = this.value();\n const focus =\n selected && this.isSelectable(selected)\n ? selected\n : this.firstSelectableDate();\n if (!focus) {\n return;\n }\n this.isOpen.set(true);\n this.changeDetector.detectChanges();\n this.focusedDate.set(focus);\n this.visibleMonth.set(focus.set({ day: 1 }));\n this.yearAnchor.set(focus.year);\n this.pickerView.set('calendar');\n this.overlayRef = this.overlay.open({\n origin: trigger,\n matchOriginWidth: true,\n placement: 'bottom-start',\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n restoreFocus: true\n });\n this.overlayRef.attach(calendar);\n this.overlayRef.portal.style.border = '0';\n this.overlayRef.portal.style.borderRadius = '0';\n this.overlayRef.portal.style.background = 'transparent';\n this.overlayRef.portal.style.boxShadow = 'none';\n this.overlayRef.onClose(() => {\n this.overlayRef = null;\n this.isOpen.set(false);\n this.pickerView.set('calendar');\n this.changeDetector.markForCheck();\n });\n this.focusDate(focus);\n }\n\n private close(): void {\n this.overlayRef?.close('programmatic');\n }\n\n private firstSelectableDate(): DateValue | null {\n let candidate = this.minDate() || today('UTC');\n const maxDate = this.maxDate();\n const attempts = maxDate\n ? Number.POSITIVE_INFINITY\n : this.unavailableDates().length + 1;\n\n for (\n let attempt = 0;\n attempt < attempts && (!maxDate || candidate.compare(maxDate) <= 0);\n attempt += 1\n ) {\n if (this.isSelectable(candidate)) {\n return candidate;\n }\n candidate = candidate.add({ days: 1 });\n }\n\n return null;\n }\n\n private isSelectable(date: DateValue): boolean {\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n (!minDate || date.compare(minDate) >= 0) &&\n (!maxDate || date.compare(maxDate) <= 0) &&\n !this.unavailableDates().some(\n (unavailable) => unavailable.compare(date) === 0\n )\n );\n }\n\n private updateVisibleMonth(change: { month?: number; year?: number }): void {\n const focused = this.focusedDate() || this.visibleMonth();\n const visibleMonth = this.visibleMonth().set({ ...change, day: 1 });\n if (!this.isMonthAvailable(visibleMonth)) {\n return;\n }\n const nextFocus = focused.set({\n ...change,\n day: Math.min(focused.day, this.daysInMonth(visibleMonth))\n });\n this.visibleMonth.set(visibleMonth);\n this.focusedDate.set(nextFocus);\n queueMicrotask(() => {\n const button = this.calendar?.nativeElement.querySelector<HTMLElement>(\n `[data-date=\"${nextFocus.toString()}\"]`\n );\n button?.focus();\n });\n }\n\n private isMonthAvailable(month: DateValue): boolean {\n const monthEnd = month.add({ months: 1 }).subtract({ days: 1 });\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n (!minDate || monthEnd.compare(minDate) >= 0) &&\n (!maxDate || month.compare(maxDate) <= 0)\n );\n }\n\n private daysInMonth(month: DateValue): number {\n return month.add({ months: 1 }).subtract({ days: 1 }).day;\n }\n\n private pageStartForYear(year: number, years: readonly number[]): number {\n if (!years.length) {\n return year;\n }\n const index = Math.max(0, years.indexOf(year));\n const start = Math.min(\n Math.max(0, index - 9),\n Math.max(0, years.length - 20)\n );\n return years[start];\n }\n\n private monthOptionState(date: DateValue): PickerOptionState {\n const current = today('UTC');\n const selected = this.value();\n const visible = this.visibleMonth();\n const focused = this.focusedDate();\n return {\n current: this.isSameMonth(date, current),\n selected: !!selected && this.isSameMonth(date, selected),\n visible: this.isSameMonth(date, visible),\n focused: !!focused && this.isSameMonth(date, focused)\n };\n }\n\n private yearOptionState(year: number): PickerOptionState {\n const current = today('UTC');\n const selected = this.value();\n const visible = this.visibleMonth();\n const focused = this.focusedDate();\n return {\n current: current.year === year,\n selected: selected?.year === year,\n visible: visible.year === year,\n focused: focused?.year === year\n };\n }\n\n private isSameMonth(first: DateValue, second: DateValue): boolean {\n return first.year === second.year && first.month === second.month;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n LOCALE_ID,\n ViewChild,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DateFormatter,\n DateValue,\n DayOfWeek,\n today\n} from '@internationalized/date';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsDateRangeValue } from '../../../../types';\nimport { NsOverlayRef, NsOverlayService } from '../../../overlay';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDatePickerCalendarComponent } from './date-picker-calendar.component';\n\n@Component({\n selector: 'ns-date-range-picker',\n standalone: true,\n imports: [NsIconsComponent, NsDatePickerCalendarComponent],\n template: `\n @if (label()) {\n <label class=\"ns-date-range-picker__label\" [attr.for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <button\n #trigger\n class=\"ns-date-range-picker__control\"\n type=\"button\"\n [attr.id]=\"controlId()\"\n [attr.name]=\"name() || null\"\n [attr.aria-label]=\"ariaLabel() || label() || placeholder()\"\n [attr.aria-describedby]=\"describedBy()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggle()\"\n (blur)=\"onTouched()\"\n >\n <ns-icon name=\"calendar\" size=\"18\" aria-hidden=\"true\" />\n <span class=\"ns-date-range-picker__value\">{{ displayValue() }}</span>\n </button>\n\n <section\n #calendar\n class=\"ns-date-range-picker__menu\"\n [attr.id]=\"calendarId\"\n role=\"dialog\"\n [attr.aria-label]=\"calendarLabel\"\n [hidden]=\"!isOpen()\"\n >\n <header class=\"ns-date-range-picker__navigation\">\n <button\n class=\"ns-date-range-picker__navigation-button\"\n type=\"button\"\n aria-label=\"Previous month\"\n (click)=\"navigate(-1)\"\n >\n ‹\n </button>\n <span class=\"ns-date-range-picker__month-title\">{{\n monthLabel()\n }}</span>\n <button\n class=\"ns-date-range-picker__navigation-button\"\n type=\"button\"\n aria-label=\"Next month\"\n (click)=\"navigate(1)\"\n >\n ›\n </button>\n </header>\n <ns-date-picker-calendar\n [month]=\"visibleMonth()\"\n [range]=\"value()\"\n [focused]=\"focusedDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [unavailableDates]=\"unavailableDates()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n (dateSelected)=\"select($event)\"\n (dateFocused)=\"focusDate($event)\"\n ></ns-date-picker-calendar>\n </section>\n `,\n styleUrl: './date-range-picker.component.scss',\n host: {\n '[class.ns-date-range-picker]': 'true',\n '[class.ns-date-range-picker--open]': 'isOpen()',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NsDateRangePickerComponent,\n multi: true\n }\n ]\n})\nexport class NsDateRangePickerComponent extends NsValueAccessor<NsDateRangeValue<DateValue> | null> {\n readonly minDate = input<DateValue | null>(null);\n readonly maxDate = input<DateValue | null>(null);\n readonly unavailableDates = input<readonly DateValue[]>([]);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n\n @ViewChild('calendar') private calendar?: ElementRef<HTMLElement>;\n @ViewChild('trigger') private trigger?: ElementRef<HTMLElement>;\n\n readonly calendarId = `${this.id}-calendar`;\n readonly calendarLabel = 'Date range picker';\n readonly isOpen = signal(false);\n readonly focusedDate = signal<DateValue | null>(null);\n readonly visibleMonth = signal<DateValue>(today('UTC'));\n\n private readonly overlay = inject(NsOverlayService);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly locale = inject(LOCALE_ID);\n private readonly monthFormatter = new DateFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private readonly dateFormatter = new DateFormatter(this.locale, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private overlayRef: NsOverlayRef | null = null;\n\n readonly displayValue = computed(() => {\n const range = this.value();\n if (!range?.start) {\n return this.placeholder();\n }\n const start = this.formatDate(range.start);\n return range.end ? `${start} – ${this.formatDate(range.end)}` : start;\n });\n readonly monthLabel = computed(() =>\n this.monthFormatter.format(this.visibleMonth().toDate('UTC'))\n );\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.overlayRef?.close('programmatic'));\n }\n\n override writeValue(value: NsDateRangeValue<DateValue> | null): void {\n const normalized = this.normalizeRange(value);\n this.value.set(normalized);\n const focus = normalized?.start || normalized?.end;\n if (focus) {\n this.visibleMonth.set(focus.set({ day: 1 }));\n this.focusedDate.set(focus);\n }\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n navigate(months: number): void {\n this.visibleMonth.update((month) => month.add({ months }).set({ day: 1 }));\n this.focusDate(this.visibleMonth());\n }\n\n select(date: DateValue): void {\n if (!this.isSelectable(date)) {\n return;\n }\n const range = this.value();\n if (!range?.start || range.end || date.compare(range.start) < 0) {\n this.value.set({ start: date, end: null });\n this.focusDate(date);\n return;\n }\n const next = { start: range.start, end: date };\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n this.close();\n }\n\n focusDate(date: DateValue): void {\n if (\n date.month !== this.visibleMonth().month ||\n date.year !== this.visibleMonth().year\n ) {\n this.visibleMonth.set(date.set({ day: 1 }));\n }\n this.focusedDate.set(date);\n queueMicrotask(() => {\n const button = this.calendar?.nativeElement.querySelector<HTMLElement>(\n `[data-date=\"${date.toString()}\"]`\n );\n button?.focus();\n });\n }\n\n private open(): void {\n const trigger = this.trigger?.nativeElement;\n const calendar = this.calendar?.nativeElement;\n if (!trigger || !calendar || this.disabled() || this.readonly()) {\n return;\n }\n const selected = this.value()?.start;\n const focus =\n selected && this.isSelectable(selected)\n ? selected\n : this.firstSelectableDate();\n if (!focus) {\n return;\n }\n this.isOpen.set(true);\n this.changeDetector.detectChanges();\n this.focusedDate.set(focus);\n this.visibleMonth.set(focus.set({ day: 1 }));\n this.overlayRef = this.overlay.open({\n origin: trigger,\n placement: 'bottom-start',\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n restoreFocus: true\n });\n this.overlayRef.attach(calendar);\n this.overlayRef.onClose(() => {\n this.overlayRef = null;\n this.isOpen.set(false);\n this.changeDetector.markForCheck();\n });\n this.focusDate(focus);\n }\n\n private close(): void {\n this.overlayRef?.close('programmatic');\n }\n\n private normalizeRange(\n value: NsDateRangeValue<DateValue> | null\n ): NsDateRangeValue<DateValue> | null {\n if (!value) {\n return null;\n }\n if (value.start && value.end && value.start.compare(value.end) > 0) {\n return { start: value.end, end: value.start };\n }\n return { start: value.start || null, end: value.end || null };\n }\n\n private firstSelectableDate(): DateValue | null {\n let candidate = this.minDate() || today('UTC');\n const maxDate = this.maxDate();\n const attempts = maxDate\n ? Number.POSITIVE_INFINITY\n : this.unavailableDates().length + 1;\n\n for (\n let attempt = 0;\n attempt < attempts && (!maxDate || candidate.compare(maxDate) <= 0);\n attempt += 1\n ) {\n if (this.isSelectable(candidate)) {\n return candidate;\n }\n candidate = candidate.add({ days: 1 });\n }\n\n return null;\n }\n\n private isSelectable(date: DateValue): boolean {\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n (!minDate || date.compare(minDate) >= 0) &&\n (!maxDate || date.compare(maxDate) <= 0) &&\n !this.unavailableDates().some(\n (unavailable) => unavailable.compare(date) === 0\n )\n );\n }\n\n private formatDate(date: DateValue): string {\n return this.dateFormatter.format(date.toDate('UTC'));\n }\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\nimport { NsKey } from '../../../../types';\n\n@Directive({\n selector: 'ns-dropdown-item',\n standalone: true\n})\nexport class NsDropdownItemDirective {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input\n} from '@angular/core';\n\n@Component({\n selector: 'ns-skeleton',\n standalone: true,\n template: '',\n styleUrl: './skeleton.component.scss',\n host: {\n 'aria-hidden': 'true',\n '[class.ns-skeleton]': 'true',\n '[class.ns-skeleton--animated]': 'animated()',\n '[style.inline-size]': 'width()',\n '[style.block-size]': 'height()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly animated = input(true, { transform: booleanAttribute });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n ViewChild,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsKey, NsPlacement, NsSelectionMode } from '../../../../types';\nimport { getNsNextNavigableIndex, NsTypeaheadController } from '../../../a11y';\nimport { NsOverlayRef, NsOverlayService } from '../../../overlay';\nimport { NsSkeletonComponent } from '../../../skeleton';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDropdownItemDirective } from './dropdown-item.directive';\nimport { NsDropdownItem, NsDropdownValue } from './dropdown.types';\n\ninterface NsDropdownWorkingItem {\n readonly key: NsKey;\n readonly label: string;\n readonly disabled: boolean;\n}\n\nfunction normalizeNsDropdownLabel(value: string): string {\n return value\n .toLocaleLowerCase()\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '');\n}\n\n@Component({\n selector: 'ns-dropdown',\n standalone: true,\n imports: [NsIconsComponent, NsSkeletonComponent],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n host: {\n '[class.ns-dropdown]': 'true',\n '[class.ns-dropdown--open]': 'open()',\n '[class.ns-dropdown--disabled]': 'disabled()',\n '[class.ns-dropdown--invalid]': 'invalid()',\n '[attr.data-state]': \"open() ? 'open' : 'closed'\"\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NsDropdownComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDropdownComponent extends NsValueAccessor<NsDropdownValue> {\n readonly collection = input<readonly NsDropdownItem[]>([]);\n readonly contentItems = contentChildren(NsDropdownItemDirective);\n readonly selectionMode = input<NsSelectionMode>('single');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly searchable = input(true, { transform: booleanAttribute });\n readonly searchPlaceholder = input('Search');\n readonly emptyText = input('No results');\n readonly placement = input<NsPlacement>('bottom-start');\n readonly open = model(false);\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n @ViewChild('trigger') private trigger?: ElementRef<HTMLButtonElement>;\n @ViewChild('menu') private menu?: ElementRef<HTMLElement>;\n @ViewChild('searchInput') private searchInput?: ElementRef<HTMLInputElement>;\n @ViewChild('listbox') private listbox?: ElementRef<HTMLElement>;\n\n private readonly overlay = inject(NsOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly typeahead = new NsTypeaheadController<{\n label: string;\n disabled: boolean;\n }>();\n private overlayRef?: NsOverlayRef;\n private destroyed = false;\n\n readonly query = signal('');\n readonly activeIndex = signal(-1);\n readonly listboxId = `${this.id}-listbox`;\n readonly searchId = `${this.id}-search`;\n readonly skeletonRows = [0, 1, 2, 3] as const;\n\n readonly items = computed<NsDropdownWorkingItem[]>(() => {\n const projected = this.contentItems();\n if (projected.length) {\n return projected.map((item) => ({\n key: item.key(),\n label: item.label(),\n disabled: item.disabled()\n }));\n }\n return this.collection().map((item) => ({\n key: item.key,\n label: item.label,\n disabled: item.disabled ?? false\n }));\n });\n\n readonly visibleItems = computed(() => {\n const normalized = normalizeNsDropdownLabel(this.query());\n const items = this.items();\n if (!normalized) {\n return items;\n }\n return items.filter((item) =>\n normalizeNsDropdownLabel(item.label).includes(normalized)\n );\n });\n\n readonly selectedKeys = computed<ReadonlySet<NsKey>>(() => {\n const value = this.value();\n if (value === null || value === undefined) {\n return new Set();\n }\n return new Set(Array.isArray(value) ? value : [value]);\n });\n\n readonly selectedLabel = computed(() => {\n const keys = this.selectedKeys();\n if (!keys.size) {\n return '';\n }\n return this.items()\n .filter((item) => keys.has(item.key))\n .map((item) => item.label)\n .join(', ');\n });\n\n readonly activeId = computed(() => {\n const item = this.visibleItems()[this.activeIndex()];\n return item ? `${this.listboxId}-${String(item.key)}` : undefined;\n });\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.overlayRef?.close('programmatic');\n });\n }\n\n toggle(): void {\n this.open() ? this.close() : this.show();\n }\n\n select(key: NsKey): void {\n const item = this.items().find((candidate) => candidate.key === key);\n if (!item || item.disabled || this.selectionMode() === 'none') {\n return;\n }\n if (this.selectionMode() === 'multiple') {\n const current = new Set(this.selectedKeys());\n current.has(key) ? current.delete(key) : current.add(key);\n this.setValue([...current]);\n this.onTouched();\n } else {\n this.setValue(key);\n this.onTouched();\n this.close();\n }\n }\n\n onNativeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const items = this.items();\n if (this.selectionMode() === 'multiple') {\n const keys = Array.from(select.selectedOptions)\n .map(\n (option) =>\n items.find((item) => String(item.key) === option.value)?.key\n )\n .filter((key): key is NsKey => key !== undefined);\n this.setValue(keys);\n this.onTouched();\n return;\n }\n const item = items.find(\n (candidate) => String(candidate.key) === select.value\n );\n if (item) {\n this.select(item.key);\n }\n }\n\n onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.query.set(value);\n this.activeIndex.set(this.visibleItems().length ? 0 : -1);\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled()) {\n return;\n }\n if (event.key === 'Escape' && this.open()) {\n event.preventDefault();\n this.close();\n return;\n }\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n if (!this.open()) {\n this.show();\n }\n }\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n const items = this.visibleItems();\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n const active = items[this.activeIndex()];\n if (active) {\n this.select(active.key);\n }\n return;\n }\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const next = getNsNextNavigableIndex(\n items.map((item) => ({ key: item.key, disabled: item.disabled })),\n this.activeIndex(),\n event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'\n );\n if (next >= 0) {\n event.preventDefault();\n this.activeIndex.set(next);\n }\n }\n }\n\n onListboxKeydown(event: KeyboardEvent): void {\n if (this.searchable()) {\n return;\n }\n const items = this.visibleItems();\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n const active = items[this.activeIndex()];\n if (active) {\n this.select(active.key);\n }\n return;\n }\n let next = -1;\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n next = getNsNextNavigableIndex(\n items.map((item) => ({ key: item.key, disabled: item.disabled })),\n this.activeIndex(),\n event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'\n );\n } else {\n next = this.typeahead.find(\n items.map((item) => ({ label: item.label, disabled: item.disabled })),\n event.key,\n this.activeIndex()\n );\n }\n if (next >= 0) {\n event.preventDefault();\n this.activeIndex.set(next);\n }\n }\n\n private show(): void {\n if (this.disabled() || this.open() || !this.menu || !this.trigger) {\n return;\n }\n this.open.set(true);\n this.query.set('');\n this.activeIndex.set(-1);\n this.overlayRef = this.overlay.open({\n origin: this.trigger.nativeElement,\n placement: this.placement(),\n matchOriginWidth: true,\n restoreFocus: true\n });\n this.overlayRef.attach(this.menu.nativeElement);\n this.overlayRef.onClose(() => {\n const wasDestroyed = this.destroyed;\n this.overlayRef = undefined;\n if (!wasDestroyed) {\n this.open.set(false);\n this.query.set('');\n this.closed.emit();\n }\n });\n this.opened.emit();\n queueMicrotask(() => {\n if (this.searchable()) {\n this.searchInput?.nativeElement.focus();\n } else {\n this.listbox?.nativeElement.focus();\n }\n });\n }\n\n private close(): void {\n this.overlayRef?.close();\n }\n}\n","@if (label()) {\n <label class=\"ns-dropdown__label\" [attr.for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n}\n<button\n #trigger\n type=\"button\"\n class=\"ns-dropdown__trigger\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n aria-haspopup=\"listbox\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"onTouched()\"\n>\n <span\n class=\"ns-dropdown__trigger-value\"\n [class.ns-dropdown__trigger-value--placeholder]=\"!selectedLabel()\"\n >{{ selectedLabel() || placeholder() }}</span\n >\n <ns-icon\n class=\"ns-dropdown__trigger-icon\"\n name=\"chevron-down\"\n size=\"18\"\n aria-hidden=\"true\"\n />\n</button>\n<select\n class=\"ns-dropdown__native-control\"\n [attr.name]=\"name()\"\n [multiple]=\"selectionMode() === 'multiple'\"\n [disabled]=\"disabled()\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"onTouched()\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n @for (item of items(); track item.key) {\n <option\n [value]=\"item.key\"\n [selected]=\"selectedKeys().has(item.key)\"\n [disabled]=\"item.disabled\"\n >\n {{ item.label }}\n </option>\n }\n</select>\n<div #menu class=\"ns-dropdown__menu\" role=\"presentation\">\n @if (searchable()) {\n <div class=\"ns-dropdown__search\">\n <input\n #searchInput\n class=\"ns-dropdown__search-input\"\n type=\"text\"\n [id]=\"searchId\"\n [attr.placeholder]=\"searchPlaceholder()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeId()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n <ns-icon\n class=\"ns-dropdown__search-icon\"\n name=\"search\"\n size=\"16\"\n aria-hidden=\"true\"\n />\n </div>\n }\n <div\n #listbox\n class=\"ns-dropdown__listbox\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-multiselectable]=\"selectionMode() === 'multiple'\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.tabindex]=\"searchable() ? null : 0\"\n (keydown)=\"onListboxKeydown($event)\"\n >\n @if (loading()) {\n @for (row of skeletonRows; track row) {\n <div class=\"ns-dropdown__skeleton-row\">\n <ns-skeleton />\n </div>\n }\n } @else if (visibleItems().length === 0) {\n <div class=\"ns-dropdown__empty\" role=\"status\">{{ emptyText() }}</div>\n } @else {\n @for (item of visibleItems(); track item.key; let index = $index) {\n <div\n class=\"ns-dropdown__option\"\n role=\"option\"\n [id]=\"listboxId + '-' + item.key\"\n [class.ns-dropdown__option--selected]=\"selectedKeys().has(item.key)\"\n [class.ns-dropdown__option--active]=\"index === activeIndex()\"\n [class.ns-dropdown__option--disabled]=\"item.disabled\"\n [attr.aria-selected]=\"selectedKeys().has(item.key)\"\n [attr.aria-disabled]=\"item.disabled\"\n (click)=\"select(item.key)\"\n >\n {{ item.label }}\n </div>\n }\n }\n </div>\n</div>\n@if (description()) {\n <p class=\"ns-dropdown__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n}\n@if (invalid() && errorMessage()) {\n <p class=\"ns-dropdown__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-input',\n standalone: true,\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputComponent),\n multi: true\n }\n ],\n imports: [FormsModule, NsIconsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.ns-input]': 'true',\n '[class.ns-input--invalid]': 'invalid()',\n '[class.ns-input--disabled]': 'disabled()',\n '[class.ns-input--sm]': \"size() === 'sm'\",\n '[class.ns-input--lg]': \"size() === 'lg'\"\n }\n})\nexport class NsInputComponent extends NsValueAccessor<string> {\n /** Leading icon name (`@ng-solid/icons`). Omit for the default, icon-less field. */\n public readonly icon = input<string>('');\n}\n","@if (label()) {\n <label class=\"ns-input__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n}\n@if (icon()) {\n <div class=\"ns-input__field\">\n <span class=\"ns-input__leading\" aria-hidden=\"true\">\n <ns-icon [name]=\"icon()\" />\n </span>\n <input\n class=\"ns-input__control\"\n [id]=\"controlId()\"\n [type]=\"type()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n />\n </div>\n} @else {\n <input\n class=\"ns-input__control\"\n [id]=\"controlId()\"\n [type]=\"type()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n />\n}\n@if (description()) {\n <p class=\"ns-input__description\" [id]=\"descriptionId\">{{ description() }}</p>\n}\n@if (invalid() && errorMessage()) {\n <p class=\"ns-input__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-input-code',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-input-code__label\" [for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <input\n class=\"ns-input-code__control\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n type=\"text\"\n inputmode=\"text\"\n autocomplete=\"one-time-code\"\n [attr.maxlength]=\"length()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n />\n @if (description()) {\n <p class=\"ns-input-code__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-input-code__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./input-code.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputCodeComponent),\n multi: true\n }\n ],\n host: { '[class.ns-input-code]': 'true' }\n})\nexport class NsInputCodeComponent extends NsValueAccessor<string> {\n readonly length = input(6);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation\n} from '@angular/core';\n\n/** Visual-only composition primitive. Projected controls own their form state. */\n@Component({\n selector: 'ns-input-group',\n standalone: true,\n template: '<div class=\"ns-input-group__control\"><ng-content /></div>',\n styleUrls: ['./input-group.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class.ns-input-group]': 'true' }\n})\nexport class NsInputGroupComponent {}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ns-input-group-addon',\n template: '<ng-content></ng-content>',\n styleUrls: ['./input-group-addon.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.ns-input-group-addon]': 'true'\n }\n})\nexport class NsInputGroupAddonComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n LOCALE_ID,\n computed,\n forwardRef,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-input-number',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-input-number__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n }\n <div class=\"ns-input-number__group\">\n <div class=\"ns-input-number__field\">\n @if (currencyPrefix(); as prefix) {\n <span class=\"ns-input-number__prefix\" aria-hidden=\"true\">{{\n prefix\n }}</span>\n }\n <input\n class=\"ns-input-number__control\"\n type=\"text\"\n inputmode=\"decimal\"\n role=\"spinbutton\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [value]=\"displayValue()\"\n [placeholder]=\"placeholder()\"\n (input)=\"onInputEvent($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"formatValue(); onTouched()\"\n />\n </div>\n <div class=\"ns-input-number__steppers\" aria-hidden=\"true\">\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"stepBy(1)\"\n [disabled]=\"disabled() || readonly()\"\n >\n +</button\n ><button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"stepBy(-1)\"\n [disabled]=\"disabled() || readonly()\"\n >\n −\n </button>\n </div>\n </div>\n @if (description()) {\n <p class=\"ns-input-number__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-input-number__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./input-number.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputNumberComponent),\n multi: true\n }\n ],\n host: { '[class.ns-input-number]': 'true' }\n})\nexport class NsInputNumberComponent extends NsValueAccessor<number | null> {\n private readonly locale = inject(LOCALE_ID);\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly step = input(1);\n readonly currency = input<string | undefined>(undefined);\n readonly format = input<Intl.NumberFormatOptions>({});\n readonly displayValue = signal('');\n readonly currencyPrefix = computed(() => {\n if (!this.currency()) {\n return undefined;\n }\n return this.formatter\n .formatToParts(0)\n .find((part) => part.type === 'currency')?.value;\n });\n\n override writeValue(value: number | null): void {\n super.writeValue(value);\n this.displayValue.set(\n value === null || value === undefined\n ? ''\n : this.formatDisplayValue(value)\n );\n }\n onInput(text: string): void {\n this.displayValue.set(text);\n const value = this.parse(text);\n this.setValue(value === null ? null : this.constrain(value));\n }\n onInputEvent(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n this.onInput(target.value);\n }\n formatValue(): void {\n const value = this.value();\n this.displayValue.set(\n value === null || value === undefined\n ? ''\n : this.formatDisplayValue(value)\n );\n }\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.stepBy(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.stepBy(-1);\n } else if (event.key === 'Home' && this.min() !== undefined) {\n event.preventDefault();\n this.setValue(this.min() ?? null);\n this.formatValue();\n } else if (event.key === 'End' && this.max() !== undefined) {\n event.preventDefault();\n this.setValue(this.max() ?? null);\n this.formatValue();\n }\n }\n stepBy(direction: 1 | -1): void {\n if (this.disabled() || this.readonly()) return;\n const current =\n this.value() ?? (direction > 0 ? (this.min() ?? 0) : (this.max() ?? 0));\n this.setValue(this.constrain(current + direction * this.step()));\n this.formatValue();\n }\n private get formatter(): Intl.NumberFormat {\n return new Intl.NumberFormat(this.locale, {\n ...this.format(),\n ...(this.currency()\n ? { style: 'currency', currency: this.currency() }\n : {})\n });\n }\n private formatDisplayValue(value: number): string {\n if (!this.currency()) {\n return this.formatter.format(value);\n }\n return this.formatter\n .formatToParts(value)\n .filter((part) => part.type !== 'currency')\n .map((part) => part.value)\n .join('')\n .trim();\n }\n private parse(text: string): number | null {\n const parts = this.formatter.formatToParts(12345.6);\n const group = parts.find((part) => part.type === 'group')?.value ?? ',';\n const decimal = parts.find((part) => part.type === 'decimal')?.value ?? '.';\n const normalized = text\n .replaceAll(group, '')\n .replace(decimal, '.')\n .replace(/[^0-9+-.]/g, '');\n const value = Number(normalized);\n return normalized === '' || !Number.isFinite(value) ? null : value;\n }\n private constrain(value: number): number {\n const min = this.min();\n const max = this.max();\n return Math.min(max ?? Infinity, Math.max(min ?? -Infinity, value));\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-input-search',\n standalone: true,\n imports: [FormsModule, NsIconsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-input-search__label\" [for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <div class=\"ns-input-search__group\">\n <span class=\"ns-input-search__icon\" aria-hidden=\"true\">\n <ns-icon name=\"search\" />\n </span>\n <input\n class=\"ns-input-search__control\"\n type=\"search\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel() || label() || 'Search'\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"invalid() || null\"\n (blur)=\"onTouched()\"\n />\n @if (value() && !disabled() && !readonly()) {\n <button type=\"button\" aria-label=\"Clear search\" (click)=\"setValue('')\">\n ×\n </button>\n }\n </div>\n @if (description()) {\n <p class=\"ns-input-search__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-input-search__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./input-search.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputSearchComponent),\n multi: true\n }\n ],\n host: { '[class.ns-input-search]': 'true' }\n})\nexport class NsInputSearchComponent extends NsValueAccessor<string> {}\n","import { signal } from '@angular/core';\n\nexport class NsRadioGroupContext {\n readonly value = signal<string | null>(null);\n readonly disabled = signal(false);\n select: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { NsAriaIdService } from '../../../a11y';\nimport { NsRadioGroupContext } from '../radio/radio-context';\n\n/**\n * Selectable card for rich radio options (icon, label and description)\n * inside an `ns-radio-group`. It reuses `NsRadioGroupContext` and a native\n * `<input type=\"radio\">`, the same mechanism `ns-radio` relies on, so\n * `role=\"radio\"`, `aria-checked` and keyboard behavior (native radio-group\n * navigation when a shared `name` is provided) come from the browser instead\n * of a hand-rolled ARIA widget.\n */\n@Component({\n selector: 'ns-option-card',\n standalone: true,\n template: `\n <input\n class=\"ns-option-card__input\"\n type=\"radio\"\n [id]=\"id\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"group?.value() === value()\"\n [disabled]=\"disabled() || group?.disabled()\"\n (change)=\"select()\"\n (blur)=\"group?.onTouched()\"\n />\n <label class=\"ns-option-card__card\" [for]=\"id\">\n <span class=\"ns-option-card__indicator\" aria-hidden=\"true\"></span>\n <span class=\"ns-option-card__icon\"\n ><ng-content select=\"[option-card-icon]\"\n /></span>\n <span class=\"ns-option-card__body\">\n <span class=\"ns-option-card__label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"ns-option-card__description\">{{ description() }}</span>\n }\n </span>\n </label>\n `,\n styleUrl: './option-card.component.scss',\n host: {\n '[class.ns-option-card]': 'true',\n '[class.ns-option-card--selected]': 'group?.value() === value()',\n '[class.ns-option-card--disabled]': 'disabled() || group?.disabled()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsOptionCardComponent {\n private readonly ids = inject(NsAriaIdService);\n readonly group = inject(NsRadioGroupContext, {\n optional: true,\n skipSelf: true\n });\n readonly id = this.ids.create('ns-option-card');\n readonly value = input.required<string>();\n readonly label = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n\n select(): void {\n if (!this.disabled() && !this.group?.disabled()) {\n this.group?.select(this.value());\n }\n }\n}\n","import { Component, forwardRef, OnInit, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-password',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsPasswordComponent),\n multi: true\n }\n ],\n imports: [RouterLink, FormsModule, NsIconsComponent],\n host: {\n '[class.ns-password]': 'true'\n }\n})\nexport class NsPasswordComponent extends NsValueAccessor implements OnInit {\n readonly forgotLink = input<string>(undefined);\n readonly forgotLinkLabel = input<string>('¿Olvidó su contraseña?');\n\n public show = false;\n\n constructor() {\n super();\n }\n\n ngOnInit() {}\n\n toggle() {\n this.show = !this.show;\n }\n}\n","@if (label()) {\n <div class=\"ns-password__label-row\">\n <label class=\"ns-password__label\" [for]=\"controlId()\">{{ label() }}</label>\n @if (forgotLink()) {\n <a class=\"ns-password__forgot-link\" [routerLink]=\"forgotLink()\">{{\n forgotLinkLabel()\n }}</a>\n }\n </div>\n}\n\n<div class=\"ns-password__group\">\n <input\n class=\"ns-password__control\"\n [id]=\"controlId()\"\n [type]=\"show ? 'text' : 'password'\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [placeholder]=\"placeholder()\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n />\n\n <button\n type=\"button\"\n class=\"ns-password__append\"\n [attr.aria-label]=\"show ? 'Hide password' : 'Show password'\"\n [attr.aria-pressed]=\"show\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n >\n <ns-icon class=\"ns-password__toggle\" [name]=\"show ? 'eye-off' : 'eye'\" />\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input\n} from '@angular/core';\nimport { NsAriaIdService } from '../../../a11y';\nimport { NsRadioGroupContext } from './radio-context';\n\n@Component({\n selector: 'ns-radio',\n standalone: true,\n template: `<label class=\"ns-radio__label\" [for]=\"id\"\n ><input\n class=\"ns-radio__input\"\n [id]=\"id\"\n type=\"radio\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"group?.value() === value()\"\n [disabled]=\"disabled() || group?.disabled()\"\n (change)=\"select()\"\n (blur)=\"group?.onTouched()\"\n /><span>{{ label() }}</span></label\n >`,\n styleUrls: ['./radio.component.scss'],\n host: { '[class.ns-radio]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsRadioComponent {\n private readonly ids = inject(NsAriaIdService);\n readonly group = inject(NsRadioGroupContext, {\n optional: true,\n skipSelf: true\n });\n readonly id = this.ids.create('ns-radio');\n readonly value = input.required<string>();\n readonly label = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly disabled = input(false);\n select(): void {\n if (!this.disabled() && !this.group?.disabled()) {\n this.group?.select(this.value());\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n inject\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsRadioGroupContext } from './radio-context';\n\n@Component({\n selector: 'ns-radio-group',\n standalone: true,\n template: `@if (label()) {\n <span class=\"ns-radio-group__label\" [id]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </span>\n }\n <div\n class=\"ns-radio-group__control\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"label() ? controlId() : null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"invalid() || null\"\n >\n <ng-content />\n </div>\n @if (description()) {\n <p class=\"ns-radio-group__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-radio-group__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsRadioGroupComponent),\n multi: true\n },\n NsRadioGroupContext\n ],\n host: { '[class.ns-radio-group]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsRadioGroupComponent extends NsValueAccessor<string | null> {\n private readonly context = inject(NsRadioGroupContext);\n constructor() {\n super();\n this.context.select = (value) => this.setValue(value);\n }\n override writeValue(value: string | null): void {\n super.writeValue(value);\n this.context.value.set(value);\n }\n override setValue(value: string | null): void {\n super.setValue(value);\n this.context.value.set(value);\n }\n override setDisabledState(disabled: boolean): void {\n super.setDisabledState(disabled);\n this.context.disabled.set(disabled);\n }\n override registerOnChange(fn: (value: string | null) => void): void {\n super.registerOnChange(fn);\n }\n override registerOnTouched(fn: () => void): void {\n super.registerOnTouched(fn);\n this.context.onTouched = fn;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\nexport type NsSliderValue = number | readonly [number, number];\n@Component({\n selector: 'ns-slider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (range()) {\n <fieldset\n class=\"ns-slider__range\"\n [attr.aria-describedby]=\"describedBy()\"\n >\n @if (label()) {\n <legend class=\"ns-slider__label\" [id]=\"rangeLabelId\">\n {{ label() }}\n </legend>\n }\n <input\n [id]=\"rangeStartId\"\n type=\"range\"\n [attr.aria-labelledby]=\"rangeStartLabelledBy()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"start()\"\n (input)=\"setRangeStart($event)\"\n (blur)=\"onTouched()\"\n /><input\n [id]=\"rangeEndId\"\n type=\"range\"\n [attr.aria-labelledby]=\"rangeEndLabelledBy()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"end()\"\n (input)=\"setRangeEnd($event)\"\n (blur)=\"onTouched()\"\n />\n <span\n class=\"ns-slider__range-description\"\n [id]=\"rangeStartDescriptionId\"\n >Start</span\n >\n <span class=\"ns-slider__range-description\" [id]=\"rangeEndDescriptionId\"\n >End</span\n >\n </fieldset>\n } @else {\n @if (label()) {\n <label class=\"ns-slider__label\" [for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <input\n class=\"ns-slider__control\"\n [id]=\"controlId()\"\n type=\"range\"\n [name]=\"name()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"single()\"\n [attr.aria-describedby]=\"describedBy()\"\n (input)=\"setSingle($event)\"\n (blur)=\"onTouched()\"\n />\n }\n @if (description()) {\n <p class=\"ns-slider__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }`,\n styleUrls: ['./slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsSliderComponent),\n multi: true\n }\n ],\n host: { '[class.ns-slider]': 'true' }\n})\nexport class NsSliderComponent extends NsValueAccessor<NsSliderValue> {\n readonly min = input(0);\n readonly max = input(100);\n readonly step = input(1);\n readonly range = input(false);\n readonly rangeStartId = `${this.id}-start`;\n readonly rangeEndId = `${this.id}-end`;\n readonly rangeLabelId = `${this.id}-range-label`;\n readonly rangeStartDescriptionId = `${this.id}-range-start`;\n readonly rangeEndDescriptionId = `${this.id}-range-end`;\n readonly rangeStartLabelledBy = () =>\n this.label()\n ? `${this.rangeLabelId} ${this.rangeStartDescriptionId}`\n : this.rangeStartDescriptionId;\n readonly rangeEndLabelledBy = () =>\n this.label()\n ? `${this.rangeLabelId} ${this.rangeEndDescriptionId}`\n : this.rangeEndDescriptionId;\n single(): number {\n const value = this.value();\n return typeof value === 'number' ? value : this.min();\n }\n start(): number {\n const value = this.value();\n return Array.isArray(value) ? value[0] : this.min();\n }\n end(): number {\n const value = this.value();\n return Array.isArray(value) ? value[1] : this.max();\n }\n setSingle(event: Event): void {\n this.setValue(Number((event.target as HTMLInputElement).value));\n }\n setRangeStart(event: Event): void {\n this.setValue([\n Math.min(Number((event.target as HTMLInputElement).value), this.end()),\n this.end()\n ]);\n }\n setRangeEnd(event: Event): void {\n this.setValue([\n this.start(),\n Math.max(Number((event.target as HTMLInputElement).value), this.start())\n ]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\nexport type NsSwitchLayout = 'inline' | 'row';\nexport type NsSwitchSize = 'sm' | 'md';\n\n@Component({\n selector: 'ns-switch',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<input\n type=\"checkbox\"\n class=\"ns-switch__input\"\n role=\"switch\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n /><label class=\"ns-switch__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n @if (description()) {\n <p class=\"ns-switch__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-switch__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./switch.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsSwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class.ns-switch]': 'true',\n '[class.ns-switch--inline]': \"layout() === 'inline'\",\n '[class.ns-switch--row]': \"layout() === 'row'\",\n '[class.ns-switch--sm]': \"size() === 'sm'\",\n '[class.ns-switch--md]': \"size() === 'md'\"\n }\n})\nexport class NsSwitchComponent extends NsValueAccessor<boolean> {\n readonly layout = input<NsSwitchLayout>('inline');\n readonly size = input<NsSwitchSize>('md');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-textarea',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-textarea__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n }\n <textarea\n class=\"ns-textarea__control\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n ></textarea>\n @if (description()) {\n <p class=\"ns-textarea__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-textarea__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./text-area.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsTextAreaComponent),\n multi: true\n }\n ],\n host: {\n '[class.ns-textarea]': 'true',\n '[class.ns-textarea--invalid]': 'invalid()'\n }\n})\nexport class NsTextAreaComponent extends NsValueAccessor<string> {\n readonly rows = input(3);\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Renderer2,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../models/value-accessor';\n\n@Component({\n selector: 'ns-content-editable',\n template: '',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsContentEditableComponent),\n multi: true\n }\n ],\n styleUrl: './content-editable.component.scss',\n host: {\n '[class.ns-content-editable]': 'true',\n '[class.ns-content-editable--disabled]': 'disabled()'\n }\n})\nexport class NsContentEditableComponent extends NsValueAccessor<string> {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly maxLength = input<number>(undefined, { alias: 'maxlength' });\n\n /**\n * Character count of the rendered content, measured the same way the\n * `maxlength` guard below measures it (`innerText.length`) so a consumer's\n * counter never drifts from what actually blocks typing.\n */\n readonly length = signal(0);\n\n @HostBinding('attr.contenteditable')\n enabled: boolean = true;\n\n override writeValue(value: string): void {\n if (typeof value !== 'undefined') {\n this.renderer.setProperty(\n this.elementRef.nativeElement,\n 'innerHTML',\n value || ''\n );\n this.updateLength();\n }\n }\n\n @HostListener('input')\n onInput(): void {\n this.onChange(this.elementRef.nativeElement.innerHTML);\n this.updateLength();\n }\n\n private updateLength(): void {\n this.length.set(this.elementRef.nativeElement.innerText?.length ?? 0);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched();\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n const maxLength = this.maxLength();\n if (maxLength && this.length() >= maxLength && event.key !== 'Backspace') {\n event.preventDefault();\n }\n }\n\n override setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n this.enabled = !isDisabled;\n }\n}\n","// COMPONENTS\nexport * from './components/checkbox';\nexport * from './components/date-picker';\nexport * from './components/dropdown';\nexport * from './components/input';\nexport * from './components/input-code';\nexport * from './components/input-group';\nexport * from './components/input-number';\nexport * from './components/input-search';\nexport * from './components/option-card';\nexport * from './components/password';\nexport * from './components/radio';\nexport * from './components/slider';\nexport * from './components/switch';\nexport * from './components/text-area';\n\n// DIRECTIVES\nexport * from './directives';\n\n// FOUNDATION\nexport * from './foundation';\n\n// MODELS\nexport * from './models';\n","import { Component, OnInit, input, output } from '@angular/core';\nimport { NsComment } from './interfaces/comment';\nimport { NgClass } from '@angular/common';\nimport { NsAvatarComponent } from '../avatar';\nimport { NsContentEditableComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\nimport { NsHumanizePipe, NsSafeHtmlPipe } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-comment',\n templateUrl: './comment.component.html',\n styleUrls: ['./comment.component.scss'],\n imports: [\n NgClass,\n NsAvatarComponent,\n NsContentEditableComponent,\n FormsModule,\n NsSafeHtmlPipe,\n NsHumanizePipe\n ]\n})\nexport class NsCommentComponent implements OnInit {\n readonly title = input<string>(undefined);\n readonly description = input<string>(undefined);\n readonly placeholder = input<string>(undefined);\n readonly messages = input<NsComment[]>([]);\n readonly cover = input<{\n url: string;\n alt?: string;\n }>(undefined);\n readonly submitText = input<string>(undefined);\n readonly logged = input<boolean>(undefined);\n readonly maxLength = input<number>(128);\n readonly disabled = input<boolean>(undefined);\n\n readonly commit = output<string>();\n\n public invalid: boolean = false;\n public content: string = '';\n\n private clearEmptyValues: RegExp = new RegExp(/(<div><br><\\/div>)*/g);\n\n constructor() {}\n\n ngOnInit(): void {}\n\n publish() {\n if (this.content) {\n this.commit.emit(this.content.replace(this.clearEmptyValues, ''));\n this.content = '';\n } else {\n this.invalid = true;\n }\n }\n\n get counter() {\n const characters = this.maxLength() - this.content.length;\n return characters > 0 ? characters : 0;\n }\n}\n","@if (logged()) {\n <div\n class=\"ns-comment__box\"\n [ngClass]=\"{ 'ns-comment__box--invalid': invalid }\"\n >\n <ns-avatar class=\"ns-comment__avatar\" [src]=\"cover()?.url\" />\n\n <div class=\"ns-comment__input-wrap\">\n <div class=\"ns-comment__input\">\n <ns-content-editable\n class=\"ns-comment__input-content\"\n [maxlength]=\"maxLength()\"\n [(ngModel)]=\"content\"\n [disabled]=\"disabled()\"\n />\n\n @if (!content) {\n <span class=\"ns-comment__input-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n <div class=\"ns-comment__footer\">\n <span class=\"ns-comment__counter\">Quedan {{ counter }} caracteres</span>\n\n @if (submitText()) {\n <button\n class=\"ns-comment__submit\"\n (click)=\"publish()\"\n [disabled]=\"disabled()\"\n >\n {{ submitText() }}\n </button>\n }\n </div>\n </div>\n </div>\n} @else {\n <h4 class=\"ns-comment__title\">\n {{ title() }} <br />\n <small\n class=\"ns-comment__description\"\n [innerHTML]=\"description() | nsSafeHtml\"\n ></small>\n </h4>\n\n <div class=\"ns-comment__logout\">\n <ng-content />\n </div>\n}\n@if (messages().length) {\n <ul class=\"ns-comment__list\">\n @for (comment of messages(); track comment) {\n <li class=\"ns-comment__item\">\n <ns-avatar\n class=\"ns-comment__cover\"\n [src]=\"comment.cover?.url\"\n size=\"md\"\n />\n\n <div class=\"ns-comment__wrap\">\n <div class=\"ns-comment__user-wrap\">\n @if (comment?.author; as author) {\n <a [attr.href]=\"author.link\" class=\"ns-comment__author\">\n {{ author.name }}\n </a>\n }\n @if (comment?.created; as date) {\n <span class=\"ns-comment__date\">{{ date | nsHumanize }}</span>\n }\n\n <div\n class=\"ns-comment__message\"\n [innerHTML]=\"comment?.message | nsSafeHtml\"\n ></div>\n </div>\n </div>\n </li>\n }\n </ul>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n inject,\n input\n} from '@angular/core';\nimport { NsAriaIdService, NsFieldContext } from '../a11y';\n\n@Component({\n selector: 'ns-description',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './description.component.scss',\n host: {\n '[attr.id]': 'id()',\n '[attr.aria-live]': 'live()',\n '[class.ns-description]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDescriptionComponent {\n private readonly ariaIds = inject(NsAriaIdService);\n private readonly field = inject(NsFieldContext, {\n optional: true,\n host: true\n });\n private readonly destroyRef = inject(DestroyRef);\n\n readonly id = input(this.ariaIds.create('ns-description'));\n readonly live = input<'off' | 'polite' | 'assertive'>('off');\n\n constructor() {\n if (!this.field) {\n return;\n }\n const field = this.field;\n const registration = effect(() => {\n const id = this.id();\n field.registerDescription(id);\n return () => field.unregisterDescription(id);\n });\n this.destroyRef.onDestroy(() => registration.destroy());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsOrientation } from '../../types';\n\n@Component({\n selector: 'ns-divider',\n standalone: true,\n template: '',\n styleUrl: './divider.component.scss',\n host: {\n role: 'separator',\n '[attr.aria-orientation]': 'orientation()',\n '[class.ns-divider]': 'true',\n '[class.ns-divider--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ns-divider--vertical]': \"orientation() === 'vertical'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDividerComponent {\n readonly orientation = input<NsOrientation>('horizontal');\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n effect,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsDrawerPosition } from './interfaces/drawer-config';\n\n@Component({\n selector: 'ns-drawer',\n standalone: true,\n template: `\n <div class=\"ns-drawer__backdrop\" aria-hidden=\"true\"></div>\n <aside\n class=\"ns-drawer__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"title() || null\"\n [class.ns-drawer__panel--start]=\"position() === 'start'\"\n tabindex=\"-1\"\n >\n <header class=\"ns-drawer__header\">\n @if (title()) {\n <h2 class=\"ns-drawer__title\">{{ title() }}</h2>\n }\n <button\n class=\"ns-drawer__close\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"close()\"\n >\n ×\n </button>\n </header>\n <div class=\"ns-drawer__body\">\n @if (contentComponent()) {\n <ng-template #contentHost />\n } @else {\n <ng-content />\n }\n </div>\n </aside>\n `,\n styleUrl: './drawer.component.scss',\n host: {\n '[class.ns-drawer]': 'true',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDrawerComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly title = input('');\n readonly position = input<NsDrawerPosition>('end');\n readonly closeLabel = input('Close drawer');\n readonly closeOnEscape = input(true);\n readonly closed = output<NsOverlayCloseReason>();\n readonly contentComponent = input<Type<object> | null>(null);\n readonly contentInputs = input<Record<string, unknown>>({});\n readonly closeReason = signal<NsOverlayCloseReason | undefined>(undefined);\n\n @ViewChild('contentHost', { read: ViewContainerRef })\n private contentHost?: ViewContainerRef;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private contentRef?: ComponentRef<object>;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => this.createContent());\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n this.createContent();\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n this.contentRef?.destroy();\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n getContent<T extends object>(): T {\n if (!this.contentRef) {\n throw new Error('Drawer content could not be created.');\n }\n return this.contentRef.instance as T;\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: false,\n trapFocus: true,\n restoreFocus: true,\n inert: true,\n lockScroll: true\n });\n overlayRef.portal.classList.add('ns-drawer__portal');\n overlayRef.portal.style.inset = '0';\n overlayRef.portal.style.border = '0';\n overlayRef.portal.style.borderRadius = '0';\n overlayRef.portal.style.background = 'transparent';\n overlayRef.portal.style.boxShadow = 'none';\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n this.closeReason.set(reason);\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n\n private createContent(): void {\n const component = this.contentComponent();\n if (\n !this.viewInitialized ||\n !component ||\n !this.contentHost ||\n this.contentRef\n ) {\n return;\n }\n this.contentRef = this.contentHost.createComponent(component);\n for (const [name, value] of Object.entries(this.contentInputs())) {\n this.contentRef.setInput(name, value);\n }\n }\n}\n","import { ComponentRef, Signal } from '@angular/core';\nimport { NsOverlayCloseReason } from '../../overlay';\nimport { NsDrawerComponent } from '../drawer.component';\n\nexport class NsDrawerRef<T> {\n constructor(\n private readonly componentRef: ComponentRef<NsDrawerComponent>,\n readonly content: T,\n readonly closed: Signal<NsOverlayCloseReason | undefined>\n ) {}\n\n close(): void {\n this.componentRef.instance.close();\n }\n}\n","import {\n ApplicationRef,\n EnvironmentInjector,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\nimport { NsDrawerConfig } from '../interfaces/drawer-config';\nimport { NsDrawerComponent } from '../drawer.component';\nimport { NsDrawerRef } from '../models/drawer-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class NsDrawerService {\n private readonly applicationRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n open<T extends object>(config: NsDrawerConfig<T>): NsDrawerRef<T> {\n const componentRef = createComponent(NsDrawerComponent, {\n environmentInjector: this.environmentInjector\n });\n componentRef.setInput('title', config.title ?? '');\n componentRef.setInput('position', config.position ?? 'end');\n componentRef.setInput('closeOnEscape', config.closeOnEscape ?? true);\n componentRef.setInput('contentComponent', config.component);\n componentRef.setInput('contentInputs', config.inputs ?? {});\n this.applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n componentRef.instance.isOpen.set(true);\n\n const drawerRef = new NsDrawerRef(\n componentRef,\n componentRef.instance.getContent<T>(),\n componentRef.instance.closeReason\n );\n componentRef.instance.closed.subscribe(() => {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return drawerRef;\n }\n}\n","export enum Commands {\n BOLD = 'bold',\n CREATE_LINK = 'createLink',\n FONT_NAME = 'fontName',\n FONT_SIZE = 'fontSize',\n FORMAT_BLOCK = 'formatBlock',\n INSERT_HTML = 'insertHTML',\n INSERT_IMAGE = 'insertImage',\n INSERT_ORDERED_LIST = 'insertOrderedList',\n INSERT_UNORDERED_LIST = 'insertUnorderedList',\n INSERT_TEXT = 'insertText',\n ITALIC = 'italic',\n JUSTIFY_CENTER = 'justifyCenter',\n JUSTIFY_FULL = 'justifyFull',\n JUSTIFY_LEFT = 'justifyLeft',\n JUSTIFY_RIGHT = 'justifyRight',\n UNDERLINE = 'underline',\n UNLINK = 'unlink',\n TEXT_COLOR = 'foreColor',\n BACKGROUND_COLOR = 'backColor'\n}\n","export const LABELS_DEFAULT: Record<string, string> = {\n bold: 'Bold',\n italic: 'Italic',\n code: 'Code',\n underline: 'Underline',\n strike: 'Strike',\n blockquote: 'Blockquote',\n bullet_list: 'Bullet List',\n ordered_list: 'Ordered List',\n paragraph: 'Paragraph',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n align_left: 'Left Align',\n align_center: 'Center Align',\n align_right: 'Right Align',\n align_justify: 'Justify',\n text_color: 'Text Color',\n background_color: 'Background Color',\n insert_link: 'Insert Link',\n close_link: 'Close link form',\n link: 'Paste your link',\n text: 'Text to display',\n tooltip_link: 'Tooltip',\n open_new_window: 'Open link in new window',\n submit_link: 'Insert',\n remove_color: 'Remove',\n insert_image: 'Insert Image',\n close_image: 'Close image form',\n image_url: 'Paste the image URL',\n image_alt: 'Alternative text',\n submit_image: 'Insert'\n};\n\nexport type LabelsKeys = keyof typeof LABELS_DEFAULT;\n\nexport class Labels {\n private readonly storage = LABELS_DEFAULT;\n\n constructor(newLabels: Partial<Record<LabelsKeys, string>> = {}) {\n this.storage = { ...LABELS_DEFAULT, ...newLabels };\n }\n\n get = (key: string): string => {\n return this.storage[key] ?? '';\n };\n}\n","import { Labels } from '../models/labels';\nimport { NsEditorSetup } from '../interfaces/editor-config';\nimport { Commands } from '../enums/commands.enum';\nimport { inject, Injectable, InjectionToken, DOCUMENT } from '@angular/core';\n\nexport const NS_EDITOR_SETUP = new InjectionToken<NsEditorSetup>(\n 'NsEditorSetup'\n);\n\n/** Character entities used to neutralize markup when a value is interpolated into HTML. */\nconst HTML_ESCAPES: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\n\n/** Matches control characters (including tab/newline) that browsers ignore when resolving a URL scheme. */\n// eslint-disable-next-line no-control-regex\nconst CONTROL_CHARS_PATTERN = /[\\x00-\\x1f\\x7f]/g;\n\n/** Matches a leading `scheme:` on a URL. Absence means the URL is relative or a fragment (`/path`, `./path`, `#anchor`). */\nconst SCHEME_PATTERN = /^([a-zA-Z][a-zA-Z\\d+\\-.]*):/;\n\nconst LINK_ALLOWED_SCHEMES = ['http:', 'https:', 'mailto:', 'tel:'];\nconst IMAGE_ALLOWED_SCHEMES = ['http:', 'https:'];\nconst IMAGE_DATA_URL_PATTERN = /^data:image\\/[a-z0-9.+-]+[;,]/i;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsEditorService {\n private config = inject<NsEditorSetup>(NS_EDITOR_SETUP, { optional: true });\n private doc = inject(DOCUMENT);\n\n private savedSelection: Range | null;\n private selectedText: string;\n private readonly labels: Labels;\n\n constructor() {\n const config = this.config;\n\n this.labels = new Labels(config ? config.labels : {});\n }\n\n translate(key: string): string {\n return this.labels.get(key);\n }\n\n saveSelection() {\n switch (true) {\n case !!this.doc.getSelection:\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n break;\n case !!this.doc.getSelection && !!this.doc.createRange:\n this.savedSelection = document.createRange();\n break;\n default:\n this.savedSelection = null;\n }\n }\n\n command(name: Commands, value?: string) {\n this.doc.execCommand(name, false, value);\n }\n\n formatBlock(heading: string) {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (headings.includes(heading)) {\n this.doc.execCommand(Commands.FORMAT_BLOCK, false, heading);\n }\n }\n\n createLink(link: {\n text: string;\n url: string;\n tooltip: string;\n openNewWindow: boolean;\n }) {\n const resolvedUrl = this.resolveLinkUrl(link.url);\n if (resolvedUrl === null) {\n // Unsupported/unsafe scheme (e.g. `javascript:`): skip silently, the\n // form already validated that a URL was entered, so no error is thrown here.\n return;\n }\n\n const href = this.escapeHtml(resolvedUrl);\n const title = this.escapeHtml(link.tooltip);\n const text = this.escapeHtml(link.text);\n const target = link.openNewWindow ? '_blank' : '_self';\n // `noopener noreferrer` prevents the new tab from reaching back into this\n // page via window.opener; only meaningful (and only emitted) for _blank.\n const rel = link.openNewWindow ? ' rel=\"noopener noreferrer\"' : '';\n\n const newUrl = `<a href=\"${href}\" title=\"${title}\" target=\"${target}\"${rel}>${text}</a>`;\n this.insertHtml(newUrl);\n }\n\n insertImage(image: { url: string; alt?: string }): void {\n const resolvedUrl = this.resolveImageUrl(image.url);\n if (resolvedUrl === null) {\n // Unsupported/unsafe scheme (e.g. `javascript:`, non-image `data:`):\n // skip silently, mirroring createLink's rejection behaviour.\n return;\n }\n\n const src = this.escapeHtml(resolvedUrl);\n const alt = this.escapeHtml(image.alt ?? '');\n\n this.insertHtml(`<img src=\"${src}\" alt=\"${alt}\">`);\n }\n\n insertHtml(html: string): void {\n const isHTMLInserted = this.doc.execCommand(\n Commands.INSERT_HTML,\n false,\n html\n );\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n\n /** Escapes `&`, `<`, `>`, `\"` and `'` — safe for both HTML attribute values and text nodes. */\n private escapeHtml(value: string): string {\n return value.replace(/[&<>\"']/g, (char) => HTML_ESCAPES[char] ?? char);\n }\n\n /** Strips embedded control characters and surrounding whitespace so a scheme like `java\\tscript:` can't be smuggled in. */\n private normalizeUrl(url: string): string {\n return url.replace(CONTROL_CHARS_PATTERN, '').trim();\n }\n\n /** Returns the lowercased `scheme:` (with trailing colon) or null when the URL is relative/a fragment. */\n private extractScheme(normalizedUrl: string): string | null {\n const match = normalizedUrl.match(SCHEME_PATTERN);\n return match ? `${match[1].toLowerCase()}:` : null;\n }\n\n /**\n * Normalizes and validates a link URL in one pass. Returns the normalized\n * URL when its scheme is allowed (or absent), `null` otherwise. Callers\n * must escape and insert the returned string — never the raw input — so\n * the value that was validated is always the value that gets inserted.\n */\n private resolveLinkUrl(url: string): string | null {\n const normalized = this.normalizeUrl(url);\n const scheme = this.extractScheme(normalized);\n if (scheme === null) {\n return normalized;\n }\n return LINK_ALLOWED_SCHEMES.includes(scheme) ? normalized : null;\n }\n\n /**\n * Normalizes and validates an image URL in one pass. Returns the\n * normalized URL when its scheme is allowed (or absent), `null`\n * otherwise. Callers must escape and insert the returned string — never\n * the raw input — so the value that was validated is always the value\n * that gets inserted.\n */\n private resolveImageUrl(url: string): string | null {\n const normalized = this.normalizeUrl(url);\n const scheme = this.extractScheme(normalized);\n if (scheme === null) {\n return normalized;\n }\n if (scheme === 'data:') {\n return IMAGE_DATA_URL_PATTERN.test(normalized) ? normalized : null;\n }\n return IMAGE_ALLOWED_SCHEMES.includes(scheme) ? normalized : null;\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { NsEditorService } from '../services/editor.service';\n\n@Pipe({\n name: 'nsEditorLabel'\n})\nexport class NsEditorLabelPipe implements PipeTransform {\n private editor = inject(NsEditorService);\n\n transform(key: string): string {\n return this.editor.translate(key);\n }\n}\n","import {\n Component,\n OnInit,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgStyle } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n imports: [NgStyle, NsEditorLabelPipe]\n})\nexport class NsEditorColorPickerComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n readonly presets = input<string[][]>(undefined);\n readonly type = input<'text_color' | 'background_color'>('text_color');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n showPopup = false;\n activeColor?: string;\n isActive: boolean;\n\n trackByIndex = (index: number): number => index;\n\n ngOnInit(): void {}\n\n private get command(): Commands {\n return this.type() === 'text_color'\n ? Commands.TEXT_COLOR\n : Commands.BACKGROUND_COLOR;\n }\n\n toggle() {\n this.showPopup = !this.showPopup;\n }\n\n getContrastYIQ(hexadecimal: string): string {\n const color = hexadecimal.replace('#', '');\n const r = parseInt(color.substring(0, 2), 16);\n const g = parseInt(color.substring(2, 4), 16);\n const b = parseInt(color.substring(4, 6), 16);\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? 'black' : 'white';\n }\n\n onColorSelect(color: string): void {\n this.editor.command(this.command, (this.activeColor = color));\n this.toggle();\n }\n\n remove() {}\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n [attr.aria-label]=\"type() | nsEditorLabel\"\n [attr.aria-expanded]=\"showPopup\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <span class=\"ns-editor__color-text\">\n <svg\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M14 12.5h-4l-.874 2.186A.5.5 0 0 1 8.66 15H7.273a.5.5 0 0 1-.456-.705l4.05-9A.5.5 0 0 1 11.323 5h1.354a.5.5 0 0 1 .456.295l4.05 9a.5.5 0 0 1-.456.705h-1.388a.5.5 0 0 1-.465-.314L14 12.5zm-.6-1.5L12 7.5 10.6 11h2.8z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n <span></span>\n </span>\n\n <svg\n role=\"presentation\"\n class=\"ns-editor__toggle\"\n fill=\"currentColor\"\n height=\"12px\"\n viewBox=\"0 0 16 16\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n</button>\n\n@if (showPopup) {\n <div class=\"ns-editor__popup\">\n @for (colorGroup of presets(); track $index) {\n <div class=\"ns-editor__color-container\">\n @for (color of colorGroup; track $index) {\n <button\n class=\"ns-editor__color\"\n type=\"button\"\n [ngStyle]=\"{ backgroundColor: color, color: getContrastYIQ(color) }\"\n [title]=\"color\"\n [attr.aria-label]=\"color\"\n (click)=\"onColorSelect(color)\"\n ></button>\n }\n </div>\n }\n </div>\n}\n","import {\n Component,\n booleanAttribute,\n inject,\n input,\n OnInit\n} from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgClass } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\nimport { NsInputComponent } from '../../../form';\nimport { NsButtonComponent } from '../../../button';\n\n@Component({\n selector: 'ns-editor-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n imports: [\n ReactiveFormsModule,\n NgClass,\n NsEditorLabelPipe,\n NsInputComponent,\n NsButtonComponent\n ]\n})\nexport class NsEditorImageComponent implements OnInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public formImage: FormGroup;\n public show: boolean;\n private fb = inject(FormBuilder);\n private editor = inject(NsEditorService);\n\n ngOnInit(): void {\n this.formImage = this.fb.group({\n url: ['', Validators.required],\n text: ['']\n });\n }\n\n insert() {\n if (this.formImage.valid) {\n const { url, text } = this.formImage.getRawValue();\n this.editor.insertImage({ url, alt: text });\n this.formImage.reset();\n this.show = false;\n }\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n id=\"ns-editor-image\"\n [attr.aria-label]=\"'insert_image' | nsEditorLabel\"\n [disabled]=\"disabled()\"\n (click)=\"show = true\"\n>\n <svg\n viewBox=\"0 0 24 24\"\n role=\"presentation\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H5Zm14 2H5v8.586l3.293-3.293a1 1 0 0 1 1.414 0L12 13.586l3.793-3.793a1 1 0 0 1 1.414 0L19 11.586V6ZM5 18v-2.586l4-4 2.293 2.293a1 1 0 0 0 1.414 0L17 9.414 19 11.414V18H5Z\"\n ></path>\n <circle cx=\"8\" cy=\"9\" r=\"1.5\"></circle>\n </svg>\n</button>\n\n<form\n [formGroup]=\"formImage\"\n class=\"ns-editor__form-image\"\n aria-labelledby=\"ns-editor-image\"\n [ngClass]=\"{ 'ns-editor__form-image--visible': show }\"\n (ngSubmit)=\"insert()\"\n>\n <header>\n <label>{{ 'insert_image' | nsEditorLabel }}</label>\n <button\n type=\"button\"\n class=\"ns-editor__close\"\n [attr.aria-label]=\"'close_image' | nsEditorLabel\"\n (click)=\"show = false\"\n ></button>\n </header>\n\n <ns-input\n [formControlName]=\"'url'\"\n [placeholder]=\"'image_url' | nsEditorLabel\"\n />\n <ns-input\n [formControlName]=\"'text'\"\n [placeholder]=\"'image_alt' | nsEditorLabel\"\n />\n\n <footer>\n <ns-button type=\"submit\">{{ 'submit_image' | nsEditorLabel }}</ns-button>\n </footer>\n</form>\n","import {\n Component,\n booleanAttribute,\n inject,\n input,\n OnInit\n} from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgClass } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\nimport { NsCheckboxComponent, NsInputComponent } from '../../../form';\nimport { NsButtonComponent } from '../../../button';\n\n@Component({\n selector: 'ns-editor-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n imports: [\n ReactiveFormsModule,\n NgClass,\n NsEditorLabelPipe,\n NsInputComponent,\n NsCheckboxComponent,\n NsButtonComponent\n ]\n})\nexport class NsEditorLinkComponent implements OnInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public formLink: FormGroup;\n public show: boolean;\n private fb = inject(FormBuilder);\n private editor = inject(NsEditorService);\n\n ngOnInit(): void {\n this.formLink = this.fb.group({\n text: ['', Validators.required],\n url: ['', Validators.required],\n tooltip: [''],\n openNewWindow: [true]\n });\n }\n\n insert() {\n if (this.formLink.valid) {\n this.editor.createLink(this.formLink.getRawValue());\n this.formLink.reset();\n this.show = false;\n }\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n id=\"ns-editor-link\"\n [attr.aria-label]=\"'insert_link' | nsEditorLabel\"\n [disabled]=\"disabled()\"\n (click)=\"show = true\"\n>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M12.654 8.764a.858.858 0 01-1.213-1.213l1.214-1.214a3.717 3.717 0 015.257 0 3.714 3.714 0 01.001 5.258l-1.214 1.214-.804.804a3.72 3.72 0 01-5.263.005.858.858 0 011.214-1.214c.781.782 2.05.78 2.836-.005l.804-.803 1.214-1.214a1.998 1.998 0 00-.001-2.831 2 2 0 00-2.83 0l-1.215 1.213zm-.808 6.472a.858.858 0 011.213 1.213l-1.214 1.214a3.717 3.717 0 01-5.257 0 3.714 3.714 0 01-.001-5.258l1.214-1.214.804-.804a3.72 3.72 0 015.263-.005.858.858 0 01-1.214 1.214 2.005 2.005 0 00-2.836.005l-.804.803L7.8 13.618a1.998 1.998 0 00.001 2.831 2 2 0 002.83 0l1.215-1.213z\"\n ></path>\n </svg>\n</button>\n\n<form\n [formGroup]=\"formLink\"\n class=\"ns-editor__form-link\"\n aria-labelledby=\"ns-editor-link\"\n [ngClass]=\"{ 'ns-editor__form-link--visible': show }\"\n (ngSubmit)=\"insert()\"\n>\n <header>\n <label>{{ 'insert_link' | nsEditorLabel }}</label>\n <button\n type=\"button\"\n class=\"ns-editor__close\"\n [attr.aria-label]=\"'close_link' | nsEditorLabel\"\n (click)=\"show = false\"\n ></button>\n </header>\n\n <ns-input [formControlName]=\"'url'\" [placeholder]=\"'link' | nsEditorLabel\" />\n <ns-input [formControlName]=\"'text'\" [placeholder]=\"'text' | nsEditorLabel\" />\n <ns-input\n [formControlName]=\"'tooltip'\"\n [placeholder]=\"'tooltip_link' | nsEditorLabel\"\n />\n <ns-checkbox\n [formControlName]=\"'openNewWindow'\"\n [label]=\"'open_new_window' | nsEditorLabel\"\n />\n\n <footer>\n <ns-button type=\"submit\">{{ 'submit_link' | nsEditorLabel }}</ns-button>\n </footer>\n</form>\n","import {\n Component,\n OnInit,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-list',\n templateUrl: './list.component.html',\n styleUrl: './list.component.scss',\n imports: [NsEditorLabelPipe]\n})\nexport class NsEditorListComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public commands = Commands;\n\n ngOnInit(): void {}\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'bullet_list' | nsEditorLabel\"\n (click)=\"command(commands.INSERT_UNORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M6 8c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'ordered_list' | nsEditorLabel\"\n (click)=\"command(commands.INSERT_ORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M11 7h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 0h3v1H6v-1zm0 2h3v1H6v-1zm1-9H6V7h2v3H7V8zm-1 3h3v1.333h-.6V13H7.2v-.667H6V11zm0 2h3v1H6v-1zm2 3h2v1H8v-1z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n","import { Component, booleanAttribute, inject, input } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\nimport { NsEditorService } from '../../services/editor.service';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../../../form/components/dropdown';\nimport { FormsModule } from '@angular/forms';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-paragraph',\n templateUrl: './paragraph.component.html',\n styleUrls: ['./paragraph.component.scss'],\n imports: [\n NsDropdownComponent,\n NsDropdownItemDirective,\n FormsModule,\n NsEditorLabelPipe\n ]\n})\nexport class NsEditorParagraphComponent {\n private editor = inject(NsEditorService);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public id: string = Guid.create();\n\n private _value: string = 'p';\n\n get value() {\n return this._value;\n }\n\n set value(heading) {\n this.editor.formatBlock(heading);\n }\n}\n","<ns-dropdown [searchable]=\"false\" [disabled]=\"disabled()\" [(ngModel)]=\"value\">\n <ns-dropdown-item [label]=\"'paragraph' | nsEditorLabel\" key=\"p\" />\n <ns-dropdown-item [label]=\"'h1' | nsEditorLabel\" key=\"h1\" />\n <ns-dropdown-item [label]=\"'h2' | nsEditorLabel\" key=\"h2\" />\n <ns-dropdown-item [label]=\"'h3' | nsEditorLabel\" key=\"h3\" />\n <ns-dropdown-item [label]=\"'h4' | nsEditorLabel\" key=\"h4\" />\n <ns-dropdown-item [label]=\"'h5' | nsEditorLabel\" key=\"h5\" />\n <ns-dropdown-item [label]=\"'h6' | nsEditorLabel\" key=\"h6\" />\n</ns-dropdown>\n","import { Component, booleanAttribute, inject, input } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n imports: [NsEditorLabelPipe]\n})\nexport class NsEditorToggleCommandComponent {\n private editor = inject(NsEditorService);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public commands = Commands;\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'bold' | nsEditorLabel\"\n (click)=\"command(commands.BOLD)\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h4.5c2.481 0 4.5-1.165 4.5-4 0-1.698-.724-2.796-1.837-3.405C15.69 10.967 16 10.112 16 9c0-2.835-2.019-4-4.5-4H8Zm1 2v4h3c1.379 0 2-.857 2-2s-.621-2-2-2H9Zm0 6v4h4c1.379 0 2-.857 2-2s-.621-2-2-2H9Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'italic' | nsEditorLabel\"\n (click)=\"command(commands.ITALIC)\"\n>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 6a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2h-2.167l-1.666 10H14a1 1 0 1 1 0 2H8a1 1 0 1 1 0-2h2.167l1.666-10H10a1 1 0 0 1-1-1Z\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'underline' | nsEditorLabel\"\n (click)=\"command(commands.UNDERLINE)\"\n>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 5a1 1 0 0 1 1 1v5.5c0 1.343.556 2.5 2 2.5s2-1.157 2-2.5V6a1 1 0 1 1 2 0v5.657C16 13.804 14.469 16 12 16c-2.462 0-4-2.196-4-4.343V6a1 1 0 0 1 1-1ZM6 17a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Z\"\n ></path>\n </svg>\n</button>\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n inject,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsEditorService } from './services/editor.service';\nimport { NsContentEditableComponent, NsValueAccessor } from '../form';\nimport { NsEditorParagraphComponent } from './components/paragraph/paragraph.component';\nimport { NsEditorToggleCommandComponent } from './components/toogle/toggle.component';\nimport { NsEditorColorPickerComponent } from './components/color-picker/color-picker.component';\nimport { NsEditorListComponent } from './components/list/list.component';\nimport { NsEditorLinkComponent } from './components/link/link.component';\nimport { NsEditorImageComponent } from './components/image/image.component';\n\nexport type NsEditorTool =\n | 'paragraph' // ns-editor-paragraph — block selector\n | 'format' // ns-editor-toggle — bold, italic, underline\n | 'color' // ns-editor-color-picker\n | 'list' // ns-editor-list — bullet and numbered\n | 'link' // ns-editor-link\n | 'image' // ns-editor-image\n | 'separator'; // visual divider between groups\n\nexport const NS_EDITOR_TOOLS_DEFAULT: readonly NsEditorTool[] = [\n 'paragraph',\n 'format',\n 'color',\n 'list',\n 'link'\n];\n\nconst DEFAULT_COLOR_PRESETS = [\n '#b60205',\n '#d93f0b',\n '#fbca04',\n '#0e8a16',\n '#006b75',\n '#1d76db',\n '#0052cc',\n '#5319e7',\n '#e99695',\n '#f9d0c4',\n '#fef2c0',\n '#c2e0c6',\n '#bfdadc',\n '#c5def5',\n '#bfd4f2',\n '#d4c5f9'\n];\n\n@Component({\n selector: 'ns-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsEditorComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-editor]': 'true',\n '[class.ns-editor--disabled]': 'disabled()'\n },\n imports: [\n NsEditorParagraphComponent,\n NsEditorToggleCommandComponent,\n NsEditorColorPickerComponent,\n NsEditorListComponent,\n NsEditorLinkComponent,\n NsEditorImageComponent,\n NsContentEditableComponent,\n FormsModule\n ]\n})\nexport class NsEditorComponent\n extends NsValueAccessor<string>\n implements OnInit, OnDestroy\n{\n private editor = inject(NsEditorService);\n\n readonly maxLength = input<number>(undefined);\n readonly colorPresets = input<string[]>(DEFAULT_COLOR_PRESETS);\n readonly tools = input<readonly NsEditorTool[]>(NS_EDITOR_TOOLS_DEFAULT);\n\n @ViewChild(NsContentEditableComponent, { read: ElementRef, static: true })\n textArea: ElementRef<HTMLElement>;\n\n @ViewChild(NsContentEditableComponent, { static: true })\n private contentEditable: NsContentEditableComponent;\n\n /** Mirrors the content-editable's own counter, measured off `innerText`. */\n readonly length = computed(() => this.contentEditable?.length() ?? 0);\n\n readonly hasFooter = computed(() =>\n Boolean(this.description() || this.maxLength())\n );\n\n @HostListener('click')\n focused = () => this.textArea.nativeElement.focus();\n\n ngOnInit(): void {}\n\n get presets(): string[][] {\n const col = 8;\n const colors: string[][] = [];\n\n this.colorPresets().forEach((color, index) => {\n const row = Math.floor(index / col);\n if (!colors[row]) {\n colors.push([]);\n }\n colors[row].push(color);\n });\n\n return colors;\n }\n\n blur(): void {\n this.editor.saveSelection();\n this.onTouched();\n }\n\n ngOnDestroy() {}\n}\n","@if (label()) {\n <label class=\"ns-editor__label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n\n<ul class=\"ns-editor__toolbar\">\n @for (tool of tools(); track $index) {\n @switch (tool) {\n @case ('separator') {\n <li\n class=\"ns-editor__separator\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n ></li>\n }\n @case ('paragraph') {\n <li class=\"ns-editor__item\">\n <ns-editor-paragraph [disabled]=\"disabled()\" />\n </li>\n }\n @case ('format') {\n <li class=\"ns-editor__item\">\n <ns-editor-toggle [disabled]=\"disabled()\" />\n </li>\n }\n @case ('color') {\n <li class=\"ns-editor__item\">\n <ns-editor-color-picker [presets]=\"presets\" [disabled]=\"disabled()\" />\n </li>\n }\n @case ('list') {\n <li class=\"ns-editor__item\">\n <ns-editor-list [disabled]=\"disabled()\" />\n </li>\n }\n @case ('link') {\n <li class=\"ns-editor__item\">\n <ns-editor-link [disabled]=\"disabled()\" />\n </li>\n }\n @case ('image') {\n <li class=\"ns-editor__item\">\n <ns-editor-image [disabled]=\"disabled()\" />\n </li>\n }\n }\n }\n</ul>\n\n<ns-content-editable\n class=\"ns-editor__content\"\n [class.ns-editor__content--footer]=\"hasFooter()\"\n [id]=\"id\"\n (blur)=\"blur()\"\n [maxlength]=\"maxLength()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n/>\n\n@if (hasFooter()) {\n <div class=\"ns-editor__footer\">\n @if (description()) {\n <p class=\"ns-editor__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (maxLength()) {\n <span class=\"ns-editor__counter\" aria-live=\"polite\">\n {{ length() }} / {{ maxLength() }}\n </span>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NsFile } from '@ng-solid/core';\n\n@Pipe({\n name: 'nsImageUrl',\n standalone: true\n})\nexport class NsImageUrlPipe implements PipeTransform {\n transform(image: NsFile): string {\n let url = '';\n if (image && image.data && typeof image.data === 'string') {\n switch (true) {\n case URL.canParse(image.data) || /data:/.test(image.data):\n url = image.data;\n break;\n default:\n url = `data:${image.type};base64,${image.data}`;\n }\n }\n return url;\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n numberAttribute,\n Renderer2,\n signal,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../form';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NsImageUrlPipe } from './pipes/image-url.pipe';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsButtonComponent } from '../button/button.component';\nimport { NS_UPLOAD_CLIENT, NsFile } from '@ng-solid/core';\n\n/**\n * `NsFile` (published API, `@ng-solid/core`) has no identity field of its\n * own. `uid` used to live as a component-local property written directly\n * onto the object (AVF-15) — that broke the moment a host state library\n * hands this component a frozen `NsFile`: the console's NGXS store deep-\n * freezes its slices, so a saved product's images arrive non-extensible and\n * `image.uid = …` throws `TypeError: Cannot add property uid, object is not\n * extensible` (AVF-18 corrección de rechazo). A design-system component\n * cannot assume its inputs are mutable, so `uid` now lives *outside* every\n * `NsFile`, in the module-level `uidRegistry` below, keyed by object\n * identity — nothing ever writes to the `NsFile` itself. That also gives\n * reference-identity preservation for free: `assignUid` never wraps, clones\n * or copies its argument, so `remove()`'s `img !== image` filter, and every\n * other place that compares an `NsFile` by `===`, keeps working unchanged.\n */\nconst uidRegistry = new WeakMap<NsFile, string>();\n\n/**\n * Holds the original `File` a pending upload started from, keyed by the same\n * `NsFile` instance `add()` tracks. `add()`'s own `reader.onload` overwrites\n * `tracked.data` with the base64 preview string right after kicking off the\n * *first* upload attempt (see the comment in `add()` below) — necessary so\n * the gallery has something to render while the request is in flight, but it\n * means that by the time an upload fails, `tracked.data` is already that\n * string, not the `File` it started from. `retry()` re-runs `upload()` on\n * that same tracked object, so without this side registry it would hand the\n * client a base64 string instead of the file it was supposed to resend\n * (AVF-18 QA finding: a retry after a transient failure sent a data URI and\n * the server rejected it with \"Upload value invalid\").\n */\nconst originalDataRegistry = new WeakMap<NsFile, File>();\n\n/**\n * No structural difference from `NsFile` — the guarantee this alias\n * documents (\"already has an entry in `uidRegistry`\") lives in the registry,\n * not on the object. Kept as a distinct name at call sites (`images()`,\n * `image()`, `retry()`, `remove()`) that specifically require an image which\n * has already been through `assignUid`.\n */\ntype TrackedFile = NsFile;\n\n/**\n * Per-file upload status, keyed by `uid` (AVF-16). Replaces the old\n * `loading: Set<string>` — a boolean set can't distinguish \"still\n * uploading\" from \"upload failed\", which was the actual gap this HU closes.\n * `'ok'` is set (not deleted) on success so a file that went through this\n * component's own upload pipeline stays traceable; a file that arrived via\n * `writeValue`/`[value]` and never uploaded here simply has no entry, which\n * every template check (`=== 'subiendo'` / `=== 'fallido'`) already treats\n * as the normal/idle state.\n */\ntype NsImageUploadFileStatus = 'subiendo' | 'ok' | 'fallido';\n\n/**\n * Module-level monotonic counter backing `uid` for images without a server\n * `id` yet (pending uploads). Deterministic and trivial to assert in tests,\n * unlike `crypto.randomUUID()`.\n */\nlet uidCounter = 0;\n\n/**\n * Registers `uid` once per image instance in `uidRegistry`: derived from\n * the server `id` when present (`srv:${id}`, stable across re-`writeValue`\n * calls even on brand-new instances mapped from GraphQL — a `patchValue`\n * from the host never remounts the gallery), otherwise the next counter\n * value. Never overwrites an existing entry, and never touches `image`\n * itself — safe to call on a frozen, sealed or otherwise non-extensible\n * `NsFile`.\n */\nfunction assignUid(image: NsFile): TrackedFile {\n if (!uidRegistry.has(image)) {\n uidRegistry.set(\n image,\n image.id ? `srv:${image.id}` : `ns-file-${++uidCounter}`\n );\n }\n return image;\n}\n\n@Component({\n selector: 'ns-image-upload',\n templateUrl: './image-upload.component.html',\n imports: [CommonModule, NsImageUrlPipe, NsIconsComponent, NsButtonComponent],\n standalone: true,\n host: {\n '[class.ns-image-upload--loaded]': '!multi() && !!value()',\n '[class.ns-image-upload--disabled]': 'disabled()'\n },\n styleUrls: ['./image-upload.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsImageUploadComponent),\n multi: true\n }\n ]\n})\nexport class NsImageUploadComponent extends NsValueAccessor<\n NsFile | NsFile[] | null\n> {\n private client = inject(NS_UPLOAD_CLIENT, { optional: true });\n private renderer = inject(Renderer2);\n private readonly cdr = inject(ChangeDetectorRef);\n\n readonly accept = input('.jpg,.jpeg,.png,.webp,.avif,.gif');\n readonly multi = input(false, { transform: booleanAttribute });\n readonly limit = input(5, { transform: numberAttribute });\n readonly layout = input<'grid' | 'cover'>('grid');\n\n /**\n * Rows the `__stack` column reserves before it starts scrolling\n * internally, in `layout=\"cover\"`: at most 3, and never more than\n * `limit() - 1` (the cover itself takes one slot).\n */\n readonly reservedRows = computed(() =>\n Math.max(0, Math.min(3, this.limit() - 1))\n );\n\n @ViewChild('input', { static: false, read: ElementRef })\n imgRef: ElementRef<HTMLInputElement>;\n\n public status = new Map<string, NsImageUploadFileStatus>();\n\n /**\n * Bumped by `setStatus`/`deleteStatus` on every `status` mutation.\n * `status` itself stays a plain, publicly-mutable `Map` — kept for the\n * existing per-file bookkeeping and for tests that poll it to synchronise\n * with an async upload — but a plain `Map.set()`/`.delete()` is invisible\n * to Angular's change detection: no signal write and no `markForCheck()`,\n * so nothing tells Angular this control needs checking again. Worse, an\n * `OnPush` ancestor that wasn't otherwise dirtied (e.g. the \"Fotografías\"\n * `<card>` wrapping this control in the product form) can skip this\n * subtree entirely on the next tick. That is exactly why a failed upload\n * used to get stuck showing the spinner forever, silently (AVF-18\n * corrección de rechazo #2): `status.set(uid, 'fallido')` ran, but nothing\n * ever told Angular to look again — unlike a successful upload, which\n * reaches the template through `value.set()` (a real signal write) via\n * `assignValue`/`onChange`. `statusOf()` reads this counter before reading\n * `status`, giving every render that goes through it a real signal\n * dependency, and `touchStatus()` also calls `markForCheck()` directly —\n * belt and braces: the explicit call is the same, long-proven mechanism\n * Angular has always used to announce a change made from outside its own\n * detection cycle (an RxJS subscription callback, here), and is what\n * reliably walks the ancestor chain and clears an `OnPush` skip, the way\n * a signal read alone was not enough to guarantee in practice.\n */\n private readonly statusVersion = signal(0);\n\n private touchStatus(): void {\n this.statusVersion.update((v) => v + 1);\n this.cdr.markForCheck();\n }\n\n private setStatus(uid: string, value: NsImageUploadFileStatus): void {\n this.status.set(uid, value);\n this.touchStatus();\n }\n\n private deleteStatus(uid: string): void {\n this.status.delete(uid);\n this.touchStatus();\n }\n\n /**\n * The only path from `status` + `uid` to the template — and the one every\n * test should use too (AVF-18 corrección de rechazo #2): reading\n * `status.get(...)` directly, the way earlier tests did, cannot tell a\n * status change nobody announced to Angular from one that actually\n * rendered, which is exactly how the previous regression shipped green —\n * the map held `'fallido'`, the DOM still showed `'subiendo'`, and the\n * assertions that read the map straight agreed with the bug.\n */\n statusOf(image: NsFile): NsImageUploadFileStatus | undefined {\n this.statusVersion();\n return this.status.get(this.uidOf(image));\n }\n\n /**\n * Active while a file dragged from outside the browser (desktop, another\n * app) hovers a drop zone — drives the highlight ring/border (AVF-9,\n * criteria 3-5). Never set for the internal thumbnail-reorder drag,\n * distinguished via `isFileDrag`.\n */\n readonly dragActive = signal(false);\n\n /**\n * Inline, Spanish, component-owned notice for when a selection/drop\n * exceeds `limit()` (AVF-16). Deliberately not an `output()`: a consumer\n * that doesn't wire one up would silently drop files again, which is\n * exactly the defect this HU removes. Overwritten (never accumulated) on\n * every enqueue attempt, successful or not.\n */\n readonly limitWarning = signal<string | null>(null);\n\n private _fromIndex: number;\n private _toIndex: number;\n\n /**\n * The only path from `value()` to the template, whatever fed it: a plain\n * `[value]=\"misImagenes\"` binding — `value` is the public two-way `model()`\n * from `NsValueAccessor`, so nothing forces a consumer through\n * `writeValue`/`add` — lands here same as a file picked through the\n * control itself. `assignUid` is idempotent (never overwrites an existing\n * registry entry) and never mutates the `NsFile`, so re-running it every\n * getter call is safe: the `uid` a given instance gets on its first pass\n * through here is the one it keeps on every later change-detection cycle,\n * and no signal write happens as a side effect of reading the template\n * (AVF-15). Works the same whether the array/elements are frozen or not\n * (AVF-18 corrección de rechazo).\n */\n get images(): TrackedFile[] {\n const value = this.value();\n return Array.isArray(value)\n ? (value as NsFile[]).map((image) => assignUid(image))\n : [];\n }\n\n get image(): TrackedFile | null {\n const value = this.value();\n if (Array.isArray(value) || !value) {\n return null;\n }\n return assignUid(value as NsFile);\n }\n\n /**\n * Reads the `uid` assigned to `image` — the accessor the `.ts` and the\n * template both use instead of a `.uid` property on the `NsFile` itself,\n * which no longer exists (AVF-18 corrección de rechazo: that property\n * write is exactly what threw on a frozen image). Public so the\n * template's `track` expressions can call it directly, and so `statusOf`\n * can resolve the key it looks up. Every `NsFile` reachable from\n * `images()`/`image()` has already been through `assignUid`, so this only\n * ever reads — the `assignUid` call here is a safety net for a caller that\n * hands in an image from outside that path.\n */\n uidOf(image: NsFile): string {\n assignUid(image);\n return uidRegistry.get(image) as string;\n }\n\n /**\n * True while the single (`!multi()`) image's own upload attempt is\n * `'fallido'` — the one flag the drag-container button needs to swap\n * \"open the file picker\" for \"retry this upload\" (AVF-16, corrección de\n * rechazo: criterios 5-6 no estaban cubiertos en modo single, solo en\n * `multi`).\n */\n get singleFailed(): boolean {\n const img = this.image;\n return !this.multi() && !!img && this.statusOf(img) === 'fallido';\n }\n\n override writeValue(value: NsFile | NsFile[] | null) {\n if (Array.isArray(value)) {\n (value as NsFile[]).forEach((image) => assignUid(image));\n this.value.set(value);\n } else {\n if (value) {\n assignUid(value as NsFile);\n }\n this.value.set(this.multi() && !value ? [] : value);\n }\n }\n\n onClick() {\n if (!this.disabled()) {\n this.imgRef.nativeElement.click();\n }\n }\n\n /**\n * Click handler for the single-mode (`!multi()`) drag-container: it is\n * both the file picker trigger and, once the image has failed, the\n * retry control — same dual role the `multi` grid button and the cover\n * chip already had (AVF-16 corrección de rechazo).\n */\n onDragContainerClick(): void {\n if (this.singleFailed) {\n this.retry(this.image as TrackedFile);\n } else {\n this.onClick();\n }\n }\n\n load() {\n const { files } = this.imgRef.nativeElement;\n if (files.length) {\n this.enqueueFiles(Array.from(files));\n this.imgRef.nativeElement.value = null;\n }\n this.onTouched();\n }\n\n add(image: NsFile) {\n const tracked = assignUid(image);\n const uid = this.uidOf(tracked);\n // Stashed before `reader.onload` below overwrites `tracked.data` with\n // the preview string, so a later `retry()` on this same object still\n // has the real file to resend (AVF-18 QA finding).\n originalDataRegistry.set(tracked, tracked.data as File);\n this.setStatus(uid, 'subiendo');\n const reader = new FileReader();\n reader.readAsDataURL(tracked.data as File);\n reader.onload = () => {\n if (this.client) {\n // Started before the local-preview mutation below, matching the\n // pre-AVF-16 ordering: whatever the injected client reads off\n // `tracked.data` at call time, it reads before it gets overwritten\n // with the base64 preview string. `tracked` here is always a\n // freshly `NsFile.parse`d object this component created itself\n // (never a host-provided, possibly-frozen instance), so mutating\n // `.data` in place is safe.\n this.upload(tracked, uid);\n tracked.data = reader.result as string;\n this.assignValue(tracked);\n } else {\n tracked.data = reader.result as string;\n this.setStatus(uid, 'ok');\n this.assignValue(tracked);\n }\n };\n }\n\n /**\n * Re-subscribes to the same upload the failed attempt used — no new\n * `NsUploadClient` contract needed (AVF-16 evidence: `upload(file):\n * Observable<file>` is already re-subscribable). Shared by the first\n * attempt (`add`) and every later retry. `uid` is passed in rather than\n * re-derived from `image`, since `retry()` needs the *original* uid even\n * though the `image` it holds may itself be a server response object by\n * then.\n */\n private upload(image: NsFile, uid: string): void {\n const client = this.client;\n if (!client) {\n return;\n }\n this.setStatus(uid, 'subiendo');\n // On a retry, `image.data` may already be the base64 preview string\n // (see `originalDataRegistry`'s doc comment) — the original `File`, when\n // stashed, is what actually goes out over the wire. Cloning (rather than\n // mutating `image` back) keeps `image`'s own `.data` as the preview the\n // template renders while this request is in flight.\n const original = originalDataRegistry.get(image);\n client\n .upload(original ? new NsFile({ ...image, data: original }) : image)\n .subscribe({\n next: (data: NsFile) => {\n // Preserves identity through the preview → server swap: registers\n // the same `uid` for the new server-response object rather than\n // mutating it, so the gallery doesn't remount the image and\n // AVF-16's per-file state isn't lost right as the upload finishes.\n uidRegistry.set(data, uid);\n this.setStatus(uid, 'ok');\n if (this.multi()) {\n // Replaces the preview in place, by uid, rather than filtering it\n // out and pushing the server response at the end: with several\n // uploads resolving concurrently, each `next` reads `this.images`\n // fresh at its own callback, and an in-place-by-uid update can\n // never clobber or reorder an entry a sibling upload already\n // committed (AVF-16 — verified by the 3-concurrent-uploads spec).\n this.value.set(\n this.images.map((img) => (this.uidOf(img) === uid ? data : img))\n );\n this.onChange(this.value());\n } else {\n this.assignValue(data);\n }\n },\n error: () => {\n // `setStatus` (not a raw `status.set`) is what makes this reach the\n // screen at all: a failed upload is the one outcome that never\n // touches `value`, so without the signal write inside `setStatus`,\n // nothing tells Angular this control needs checking again — the\n // thumbnail stays stuck showing \"subiendo\" forever (AVF-18\n // corrección de rechazo #2).\n this.setStatus(uid, 'fallido');\n }\n });\n }\n\n /**\n * Retries a failed upload in place: same `uid`, same position in the\n * gallery, no re-read from disk (the preview already holds the file's\n * data).\n */\n retry(image: TrackedFile): void {\n if (!this.client || this.statusOf(image) !== 'fallido') {\n return;\n }\n this.upload(image, this.uidOf(image));\n }\n\n private assignValue(image: NsFile) {\n if (this.multi()) {\n this.value.set([...this.images, image]);\n } else {\n this.value.set(image);\n }\n this.onChange(this.value());\n }\n\n remove(image: TrackedFile) {\n const uid = this.uidOf(image);\n const previousStatus = this.statusOf(image);\n this.setStatus(uid, 'subiendo');\n if (this.client && !!image.id) {\n this.client.remove(image.id).subscribe({\n next: () => {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.deleteStatus(uid);\n this.onChange(this.value());\n },\n error: () => {\n // Removal failed: restore whatever status the image had before\n // (normally 'ok' or 'fallido'), rather than leaving it stuck on\n // 'subiendo' with no way out.\n if (previousStatus) {\n this.setStatus(uid, previousStatus);\n } else {\n this.deleteStatus(uid);\n }\n }\n });\n } else {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.deleteStatus(uid);\n this.onChange(this.value());\n }\n }\n\n dragstart(event: DragEvent, index: number) {\n this.renderer.setStyle(event.target, 'opacity', 0.4);\n event.dataTransfer.dropEffect = 'move';\n this._fromIndex = index;\n }\n\n /**\n * Shared by every drop target (thumbnails, the `cover` node — index 0 —\n * and the plain drop zones). `event.dataTransfer.types` never carries\n * `'Files'` for the internal reorder drag (it writes nothing to the\n * clipboard today), so that check alone tells the external-file drop and\n * the reorder drag apart without a separate state flag.\n */\n dragover(event: DragEvent, index: number) {\n event.preventDefault();\n if (this.isFileDrag(event)) {\n this.dragActive.set(true);\n return;\n }\n this._toIndex = index;\n }\n\n dragleave(event: DragEvent) {\n if (this.isFileDrag(event)) {\n this.dragActive.set(false);\n }\n }\n\n dragend(event: DragEvent) {\n this.renderer.setStyle(event.target, 'opacity', 1);\n }\n\n drop(event: DragEvent) {\n event.stopPropagation();\n if (this.isFileDrag(event)) {\n event.preventDefault();\n this.dragActive.set(false);\n this.addDroppedFile(event.dataTransfer.files);\n return;\n }\n this.dragActive.set(false);\n if (this._fromIndex !== this._toIndex) {\n const images = [...this.images];\n const element = images[this._fromIndex];\n images.splice(this._fromIndex, 1);\n images.splice(this._toIndex, 0, element);\n this.value.set(images);\n this.onChange(this.value());\n }\n }\n\n private isFileDrag(event: DragEvent): boolean {\n return !!event.dataTransfer?.types?.includes('Files');\n }\n\n private isAcceptedFile(file: File): boolean {\n const patterns = this.accept()\n .split(',')\n .map((pattern) => pattern.trim().toLowerCase())\n .filter(Boolean);\n if (!patterns.length) {\n return true;\n }\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return patterns.some((pattern) => {\n if (pattern.startsWith('.')) {\n return name.endsWith(pattern);\n }\n if (pattern.endsWith('/*')) {\n return type.startsWith(pattern.slice(0, -1));\n }\n return type === pattern;\n });\n }\n\n private addDroppedFile(files: FileList | null): void {\n if (!this.multi()) {\n // Kept byte-for-byte identical to the pre-AVF-16 single-file check:\n // only the raw first dropped file is ever considered, exactly as\n // before. The multi-file/limit pipeline below is new behaviour and\n // must not change this path (AVF-16, criterio \"sin regresión\").\n const file = files?.item(0);\n if (!file || !this.isAcceptedFile(file)) {\n return;\n }\n this.add(NsFile.parse(file));\n this.onTouched();\n return;\n }\n const accepted = Array.from(files ?? []).filter((file) =>\n this.isAcceptedFile(file)\n );\n if (this.enqueueFiles(accepted) > 0) {\n this.onTouched();\n }\n }\n\n /**\n * Accepts as many of `files` as fit under `limit()`, all at once, and\n * reports the rest inline. `limit()` is evaluated once here, against\n * `this.images.length` as it stands *before* any of this batch's\n * `add()` calls run — never inside a per-file callback, where it would\n * lag behind sibling files whose `FileReader`/upload hasn't resolved yet\n * and let more through than actually fit (AVF-16).\n *\n * Returns how many files were actually enqueued, so callers can decide\n * whether to mark the control touched.\n */\n private enqueueFiles(files: File[]): number {\n if (!files.length) {\n return 0;\n }\n if (!this.multi()) {\n this.limitWarning.set(null);\n this.add(NsFile.parse(files[0]));\n return 1;\n }\n const room = Math.max(0, this.limit() - this.images.length);\n const accepted = files.slice(0, room);\n const rejected = files.length - accepted.length;\n this.limitWarning.set(\n rejected > 0 ? this.buildLimitWarning(room, rejected) : null\n );\n accepted.forEach((file) => this.add(NsFile.parse(file)));\n return accepted.length;\n }\n\n private buildLimitWarning(room: number, rejected: number): string {\n const rejectedPhrase =\n rejected === 1 ? '1 no se añadió' : `${rejected} no se añadieron`;\n if (room <= 0) {\n return `Ya alcanzaste el límite de fotos; ${rejectedPhrase}`;\n }\n const roomPhrase = room === 1 ? 'cabe 1 foto' : `caben ${room} fotos`;\n return `Solo ${roomPhrase}; ${rejectedPhrase}`;\n }\n}\n","@if (layout() === 'cover') {\n <div class=\"ns-image-upload__wrap ns-image-upload__wrap--cover\">\n @if (!images.length) {\n <div\n class=\"ns-image-upload__cover-empty\"\n [class.ns-image-upload__cover-empty--dragging]=\"dragActive()\"\n (dragover)=\"dragover($event, 0)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <div class=\"ns-image-upload__cover-empty-icon\">\n <ns-icon name=\"image\" />\n </div>\n <p class=\"ns-image-upload__cover-empty-title\">\n Arrastra tus fotos aquí\n </p>\n <p class=\"ns-image-upload__cover-empty-subtitle\">\n PNG o JPG, hasta 10MB cada una\n </p>\n <ns-button\n type=\"button\"\n variant=\"dark\"\n size=\"sm\"\n [disabled]=\"disabled()\"\n (click)=\"onClick()\"\n >\n Subir fotos\n </ns-button>\n </div>\n } @else {\n <div\n class=\"ns-image-upload__cover-grid\"\n [style.--ns-image-upload-rows]=\"reservedRows()\"\n >\n <div\n class=\"ns-image-upload__cover\"\n tabindex=\"0\"\n [attr.aria-label]=\"'Esta imagen es la portada del producto'\"\n [class.ns-image-upload__cover--dragging]=\"dragActive()\"\n [class.ns-image-upload__cover--loading]=\"\n statusOf(images[0]) === 'subiendo'\n \"\n [class.ns-image-upload__cover--failed]=\"\n statusOf(images[0]) === 'fallido'\n \"\n (dragover)=\"dragover($event, 0)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <img\n class=\"ns-image-upload__cover-image\"\n [attr.src]=\"images[0] | nsImageUrl\"\n [attr.alt]=\"images[0].name\"\n />\n @if (statusOf(images[0]) === 'subiendo') {\n <div class=\"ns-image-upload__status-overlay\">\n <ns-icon name=\"loader-circle\" />\n </div>\n } @else if (statusOf(images[0]) === 'fallido') {\n <button\n type=\"button\"\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Reintentar subir la portada'\"\n (click)=\"retry(images[0]); $event.stopPropagation()\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\"\n >Reintentar</span\n >\n </button>\n }\n <span class=\"ns-image-upload__badge\">Portada</span>\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__cover-remove\"\n [disabled]=\"disabled() || statusOf(images[0]) === 'subiendo'\"\n [attr.aria-label]=\"'Eliminar portada'\"\n (click)=\"remove(images[0]); $event.stopPropagation()\"\n >\n <ns-icon name=\"x\" size=\"14\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n\n <div class=\"ns-image-upload__stack\">\n @for (image of images.slice(1); track uidOf(image); let i = $index) {\n <div\n class=\"ns-image-upload__thumbnail\"\n tabindex=\"0\"\n [draggable]=\"!disabled() && images.length > 1\"\n [class.ns-image-upload__thumbnail--loading]=\"\n statusOf(image) === 'subiendo'\n \"\n [class.ns-image-upload__thumbnail--failed]=\"\n statusOf(image) === 'fallido'\n \"\n (dragstart)=\"dragstart($event, i + 1)\"\n (dragend)=\"dragend($event)\"\n (dragover)=\"dragover($event, i + 1)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <img\n class=\"ns-image-upload__thumbnail-image\"\n [attr.src]=\"image | nsImageUrl\"\n [attr.alt]=\"image.name\"\n />\n @if (statusOf(image) === 'subiendo') {\n <div class=\"ns-image-upload__status-overlay\">\n <ns-icon name=\"loader-circle\" />\n </div>\n } @else if (statusOf(image) === 'fallido') {\n <button\n type=\"button\"\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Reintentar subir imagen ' + (i + 2)\"\n (click)=\"retry(image); $event.stopPropagation()\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\"\n >Reintentar</span\n >\n </button>\n }\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__thumbnail-remove\"\n [disabled]=\"disabled() || statusOf(image) === 'subiendo'\"\n [attr.aria-label]=\"'Eliminar imagen ' + (i + 2)\"\n (click)=\"remove(image); $event.stopPropagation()\"\n >\n <ns-icon name=\"x\" size=\"14\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n }\n @if (images.length < limit()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__add\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Explorar archivos para añadir más fotos'\"\n (click)=\"onClick()\"\n >\n <ns-icon name=\"image-plus\" />\n <span class=\"ns-image-upload__add-title\">Añadir más</span>\n <span class=\"ns-image-upload__add-subtitle\"\n >o explora tus archivos</span\n >\n </button>\n }\n </div>\n </div>\n }\n\n @if (limitWarning(); as warning) {\n <p class=\"ns-image-upload__limit-warning\" role=\"status\">{{ warning }}</p>\n }\n\n <input\n [hidden]=\"true\"\n type=\"file\"\n (change)=\"load()\"\n [multiple]=\"multi()\"\n [accept]=\"accept()\"\n #input\n [disabled]=\"disabled()\"\n />\n </div>\n} @else {\n <div\n class=\"ns-image-upload__wrap\"\n [ngClass]=\"{ 'ns-image-upload__wrap--multiple': multi() && images.length }\"\n >\n @if (multi()) {\n @for (image of images; let i = $index; track uidOf(image)) {\n <div\n class=\"ns-image-upload__thumbnail\"\n [draggable]=\"!disabled() && images.length > 1\"\n (dragstart)=\"dragstart($event, i)\"\n (dragend)=\"dragend($event)\"\n (dragover)=\"dragover($event, i)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <button\n type=\"button\"\n class=\"ns-image-upload__button ns-image-upload__button--upload\"\n (click)=\"statusOf(image) === 'fallido' ? retry(image) : onClick()\"\n [ngClass]=\"{\n 'ns-image-upload__button--loading':\n statusOf(image) === 'subiendo',\n 'ns-image-upload__button--failed': statusOf(image) === 'fallido'\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"\n statusOf(image) === 'fallido'\n ? 'Reintentar subir ' + image.name\n : label()\n \"\n >\n <img\n class=\"ns-image-upload__preview\"\n [attr.src]=\"image | nsImageUrl\"\n [attr.alt]=\"image.name\"\n />\n <ns-icon class=\"ns-image-upload__preload\" name=\"loader-circle\" />\n\n @if (statusOf(image) === 'fallido') {\n <div\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\"\n >Reintentar</span\n >\n </div>\n }\n\n <div class=\"ns-image-upload__overlay\">\n <ns-icon class=\"ns-image-upload__drag\" name=\"grip\" />\n </div>\n </button>\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__remove\"\n [disabled]=\"disabled() || statusOf(image) === 'subiendo'\"\n [attr.aria-label]=\"'Eliminar imagen: ' + image.name\"\n (click)=\"remove(image); $event.stopPropagation()\"\n >\n <ns-icon name=\"trash-2\" />\n </button>\n }\n </div>\n }\n }\n\n <button\n type=\"button\"\n class=\"ns-image-upload__drag-container\"\n (click)=\"onDragContainerClick()\"\n (dragover)=\"dragover($event, images.length)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n [ngClass]=\"{\n 'ns-image-upload__drag-container--loading':\n image && !multi() && statusOf(image) === 'subiendo',\n 'ns-image-upload__drag-container--dragging': dragActive()\n }\"\n [attr.aria-label]=\"\n singleFailed ? 'Reintentar subir ' + image?.name : null\n \"\n [hidden]=\"multi() && images.length >= limit()\"\n [disabled]=\"disabled()\"\n >\n @if (!multi() && image; as img) {\n <img\n class=\"ns-image-upload__fluid\"\n [attr.src]=\"img | nsImageUrl\"\n [ngClass]=\"{ 'ns-image-upload__fluid--disabled': disabled() }\"\n alt\n />\n @if (statusOf(img) === 'fallido') {\n <div\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\">Reintentar</span>\n </div>\n }\n }\n\n @if (!image || multi()) {\n <div class=\"ns-image-upload__empty\">\n <ns-icon name=\"image\" />\n <span>{{ label() }}</span>\n </div>\n }\n\n <input\n [hidden]=\"true\"\n type=\"file\"\n (change)=\"load()\"\n [multiple]=\"multi()\"\n [accept]=\"accept()\"\n #input\n [disabled]=\"disabled()\"\n />\n </button>\n\n @if (limitWarning(); as warning) {\n <p class=\"ns-image-upload__limit-warning\" role=\"status\">{{ warning }}</p>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-link',\n standalone: true,\n template: `\n <a\n class=\"ns-link__anchor\"\n [href]=\"disabled() ? null : href()\"\n [target]=\"target() || null\"\n [rel]=\"rel() || null\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n (click)=\"onClick($event)\"\n ><ng-content\n /></a>\n `,\n styleUrl: './link.component.scss',\n host: {\n '[class.ns-link]': 'true',\n '[class.ns-link--disabled]': 'disabled()',\n '[class.ns-link--neutral]': \"color() === 'neutral'\",\n '[class.ns-link--primary]': \"color() === 'primary'\",\n '[class.ns-link--success]': \"color() === 'success'\",\n '[class.ns-link--warning]': \"color() === 'warning'\",\n '[class.ns-link--danger]': \"color() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsLinkComponent {\n readonly href = input<string>('');\n readonly target = input<'_self' | '_blank' | '_parent' | '_top' | ''>('');\n readonly rel = input<string>('');\n readonly color = input<NsColor>('primary');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-menu-item',\n standalone: true,\n template: `\n <span class=\"ns-menu-item__icon\"\n ><ng-content select=\"[menu-item-icon]\"\n /></span>\n <span class=\"ns-menu-item__label\"><ng-content /></span>\n `,\n styleUrl: './menu-item.component.scss',\n host: {\n role: 'menuitem',\n '[class.ns-menu-item]': 'true',\n '[class.ns-menu-item--disabled]': 'disabled()',\n '[class.ns-menu-item--neutral]': \"color() === 'neutral'\",\n '[class.ns-menu-item--primary]': \"color() === 'primary'\",\n '[class.ns-menu-item--success]': \"color() === 'success'\",\n '[class.ns-menu-item--warning]': \"color() === 'warning'\",\n '[class.ns-menu-item--danger]': \"color() === 'danger'\",\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.tabindex]': 'disabled() ? null : active() ? 0 : -1',\n '(click)': 'activate()',\n '(keydown.enter)': 'activate()',\n '(keydown.space)': 'onSpace($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuItemComponent {\n private readonly element = inject(ElementRef<HTMLElement>);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly color = input<NsColor>('neutral');\n readonly activated = output<void>();\n\n /** Roving-tabindex state, driven by the parent `ns-menu`. */\n readonly active = signal(false);\n\n activate(): void {\n if (this.disabled()) {\n return;\n }\n this.activated.emit();\n }\n\n onSpace(event: Event): void {\n event.preventDefault();\n this.activate();\n }\n\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport { getNsNextNavigableIndex, NsNavigationKey } from '../a11y';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsMenuItemComponent } from './menu-item.component';\n\nconst NAVIGATION_KEYS: readonly string[] = [\n 'ArrowDown',\n 'ArrowUp',\n 'Home',\n 'End'\n];\n\n/**\n * Action menu anchored to an origin element, built on `NsOverlayService`\n * (the same placement/dismiss/focus-trap mechanism as `ns-popover`). Items\n * are plain projected content (`ns-menu-item`, optionally grouped inside\n * `ns-menu-section`), so the menu drives a roving tabindex across them and\n * closes itself once one is activated.\n */\n@Component({\n selector: 'ns-menu',\n standalone: true,\n template: `\n <div class=\"ns-menu__header\"><ng-content select=\"[menu-header]\" /></div>\n <ng-content />\n `,\n styleUrl: './menu.component.scss',\n host: {\n role: 'menu',\n '[class.ns-menu]': 'true',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-hidden]': '!open()',\n '[attr.data-state]': \"open() ? 'open' : 'closed'\",\n '(keydown)': 'onKeydown($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuComponent implements AfterViewInit, OnDestroy {\n readonly open = model(false);\n readonly origin = input.required<HTMLElement>();\n readonly placement = input<NsPlacement>('bottom-start');\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly closed = output<NsOverlayCloseReason>();\n\n readonly items = contentChildren(NsMenuItemComponent, { descendants: true });\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n private activeIndex = -1;\n\n constructor() {\n effect(() => {\n const open = this.open();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => this.syncActiveItem(this.items()));\n effect((onCleanup) => {\n const subscriptions = this.items().map((item) =>\n item.activated.subscribe(() => this.handleItemSelect())\n );\n onCleanup(() =>\n subscriptions.forEach((subscription) => subscription.unsubscribe())\n );\n });\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.open()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n close(): void {\n this.open.set(false);\n }\n\n onKeydown(event: KeyboardEvent): void {\n const items = this.items();\n if (!items.length || !NAVIGATION_KEYS.includes(event.key)) {\n return;\n }\n const next = getNsNextNavigableIndex(\n items.map((item) => ({ key: 0, disabled: item.disabled() })),\n this.activeIndex,\n event.key as NsNavigationKey,\n 'vertical'\n );\n if (next >= 0 && next !== this.activeIndex) {\n event.preventDefault();\n this.focusItem(items, next);\n }\n }\n\n private handleItemSelect(): void {\n this.open.set(false);\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n origin: this.origin(),\n placement: this.placement(),\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n trapFocus: true,\n restoreFocus: true\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.open()) {\n this.open.set(false);\n }\n this.closed.emit(reason);\n });\n }\n\n private syncActiveItem(items: readonly NsMenuItemComponent[]): void {\n if (!items.length) {\n this.activeIndex = -1;\n return;\n }\n if (\n this.activeIndex < 0 ||\n this.activeIndex >= items.length ||\n items[this.activeIndex].disabled()\n ) {\n this.activeIndex = items.findIndex((item) => !item.disabled());\n }\n items.forEach((item, index) => item.active.set(index === this.activeIndex));\n }\n\n private focusItem(\n items: readonly NsMenuItemComponent[],\n index: number\n ): void {\n this.activeIndex = index;\n items.forEach((item, i) => item.active.set(i === index));\n items[index]?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Visual separator between `ns-menu-item` groups. Consumers who prefer the\n * native element can also write `<hr ns-menu-divider>` directly; both forms\n * resolve to the same host styling.\n */\n@Component({\n selector: 'ns-menu-divider, hr[ns-menu-divider]',\n standalone: true,\n template: '',\n styleUrl: './menu-divider.component.scss',\n host: {\n role: 'separator',\n '[class.ns-menu-divider]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuDividerComponent {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-menu-section',\n standalone: true,\n template: `\n @if (label()) {\n <p class=\"ns-menu-section__label\">{{ label() }}</p>\n }\n <ng-content />\n `,\n styleUrl: './menu-section.component.scss',\n host: {\n role: 'group',\n '[class.ns-menu-section]': 'true',\n '[attr.aria-label]': 'label() || null'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuSectionComponent {\n readonly label = input<string | undefined>(undefined);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-meter',\n standalone: true,\n template:\n '<span class=\"ns-meter__value\" [style.inline-size.%]=\"percentage()\"></span>',\n styleUrl: './meter.component.scss',\n host: {\n role: 'meter',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuenow]': 'value()',\n '[class.ns-meter]': 'true',\n '[class.ns-meter--neutral]': \"color() === 'neutral'\",\n '[class.ns-meter--primary]': \"color() === 'primary'\",\n '[class.ns-meter--success]': \"color() === 'success'\",\n '[class.ns-meter--warning]': \"color() === 'warning'\",\n '[class.ns-meter--danger]': \"color() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMeterComponent {\n readonly value = input(0, { transform: numberAttribute });\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly ariaLabel = input<string>('Meter');\n readonly color = input<NsColor>('primary');\n readonly percentage = computed(() => {\n const range = this.max() - this.min();\n if (range <= 0) return 0;\n return Math.min(\n 100,\n Math.max(0, ((this.value() - this.min()) / range) * 100)\n );\n });\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n effect,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsModalSize } from './interfaces/modal-config';\n\n@Component({\n selector: 'ns-modal',\n standalone: true,\n imports: [CommonModule, NsIconsComponent],\n template: `\n <div class=\"ns-modal__backdrop\" aria-hidden=\"true\"></div>\n <section\n #dialog\n class=\"ns-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"title() || null\"\n [class.ns-modal__dialog--sm]=\"size() === 'sm'\"\n [class.ns-modal__dialog--lg]=\"size() === 'lg'\"\n [class.ns-modal__dialog--xl]=\"size() === 'xl'\"\n tabindex=\"-1\"\n >\n <header class=\"ns-modal__header\">\n <div class=\"ns-modal__heading\">\n @if (title()) {\n <h2 class=\"ns-modal__title\">{{ title() }}</h2>\n }\n <ng-content select=\"[modal-description]\" />\n </div>\n <button\n class=\"ns-modal__close\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"close()\"\n >\n <ns-icon name=\"x\" size=\"18\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"ns-modal__body\">\n @if (contentComponent()) {\n <ng-template #contentHost />\n } @else {\n <ng-content />\n }\n </div>\n <footer class=\"ns-modal__footer\">\n <ng-content select=\"[modal-footer]\" />\n </footer>\n </section>\n `,\n styleUrl: './modal.component.scss',\n host: {\n '[class.ns-modal]': 'true',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsModalComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly title = input('');\n readonly size = input<NsModalSize>('md');\n readonly closeLabel = input('Close modal');\n readonly closeOnEscape = input(true);\n readonly closed = output<NsOverlayCloseReason>();\n\n readonly contentComponent = input<Type<object> | null>(null);\n readonly contentInputs = input<Record<string, unknown>>({});\n readonly closeReason = signal<NsOverlayCloseReason | undefined>(undefined);\n\n @ViewChild('contentHost', { read: ViewContainerRef })\n private contentHost?: ViewContainerRef;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private contentRef?: ComponentRef<object>;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => this.createContent());\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n this.createContent();\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n this.contentRef?.destroy();\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n getContent<T extends object>(): T {\n if (!this.contentRef) {\n throw new Error('Modal content could not be created.');\n }\n return this.contentRef.instance as T;\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: false,\n trapFocus: true,\n restoreFocus: true,\n inert: true,\n lockScroll: true\n });\n overlayRef.portal.classList.add('ns-modal__portal');\n overlayRef.portal.style.inset = '0';\n overlayRef.portal.style.border = '0';\n overlayRef.portal.style.borderRadius = '0';\n overlayRef.portal.style.background = 'transparent';\n overlayRef.portal.style.boxShadow = 'none';\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n this.closeReason.set(reason);\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n\n private createContent(): void {\n const component = this.contentComponent();\n if (\n !this.viewInitialized ||\n !component ||\n !this.contentHost ||\n this.contentRef\n ) {\n return;\n }\n this.contentRef = this.contentHost.createComponent(component);\n for (const [name, value] of Object.entries(this.contentInputs())) {\n this.contentRef.setInput(name, value);\n }\n }\n}\n","import { ComponentRef, Signal } from '@angular/core';\nimport { NsOverlayCloseReason } from '../../overlay';\nimport { NsModalComponent } from '../modal.component';\n\n/** A programmatically opened modal and its typed content instance. */\nexport class NsModalRef<T> {\n constructor(\n private readonly componentRef: ComponentRef<NsModalComponent>,\n readonly content: T,\n readonly closed: Signal<NsOverlayCloseReason | undefined>\n ) {}\n\n close(): void {\n this.componentRef.instance.close();\n }\n}\n","import {\n ApplicationRef,\n EnvironmentInjector,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\nimport { NsModalConfig } from '../interfaces/modal-config';\nimport { NsModalComponent } from '../modal.component';\nimport { NsModalRef } from '../models/modal-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class NsModalService {\n private readonly applicationRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n open<T extends object>(config: NsModalConfig<T>): NsModalRef<T> {\n const componentRef = createComponent(NsModalComponent, {\n environmentInjector: this.environmentInjector\n });\n componentRef.setInput('title', config.title ?? '');\n componentRef.setInput('size', config.size ?? 'md');\n componentRef.setInput('closeOnEscape', config.closeOnEscape ?? true);\n componentRef.setInput('contentComponent', config.component);\n componentRef.setInput('contentInputs', config.inputs ?? {});\n this.applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n componentRef.instance.isOpen.set(true);\n\n const modalRef = new NsModalRef(\n componentRef,\n componentRef.instance.getContent<T>(),\n componentRef.instance.closeReason\n );\n componentRef.instance.closed.subscribe(() => {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return modalRef;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n output\n} from '@angular/core';\nimport { NsButtonComponent } from '../button/button.component';\n\n/**\n * Companion to `ns-pagination` for feeds that grow with a \"load more\" action\n * instead of numbered pages. Kept as a separate component because its\n * template (a status line plus a single button) has nothing in common with\n * `ns-pagination`'s page-number navigation.\n */\n@Component({\n selector: 'ns-load-more',\n standalone: true,\n imports: [NsButtonComponent],\n template: `\n <p class=\"ns-load-more__status\">{{ statusText() }}</p>\n @if (hasMore()) {\n <ns-button\n class=\"ns-load-more__action\"\n type=\"button\"\n variant=\"secondary\"\n [loading]=\"loading()\"\n (click)=\"loadMore.emit()\"\n >\n {{ loadMoreLabel() }}\n </ns-button>\n }\n `,\n styleUrl: './load-more.component.scss',\n host: { '[class.ns-load-more]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsLoadMoreComponent {\n readonly shown = input.required<number>();\n readonly total = input.required<number>();\n readonly label = input<string>('Mostrando {shown} de {total} resultados');\n readonly loadMoreLabel = input<string>('Cargar más');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadMore = output<void>();\n\n readonly hasMore = computed(() => this.shown() < this.total());\n readonly statusText = computed(() =>\n this.label()\n .replace('{shown}', String(this.shown()))\n .replace('{total}', String(this.total()))\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model\n} from '@angular/core';\n\n@Component({\n selector: 'ns-pagination',\n standalone: true,\n template: `\n <nav class=\"ns-pagination__navigation\" aria-label=\"Pagination\">\n <button\n class=\"ns-pagination__control\"\n type=\"button\"\n (click)=\"goTo(page() - 1)\"\n [disabled]=\"page() <= 1\"\n >\n Previous\n </button>\n @for (item of pages(); track item) {\n <button\n class=\"ns-pagination__control\"\n type=\"button\"\n [class.ns-pagination__control--current]=\"item === page()\"\n [attr.data-current]=\"item === page()\"\n [attr.aria-current]=\"item === page() ? 'page' : null\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n }\n <button\n class=\"ns-pagination__control\"\n type=\"button\"\n (click)=\"goTo(page() + 1)\"\n [disabled]=\"page() >= pageCount()\"\n >\n Next\n </button>\n </nav>\n `,\n styleUrls: ['./pagination.component.scss'],\n host: { '[class.ns-pagination]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsPaginationComponent {\n readonly total = input.required<number>();\n readonly pageSize = input(10);\n readonly siblingCount = input(1);\n readonly page = model(1);\n readonly pageCount = computed(() =>\n Math.max(\n 1,\n Math.ceil(Math.max(0, this.total()) / Math.max(1, this.pageSize()))\n )\n );\n readonly pages = computed(() => {\n const count = this.pageCount();\n const current = Math.min(Math.max(1, this.page()), count);\n const start = Math.max(1, current - this.siblingCount());\n const end = Math.min(count, current + this.siblingCount());\n return Array.from({ length: end - start + 1 }, (_, index) => start + index);\n });\n\n goTo(page: number): void {\n this.page.set(Math.min(Math.max(1, page), this.pageCount()));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\n\n@Component({\n selector: 'ns-popover',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './popover.component.scss',\n host: {\n role: 'dialog',\n '[class.ns-popover]': 'true',\n '[attr.aria-modal]': 'false',\n '[attr.aria-hidden]': '!isOpen()',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsPopoverComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly origin = input.required<HTMLElement>();\n readonly placement = input<NsPlacement>('bottom-start');\n readonly closeOnEscape = input(true);\n readonly closed = output<NsOverlayCloseReason>();\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n origin: this.origin(),\n placement: this.placement(),\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: true,\n trapFocus: false,\n restoreFocus: false\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-progress-bar',\n standalone: true,\n template:\n '<span class=\"ns-progress-bar__value\" [style.inline-size.%]=\"percentage()\"></span>',\n styleUrl: './progress-bar.component.scss',\n host: {\n role: 'progressbar',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuenow]': 'indeterminate() ? null : value()',\n '[attr.aria-busy]': 'indeterminate() || null',\n '[class.ns-progress-bar]': 'true',\n '[class.ns-progress-bar--indeterminate]': 'indeterminate()',\n '[class.ns-progress-bar--neutral]': \"color() === 'neutral'\",\n '[class.ns-progress-bar--primary]': \"color() === 'primary'\",\n '[class.ns-progress-bar--success]': \"color() === 'success'\",\n '[class.ns-progress-bar--warning]': \"color() === 'warning'\",\n '[class.ns-progress-bar--danger]': \"color() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsProgressBarComponent {\n readonly value = input(0, { transform: numberAttribute });\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('Progress');\n readonly color = input<NsColor>('primary');\n readonly percentage = computed(() => {\n const range = this.max() - this.min();\n if (range <= 0 || this.indeterminate()) return 0;\n return Math.min(\n 100,\n Math.max(0, ((this.value() - this.min()) / range) * 100)\n );\n });\n}\n","export class NsSchedule {\n public id: number;\n public subject: string;\n public body: string;\n public startTime: string;\n public endTime: string;\n public created: string;\n public updated: string;\n\n constructor(props: Partial<NsSchedule> = {}) {\n Object.assign(this, props);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NsSchedule } from '../models/schedule';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsScheduleService {\n public readonly onClick$: Subject<NsSchedule> = new Subject<NsSchedule>();\n private _date: Date;\n\n constructor() {}\n\n setCurrentDate(date) {\n this._date = date;\n }\n\n get currentDate() {\n return this._date;\n }\n\n send(schedule: Partial<NsSchedule>) {\n this.onClick$.next(new NsSchedule(schedule));\n }\n\n formatDate(date: Date) {\n const pad = (num) => ('00' + num).slice(-2);\n return (\n date.getFullYear() +\n '-' +\n pad(date.getMonth() + 1) +\n '-' +\n pad(date.getDate()) +\n ' ' +\n pad(date.getHours()) +\n ':' +\n pad(date.getMinutes()) +\n ':' +\n pad(date.getSeconds())\n );\n }\n}\n","import { Component, HostListener, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n@Component({\n selector: 'ns-schedule-cell',\n template: '',\n standalone: true,\n host: {\n '[class.ns-schedule__timeline-cell]': 'true'\n }\n})\nexport class NsScheduleCellComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly day = input<number>(undefined);\n readonly timeline = input<number>(undefined);\n readonly startIn = input<number>(undefined);\n readonly endIn = input<number>(undefined);\n\n ngOnInit(): void {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const startTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.startIn()\n );\n const endTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.endIn()\n );\n\n this.service.send({\n startTime: this.service.formatDate(startTime),\n endTime: this.service.formatDate(endTime)\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nsWeekday',\n standalone: true\n})\nexport class WeekDayPipe implements PipeTransform {\n private weekdays: string[] = [\n 'Domingo',\n 'Lunes',\n 'Martes',\n 'Miércoles',\n 'Jueves',\n 'Viernes',\n 'Sábado'\n ];\n\n transform(day: number): string {\n return this.weekdays[day];\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { NsSchedule } from '../models/schedule';\nimport { notEmpty } from '@ng-solid/core';\nimport { NsScheduleService } from '../services/schedule.service';\n\n@Pipe({\n name: 'filterByDay',\n standalone: true\n})\nexport class FilterByDayPipe implements PipeTransform {\n private service = inject(NsScheduleService);\n\n transform(schedules: NsSchedule[], day: number): NsSchedule[] {\n const current = this.service.currentDate;\n const selector = ({ startTime }: NsSchedule) => {\n const date = new Date(startTime);\n return (\n day === date.getDate() &&\n current.getMonth() === date.getMonth() &&\n current.getFullYear() === date.getFullYear()\n );\n };\n return notEmpty(schedules) ? schedules.filter(selector) : [];\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n HostListener,\n inject,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n// Fallback for `--ns-component-schedule-slot-height` (mirrors the\n// `min-height` of `.ns-schedule__timeline-day`): used when the token is\n// missing, e.g. in tests or SSR where `provideNsTheme` never ran and the\n// custom property resolves empty.\nconst SLOT_CONTENT_HEIGHT_PX = 96;\n// Shared border between consecutive timeline rows — comes from the\n// `@apply border` on `.ns-schedule__timeline-day` (Tailwind's default border\n// width), not from a theme token.\nconst SLOT_SEAM_PX = 1;\n\n@Component({\n selector: 'ns-schedule-event',\n templateUrl: './event.component.html',\n styleUrls: ['./event.component.scss'],\n host: {\n '[class.ns-schedule__event]': 'true',\n '[class.ns-schedule__event--show]': 'schedule() && matchHour',\n '[style.height.px]': 'height'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class NsScheduleEventComponent implements AfterContentInit {\n readonly schedule = input<NsSchedule>(undefined);\n readonly timeline = input<number>(undefined);\n\n public height: number;\n private service = inject(NsScheduleService);\n private elementRef = inject(ElementRef<HTMLElement>);\n\n get matchHour() {\n const schedule = this.schedule();\n return (\n !!schedule && new Date(schedule.startTime).getHours() === this.timeline()\n );\n }\n\n ngAfterContentInit() {\n const schedule = this.schedule();\n if (schedule) {\n const startTime = new Date(schedule.startTime);\n const endTime = new Date(schedule.endTime);\n const hours = Math.abs(startTime.getTime() - endTime.getTime()) / 36e5;\n const slot = parseFloat(\n getComputedStyle(this.elementRef.nativeElement).getPropertyValue(\n '--ns-component-schedule-slot-height'\n )\n );\n const slotHeight =\n Number.isNaN(slot) || slot <= 0 ? SLOT_CONTENT_HEIGHT_PX : slot;\n this.height = Math.max(\n slotHeight * hours + SLOT_SEAM_PX * (hours - 1),\n slotHeight / 2\n );\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const schedule = this.schedule();\n if (schedule) {\n this.service.send(schedule);\n }\n }\n}\n","@if (schedule(); as currentSchedule) {\n <span class=\"ns-schedule__event-subject\">{{ currentSchedule.subject }}</span>\n <div class=\"ns-schedule__event-body\" [innerHtml]=\"currentSchedule.body\"></div>\n}\n","import { Component, effect, inject, OnInit, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-day',\n templateUrl: './day.component.html',\n imports: [\n NsScheduleCellComponent,\n WeekDayPipe,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n styleUrl: './day.component.scss'\n})\nexport class DayComponent implements OnInit {\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n public current: number;\n public first: number;\n public days: number[];\n public hours: number[];\n private service = inject(NsScheduleService);\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.current = date.getDate();\n this.first = date.getDate() - date.getDay();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((x, y) => x + y);\n this.service.setCurrentDate(date);\n }\n });\n\n ngOnInit(): void {\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n <div class=\"ns-schedule__header ns-schedule__selected\">\n <div class=\"ns-schedule__header-date\">{{ current }}</div>\n <div class=\"ns-schedule__header-day\">\n {{ days.indexOf(current) | nsWeekday }}\n </div>\n </div>\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n <div class=\"ns-schedule__timeline-day ns-schedule__selected\">\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: current; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-week',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n templateUrl: './week.component.html',\n styleUrl: './week.component.scss',\n standalone: true\n})\nexport class WeekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public currentDay: number;\n public first: number;\n public last: number;\n public days: number[];\n public hours: number[];\n\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay();\n this.last = this.first + 6;\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n 0\n ).getDate();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((day, index) => (day > 0 ? day + index : lastDayOfPrevMonth--));\n }\n });\n\n get current() {\n return this.service.currentDate;\n }\n\n ngOnInit(): void {\n this.currentDay = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: day; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { NsScheduleEventComponent } from '../event/event.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\n\n@Component({\n selector: 'ns-schedule-workweek',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n NsScheduleEventComponent,\n FilterByDayPipe\n ],\n templateUrl: './workweek.component.html',\n styleUrl: './workweek.component.scss',\n standalone: true\n})\nexport class NsWorkweekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public current: number;\n public first: number;\n public last: number;\n public days: number[] = [];\n public hours: number[];\n private DAYS_OF_WORKWEEK: number = 5;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay() + 1;\n this.last = this.first + 4;\n this.days = [];\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n -1\n ).getDate();\n\n let current = 0;\n while (current < this.DAYS_OF_WORKWEEK) {\n this.days.push(this.first < 1 ? lastDayOfPrevMonth : this.first);\n this.first++;\n lastDayOfPrevMonth--;\n current++;\n }\n }\n });\n\n identityDay = (index, item: NsSchedule) => item.id;\n\n ngOnInit(): void {\n this.current = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i + 1 | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (\n schedule of schedules() | filterByDay: day;\n track identityDay($index, schedule)\n ) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import {\n Component,\n inject,\n ViewEncapsulation,\n input,\n model\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { NsScheduleService } from './services/schedule.service';\nimport { NsSchedule } from './models/schedule';\nimport { NsDateView } from '../../types';\nimport { NsButtonComponent } from '../button';\nimport { NsDatePickerComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\nimport { DateValue, getLocalTimeZone, today } from '@internationalized/date';\n\nimport { DayComponent } from './components/day/day.component';\nimport { WeekComponent } from './components/week/week.component';\nimport { NsWorkweekComponent } from './components/workweek/workweek.component';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../form/components/dropdown';\n\n@Component({\n selector: 'ns-schedule',\n imports: [\n NsButtonComponent,\n FormsModule,\n DayComponent,\n WeekComponent,\n NsWorkweekComponent,\n NsDatePickerComponent,\n NsDropdownComponent,\n NsDropdownItemDirective\n ],\n templateUrl: './schedule.component.html',\n styleUrls: ['./schedule.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-schedule]': 'true'\n }\n})\nexport class NsScheduleComponent {\n readonly view = model<NsDateView>('workweek');\n readonly selected = model<Date>(new Date());\n readonly selectedDay = model<DateValue>(today(getLocalTimeZone()));\n readonly height = input<number>(520);\n readonly data = input<NsSchedule[]>(undefined);\n private readonly service = inject(NsScheduleService);\n readonly onClick = outputFromObservable(this.service.onClick$);\n\n goToday(): void {\n const date = today(getLocalTimeZone());\n this.selectedDay.set(date);\n this.selected.set(new Date(date.year, date.month - 1, date.day));\n }\n\n selectDate(date: DateValue): void {\n this.selectedDay.set(date);\n this.selected.set(new Date(date.year, date.month - 1, date.day));\n }\n}\n","<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-schedule__today\" (click)=\"goToday()\">Hoy</ns-button>\n\n <ns-date-picker\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"selectDate($event)\"\n />\n\n <ns-dropdown\n class=\"ns-schedule__view\"\n [searchable]=\"false\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-dropdown-item label=\"Day\" key=\"day\" />\n <ns-dropdown-item label=\"Work week\" key=\"workweek\" />\n <ns-dropdown-item label=\"Week\" key=\"week\" />\n </ns-dropdown>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n","import {\n Component,\n HostBinding,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n input\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NsSchemaMarkup } from './models/schema';\n\n@Component({\n selector: 'ns-schema',\n template: ''\n})\nexport class NsSchemaMarkupComponent implements OnInit, OnChanges {\n private sanitizer = inject<DomSanitizer>(DomSanitizer);\n\n readonly data = input<Partial<NsSchemaMarkup>>(undefined);\n\n @HostBinding('innerHTML') innerHTML: SafeHtml;\n\n ngOnInit() {}\n\n ngOnChanges({ data }: SimpleChanges) {\n const json = { '@context': 'https://schema.org', ...data.currentValue };\n const template = `<script type=\"application/ld+json\">${JSON.stringify(\n json,\n null,\n 2\n )}</script>`;\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(template);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type NsSideNavColor = 'nav' | 'success';\n\n/**\n * Vertical navigation rail. `color=\"nav\"` renders the branded blue rail\n * (`semantic.color.nav`/`navActive`); `color=\"success\"` renders a neutral\n * surface where only the active item gets a green highlight. Descendant\n * `ns-side-nav-item`/`ns-side-nav-section` read the variant through\n * `:host-context`.\n */\n@Component({\n selector: 'ns-side-nav',\n standalone: true,\n template: `<nav class=\"ns-side-nav__list\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n </nav>`,\n styleUrl: './side-nav.component.scss',\n host: {\n '[class.ns-side-nav]': 'true',\n '[class.ns-side-nav--nav]': \"color() === 'nav'\",\n '[class.ns-side-nav--success]': \"color() === 'success'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSideNavComponent {\n readonly color = input<NsSideNavColor>('nav');\n readonly ariaLabel = input<string>('Navegación principal');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n/**\n * Renders an `<a>` when `link` (routed, via `RouterLink` composition) or\n * `href` (plain external navigation) is provided, and a `<button>`\n * otherwise — so a purely programmatic item (e.g. one that opens a panel)\n * still gets correct semantics and keyboard behavior for free.\n */\n@Component({\n selector: 'ns-side-nav-item',\n standalone: true,\n imports: [RouterLink, NgTemplateOutlet],\n template: `\n <ng-template #content>\n <span class=\"ns-side-nav-item__icon\"\n ><ng-content select=\"[side-nav-item-icon]\"\n /></span>\n <span class=\"ns-side-nav-item__body\">\n <span class=\"ns-side-nav-item__label\"><ng-content /></span>\n @if (description()) {\n <span class=\"ns-side-nav-item__description\">{{ description() }}</span>\n }\n </span>\n <span class=\"ns-side-nav-item__badge\"\n ><ng-content select=\"[side-nav-item-badge]\"\n /></span>\n </ng-template>\n @if (link()) {\n <a\n class=\"ns-side-nav-item__control\"\n [routerLink]=\"link()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"onActivate($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n } @else if (href()) {\n <a\n class=\"ns-side-nav-item__control\"\n [href]=\"href()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"onActivate($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n } @else {\n <button\n class=\"ns-side-nav-item__control\"\n type=\"button\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [disabled]=\"disabled()\"\n (click)=\"onActivate($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </button>\n }\n `,\n styleUrl: './side-nav.component.scss',\n host: {\n '[class.ns-side-nav-item]': 'true',\n '[class.ns-side-nav-item--active]': 'active()',\n '[class.ns-side-nav-item--disabled]': 'disabled()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSideNavItemComponent {\n readonly href = input<string | undefined>(undefined);\n readonly link = input<string | readonly unknown[] | undefined>(undefined);\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly description = input<string | undefined>(undefined);\n readonly activated = output<void>();\n\n onActivate(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n this.activated.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-side-nav-section',\n standalone: true,\n template: `\n @if (label()) {\n <p class=\"ns-side-nav-section__label\">{{ label() }}</p>\n }\n <ng-content />\n `,\n styleUrl: './side-nav.component.scss',\n host: { '[class.ns-side-nav-section]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSideNavSectionComponent {\n readonly label = input<string | undefined>(undefined);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\n\nexport type NsStatCardVariant = 'default' | 'dark' | 'compact' | 'tile';\n\nexport type NsStatCardDeltaTone = 'up' | 'down' | 'neutral';\n\nexport type NsStatCardValueTone =\n 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport type NsStatCardHintTone =\n 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport type NsStatCardIconTone =\n 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\nconst DELTA_GLYPH: Record<NsStatCardDeltaTone, string> = {\n up: '↗',\n down: '↘',\n neutral: '→'\n};\n\n/**\n * Dashboard metric card: label, formatted value (with an optional muted\n * suffix), and an optional delta pill (`up` / `down` / `neutral`) with a\n * caption and a secondary hint. `variant=\"dark\"` renders the emphasis\n * surface used for headline metrics; `variant=\"compact\"` renders a smaller\n * card with a smaller value size; `variant=\"tile\"` renders a compact KPI\n * tile (icon circle beside a label/value/delta column, delta as plain\n * colored text instead of a pill). Set `interactive` to render the card as\n * a `<button>` and receive `(activated)` instead of a static `<div>`.\n *\n * `valueTone` colors only the headline value with the matching semantic\n * status color (`success`/`warning`/`danger`/`info`); it is ignored on\n * `variant=\"dark\"`, where the value stays white. `hintTone` colors only the\n * hint with the same semantic scale, independently of `valueTone`; like\n * `valueTone`, it is ignored on `variant=\"dark\"`, where the hint keeps the\n * emphasis-surface foreground color instead of a status color. `iconTone`\n * colors the icon wrapper background/foreground and applies to every\n * variant.\n *\n * The hint's own `margin-inline-start: auto` (pushing it to the opposite\n * edge from the value) only applies when it shares the meta row with a\n * `delta` and/or `deltaLabel` — something to separate from. A lone hint\n * (no delta, no deltaLabel) aligns to the start, under the value.\n */\n@Component({\n selector: 'ns-stat-card',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n @if (interactive()) {\n <button\n type=\"button\"\n class=\"ns-stat-card__surface\"\n (click)=\"onActivate()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </button>\n } @else {\n <div class=\"ns-stat-card__surface\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n }\n <ng-template #iconWrapper>\n <span\n class=\"ns-stat-card__icon\"\n [class.ns-stat-card__icon--info]=\"iconTone() === 'info'\"\n [class.ns-stat-card__icon--success]=\"iconTone() === 'success'\"\n [class.ns-stat-card__icon--warning]=\"iconTone() === 'warning'\"\n [class.ns-stat-card__icon--danger]=\"iconTone() === 'danger'\"\n [class.ns-stat-card__icon--neutral]=\"iconTone() === 'neutral'\"\n ><ng-content select=\"[stat-card-icon]\"\n /></span>\n </ng-template>\n <ng-template #footerSlot>\n <div class=\"ns-stat-card__footer\">\n <ng-content select=\"[stat-card-footer]\" />\n </div>\n </ng-template>\n <ng-template #deltaBadge>\n <span\n class=\"ns-stat-card__delta\"\n [class.ns-stat-card__delta--up]=\"deltaTone() === 'up'\"\n [class.ns-stat-card__delta--down]=\"deltaTone() === 'down'\"\n [class.ns-stat-card__delta--neutral]=\"deltaTone() === 'neutral'\"\n >\n <span class=\"ns-stat-card__delta-icon\" aria-hidden=\"true\">{{\n deltaGlyph()\n }}</span\n >{{ delta() }}\n </span>\n </ng-template>\n <ng-template #hintText>\n <span\n class=\"ns-stat-card__hint\"\n [class.ns-stat-card__hint--success]=\"\n hintTone() === 'success' && variant() !== 'dark'\n \"\n [class.ns-stat-card__hint--warning]=\"\n hintTone() === 'warning' && variant() !== 'dark'\n \"\n [class.ns-stat-card__hint--danger]=\"\n hintTone() === 'danger' && variant() !== 'dark'\n \"\n [class.ns-stat-card__hint--info]=\"\n hintTone() === 'info' && variant() !== 'dark'\n \"\n >{{ hint() }}</span\n >\n </ng-template>\n <ng-template #content>\n @if (variant() === 'tile') {\n <ng-container [ngTemplateOutlet]=\"iconWrapper\" />\n <div class=\"ns-stat-card__column\">\n <span class=\"ns-stat-card__label\">{{ label() }}</span>\n <div class=\"ns-stat-card__value-row\">\n <span class=\"ns-stat-card__value\">\n {{ value() }}\n @if (suffix()) {\n <span class=\"ns-stat-card__suffix\">{{ suffix() }}</span>\n }\n </span>\n @if (delta()) {\n <ng-container [ngTemplateOutlet]=\"deltaBadge\" />\n }\n </div>\n @if (deltaLabel() || hint()) {\n <div class=\"ns-stat-card__meta\">\n @if (deltaLabel()) {\n <span class=\"ns-stat-card__delta-label\">{{\n deltaLabel()\n }}</span>\n }\n @if (hint()) {\n <ng-container [ngTemplateOutlet]=\"hintText\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"footerSlot\" />\n </div>\n } @else {\n <div class=\"ns-stat-card__header\">\n <span class=\"ns-stat-card__label\">\n <ng-container [ngTemplateOutlet]=\"iconWrapper\" />\n {{ label() }}\n </span>\n </div>\n <div\n class=\"ns-stat-card__value\"\n [class.ns-stat-card__value--success]=\"\n valueTone() === 'success' && variant() !== 'dark'\n \"\n [class.ns-stat-card__value--warning]=\"\n valueTone() === 'warning' && variant() !== 'dark'\n \"\n [class.ns-stat-card__value--danger]=\"\n valueTone() === 'danger' && variant() !== 'dark'\n \"\n [class.ns-stat-card__value--info]=\"\n valueTone() === 'info' && variant() !== 'dark'\n \"\n >\n {{ value() }}\n @if (suffix()) {\n <span class=\"ns-stat-card__suffix\">{{ suffix() }}</span>\n }\n </div>\n @if (delta() || hint()) {\n <div class=\"ns-stat-card__meta\">\n @if (delta()) {\n <ng-container [ngTemplateOutlet]=\"deltaBadge\" />\n }\n @if (deltaLabel()) {\n <span class=\"ns-stat-card__delta-label\">{{ deltaLabel() }}</span>\n }\n @if (hint()) {\n <ng-container [ngTemplateOutlet]=\"hintText\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"footerSlot\" />\n }\n </ng-template>\n `,\n styleUrl: './stat-card.component.scss',\n host: {\n '[class.ns-stat-card]': 'true',\n '[class.ns-stat-card--default]': \"variant() === 'default'\",\n '[class.ns-stat-card--dark]': \"variant() === 'dark'\",\n '[class.ns-stat-card--compact]': \"variant() === 'compact'\",\n '[class.ns-stat-card--tile]': \"variant() === 'tile'\",\n '[class.ns-stat-card--interactive]': 'interactive()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsStatCardComponent {\n readonly label = input.required<string>();\n readonly value = input.required<string>();\n readonly suffix = input<string | undefined>(undefined);\n readonly delta = input<string | undefined>(undefined);\n readonly deltaTone = input<NsStatCardDeltaTone>('neutral');\n readonly deltaLabel = input<string | undefined>(undefined);\n readonly hint = input<string | undefined>(undefined);\n readonly valueTone = input<NsStatCardValueTone>('default');\n readonly hintTone = input<NsStatCardHintTone>('default');\n readonly iconTone = input<NsStatCardIconTone>('neutral');\n readonly variant = input<NsStatCardVariant>('default');\n readonly interactive = input(false, { transform: booleanAttribute });\n readonly activated = output<void>();\n\n protected deltaGlyph(): string {\n return DELTA_GLYPH[this.deltaTone()];\n }\n\n protected onActivate(): void {\n this.activated.emit();\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[nsTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n readonly name = input<string | undefined>(undefined, { alias: 'nsTemplate' });\n readonly styleClass = input<string | undefined>(undefined);\n\n /** Template handle for consumers that render templates through their own API. */\n readonly ref = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { NsThemePreset } from '../models/theme.model';\n\nexport const Arvisfy: NsThemePreset = {\n name: 'Arvisfy',\n primitive: {\n color: {\n white: '#FFFFFF',\n black: '#000000',\n klein: {\n 50: '#E6EEFD',\n 100: '#C9D6F5',\n 200: '#AFC7FF',\n 300: '#89A6FF',\n 400: '#6F92FF',\n 500: '#3665F3',\n 600: '#1F4BD8',\n 700: '#0847A6',\n 800: '#05367F',\n 900: '#03285F',\n 950: '#021B40'\n },\n neutral: {\n 0: '#FFFFFF',\n // Editor footer background (batch 10), proto 2732.\n 15: '#FCFCFB',\n // Editor toolbar background (batch 9): warmer and lighter than `50`,\n // matches the literal previously kept as its own\n // `editor.toolbarBackground` primitive.\n 25: '#FAFAF9',\n // Toolbar search-field background (batch 10), proto 1121.\n 35: '#F8F8F7',\n 50: '#F7F8FA',\n 100: '#F5F5F4',\n // Empty-state icon circle background (batch 10), proto 1172.\n 125: '#F4F5F7',\n // Neutral status-pill background (batch 6), distinct from `100`.\n 150: '#F1F2F4',\n 200: '#E8E8E6',\n 300: '#E4E4E2',\n 400: '#A9AAAF',\n // Empty-state icon glyph color (batch 10), proto 1173.\n 450: '#9EA1A8',\n 500: '#8A8C93',\n 600: '#6E7078',\n // Inactive pill-tab chrome text (batch 6), distinct from `600`/`700`.\n 650: '#5A5C63',\n 700: '#4A4F58',\n 800: '#12182B',\n 900: '#151C2B',\n 950: '#0C1220'\n },\n success: {\n 50: '#E8F7EC',\n 500: '#0CAC42',\n 600: '#0A9138',\n 700: '#087A30',\n // Soft-pair foreground for chip/badge/alert \"soft\" surfaces (batch 6,\n // distinct from `700`, which stays the solid-button active shade).\n softForeground: '#2E7D46',\n // Selection/interactive tint (filter chips, pill tabs, side-nav,\n // menu hover, command-palette active row) — batch 6.\n tint: '#F1FAF4',\n // Selection-card tint (`ns-option-card`, theme picker cards) — a\n // paler, distinct green from `tint`, observed at the same prototype\n // selected-card treatment. Batch 6.\n cardTint: '#F5FBF8'\n },\n warning: {\n 50: '#FDF6E3',\n 500: '#C08A1E',\n 600: '#A5620A',\n 700: '#804D08'\n },\n danger: {\n 50: '#FEF3F2',\n // Soft-pair background for chip/badge/alert \"soft\" surfaces (batch\n // 6). `50` stays reserved for the menu/alert hover-only treatment.\n 100: '#FCEBEA',\n 500: '#E5514A',\n 600: '#C0362C',\n 700: '#982B24',\n softForeground: '#C74B41'\n },\n info: {\n foreground: '#3B72D9'\n },\n selected: {\n soft: '#E0EAFF',\n foreground: '#1B57D6'\n },\n switch: {\n on: '#3CA040',\n off: '#D7D8DC'\n },\n button: {\n success: '#4EAA50',\n secondaryForeground: '#13182A',\n tertiaryForeground: '#13182A'\n },\n // `ns-image-upload[layout=\"cover\"]` badge/action chips (AVF-8):\n // translucent dark overlay over the cover photo — decided as a\n // literal rgba pair rather than a theme color, since it must read at\n // ~11.2:1 contrast against any photo, not a themed surface. Reused\n // as-is for dark mode: it is already a fixed dark overlay, not a\n // theme-relative surface.\n imageUpload: {\n chipBackground: 'rgba(18, 24, 43, .82)',\n chipBackgroundHover: 'rgba(18, 24, 43, .64)'\n },\n dark: {\n canvas: '#0C1220',\n surface: '#151C2B',\n surfaceRaised: '#1C2536',\n text: '#F5F7FB',\n muted: '#A7B0C0',\n border: '#2B3447',\n separator: '#202A3B',\n infoBackground: '#17284A',\n infoText: '#AFC7FF',\n successBackground: '#142F22',\n successText: '#8FEDAF',\n warningBackground: '#382D17',\n warningText: '#FFD58A',\n dangerBackground: '#3A1F28',\n dangerText: '#FFAAA5',\n neutralBackground: '#202A3B',\n neutralText: '#C8D0DD',\n nav: '#3F72D8',\n navActive: '#2959B9'\n },\n toast: {\n backgroundLight: '#FFFFFF',\n backgroundDark: '#1C2536',\n foregroundLight: '#12182B',\n foregroundDark: '#F5F7FB'\n },\n violet: {\n 400: '#8A7FDA',\n 500: '#584AC0'\n },\n navRail: {\n text: 'rgba(255,255,255,.78)',\n textMuted: 'rgba(255,255,255,.62)',\n sectionLabel: 'rgba(255,255,255,.48)'\n },\n // `ns-command-palette` active-row accents (batch 6): a muted meta text\n // and an avatar-badge tint, both distinct from the shared success tint.\n commandPalette: {\n metaActiveText: '#5FA97B',\n avatarActiveBackground: '#D7F2E0'\n },\n // Local separator observed only under the modal footer (batch 6);\n // distinct from `neutral.300` (the general control/card border).\n modal: {\n footerBorder: '#EFEFEE'\n },\n // `ns-editor` toolbar chrome (batch 8), measured on the prototype's\n // rich-text toolbar. The toolbar background moved into the shared\n // `neutral.25` scale step (batch 9); only the border stays a\n // component-local primitive.\n editor: {\n // Hairline under the toolbar and the action-button hover wash;\n // lighter than `neutral.200`/`300`. Same value as\n // `modal.footerBorder`, kept as its own primitive so the two can\n // diverge independently.\n toolbarBorder: '#EFEFEE'\n },\n // `ns-stat-tile` icon tones (batch 10), measured on the prototype's KPI\n // tile row (proto 1069-1113). `successForeground` is not duplicated\n // here: it reuses the existing `success.600` primitive.\n tile: {\n infoBackground: '#E7EEFF',\n infoForeground: '#3D6BE0',\n successBackground: '#E9F7EF',\n warningBackground: '#FEF3E1',\n warningForeground: '#B9791A',\n dangerBackground: '#FBE9E9',\n dangerForeground: '#D64545'\n }\n },\n letterSpacing: {\n wide: '0.08em',\n tight: '-0.035em',\n tighter: '-0.04em',\n // `ns-stat-tile` value letter-spacing (batch 10): the tile's KPI value\n // reads at the default tracking, distinct from the tighter `stat-card`\n // display figures.\n normal: '0'\n },\n font: {\n family: {\n sans: \"'Inter Variable', Inter, ui-sans-serif, system-ui, sans-serif\",\n display:\n \"Roboto, 'Inter Variable', Inter, ui-sans-serif, system-ui, sans-serif\",\n mono: 'JetBrains Mono, ui-monospace, monospace'\n },\n size: {\n xs: '0.75rem',\n sm: '0.875rem',\n md: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n navItem: '0.84375rem',\n navItemDescription: '0.71875rem',\n navEyebrow: '0.625rem',\n displaySm: '1.5625rem',\n displayMd: '1.8125rem',\n displayLg: '2.25rem',\n // `ns-modal`'s projected `[modal-description]` subtitle (batch 6).\n modalDescription: '0.8125rem',\n // Form-field label size (batch 9): 12.5px, measured on the\n // prototype's field labels — distinct from the 14px `sm` used\n // elsewhere for body copy.\n label: '0.78125rem',\n // Button label size (batch 9): 13px, measured on the prototype's\n // buttons.\n control: '0.8125rem',\n // `ns-editor` footer caption (batch 10): 11.5px, proto 2732 (shared\n // with the stat-tile hint text, proto 1080).\n caption: '0.71875rem',\n // `ns-empty-state[size=\"sm\"]` title (batch 10): 13.5px, proto 1594.\n headingXs: '0.84375rem',\n // `ns-empty-state[size=\"md\"]` title (batch 10): 14.5px, proto 1035.\n headingSm: '0.90625rem',\n // `ns-empty-state[size=\"lg\"]` title (batch 10): 15px, proto 1176.\n headingMd: '0.9375rem'\n },\n weight: { regular: 400, medium: 500, semibold: 600, bold: 700 },\n lineHeight: { compact: 1.25, normal: 1.5, display: 1 }\n },\n space: {\n 0: '0',\n 1: '0.25rem',\n 2: '0.5rem',\n 3: '0.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.875rem',\n 8: '2rem',\n 10: '2.5rem',\n 12: '3rem'\n },\n radius: {\n none: '0',\n sm: '0.75rem',\n md: '1rem',\n lg: '1.125rem',\n tab: '0.6875rem',\n pill: '0.5rem',\n full: '9999px',\n // Form-field radius (batch 6): `ns-input`/`ns-input-number`'s 10px\n // corners, distinct from `sm` (12px), which stays the button/control\n // radius.\n field: '0.625rem',\n // Checkbox radius (batch 7): `ns-checkbox`'s 20px box needs a\n // \"squared with a slight round\" corner, not the 12px `sm`\n // (near-circular at that size) nor the 8px `pill` (still too round).\n // 4px is ~20% of the box side and matches the \"rounded\" convention\n // used by other systems (Tailwind's default `rounded`, Radix,\n // GitHub Primer) for compact 16-20px controls.\n xs: '0.25rem',\n // `ns-editor` toolbar action-button corner (batch 8): 7px. Neither\n // `pill` (8px) nor `sm` (12px) matches the prototype's tighter,\n // 28px-square toolbar buttons — both read too round at that size.\n editorAction: '0.4375rem',\n // `ns-stat-tile` corner radius (batch 10): 14px, proto 1069.\n tile: '0.875rem'\n },\n border: {\n thin: '1px',\n medium: '1.5px',\n // `ns-card[borderless]`/`ns-stat-tile` (batch 10): a tile/card without\n // a visible border still needs a slot in the border scale so its\n // `borderWidth` can reference the tier-3 primitive/semantic chain.\n none: '0'\n },\n opacity: {\n backdrop: 0.7,\n modal: 0.28,\n buttonGroupUnselected: 0.72\n },\n shadow: {\n lightSm: '0 1px 2px rgb(18 24 43 / 5%), 0 8px 24px rgb(18 24 43 / 6%)',\n lightMd: '0 8px 24px rgb(18 24 43 / 10%)',\n lightLg: '0 24px 60px rgba(18,24,43,.18)',\n lightFocus: '0 0 0 3px rgb(54 101 243 / 28%)',\n toast: '0 12px 32px rgb(18 24 43 / 16%)',\n darkSm: '0 1px 2px rgb(0 0 0 / 24%), 0 8px 24px rgb(0 0 0 / 22%)',\n darkMd: '0 12px 28px rgb(0 0 0 / 30%)',\n darkLg: '0 20px 52px rgb(0 0 0 / 42%)',\n darkFocus: '0 0 0 3px rgb(111 146 255 / 36%)'\n },\n duration: {\n fast: '150ms',\n enter: '250ms',\n exit: '60ms',\n normal: '250ms',\n slow: '500ms',\n indeterminate: '1500ms',\n shimmer: '2000ms',\n buttonLoading: '800ms',\n reduced: '0ms'\n },\n content: { breadcrumbSeparator: \"'/'\" },\n decoration: { link: 'underline' },\n outline: { focus: '1px solid currentColor' },\n offset: { link: '0.125rem' },\n transform: {\n toastHidden: 'translate(-50%, 100%)',\n toastVisible: 'translate(-50%, 0)'\n },\n easing: { standard: 'cubic-bezier(0.2, 0, 0, 1)' },\n size: {\n controlSm: '2.375rem',\n controlMd: '2.5rem',\n controlLg: '3rem',\n // Form-field height (batch 6): `ns-input`/`ns-input-number`'s 42px\n // default, distinct from the 40px `controlMd` shared by buttons and\n // other controls. `size=\"sm\"` reuses `controlSm` (38px, matching the\n // toolbar `ns-input-search`).\n inputMinHeight: '2.625rem',\n // Horizontal room a text field reserves on one side for a single\n // icon-sized control: `ns-input`'s leading icon, `ns-password`'s\n // visibility toggle.\n iconGutter: '2.25rem',\n // Rendered size of the icon glyph itself inside a form field —\n // `ns-input`'s leading icon, `ns-password`'s visibility toggle. Kept\n // apart from `iconGutter` (the box that reserves room for it): the\n // default `ns-icon` render is 24px, disproportionate against the\n // 42px field and 36px reserved gutter, so both fields pin the glyph\n // to 16px from this single source.\n fieldIconSize: '1rem',\n // Checkbox check-glyph dimensions (batch 7): the mark is drawn from a\n // box rotated -45deg and clipped to its bottom-left border, not a\n // square — an 8x8 square rotated that way reads as a right-angle\n // corner, not a checkmark. The 2:1 ratio (8px wide : 4px tall) gives\n // the short-arm/long-arm asymmetry that reads as a check instead.\n checkboxCheckWidth: '0.5rem',\n checkboxCheckHeight: '0.25rem',\n buttonMin: '5rem',\n meterHeight: '0.5rem',\n progressBarHeight: '0.5rem',\n progressBarIndeterminateWidth: '40%',\n switchTrackWidth: '42px',\n switchTrackHeight: '24px',\n switchThumbSize: '20px',\n switchThumbInset: '2px',\n switchThumbTranslate: '18px',\n // `sm` variant: track and translate scaled to 2/3 of the default\n // (28x16 vs 42x24), thumb/inset chosen so the thumb still sits snug\n // inside the track (14 + 2*1 = 16 = trackHeightSm) while reading\n // clearly next to 14px form text (e.g. \"Recordarme\").\n switchTrackWidthSm: '28px',\n switchTrackHeightSm: '16px',\n switchThumbSizeSm: '14px',\n switchThumbInsetSm: '1px',\n switchThumbTranslateSm: '12px',\n chipPillPaddingBlock: '5px',\n chipPillPaddingInline: '10px',\n // `ns-chip[size=\"choice\"]` (batch 9): a rectangular selection chip\n // measured on the prototype's sales-channel picker, distinct from the\n // `md` default's pill/round family above.\n chipChoiceMinHeight: '34px',\n chipChoicePaddingInline: '13px',\n tabsPillPaddingBlock: '7px',\n tabsPillPaddingInline: '15px',\n timelineDot: '9px',\n timelineDotSm: '7px',\n sideNavItemPaddingBlock: '9px',\n sideNavItemPaddingInline: '11px',\n // `ns-side-nav[color=\"success\"]` item padding (batch 6): the config\n // sub-nav uses a larger, distinct rhythm from the branded `nav` rail.\n sideNavItemPaddingBlockSuccess: '11px',\n sideNavItemPaddingInlineSuccess: '13px',\n drawer: '32rem',\n datePickerMenu: '18rem',\n modalSm: '24rem',\n // Filters modal (batch 6): 544px, up from 500px.\n modalMd: '34rem',\n // Form modal (batch 6): the prototype markup renders 680px\n // consistently; the brief's 682px target is honored here (documented\n // 2px discrepancy — see DESIGN.md).\n modalLg: '42.625rem',\n modalXl: '71.25rem',\n modalViewportInset: '2rem',\n // `ns-modal` header/body/footer padding recipe observed across every\n // prototype modal instance (batch 6): header/body block padding is\n // asymmetric (26px start, 4px end; 22px start, 26px end) and the\n // footer uses 18px.\n modalPaddingBlockSm: '1.125rem',\n modalPaddingBlockMd: '1.375rem',\n modalPaddingBlockLg: '1.625rem',\n popover: '12rem',\n dropdownMenu: '15rem',\n tooltip: '20rem',\n toastMaxWidth: '25rem',\n toastMinHeight: '3.5rem',\n statCardPaddingBlock: '20px',\n statCardPaddingInline: '22px',\n statCardPaddingBlockCompact: '16px',\n statCardPaddingInlineCompact: '18px',\n // Batch 10: 34px, up from 28px, proto 770 — the icon badge grew to\n // match the redesigned KPI icon treatment.\n statCardIconSize: '34px',\n // `ns-stat-card` icon glyph (batch 10), proto 771.\n statCardIconGlyphSize: '16px',\n // `ns-stat-card[variant=\"tile\"]` (batch 10), proto 1069-1113.\n statTileIconSize: '36px',\n statTileGap: '12px',\n statTileColumnGap: '6px',\n statTilePaddingBlock: '14px',\n statTilePaddingInline: '16px',\n // `ns-empty-state` icon circle sizes (batch 10), proto 1171-1177 (lg),\n // 1030-1036 (md), 1593-1599 (sm).\n emptyStateIconLg: '72px',\n emptyStateIconMd: '64px',\n emptyStateIconSm: '52px',\n emptyStateGlyphLg: '28px',\n emptyStateGlyphMd: '26px',\n emptyStateGlyphSm: '22px',\n emptyStateMaxWidthLg: '320px',\n emptyStateMaxWidthMd: '280px',\n emptyStateMaxWidthSm: '220px',\n emptyStateGap: '14px',\n emptyStatePaddingBlockLg: '64px',\n emptyStatePaddingBlockMd: '56px',\n emptyStatePaddingBlockSm: '36px',\n // `ns-input-search` leading glyph (batch 10), proto 1120.\n searchIconSize: '15px',\n // `ns-editor` footer chrome (batch 10), proto 2729-2732.\n editorContentMinHeight: '118px',\n editorContentPadding: '14px',\n editorFooterPaddingInline: '14px',\n commandPalette: '40rem',\n commandPaletteItemIcon: '20px',\n // `ns-editor` toolbar chrome (batch 8), measured on the prototype's\n // rich-text toolbar.\n editorToolButton: '28px',\n editorToolIcon: '16px',\n editorToolbarPaddingBlock: '6px',\n editorSeparatorHeight: '18px',\n editorSeparatorSpacing: '6px',\n editorToolbarGap: '2px',\n // The color-picker's chevron indicator is smaller than the other\n // toolbar glyphs; a dedicated size keeps `.ns-editor__toggle` out of\n // the generic per-button `svg` sizing rule.\n editorToggleIconSize: '12px',\n // `ns-image-upload[layout=\"cover\"]` (AVF-19, was 30rem in AVF-8):\n // empty-state dropzone minimum height. Also the single source of\n // truth for the filled state's height since AVF-29 — the component's\n // stylesheet reuses this exact token (never a fixed per-row size) for\n // `.ns-image-upload__cover`/`.ns-image-upload__stack`, so both states\n // move together whatever this resolves to, and `grid-auto-rows` there\n // divides it among the reserved rows instead of the rows driving the\n // height. See `imageUpload.stackGap` below for why it no longer\n // participates in that arithmetic. The per-row size token this used\n // to share that arithmetic with, `thumbnailSize`, has been retired —\n // it no longer has any effect, and the retired-token registry warns\n // anyone who still overrides it.\n emptyMinHeight: '17.5rem',\n // Empty-state icon circle (AVF-8): distinct from `emptyStateIconLg`\n // (72px) — this is the larger cover-dropzone treatment, not the\n // generic `ns-empty-state` component.\n emptyIconCircleSize: '6.875rem',\n emptyIconSize: '2.5rem',\n addIconSize: '1.75rem'\n },\n layout: {\n scheduleDay: '[index] 3rem [timeline] minmax(0, 1fr)',\n scheduleWeek: '[index] 3rem repeat(7, minmax(0, 1fr))',\n scheduleWorkweek: '[index] 3rem repeat(5, minmax(0, 1fr))',\n // Timeline row height for a single hour slot (`.ns-schedule__timeline-day`).\n // Must be `px`, not `rem`: `event.component.ts` reads this custom\n // property back with `getComputedStyle` at runtime, which returns the\n // value as written rather than resolving it to pixels.\n scheduleSlotHeight: '96px'\n },\n zIndex: { overlay: 1000, backdrop: 1050, modal: 1060, toast: 1080 }\n },\n semantic: {\n common: {\n font: {\n body: '{primitive.font.family.sans}',\n display: '{primitive.font.family.display}',\n code: '{primitive.font.family.mono}',\n // `ns-stat-tile` value typeface (batch 10): no dedicated semantic\n // name existed for the sans family — `body` already resolves to the\n // same primitive but under a name that doesn't read as a font-family\n // token at the tile's call site.\n sans: '{primitive.font.family.sans}'\n },\n text: {\n xs: '{primitive.font.size.xs}',\n sm: '{primitive.font.size.sm}',\n md: '{primitive.font.size.md}',\n lg: '{primitive.font.size.lg}',\n // `ns-stat-tile` value size (batch 10): the `xl` step existed as a\n // primitive but had no semantic mirror yet.\n xl: '{primitive.font.size.xl}',\n navItem: '{primitive.font.size.navItem}',\n navItemDescription: '{primitive.font.size.navItemDescription}',\n navEyebrow: '{primitive.font.size.navEyebrow}',\n displaySm: '{primitive.font.size.displaySm}',\n displayMd: '{primitive.font.size.displayMd}',\n displayLg: '{primitive.font.size.displayLg}',\n modalDescription: '{primitive.font.size.modalDescription}',\n label: '{primitive.font.size.label}',\n control: '{primitive.font.size.control}',\n caption: '{primitive.font.size.caption}',\n headingXs: '{primitive.font.size.headingXs}',\n headingSm: '{primitive.font.size.headingSm}',\n headingMd: '{primitive.font.size.headingMd}'\n },\n letterSpacing: {\n wide: '{primitive.letterSpacing.wide}',\n tight: '{primitive.letterSpacing.tight}',\n tighter: '{primitive.letterSpacing.tighter}',\n normal: '{primitive.letterSpacing.normal}'\n },\n navRail: {\n text: '{primitive.color.navRail.text}',\n textMuted: '{primitive.color.navRail.textMuted}',\n sectionLabel: '{primitive.color.navRail.sectionLabel}',\n activeText: '{primitive.color.white}'\n },\n fontWeight: {\n regular: '{primitive.font.weight.regular}',\n medium: '{primitive.font.weight.medium}',\n semibold: '{primitive.font.weight.semibold}',\n bold: '{primitive.font.weight.bold}'\n },\n lineHeight: {\n compact: '{primitive.font.lineHeight.compact}',\n normal: '{primitive.font.lineHeight.normal}',\n display: '{primitive.font.lineHeight.display}'\n },\n space: {\n none: '{primitive.space.0}',\n xs: '{primitive.space.1}',\n sm: '{primitive.space.2}',\n md: '{primitive.space.3}',\n lg: '{primitive.space.4}',\n xl: '{primitive.space.6}',\n modal: '{primitive.space.7}',\n xxl: '{primitive.space.8}'\n },\n radius: {\n control: '{primitive.radius.sm}',\n surface: '{primitive.radius.lg}',\n overlay: '{primitive.radius.md}',\n tab: '{primitive.radius.tab}',\n pill: '{primitive.radius.pill}',\n round: '{primitive.radius.full}',\n field: '{primitive.radius.field}',\n // Dedicated slot for the checkbox box (batch 7): kept separate from\n // `control` so button/input/menu radii are untouched.\n checkbox: '{primitive.radius.xs}',\n editorAction: '{primitive.radius.editorAction}',\n tile: '{primitive.radius.tile}'\n },\n border: {\n thin: '{primitive.border.thin}',\n medium: '{primitive.border.medium}',\n none: '{primitive.border.none}'\n },\n opacity: {\n backdrop: '{primitive.opacity.backdrop}',\n modal: '{primitive.opacity.modal}',\n buttonGroupUnselected: '{primitive.opacity.buttonGroupUnselected}'\n },\n motion: {\n fast: '{primitive.duration.fast}',\n enter: '{primitive.duration.enter}',\n exit: '{primitive.duration.exit}',\n normal: '{primitive.duration.normal}',\n slow: '{primitive.duration.slow}',\n indeterminate: '{primitive.duration.indeterminate}',\n shimmer: '{primitive.duration.shimmer}',\n buttonLoading: '{primitive.duration.buttonLoading}',\n easing: '{primitive.easing.standard}',\n toastHidden: '{primitive.transform.toastHidden}',\n toastVisible: '{primitive.transform.toastVisible}'\n },\n content: {\n breadcrumbSeparator: '{primitive.content.breadcrumbSeparator}'\n },\n decoration: {\n link: '{primitive.decoration.link}'\n },\n outline: {\n focus: '{primitive.outline.focus}'\n },\n offset: {\n link: '{primitive.offset.link}'\n },\n size: {\n controlSm: '{primitive.size.controlSm}',\n controlMd: '{primitive.size.controlMd}',\n controlLg: '{primitive.size.controlLg}',\n inputMinHeight: '{primitive.size.inputMinHeight}',\n iconGutter: '{primitive.size.iconGutter}',\n fieldIconSize: '{primitive.size.fieldIconSize}',\n checkboxCheckWidth: '{primitive.size.checkboxCheckWidth}',\n checkboxCheckHeight: '{primitive.size.checkboxCheckHeight}',\n buttonMin: '{primitive.size.buttonMin}',\n meterHeight: '{primitive.size.meterHeight}',\n progressBarHeight: '{primitive.size.progressBarHeight}',\n progressBarIndeterminateWidth:\n '{primitive.size.progressBarIndeterminateWidth}',\n switchTrackWidth: '{primitive.size.switchTrackWidth}',\n switchTrackHeight: '{primitive.size.switchTrackHeight}',\n switchThumbSize: '{primitive.size.switchThumbSize}',\n switchThumbInset: '{primitive.size.switchThumbInset}',\n switchThumbTranslate: '{primitive.size.switchThumbTranslate}',\n switchTrackWidthSm: '{primitive.size.switchTrackWidthSm}',\n switchTrackHeightSm: '{primitive.size.switchTrackHeightSm}',\n switchThumbSizeSm: '{primitive.size.switchThumbSizeSm}',\n switchThumbInsetSm: '{primitive.size.switchThumbInsetSm}',\n switchThumbTranslateSm: '{primitive.size.switchThumbTranslateSm}',\n chipPillPaddingBlock: '{primitive.size.chipPillPaddingBlock}',\n chipPillPaddingInline: '{primitive.size.chipPillPaddingInline}',\n chipChoiceMinHeight: '{primitive.size.chipChoiceMinHeight}',\n chipChoicePaddingInline: '{primitive.size.chipChoicePaddingInline}',\n tabsPillPaddingBlock: '{primitive.size.tabsPillPaddingBlock}',\n tabsPillPaddingInline: '{primitive.size.tabsPillPaddingInline}',\n timelineDot: '{primitive.size.timelineDot}',\n timelineDotSm: '{primitive.size.timelineDotSm}',\n sideNavItemPaddingBlock: '{primitive.size.sideNavItemPaddingBlock}',\n sideNavItemPaddingInline: '{primitive.size.sideNavItemPaddingInline}',\n sideNavItemPaddingBlockSuccess:\n '{primitive.size.sideNavItemPaddingBlockSuccess}',\n sideNavItemPaddingInlineSuccess:\n '{primitive.size.sideNavItemPaddingInlineSuccess}',\n drawer: '{primitive.size.drawer}',\n datePickerMenu: '{primitive.size.datePickerMenu}',\n modalSm: '{primitive.size.modalSm}',\n modalMd: '{primitive.size.modalMd}',\n modalLg: '{primitive.size.modalLg}',\n modalXl: '{primitive.size.modalXl}',\n modalViewportInset: '{primitive.size.modalViewportInset}',\n modalPaddingBlockSm: '{primitive.size.modalPaddingBlockSm}',\n modalPaddingBlockMd: '{primitive.size.modalPaddingBlockMd}',\n modalPaddingBlockLg: '{primitive.size.modalPaddingBlockLg}',\n popover: '{primitive.size.popover}',\n dropdownMenu: '{primitive.size.dropdownMenu}',\n tooltip: '{primitive.size.tooltip}',\n toastMaxWidth: '{primitive.size.toastMaxWidth}',\n toastMinHeight: '{primitive.size.toastMinHeight}',\n statCardPaddingBlock: '{primitive.size.statCardPaddingBlock}',\n statCardPaddingInline: '{primitive.size.statCardPaddingInline}',\n statCardPaddingBlockCompact:\n '{primitive.size.statCardPaddingBlockCompact}',\n statCardPaddingInlineCompact:\n '{primitive.size.statCardPaddingInlineCompact}',\n statCardIconSize: '{primitive.size.statCardIconSize}',\n statCardIconGlyphSize: '{primitive.size.statCardIconGlyphSize}',\n statTileIconSize: '{primitive.size.statTileIconSize}',\n statTileGap: '{primitive.size.statTileGap}',\n statTileColumnGap: '{primitive.size.statTileColumnGap}',\n statTilePaddingBlock: '{primitive.size.statTilePaddingBlock}',\n statTilePaddingInline: '{primitive.size.statTilePaddingInline}',\n emptyStateIconLg: '{primitive.size.emptyStateIconLg}',\n emptyStateIconMd: '{primitive.size.emptyStateIconMd}',\n emptyStateIconSm: '{primitive.size.emptyStateIconSm}',\n emptyStateGlyphLg: '{primitive.size.emptyStateGlyphLg}',\n emptyStateGlyphMd: '{primitive.size.emptyStateGlyphMd}',\n emptyStateGlyphSm: '{primitive.size.emptyStateGlyphSm}',\n emptyStateMaxWidthLg: '{primitive.size.emptyStateMaxWidthLg}',\n emptyStateMaxWidthMd: '{primitive.size.emptyStateMaxWidthMd}',\n emptyStateMaxWidthSm: '{primitive.size.emptyStateMaxWidthSm}',\n emptyStateGap: '{primitive.size.emptyStateGap}',\n emptyStatePaddingBlockLg: '{primitive.size.emptyStatePaddingBlockLg}',\n emptyStatePaddingBlockMd: '{primitive.size.emptyStatePaddingBlockMd}',\n emptyStatePaddingBlockSm: '{primitive.size.emptyStatePaddingBlockSm}',\n searchIconSize: '{primitive.size.searchIconSize}',\n editorContentMinHeight: '{primitive.size.editorContentMinHeight}',\n editorContentPadding: '{primitive.size.editorContentPadding}',\n editorFooterPaddingInline: '{primitive.size.editorFooterPaddingInline}',\n commandPalette: '{primitive.size.commandPalette}',\n commandPaletteItemIcon: '{primitive.size.commandPaletteItemIcon}',\n editorToolButton: '{primitive.size.editorToolButton}',\n editorToolIcon: '{primitive.size.editorToolIcon}',\n editorToolbarPaddingBlock: '{primitive.size.editorToolbarPaddingBlock}',\n editorSeparatorHeight: '{primitive.size.editorSeparatorHeight}',\n editorSeparatorSpacing: '{primitive.size.editorSeparatorSpacing}',\n editorToolbarGap: '{primitive.size.editorToolbarGap}',\n editorToggleIconSize: '{primitive.size.editorToggleIconSize}',\n emptyMinHeight: '{primitive.size.emptyMinHeight}',\n emptyIconCircleSize: '{primitive.size.emptyIconCircleSize}',\n emptyIconSize: '{primitive.size.emptyIconSize}',\n addIconSize: '{primitive.size.addIconSize}'\n },\n layer: {\n overlay: '{primitive.zIndex.overlay}',\n backdrop: '{primitive.zIndex.backdrop}',\n modal: '{primitive.zIndex.modal}',\n toast: '{primitive.zIndex.toast}'\n },\n layout: {\n scheduleDay: '{primitive.layout.scheduleDay}',\n scheduleWeek: '{primitive.layout.scheduleWeek}',\n scheduleWorkweek: '{primitive.layout.scheduleWorkweek}',\n scheduleSlotHeight: '{primitive.layout.scheduleSlotHeight}'\n },\n status: {\n primarySoft: '{primitive.color.klein.50}',\n successSoft: '{primitive.color.success.50}',\n warningSoft: '{primitive.color.warning.50}',\n dangerSoft: '{primitive.color.danger.100}',\n primarySoftForeground: '{primitive.color.klein.600}',\n successSoftForeground: '{primitive.color.success.softForeground}',\n warningSoftForeground: '{primitive.color.warning.500}',\n dangerSoftForeground: '{primitive.color.danger.softForeground}',\n // Preserves the pre-batch-6 `dangerSoft` value (`danger.50`) for the\n // menu/alert hover-only treatment now that `dangerSoft` itself points\n // at the pill-badge `danger.100` value.\n dangerSoftHover: '{primitive.color.danger.50}',\n successTint: '{primitive.color.success.tint}',\n successTintForeground: '{primitive.color.success.500}',\n successCardTint: '{primitive.color.success.cardTint}',\n commandPaletteMetaActive:\n '{primitive.color.commandPalette.metaActiveText}',\n commandPaletteAvatarActiveBackground:\n '{primitive.color.commandPalette.avatarActiveBackground}',\n success: '{primitive.color.success.500}',\n successHover: '{primitive.color.success.600}',\n successActive: '{primitive.color.success.700}',\n warning: '{primitive.color.warning.500}',\n warningHover: '{primitive.color.warning.600}',\n warningActive: '{primitive.color.warning.700}',\n danger: '{primitive.color.danger.500}',\n dangerHover: '{primitive.color.danger.600}',\n dangerActive: '{primitive.color.danger.700}',\n successForeground: '{primitive.color.neutral.950}',\n successHoverForeground: '{primitive.color.neutral.950}',\n successActiveForeground: '{primitive.color.white}',\n warningForeground: '{primitive.color.neutral.950}',\n warningHoverForeground: '{primitive.color.white}',\n warningActiveForeground: '{primitive.color.white}',\n dangerForeground: '{primitive.color.neutral.950}',\n dangerHoverForeground: '{primitive.color.white}',\n dangerActiveForeground: '{primitive.color.white}',\n dangerBadgeForeground: '{primitive.color.white}'\n },\n color: {\n switchOn: '{primitive.color.switch.on}',\n switchOff: '{primitive.color.switch.off}',\n chipBackground: '{primitive.color.imageUpload.chipBackground}',\n chipBackgroundHover: '{primitive.color.imageUpload.chipBackgroundHover}'\n },\n button: {\n solidForeground: '{primitive.color.white}',\n successBackground: '{primitive.color.button.success}',\n successForeground: '{primitive.color.white}',\n dangerBackground: '{primitive.color.danger.500}'\n },\n reducedMotion: {\n fast: '{primitive.duration.reduced}',\n enter: '{primitive.duration.reduced}',\n exit: '{primitive.duration.reduced}',\n normal: '{primitive.duration.reduced}',\n slow: '{primitive.duration.reduced}',\n indeterminate: '{primitive.duration.reduced}',\n shimmer: '{primitive.duration.reduced}'\n }\n },\n colorScheme: {\n light: {\n color: {\n background: '{primitive.color.neutral.50}',\n content1: '{primitive.color.white}',\n content2: '{primitive.color.neutral.100}',\n content3: '{primitive.color.neutral.200}',\n content4: '{primitive.color.neutral.300}',\n surface: '{primitive.color.white}',\n surfaceMuted: '{primitive.color.neutral.100}',\n surfaceEmphasis: '{primitive.color.neutral.200}',\n emphasisBackground: '{primitive.color.neutral.800}',\n emphasisForeground: '{primitive.color.white}',\n text: '{primitive.color.neutral.800}',\n // Typed/entered field text (batch 9): `ns-input` and friends'\n // value text, measured slightly lighter than the general `text`\n // token on the prototype.\n textSecondary: '{primitive.color.neutral.700}',\n toastBackground: '{primitive.color.toast.backgroundLight}',\n toastForeground: '{primitive.color.toast.foregroundLight}',\n textMuted: '{primitive.color.neutral.500}',\n textMutedStrong: '{primitive.color.neutral.600}',\n textInactive: '{primitive.color.neutral.650}',\n border: '{primitive.color.neutral.300}',\n borderStrong: '{primitive.color.neutral.400}',\n separator: '{primitive.color.neutral.100}',\n modalFooterBorder: '{primitive.color.modal.footerBorder}',\n // `ns-editor` toolbar chrome (batch 8): the prototype is\n // light-only, so these have no dark counterpart to observe from.\n editorToolbarBackground: '{primitive.color.neutral.25}',\n editorToolbarBorder: '{primitive.color.editor.toolbarBorder}',\n editorActionColor: '{primitive.color.neutral.700}',\n editorActionHoverBackground: '{primitive.color.editor.toolbarBorder}',\n // Batch 10: `ns-input-search`/`ns-editor` placeholder text, proto\n // 1121/2732.\n textPlaceholder: '{primitive.color.neutral.400}',\n // `ns-empty-state` icon circle (batch 10), proto 1171-1177.\n emptyStateIconBackground: '{primitive.color.neutral.125}',\n emptyStateIconColor: '{primitive.color.neutral.450}',\n // `ns-input-search` toolbar field background (batch 10), proto\n // 1121.\n searchFieldBackground: '{primitive.color.neutral.35}',\n // `ns-editor` footer chrome (batch 10), proto 2732.\n editorFooterBackground: '{primitive.color.neutral.15}',\n editorFooterBorder: '{primitive.color.neutral.100}',\n primary: '{primitive.color.klein.500}',\n primaryHover: '{primitive.color.klein.600}',\n primaryActive: '{primitive.color.klein.700}',\n primaryForeground: '{primitive.color.white}',\n actionBackground: '{primitive.color.klein.500}',\n actionBackgroundHover: '{primitive.color.klein.600}',\n actionBackgroundActive: '{primitive.color.klein.700}',\n actionForeground: '{primitive.color.white}',\n focus: '{primitive.color.klein.500}',\n nav: '{primitive.color.klein.700}',\n navActive: '{primitive.color.klein.800}',\n chart: '{primitive.color.klein.500}'\n },\n button: {\n secondaryBackground: '{primitive.color.white}',\n secondaryBorderColor: '{primitive.color.neutral.200}',\n secondaryColor: '{primitive.color.button.secondaryForeground}',\n tertiaryColor: '{primitive.color.button.tertiaryForeground}'\n },\n status: {\n primarySoft: '{primitive.color.klein.50}',\n successSoft: '{primitive.color.success.50}',\n warningSoft: '{primitive.color.warning.50}',\n dangerSoft: '{primitive.color.danger.100}',\n primarySoftForeground: '{primitive.color.klein.600}',\n successSoftForeground: '{primitive.color.success.softForeground}',\n warningSoftForeground: '{primitive.color.warning.500}',\n dangerSoftForeground: '{primitive.color.danger.softForeground}',\n dangerSoftHover: '{primitive.color.danger.50}',\n successTint: '{primitive.color.success.tint}',\n successTintForeground: '{primitive.color.success.500}',\n successCardTint: '{primitive.color.success.cardTint}',\n commandPaletteMetaActive:\n '{primitive.color.commandPalette.metaActiveText}',\n commandPaletteAvatarActiveBackground:\n '{primitive.color.commandPalette.avatarActiveBackground}',\n infoSoft: '{primitive.color.klein.50}',\n infoSoftForeground: '{primitive.color.info.foreground}',\n // `ns-stat-card[variant=\"tile\"]` icon/delta tones (batch 10),\n // proto 1069-1113. Named `*TileTint` rather than the brief's plain\n // `*Tint` because `successTint`/`successTintForeground` already\n // exist above as the unrelated selection/interactive tint consumed\n // by `chip`, `menu`, `sideNav` and `commandPalette` — reusing that\n // name here would have silently changed those components' colors.\n infoTileTint: '{primitive.color.tile.infoBackground}',\n infoTileTintForeground: '{primitive.color.tile.infoForeground}',\n successTileTint: '{primitive.color.tile.successBackground}',\n successTileTintForeground: '{primitive.color.success.600}',\n warningTileTint: '{primitive.color.tile.warningBackground}',\n warningTileTintForeground: '{primitive.color.tile.warningForeground}',\n dangerTileTint: '{primitive.color.tile.dangerBackground}',\n dangerTileTintForeground: '{primitive.color.tile.dangerForeground}',\n selectedSoft: '{primitive.color.selected.soft}',\n selectedSoftForeground: '{primitive.color.selected.foreground}',\n success: '{primitive.color.success.500}',\n successHover: '{primitive.color.success.600}',\n successActive: '{primitive.color.success.700}',\n warning: '{primitive.color.warning.500}',\n warningHover: '{primitive.color.warning.600}',\n warningActive: '{primitive.color.warning.700}',\n danger: '{primitive.color.danger.500}',\n dangerHover: '{primitive.color.danger.600}',\n dangerActive: '{primitive.color.danger.700}',\n successForeground: '{primitive.color.neutral.950}',\n successHoverForeground: '{primitive.color.neutral.950}',\n successActiveForeground: '{primitive.color.white}',\n warningForeground: '{primitive.color.neutral.950}',\n warningHoverForeground: '{primitive.color.white}',\n warningActiveForeground: '{primitive.color.white}',\n dangerForeground: '{primitive.color.neutral.950}',\n dangerHoverForeground: '{primitive.color.white}',\n dangerActiveForeground: '{primitive.color.white}',\n infoBackground: '{primitive.color.klein.50}',\n infoText: '{primitive.color.klein.600}',\n successBackground: '{primitive.color.success.50}',\n successText: '{primitive.color.success.700}',\n warningBackground: '{primitive.color.warning.50}',\n warningText: '{primitive.color.warning.600}',\n dangerBackground: '{primitive.color.danger.50}',\n dangerText: '{primitive.color.danger.600}',\n neutralBackground: '{primitive.color.neutral.150}',\n neutralText: '{primitive.color.neutral.700}',\n info: '{primitive.color.info.foreground}',\n accent: '{primitive.color.violet.500}'\n },\n shadow: {\n subtle: '{primitive.shadow.lightSm}',\n overlay: '{primitive.shadow.lightMd}',\n modal: '{primitive.shadow.lightMd}',\n high: '{primitive.shadow.lightLg}',\n focus: '{primitive.shadow.lightFocus}',\n toast: '{primitive.shadow.toast}'\n }\n },\n dark: {\n color: {\n background: '{primitive.color.dark.canvas}',\n content1: '{primitive.color.dark.surface}',\n content2: '{primitive.color.dark.surfaceRaised}',\n content3: '{primitive.color.dark.separator}',\n content4: '{primitive.color.dark.border}',\n surface: '{primitive.color.dark.surface}',\n surfaceMuted: '{primitive.color.dark.surfaceRaised}',\n surfaceEmphasis: '{primitive.color.dark.separator}',\n emphasisBackground: '{primitive.color.dark.surfaceRaised}',\n emphasisForeground: '{primitive.color.dark.text}',\n text: '{primitive.color.dark.text}',\n // Typed/entered field text (batch 9): no distinct dark primitive\n // was observed for this secondary shade, so dark mode keeps full\n // contrast instead of introducing an unobserved intermediate tone.\n textSecondary: '{primitive.color.dark.text}',\n toastBackground: '{primitive.color.toast.backgroundDark}',\n toastForeground: '{primitive.color.toast.foregroundDark}',\n textMuted: '{primitive.color.dark.muted}',\n // No distinct dark equivalent observed for the prototype's\n // `#6E7078` modal-description shade; reusing the existing muted\n // dark text keeps the description legible without inventing a new\n // dark primitive (batch 6, documented in DESIGN.md).\n textMutedStrong: '{primitive.color.dark.muted}',\n // No distinct dark equivalent observed for `#5A5C63`; reusing the\n // existing dark muted text (batch 6, documented).\n textInactive: '{primitive.color.dark.muted}',\n border: '{primitive.color.dark.border}',\n borderStrong: '{primitive.color.neutral.600}',\n separator: '{primitive.color.dark.separator}',\n // Reuses the existing dark separator for the modal footer border\n // (batch 6); the prototype is light-only, so no distinct dark\n // value is observed.\n modalFooterBorder: '{primitive.color.dark.separator}',\n // `ns-editor` toolbar chrome (batch 8): the prototype is\n // light-only, so these reuse the existing dark surface/muted\n // tokens that already carry this exact legibility today\n // (`surfaceMuted` in dark already resolves to `dark.surfaceRaised`)\n // — the dark scheme is not degraded by this addition.\n editorToolbarBackground: '{primitive.color.dark.surfaceRaised}',\n editorToolbarBorder: '{primitive.color.dark.border}',\n editorActionColor: '{primitive.color.dark.muted}',\n editorActionHoverBackground: '{primitive.color.dark.separator}',\n // Batch 10: no distinct dark primitives were observed for these\n // light-only prototype surfaces, so dark mode reuses the existing\n // muted/raised-surface tokens that already carry the same role.\n textPlaceholder: '{primitive.color.dark.muted}',\n emptyStateIconBackground: '{primitive.color.dark.surfaceRaised}',\n emptyStateIconColor: '{primitive.color.dark.muted}',\n searchFieldBackground: '{primitive.color.dark.surface}',\n editorFooterBackground: '{primitive.color.dark.surfaceRaised}',\n editorFooterBorder: '{primitive.color.dark.separator}',\n primary: '{primitive.color.klein.400}',\n primaryHover: '{primitive.color.klein.300}',\n primaryActive: '{primitive.color.klein.500}',\n primaryForeground: '{primitive.color.dark.canvas}',\n actionBackground: '{primitive.color.klein.400}',\n actionBackgroundHover: '{primitive.color.klein.300}',\n actionBackgroundActive: '{primitive.color.klein.500}',\n actionForeground: '{primitive.color.dark.canvas}',\n focus: '{primitive.color.klein.400}',\n nav: '{primitive.color.dark.nav}',\n navActive: '{primitive.color.dark.navActive}',\n chart: '{primitive.color.klein.300}'\n },\n button: {\n secondaryBackground: '{primitive.color.dark.surface}',\n secondaryBorderColor: '{primitive.color.dark.border}',\n secondaryColor: '{primitive.color.dark.text}',\n tertiaryColor: '{primitive.color.dark.text}'\n },\n status: {\n primarySoft: '{primitive.color.dark.infoBackground}',\n successSoft: '{primitive.color.dark.successBackground}',\n warningSoft: '{primitive.color.dark.warningBackground}',\n dangerSoft: '{primitive.color.dark.dangerBackground}',\n primarySoftForeground: '{primitive.color.dark.infoText}',\n successSoftForeground: '{primitive.color.dark.successText}',\n warningSoftForeground: '{primitive.color.dark.warningText}',\n dangerSoftForeground: '{primitive.color.dark.dangerText}',\n // Reuses the existing dark danger-soft pair; the light-only\n // `dangerSoftHover` split (batch 6) has no distinct dark\n // observation to draw from.\n dangerSoftHover: '{primitive.color.dark.dangerBackground}',\n // The prototype provides no dark reference for the new selection\n // tints; both reuse the existing dark success-soft pair so the\n // interactive/selected states stay coherent with dark mode's\n // established success treatment (batch 6, documented).\n successTint: '{primitive.color.dark.successBackground}',\n successTintForeground: '{primitive.color.dark.successText}',\n successCardTint: '{primitive.color.dark.successBackground}',\n commandPaletteMetaActive: '{primitive.color.dark.successText}',\n commandPaletteAvatarActiveBackground:\n '{primitive.color.dark.successBackground}',\n infoSoft: '{primitive.color.dark.infoBackground}',\n infoSoftForeground: '{primitive.color.dark.infoText}',\n // `ns-stat-card[variant=\"tile\"]` icon/delta tones (batch 10): see\n // the light-scheme comment above for the `*TileTint` naming\n // rationale.\n infoTileTint: '{primitive.color.dark.infoBackground}',\n infoTileTintForeground: '{primitive.color.dark.infoText}',\n successTileTint: '{primitive.color.dark.successBackground}',\n successTileTintForeground: '{primitive.color.dark.successText}',\n warningTileTint: '{primitive.color.dark.warningBackground}',\n warningTileTintForeground: '{primitive.color.dark.warningText}',\n dangerTileTint: '{primitive.color.dark.dangerBackground}',\n dangerTileTintForeground: '{primitive.color.dark.dangerText}',\n selectedSoft: '{primitive.color.dark.infoBackground}',\n selectedSoftForeground: '{primitive.color.dark.infoText}',\n success: '{primitive.color.success.500}',\n successHover: '{primitive.color.success.600}',\n successActive: '{primitive.color.success.700}',\n warning: '{primitive.color.warning.500}',\n warningHover: '{primitive.color.warning.600}',\n warningActive: '{primitive.color.warning.700}',\n danger: '{primitive.color.danger.500}',\n dangerHover: '{primitive.color.danger.600}',\n dangerActive: '{primitive.color.danger.700}',\n successForeground: '{primitive.color.neutral.950}',\n successHoverForeground: '{primitive.color.neutral.950}',\n successActiveForeground: '{primitive.color.white}',\n warningForeground: '{primitive.color.neutral.950}',\n warningHoverForeground: '{primitive.color.white}',\n warningActiveForeground: '{primitive.color.white}',\n dangerForeground: '{primitive.color.neutral.950}',\n dangerHoverForeground: '{primitive.color.white}',\n dangerActiveForeground: '{primitive.color.white}',\n infoBackground: '{primitive.color.dark.infoBackground}',\n infoText: '{primitive.color.dark.infoText}',\n successBackground: '{primitive.color.dark.successBackground}',\n successText: '{primitive.color.dark.successText}',\n warningBackground: '{primitive.color.dark.warningBackground}',\n warningText: '{primitive.color.dark.warningText}',\n dangerBackground: '{primitive.color.dark.dangerBackground}',\n dangerText: '{primitive.color.dark.dangerText}',\n neutralBackground: '{primitive.color.dark.neutralBackground}',\n neutralText: '{primitive.color.dark.neutralText}',\n info: '{primitive.color.dark.infoText}',\n accent: '{primitive.color.violet.400}'\n },\n shadow: {\n subtle: '{primitive.shadow.darkSm}',\n overlay: '{primitive.shadow.darkMd}',\n modal: '{primitive.shadow.darkMd}',\n high: '{primitive.shadow.darkLg}',\n focus: '{primitive.shadow.darkFocus}',\n toast: '{primitive.shadow.toast}'\n }\n }\n }\n },\n components: {\n description: {\n color: '{semantic.color.textMuted}',\n fontSize: '{semantic.text.sm}',\n lineHeight: '{semantic.lineHeight.normal}'\n },\n divider: {\n color: '{semantic.color.border}',\n thickness: '{semantic.border.thin}',\n opacity: '{semantic.opacity.backdrop}'\n },\n surface: {\n background: '{semantic.color.surface}',\n softBackground: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n radius: '{semantic.radius.surface}',\n shadow: '{semantic.shadow.subtle}',\n transitionDuration: '{semantic.motion.fast}'\n },\n input: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n placeholder: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}',\n // Form-field radius (batch 6): 10px, distinct from the 12px button\n // control radius.\n radius: '{semantic.radius.field}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n // Control's `padding-inline-start` when a leading `icon` is set,\n // reserving room for `.ns-input__leading`.\n iconPaddingInline: '{semantic.size.iconGutter}',\n // Rendered size of `.ns-input__leading`'s `ns-icon` glyph (24px by\n // default, disproportionate against the 36px gutter it sits in).\n iconSize: '{semantic.size.fieldIconSize}',\n // Default (`md`) height is 42px (batch 6), up from the 40px shared\n // `controlMd`. `sm`/`lg` reuse the existing control sizes (38px/48px)\n // so the `size` input — previously a no-op on this component — now\n // has a visible effect.\n minHeight: '{semantic.size.inputMinHeight}',\n minHeightSm: '{semantic.size.controlSm}',\n minHeightLg: '{semantic.size.controlLg}',\n focusShadow: '{semantic.shadow.focus}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n disabledColor: '{semantic.color.textMuted}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n button: {\n background: '{semantic.color.actionBackground}',\n backgroundHover: '{semantic.color.actionBackgroundHover}',\n backgroundActive: '{semantic.color.actionBackgroundActive}',\n color: '{semantic.button.solidForeground}',\n radius: '{semantic.radius.control}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.lg}',\n minWidth: '{semantic.size.buttonMin}',\n minHeight: '{semantic.size.controlMd}',\n fontSize: '{semantic.text.control}',\n fontWeight: '{semantic.fontWeight.bold}',\n gap: '{semantic.space.sm}',\n focusShadow: '{semantic.shadow.focus}',\n successBackground: '{semantic.button.successBackground}',\n successBackgroundHover: '{semantic.status.successHover}',\n successSolidColor: '{semantic.button.solidForeground}',\n successSolidColorHover: '{semantic.button.solidForeground}',\n successBackgroundActive: '{semantic.status.successActive}',\n successSolidColorActive: '{semantic.button.solidForeground}',\n dangerBackground: '{semantic.button.dangerBackground}',\n dangerSolidColor: '{semantic.button.solidForeground}',\n dangerBackgroundHover: '{semantic.status.dangerHover}',\n dangerSolidColorHover: '{semantic.button.solidForeground}',\n dangerBackgroundActive: '{semantic.status.dangerActive}',\n dangerSolidColorActive: '{semantic.button.solidForeground}',\n secondaryBackground: '{semantic.button.secondaryBackground}',\n secondaryBorderColor: '{semantic.button.secondaryBorderColor}',\n secondaryColor: '{semantic.button.secondaryColor}',\n secondaryBackgroundHover: '{semantic.color.content2}',\n secondaryBackgroundActive: '{semantic.color.content3}',\n tertiaryColor: '{semantic.button.tertiaryColor}',\n tertiaryBackgroundHover: '{semantic.color.content2}',\n tertiaryBackgroundActive: '{semantic.color.content3}',\n selectedShadow: '{semantic.shadow.subtle}',\n // Kept equal to `fontWeight` (batch 9): a lighter selected weight would\n // read as less emphasized than the resting state now that the base\n // button label is bold.\n selectedFontWeight: '{semantic.fontWeight.bold}',\n secondarySelectedBackground: '{semantic.color.surface}',\n secondarySelectedBorderColor: '{semantic.color.surface}',\n secondarySelectedColor: '{semantic.button.secondaryColor}',\n secondarySelectedBackgroundHover: '{semantic.color.content2}',\n secondarySelectedBorderColorHover: '{semantic.color.content2}',\n secondarySelectedBackgroundActive: '{semantic.color.content3}',\n secondarySelectedBorderColorActive: '{semantic.color.content3}',\n tertiarySelectedBackground: '{semantic.color.surfaceMuted}',\n tertiarySelectedBorderColor: '{semantic.color.surfaceMuted}',\n tertiarySelectedColor: '{semantic.button.tertiaryColor}',\n tertiarySelectedBackgroundHover: '{semantic.color.content3}',\n tertiarySelectedBorderColorHover: '{semantic.color.content3}',\n tertiarySelectedBackgroundActive: '{semantic.color.content4}',\n tertiarySelectedBorderColorActive: '{semantic.color.content4}',\n iconPaddingInline: '{semantic.space.sm}',\n minHeightSm: '{semantic.size.controlSm}',\n minHeightLg: '{semantic.size.controlLg}',\n loadingDuration: '{semantic.motion.buttonLoading}',\n spinnerSize: '{semantic.text.md}',\n transitionDuration: '{semantic.motion.fast}',\n // `variant=\"dark\"` (AVF-20): the same emphasis pair `ns-stat-card`\n // already uses for its `dark` icon badge (`stat-card.darkBackground`/\n // `darkColor` above) — `emphasisBackground` resolves to `neutral.800`\n // (`#12182B`) in light mode and `dark.surfaceRaised` in dark mode, so\n // this needs no new primitive or semantic token. No `darkBackgroundHover`/\n // `darkBackgroundActive` entry here: `button.component.scss` derives\n // those with `color-mix()` off this single token instead — see the\n // comment there for why (no ready `semantic.status.*Hover/Active` pair\n // exists for an emphasis background the way it does for success/danger).\n darkBackground: '{semantic.color.emphasisBackground}',\n darkColor: '{semantic.color.emphasisForeground}'\n },\n avatar: {\n background: '{semantic.color.surfaceEmphasis}',\n color: '{semantic.color.primaryForeground}',\n borderColor: '{semantic.color.surface}',\n radius: '{semantic.radius.round}',\n radiusSquare: '{semantic.radius.control}',\n fontSize: '{semantic.text.sm}',\n fontWeight: '{semantic.fontWeight.semibold}',\n sizeSm: '{semantic.size.controlSm}',\n sizeMd: '{semantic.size.controlMd}',\n sizeLg: '{semantic.size.controlLg}',\n imageTransitionDuration: '{semantic.motion.slow}'\n },\n buttonGroup: {\n controlGap: '{semantic.space.none}',\n background: '{semantic.color.surfaceMuted}',\n padding: '{semantic.space.xs}',\n radius: '{semantic.radius.control}',\n segmentRadius: '{semantic.radius.control}',\n unselectedOpacity: '{semantic.opacity.buttonGroupUnselected}'\n },\n comment: {\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n mutedColor: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n invalidBorderColor: '{semantic.status.danger}',\n actionBackground: '{semantic.color.actionBackground}',\n actionBackgroundHover: '{semantic.color.actionBackgroundHover}',\n actionColor: '{semantic.color.actionForeground}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.xl}',\n gap: '{semantic.space.lg}',\n borderWidth: '{semantic.border.thin}',\n shadow: '{semantic.shadow.subtle}',\n inputBorderColor: '{semantic.color.border}',\n inputRadius: '{semantic.radius.control}',\n inputBackground: '{semantic.color.surface}',\n inputColor: '{semantic.color.text}',\n inputBorderFocusColor: '{semantic.color.focus}',\n inputFocusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}'\n },\n editor: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n toolbarBackground: '{semantic.color.editorToolbarBackground}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n // Wrapper corner radius (batch 8): 10px, matching the prototype's\n // envelope. Toolbar action buttons no longer read this — see\n // `actionRadius` below.\n radius: '{semantic.radius.field}',\n overlayRadius: '{semantic.radius.overlay}',\n overlayShadow: '{semantic.shadow.overlay}',\n padding: '{semantic.space.sm}',\n gap: '{semantic.space.sm}',\n layer: '{semantic.layer.overlay}',\n focusBorderColor: '{semantic.color.focus}',\n focusShadow: '{semantic.shadow.focus}',\n actionBackground: '{semantic.color.surfaceEmphasis}',\n actionFocusShadow: '{semantic.shadow.focus}',\n // Toolbar chrome (batch 8), measured on the prototype's rich-text\n // toolbar.\n toolbarBorderColor: '{semantic.color.editorToolbarBorder}',\n toolbarPaddingBlock: '{semantic.size.editorToolbarPaddingBlock}',\n toolbarPaddingInline: '{semantic.space.sm}',\n toolbarGap: '{semantic.size.editorToolbarGap}',\n // Toolbar action-button sizing/color (batch 8): a dedicated 28px/7px\n // family distinct from the wrapper's `radius`/`background`.\n actionSize: '{semantic.size.editorToolButton}',\n actionRadius: '{semantic.radius.editorAction}',\n actionColor: '{semantic.color.editorActionColor}',\n actionHoverBackground: '{semantic.color.editorActionHoverBackground}',\n // Only the color-picker button needs this: it hosts two glyphs (the\n // color swatch letter plus the chevron) that don't fit the fixed\n // 28px action width.\n actionPaddingInline: '{semantic.space.xs}',\n iconSize: '{semantic.size.editorToolIcon}',\n separatorColor: '{semantic.color.border}',\n separatorWidth: '{semantic.border.thin}',\n separatorHeight: '{semantic.size.editorSeparatorHeight}',\n separatorSpacing: '{semantic.size.editorSeparatorSpacing}',\n toggleIconSize: '{semantic.size.editorToggleIconSize}',\n // Content area + footer chrome (batch 10), proto 2729-2732.\n contentMinHeight: '{semantic.size.editorContentMinHeight}',\n contentPadding: '{semantic.size.editorContentPadding}',\n footerPaddingBlock: '{semantic.space.sm}',\n footerPaddingInline: '{semantic.size.editorFooterPaddingInline}',\n footerBorderColor: '{semantic.color.editorFooterBorder}',\n footerBackground: '{semantic.color.editorFooterBackground}',\n footerFontSize: '{semantic.text.caption}',\n footerFontWeight: '{semantic.fontWeight.medium}',\n footerColor: '{semantic.color.textPlaceholder}'\n },\n checkbox: {\n color: '{semantic.color.text}',\n accent: '{semantic.color.primary}',\n gap: '{semantic.space.sm}',\n borderColor: '{semantic.color.borderStrong}',\n background: '{semantic.color.surface}',\n radius: '{semantic.radius.checkbox}',\n checkBorderWidth: '{semantic.border.thin}',\n checkColor: '{semantic.color.primaryForeground}',\n checkWidth: '{semantic.size.checkboxCheckWidth}',\n checkHeight: '{semantic.size.checkboxCheckHeight}',\n focusShadow: '{semantic.shadow.focus}',\n invalidBorderColor: '{semantic.status.danger}',\n disabledColor: '{semantic.color.textMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}',\n transitionDuration: '{semantic.motion.fast}',\n transitionEasing: '{semantic.motion.easing}'\n },\n datePicker: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n bodyFontFamily: '{semantic.font.body}',\n titleFontFamily: '{semantic.font.display}',\n titleSize: '{semantic.text.lg}',\n titleWeight: '{semantic.fontWeight.semibold}',\n titleLineHeight: '{semantic.lineHeight.compact}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n mutedColor: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n activeBackground: '{semantic.status.success}',\n activeBackgroundHover: '{semantic.status.successHover}',\n activeBackgroundActive: '{semantic.status.successActive}',\n activeColor: '{semantic.status.successActiveForeground}',\n currentBackground: '{semantic.status.successSoft}',\n currentBackgroundHover: '{semantic.status.successSoft}',\n currentBackgroundActive: '{semantic.status.successSoft}',\n currentColor: '{semantic.status.successSoftForeground}',\n currentColorHover: '{semantic.status.successSoftForeground}',\n currentColorActive: '{semantic.status.successSoftForeground}',\n focusColor: '{semantic.color.focus}',\n radius: '{semantic.radius.control}',\n overlayRadius: '{semantic.radius.overlay}',\n overlayShadow: '{semantic.shadow.overlay}',\n padding: '{semantic.space.sm}',\n gap: '{semantic.space.sm}',\n menuPadding: '{semantic.space.md}',\n headerGap: '{semantic.space.md}',\n selectorGap: '{semantic.space.lg}',\n selectorIconGap: '{semantic.space.lg}',\n selectorSize: '{semantic.text.md}',\n selectorWeight: '{semantic.fontWeight.medium}',\n yearRangeRadius: '{semantic.radius.pill}',\n daySize: '{semantic.size.controlMd}',\n weekdayGap: '{semantic.space.md}',\n weekdaySize: '{semantic.text.sm}',\n focusOutlineWidth: '{semantic.border.thin}',\n focusOutlineOffset: '{semantic.space.sm}',\n navigationOutlineOffset: '{semantic.space.xs}',\n menuMinWidth: '{semantic.size.datePickerMenu}',\n minHeight: '{semantic.size.controlLg}',\n borderHoverColor: '{semantic.color.borderStrong}',\n invalidBorderColor: '{semantic.status.danger}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n overlayDuration: '{semantic.motion.enter}',\n overlayEasing: '{semantic.motion.easing}',\n dayBackgroundHover: '{semantic.color.surfaceMuted}'\n },\n inputGroup: {\n borderColor: '{semantic.color.border}',\n // Aligned to `input.radius` (batch 6 follow-up): the addon must not\n // have a corner radius of its own, or the group stops reading as one\n // piece. This value also drives the group's own first/last-child\n // corner rounding, so both stay in sync from a single source.\n radius: '{semantic.radius.field}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n borderWidth: '{semantic.border.thin}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}'\n },\n inputNumber: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n borderColor: '{semantic.color.border}',\n borderFocusColor: '{semantic.color.focus}',\n // Form-field radius/height (batch 6): 10px/42px, matching `ns-input`\n // instead of the 12px/40px shared button-control tokens. Previously\n // the height was a fixed, untokenized `min-h-10` Tailwind utility.\n radius: '{semantic.radius.field}',\n minHeight: '{semantic.size.inputMinHeight}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n borderHoverColor: '{semantic.color.borderStrong}',\n stepperBorderWidth: '{semantic.border.thin}',\n stepperBackgroundHover: '{semantic.color.surfaceMuted}',\n stepperMutedColor: '{semantic.color.textMuted}',\n prefixColor: '{semantic.color.textMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n inputSearch: {\n labelColor: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}',\n // Toolbar search radius/height (batch 6): 11px/38px, matching the\n // prototype's search field instead of the 12px/40px shared\n // button-control tokens. Previously the height was a fixed,\n // untokenized `min-h-10` Tailwind utility.\n radius: '{semantic.radius.tab}',\n minHeight: '{semantic.size.controlSm}',\n // Batch 10: the toolbar search field carries its own warm-gray fill\n // and placeholder tone (proto 1121), distinct from the plain-surface\n // `ns-input`.\n background: '{semantic.color.searchFieldBackground}',\n color: '{semantic.color.text}',\n placeholder: '{semantic.color.textPlaceholder}',\n paddingInline: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n actionColor: '{semantic.color.textMuted}',\n actionBackgroundHover: '{semantic.color.surfaceMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}',\n // Leading magnifier glyph (batch 10), proto 1120.\n fontSize: '{semantic.text.control}',\n iconSize: '{semantic.size.searchIconSize}',\n iconColor: '{semantic.color.textMuted}',\n gap: '{semantic.space.sm}'\n },\n inputCode: {\n labelColor: '{semantic.color.text}',\n minHeight: '{semantic.size.controlMd}',\n paddingInline: '{semantic.space.md}',\n borderColor: '{semantic.color.border}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}',\n radius: '{semantic.radius.control}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n focusShadow: '{semantic.shadow.focus}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n disabledColor: '{semantic.color.textMuted}',\n fontFamily: '{semantic.font.code}',\n letterSpacing: '{semantic.space.sm}',\n textIndent: '{semantic.space.sm}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n password: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n borderColor: '{semantic.color.border}',\n borderFocusColor: '{semantic.color.focus}',\n // Aligned to `input.radius` (batch 6 follow-up): a password field must\n // not carry its own corner radius, or it stops reading as the same\n // kind of control as `ns-input`.\n radius: '{semantic.radius.field}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n // Aligned to `input.minHeight` (batch 6 follow-up): same source as the\n // 42px `ns-input` default, instead of the 40px Tailwind `min-h-10`\n // utility this control previously hardcoded.\n minHeight: '{semantic.size.inputMinHeight}',\n focusShadow: '{semantic.shadow.focus}',\n borderHoverColor: '{semantic.color.borderStrong}',\n // Control's `padding-inline-end`, reserving room for the always-on\n // visibility-toggle button (`.ns-password__append`), now positioned\n // inside the field instead of appended as its own bordered box.\n appendGutter: '{semantic.size.iconGutter}',\n // Rendered size of the `.ns-password__toggle` (eye/eye-off) `ns-icon`\n // glyph — 24px by default inside a 28px toggle button, leaving next\n // to no padding.\n toggleIconSize: '{semantic.size.fieldIconSize}',\n appendBackgroundHover: '{semantic.color.surfaceMuted}',\n appendDisabledColor: '{semantic.color.textMuted}',\n forgotLinkColor: '{semantic.color.actionBackground}',\n forgotLinkHoverOpacity: '{semantic.opacity.backdrop}',\n forgotLinkTransitionDuration: '{semantic.motion.fast}'\n },\n switch: {\n background: '{semantic.color.switchOff}',\n activeBackground: '{semantic.color.switchOn}',\n thumbColor: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n radius: '{semantic.radius.round}',\n focusShadow: '{semantic.shadow.focus}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}',\n trackWidth: '{semantic.size.switchTrackWidth}',\n trackHeight: '{semantic.size.switchTrackHeight}',\n thumbSize: '{semantic.size.switchThumbSize}',\n thumbInset: '{semantic.size.switchThumbInset}',\n thumbTranslate: '{semantic.size.switchThumbTranslate}',\n trackWidthSm: '{semantic.size.switchTrackWidthSm}',\n trackHeightSm: '{semantic.size.switchTrackHeightSm}',\n thumbSizeSm: '{semantic.size.switchThumbSizeSm}',\n thumbInsetSm: '{semantic.size.switchThumbInsetSm}',\n thumbTranslateSm: '{semantic.size.switchThumbTranslateSm}',\n thumbBorderOffset: '{semantic.border.thin}',\n rowGap: '{semantic.space.lg}'\n },\n textarea: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n placeholder: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n borderFocusColor: '{semantic.color.focus}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n radius: '{semantic.radius.control}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n borderHoverColor: '{semantic.color.borderStrong}',\n lineHeight: '{semantic.lineHeight.normal}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n radio: {\n labelColor: '{semantic.color.text}',\n borderColor: '{semantic.color.borderStrong}',\n background: '{semantic.color.surface}',\n inset: '{semantic.space.sm}',\n checkedBackground: '{semantic.color.primary}',\n focusShadow: '{semantic.shadow.focus}',\n disabledColor: '{semantic.color.textMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n slider: {\n labelColor: '{semantic.color.text}',\n trackHeight: '{semantic.space.xs}',\n trackRadius: '{semantic.radius.control}',\n trackBackground: '{semantic.color.surfaceEmphasis}',\n thumbSize: '{semantic.space.lg}',\n thumbBorderWidth: '{semantic.border.thin}',\n thumbBorderColor: '{semantic.color.surface}',\n thumbRadius: '{semantic.radius.round}',\n thumbBackground: '{semantic.color.primary}',\n thumbShadow: '{semantic.shadow.subtle}',\n focusShadow: '{semantic.shadow.focus}',\n descriptionColor: '{semantic.color.textMuted}'\n },\n imageUpload: {\n borderHoverColor: '{semantic.color.borderStrong}',\n dangerColor: '{semantic.status.danger}',\n gap: '{semantic.space.sm}',\n padding: '{semantic.space.lg}',\n controlBorderColor: '{semantic.color.border}',\n controlRadius: '{semantic.radius.control}',\n controlBackground: '{semantic.color.surface}',\n controlShadow: '{semantic.shadow.subtle}',\n thumbnailRadius: '{semantic.radius.surface}',\n thumbnailShadow: '{semantic.shadow.overlay}',\n thumbnailBorderWidth: '{semantic.border.thin}',\n overlayColor: '{semantic.color.surface}',\n transitionDuration: '{semantic.motion.fast}',\n // --- layout=\"cover\" (AVF-8) ---\n columnGap: '{semantic.space.xxl}',\n // AVF-19 (was `semantic.space.lg`/16px): dropped to `md` (12px). Still\n // the gap `grid-auto-rows` in the component's stylesheet subtracts\n // between reserved rows (AVF-29: each row's height is\n // `(emptyMinHeight - (rows - 1) * stackGap) / rows`), not a value\n // chosen to hit a fixed pixel target the way it used to be — the\n // 280px arithmetic this comment previously cited (the old\n // `thumbnailSize` token, since retired) no longer holds now that the\n // filled state's total height is pinned to `emptyMinHeight` directly\n // instead of being computed from a per-row thumbnail size and this\n // gap. 10px (the prototype's gap) still doesn't exist in\n // `primitive.space` (see the scale above), so `md` remains the\n // closest available step.\n stackGap: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n coverBackground: '{semantic.color.surfaceMuted}',\n emptyMinHeight: '{semantic.size.emptyMinHeight}',\n emptyGap: '{semantic.space.lg}',\n emptyIconCircleBackground: '{semantic.color.surfaceMuted}',\n emptyIconCircleSize: '{semantic.size.emptyIconCircleSize}',\n emptyIconSize: '{semantic.size.emptyIconSize}',\n emptyTitleColor: '{semantic.color.text}',\n emptyTitleFontSize: '{semantic.text.headingSm}',\n emptyTitleFontWeight: '{semantic.fontWeight.bold}',\n emptySubtitleColor: '{semantic.color.textMuted}',\n emptySubtitleFontSize: '{semantic.text.label}',\n addIconSize: '{semantic.size.addIconSize}',\n addTitleColor: '{semantic.color.text}',\n addTitleFontSize: '{semantic.text.label}',\n addSubtitleColor: '{semantic.color.textMuted}',\n addSubtitleFontSize: '{semantic.text.xs}',\n chipBackground: '{semantic.color.chipBackground}',\n chipBackgroundHover: '{semantic.color.chipBackgroundHover}',\n chipColor: '{semantic.color.emphasisForeground}',\n chipRadius: '{semantic.radius.pill}',\n chipPaddingBlock: '{semantic.space.sm}',\n chipPaddingInline: '{semantic.space.lg}',\n chipFontSize: '{semantic.text.label}',\n chipFontWeight: '{semantic.fontWeight.medium}',\n chipOffset: '{semantic.space.md}',\n // Limit-exceeded inline notice (AVF-16). Reuses the pre-existing\n // `status.warningText` pair (defined in both color schemes but,\n // before this, consumed by no component) rather than\n // `warningSoftForeground` — that one is tuned for an icon on a soft\n // background (~3:1), not plain text on `surface`, where it falls\n // short of the 4.5:1 AA text minimum.\n warningTextColor: '{semantic.status.warningText}'\n },\n scheduleEvent: {\n background: '{semantic.color.surfaceEmphasis}',\n color: '{semantic.color.primary}',\n borderColor: '{semantic.color.primary}',\n radius: '{semantic.radius.control}',\n padding: '{semantic.space.xs}',\n layer: '{semantic.layer.overlay}'\n },\n toast: {\n background: '{semantic.color.toastBackground}',\n color: '{semantic.color.toastForeground}',\n radius: '{semantic.radius.surface}',\n paddingBlock: '{semantic.space.md}',\n paddingInline: '{semantic.space.lg}',\n gapBlock: '{semantic.space.none}',\n duration: '{semantic.motion.enter}',\n exitDuration: '{semantic.motion.exit}',\n easing: '{semantic.motion.easing}',\n gap: '{semantic.space.md}',\n offset: '{semantic.space.xl}',\n mobileOffset: '{semantic.space.lg}',\n entryOffset: '{semantic.space.lg}',\n maxWidth: '{semantic.size.toastMaxWidth}',\n minHeight: '{semantic.size.toastMinHeight}',\n focusShadow: '{semantic.shadow.focus}',\n shadow: '{semantic.shadow.toast}',\n viewportInset: '{semantic.space.xxl}',\n actionBackground: '{semantic.color.surfaceMuted}',\n actionBackgroundHover: '{semantic.color.surfaceEmphasis}',\n actionPaddingBlock: '{semantic.space.xs}',\n actionPaddingInline: '{semantic.space.sm}',\n closeSize: '{semantic.size.controlSm}',\n closePadding: '{semantic.space.none}'\n },\n accordion: {\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.md}',\n gap: '{semantic.space.sm}',\n focusShadow: '{semantic.shadow.focus}',\n triggerFontSize: '{semantic.text.sm}',\n triggerFontWeight: '{semantic.fontWeight.semibold}',\n triggerDuration: '{semantic.motion.normal}',\n triggerEasing: '{semantic.motion.easing}',\n triggerBackgroundHover: '{semantic.color.surfaceMuted}'\n },\n alert: {\n color: '{semantic.color.text}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.md}',\n gap: '{semantic.space.sm}',\n titleGap: '{semantic.space.xs}',\n focusShadow: '{semantic.shadow.focus}',\n dismissBackgroundHover: '{semantic.color.content3}',\n transitionDuration: '{semantic.motion.fast}',\n infoBackground: '{semantic.status.primarySoft}',\n infoIconColor: '{semantic.status.primarySoftForeground}',\n successBackground: '{semantic.status.successSoft}',\n successIconColor: '{semantic.status.successSoftForeground}',\n warningBackground: '{semantic.status.warningSoft}',\n warningIconColor: '{semantic.status.warningSoftForeground}',\n dangerBackground: '{semantic.status.dangerSoft}',\n dangerIconColor: '{semantic.status.dangerSoftForeground}'\n },\n badge: {\n radius: '{semantic.radius.round}',\n fontSize: '{semantic.text.xs}',\n fontWeight: '{semantic.fontWeight.semibold}',\n lineHeight: '{semantic.lineHeight.compact}',\n borderWidth: '{semantic.border.thin}',\n background: '{semantic.status.danger}',\n color: '{semantic.status.dangerBadgeForeground}',\n borderColor: '{semantic.color.surface}',\n size: '{semantic.space.xl}',\n overflowSize: '{semantic.size.controlMd}',\n dotSize: '{semantic.space.sm}'\n },\n breadcrumbs: {\n color: '{semantic.color.textMuted}',\n currentColor: '{semantic.color.text}',\n fontSize: '{semantic.text.sm}',\n gap: '{semantic.space.sm}',\n separator: '{semantic.content.breadcrumbSeparator}',\n separatorColor: '{semantic.color.textMuted}',\n linkColor: '{semantic.color.primary}',\n linkDecoration: '{semantic.decoration.link}',\n focusOutline: '{semantic.outline.focus}',\n listRadius: '{semantic.radius.surface}',\n linkRadius: '{semantic.radius.control}',\n underlineOffset: '{semantic.offset.link}',\n transitionDuration: '{semantic.motion.fast}',\n hoverOpacity: '{semantic.opacity.backdrop}'\n },\n card: {\n background: '{semantic.color.surface}',\n softBackground: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n // Batch 10: the default card relies on `shadow` for separation, not a\n // visible border — matching the prototype's borderless card shell.\n // Callers that still want a hairline (e.g. an `outline` variant) use\n // `outlineBorderWidth` below.\n borderWidth: '{semantic.border.none}',\n outlineBorderWidth: '{semantic.border.thin}',\n dividerColor: '{semantic.color.border}',\n dividerWidth: '{semantic.border.thin}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.xl}',\n shadow: '{semantic.shadow.subtle}',\n transitionDuration: '{semantic.motion.fast}'\n },\n chip: {\n background: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.round}',\n gap: '{semantic.space.xs}',\n minHeight: '{semantic.size.controlSm}',\n paddingInline: '{semantic.space.sm}',\n fontSize: '{semantic.text.sm}',\n dismissSize: '{semantic.text.md}',\n focusShadow: '{semantic.shadow.focus}',\n solidBackground: '{semantic.color.primary}',\n solidColor: '{semantic.color.primaryForeground}',\n outlineColor: '{semantic.color.primary}',\n // `outline` + `color=\"neutral\"` text (batch 6): the unqualified\n // `.ns-chip--outline` rule otherwise always shows `outlineColor`\n // (primary blue) regardless of `color`; a dedicated\n // `.ns-chip--outline.ns-chip--neutral` rule keeps neutral outline\n // chips on the neutral text color instead.\n neutralColor: '{semantic.status.neutralText}',\n primaryBackground: '{semantic.color.primary}',\n primaryColor: '{semantic.color.primaryForeground}',\n successBackground: '{semantic.status.success}',\n successColor: '{semantic.status.successForeground}',\n warningBackground: '{semantic.status.warning}',\n warningColor: '{semantic.status.warningForeground}',\n dangerBackground: '{semantic.status.danger}',\n dangerColor: '{semantic.status.dangerForeground}',\n dismissBackgroundHover: '{semantic.color.content3}',\n softPrimaryBackground: '{semantic.status.primarySoft}',\n softPrimaryColor: '{semantic.status.primarySoftForeground}',\n softSuccessBackground: '{semantic.status.successSoft}',\n softSuccessColor: '{semantic.status.successSoftForeground}',\n softWarningBackground: '{semantic.status.warningSoft}',\n softWarningColor: '{semantic.status.warningSoftForeground}',\n softDangerBackground: '{semantic.status.dangerSoft}',\n softDangerColor: '{semantic.status.dangerSoftForeground}',\n softInfoBackground: '{semantic.status.infoSoft}',\n softInfoColor: '{semantic.status.infoSoftForeground}',\n softSelectedBackground: '{semantic.status.selectedSoft}',\n softSelectedColor: '{semantic.status.selectedSoftForeground}',\n // `soft` + `color=\"neutral\"` (batch 6): the prototype's neutral status\n // pill (`#F1F2F4` / `#4A4F58`), distinct from the base soft treatment\n // (`surfaceMuted`/`text`) chips otherwise fall back to.\n softNeutralBackground: '{semantic.status.neutralBackground}',\n softNeutralColor: '{semantic.status.neutralText}',\n // New `tint` variant (batch 6): filled with the success selection\n // tint, bordered and text-colored with the matching foreground. Only\n // `success` has exact prototype numbers; other colors fall back to\n // their existing solid hue in the component SCSS.\n tintSuccessBackground: '{semantic.status.successTint}',\n tintSuccessColor: '{semantic.status.successTintForeground}',\n pillRadius: '{semantic.radius.pill}',\n pillFontSize: '{semantic.text.xs}',\n pillFontWeight: '{semantic.fontWeight.medium}',\n pillPaddingBlock: '{semantic.size.chipPillPaddingBlock}',\n pillPaddingInline: '{semantic.size.chipPillPaddingInline}',\n // `size=\"choice\"` (batch 9): a rectangular selection chip measured on\n // the prototype's sales-channel picker (e.g. \"Tienda online\",\n // \"WhatsApp Business\"). The `md` default stays the pill/round shape\n // above — this is an additional size, not a replacement. Colors are\n // unchanged; only shape/typography tokens are added.\n choiceRadius: '{semantic.radius.field}',\n choiceMinHeight: '{semantic.size.chipChoiceMinHeight}',\n choicePaddingInline: '{semantic.size.chipChoicePaddingInline}',\n choiceFontSize: '{semantic.text.label}',\n choiceFontWeight: '{semantic.fontWeight.bold}',\n transitionDuration: '{semantic.motion.fast}'\n },\n drawer: {\n backdrop: '{semantic.color.background}',\n backdropOpacity: '{semantic.opacity.backdrop}',\n width: '{semantic.size.drawer}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.control}',\n shadow: '{semantic.shadow.overlay}',\n padding: '{semantic.space.lg}',\n focusShadow: '{semantic.shadow.focus}',\n borderWidth: '{semantic.border.thin}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}',\n closeRadius: '{semantic.radius.control}',\n closeBackgroundHover: '{semantic.color.surfaceMuted}'\n },\n link: {\n color: '{semantic.color.primary}',\n disabledColor: '{semantic.color.textMuted}',\n successColor: '{semantic.status.success}',\n warningColor: '{semantic.status.warning}',\n dangerColor: '{semantic.status.danger}',\n fontWeight: '{semantic.fontWeight.medium}',\n decoration: '{semantic.decoration.link}',\n underlineOffset: '{semantic.offset.link}',\n focusOutline: '{semantic.outline.focus}',\n focusOffset: '{semantic.space.xs}',\n radius: '{semantic.radius.control}',\n transitionDuration: '{semantic.motion.fast}',\n hoverOpacity: '{semantic.opacity.backdrop}'\n },\n meter: {\n height: '{semantic.size.meterHeight}',\n radius: '{semantic.radius.round}',\n trackBackground: '{semantic.color.surfaceEmphasis}',\n valueBackground: '{semantic.color.primary}',\n successBackground: '{semantic.status.success}',\n warningBackground: '{semantic.status.warning}',\n dangerBackground: '{semantic.status.danger}',\n valueTransitionDuration: '{semantic.motion.normal}',\n backgroundTransitionDuration: '{semantic.motion.fast}'\n },\n popover: {\n minWidth: '{semantic.size.popover}',\n padding: '{semantic.space.md}',\n borderWidth: '{semantic.border.thin}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.overlay}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n shadow: '{semantic.shadow.overlay}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}'\n },\n progressBar: {\n height: '{semantic.size.progressBarHeight}',\n radius: '{semantic.radius.round}',\n trackBackground: '{semantic.color.surfaceEmphasis}',\n valueBackground: '{semantic.color.primary}',\n successBackground: '{semantic.status.success}',\n warningBackground: '{semantic.status.warning}',\n dangerBackground: '{semantic.status.danger}',\n indeterminateWidth: '{semantic.size.progressBarIndeterminateWidth}',\n indeterminateDuration: '{semantic.motion.indeterminate}',\n valueTransitionDuration: '{semantic.motion.normal}',\n backgroundTransitionDuration: '{semantic.motion.fast}'\n },\n dropdown: {\n labelGap: '{semantic.space.sm}',\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n triggerMinHeight: '{semantic.size.controlMd}',\n triggerPaddingBlock: '{semantic.space.sm}',\n triggerPaddingInline: '{semantic.space.md}',\n triggerGap: '{semantic.space.sm}',\n triggerBorderWidth: '{semantic.border.thin}',\n triggerBorderColor: '{semantic.color.border}',\n triggerBorderHoverColor: '{semantic.color.borderStrong}',\n triggerBorderFocusColor: '{semantic.color.focus}',\n triggerRadius: '{semantic.radius.control}',\n triggerBackground: '{semantic.color.surface}',\n // Selected-value text (batch 9), the dropdown's equivalent of an\n // input's typed text — distinct from `menuColor`/`searchColor`, which\n // stay on `semantic.color.text`.\n triggerColor: '{semantic.color.textSecondary}',\n triggerPlaceholderColor: '{semantic.color.textMuted}',\n triggerFocusShadow: '{semantic.shadow.focus}',\n triggerDisabledBackground: '{semantic.color.surfaceMuted}',\n triggerDisabledColor: '{semantic.color.textMuted}',\n triggerInvalidBorderColor: '{semantic.status.danger}',\n triggerIconColor: '{semantic.color.textMuted}',\n triggerDuration: '{semantic.motion.normal}',\n triggerEasing: '{semantic.motion.easing}',\n menuMaxHeight: '{semantic.size.dropdownMenu}',\n menuPadding: '{semantic.space.md}',\n menuGap: '{semantic.space.sm}',\n menuBorderWidth: '{semantic.border.thin}',\n menuBorderColor: '{semantic.color.border}',\n menuRadius: '{semantic.radius.overlay}',\n menuBackground: '{semantic.color.surface}',\n menuColor: '{semantic.color.text}',\n menuShadow: '{semantic.shadow.overlay}',\n menuEnterDuration: '{semantic.motion.enter}',\n menuEnterEasing: '{semantic.motion.easing}',\n searchMinHeight: '{semantic.size.controlMd}',\n searchPaddingBlock: '{semantic.space.sm}',\n searchPaddingInline: '{semantic.space.md}',\n searchBorderWidth: '{semantic.border.thin}',\n searchBorderColor: '{semantic.color.border}',\n searchBorderFocusColor: '{semantic.color.focus}',\n searchRadius: '{semantic.radius.control}',\n searchBackground: '{semantic.color.surface}',\n searchColor: '{semantic.color.text}',\n searchPlaceholderColor: '{semantic.color.textMuted}',\n searchIconColor: '{semantic.color.textMuted}',\n searchFocusShadow: '{semantic.shadow.focus}',\n optionPaddingBlock: '{semantic.space.sm}',\n optionPaddingInline: '{semantic.space.md}',\n optionRadius: '{semantic.radius.control}',\n optionBackgroundHover: '{semantic.color.surfaceMuted}',\n optionActiveBackground: '{semantic.color.surfaceMuted}',\n optionSelectedBackground: '{semantic.color.surfaceMuted}',\n optionSelectedColor: '{semantic.color.primary}',\n optionSelectedWeight: '{semantic.fontWeight.semibold}',\n emptyPadding: '{semantic.space.md}',\n emptyColor: '{semantic.color.textMuted}',\n emptySize: '{semantic.text.sm}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n skeleton: {\n background: '{semantic.color.surfaceMuted}',\n highlight: '{semantic.color.surface}',\n radius: '{semantic.radius.control}',\n duration: '{semantic.motion.shimmer}'\n },\n tooltip: {\n maxWidth: '{semantic.size.tooltip}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n radius: '{semantic.radius.control}',\n background: '{semantic.color.text}',\n color: '{semantic.color.background}',\n shadow: '{semantic.shadow.overlay}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}'\n },\n modal: {\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n radius: '{semantic.radius.overlay}',\n shadow: '{semantic.shadow.modal}',\n padding: '{semantic.space.modal}',\n margin: '{semantic.space.lg}',\n viewportInset: '{semantic.size.modalViewportInset}',\n // Header/body/footer block padding recipe observed consistently\n // across every prototype modal (batch 6): asymmetric header (26px\n // start / 4px end) and body (22px start / 26px end), and an 18px\n // footer with its own top border.\n headerPaddingBlockStart: '{semantic.size.modalPaddingBlockLg}',\n headerPaddingBlockEnd: '{semantic.space.xs}',\n bodyPaddingBlockStart: '{semantic.size.modalPaddingBlockMd}',\n bodyPaddingBlockEnd: '{semantic.size.modalPaddingBlockLg}',\n footerPaddingBlock: '{semantic.size.modalPaddingBlockSm}',\n footerBorderColor: '{semantic.color.modalFooterBorder}',\n descriptionColor: '{semantic.color.textMutedStrong}',\n descriptionFontSize: '{semantic.text.modalDescription}',\n backdrop: '{semantic.color.background}',\n width: '{semantic.size.modalMd}',\n widthSm: '{semantic.size.modalSm}',\n widthLg: '{semantic.size.modalLg}',\n widthXl: '{semantic.size.modalXl}',\n backdropOpacity: '{semantic.opacity.modal}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}',\n footerGap: '{semantic.space.sm}',\n closeRadius: '{semantic.radius.control}',\n closeBackgroundHover: '{semantic.color.surfaceMuted}',\n closeFocusShadow: '{semantic.shadow.focus}'\n },\n pagination: {\n gap: '{semantic.space.sm}',\n minWidth: '{semantic.size.buttonMin}',\n minHeight: '{semantic.size.controlMd}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.lg}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.control}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n backgroundHover: '{semantic.color.surfaceMuted}',\n colorHover: '{semantic.color.primary}',\n currentBorderColor: '{semantic.color.primary}',\n currentBackground: '{semantic.color.actionBackground}',\n currentColor: '{semantic.color.actionForeground}',\n currentWeight: '{semantic.fontWeight.semibold}',\n focusShadow: '{semantic.shadow.focus}'\n },\n schedule: {\n surface: '{semantic.color.surface}',\n surfaceMuted: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n borderRadius: '{semantic.radius.surface}',\n shadow: '{semantic.shadow.subtle}',\n padding: '{semantic.space.lg}',\n dividerColor: '{semantic.color.border}',\n primary: '{semantic.color.primary}',\n selectedBackground: '{semantic.color.surfaceMuted}',\n gap: '{semantic.space.sm}',\n dayColumns: '{semantic.layout.scheduleDay}',\n weekColumns: '{semantic.layout.scheduleWeek}',\n workweekColumns: '{semantic.layout.scheduleWorkweek}',\n slotHeight: '{semantic.layout.scheduleSlotHeight}'\n },\n tabs: {\n gap: '{semantic.space.sm}',\n borderColor: '{semantic.color.border}',\n listBackground: '{semantic.color.surfaceMuted}',\n listRadius: '{semantic.radius.tab}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.lg}',\n tabMinHeight: '{semantic.size.controlMd}',\n tabRadius: '{semantic.radius.tab}',\n color: '{semantic.color.text}',\n hoverColor: '{semantic.color.primary}',\n selectedBackground: '{semantic.color.actionBackground}',\n selectedForeground: '{semantic.color.actionForeground}',\n selectedShadow: '{semantic.shadow.subtle}',\n focusShadow: '{semantic.shadow.focus}',\n pillBorderWidth: '{semantic.border.thin}',\n pillBorderColor: '{semantic.color.border}',\n // Unselected pill-tab text (batch 6), distinct from the shared\n // `color` token underline tabs keep using.\n pillColor: '{semantic.color.textInactive}',\n pillPaddingBlock: '{semantic.size.tabsPillPaddingBlock}',\n pillPaddingInline: '{semantic.size.tabsPillPaddingInline}',\n pillSelectedBackground: '{semantic.status.successTint}',\n pillSelectedColor: '{semantic.status.successTintForeground}',\n pillSelectedBorderColor: '{semantic.status.successTintForeground}'\n },\n tagGroup: {\n gap: '{semantic.space.xs}',\n minHeight: '{semantic.size.controlSm}',\n paddingInline: '{semantic.space.sm}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.round}',\n background: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n fontSize: '{semantic.text.sm}',\n backgroundHover: '{semantic.color.surfaceMuted}',\n selectedBorderColor: '{semantic.color.primary}',\n selectedBackground: '{semantic.color.primary}',\n selectedColor: '{semantic.color.primaryForeground}',\n focusShadow: '{semantic.shadow.focus}'\n },\n contentEditable: {\n background: '{semantic.color.surface}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n focusBorderWidth: '{semantic.border.thin}',\n focusBorderColor: '{semantic.color.focus}',\n focusShadow: '{semantic.shadow.focus}'\n },\n optionCard: {\n gap: '{semantic.space.sm}',\n bodyGap: '{semantic.space.xs}',\n padding: '{semantic.space.lg}',\n radius: '{semantic.radius.control}',\n borderWidth: '{semantic.border.medium}',\n borderColor: '{semantic.color.border}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n fontSize: '{semantic.text.sm}',\n fontWeight: '{semantic.fontWeight.medium}',\n descriptionColor: '{semantic.color.textMuted}',\n descriptionFontSize: '{semantic.text.xs}',\n indicatorSize: '{semantic.space.md}',\n indicatorInset: '{semantic.space.xs}',\n indicatorBorderColor: '{semantic.color.borderStrong}',\n indicatorBackground: '{semantic.color.surface}',\n selectedBorderColor: '{semantic.status.success}',\n // The prototype's selected \"Tipo de descuento\" card background\n // (`#F5FBF8`, batch 6) is a paler green than the general chip/badge\n // soft surface, so it uses the dedicated card tint instead of\n // `successSoft`.\n selectedBackground: '{semantic.status.successCardTint}',\n selectedColor: '{semantic.status.successSoftForeground}',\n selectedIndicatorBorderColor: '{semantic.status.success}',\n selectedIndicatorBackground: '{semantic.status.success}',\n focusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}'\n },\n loadMore: {\n gap: '{semantic.space.md}',\n paddingBlock: '{semantic.space.lg}',\n color: '{semantic.color.textMuted}',\n fontSize: '{semantic.text.sm}'\n },\n avatarGroup: {\n size: '{semantic.size.controlMd}',\n radius: '{semantic.radius.round}',\n counterBackground: '{semantic.color.surfaceMuted}',\n counterColor: '{semantic.color.text}',\n counterBorderColor: '{semantic.color.surface}',\n counterBorderWidth: '{semantic.border.thin}',\n counterFontSize: '{semantic.text.xs}',\n counterFontWeight: '{semantic.fontWeight.semibold}'\n },\n emptyState: {\n // Batch 10: `lg`/`md`/`sm` sizes with an icon circle, proto 1171-1177\n // (lg), 1030-1036 (md), 1593-1599 (sm).\n gap: '{semantic.size.emptyStateGap}',\n gapSm: '{semantic.space.md}',\n textGap: '{semantic.space.xs}',\n paddingBlock: '{semantic.size.emptyStatePaddingBlockMd}',\n paddingBlockLg: '{semantic.size.emptyStatePaddingBlockLg}',\n paddingBlockSm: '{semantic.size.emptyStatePaddingBlockSm}',\n paddingInline: '{semantic.space.xl}',\n paddingInlineSm: '{semantic.space.md}',\n iconSize: '{semantic.size.emptyStateIconMd}',\n iconSizeLg: '{semantic.size.emptyStateIconLg}',\n iconSizeSm: '{semantic.size.emptyStateIconSm}',\n iconBackground: '{semantic.color.emptyStateIconBackground}',\n iconColor: '{semantic.color.emptyStateIconColor}',\n glyphSizeLg: '{semantic.size.emptyStateGlyphLg}',\n glyphSizeMd: '{semantic.size.emptyStateGlyphMd}',\n glyphSizeSm: '{semantic.size.emptyStateGlyphSm}',\n maxWidthLg: '{semantic.size.emptyStateMaxWidthLg}',\n maxWidthMd: '{semantic.size.emptyStateMaxWidthMd}',\n maxWidthSm: '{semantic.size.emptyStateMaxWidthSm}',\n titleColor: '{semantic.color.text}',\n titleFontSize: '{semantic.text.headingSm}',\n titleFontSizeLg: '{semantic.text.headingMd}',\n titleFontSizeSm: '{semantic.text.headingXs}',\n titleFontWeight: '{semantic.fontWeight.bold}',\n descriptionColor: '{semantic.color.textMuted}',\n descriptionFontSize: '{semantic.text.label}',\n descriptionFontSizeLg: '{semantic.text.control}',\n descriptionFontSizeSm: '{semantic.text.xs}',\n descriptionFontWeight: '{semantic.fontWeight.regular}',\n actionsGap: '{semantic.space.sm}'\n },\n menu: {\n minWidth: '{semantic.size.popover}',\n padding: '{semantic.space.sm}',\n gap: '{semantic.space.xs}',\n borderWidth: '{semantic.border.thin}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.overlay}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n shadow: '{semantic.shadow.subtle}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}',\n headerGap: '{semantic.space.sm}',\n headerPaddingBlock: '{semantic.space.sm}',\n headerPaddingInline: '{semantic.space.md}',\n headerBorderColor: '{semantic.color.border}',\n sectionLabelColor: '{semantic.color.textMuted}',\n sectionLabelFontSize: '{semantic.text.xs}',\n sectionLabelFontWeight: '{semantic.fontWeight.semibold}',\n sectionLabelPaddingBlock: '{semantic.space.xs}',\n sectionLabelPaddingInline: '{semantic.space.md}',\n dividerColor: '{semantic.color.border}',\n itemGap: '{semantic.space.sm}',\n itemPaddingBlock: '{semantic.space.sm}',\n itemPaddingInline: '{semantic.space.md}',\n itemRadius: '{semantic.radius.control}',\n itemFontSize: '{semantic.text.sm}',\n itemColor: '{semantic.color.text}',\n itemColorPrimary: '{semantic.color.primary}',\n itemColorSuccess: '{semantic.status.success}',\n itemColorWarning: '{semantic.status.warning}',\n itemColorDanger: '{semantic.status.danger}',\n itemDisabledColor: '{semantic.color.textMuted}',\n itemBackgroundHover: '{semantic.status.successTint}',\n // Text turns the same success tint green on hover, regardless of the\n // item's own `color` (batch 6) — except `color=\"danger\"`, which keeps\n // its own text color and only changes the hover background.\n itemColorHover: '{semantic.status.successTintForeground}',\n itemBackgroundHoverDanger: '{semantic.status.dangerSoftHover}',\n itemFocusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}'\n },\n timeline: {\n gap: '{semantic.space.md}',\n gapSm: '{semantic.space.sm}',\n connectorColor: '{semantic.color.border}',\n connectorWidth: '{semantic.border.medium}',\n dotSize: '{semantic.size.timelineDot}',\n dotSizeSm: '{semantic.size.timelineDotSm}',\n dotNeutral: '{semantic.status.neutralText}',\n dotPrimary: '{semantic.color.primary}',\n dotSuccess: '{semantic.status.success}',\n dotInfo: '{semantic.status.info}',\n dotWarning: '{semantic.status.warning}',\n dotDanger: '{semantic.status.danger}',\n dotAccent: '{semantic.status.accent}',\n markerGap: '{semantic.space.sm}',\n contentGap: '{semantic.space.xs}',\n titleColor: '{semantic.color.text}',\n titleFontSize: '{semantic.text.sm}',\n titleFontSizeSm: '{semantic.text.xs}',\n titleFontWeight: '{semantic.fontWeight.medium}',\n metaColor: '{semantic.color.textMuted}',\n metaFontSize: '{semantic.text.xs}'\n },\n sideNav: {\n gap: '{semantic.space.xs}',\n background: '{semantic.color.nav}',\n color: '{semantic.navRail.text}',\n successBackground: '{semantic.color.surface}',\n successColor: '{semantic.color.text}',\n itemGap: '{semantic.space.sm}',\n itemPaddingBlock: '{semantic.size.sideNavItemPaddingBlock}',\n itemPaddingInline: '{semantic.size.sideNavItemPaddingInline}',\n itemRadius: '{semantic.radius.tab}',\n // `color=\"success\"` item padding/radius (batch 6): the config sub-nav\n // uses a larger rhythm and a 12px radius, distinct from the branded\n // `nav` rail's 9px/11px/11px.\n itemPaddingBlockSuccess: '{semantic.size.sideNavItemPaddingBlockSuccess}',\n itemPaddingInlineSuccess:\n '{semantic.size.sideNavItemPaddingInlineSuccess}',\n itemRadiusSuccess: '{semantic.radius.control}',\n itemFontSize: '{semantic.text.navItem}',\n itemFontWeight: '{semantic.fontWeight.bold}',\n itemColor: '{semantic.navRail.text}',\n itemColorActive: '{semantic.navRail.activeText}',\n itemBackgroundActive: '{semantic.color.navActive}',\n itemSuccessColor: '{semantic.color.text}',\n itemSuccessColorActive: '{semantic.status.successTintForeground}',\n itemSuccessBackgroundActive: '{semantic.status.successTint}',\n itemDescriptionColor: '{semantic.navRail.textMuted}',\n itemDescriptionSuccessColor: '{semantic.color.textMuted}',\n itemDescriptionFontSize: '{semantic.text.navItemDescription}',\n itemFocusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}',\n badgeGap: '{semantic.space.sm}',\n sectionLabelColor: '{semantic.navRail.sectionLabel}',\n sectionLabelSuccessColor: '{semantic.color.textMuted}',\n sectionLabelFontSize: '{semantic.text.navEyebrow}',\n sectionLabelFontWeight: '{semantic.fontWeight.semibold}',\n sectionLabelLetterSpacing: '{semantic.letterSpacing.wide}',\n sectionLabelPaddingBlock: '{semantic.space.xs}',\n sectionLabelPaddingInline: '{semantic.size.sideNavItemPaddingInline}'\n },\n statCard: {\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderColorHover: '{semantic.color.borderStrong}',\n // Batch 10: borderless by default, matching the redesigned card shell\n // — see `card.borderWidth` above.\n borderWidth: '{semantic.border.none}',\n radius: '{semantic.radius.surface}',\n radiusCompact: '{semantic.radius.overlay}',\n shadow: '{semantic.shadow.subtle}',\n paddingBlock: '{semantic.size.statCardPaddingBlock}',\n paddingInline: '{semantic.size.statCardPaddingInline}',\n paddingBlockCompact: '{semantic.size.statCardPaddingBlockCompact}',\n paddingInlineCompact: '{semantic.size.statCardPaddingInlineCompact}',\n gap: '{semantic.space.sm}',\n labelColor: '{semantic.color.textMuted}',\n labelFontSize: '{semantic.text.xs}',\n labelFontWeight: '{semantic.fontWeight.bold}',\n valueFontFamily: '{semantic.font.display}',\n valueFontSize: '{semantic.text.displayLg}',\n valueFontSizeCompact: '{semantic.text.displaySm}',\n valueFontWeight: '{semantic.fontWeight.bold}',\n valueLineHeight: '{semantic.lineHeight.display}',\n valueLetterSpacing: '{semantic.letterSpacing.tighter}',\n valueLetterSpacingCompact: '{semantic.letterSpacing.tight}',\n valueToneSuccessColor: '{semantic.status.successSoftForeground}',\n valueToneWarningColor: '{semantic.status.warningSoftForeground}',\n valueToneDangerColor: '{semantic.status.dangerSoftForeground}',\n valueToneInfoColor: '{semantic.status.infoSoftForeground}',\n suffixColor: '{semantic.color.textMuted}',\n suffixFontSize: '{semantic.text.lg}',\n iconSize: '{semantic.size.statCardIconSize}',\n // Batch 10: the icon badge moved from a circle to the shared field\n // radius (10px) — the tile variant below keeps its own circular\n // `iconRadiusTile`.\n iconRadius: '{semantic.radius.field}',\n iconColor: '{semantic.color.textMuted}',\n iconGlyphSize: '{semantic.size.statCardIconGlyphSize}',\n // `variant=\"tile\"` (batch 10), proto 1069-1113: a compact KPI tile\n // layout with its own padding/gap/icon/value/delta/hint scale.\n radiusTile: '{semantic.radius.tile}',\n paddingBlockTile: '{semantic.size.statTilePaddingBlock}',\n paddingInlineTile: '{semantic.size.statTilePaddingInline}',\n gapTile: '{semantic.size.statTileGap}',\n columnGapTile: '{semantic.size.statTileColumnGap}',\n iconSizeTile: '{semantic.size.statTileIconSize}',\n iconRadiusTile: '{semantic.radius.round}',\n labelColorTile: '{semantic.color.textMutedStrong}',\n labelFontSizeTile: '{semantic.text.label}',\n labelFontWeightTile: '{semantic.fontWeight.medium}',\n valueFontFamilyTile: '{semantic.font.sans}',\n valueFontSizeTile: '{semantic.text.xl}',\n valueLetterSpacingTile: '{semantic.letterSpacing.normal}',\n deltaFontSizeTile: '{semantic.text.xs}',\n deltaFontWeightTile: '{semantic.fontWeight.bold}',\n // `*Tile` delta/icon tones reference the `*TileTint` status family\n // added above, kept distinct from the base card's `*Soft` tones.\n deltaUpColorTile: '{semantic.status.successTileTintForeground}',\n deltaDownColorTile: '{semantic.status.dangerTileTintForeground}',\n deltaNeutralColorTile: '{semantic.color.textMuted}',\n hintFontSizeTile: '{semantic.text.caption}',\n hintFontWeightTile: '{semantic.fontWeight.medium}',\n iconInfoBackground: '{semantic.status.infoTileTint}',\n iconInfoColor: '{semantic.status.infoTileTintForeground}',\n iconSuccessBackground: '{semantic.status.successTileTint}',\n iconSuccessColor: '{semantic.status.successTileTintForeground}',\n iconWarningBackground: '{semantic.status.warningTileTint}',\n iconWarningColor: '{semantic.status.warningTileTintForeground}',\n iconDangerBackground: '{semantic.status.dangerTileTint}',\n iconDangerColor: '{semantic.status.dangerTileTintForeground}',\n iconNeutralBackground: '{semantic.color.surfaceMuted}',\n iconNeutralColor: '{semantic.color.textMuted}',\n deltaFontSize: '{semantic.text.xs}',\n deltaFontWeight: '{semantic.fontWeight.semibold}',\n deltaPaddingBlock: '{semantic.size.chipPillPaddingBlock}',\n deltaPaddingInline: '{semantic.size.chipPillPaddingInline}',\n deltaRadius: '{semantic.radius.pill}',\n deltaGap: '{semantic.space.xs}',\n deltaUpBackground: '{semantic.status.successSoft}',\n deltaUpColor: '{semantic.status.successSoftForeground}',\n deltaDownBackground: '{semantic.status.warningSoft}',\n deltaDownColor: '{semantic.status.warningSoftForeground}',\n deltaNeutralBackground: '{semantic.color.surfaceMuted}',\n deltaNeutralColor: '{semantic.color.textMuted}',\n deltaLabelColor: '{semantic.color.textMuted}',\n hintColor: '{semantic.color.textMuted}',\n hintFontSize: '{semantic.text.xs}',\n // `hintTone`: colors the hint independently of the delta pill, reusing\n // the same status-soft-foreground family as `valueTone`.\n hintToneSuccessColor: '{semantic.status.successSoftForeground}',\n hintToneWarningColor: '{semantic.status.warningSoftForeground}',\n hintToneDangerColor: '{semantic.status.dangerSoftForeground}',\n hintToneInfoColor: '{semantic.status.infoSoftForeground}',\n metaGap: '{semantic.space.sm}',\n footerBorderColor: '{semantic.color.border}',\n footerPaddingBlock: '{semantic.space.sm}',\n focusShadow: '{semantic.shadow.focus}',\n darkBackground: '{semantic.color.emphasisBackground}',\n darkColor: '{semantic.color.emphasisForeground}',\n transitionDuration: '{semantic.motion.fast}'\n },\n commandPalette: {\n backdropColor: '{semantic.color.emphasisBackground}',\n width: '{semantic.size.commandPalette}',\n radius: '{semantic.radius.overlay}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n shadow: '{semantic.shadow.high}',\n layer: '{semantic.layer.modal}',\n searchBorderColor: '{semantic.color.border}',\n searchIconColor: '{semantic.color.textMuted}',\n searchPlaceholderColor: '{semantic.color.textMuted}',\n searchColor: '{semantic.color.text}',\n searchFontSize: '{semantic.text.md}',\n searchPaddingBlock: '{semantic.space.md}',\n searchPaddingInline: '{semantic.space.lg}',\n searchGap: '{semantic.space.sm}',\n groupLabelColor: '{semantic.color.textMuted}',\n groupLabelFontSize: '{semantic.text.xs}',\n groupLabelFontWeight: '{semantic.fontWeight.semibold}',\n groupGap: '{semantic.space.xs}',\n listPadding: '{semantic.space.sm}',\n itemGap: '{semantic.space.sm}',\n itemPaddingBlock: '{semantic.space.sm}',\n itemPaddingInline: '{semantic.space.md}',\n itemRadius: '{semantic.radius.control}',\n itemColor: '{semantic.color.text}',\n itemIconWidth: '{semantic.size.commandPaletteItemIcon}',\n itemMetaColor: '{semantic.color.textMuted}',\n itemMetaColorActive: '{semantic.status.commandPaletteMetaActive}',\n itemAvatarActiveBackground:\n '{semantic.status.commandPaletteAvatarActiveBackground}',\n itemAvatarActiveColor: '{semantic.status.successTintForeground}',\n itemActiveBackground: '{semantic.status.successTint}',\n itemActiveColor: '{semantic.status.successTintForeground}',\n itemDisabledColor: '{semantic.color.textMuted}',\n kbdBackground: '{semantic.color.surfaceMuted}',\n kbdColor: '{semantic.color.textMuted}',\n kbdRadius: '{semantic.radius.tab}',\n kbdPaddingBlock: '{semantic.size.chipPillPaddingBlock}',\n kbdPaddingInline: '{semantic.size.chipPillPaddingInline}',\n kbdFontSize: '{semantic.text.xs}',\n // Opt-in modifier for a projected `<kbd data-active>` (e.g. a\n // consumer-built search-prefix hint) — batch 6. No interactive\n // prefix-hint feature is wired into the component itself yet.\n kbdActiveBorderColor: '{semantic.status.successTintForeground}',\n kbdActiveColor: '{semantic.status.successTintForeground}',\n footerBorderColor: '{semantic.color.border}',\n footerColor: '{semantic.color.textMuted}',\n footerFontSize: '{semantic.text.xs}',\n footerPaddingBlock: '{semantic.space.sm}',\n footerPaddingInline: '{semantic.space.lg}',\n focusShadow: '{semantic.shadow.focus}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}'\n },\n overlay: {\n layer: '{semantic.layer.overlay}'\n }\n }\n};\n","import {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders\n} from '@angular/core';\nimport {\n NsResolvedThemeOptions,\n NsResolvedToastThemeOptions,\n NsThemeOptions\n} from './models/theme.model';\nimport { Arvisfy } from './presets/arvisfy.preset';\nimport { NsThemeService } from './services/theme.service';\n\nconst DEFAULT_TOAST_OPTIONS: NsResolvedToastThemeOptions = {\n placement: 'top-end'\n};\n\nconst DEFAULT_THEME_OPTIONS: NsResolvedThemeOptions = {\n preset: Arvisfy,\n colorScheme: 'system',\n storageKey: 'ns-color-scheme',\n toast: DEFAULT_TOAST_OPTIONS\n};\n\nexport const NS_THEME_OPTIONS = new InjectionToken<NsResolvedThemeOptions>(\n 'NS_THEME_OPTIONS',\n { factory: () => DEFAULT_THEME_OPTIONS }\n);\n\nexport const NS_TOAST_OPTIONS = new InjectionToken<NsResolvedToastThemeOptions>(\n 'NS_TOAST_OPTIONS',\n { factory: () => DEFAULT_TOAST_OPTIONS }\n);\n\nexport function provideNsTheme(\n options: NsThemeOptions = {}\n): EnvironmentProviders {\n const resolvedOptions: NsResolvedThemeOptions = {\n ...DEFAULT_THEME_OPTIONS,\n ...options,\n toast: { ...DEFAULT_TOAST_OPTIONS, ...options.toast }\n };\n return makeEnvironmentProviders([\n {\n provide: NS_THEME_OPTIONS,\n useValue: resolvedOptions\n },\n {\n provide: NS_TOAST_OPTIONS,\n useValue: resolvedOptions.toast\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => inject(NsThemeService)\n }\n ]);\n}\n","import {\n NsPrimitiveReference,\n NsPrimitiveTokenValue,\n NsSemanticReference,\n NsThemePreset,\n NsThemePresetOverrides,\n NsTokenTree\n} from '../models/theme.model';\n\n/**\n * Registry of theme tokens that used to be part of the Arvisfy preset and no\n * longer have any effect on rendering. `NsTokenTree` has an open index\n * signature and `mergeObjects` (below) merges unknown keys in without\n * complaint, so a consumer overriding a retired token gets no type error and\n * no `validateNsPreset` error -- the override is silently inert.\n * `validateNsPreset` walks this map against the resolved preset and emits a\n * `console.warn` for every retired path still present, so the override at\n * least surfaces instead of doing nothing invisibly.\n *\n * Keys are full token paths, one of:\n * - `primitive.<path>`\n * - `semantic.common.<path>`\n * - `semantic.colorScheme.<light|dark>.<path>`\n * - `components.<path>`\n *\n * Values are the exact message logged for that path. Do not include a\n * version number in a message: the published package version and this\n * source's `package.json` version can diverge, so a hardcoded version would\n * go stale.\n *\n * This lives here rather than in its own file: `packages/mcp` transpiles\n * this module in isolation (`extract-tokens.mjs`'s `assertNoValueImports`)\n * and cannot resolve a relative value import from a sibling module at that\n * point, so a second file imported here for its data would break\n * `nx run mcp:build-data`.\n */\nexport const NS_RETIRED_TOKENS: Readonly<Record<string, string>> = {\n 'components.imageUpload.thumbnailSize':\n '[@ng-solid/design-system] Theme token `components.imageUpload.thumbnailSize` is retired and no longer has any effect. `components.imageUpload.emptyMinHeight` now sizes `ns-image-upload[layout=\"cover\"]` in both its empty and filled states. Remove this override.'\n};\n\nconst TOKEN_KEY = /^(?:[a-z][a-zA-Z0-9]*|[0-9]+)$/;\n\n// Longest prefix first: `semantic.colorScheme.light.` must win over a naive\n// `semantic.` match before `semantic.common.` gets a chance.\nconst RETIRED_TOKEN_TIERS: ReadonlyArray<\n readonly [\n prefix: string,\n tier:\n | 'primitive'\n | 'semanticCommon'\n | 'semanticLight'\n | 'semanticDark'\n | 'components'\n ]\n> = [\n ['semantic.colorScheme.light.', 'semanticLight'],\n ['semantic.colorScheme.dark.', 'semanticDark'],\n ['semantic.common.', 'semanticCommon'],\n ['components.', 'components'],\n ['primitive.', 'primitive']\n];\nconst UNSAFE_CSS_VALUE = /[;{}]/;\nconst PRIMITIVE_REFERENCE = /^\\{primitive\\.([a-zA-Z0-9.]+)\\}$/;\nconst SEMANTIC_REFERENCE = /^\\{semantic\\.([a-zA-Z0-9.]+)\\}$/;\n\nexport function defineNsPreset(\n base: NsThemePreset,\n overrides: NsThemePresetOverrides\n): NsThemePreset {\n const preset = mergeObjects(base, overrides) as NsThemePreset;\n validateNsPreset(preset);\n return preset;\n}\n\nexport function validateNsPreset(preset: NsThemePreset): void {\n if (!/^[a-z][a-z0-9-]*$/i.test(preset.name)) {\n throw new Error(`Invalid preset name: ${preset.name}`);\n }\n\n const primitives = flattenTokens(preset.primitive);\n const semanticCommon = flattenTokens(preset.semantic.common);\n const semanticLight = flattenTokens(preset.semantic.colorScheme.light);\n const semanticDark = flattenTokens(preset.semantic.colorScheme.dark);\n const components = flattenTokens(preset.components);\n\n for (const [path, value] of primitives) {\n if (\n typeof value === 'string' &&\n (UNSAFE_CSS_VALUE.test(value) || value.trim().length === 0)\n ) {\n throw new Error(`Unsafe primitive token value at primitive.${path}`);\n }\n }\n\n for (const tokens of [semanticCommon, semanticLight, semanticDark]) {\n validateReferences(tokens, PRIMITIVE_REFERENCE, primitives, 'primitive');\n }\n\n const semanticPaths = new Map([\n ...semanticCommon,\n ...semanticLight,\n ...semanticDark\n ]);\n validateReferences(components, SEMANTIC_REFERENCE, semanticPaths, 'semantic');\n\n for (const path of components.keys()) {\n const reference = components.get(path) as string;\n const semanticPath = SEMANTIC_REFERENCE.exec(reference)?.[1];\n if (\n semanticPath &&\n !semanticCommon.has(semanticPath) &&\n !(semanticLight.has(semanticPath) && semanticDark.has(semanticPath))\n ) {\n throw new Error(\n `Component token components.${path} must reference a common semantic token or one available in both color schemes`\n );\n }\n }\n\n warnRetiredTokens({\n primitive: primitives,\n semanticCommon,\n semanticLight,\n semanticDark,\n components\n });\n}\n\nfunction warnRetiredTokens(tokensByTier: {\n primitive: Map<string, unknown>;\n semanticCommon: Map<string, unknown>;\n semanticLight: Map<string, unknown>;\n semanticDark: Map<string, unknown>;\n components: Map<string, unknown>;\n}): void {\n for (const [retiredPath, message] of Object.entries(NS_RETIRED_TOKENS)) {\n const match = RETIRED_TOKEN_TIERS.find(([prefix]) =>\n retiredPath.startsWith(prefix)\n );\n if (!match) {\n continue;\n }\n\n const [prefix, tier] = match;\n const relativePath = retiredPath.slice(prefix.length);\n if (tokensByTier[tier].has(relativePath)) {\n console.warn(message);\n }\n }\n}\n\nexport function flattenTokens<T>(tree: NsTokenTree<T>): Map<string, T> {\n const tokens = new Map<string, T>();\n\n const visit = (value: NsTokenTree<T>, prefix = ''): void => {\n for (const [key, token] of Object.entries(value)) {\n if (!TOKEN_KEY.test(key)) {\n throw new Error(`Invalid token key: ${prefix}${key}`);\n }\n\n const path = prefix ? `${prefix}.${key}` : key;\n if (isRecord(token)) {\n visit(token as NsTokenTree<T>, path);\n } else {\n tokens.set(path, token as T);\n }\n }\n };\n\n visit(tree);\n return tokens;\n}\n\nexport function tokenPathToCssVariable(\n tier: 'primitive' | 'semantic' | 'component',\n path: string\n): string {\n return `--ns-${tier}-${path\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replaceAll('.', '-')\n .toLowerCase()}`;\n}\n\nexport function referenceToCssVariable(\n reference: NsPrimitiveReference | NsSemanticReference\n): string {\n const match = /^\\{(primitive|semantic)\\.(.+)\\}$/.exec(reference);\n if (!match) {\n throw new Error(`Invalid token reference: ${reference}`);\n }\n return `var(${tokenPathToCssVariable(match[1] as 'primitive' | 'semantic', match[2])})`;\n}\n\nfunction validateReferences<T>(\n tokens: Map<string, T>,\n pattern: RegExp,\n targets: Map<string, unknown>,\n tier: string\n): void {\n for (const [path, value] of tokens) {\n if (typeof value !== 'string') {\n throw new Error(`Token ${path} must reference the ${tier} tier`);\n }\n\n const target = pattern.exec(value)?.[1];\n if (!target || !targets.has(target)) {\n throw new Error(`Invalid ${tier} reference at ${path}: ${value}`);\n }\n }\n}\n\nfunction mergeObjects(\n base: unknown,\n overrides: unknown\n): Record<string, unknown> | unknown {\n if (!isRecord(base) || !isRecord(overrides)) {\n return overrides === undefined ? base : overrides;\n }\n\n const merged: Record<string, unknown> = { ...base };\n for (const [key, value] of Object.entries(overrides)) {\n merged[key] = mergeObjects(base[key], value);\n }\n return merged;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport type NsFlattenedPrimitiveTokens = Map<string, NsPrimitiveTokenValue>;\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n DestroyRef,\n Injectable,\n PLATFORM_ID,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport {\n NsColorScheme,\n NsResolvedColorScheme,\n NsThemePreset\n} from '../models/theme.model';\nimport { NS_THEME_OPTIONS } from '../theme.provider';\nimport {\n flattenTokens,\n referenceToCssVariable,\n tokenPathToCssVariable,\n validateNsPreset\n} from '../utils/theme.utils';\n\n@Injectable({ providedIn: 'root' })\nexport class NsThemeService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly options = inject(NS_THEME_OPTIONS);\n private readonly browser = isPlatformBrowser(this.platformId);\n private readonly activeVariables = new Set<string>();\n private readonly mediaQuery = this.createMediaQuery();\n private readonly systemScheme = signal<NsResolvedColorScheme>(\n this.mediaQuery?.matches ? 'dark' : 'light'\n );\n private readonly presetState = signal(this.options.preset);\n private readonly schemeState = signal<NsColorScheme>(\n this.readStoredScheme() ?? this.options.colorScheme\n );\n\n readonly preset = this.presetState.asReadonly();\n readonly colorScheme = this.schemeState.asReadonly();\n readonly scheme = this.colorScheme;\n readonly resolvedColorScheme = computed<NsResolvedColorScheme>(() =>\n this.schemeState() === 'system'\n ? this.systemScheme()\n : (this.schemeState() as NsResolvedColorScheme)\n );\n\n constructor() {\n validateNsPreset(this.options.preset);\n this.mediaQuery?.addEventListener('change', this.onSystemSchemeChange);\n this.destroyRef.onDestroy(() =>\n this.mediaQuery?.removeEventListener('change', this.onSystemSchemeChange)\n );\n this.applyTheme();\n }\n\n setPreset(preset: NsThemePreset): void {\n validateNsPreset(preset);\n this.presetState.set(preset);\n this.applyTheme();\n }\n\n setColorScheme(colorScheme: NsColorScheme): void {\n this.schemeState.set(colorScheme);\n this.persistScheme(colorScheme);\n this.applyTheme();\n }\n\n setScheme(colorScheme: NsColorScheme): void {\n this.setColorScheme(colorScheme);\n }\n\n private readonly onSystemSchemeChange = (\n event: MediaQueryListEvent\n ): void => {\n this.systemScheme.set(event.matches ? 'dark' : 'light');\n if (this.schemeState() === 'system') {\n this.applyTheme();\n }\n };\n\n private applyTheme(): void {\n const root = this.document.documentElement;\n const preset = this.presetState();\n const scheme = this.resolvedColorScheme();\n const variables = new Map<string, string>();\n\n for (const [path, value] of flattenTokens(preset.primitive)) {\n variables.set(tokenPathToCssVariable('primitive', path), String(value));\n }\n\n const semanticCommon = flattenTokens(preset.semantic.common);\n const semanticScheme = flattenTokens(preset.semantic.colorScheme[scheme]);\n const semantic = new Map([...semanticCommon, ...semanticScheme]);\n for (const [path, reference] of semantic) {\n variables.set(\n tokenPathToCssVariable('semantic', path),\n referenceToCssVariable(reference)\n );\n }\n for (const [path, reference] of semanticCommon) {\n variables.set(\n tokenPathToCssVariable('semantic', `common.${path}`),\n referenceToCssVariable(reference)\n );\n }\n\n for (const [path, reference] of flattenTokens(preset.components)) {\n variables.set(\n tokenPathToCssVariable('component', path),\n referenceToCssVariable(reference)\n );\n }\n\n for (const variable of this.activeVariables) {\n if (!variables.has(variable)) {\n root.style.removeProperty(variable);\n }\n }\n for (const [variable, value] of variables) {\n root.style.setProperty(variable, value);\n }\n\n this.activeVariables.clear();\n for (const variable of variables.keys()) {\n this.activeVariables.add(variable);\n }\n\n root.dataset['nsPreset'] = preset.name;\n root.dataset['nsColorScheme'] = scheme;\n root.style.colorScheme = scheme;\n }\n\n private createMediaQuery(): MediaQueryList | undefined {\n const view = this.document.defaultView;\n return this.browser && typeof view?.matchMedia === 'function'\n ? view.matchMedia('(prefers-color-scheme: dark)')\n : undefined;\n }\n\n private readStoredScheme(): NsResolvedColorScheme | undefined {\n if (!this.browser || this.options.storageKey === false) {\n return undefined;\n }\n\n try {\n const stored = this.document.defaultView?.localStorage.getItem(\n this.options.storageKey\n );\n return stored === 'light' || stored === 'dark' ? stored : undefined;\n } catch {\n return undefined;\n }\n }\n\n private persistScheme(colorScheme: NsColorScheme): void {\n if (!this.browser || this.options.storageKey === false) {\n return;\n }\n\n try {\n const storage = this.document.defaultView?.localStorage;\n if (colorScheme === 'system') {\n storage?.removeItem(this.options.storageKey);\n } else {\n storage?.setItem(this.options.storageKey, colorScheme);\n }\n } catch {\n // Storage can be unavailable in privacy-restricted browser contexts.\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type NsTimelineSize = 'sm' | 'md';\n\n/**\n * Vertical list of dated events. Renders an actual `<ol>` so screen readers\n * announce it as a list; `ns-timeline-item` renders the individual `<li>`\n * rows and reads `size` from this host through `:host-context`.\n */\n@Component({\n selector: 'ns-timeline',\n standalone: true,\n template: `<ol class=\"ns-timeline__list\">\n <ng-content />\n </ol>`,\n styleUrl: './timeline.component.scss',\n host: {\n '[class.ns-timeline]': 'true',\n '[class.ns-timeline--sm]': \"size() === 'sm'\",\n '[class.ns-timeline--md]': \"size() === 'md'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTimelineComponent {\n readonly size = input<NsTimelineSize>('md');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsColor } from '../../types';\n\n/**\n * `accent` is a violet event marker specific to the timeline (not part of\n * the shared `NsColor` union), alongside the `info` tone already used by\n * other status-driven components such as `ns-chip`.\n */\nexport type NsTimelineItemColor = NsColor | 'info' | 'accent';\n\n@Component({\n selector: 'ns-timeline-item',\n standalone: true,\n template: `\n <li class=\"ns-timeline-item__row\">\n <span class=\"ns-timeline-item__marker\" aria-hidden=\"true\">\n <span class=\"ns-timeline-item__dot\"></span>\n <span class=\"ns-timeline-item__connector\"></span>\n </span>\n <div class=\"ns-timeline-item__content\">\n <p class=\"ns-timeline-item__title\">{{ title() }}</p>\n @if (meta()) {\n <p class=\"ns-timeline-item__meta\">{{ meta() }}</p>\n }\n <div class=\"ns-timeline-item__extra\"><ng-content /></div>\n </div>\n </li>\n `,\n styleUrl: './timeline.component.scss',\n host: {\n '[class.ns-timeline-item]': 'true',\n '[class.ns-timeline-item--neutral]': \"color() === 'neutral'\",\n '[class.ns-timeline-item--primary]': \"color() === 'primary'\",\n '[class.ns-timeline-item--success]': \"color() === 'success'\",\n '[class.ns-timeline-item--info]': \"color() === 'info'\",\n '[class.ns-timeline-item--warning]': \"color() === 'warning'\",\n '[class.ns-timeline-item--danger]': \"color() === 'danger'\",\n '[class.ns-timeline-item--accent]': \"color() === 'accent'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTimelineItemComponent {\n readonly color = input<NsTimelineItemColor>('neutral');\n readonly title = input.required<string>();\n readonly meta = input<string | undefined>(undefined);\n}\n","import { Signal, signal } from '@angular/core';\nimport { NsToastCloseReason } from '../interfaces/toast-config';\n\nexport class NsToastHandle {\n private readonly closeReason = signal<NsToastCloseReason | undefined>(\n undefined\n );\n readonly closed: Signal<NsToastCloseReason | undefined> = this.closeReason;\n\n constructor(\n private readonly closeToast: (reason: NsToastCloseReason) => void\n ) {}\n\n dismiss(): void {\n this.closeToast('programmatic');\n }\n\n resolve(reason: NsToastCloseReason): void {\n this.closeReason.set(reason);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n inject,\n input,\n output\n} from '@angular/core';\nimport {\n NsToastAction,\n NsToastCloseReason,\n NsToastPlacement,\n NsToastVariant\n} from './interfaces/toast-config';\n\n@Component({\n selector: 'ns-toast',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"ns-toast__message\">\n @if (textMessage() !== null) {\n {{ textMessage() }}\n } @else if (templateMessage()) {\n <ng-container [ngTemplateOutlet]=\"templateMessage()\" />\n }\n </div>\n @if (action()) {\n <button class=\"ns-toast__action\" type=\"button\" (click)=\"triggerAction()\">\n {{ action()?.label }}\n </button>\n }\n @if (closable()) {\n <button\n class=\"ns-toast__close\"\n type=\"button\"\n aria-label=\"Close notification\"\n (click)=\"dismiss('close')\"\n >\n ×\n </button>\n }\n `,\n styleUrl: './toast.component.scss',\n host: {\n role: 'status',\n '[class.ns-toast]': 'true',\n '[class.ns-toast--success]': \"variant() === 'success'\",\n '[class.ns-toast--warning]': \"variant() === 'warning'\",\n '[class.ns-toast--info]': \"variant() === 'info'\",\n '[class.ns-toast--danger]': \"variant() === 'danger'\",\n '[attr.data-variant]': 'variant()',\n '[attr.data-placement]': 'placement()',\n '(mouseenter)': 'pause()',\n '(mouseleave)': 'resume()',\n '(focusin)': 'pause()',\n '(focusout)': 'onFocusOut($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsToastComponent implements AfterViewInit, OnDestroy {\n readonly message = input.required<string | TemplateRef<unknown>>();\n readonly variant = input<NsToastVariant>('info');\n readonly placement = input<NsToastPlacement>('top-end');\n readonly duration = input(5000);\n readonly action = input<NsToastAction | undefined>();\n readonly closable = input(true);\n readonly dismissed = output<NsToastCloseReason>();\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private timer?: ReturnType<typeof setTimeout>;\n private remaining = 0;\n private startedAt = 0;\n\n ngAfterViewInit(): void {\n this.remaining = this.duration();\n this.resume();\n }\n\n ngOnDestroy(): void {\n this.pause();\n }\n\n textMessage(): string | null {\n const message = this.message();\n return typeof message === 'string' ? message : null;\n }\n\n templateMessage(): TemplateRef<unknown> | null {\n const message = this.message();\n return message instanceof TemplateRef ? message : null;\n }\n\n pause(): void {\n if (!this.timer) {\n return;\n }\n clearTimeout(this.timer);\n this.timer = undefined;\n this.remaining -= Date.now() - this.startedAt;\n }\n\n resume(): void {\n if (this.timer || this.remaining <= 0) {\n return;\n }\n this.startedAt = Date.now();\n this.timer = setTimeout(() => this.dismiss('timeout'), this.remaining);\n }\n\n dismiss(reason: NsToastCloseReason): void {\n this.pause();\n this.dismissed.emit(reason);\n }\n\n triggerAction(): void {\n this.dismiss('action');\n }\n\n onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.element.nativeElement.contains(next)) {\n this.resume();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsToastPlacement } from './interfaces/toast-config';\n\n@Component({\n selector: 'ns-toast-region',\n standalone: true,\n template: '',\n styleUrl: './toast-region.component.scss',\n host: {\n '[attr.data-placement]': 'placement()',\n 'aria-live': 'polite',\n 'aria-relevant': 'additions',\n 'aria-label': 'Notifications'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsToastRegionComponent {\n readonly placement = input<NsToastPlacement>('top-end');\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n DOCUMENT,\n EnvironmentInjector,\n Injectable,\n PLATFORM_ID,\n createComponent,\n inject,\n type OnDestroy\n} from '@angular/core';\nimport { NS_TOAST_OPTIONS } from '../../theme/theme.provider';\nimport { NsToastCloseReason, NsToastOptions } from '../interfaces/toast-config';\nimport { NsToastHandle } from '../models/toast-handle';\nimport { NsToastComponent } from '../toast.component';\nimport { NsToastRegionComponent } from '../toast-region.component';\n\ninterface QueuedToast {\n options: NsToastOptions;\n handle: NsToastHandle;\n}\n\ninterface VisibleToast {\n componentRef: ComponentRef<NsToastComponent>;\n options: NsToastOptions;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NsToastService implements OnDestroy {\n private readonly leaveDuration = 200;\n\n private readonly applicationRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly browser = isPlatformBrowser(this.platformId);\n private readonly toastOptions = inject(NS_TOAST_OPTIONS);\n private readonly pending: QueuedToast[] = [];\n private readonly visible = new Map<NsToastHandle, VisibleToast>();\n private region?: ComponentRef<NsToastRegionComponent>;\n\n get maxVisible(): number {\n return this.document.defaultView?.innerWidth &&\n this.document.defaultView.innerWidth < 768\n ? 1\n : 2;\n }\n\n /** SSR resolves immediately because notifications have no browser region. */\n show(options: NsToastOptions): NsToastHandle {\n if (!this.browser) {\n const handle = new NsToastHandle(() => undefined);\n handle.resolve('programmatic');\n return handle;\n }\n const handle = new NsToastHandle((reason) => this.dismiss(handle, reason));\n this.pending.push({ options, handle });\n this.showPending();\n return handle;\n }\n\n private showPending(): void {\n while (this.visible.size < this.maxVisible && this.pending.length) {\n const toast = this.pending.shift();\n if (toast) {\n this.showToast(toast);\n }\n }\n }\n\n private showToast({ options, handle }: QueuedToast): void {\n const componentRef = createComponent(NsToastComponent, {\n environmentInjector: this.environmentInjector\n });\n componentRef.setInput('message', options.message);\n componentRef.setInput('variant', options.variant ?? 'info');\n componentRef.setInput('placement', this.toastOptions.placement);\n componentRef.setInput('duration', options.duration ?? 5000);\n componentRef.setInput('action', options.action);\n componentRef.setInput('closable', options.closable ?? true);\n componentRef.instance.dismissed.subscribe((reason) => {\n if (reason === 'action') {\n options.action?.handler();\n }\n this.dismiss(handle, reason);\n });\n this.applicationRef.attachView(componentRef.hostView);\n this.getRegion().location.nativeElement.appendChild(\n componentRef.location.nativeElement\n );\n componentRef.changeDetectorRef.detectChanges();\n this.visible.set(handle, { componentRef, options });\n }\n\n private dismiss(handle: NsToastHandle, reason: NsToastCloseReason): void {\n const queuedIndex = this.pending.findIndex(\n (toast) => toast.handle === handle\n );\n if (queuedIndex >= 0) {\n const [toast] = this.pending.splice(queuedIndex, 1);\n toast.handle.resolve(reason);\n toast.options.onClose?.(reason);\n return;\n }\n const visibleToast = this.visible.get(handle);\n if (!visibleToast) {\n return;\n }\n this.visible.delete(handle);\n handle.resolve(reason);\n visibleToast.options.onClose?.(reason);\n visibleToast.componentRef.location.nativeElement.classList.add(\n 'ns-toast--leaving'\n );\n this.showPending();\n setTimeout(\n () => this.destroyToast(visibleToast.componentRef),\n this.leaveDuration\n );\n }\n\n ngOnDestroy(): void {\n for (const { componentRef } of this.visible.values()) {\n if (!this.applicationRef.destroyed) {\n this.applicationRef.detachView(componentRef.hostView);\n }\n componentRef.location.nativeElement.remove();\n componentRef.destroy();\n }\n this.visible.clear();\n this.pending.length = 0;\n this.destroyRegion(false);\n }\n\n private destroyToast(componentRef: ComponentRef<NsToastComponent>): void {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.location.nativeElement.remove();\n componentRef.destroy();\n this.destroyRegionIfEmpty();\n }\n\n private getRegion(): ComponentRef<NsToastRegionComponent> {\n if (this.region) {\n return this.region;\n }\n const region = createComponent(NsToastRegionComponent, {\n environmentInjector: this.environmentInjector\n });\n region.setInput('placement', this.toastOptions.placement);\n this.applicationRef.attachView(region.hostView);\n region.location.nativeElement.setAttribute(\n 'dir',\n this.document.documentElement.dir === 'rtl' ? 'rtl' : 'ltr'\n );\n this.document.body.appendChild(region.location.nativeElement);\n region.changeDetectorRef.detectChanges();\n this.region = region;\n return region;\n }\n\n private destroyRegionIfEmpty(): void {\n if (\n this.visible.size ||\n this.pending.length ||\n this.region?.location.nativeElement.querySelector('ns-toast')\n ) {\n return;\n }\n this.destroyRegion();\n }\n\n private destroyRegion(detachView = true): void {\n if (!this.region) {\n return;\n }\n if (detachView) {\n this.applicationRef.detachView(this.region.hostView);\n }\n this.region.location.nativeElement.remove();\n this.region.destroy();\n this.region = undefined;\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsVariant } from '../../types';\n\n@Component({\n selector: 'ns-surface',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './surface.component.scss',\n host: {\n '[class.ns-surface]': 'true',\n '[class.ns-surface--solid]': \"variant() === 'solid'\",\n '[class.ns-surface--soft]': \"variant() === 'soft'\",\n '[class.ns-surface--outline]': \"variant() === 'outline'\",\n '[class.ns-surface--ghost]': \"variant() === 'ghost'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSurfaceComponent {\n readonly variant = input<NsVariant>('solid');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n contentChildren,\n effect,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { NsKey, NsOrientation } from '../../types';\nimport { getNsNextNavigableIndex, NsAriaIdService } from '../a11y';\n\n@Component({\n selector: 'ns-tab',\n standalone: true,\n template: `<section\n class=\"ns-tab__panel\"\n role=\"tabpanel\"\n [id]=\"panelId\"\n [attr.aria-labelledby]=\"tabId\"\n [hidden]=\"!selected()\"\n >\n <ng-content />\n </section>`,\n styleUrls: ['./tabs.component.scss'],\n host: {\n '[class.ns-tab]': 'true',\n '[attr.data-state]': \"selected() ? 'active' : 'inactive'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTabComponent {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false);\n readonly selected = signal(false);\n readonly tabId = inject(NsAriaIdService).create('ns-tab');\n readonly panelId = `${this.tabId}-panel`;\n\n readonly element = inject(ElementRef<HTMLElement>);\n}\n\nexport type NsTabsVariant = 'underline' | 'pill';\n\n@Component({\n selector: 'ns-tabs',\n standalone: true,\n template: `\n <div\n class=\"ns-tabs__list\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation()\"\n >\n @for (tab of tabs(); track tab.key(); let index = $index) {\n <button\n class=\"ns-tabs__tab\"\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.tabId\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-selected]=\"tab.selected()\"\n [attr.data-state]=\"tab.selected() ? 'active' : 'inactive'\"\n [attr.tabindex]=\"tab.selected() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n (click)=\"select(tab.key())\"\n (keydown)=\"onKeydown($event, index)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n <ng-content />\n `,\n styleUrls: ['./tabs.component.scss'],\n host: {\n '[class.ns-tabs]': 'true',\n '[class.ns-tabs--underline]': \"variant() === 'underline'\",\n '[class.ns-tabs--pill]': \"variant() === 'pill'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTabsComponent {\n readonly orientation = input<NsOrientation>('horizontal');\n readonly variant = input<NsTabsVariant>('underline');\n readonly selectedKey = model<NsKey | undefined>(undefined);\n readonly tabs = contentChildren(NsTabComponent);\n private readonly element = inject(ElementRef<HTMLElement>);\n\n constructor() {\n effect(() => this.syncSelection());\n }\n\n select(key: NsKey): void {\n const tab = this.tabs().find((candidate) => candidate.key() === key);\n if (!tab || tab.disabled()) {\n return;\n }\n this.selectedKey.set(key);\n }\n\n onKeydown(event: KeyboardEvent, index: number): void {\n const key = event.key;\n if (\n ![\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End'\n ].includes(key)\n ) {\n return;\n }\n const next = getNsNextNavigableIndex(\n this.tabs().map((tab) => ({ key: tab.key(), disabled: tab.disabled() })),\n index,\n key as\n 'ArrowDown' | 'ArrowUp' | 'ArrowLeft' | 'ArrowRight' | 'Home' | 'End',\n this.orientation()\n );\n if (next >= 0) {\n event.preventDefault();\n const tab = this.tabs()[next];\n this.select(tab.key());\n const button = this.element.nativeElement.querySelector(\n `[aria-controls=\"${tab.panelId}\"]`\n ) as HTMLButtonElement | null;\n button?.focus();\n }\n }\n\n private syncSelection(): void {\n const tabs = this.tabs();\n const selected =\n this.selectedKey() ?? tabs.find((tab) => !tab.disabled())?.key();\n if (selected !== undefined && this.selectedKey() !== selected) {\n this.selectedKey.set(selected);\n }\n for (const tab of tabs) {\n tab.selected.set(tab.key() === selected);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n contentChildren,\n effect,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { NsKey, NsSelectionMode } from '../../types';\nimport { getNsNextNavigableIndex, NsTypeaheadController } from '../a11y';\n\n@Component({\n selector: 'ns-tag',\n standalone: true,\n template: '<ng-content />',\n styleUrls: ['./tag-group.component.scss'],\n host: {\n role: 'option',\n '[attr.data-ns-tag-key]': 'key()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'active() ? 0 : -1',\n '[class.ns-tag]': 'true',\n '[class.ns-tag--selected]': 'selected()',\n '[class.ns-tag--disabled]': 'disabled()',\n '[attr.data-selected]': 'selected()',\n '[attr.data-disabled]': 'disabled()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTagComponent {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false);\n readonly selected = signal(false);\n readonly active = signal(false);\n readonly element = inject(ElementRef<HTMLElement>);\n}\n\n@Component({\n selector: 'ns-tag-group',\n standalone: true,\n template: '<ng-content />',\n styleUrls: ['./tag-group.component.scss'],\n host: {\n role: 'listbox',\n '[class.ns-tag-group]': 'true',\n '[attr.aria-label]': 'label()',\n '[attr.aria-multiselectable]': \"selectionMode() === 'multiple'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTagGroupComponent {\n readonly label = input('Tags');\n readonly selectionMode = input<NsSelectionMode>('multiple');\n readonly selectedKeys = model<readonly NsKey[]>([]);\n readonly tags = contentChildren(NsTagComponent);\n private readonly typeahead = new NsTypeaheadController<{\n label: string;\n disabled: boolean;\n }>();\n private activeIndex = -1;\n\n constructor() {\n effect(() => this.syncState());\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const tag = this.tags().find((candidate) =>\n candidate.element.nativeElement.contains(event.target as Node)\n );\n if (tag) {\n this.select(tag.key());\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n const tags = this.tags();\n if (!tags.length) {\n return;\n }\n if (event.key === ' ' || event.key === 'Enter') {\n const tag =\n tags[this.activeIndex] ?? tags.find((item) => !item.disabled());\n if (tag) {\n event.preventDefault();\n this.select(tag.key());\n }\n return;\n }\n let next = -1;\n if (['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n next = getNsNextNavigableIndex(\n tags.map((tag) => ({ key: tag.key(), disabled: tag.disabled() })),\n this.activeIndex,\n event.key as 'ArrowLeft' | 'ArrowRight' | 'Home' | 'End',\n 'horizontal'\n );\n } else {\n next = this.typeahead.find(\n tags.map((tag) => ({ label: tag.label(), disabled: tag.disabled() })),\n event.key,\n this.activeIndex\n );\n }\n if (next >= 0) {\n event.preventDefault();\n this.focus(next);\n }\n }\n\n select(key: NsKey): void {\n const tag = this.tags().find((candidate) => candidate.key() === key);\n if (!tag || tag.disabled() || this.selectionMode() === 'none') {\n return;\n }\n const selected = new Set(this.selectedKeys());\n if (this.selectionMode() === 'multiple') {\n selected.has(key) ? selected.delete(key) : selected.add(key);\n } else {\n selected.clear();\n selected.add(key);\n }\n this.selectedKeys.set([...selected]);\n }\n\n private focus(index: number): void {\n this.activeIndex = index;\n this.tags()[index].element.nativeElement.focus();\n this.syncState();\n }\n\n private syncState(): void {\n const selected = new Set(this.selectedKeys());\n for (const [index, tag] of this.tags().entries()) {\n tag.selected.set(selected.has(tag.key()));\n tag.active.set(index === this.activeIndex);\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\n\n@Component({\n selector: 'ns-tooltip',\n standalone: true,\n template: '{{ message() }}',\n styleUrl: './tooltip.component.scss',\n host: {\n role: 'tooltip',\n '[id]': 'id()',\n '[class.ns-tooltip]': 'true',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTooltipComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly origin = input.required<HTMLElement>();\n readonly message = input.required<string>();\n readonly id = input.required<string>();\n readonly placement = input<NsPlacement>('top');\n readonly closed = output<NsOverlayCloseReason>();\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n origin: this.origin(),\n placement: this.placement(),\n closeOnEscape: true,\n closeOnOutsidePointer: false,\n trapFocus: false,\n restoreFocus: false\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n OnDestroy,\n ViewContainerRef,\n input,\n inject\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport { NsTooltipComponent } from './tooltip.component';\n\nlet tooltipId = 0;\n\n@Directive({\n selector: '[nsTooltip]',\n standalone: true,\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'show()',\n '(focusout)': 'hide()'\n }\n})\nexport class NsTooltipDirective implements OnDestroy {\n readonly message = input.required<string>({ alias: 'nsTooltip' });\n readonly placement = input<NsPlacement>('top', {\n alias: 'nsTooltipPlacement'\n });\n readonly delay = input(300, { alias: 'nsTooltipDelay' });\n\n private readonly origin = inject(ElementRef<HTMLElement>);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly id = `ns-tooltip-${tooltipId++}`;\n private componentRef?: ComponentRef<NsTooltipComponent>;\n private timer?: ReturnType<typeof setTimeout>;\n private previousDescription: string | null = null;\n\n show(): void {\n this.cancelPendingHide();\n if (this.componentRef?.instance.isOpen()) {\n return;\n }\n if (this.delay() === 0) {\n this.open();\n return;\n }\n this.timer = setTimeout(() => this.open(), this.delay());\n }\n\n hide(): void {\n this.cancelPendingHide();\n this.componentRef?.instance.isOpen.set(false);\n }\n\n ngOnDestroy(): void {\n this.cancelPendingHide();\n this.componentRef?.destroy();\n }\n\n private open(): void {\n const componentRef = this.componentRef ?? this.createComponent();\n this.addDescription();\n componentRef.instance.isOpen.set(true);\n }\n\n private createComponent(): ComponentRef<NsTooltipComponent> {\n const componentRef = this.viewContainer.createComponent(NsTooltipComponent);\n componentRef.setInput('origin', this.origin.nativeElement);\n componentRef.setInput('message', this.message());\n componentRef.setInput('id', this.id);\n componentRef.setInput('placement', this.placement());\n componentRef.instance.closed.subscribe(() => this.removeDescription());\n this.componentRef = componentRef;\n return componentRef;\n }\n\n private addDescription(): void {\n const element = this.origin.nativeElement;\n this.previousDescription ??= element.getAttribute('aria-describedby');\n const descriptions = new Set(\n (this.previousDescription ?? '').split(' ').filter(Boolean)\n );\n descriptions.add(this.id);\n element.setAttribute('aria-describedby', [...descriptions].join(' '));\n }\n\n private removeDescription(): void {\n if (this.previousDescription === null) {\n this.origin.nativeElement.removeAttribute('aria-describedby');\n } else {\n this.origin.nativeElement.setAttribute(\n 'aria-describedby',\n this.previousDescription\n );\n }\n this.previousDescription = null;\n }\n\n private cancelPendingHide(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n}\n","/*\n * Public API Surface of @ng-solid/design-system\n */\n\nexport * from './types';\nexport * from './lib/accordion';\nexport * from './lib/alert';\nexport * from './lib/avatar';\nexport * from './lib/badge';\nexport * from './lib/breadcrumbs';\nexport * from './lib/button';\nexport * from './lib/button-group';\nexport * from './lib/card';\nexport * from './lib/chip';\nexport * from './lib/collection';\nexport * from './lib/command-palette';\nexport * from './lib/comment';\nexport * from './lib/description';\nexport * from './lib/divider';\nexport * from './lib/drawer';\nexport * from './lib/editor';\nexport * from './lib/empty-state';\nexport * from './lib/form';\nexport * from './lib/image-upload';\nexport * from './lib/link';\nexport * from './lib/menu';\nexport * from './lib/meter';\nexport * from './lib/modal';\nexport * from './lib/overlay';\nexport * from './lib/pagination';\nexport * from './lib/popover';\nexport * from './lib/progress-bar';\nexport * from './lib/schedule';\nexport * from './lib/schema';\nexport * from './lib/side-nav';\nexport * from './lib/skeleton';\nexport * from './lib/stat-card';\nexport * from './lib/template';\nexport * from './lib/theme';\nexport * from './lib/timeline';\nexport * from './lib/toast';\nexport * from './lib/surface';\nexport * from './lib/tabs';\nexport * from './lib/tag-group';\nexport * from './lib/tooltip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NAVIGATION_KEYS","DOCUMENT","i1"],"mappings":";;;;;;;;;;;;;;AAEA;MAEa,eAAe,CAAA;IAClB,MAAM,GAAG,CAAC;IAElB,MAAM,CAAC,MAAM,GAAG,IAAI,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC;AAChB,QAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,EAAE;IACnC;wGANW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCArB,cAAc,CAAA;AACR,IAAA,YAAY,GAAG,IAAI,GAAG,EAAU;IACzC,SAAS,GAAG,EAAE;AAEtB,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC;cACrB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG;cAC/B,SAAS;IACf;AAEA,IAAA,mBAAmB,CAAC,EAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3B;AAEA,IAAA,qBAAqB,CAAC,EAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B;AACD;MAOY,gBAAgB,CAAA;AACV,IAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AAEzC,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EACxD,KAAK,EAAE,SAAS,GAChB;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3D;wGAVW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAFhB,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,cAAc;AAC3B,iBAAA;;;AClCM,MAAM,qBAAqB,GAAG;IACnC,SAAS;IACT,YAAY;IACZ,wBAAwB;IACxB,4CAA4C;IAC5C,wBAAwB;IACxB,0BAA0B;IAC1B,0BAA0B;IAC1B;AACD,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAEL,SAAU,sBAAsB,CAAC,SAAsB,EAAA;AAC3D,IAAA,OAAO,KAAK,CAAC,IAAI,CACf,SAAS,CAAC,gBAAgB,CAAc,qBAAqB,CAAC,CAC/D,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1E;AAEM,SAAU,YAAY,CAAC,SAAsB,EAAA;IACjD,MAAM,OAAO,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,KAAK,EAAE;AAChB,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB;AAEM,SAAU,WAAW,CAAC,SAAsB,EAAA;AAChD,IAAA,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7C,OAAO,EAAE,KAAK,EAAE;AAChB,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB;SAEgB,eAAe,CAC7B,KAAY,EACZ,GAAG,QAAwC,EAAA;AAE3C,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE;IACjC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/E;;AC1BM,SAAU,uBAAuB,CACrC,KAAiC,EACjC,YAAoB,EACpB,GAAoB,EACpB,WAAA,GAAyC,UAAU,EACnD,IAAI,GAAG,IAAI,EAAA;AAEX,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,OAAO,CAAC,CAAC;IACX;IAEA,MAAM,OAAO,GAAG,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,YAAY;IAC3D,MAAM,QAAQ,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW;IACzD,IACE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,YAAY;QAC5C,WAAW,KAAK,YAAY,EAC5B;AACA,QAAA,OAAO,YAAY;IACrB;IACA,IACE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW;QACzC,WAAW,KAAK,UAAU,EAC1B;AACA,QAAA,OAAO,YAAY;IACrB;AACA,IAAA,IAAI,GAAG,KAAK,MAAM,EAAE;QAClB,OAAO,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC;AACA,IAAA,IAAI,GAAG,KAAK,KAAK,EAAE;AACjB,QAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD;AACA,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,YAAY;AAC7E,IAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE;AACxD,QAAA,IAAI,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM;QACjC,IAAI,IAAI,EAAE;AACR,YAAA,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;QAChE;QACA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;AACtC,YAAA,OAAO,YAAY;QACrB;QACA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC1B,YAAA,OAAO,KAAK;QACd;IACF;AACA,IAAA,OAAO,YAAY;AACrB;AAEA,SAAS,iBAAiB,CACxB,KAAiC,EACjC,KAAa,EACb,IAAY,EAAA;AAEZ,IAAA,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE;QACzE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AAC1B,YAAA,OAAO,KAAK;QACd;IACF;IACA,OAAO,CAAC,CAAC;AACX;;MCpEa,qBAAqB,CAAA;AAIH,IAAA,OAAA;IAHrB,KAAK,GAAG,EAAE;IACV,WAAW,GAAG,CAAC;AAEvB,IAAA,WAAA,CAA6B,UAAU,GAAG,EAAA;QAAb,IAAA,CAAA,OAAO,GAAP,OAAO;IAAS;IAE7C,IAAI,CAAC,KAAmB,EAAE,GAAW,EAAE,YAAY,GAAG,CAAC,CAAC,EAAA;AACtD,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/C,OAAO,CAAC,CAAC;QACX;AACA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG;AAC3E,QAAA,IAAI,CAAC,WAAW,GAAG,GAAG;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;AAEjD,QAAA,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE;AACxD,YAAA,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;AACnE,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,IACE,CAAC,IAAI,CAAC,QAAQ;gBACd,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EACtD;AACA,gBAAA,OAAO,KAAK;YACd;QACF;QACA,OAAO,CAAC,CAAC;IACX;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;IACtB;AACD;;MCYY,wBAAwB,CAAA;AAC1B,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAS;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;IACvB,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;AAE9D,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;wGAPvC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,mCAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,4DAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCzB;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2iFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAnCpC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;GAqBT,EAAA,IAAA,EAEK;AACJ,wBAAA,2BAA2B,EAAE,MAAM;AACnC,wBAAA,qCAAqC,EAAE,YAAY;AACnD,wBAAA,qCAAqC,EAAE,YAAY;AACnD,wBAAA,mBAAmB,EACjB;qBACH,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,2iFAAA,CAAA,EAAA;;MAsBpC,oBAAoB,CAAA;AACtB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,YAAY,GAAG,KAAK,CAAmB,EAAE,mFAAC;AAC1C,IAAA,KAAK,GAAG,eAAe,CAAC,wBAAwB,4EAAC;AAE1D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;IACJ;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,MAAM,OAAO,GAAI,KAAK,CAAC,MAA6B,EAAE,OAAO,CAC3D,yBAAyB,CAC1B;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,GAAG,KAAK,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAClB;IACF;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAChE;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KACnC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAC1D;AACD,QAAA,MAAM,KAAK,GAAG,uBAAuB,CACnC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EACrE,OAAO,EACP,KAAK,CAAC,GAA+C,CACtD;AACD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAA4B;YACrE,WAAW,CAAC,aAAa,CAAoB,QAAQ,CAAC,EAAE,KAAK,EAAE;QACjE;IACF;AAEA,IAAA,MAAM,CAAC,GAAU,EAAA;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC;QACtE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC5B;QACF;QACA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,QAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACrB,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACtB;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACpB,QAAQ,CAAC,KAAK,EAAE;YAClB;AACA,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QACnB;AACA,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;AAEQ,IAAA,OAAO,CAAC,OAA2B,EAAA;QACzC,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,SAAS;QAClB;QACA,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;cAC1D,GAAG,EAAE;IACX;wGAvEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAGE,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAV/C,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2iFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAOf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAVhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,sBAAsB,EAAE;qBACzB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,2iFAAA,CAAA,EAAA;kXAKd,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA;sBAWxD,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAWhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MC3CxB,gBAAgB,CAAA;AAClB,IAAA,OAAO,GAAG,KAAK,CAAiB,MAAM,8EAAC;AACvC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IACzB,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC3D,IAAA,YAAY,GAAG,KAAK,CAAS,eAAe,mFAAC;IAC7C,SAAS,GAAG,MAAM,EAAQ;IAEnC,QAAQ,GAAA;AACN,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,cAAc;AACvB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,gBAAgB;AACzB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,UAAU;AACnB,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;wGAlBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCjB;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8xDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAzBS,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqCf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxC5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,wBAAwB,EAAE,sBAAsB;AAChD,wBAAA,2BAA2B,EAAE,yBAAyB;AACtD,wBAAA,2BAA2B,EAAE,yBAAyB;AACtD,wBAAA,0BAA0B,EAAE;qBAC7B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,8xDAAA,CAAA,EAAA;;;MCZpC,iBAAiB,CAAA;AACnB,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,0EAAC;AACvB,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,0EAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;AAC5B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AACxB,IAAA,KAAK,GAAG,KAAK,CAAsB,QAAQ,4EAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAS,IAAI,2EAAC;AAElB,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;IACnC,SAAS,GAAG,QAAQ,CAC3B,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACxD;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;wGAfW,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzBlB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yhDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAYU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5B7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;GAaT,EAAA,IAAA,EAEK;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,2BAA2B,EAAE,sBAAsB;AACnD,wBAAA,2BAA2B,EAAE,sBAAsB;AACnD,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE;qBAC1B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,yhDAAA,CAAA,EAAA;;;ACvBjD;;;;;;;AAOG;MAsBU,sBAAsB,CAAA;IACxB,OAAO,GAAG,KAAK,CAAC,CAAC,+EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAClD,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,0EAAC;AAC1C,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;AAC5C,IAAA,SAAS,GAAG,KAAK,CAAS,cAAc,gFAAC;IAEjC,OAAO,GAAG,eAAe,CAAC,iBAAiB,+EAC1D,IAAI,EAAE,UAAU,EAAA,CAChB;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,OAAO,GAAG,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACzD,IAAA,CAAC,mFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK;AACpE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACpD,IAAA,CAAC,oFAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAI;AACnC,YAAA,MAAM,OAAO,GAAG,SAAS,CAAC,aAA4B;AACtD,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,EAAE,GAAG,MAAM;AACrD,YAAA,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI;AACrE,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;AACvD,QAAA,CAAC,CAAC;IACJ;wGApCW,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAMU,iBAAiB,EAAA,IAAA,EACpD,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzBR;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,onCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArBlC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN;;;;;;;;;GAST,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,onCAAA,CAAA,EAAA;AAQJ,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,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,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,iBAAiB,CAAA,EAAA,EAAA,GAAE;AAC5D,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvCH,SAAS,iBAAiB,CAAC,KAAc,EAAA;AACvC,IAAA,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK;AACtC,UAAE;AACF,UAAE,eAAe,CAAC,KAAK,CAAC;AAC5B;MAqBa,gBAAgB,CAAA;IAClB,KAAK,GAAG,KAAK,CAA8B,SAAS,6EAC3D,SAAS,EAAE,iBAAiB,EAAA,CAC5B;AACO,IAAA,IAAI,GAAG,KAAK,CAAc,OAAO,2EAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,gFAAC;AAEhD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS;QAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,OAAO,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,SAAS;AAChD,IAAA,CAAC,sFAAC;IAEO,SAAS,GAAG,QAAQ,CAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,SAAS,gFACpE;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;QACpC,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,EAAE;AAClC,QAAA,OAAO,KAAK,IAAI,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7C,IAAA,CAAC,mFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAE5B,MAAK;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,QAAQ;AACtC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK;AAAE,YAAA,OAAO,KAAK;AAEvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAY;QAC9C,IAAI,KAAK,IAAI,GAAG;AAAE,YAAA,OAAO,UAAU;QACnC,OAAO,KAAK,IAAI,EAAE,GAAG,QAAQ,GAAG,QAAQ;AAC1C,IAAA,CAAC,iFAAC;wGAlCS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,o/BAhBjB,kEAAkE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAgBjE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAnB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,kEAAkE,EAAA,IAAA,EAEtE;AACJ,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,0BAA0B,EAAE,2BAA2B;AACvD,wBAAA,0BAA0B,EAAE,2BAA2B;AACvD,wBAAA,4BAA4B,EAAE,6BAA6B;AAC3D,wBAAA,uBAAuB,EAAE,wBAAwB;AACjD,wBAAA,0BAA0B,EAAE,2BAA2B;AACvD,wBAAA,eAAe,EAAE,2BAA2B;AAC5C,wBAAA,oBAAoB,EAAE,4CAA4C;AAClE,wBAAA,aAAa,EAAE,2CAA2C;AAC1D,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA;;;MCbpC,yBAAyB,CAAA;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AACxB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;wGAFpB,yBAAyB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,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,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,mCAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAf1B;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ytDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,QAAA,EACN;;;;;;GAMT,EAAA,IAAA,EAEK;AACJ,wBAAA,qBAAqB,EAAE,2BAA2B;AAClD,wBAAA,4BAA4B,EAAE,MAAM;AACpC,wBAAA,qCAAqC,EAAE;qBACxC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,ytDAAA,CAAA,EAAA;;;MCJpC,sBAAsB,CAAA;AACxB,IAAA,SAAS,GAAG,KAAK,CAAS,YAAY,gFAAC;wGADrC,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,4VATvB,sDAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ytDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASrD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,sDAAsD,EAAA,IAAA,EAE1D;AACJ,wBAAA,IAAI,EAAE,YAAY;AAClB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,wBAAwB,EAAE;qBAC3B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,ytDAAA,CAAA,EAAA;;;ACGjD,SAAS,kBAAkB,CAAC,KAAc,EAAA;AACxC,IAAA,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAClE;MAuDa,iBAAiB,CAAA;AACnB,IAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,2EAAC;AACrD,IAAA,OAAO,GAAG,KAAK,CAAkB,SAAS,8EAAC;AAC3C,IAAA,IAAI,GAAG,KAAK,CAAS,IAAI,2EAAC;AAC1B,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;IACxB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;IAC7B,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,QAAQ,GAAG,KAAK,CAA+B,SAAS,gFAC/D,SAAS,EAAE,kBAAkB,EAAA,CAC7B;AAEF;;;;;AAKG;AACM,IAAA,MAAM,GAAG,MAAM,CAAC,IAAI,6EAAC;AAE9B;;;;AAIG;AACM,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AAEjB,IAAA,OAAO,GACtB,SAAS,CAAC,QAAQ,CAAgC,SAAS,CAAC;IAE9D,KAAK,GAAA;QACH,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IACtC;wGAlCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,8CAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjDlB;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i/SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5BS,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAkDf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArD7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,IAAA,EAEK;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,0BAA0B,EAAE,SAAS;AACrC,wBAAA,8BAA8B,EAAE,YAAY;AAC5C,wBAAA,4BAA4B,EAAE,WAAW;AACzC,wBAAA,6BAA6B,EAAE,qBAAqB;AACpD,wBAAA,+BAA+B,EAAE,sBAAsB;AACvD,wBAAA,sBAAsB,EAAE,8CAA8C;AACtE,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,4BAA4B,EAAE,yBAAyB;AACvD,wBAAA,8BAA8B,EAAE,2BAA2B;AAC3D,wBAAA,6BAA6B,EAAE,0BAA0B;AACzD,wBAAA,4BAA4B,EAAE,yBAAyB;AACvD,wBAAA,2BAA2B,EAAE,wBAAwB;AACrD,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,i/SAAA,CAAA,EAAA;q+BAgCK,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACxF/D,MAAMA,iBAAe,GAAsB;IACzC,WAAW;IACX,SAAS;IACT,WAAW;IACX,YAAY;IACZ,MAAM;IACN;CACD;AAgBD;;;;;;;;AAQG;MACU,sBAAsB,CAAA;AACxB,IAAA,SAAS,GAAG,KAAK,CAAS,SAAS,gFAAC;AACpC,IAAA,WAAW,GAAG,KAAK,CAAgB,YAAY,kFAAC;AAChD,IAAA,aAAa,GAAG,KAAK,CAA6B,UAAU,oFAAC;AAC7D,IAAA,OAAO,GAAG,eAAe,CAAC,iBAAiB,8EAAC;IAE7C,WAAW,GAAG,CAAC;AAEvB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAACA,iBAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3D;QACF;AACA,QAAA,MAAM,IAAI,GAAG,uBAAuB,CAClC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAClE,IAAI,CAAC,WAAW,EAChB,KAAK,CAAC,GAAsB,EAC5B,IAAI,CAAC,WAAW,EAAE,CACnB;QACD,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB;IACF;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;IAChC;IAEQ,SAAS,GAAA;AACf,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB;QACF;AACA,QAAA,IACE,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM;YAClC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EACpC;AACA,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtE,YAAA,IAAI,CAAC,WAAW,GAAG,YAAY,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC;QACzD;QACA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ;QACnD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YAChC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC;AAC7C,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;wGArDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,uDAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,mCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAIE,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxB1C,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoBf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,aAAa,EAAE,uDAAuD;AACtE,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,qCAAqC,EAAE,gCAAgC;AACvE,wBAAA,mCAAmC,EAAE;qBACtC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA;2aAeZ,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBAQnD,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCxCxB,eAAe,CAAA;AACjB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAY,OAAO,8EAAC;wGAFjC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,onBAZhB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAYf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAf3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,wBAAwB,EAAE,uBAAuB;AACjD,wBAAA,uBAAuB,EAAE,sBAAsB;AAC/C,wBAAA,0BAA0B,EAAE,yBAAyB;AACrD,wBAAA,wBAAwB,EAAE;qBAC3B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA;;MAepC,qBAAqB,CAAA;wGAArB,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,qIALtB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAA,eAAA,EAC1B,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA;;MAYpC,mBAAmB,CAAA;wGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,iIALpB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA;;MAYpC,qBAAqB,CAAA;wGAArB,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,qIALtB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAA,eAAA,EAC1B,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6wCAAA,CAAA,EAAA;;;MCcpC,eAAe,CAAA;AACjB,IAAA,KAAK,GAAG,KAAK,CAAc,SAAS,4EAAC;AACrC,IAAA,OAAO,GAAG,KAAK,CAAgB,MAAM,8EAAC;AACtC,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,2EAAC;IAC9B,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC3D,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,YAAY,GAAG,KAAK,CAAS,QAAQ,mFAAC;IACtC,OAAO,GAAG,MAAM,EAAQ;wGAPtB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnChB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i+JAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAsBU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAtC3B,SAAS;+BACE,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;GAaT,EAAA,IAAA,EAEK;AACJ,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,wBAAwB,EAAE,uBAAuB;AACjD,wBAAA,uBAAuB,EAAE,sBAAsB;AAC/C,wBAAA,0BAA0B,EAAE,yBAAyB;AACrD,wBAAA,uBAAuB,EAAE,sBAAsB;AAC/C,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,yBAAyB,EAAE,sBAAsB;AACjD,wBAAA,uBAAuB,EAAE,oBAAoB;AAC7C,wBAAA,2BAA2B,EAAE,wBAAwB;AACrD,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,uBAAuB,EAAE,mBAAmB;AAC5C,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,i+JAAA,CAAA,EAAA;;;MC1DpC,sBAAsB,CAAA;AAcJ,IAAA,aAAA;AAbZ,IAAA,UAAU,GAAG,MAAM,CAClC,EAAE,iFACH;AACgB,IAAA,iBAAiB,GAAG,MAAM,CACzC,IAAI,GAAG,EAAQ,wFAChB;AAEQ,IAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AACpC,IAAA,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;AAClD,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oFAC3E;AAED,IAAA,WAAA,CAA6B,gBAAiC,QAAQ,EAAA;QAAzC,IAAA,CAAA,aAAa,GAAb,aAAa;IAA+B;AAEzE,IAAA,QAAQ,CAAC,KAA2C,EAAA;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAC3B,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CACjE;IACH;AAEA,IAAA,UAAU,CAAC,GAAS,EAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1C;AAEA,IAAA,MAAM,CAAC,GAAS,EAAA;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YAC3D;QACF;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C;QACF;QACA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjE;AAEA,IAAA,MAAM,CAAC,GAAS,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAChB;QACF;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC1B;QACF;QACA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAClB;iBAAO;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACf;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAQ,CAAC;IAC7C;AACD;;MCpCY,qBAAqB,CAAA;AACvB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;AAClD,IAAA,IAAI,GAAG,KAAK,CAAmB,IAAI,2EAAC;wGAHlC,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBtB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wnGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;GAaT,EAAA,IAAA,EAEK;AACJ,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE,iBAAiB;AAC/C,wBAAA,4BAA4B,EAAE;qBAC/B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,wnGAAA,CAAA,EAAA;;;AC2BjD,MAAM,eAAe,GAAG,CAAC;MAEZ,YAAY,CAAA;AAWZ,IAAA,MAAA;AACA,IAAA,MAAA;AACQ,IAAA,QAAA;AACA,IAAA,YAAA;AAbF,IAAA,cAAc,GAAG,IAAI,GAAG,EAEtC;AACK,IAAA,eAAe;IACf,WAAW,GAAG,KAAK;AACV,IAAA,mBAAmB;AAE3B,IAAA,MAAM,GAAG,MAAM,CAAmC,SAAS,6EAAC;AAErE,IAAA,WAAA,CACW,MAAmB,EACnB,MAA+B,EACvB,QAAkB,EAClB,YAGR,EAAA;QANA,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,MAAM,GAAN,MAAM;QACE,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;AAK7B,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa;AAC5C,QAAA,IAAI,CAAC,mBAAmB;YACtB,aAAa,YAAY,WAAW,GAAG,aAAa,GAAG,IAAI;IAC/D;AAEA,IAAA,MAAM,CAAC,OAAoB,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;QACA,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,eAAe,GAAG;YACrB,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,UAAU;YAC1B,WAAW,EAAE,OAAO,CAAC;SACtB;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3C;QACF;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QACtC,IAAI,CAAC,IAAI,EAAE;YACT;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACzD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,CAAA,EAAA,CAAI;QAC/C;AACA,QAAA,MAAM,QAAQ,GAAG,oBAAoB,CACnC,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,EACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,CACjB;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,QAAQ,CAAC,GAAG,CAAA,EAAA,CAAI;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAA,EAAA,CAAI;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,SAAS;IACzD;IAEA,YAAY,GAAA;AACV,QAAA,IACE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;AACtB,YAAA,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK;YACjB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,EAClD;YACA;QACF;QACA,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAClD;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,CAAC,SAA+B,cAAc,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IACjC;AAEA,IAAA,OAAO,CAAC,QAAgD,EAAA;AACtD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IACnD;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA,IAAA,aAAa,CAAC,MAA4B,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YAC1C,QAAQ,CAAC,MAAM,CAAC;QAClB;AACA,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;AACrE,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;QAClC;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe;QAC5C,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAC/C;QACF;QACA,IAAI,eAAe,CAAC,WAAW,EAAE,UAAU,KAAK,eAAe,CAAC,MAAM,EAAE;AACtE,YAAA,eAAe,CAAC,MAAM,CAAC,YAAY,CACjC,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,WAAW,CAC5B;QACH;aAAO;YACL,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;IAClC;AACD;MAGY,gBAAgB,CAAA;AACV,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;IAC5C,QAAQ,GAAmB,EAAE;AAC7B,IAAA,WAAW,GAAG,IAAI,GAAG,EAA6B;AAClD,IAAA,kBAAkB,GAAG,IAAI,GAAG,EAA6B;AAClE,IAAA,cAAc;AACd,IAAA,cAAc;IAEtB,IAAI,CAAC,SAA0B,EAAE,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;QAClE;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACjD,QAAA,MAAM,CAAC,SAAS,GAAG,oBAAoB;AACvC,QAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AACpB,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK;;;;;;AAMpB,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,yCAAA,EAA4C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAA,CAAG;QACzF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE;YAClC,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,YAAA,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,aAAa;AAC9C,SAAA,CAAC;AAEF,QAAA,MAAM,GAAG,GAAG,IAAI,YAAY,CAC1B,MAAM,EACN;YACE,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,YAAA,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,KAAK;AAClD,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,cAAc;AAC7C,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,eAAe;AACxC,YAAA,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;AAC3C,YAAA,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,IAAI,IAAI;AAC3D,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;AACpC,YAAA,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;AACzC,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;AAC5B,YAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI;SAClC,EACD,IAAI,CAAC,QAAQ,EACb,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CACjD;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE;QACxB,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,YAAY,EAAE;AAClB,QAAA,OAAO,GAAG;IACZ;IAEA,QAAQ,GAAA;QACN,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;IACpE;IAEQ,KAAK,CAAC,GAAiB,EAAE,MAA4B,EAAA;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;AACxC,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb;QACF;QACA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9B,QAAA,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,iBAAiB,EAAE;QACxB,GAAG,CAAC,YAAY,EAAE;IACpB;IAEQ,iBAAiB,GAAA;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,EAAE;YACR,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;QACA,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YAC9D,IAAI,CAAC,UAAU,EAAE;QACnB;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACzD,IAAI,CAAC,UAAU,EAAE;QACnB;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QACtC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC;AAC3E,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC;QACpE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,cAAc,EAAE;AAChD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;QACrE;AACA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,gBAAA,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;oBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;gBACpD;YACF;QACF;IACF;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QACtC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAC/B,aAAa,EACb,IAAI,CAAC,iBAAiB,EACtB,IAAI,CACL;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC;QACvE,IAAI,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AACzD,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;IACjC;AAEiB,IAAA,aAAa,GAAG,CAAC,KAAoB,KAAU;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,EAAE;YACR;QACF;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE;YACtD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YACnB;QACF;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;YAChD;QACF;QACA,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACrB,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;YAClB;QACF;AACA,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AACjD,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,IACE,KAAK,CAAC,QAAQ;AACd,aAAC,aAAa,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAChE;YACA,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QACzB;aAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,aAAa,KAAK,IAAI,EAAE;YACpD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1B;AACF,IAAA,CAAC;AAEgB,IAAA,iBAAiB,GAAG,CAAC,KAAmB,KAAU;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChC,QAAA,IACE,CAAC,GAAG;AACJ,YAAA,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB;AACjC,YAAA,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EACrD;YACA;QACF;AACA,QAAA,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;AACtB,IAAA,CAAC;IAEgB,eAAe,GAAG,MAAW;AAC5C,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,OAAO,CAAC,cAAc,EAAE;QAC1B;AACF,IAAA,CAAC;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;QACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;IAC9C;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc;AACvD,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;IACjC;IAEQ,UAAU,GAAA;QAChB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC7D,CAAC,KAAK,KAA2B,KAAK,YAAY,WAAW,CAC9D;AACD,QAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;gBAClD;YACF;YACA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE;oBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,oBAAA,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,aAAa;AAC7C,iBAAA,CAAC;YACJ;AACA,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI;AAClB,YAAA,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;QAC3C;IACF;AAEQ,IAAA,qBAAqB,CAAC,GAAiB,EAAA;AAC7C,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE;gBACV;YACF;AACA,YAAA,IAAI,OAAO,KAAK,GAAG,EAAE;AACnB,gBAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAC1B,gBAAA,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE;AAC7B,oBAAA,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;gBACvC;qBAAO;oBACL,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC;gBACtD;YACF;iBAAO;AACL,gBAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,gBAAA,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;YAC5C;QACF;IACF;IAEQ,YAAY,GAAA;QAClB,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;AAC/C,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK;AAC3B,YAAA,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE;AAC7B,gBAAA,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC;YACxC;iBAAO;gBACL,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC;YACvD;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;IAC1B;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,EAAE;IACrB;wGAzPW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AA6P5B,SAAU,oBAAoB,CAClC,MAAe,EACf,OAAgB,EAChB,SAAsB,EACtB,MAAc,EACd,aAAqB,EACrB,cAAsB,EAAA;AAEtB,IAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;AAC1E,IAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACvD,IAAA,MAAM,gBAAgB,GAAG,oBAAoB,CAC3C,MAAM,EACN,OAAO,EACP,gBAAgB,EAChB,MAAM,CACP;AACD,IAAA,MAAM,QAAQ,GAAG,sBAAsB,CACrC,SAAS,EACT,SAAS,EACT,OAAO,EACP,aAAa,EACb,cAAc;AAEd,UAAE;UACA,SAAS;IACb,OAAO;AACL,QAAA,GAAG,EAAE,KAAK,CACR,QAAQ,CAAC,GAAG,EACZ,eAAe,EACf,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,eAAe,CAClD;AACD,QAAA,IAAI,EAAE,KAAK,CACT,QAAQ,CAAC,IAAI,EACb,eAAe,EACf,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,eAAe,CAChD;QACD,SAAS,EAAE,QAAQ,KAAK,gBAAgB,GAAG,gBAAgB,GAAG;KAC/D;AACH;AAEA,SAAS,oBAAoB,CAC3B,MAAe,EACf,OAAgB,EAChB,SAAsB,EACtB,MAAc,EAAA;AAEd,IAAA,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAG5C;AACD,IAAA,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM;AAChC,IAAA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI;AAEtB,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM;IAC5C;AAAO,SAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAC3B,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG;AAChB,QAAA,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;IAC9B;AAAO,SAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AAC1B,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG;QAChB,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM;IAC7C;IACA,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE;AACvC,QAAA,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;QACrC;aAAO,IAAI,CAAC,SAAS,EAAE;AACrB,YAAA,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC;QACzD;IACF;AAAO,SAAA,IAAI,SAAS,KAAK,KAAK,EAAE;QAC9B,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;IACtC;SAAO,IAAI,CAAC,SAAS,EAAE;AACrB,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IACzD;AACA,IAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;AACjC;AAEA,SAAS,mBAAmB,CAAC,SAAsB,EAAA;AACjD,IAAA,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAG5C;AACD,IAAA,MAAM,QAAQ,GAA2B;AACvC,QAAA,GAAG,EAAE,QAAQ;AACb,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,IAAI,EAAE;KACP;AACD,IAAA,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAG,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE,GAAG,EAAE,EAAiB;AAC9E;AAEA,SAAS,sBAAsB,CAC7B,QAA2B,EAC3B,SAAsB,EACtB,OAAgB,EAChB,aAAqB,EACrB,cAAsB,EAAA;AAEtB,IAAA,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ;AACjE,UAAE,QAAQ,CAAC,GAAG,GAAG,eAAe;YAC5B,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,cAAc,GAAG;AACrD,UAAE,QAAQ,CAAC,IAAI,GAAG,eAAe;YAC7B,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,aAAa,GAAG,eAAe;AACvE;AAEA,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AACpD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7E;;AClgBA,MAAMA,iBAAe,GAAsB;IACzC,WAAW;IACX,SAAS;IACT,MAAM;IACN;CACD;AAED;;;;;;;;;;;;;;;;;;;;AAoBG;MAkHU,yBAAyB,CAAA;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AACnB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,WAAW,GAAG,KAAK,CAAS,SAAS,kFAAC;IACtC,UAAU,GAAG,KAAK,CAAC,GAAG,kFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACvD,IAAA,MAAM,GAAG,KAAK,CAA4B,EAAE,6EAAC;AAC7C,IAAA,gBAAgB,GAAG,KAAK,CAE/B,SAAS,uFAAC;IACH,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACvD,IAAA,UAAU,GAAG,KAAK,CAAS,gBAAgB,iFAAC;AAC5C,IAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,uFAAC;AACvD,IAAA,SAAS,GAAG,KAAK,CAAS,oBAAoB,gFAAC;IAC/C,SAAS,GAAG,MAAM,EAAiB;IACnC,MAAM,GAAG,MAAM,EAAwB;AAE7B,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,4EAAC;AAClB,IAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI,+EAAC;IACtC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAC3D,4BAA4B,CAC7B;IACgB,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CACxD,yBAAyB,CAC1B;AAEgB,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACxC,IAAA,UAAU;IACV,eAAe,GAAG,KAAK;AACvB,IAAA,aAAa;AAErB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACpE,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YACvB;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnE;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACxC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;IAEU,SAAS,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3D;AAEU,IAAA,SAAS,CAAC,IAAmB,EAAA;QACrC,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAA,CAAE;IACtC;IAEU,WAAW,GAAA;AACnB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC1B,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,SAAS;QAClB;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;AACtE,QAAA,OAAO,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS;IAChD;AAEU,IAAA,SAAS,CAAC,IAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B;IACF;AAEU,IAAA,YAAY,CAAC,IAAmB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE;IACd;AAEU,IAAA,YAAY,CAAC,KAAY,EAAA;AACjC,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,QAAA,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACvB;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChE,IAAI,MAAM,EAAE;gBACV,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3B;YACA;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAACA,iBAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzD;QACF;QACA,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;YACrC,GAAG,EAAE,IAAI,CAAC,EAAE;YACZ,QAAQ,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,QAAA,MAAM,SAAS,GAAG,uBAAuB,CACvC,SAAS,EACT,YAAY,EACZ,KAAK,CAAC,GAAsB,EAC5B,UAAU,CACX;QACD,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,KAAK,YAAY,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;QACtC;IACF;AAEQ,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAC1D,2BAA2B,CACD;AAC5B,QAAA,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACzD;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;YACA;QACF;QACA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAChD;QACD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC;QAC1D;IACF;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;gBAClC;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;wGA1LW,yBAAyB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7G1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k7MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArGS,qBAAqB,qGAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA8GtC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjHrC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGT,EAAA,IAAA,EAEK;AACJ,wBAAA,4BAA4B,EAAE,MAAM;AACpC,wBAAA,mBAAmB,EAAE,4BAA4B;AACjD,wBAAA,oBAAoB,EAAE;qBACvB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,k7MAAA,CAAA,EAAA;;;MCrK3B,eAAe,CAAA;AAGlB,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE;AAC9C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AAEc,IAAA,IAAI,GAAG,KAAK,CAAC,MAAM,2EAAC;AACpB,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,kFAAC;AACvB,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;AAC5C,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;AAClD,IAAA,YAAY,GAAG,KAAK,CAAqB,SAAS,mFAAC;AACnD,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,8EAAC;AACtB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;AAC3C,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,gFAAC;AAChD,IAAA,eAAe,GAAG,KAAK,CAAqB,SAAS,sFAAC;AACtD,IAAA,IAAI,GAAG,KAAK,CAAqB,IAAI,2EAAC;AACtC,IAAA,KAAK,GAAG,KAAK,CAE3B,SAAS,4EAAC;AACI,IAAA,OAAO,GAAG,KAAK,CAC7B,SAAS,8EACV;IAEe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;AACtC,IAAA,aAAa,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,cAAc;AACxC,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;AAC5B,IAAA,SAAS,GAAG,QAAQ,CAClC,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,EAAE,gFAC5C;AACe,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,GAAG,GAAG;YACV,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,SAAS;AACnD,YAAA,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG;AACxD,SAAA,CAAC,MAAM,CAAC,CAAC,EAAE,KAAmB,OAAO,CAAC,EAAE,CAAC,CAAC;AAC3C,QAAA,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AAC/C,IAAA,CAAC,kFAAC;AAEc,IAAA,KAAK,GAAG,KAAK,CAAI,SAAc,4EAAC;AAEzC,IAAA,QAAQ,CAAC,KAAQ,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;IACF;AAEO,IAAA,SAAS,GAAG,MAAK,EAAE,CAAC;AAEpB,IAAA,QAAQ,GAAuB,MAAK,EAAE,CAAC;AAE9C,IAAA,UAAU,CAAC,KAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACvB;AAEA,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;wGAxEoB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,QAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC;;;AC4CK,MAAO,mBAAoB,SAAQ,eAAwB,CAAA;wGAApD,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EATnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k8FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9BM,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qIAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAyCV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA5C/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA4BN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAA,MAAA,EAAA,CAAA,k8FAAA,CAAA,EAAA;;;MCkE5B,6BAA6B,CAAA;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAa;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAmB,IAAI,+EAAC;AACxC,IAAA,KAAK,GAAG,KAAK,CAAqC,IAAI,4EAAC;AACvD,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAuB,EAAE,uFAAC;AAClD,IAAA,cAAc,GAAG,KAAK,CAAY,KAAK,qFAAC;IACxC,YAAY,GAAG,MAAM,EAAa;IAClC,WAAW,GAAG,MAAM,EAAa;AAEzB,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,IAAA,UAAU,GAAG,IAAI,sBAAsB,CACtD,QAAQ,CACT;AACgB,IAAA,gBAAgB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AACjE,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACe,IAAA,oBAAoB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AACrE,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACe,IAAA,YAAY,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AAC7D,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACe,IAAA,cAAc,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/D,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;IAEO,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,iFAC/C;AACQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;AAC3E,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;AAC5C,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACvC,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC;gBAC/C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI;aACvD;AACH,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,+EAAC;IACO,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEhD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,UAAU,CAAC,QAAQ,CACtB,IAAI,CAAC,IAAI;AACN,iBAAA,IAAI;AACJ,iBAAA,GAAG,CAAC,CAAC,GAAG,MAAM;gBACb,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,KAAK,EAAE,GAAG,CAAC,IAAI;gBACf,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,GAAG,CAAC;aACf,CAAC,CAAC,CACN;AACD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC/D,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;AACtD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACrE;AAEA,IAAA,SAAS,CAAC,IAAe,EAAA;AACvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACjD;AAEA,IAAA,MAAM,CAAC,GAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC;IACF;IAEQ,SAAS,GAAA;QACf,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAChD,QAAA,MAAM,SAAS,GAAG,WAAW,CAC3B,aAAa,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EAAE,CACtB;AACD,QAAA,MAAM,WAAW,GAAG,YAAY,CAC9B,aAAa,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EAAE,CACtB;QACD,MAAM,YAAY,GAChB,CAAC;AACD,YAAA,YAAY,CACV,UAAU,CAAC,aAAa,CAAC,EACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EAAE,CACtB;QACH,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,YAAY;QACjE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAC/B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAC5D,CACF;AACD,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAExD,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,YAAA,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAC/B,IAAI,CAAC,aAAa,CAChB,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CACpD,CACF,CACF;QACH;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,WAAW,GAAA;QACjB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAClE;AAEQ,IAAA,aAAa,CAAC,IAAe,EAAA;AACnC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACjE,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3D,OAAO;YACL,IAAI;AACJ,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;AACpB,YAAA,OAAO,EACL,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AACtE,YAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACjC,YAAA,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7B,YAAA,QAAQ,EACN,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,OAAO,IAAI,KAAK;AAClE,YAAA,OAAO,EACL,CAAC,CAAC,KAAK,EAAE,KAAK;gBACd,CAAC,CAAC,KAAK,CAAC,GAAG;gBACX,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI;SAC3C;IACH;AAEQ,IAAA,WAAW,CAAC,IAAe,EAAA;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,QACE,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAC1B,YAAA,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;aACvB,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACvC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAC3B,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CACjD;IAEL;IAEQ,iBAAiB,GAAA;AACvB,QAAA,QACE,IAAI,CAAC,IAAI;AACN,aAAA,IAAI;AACJ,aAAA,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI;IAEjD;IAEQ,gBAAgB,CAAC,IAAe,EAAE,SAAiB,EAAA;QACzD,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,CAAC,EAAE;AACjD,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;AAC/B,gBAAA,OAAO,SAAS;YAClB;YACA,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAChD;AACA,QAAA,OAAO,IAAI;IACb;IAEQ,QAAQ,CACd,GAAW,EACX,OAAkB,EAAA;QAElB,QAAQ,GAAG;AACT,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;AACrB,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;AACpB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;AACrB,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;AACpB,YAAA,KAAK,MAAM;gBACT,OAAO;AACL,oBAAA,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;iBAChE;AACH,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;iBACnE;AACH,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;AACvB,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;AACtB,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;IAEQ,MAAM,CAAC,SAAwB,EAAE,IAAe,EAAA;QACtD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C;wGA5OW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,whHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtES,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA0EX,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBA7EzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cACvB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqET,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,whHAAA,CAAA,EAAA;;;ACyF3C,MAAO,qBAAsB,SAAQ,eAAiC,CAAA;AACjE,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAuB,EAAE,uFAAC;AAClD,IAAA,cAAc,GAAG,KAAK,CAAY,KAAK,qFAAC;AAElB,IAAA,QAAQ;AACT,IAAA,OAAO;AAE5B,IAAA,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,WAAW;IAClC,aAAa,GAAG,aAAa;AAC7B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AACtB,IAAA,WAAW,GAAG,MAAM,CAAmB,IAAI,kFAAC;IAC5C,YAAY,GAAG,MAAM,CAAY,KAAK,CAAC,KAAK,CAAC,mFAAC;IAC9C,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAC9B,IAAA,UAAU,GAAG,MAAM,CAAa,UAAU,iFAAC;IAC3C,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,IAAA,cAAc,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/D,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACe,IAAA,kBAAkB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AACnE,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;IACM,UAAU,GAAwB,IAAI;AAErC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B;AACA,QAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AACpC,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE;SACX,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,CAAC,mFAAC;IACO,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC9D;IACQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAClE;IACQ,YAAY,GAAG,QAAQ,CAAC,MAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;AACtC,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAC/D,OAAO;YACL,KAAK;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,YAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AACvC,YAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;SAC/B;IACH,CAAC,CAAC,mFACH;AACQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,QAAA,IAAI,KAAK,GAAG,MAAM,GAAG,GAAG;AACxB,QAAA,IAAI,GAAG,GAAG,MAAM,GAAG,GAAG;AACtB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,IAAI,WAAW,CAAC;AAC3E,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,IAAI,WAAW,CAAC;AAEzE,QAAA,IAAI,gBAAgB,GAAG,KAAK,EAAE;YAC5B,KAAK,GAAG,gBAAgB;AACxB,YAAA,GAAG,GAAG,KAAK,GAAG,GAAG;QACnB;AACA,QAAA,IAAI,cAAc,GAAG,GAAG,EAAE;YACxB,GAAG,GAAG,cAAc;AACpB,YAAA,KAAK,GAAG,GAAG,GAAG,GAAG;QACnB;QACA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC;QACzC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC;AACnC,QAAA,OAAO,KAAK,CAAC,IAAI,CACf,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,EACxC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,KAAK,CAC5B;AACH,IAAA,CAAC,kFAAC;AACO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC;AACvC,IAAA,CAAC,sFAAC;AACO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACpC,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI;KAC7B,CAAC,CAAC,2FACJ;AACQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAA,GAAA,EAAM,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,IAAA,CAAC,oFAAC;AACO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,EAAE;YAClC,OAAO,CAAA,mBAAA,EAAsB,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE;QACzD;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,OAAO,EAAE;AACjC,YAAA,OAAO,oBAAoB,IAAI,CAAC,aAAa,EAAE,EAAE;QACnD;AACA,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AAC1B,IAAA,CAAC,2FAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACzE;AAES,IAAA,UAAU,CAAC,KAAuB,EAAA;QACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QAC7B,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEA,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;YAC7C;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClE,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACrE;AAEA,IAAA,YAAY,CAAC,IAAgB,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI;IACnC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CACpE;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;YACvD;QACF;AACA,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtC;QACF;AACA,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;IACjC;IAEA,uBAAuB,GAAA;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD;IAEA,mBAAmB,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM;IACpD;AAEA,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CACnB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC,EACrC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAC/B;AACD,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC;IACF;AAEA,IAAA,MAAM,CAAC,IAAe,EAAA;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC5B;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,KAAK,EAAE;IACd;AAEA,IAAA,SAAS,CAAC,IAAe,EAAA;QACvB,IACE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK;YACxC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EACtC;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,cAAc,CAAC,MAAK;AAClB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CACvD,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAI,CACnC;YACD,MAAM,EAAE,KAAK,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEQ,IAAI,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa;AAC7C,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC/D;QACF;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;QAC7B,MAAM,KAAK,GACT,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ;AACpC,cAAE;AACF,cAAE,IAAI,CAAC,mBAAmB,EAAE;QAChC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,SAAS,EAAE,cAAc;AACzB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG;QAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa;QACvD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACpC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;IAEQ,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACxC;IAEQ,mBAAmB,GAAA;QACzB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,QAAQ,GAAG;cACb,MAAM,CAAC;cACP,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC;QAEtC,KACE,IAAI,OAAO,GAAG,CAAC,EACf,OAAO,GAAG,QAAQ,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACnE,OAAO,IAAI,CAAC,EACZ;AACA,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAChC,gBAAA,OAAO,SAAS;YAClB;YACA,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACxC;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,YAAY,CAAC,IAAe,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,QACE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;aACtC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAC3B,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CACjD;IAEL;AAEQ,IAAA,kBAAkB,CAAC,MAAyC,EAAA;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACzD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;YACxC;QACF;AACA,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;AAC5B,YAAA,GAAG,MAAM;AACT,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AAC1D,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;QAC/B,cAAc,CAAC,MAAK;AAClB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CACvD,eAAe,SAAS,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAI,CACxC;YACD,MAAM,EAAE,KAAK,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,KAAgB,EAAA;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,QACE,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,aAAC,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;AAEQ,IAAA,WAAW,CAAC,KAAgB,EAAA;QAClC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;IAC3D;IAEQ,gBAAgB,CAAC,IAAY,EAAE,KAAwB,EAAA;AAC7D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EACtB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAC/B;AACD,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB;AAEQ,IAAA,gBAAgB,CAAC,IAAe,EAAA;AACtC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;AACxC,YAAA,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;YACxD,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;AACxC,YAAA,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO;SACrD;IACH;AAEQ,IAAA,eAAe,CAAC,IAAY,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,OAAO;AACL,YAAA,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI;AAC9B,YAAA,QAAQ,EAAE,QAAQ,EAAE,IAAI,KAAK,IAAI;AACjC,YAAA,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI;AAC9B,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK;SAC5B;IACH;IAEQ,WAAW,CAAC,KAAgB,EAAE,MAAiB,EAAA;AACrD,QAAA,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;IACnE;wGA5XW,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,SAAA,EARrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,qBAAqB;AAClC,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,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,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/JS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiJT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+7QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlJS,gBAAgB,iHAAE,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAkK9C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArKjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,EAAA,QAAA,EAChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiJT,EAAA,IAAA,EAEK;AACJ,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,8BAA8B,EAAE,UAAU;AAC1C,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,qBAAuB;AAClC,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,+7QAAA,CAAA,EAAA;;sBAQA,SAAS;uBAAC,UAAU;;sBACpB,SAAS;uBAAC,SAAS;;;AC5FhB,MAAO,0BAA2B,SAAQ,eAAmD,CAAA;AACxF,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,OAAO,GAAG,KAAK,CAAmB,IAAI,8EAAC;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAuB,EAAE,uFAAC;AAClD,IAAA,cAAc,GAAG,KAAK,CAAY,KAAK,qFAAC;AAElB,IAAA,QAAQ;AACT,IAAA,OAAO;AAE5B,IAAA,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,WAAW;IAClC,aAAa,GAAG,mBAAmB;AACnC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AACtB,IAAA,WAAW,GAAG,MAAM,CAAmB,IAAI,kFAAC;IAC5C,YAAY,GAAG,MAAM,CAAY,KAAK,CAAC,KAAK,CAAC,mFAAC;AAEtC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,IAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,IAAA,cAAc,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/D,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;AACe,IAAA,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9D,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;IACM,UAAU,GAAwB,IAAI;AAErC,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1C,OAAO,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK;AACvE,IAAA,CAAC,mFAAC;IACO,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC9D;AAED,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACzE;AAES,IAAA,UAAU,CAAC,KAAyC,EAAA;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,UAAU,EAAE,GAAG;QAClD,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEA,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACrC;AAEA,IAAA,MAAM,CAAC,IAAe,EAAA;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC5B;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACpB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,KAAK,EAAE;IACd;AAEA,IAAA,SAAS,CAAC,IAAe,EAAA;QACvB,IACE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK;YACxC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,EACtC;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,cAAc,CAAC,MAAK;AAClB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CACvD,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAI,CACnC;YACD,MAAM,EAAE,KAAK,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEQ,IAAI,GAAA;AACV,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa;AAC7C,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YAC/D;QACF;QACA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;QACpC,MAAM,KAAK,GACT,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ;AACpC,cAAE;AACF,cAAE,IAAI,CAAC,mBAAmB,EAAE;QAChC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,SAAS,EAAE,cAAc;AACzB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACpC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACvB;IAEQ,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACxC;AAEQ,IAAA,cAAc,CACpB,KAAyC,EAAA;QAEzC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;QACA,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClE,YAAA,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE;QAC/C;AACA,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;IAC/D;IAEQ,mBAAmB,GAAA;QACzB,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,QAAQ,GAAG;cACb,MAAM,CAAC;cACP,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,GAAG,CAAC;QAEtC,KACE,IAAI,OAAO,GAAG,CAAC,EACf,OAAO,GAAG,QAAQ,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACnE,OAAO,IAAI,CAAC,EACZ;AACA,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAChC,gBAAA,OAAO,SAAS;YAClB;YACA,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACxC;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,YAAY,CAAC,IAAe,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,QACE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;aACtC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAC3B,CAAC,WAAW,KAAK,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CACjD;IAEL;AAEQ,IAAA,UAAU,CAAC,IAAe,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD;wGA9LW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,kCAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,SAAA,EAR1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,0BAA0B;AACvC,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,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,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlFS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoET,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4pIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArES,gBAAgB,iHAAE,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAqF9C,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAxFtC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,EAAA,QAAA,EAChD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoET,EAAA,IAAA,EAEK;AACJ,wBAAA,8BAA8B,EAAE,MAAM;AACtC,wBAAA,oCAAoC,EAAE,UAAU;AAChD,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,0BAA4B;AACvC,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,4pIAAA,CAAA,EAAA;;sBAQA,SAAS;uBAAC,UAAU;;sBACpB,SAAS;uBAAC,SAAS;;;MClHT,uBAAuB,CAAA;AACzB,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAS;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;IAChC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAHtD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,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,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCeY,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAS,MAAM,4EAAC;AAC7B,IAAA,MAAM,GAAG,KAAK,CAAS,MAAM,6EAAC;IAC9B,QAAQ,GAAG,KAAK,CAAC,IAAI,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGAHrD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kpBAXpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,opBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN,EAAE,EAAA,IAAA,EAEN;AACJ,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,+BAA+B,EAAE,YAAY;AAC7C,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,oBAAoB,EAAE;qBACvB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,opBAAA,CAAA,EAAA;;;ACYjD,SAAS,wBAAwB,CAAC,KAAa,EAAA;AAC7C,IAAA,OAAO;AACJ,SAAA,iBAAiB;SACjB,SAAS,CAAC,KAAK;AACf,SAAA,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACnC;AAwBM,MAAO,mBAAoB,SAAQ,eAAgC,CAAA;AAC9D,IAAA,UAAU,GAAG,KAAK,CAA4B,EAAE,iFAAC;AACjD,IAAA,YAAY,GAAG,eAAe,CAAC,uBAAuB,mFAAC;AACvD,IAAA,aAAa,GAAG,KAAK,CAAkB,QAAQ,oFAAC;IAChD,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,UAAU,GAAG,KAAK,CAAC,IAAI,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACzD,IAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,wFAAC;AACnC,IAAA,SAAS,GAAG,KAAK,CAAC,YAAY,gFAAC;AAC/B,IAAA,SAAS,GAAG,KAAK,CAAc,cAAc,gFAAC;AAC9C,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;IACnB,MAAM,GAAG,MAAM,EAAQ;IACvB,MAAM,GAAG,MAAM,EAAQ;AAEF,IAAA,OAAO;AACV,IAAA,IAAI;AACG,IAAA,WAAW;AACf,IAAA,OAAO;AAEpB,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,SAAS,GAAG,IAAI,qBAAqB,EAGlD;AACI,IAAA,UAAU;IACV,SAAS,GAAG,KAAK;AAEhB,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,4EAAC;AAClB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,kFAAC;AACxB,IAAA,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,UAAU;AAChC,IAAA,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,SAAS;IAC9B,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU;AAEpC,IAAA,KAAK,GAAG,QAAQ,CAA0B,MAAK;AACtD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,SAAS,CAAC,MAAM,EAAE;YACpB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC9B,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC,CAAC;QACL;AACA,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI;AAC5B,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,4EAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACzD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,OAAO,KAAK;QACd;QACA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KACvB,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC1D;AACH,IAAA,CAAC,mFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAqB,MAAK;AACxD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YACzC,OAAO,IAAI,GAAG,EAAE;QAClB;QACA,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACxD,IAAA,CAAC,mFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,EAAE;QACX;QACA,OAAO,IAAI,CAAC,KAAK;AACd,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;aACnC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;aACxB,IAAI,CAAC,IAAI,CAAC;AACf,IAAA,CAAC,oFAAC;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpD,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,GAAG,SAAS;AACnE,IAAA,CAAC,+EAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACxC,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;IAC1C;AAEA,IAAA,MAAM,CAAC,GAAU,EAAA;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC;AACpE,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,EAAE;YAC7D;QACF;AACA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;YACvC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE;QAClB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAClB,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;AAChD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;AAC3C,iBAAA,GAAG,CACF,CAAC,MAAM,KACL,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG;iBAE/D,MAAM,CAAC,CAAC,GAAG,KAAmB,GAAG,KAAK,SAAS,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;QACA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CACtD;QACD,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACvB;IACF;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D;AAEA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QACA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACzC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AACA,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC9D,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,IAAI,EAAE;YACb;QACF;IACF;AAEA,IAAA,eAAe,CAAC,KAAoB,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACzB;YACA;QACF;AACA,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,MAAM,IAAI,GAAG,uBAAuB,CAClC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EACjE,IAAI,CAAC,WAAW,EAAE,EAClB,KAAK,CAAC,GAA+C,CACtD;AACD,YAAA,IAAI,IAAI,IAAI,CAAC,EAAE;gBACb,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC5B;QACF;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACzB;YACA;QACF;AACA,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC/D,YAAA,IAAI,GAAG,uBAAuB,CAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EACjE,IAAI,CAAC,WAAW,EAAE,EAClB,KAAK,CAAC,GAA+C,CACtD;QACH;aAAO;AACL,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EACrE,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,WAAW,EAAE,CACnB;QACH;AACA,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;IACF;IAEQ,IAAI,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjE;QACF;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAClC,YAAA,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AAClC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAK;AAC3B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS;AACnC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACpB;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,cAAc,CAAC,MAAK;AAClB,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,EAAE;YACzC;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE;YACrC;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;IAC1B;wGAnQW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,SAAA,EATnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,mBAAmB;AAChC,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAKuC,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,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,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9DjE,ywHAiIA,EAAA,MAAA,EAAA,CAAA,q2OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxFY,gBAAgB,iHAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmBpC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,IAAA,EAG1C;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,2BAA2B,EAAE,QAAQ;AACrC,wBAAA,+BAA+B,EAAE,YAAY;AAC7C,wBAAA,8BAA8B,EAAE,WAAW;AAC3C,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,mBAAqB;AAChC,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ywHAAA,EAAA,MAAA,EAAA,CAAA,q2OAAA,CAAA,EAAA;kOAIP,uBAAuB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA;sBAW9D,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,MAAM;;sBAChB,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,SAAS;;;AE5ChB,MAAO,gBAAiB,SAAQ,eAAuB,CAAA;;AAE3C,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;wGAF7B,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,0BAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAjBhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBH,ilDAwDA,EAAA,MAAA,EAAA,CAAA,mxGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAU5B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtB5B,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,SAAA,EAGL;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,OAAA,EACQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,2BAA2B,EAAE,WAAW;AACxC,wBAAA,4BAA4B,EAAE,YAAY;AAC1C,wBAAA,sBAAsB,EAAE,iBAAiB;AACzC,wBAAA,sBAAsB,EAAE;AACzB,qBAAA,EAAA,QAAA,EAAA,ilDAAA,EAAA,MAAA,EAAA,CAAA,mxGAAA,CAAA,EAAA;;;AE0BG,MAAO,oBAAqB,SAAQ,eAAuB,CAAA;AACtD,IAAA,MAAM,GAAG,KAAK,CAAC,CAAC,6EAAC;wGADf,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EATpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wpFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAjCM,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA4CV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA/ChC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAA,MAAA,EAAA,CAAA,wpFAAA,CAAA,EAAA;;;AChD3C;MAUa,qBAAqB,CAAA;wGAArB,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,oIANtB,2DAA2D,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+9GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA;;4FAM1D,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cACd,IAAI,EAAA,QAAA,EACN,2DAA2D,EAAA,aAAA,EAEtD,iBAAiB,CAAC,SAAS,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAA,MAAA,EAAA,CAAA,+9GAAA,CAAA,EAAA;;;MCH/B,0BAA0B,CAAA;wGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,gJAP3B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,unCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA;;4FAO1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBATtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,YACtB,2BAA2B,EAAA,aAAA,EAEtB,iBAAiB,CAAC,SAAS,EAAA,IAAA,EACpC;AACJ,wBAAA,8BAA8B,EAAE;AACjC,qBAAA,EAAA,MAAA,EAAA,CAAA,unCAAA,CAAA,EAAA;;;ACqFG,MAAO,sBAAuB,SAAQ,eAA8B,CAAA;AACvD,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,0EAAC;AAC1C,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,0EAAC;AAC1C,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,2EAAC;AACf,IAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,+EAAC;AAC/C,IAAA,MAAM,GAAG,KAAK,CAA2B,EAAE,6EAAC;AAC5C,IAAA,YAAY,GAAG,MAAM,CAAC,EAAE,mFAAC;AACzB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,OAAO,SAAS;QAClB;QACA,OAAO,IAAI,CAAC;aACT,aAAa,CAAC,CAAC;AACf,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK;AACpD,IAAA,CAAC,qFAAC;AAEO,IAAA,UAAU,CAAC,KAAoB,EAAA;AACtC,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK;AAC1B,cAAE;cACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CACnC;IACH;AACA,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D;AACA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,QAAA,IAAI,EAAE,MAAM,YAAY,gBAAgB,CAAC,EAAE;YACzC;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5B;IACA,WAAW,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK;AAC1B,cAAE;cACA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CACnC;IACH;AACA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACxC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAChB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,SAAS,EAAE;YAC3D,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;YACjC,IAAI,CAAC,WAAW,EAAE;QACpB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,SAAS,EAAE;YAC1D,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;YACjC,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;AACA,IAAA,MAAM,CAAC,SAAiB,EAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACxC,QAAA,MAAM,OAAO,GACX,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,EAAE;IACpB;AACA,IAAA,IAAY,SAAS,GAAA;QACnB,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;YACxC,GAAG,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,QAAQ;AACf,kBAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;kBAC9C,EAAE;AACP,SAAA,CAAC;IACJ;AACQ,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC;QACA,OAAO,IAAI,CAAC;aACT,aAAa,CAAC,KAAK;aACnB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,UAAU;aACzC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;aACxB,IAAI,CAAC,EAAE;AACP,aAAA,IAAI,EAAE;IACX;AACQ,IAAA,KAAK,CAAC,IAAY,EAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG;QACvE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG;QAC3E,MAAM,UAAU,GAAG;AAChB,aAAA,UAAU,CAAC,KAAK,EAAE,EAAE;AACpB,aAAA,OAAO,CAAC,OAAO,EAAE,GAAG;AACpB,aAAA,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;AAC5B,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,QAAA,OAAO,UAAU,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK;IACpE;AACQ,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrE;wGAxGW,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EATtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1ES,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k/KAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjFlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAkEN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAA,MAAA,EAAA,CAAA,k/KAAA,CAAA,EAAA;;;AChCvC,MAAO,sBAAuB,SAAQ,eAAuB,CAAA;wGAAtD,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EATtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/CS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAuCN,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2oHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAzCM,WAAW,+mBAAE,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoD5B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvDlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAuCN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAA,MAAA,EAAA,CAAA,2oHAAA,CAAA,EAAA;;;MCxDhC,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,MAAM,CAAgB,IAAI,4EAAC;AACnC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AACjC,IAAA,MAAM,GAA4B,MAAK,EAAE,CAAC;AAC1C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AACjC;;ACGD;;;;;;;AAOG;MAqCU,qBAAqB,CAAA;AACf,IAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AACrC,IAAA,KAAK,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAC3C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;IACO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACtC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;AAC5C,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;AAClD,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;IAC3C,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAEjE,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC/C,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC;IACF;wGAjBW,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,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,IAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gCAAA,EAAA,4BAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjCtB;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m6GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApCjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAAA,IAAA,EAEK;AACJ,wBAAA,wBAAwB,EAAE,MAAM;AAChC,wBAAA,kCAAkC,EAAE,4BAA4B;AAChE,wBAAA,kCAAkC,EAAE;qBACrC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,m6GAAA,CAAA,EAAA;;;AC9B3C,MAAO,mBAAoB,SAAQ,eAAe,CAAA;AAC7C,IAAA,UAAU,GAAG,KAAK,CAAS,SAAS,iFAAC;AACrC,IAAA,eAAe,GAAG,KAAK,CAAS,wBAAwB,sFAAC;IAE3D,IAAI,GAAG,KAAK;AAEnB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;AAEA,IAAA,QAAQ,KAAI;IAEZ,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI;IACxB;wGAdW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAZnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBH,48BAkCA,EAAA,MAAA,EAAA,CAAA,gwIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,+mBAAE,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKxC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAhB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,SAAA,EAGZ;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,OAAA,EACQ,CAAC,UAAU,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAA,IAAA,EAC9C;AACJ,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,48BAAA,EAAA,MAAA,EAAA,CAAA,gwIAAA,CAAA,EAAA;;;MESU,gBAAgB,CAAA;AACV,IAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AACrC,IAAA,KAAK,GAAG,MAAM,CAAC,mBAAmB,EAAE;AAC3C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,QAAQ,EAAE;AACX,KAAA,CAAC;IACO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;IAChC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC/C,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC;IACF;wGAfW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBjB,CAAA;;;;;;;;;;;;AAYR,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,onFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKS,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBApB5B,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;;;;IAYR,EAAA,IAAA,EAEI,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAA,eAAA,EACnB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,onFAAA,CAAA,EAAA;;;ACyB3C,MAAO,qBAAsB,SAAQ,eAA8B,CAAA;AACtD,IAAA,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvD;AACS,IAAA,UAAU,CAAC,KAAoB,EAAA;AACtC,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;AACS,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACpC,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/B;AACS,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACzC,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC;AACS,IAAA,gBAAgB,CAAC,EAAkC,EAAA;AAC1D,QAAA,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC5B;AACS,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACvC,QAAA,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;IAC7B;wGAxBW,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAXrB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACR,aAAA;YACD;SACD,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,onFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAaO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1CjC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;MA0BN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACR,yBAAA;wBACD;qBACD,EAAA,IAAA,EACK,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAA,eAAA,EACzB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,onFAAA,CAAA,EAAA;;;AC0C3C,MAAO,iBAAkB,SAAQ,eAA8B,CAAA;AAC1D,IAAA,GAAG,GAAG,KAAK,CAAC,CAAC,0EAAC;AACd,IAAA,GAAG,GAAG,KAAK,CAAC,GAAG,0EAAC;AAChB,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,2EAAC;AACf,IAAA,KAAK,GAAG,KAAK,CAAC,KAAK,4EAAC;AACpB,IAAA,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,QAAQ;AACjC,IAAA,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,MAAM;AAC7B,IAAA,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,cAAc;AACvC,IAAA,uBAAuB,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,cAAc;AAClD,IAAA,qBAAqB,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,YAAY;AAC9C,IAAA,oBAAoB,GAAG,MAC9B,IAAI,CAAC,KAAK;UACN,GAAG,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,uBAAuB,CAAA;AACtD,UAAE,IAAI,CAAC,uBAAuB;AACzB,IAAA,kBAAkB,GAAG,MAC5B,IAAI,CAAC,KAAK;UACN,GAAG,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,qBAAqB,CAAA;AACpD,UAAE,IAAI,CAAC,qBAAqB;IAChC,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;IACvD;IACA,KAAK,GAAA;AACH,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;IACrD;IACA,GAAG,GAAA;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;IACrD;AACA,IAAA,SAAS,CAAC,KAAY,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;IACjE;AACA,IAAA,aAAa,CAAC,KAAY,EAAA;QACxB,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YACtE,IAAI,CAAC,GAAG;AACT,SAAA,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;AACxE,SAAA,CAAC;IACJ;wGA5CW,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,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EATjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3ES,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,q1GAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlF7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmEN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,IAAA,EACK,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAA,MAAA,EAAA,CAAA,q1GAAA,CAAA,EAAA;;;AC3BjC,MAAO,iBAAkB,SAAQ,eAAwB,CAAA;AACpD,IAAA,MAAM,GAAG,KAAK,CAAiB,QAAQ,6EAAC;AACxC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;wGAF9B,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,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAfjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,m/HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/BM,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qIAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAgDV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnD7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,wBAAwB,EAAE,oBAAoB;AAC9C,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE;AAC1B,qBAAA,EAAA,MAAA,EAAA,CAAA,m/HAAA,CAAA,EAAA;;;ACAG,MAAO,mBAAoB,SAAQ,eAAuB,CAAA;AACrD,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,2EAAC;wGADb,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAZnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCN,KAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,svFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAnCM,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAiDV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApD/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EAAA,eAAA,EACL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiCN,EAAA,SAAA,EAEO;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,8BAA8B,EAAE;AACjC,qBAAA,EAAA,MAAA,EAAA,CAAA,svFAAA,CAAA,EAAA;;;AC7BG,MAAO,0BAA2B,SAAQ,eAAuB,CAAA;AAC7D,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAE3B,SAAS,GAAG,KAAK,CAAS,SAAS,iFAAI,KAAK,EAAE,WAAW,EAAA,CAAG;AAErE;;;;AAIG;AACM,IAAA,MAAM,GAAG,MAAM,CAAC,CAAC,6EAAC;IAG3B,OAAO,GAAY,IAAI;AAEd,IAAA,UAAU,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,WAAW,EACX,KAAK,IAAI,EAAE,CACZ;YACD,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAGA,OAAO,GAAA;QACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE;IACrB;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;IACvE;IAGA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;AAGA,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACxE,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAES,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,UAAU;IAC5B;wGArDW,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,qCAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EAb1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPS,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,s8BAAA,CAAA,EAAA,CAAA;;4FAcD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhBtC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EACrB,EAAE,EAAA,SAAA,EACD;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EAEK;AACJ,wBAAA,6BAA6B,EAAE,MAAM;AACrC,wBAAA,uCAAuC,EAAE;AAC1C,qBAAA,EAAA,MAAA,EAAA,CAAA,s8BAAA,CAAA,EAAA;;sBAeA,WAAW;uBAAC,sBAAsB;;sBAclC,YAAY;uBAAC,OAAO;;sBAUpB,YAAY;uBAAC,MAAM;;sBAKnB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACxErC;;MCqBa,kBAAkB,CAAA;AACpB,IAAA,KAAK,GAAG,KAAK,CAAS,SAAS,4EAAC;AAChC,IAAA,WAAW,GAAG,KAAK,CAAS,SAAS,kFAAC;AACtC,IAAA,WAAW,GAAG,KAAK,CAAS,SAAS,kFAAC;AACtC,IAAA,QAAQ,GAAG,KAAK,CAAc,EAAE,+EAAC;AACjC,IAAA,KAAK,GAAG,KAAK,CAGnB,SAAS,4EAAC;AACJ,IAAA,UAAU,GAAG,KAAK,CAAS,SAAS,iFAAC;AACrC,IAAA,MAAM,GAAG,KAAK,CAAU,SAAS,6EAAC;AAClC,IAAA,SAAS,GAAG,KAAK,CAAS,GAAG,gFAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAU,SAAS,+EAAC;IAEpC,MAAM,GAAG,MAAM,EAAU;IAE3B,OAAO,GAAY,KAAK;IACxB,OAAO,GAAW,EAAE;AAEnB,IAAA,gBAAgB,GAAW,IAAI,MAAM,CAAC,sBAAsB,CAAC;AAErE,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,QAAQ,KAAU;IAElB,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;QACnB;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACrB;IACF;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;QACzD,OAAO,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC;IACxC;wGArCW,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB/B,krEAgFA,EAAA,MAAA,EAAA,CAAA,qqHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnEI,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACX,cAAc,8CACd,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FAGL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EAGb;wBACP,OAAO;wBACP,iBAAiB;wBACjB,0BAA0B;wBAC1B,WAAW;wBACX,cAAc;wBACd;AACD,qBAAA,EAAA,QAAA,EAAA,krEAAA,EAAA,MAAA,EAAA,CAAA,qqHAAA,CAAA,EAAA;;;MEGU,sBAAsB,CAAA;AAChB,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE;AAC9C,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE;AACP,KAAA,CAAC;AACe,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC,IAAA,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACjD,IAAA,IAAI,GAAG,KAAK,CAAiC,KAAK,2EAAC;AAE5D,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;QACF;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAK;AAC/B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE;AACpB,YAAA,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7B,OAAO,MAAM,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;AAC9C,QAAA,CAAC,mFAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;IACzD;wGAtBW,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,maATvB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6mBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,wBAAwB,EAAE;qBAC3B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6mBAAA,CAAA,EAAA;;;MCHpC,kBAAkB,CAAA;AACpB,IAAA,WAAW,GAAG,KAAK,CAAgB,YAAY,kFAAC;wGAD9C,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,ieAXnB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oaAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWD,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN,EAAE,EAAA,IAAA,EAEN;AACJ,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,gCAAgC,EAAE,gCAAgC;AAClE,wBAAA,8BAA8B,EAAE;qBACjC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,oaAAA,CAAA,EAAA;;;MCmDpC,iBAAiB,CAAA;AACnB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,QAAQ,GAAG,KAAK,CAAmB,KAAK,+EAAC;AACzC,IAAA,UAAU,GAAG,KAAK,CAAC,cAAc,iFAAC;AAClC,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,oFAAC;IAC3B,MAAM,GAAG,MAAM,EAAwB;AACvC,IAAA,gBAAgB,GAAG,KAAK,CAAsB,IAAI,uFAAC;AACnD,IAAA,aAAa,GAAG,KAAK,CAA0B,EAAE,oFAAC;AAClD,IAAA,WAAW,GAAG,MAAM,CAAmC,SAAS,kFAAC;AAGlE,IAAA,WAAW;AAEF,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,UAAU;AACV,IAAA,UAAU;IACV,eAAe,GAAG,KAAK;AAE/B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACpE,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;QACpB;QACA,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;IAC5B;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;QACzD;AACA,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAa;IACtC;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACpD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;QACnC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QACpC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG;QAC1C,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa;QAClD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;QAC1C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;gBAClC;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACzC,IACE,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,CAAC,SAAS;YACV,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,UAAU,EACf;YACA;QACF;QACA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC;AAC7D,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE;YAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACvC;IACF;wGAtGW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAWM,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlDxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wqFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1C7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAAA,IAAA,EAEK;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,wqFAAA,CAAA,EAAA;;sBAa9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;MCzEzC,WAAW,CAAA;AAEH,IAAA,YAAA;AACR,IAAA,OAAA;AACA,IAAA,MAAA;AAHX,IAAA,WAAA,CACmB,YAA6C,EACrD,OAAU,EACV,MAAgD,EAAA;QAFxC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACpB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,MAAM,GAAN,MAAM;IACd;IAEH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;IACpC;AACD;;MCFY,eAAe,CAAA;AACT,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElE,IAAA,IAAI,CAAmB,MAAyB,EAAA;AAC9C,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,iBAAiB,EAAE;YACtD,mBAAmB,EAAE,IAAI,CAAC;AAC3B,SAAA,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC3D,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;QACpE,YAAY,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC;QAC3D,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrD,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAC9C,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtC,MAAM,SAAS,GAAG,IAAI,WAAW,CAC/B,YAAY,EACZ,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAK,EACrC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAClC;QACD,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;YAC1C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;YACrD,YAAY,CAAC,OAAO,EAAE;AACxB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,SAAS;IAClB;wGA3BW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACXlC,IAAY,QAoBX;AApBD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACtB,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,UAAsB;AACtB,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,QAAA,CAAA,qBAAA,CAAA,GAAA,mBAAyC;AACzC,IAAA,QAAA,CAAA,uBAAA,CAAA,GAAA,qBAA6C;AAC7C,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,YAA0B;AAC1B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC;AAChC,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,QAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,cAA8B;AAC9B,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,YAAA,CAAA,GAAA,WAAwB;AACxB,IAAA,QAAA,CAAA,kBAAA,CAAA,GAAA,WAA8B;AAChC,CAAC,EApBW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;;ACAb,MAAM,cAAc,GAA2B;AACpD,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,EAAE,EAAE,UAAU;AACd,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,gBAAgB,EAAE,kBAAkB;AACpC,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,eAAe,EAAE,yBAAyB;AAC1C,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,SAAS,EAAE,kBAAkB;AAC7B,IAAA,YAAY,EAAE;CACf;MAIY,MAAM,CAAA;IACA,OAAO,GAAG,cAAc;AAEzC,IAAA,WAAA,CAAY,YAAiD,EAAE,EAAA;QAC7D,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,EAAE;IACpD;AAEA,IAAA,GAAG,GAAG,CAAC,GAAW,KAAY;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;AAChC,IAAA,CAAC;AACF;;AC5CM,MAAM,eAAe,GAAG,IAAI,cAAc,CAC/C,eAAe,CAChB;AAED;AACA,MAAM,YAAY,GAA2B;AAC3C,IAAA,GAAG,EAAE,OAAO;AACZ,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,GAAG,EAAE,QAAQ;AACb,IAAA,GAAG,EAAE;CACN;AAED;AACA;AACA,MAAM,qBAAqB,GAAG,kBAAkB;AAEhD;AACA,MAAM,cAAc,GAAG,6BAA6B;AAEpD,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC;AACnE,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;AACjD,MAAM,sBAAsB,GAAG,gCAAgC;MAKlD,eAAe,CAAA;IAClB,MAAM,GAAG,MAAM,CAAgB,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnE,IAAA,GAAG,GAAG,MAAM,CAACC,UAAQ,CAAC;AAEtB,IAAA,cAAc;AACd,IAAA,YAAY;AACH,IAAA,MAAM;AAEvB,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAE1B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IACvD;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B;IAEA,aAAa,GAAA;QACX,QAAQ,IAAI;AACV,YAAA,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;gBACnC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE;oBACpC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE;gBACpC;gBACA;AACF,YAAA,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;AACpD,gBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE;gBAC5C;AACF,YAAA;AACE,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;IAEhC;IAEA,OAAO,CAAC,IAAc,EAAE,KAAc,EAAA;QACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;IAC1C;AAEA,IAAA,WAAW,CAAC,OAAe,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;AACjE,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC;QAC7D;IACF;AAEA,IAAA,UAAU,CAAC,IAKV,EAAA;QACC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;;;YAGxB;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,QAAQ,GAAG,OAAO;;;AAGtD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,4BAA4B,GAAG,EAAE;AAElE,QAAA,MAAM,MAAM,GAAG,CAAA,SAAA,EAAY,IAAI,CAAA,SAAA,EAAY,KAAK,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,IAAI,MAAM;AACxF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACzB;AAEA,IAAA,WAAW,CAAC,KAAoC,EAAA;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;AACnD,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;;;YAGxB;QACF;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AACxC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC,UAAU,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,OAAA,EAAU,GAAG,CAAA,EAAA,CAAI,CAAC;IACpD;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CACzC,QAAQ,CAAC,WAAW,EACpB,KAAK,EACL,IAAI,CACL;QACD,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;QACpD;IACF;;AAGQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACxE;;AAGQ,IAAA,YAAY,CAAC,GAAW,EAAA;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACtD;;AAGQ,IAAA,aAAa,CAAC,aAAqB,EAAA;QACzC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;AACjD,QAAA,OAAO,KAAK,GAAG,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA,CAAA,CAAG,GAAG,IAAI;IACpD;AAEA;;;;;AAKG;AACK,IAAA,cAAc,CAAC,GAAW,EAAA;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC7C,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,OAAO,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,IAAI;IAClE;AAEA;;;;;;AAMG;AACK,IAAA,eAAe,CAAC,GAAW,EAAA;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC7C,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,IAAI,MAAM,KAAK,OAAO,EAAE;AACtB,YAAA,OAAO,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,IAAI;QACpE;AACA,QAAA,OAAO,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,IAAI;IACnE;wGAhJW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCzBY,iBAAiB,CAAA;AACpB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAExC,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;IACnC;wGALW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCaY,4BAA4B,CAAA;AAC/B,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAE/B,IAAA,OAAO,GAAG,KAAK,CAAa,SAAS,8EAAC;AACtC,IAAA,IAAI,GAAG,KAAK,CAAoC,YAAY,2EAAC;IAC7D,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAEjE,SAAS,GAAG,KAAK;AACjB,IAAA,WAAW;AACX,IAAA,QAAQ;AAER,IAAA,YAAY,GAAG,CAAC,KAAa,KAAa,KAAK;AAE/C,IAAA,QAAQ,KAAU;AAElB,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK;cACnB,QAAQ,CAAC;AACX,cAAE,QAAQ,CAAC,gBAAgB;IAC/B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;IAClC;AAEA,IAAA,cAAc,CAAC,WAAmB,EAAA;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7C,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAC7C,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI;QAChD,OAAO,GAAG,IAAI,GAAG,GAAG,OAAO,GAAG,OAAO;IACvC;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,EAAE;QAC7D,IAAI,CAAC,MAAM,EAAE;IACf;AAEA,IAAA,MAAM,KAAI;wGAvCC,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EClBzC,2pDAwDA,EAAA,MAAA,EAAA,CAAA,86FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxCY,OAAO,sEAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAEzB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAGzB,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,2pDAAA,EAAA,MAAA,EAAA,CAAA,86FAAA,CAAA,EAAA;;;MEe1B,sBAAsB,CAAA;IACxB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,IAAA,SAAS;AACT,IAAA,IAAI;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAExC,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7B,YAAA,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC9B,IAAI,EAAE,CAAC,EAAE;AACV,SAAA,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AAClD,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACnB;IACF;wGAtBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BnC,0+CAqDA,EAAA,MAAA,EAAA,CAAA,u0EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7BI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEP,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFjB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAKR,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAGlB;wBACP,mBAAmB;wBACnB,OAAO;wBACP,iBAAiB;wBACjB,gBAAgB;wBAChB;AACD,qBAAA,EAAA,QAAA,EAAA,0+CAAA,EAAA,MAAA,EAAA,CAAA,u0EAAA,CAAA,EAAA;;;MEGU,qBAAqB,CAAA;IACvB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,IAAA,QAAQ;AACR,IAAA,IAAI;AACH,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAExC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/B,YAAA,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC9B,OAAO,EAAE,CAAC,EAAE,CAAC;YACb,aAAa,EAAE,CAAC,IAAI;AACrB,SAAA,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;QACnB;IACF;wGAvBW,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,EChClC,40DA+CA,EAAA,MAAA,EAAA,CAAA,k0EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEP,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,iBAAiB,mKAHjB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAMR,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EAGjB;wBACP,mBAAmB;wBACnB,OAAO;wBACP,iBAAiB;wBACjB,gBAAgB;wBAChB,mBAAmB;wBACnB;AACD,qBAAA,EAAA,QAAA,EAAA,40DAAA,EAAA,MAAA,EAAA,CAAA,k0EAAA,CAAA,EAAA;;;MEbU,qBAAqB,CAAA;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAE/B,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE1D,QAAQ,GAAG,QAAQ;AAE1B,IAAA,QAAQ,KAAU;AAElB,IAAA,OAAO,CAAC,IAAc,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B;wGAXW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBlC,ktCA6BA,EAAA,MAAA,EAAA,CAAA,28CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDdY,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAEhB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,gBAAgB,EAAA,OAAA,EAGjB,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,ktCAAA,EAAA,MAAA,EAAA,CAAA,28CAAA,CAAA,EAAA;;;MEMjB,0BAA0B,CAAA;AAC7B,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAE/B,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,IAAA,EAAE,GAAW,IAAI,CAAC,MAAM,EAAE;IAEzB,MAAM,GAAW,GAAG;AAE5B,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAI,KAAK,CAAC,OAAO,EAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;IAClC;wGAfW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBvC,0kBASA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMI,mBAAmB,8NACnB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACX,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAGR,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EAGtB;wBACP,mBAAmB;wBACnB,uBAAuB;wBACvB,WAAW;wBACX;AACD,qBAAA,EAAA,QAAA,EAAA,0kBAAA,EAAA,MAAA,EAAA,CAAA,kGAAA,CAAA,EAAA;;;MERU,8BAA8B,CAAA;AACjC,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;IAE/B,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAE1D,QAAQ,GAAG,QAAQ;AAE1B,IAAA,OAAO,CAAC,IAAc,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B;wGATW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3C,+zDAgEA,EAAA,MAAA,EAAA,CAAA,28CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDvDY,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA;;4FAEhB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACE,kBAAkB,EAAA,OAAA,EAGnB,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,+zDAAA,EAAA,MAAA,EAAA,CAAA,28CAAA,CAAA,EAAA;;;AEuBvB,MAAM,uBAAuB,GAA4B;IAC9D,WAAW;IACX,QAAQ;IACR,OAAO;IACP,MAAM;IACN;;AAGF,MAAM,qBAAqB,GAAG;IAC5B,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT;CACD;AA6BK,MAAO,iBACX,SAAQ,eAAuB,CAAA;AAGvB,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAS,SAAS,gFAAC;AACpC,IAAA,YAAY,GAAG,KAAK,CAAW,qBAAqB,mFAAC;AACrD,IAAA,KAAK,GAAG,KAAK,CAA0B,uBAAuB,4EAAC;AAGxE,IAAA,QAAQ;AAGA,IAAA,eAAe;;AAGd,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,6EAAC;AAE5D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,gFAChD;AAGD,IAAA,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;AAEnD,IAAA,QAAQ,KAAU;AAElB,IAAA,IAAI,OAAO,GAAA;QACT,MAAM,GAAG,GAAG,CAAC;QACb,MAAM,MAAM,GAAe,EAAE;QAE7B,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAChB,gBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjB;YACA,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACf;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QAC3B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,WAAW,KAAI;wGAhDJ,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,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAvBjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2BU,0BAA0B,2BAAU,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG9C,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnGvC,m6DAyEA,EAAA,MAAA,EAAA,CAAA,+8HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGI,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,8BAA8B,mFAC9B,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,iFACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAGF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA3B7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,SAAA,EAGV;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,6BAA6B,EAAE;qBAChC,EAAA,OAAA,EACQ;wBACP,0BAA0B;wBAC1B,8BAA8B;wBAC9B,4BAA4B;wBAC5B,qBAAqB;wBACrB,qBAAqB;wBACrB,sBAAsB;wBACtB,0BAA0B;wBAC1B;AACD,qBAAA,EAAA,QAAA,EAAA,m6DAAA,EAAA,MAAA,EAAA,CAAA,+8HAAA,CAAA,EAAA;;sBAYA,SAAS;uBAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAGxE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAUtD,YAAY;uBAAC,OAAO;;;MEtGV,cAAc,CAAA;AACzB,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,GAAG,GAAG,EAAE;AACZ,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzD,QAAQ,IAAI;AACV,gBAAA,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACvD,oBAAA,GAAG,GAAG,KAAK,CAAC,IAAI;oBAChB;AACF,gBAAA;oBACE,GAAG,GAAG,CAAA,KAAA,EAAQ,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,IAAI,CAAA,CAAE;;QAErD;AACA,QAAA,OAAO,GAAG;IACZ;wGAbW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACgBD;;;;;;;;;;;;;;AAcG;AACH,MAAM,WAAW,GAAG,IAAI,OAAO,EAAkB;AAEjD;;;;;;;;;;;;AAYG;AACH,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAAgB;AAuBxD;;;;AAIG;AACH,IAAI,UAAU,GAAG,CAAC;AAElB;;;;;;;;AAQG;AACH,SAAS,SAAS,CAAC,KAAa,EAAA;IAC9B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC3B,WAAW,CAAC,GAAG,CACb,KAAK,EACL,KAAK,CAAC,EAAE,GAAG,CAAA,IAAA,EAAO,KAAK,CAAC,EAAE,CAAA,CAAE,GAAG,WAAW,EAAE,UAAU,CAAA,CAAE,CACzD;IACH;AACA,IAAA,OAAO,KAAK;AACd;AAoBM,MAAO,sBAAuB,SAAQ,eAE3C,CAAA;IACS,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AACnB,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEvC,IAAA,MAAM,GAAG,KAAK,CAAC,kCAAkC,6EAAC;IAClD,KAAK,GAAG,KAAK,CAAC,KAAK,6EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACrD,KAAK,GAAG,KAAK,CAAC,CAAC,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAChD,IAAA,MAAM,GAAG,KAAK,CAAmB,MAAM,6EAAC;AAEjD;;;;AAIG;IACM,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC3C;AAGD,IAAA,MAAM;AAEC,IAAA,MAAM,GAAG,IAAI,GAAG,EAAmC;AAE1D;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACc,IAAA,aAAa,GAAG,MAAM,CAAC,CAAC,oFAAC;IAElC,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEQ,SAAS,CAAC,GAAW,EAAE,KAA8B,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE;IACpB;AAEQ,IAAA,YAAY,CAAC,GAAW,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;;;;;;;AAQG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C;AAEA;;;;;AAKG;AACM,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAEnC;;;;;;AAMG;AACM,IAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,mFAAC;AAE3C,IAAA,UAAU;AACV,IAAA,QAAQ;AAEhB;;;;;;;;;;;;AAYG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK;AACxB,cAAG,KAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC;cACnD,EAAE;IACR;AAEA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,SAAS,CAAC,KAAe,CAAC;IACnC;AAEA;;;;;;;;;;AAUG;AACH,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,SAAS,CAAC,KAAK,CAAC;AAChB,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,CAAW;IACzC;AAEA;;;;;;AAMG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;AACtB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS;IACnE;AAES,IAAA,UAAU,CAAC,KAA+B,EAAA;AACjD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,KAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB;aAAO;YACL,IAAI,KAAK,EAAE;gBACT,SAAS,CAAC,KAAe,CAAC;YAC5B;YACA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,CAAC;QACrD;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;QACnC;IACF;AAEA;;;;;AAKG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAoB,CAAC;QACvC;aAAO;YACL,IAAI,CAAC,OAAO,EAAE;QAChB;IACF;IAEA,IAAI,GAAA;QACF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;AAC3C,QAAA,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;QACxC;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,GAAG,CAAC,KAAa,EAAA;AACf,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;;;QAI/B,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAY,CAAC;AACvD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,QAAA,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAY,CAAC;AAC1C,QAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;;;;;;;;AAQf,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,gBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAgB;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC3B;iBAAO;AACL,gBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAgB;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC3B;AACF,QAAA,CAAC;IACH;AAEA;;;;;;;;AAQG;IACK,MAAM,CAAC,KAAa,EAAE,GAAW,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;QAC1B,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;;;;;;QAM/B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;QAChD;aACG,MAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK;AAClE,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,IAAY,KAAI;;;;;AAKrB,gBAAA,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC;AACzB,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;;;;;;;AAOhB,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CACjE;oBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC7B;qBAAO;AACL,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB;YACF,CAAC;YACD,KAAK,EAAE,MAAK;;;;;;;AAOV,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC;YAChC;AACD,SAAA,CAAC;IACN;AAEA;;;;AAIG;AACH,IAAA,KAAK,CAAC,KAAkB,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;YACtD;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC;AAEQ,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzC;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB;QACA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B;AAEA,IAAA,MAAM,CAAC,KAAkB,EAAA;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;gBACrC,IAAI,EAAE,MAAK;AACT,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,CACjE;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;oBACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC7B,CAAC;gBACD,KAAK,EAAE,MAAK;;;;oBAIV,IAAI,cAAc,EAAE;AAClB,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC;oBACrC;yBAAO;AACL,wBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;oBACxB;gBACF;AACD,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,CACjE;AACD,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7B;IACF;IAEA,SAAS,CAAC,KAAgB,EAAE,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC;AACpD,QAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IACzB;AAEA;;;;;;AAMG;IACH,QAAQ,CAAC,KAAgB,EAAE,KAAa,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;AAEA,IAAA,SAAS,CAAC,KAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACF;AAEA,IAAA,OAAO,CAAC,KAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD;AAEA,IAAA,IAAI,CAAC,KAAgB,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;YAC7C;QACF;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,EAAE;YACrC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7B;IACF;AAEQ,IAAA,UAAU,CAAC,KAAgB,EAAA;AACjC,QAAA,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IACvD;AAEQ,IAAA,cAAc,CAAC,IAAU,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;aACzB,KAAK,CAAC,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;aAC7C,MAAM,CAAC,OAAO,CAAC;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACpC,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;AAC/B,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/B;AACA,YAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C;YACA,OAAO,IAAI,KAAK,OAAO;AACzB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,cAAc,CAAC,KAAsB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;;;;;YAKjB,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACvC;YACF;YACA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;QACA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAC1B;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;AAEA;;;;;;;;;;AAUG;AACK,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,CAAC;QACV;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;QAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,IAAI,CAC7D;QACD,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,MAAM;IACxB;IAEQ,iBAAiB,CAAC,IAAY,EAAE,QAAgB,EAAA;AACtD,QAAA,MAAM,cAAc,GAClB,QAAQ,KAAK,CAAC,GAAG,gBAAgB,GAAG,CAAA,EAAG,QAAQ,kBAAkB;AACnE,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,OAAO,CAAA,kCAAA,EAAqC,cAAc,CAAA,CAAE;QAC9D;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,GAAG,aAAa,GAAG,CAAA,MAAA,EAAS,IAAI,QAAQ;AACrE,QAAA,OAAO,CAAA,KAAA,EAAQ,UAAU,CAAA,EAAA,EAAK,cAAc,EAAE;IAChD;wGA3dW,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EARtB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,gBAAA,KAAK,EAAE;AACR;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAuB0C,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5IvD,ovVA4SA,EAAA,MAAA,EAAA,CAAA,+9WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpMY,YAAY,+HAAkB,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAnD,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FAe3B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB,CAAC,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAAA,UAAA,EAChE,IAAI,EAAA,IAAA,EACV;AACJ,wBAAA,iCAAiC,EAAE,uBAAuB;AAC1D,wBAAA,mCAAmC,EAAE;qBACtC,EAAA,SAAA,EAEU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,ovVAAA,EAAA,MAAA,EAAA,CAAA,+9WAAA,CAAA,EAAA;;sBAuBA,SAAS;uBAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;;;MEzG5C,eAAe,CAAA;AACjB,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AACxB,IAAA,MAAM,GAAG,KAAK,CAA+C,EAAE,6EAAC;AAChE,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,0EAAC;AACvB,IAAA,KAAK,GAAG,KAAK,CAAU,SAAS,4EAAC;IACjC,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEjE,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;IACF;wGAZW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBhB;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+vCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAaU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3B3B,SAAS;+BACE,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;GAWT,EAAA,IAAA,EAEK;AACJ,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,2BAA2B,EAAE,YAAY;AACzC,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,0BAA0B,EAAE,uBAAuB;AACnD,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,+vCAAA,CAAA,EAAA;;;MCMpC,mBAAmB,CAAA;AACb,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEjD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,KAAK,GAAG,KAAK,CAAU,SAAS,4EAAC;IACjC,SAAS,GAAG,MAAM,EAAQ;;AAG1B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;IAE/B,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;QAClB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;IACpC;wGAxBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,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,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,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,uCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBpB;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,05DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmBU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA3B/B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN;;;;;GAKT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,gCAAgC,EAAE,YAAY;AAC9C,wBAAA,+BAA+B,EAAE,uBAAuB;AACxD,wBAAA,+BAA+B,EAAE,uBAAuB;AACxD,wBAAA,+BAA+B,EAAE,uBAAuB;AACxD,wBAAA,+BAA+B,EAAE,uBAAuB;AACxD,wBAAA,8BAA8B,EAAE,sBAAsB;AACtD,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,iBAAiB,EAAE,uCAAuC;AAC1D,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,iBAAiB,EAAE,YAAY;AAC/B,wBAAA,iBAAiB,EAAE;qBACpB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,05DAAA,CAAA,EAAA;;;ACfjD,MAAM,eAAe,GAAsB;IACzC,WAAW;IACX,SAAS;IACT,MAAM;IACN;CACD;AAED;;;;;;AAMG;MAmBU,eAAe,CAAA;AACjB,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AACnB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAe;AACtC,IAAA,SAAS,GAAG,KAAK,CAAc,cAAc,gFAAC;AAC9C,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,gFAAC;IAChD,MAAM,GAAG,MAAM,EAAwB;IAEvC,KAAK,GAAG,eAAe,CAAC,mBAAmB,6EAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAE3D,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,UAAU;IACV,eAAe,GAAG,KAAK;IACvB,WAAW,GAAG,CAAC,CAAC;AAExB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACpE,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC/C,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAC1C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CACxD;AACD,YAAA,SAAS,CAAC,MACR,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CACpE;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACf,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACxC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzD;QACF;AACA,QAAA,MAAM,IAAI,GAAG,uBAAuB,CAClC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAC5D,IAAI,CAAC,WAAW,EAChB,KAAK,CAAC,GAAsB,EAC5B,UAAU,CACX;QACD,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;QAC7B;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;gBAClC;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,cAAc,CAAC,KAAqC,EAAA;AAC1D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB;QACF;AACA,QAAA,IACE,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM;YAChC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,EAClC;AACA,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChE;QACA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7E;IAEQ,SAAS,CACf,KAAqC,EACrC,KAAa,EAAA;AAEb,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AACxD,QAAA,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;IACvB;wGAtHW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAOO,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtB1C;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mjDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAYU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;+BACE,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,QAAA,EACN;;;GAGT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,MAAM;AACZ,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,mBAAmB,EAAE,qBAAqB;AAC1C,wBAAA,oBAAoB,EAAE,SAAS;AAC/B,wBAAA,mBAAmB,EAAE,4BAA4B;AACjD,wBAAA,WAAW,EAAE;qBACd,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,mjDAAA,CAAA,EAAA;AASd,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC3D7E;;;;AAIG;MAYU,sBAAsB,CAAA;wGAAtB,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,gMARvB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0SAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAAA,UAAA,EACpC,IAAI,EAAA,QAAA,EACN,EAAE,EAAA,IAAA,EAEN;AACJ,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,0SAAA,CAAA,EAAA;;;MCGpC,sBAAsB,CAAA;AACxB,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;wGAD1C,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdvB;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjBlC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN;;;;;GAKT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,+dAAA,CAAA,EAAA;;;MCapC,gBAAgB,CAAA;IAClB,KAAK,GAAG,KAAK,CAAC,CAAC,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAChD,GAAG,GAAG,KAAK,CAAC,CAAC,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC9C,GAAG,GAAG,KAAK,CAAC,GAAG,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAChD,IAAA,SAAS,GAAG,KAAK,CAAS,OAAO,gFAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAU,SAAS,4EAAC;AACjC,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;QACrC,IAAI,KAAK,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC,GAAG,CACb,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC,CACzD;AACH,IAAA,CAAC,iFAAC;wGAbS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,goCAjBzB,4EAA4E,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i3BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAiBnE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EAEd,4EAA4E,EAAA,IAAA,EAExE;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,SAAS;AACjC,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,0BAA0B,EAAE;qBAC7B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,i3BAAA,CAAA,EAAA;;;MCkDpC,gBAAgB,CAAA;AAClB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,IAAI,GAAG,KAAK,CAAc,IAAI,2EAAC;AAC/B,IAAA,UAAU,GAAG,KAAK,CAAC,aAAa,iFAAC;AACjC,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,oFAAC;IAC3B,MAAM,GAAG,MAAM,EAAwB;AAEvC,IAAA,gBAAgB,GAAG,KAAK,CAAsB,IAAI,uFAAC;AACnD,IAAA,aAAa,GAAG,KAAK,CAA0B,EAAE,oFAAC;AAClD,IAAA,WAAW,GAAG,MAAM,CAAmC,SAAS,kFAAC;AAGlE,IAAA,WAAW;AAEF,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,UAAU;AACV,IAAA,UAAU;IACV,eAAe,GAAG,KAAK;AAE/B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACpE,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;QACpB;QACA,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;IAC5B;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;QACxD;AACA,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAa;IACtC;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACnD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;QACnC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QACpC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG;QAC1C,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa;QAClD,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM;QAC1C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;gBAClC;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACzC,IACE,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,CAAC,SAAS;YACV,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,UAAU,EACf;YACA;QACF;QACA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC;AAC7D,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE;YAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACvC;IACF;wGAvGW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAYO,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5DxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k+HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAzCS,YAAY,+BAAE,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAiD7B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBApD5B,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCT,EAAA,IAAA,EAEK;AACJ,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,k+HAAA,CAAA,EAAA;;sBAc9C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;;ACtFtD;MACa,UAAU,CAAA;AAEF,IAAA,YAAA;AACR,IAAA,OAAA;AACA,IAAA,MAAA;AAHX,IAAA,WAAA,CACmB,YAA4C,EACpD,OAAU,EACV,MAAgD,EAAA;QAFxC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACpB,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,MAAM,GAAN,MAAM;IACd;IAEH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;IACpC;AACD;;MCHY,cAAc,CAAA;AACR,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElE,IAAA,IAAI,CAAmB,MAAwB,EAAA;AAC7C,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,EAAE;YACrD,mBAAmB,EAAE,IAAI,CAAC;AAC3B,SAAA,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;QAClD,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;QACpE,YAAY,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC;QAC3D,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrD,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAC9C,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,UAAU,CAC7B,YAAY,EACZ,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAK,EACrC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAClC;QACD,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;YAC1C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;YACrD,YAAY,CAAC,OAAO,EAAE;AACxB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,QAAQ;IACjB;wGA3BW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACDlC;;;;;AAKG;MAuBU,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAS,yCAAyC,4EAAC;AAChE,IAAA,aAAa,GAAG,KAAK,CAAS,YAAY,oFAAC;IAC3C,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,QAAQ,GAAG,MAAM,EAAQ;AAEzB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,8EAAC;IACrD,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,KAAK;SACP,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACvC,SAAA,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC5C;wGAbU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBpB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmBhB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAClB;;;;;;;;;;;;;GAaT,EAAA,IAAA,EAEK,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAA,eAAA,EACvB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6XAAA,CAAA,EAAA;;;MCWpC,qBAAqB,CAAA;AACvB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,+EAAC;AACpB,IAAA,YAAY,GAAG,KAAK,CAAC,CAAC,mFAAC;AACvB,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,2EAAC;AACf,IAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,IAAI,CAAC,GAAG,CACN,CAAC,EACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CACpE,gFACF;AACQ,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;AACzD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AACxD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC;AAC7E,IAAA,CAAC,4EAAC;AAEF,IAAA,IAAI,CAAC,IAAY,EAAA;QACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D;wGArBW,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,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,g+DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvCjC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAAA,IAAA,EAEK,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,g+DAAA,CAAA,EAAA;;;MCZpC,kBAAkB,CAAA;AACpB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AACrB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAe;AACtC,IAAA,SAAS,GAAG,KAAK,CAAc,cAAc,gFAAC;AAC9C,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,oFAAC;IAC3B,MAAM,GAAG,MAAM,EAAwB;AAE/B,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,UAAU;IACV,eAAe,GAAG,KAAK;AAE/B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACpE,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACxC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;gBAClC;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;wGA7DW,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,01BAXnB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,00BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE,OAAO;AAC5B,wBAAA,oBAAoB,EAAE,WAAW;AACjC,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,00BAAA,CAAA,EAAA;;;MCEpC,sBAAsB,CAAA;IACxB,KAAK,GAAG,KAAK,CAAC,CAAC,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAChD,GAAG,GAAG,KAAK,CAAC,CAAC,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAC9C,GAAG,GAAG,KAAK,CAAC,GAAG,2EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;IAChD,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC7D,IAAA,SAAS,GAAG,KAAK,CAAS,UAAU,gFAAC;AACrC,IAAA,KAAK,GAAG,KAAK,CAAU,SAAS,4EAAC;AACjC,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrC,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,OAAO,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,GAAG,CACb,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC,CACzD;AACH,IAAA,CAAC,iFAAC;wGAdS,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,w8CAnB/B,mFAAmF,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,q5CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmB1E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvBlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EAEd,mFAAmF,EAAA,IAAA,EAE/E;AACJ,wBAAA,IAAI,EAAE,aAAa;AACnB,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,OAAO;AAC/B,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,kBAAkB,EAAE,yBAAyB;AAC7C,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,wCAAwC,EAAE,iBAAiB;AAC3D,wBAAA,kCAAkC,EAAE,uBAAuB;AAC3D,wBAAA,kCAAkC,EAAE,uBAAuB;AAC3D,wBAAA,kCAAkC,EAAE,uBAAuB;AAC3D,wBAAA,kCAAkC,EAAE,uBAAuB;AAC3D,wBAAA,iCAAiC,EAAE;qBACpC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,q5CAAA,CAAA,EAAA;;;MC/BpC,UAAU,CAAA;AACd,IAAA,EAAE;AACF,IAAA,OAAO;AACP,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,OAAO;AAEd,IAAA,WAAA,CAAY,QAA6B,EAAE,EAAA;AACzC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAC5B;AACD;;MCLY,iBAAiB,CAAA;AACZ,IAAA,QAAQ,GAAwB,IAAI,OAAO,EAAc;AACjE,IAAA,KAAK;AAEb,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,cAAc,CAAC,IAAI,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;IACnB;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;AAEA,IAAA,IAAI,CAAC,QAA6B,EAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9C;AAEA,IAAA,UAAU,CAAC,IAAU,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,QACE,IAAI,CAAC,WAAW,EAAE;YAClB,GAAG;AACH,YAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACxB,GAAG;AACH,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,GAAG;AACH,YAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpB,GAAG;AACH,YAAA,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,GAAG;AACH,YAAA,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAE1B;wGAjCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCKY,uBAAuB,CAAA;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElC,IAAA,GAAG,GAAG,KAAK,CAAS,SAAS,0EAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAS,SAAS,+EAAC;AACnC,IAAA,OAAO,GAAG,KAAK,CAAS,SAAS,8EAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAS,SAAS,4EAAC;AAEzC,IAAA,QAAQ,KAAU;AAGlB,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,EACtC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EACnC,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,CACf;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CACtB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,EACtC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EACnC,IAAI,CAAC,GAAG,EAAE,EACV,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,KAAK,EAAE,CACb;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;AACzC,SAAA,CAAC;IACJ;wGAhCW,uBAAuB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,uBAAuB,krBANxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAMD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,oCAAoC,EAAE;AACvC;AACF,iBAAA;;sBAWE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCftB,WAAW,CAAA;AACd,IAAA,QAAQ,GAAa;QAC3B,SAAS;QACT,OAAO;QACP,QAAQ;QACR,WAAW;QACX,QAAQ;QACR,SAAS;QACT;KACD;AAED,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IAC3B;wGAbW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,eAAe,CAAA;AAClB,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE3C,SAAS,CAAC,SAAuB,EAAE,GAAW,EAAA;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;AACxC,QAAA,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAc,KAAI;AAC7C,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,QACE,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE;AACtB,gBAAA,OAAO,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;gBACtC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;AAEhD,QAAA,CAAC;AACD,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;IAC9D;wGAdW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACID;AACA;AACA;AACA;AACA,MAAM,sBAAsB,GAAG,EAAE;AACjC;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC;MAaT,wBAAwB,CAAA;AAC1B,IAAA,QAAQ,GAAG,KAAK,CAAa,SAAS,+EAAC;AACvC,IAAA,QAAQ,GAAG,KAAK,CAAS,SAAS,+EAAC;AAErC,IAAA,MAAM;AACL,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnC,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAEpD,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,QACE,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;IAE7E;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,QAAQ,EAAE;YACZ,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC1C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;AACtE,YAAA,MAAM,IAAI,GAAG,UAAU,CACrB,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAC9D,qCAAqC,CACtC,CACF;YACD,MAAM,UAAU,GACd,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,sBAAsB,GAAG,IAAI;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACpB,UAAU,GAAG,KAAK,GAAG,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC,EAC/C,UAAU,GAAG,CAAC,CACf;QACH;IACF;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7B;IACF;wGA1CW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,8hBCjCrC,sNAIA,EAAA,MAAA,EAAA,CAAA,klDAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FD6Ba,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,IAAA,EAGvB;AACJ,wBAAA,4BAA4B,EAAE,MAAM;AACpC,wBAAA,kCAAkC,EAAE,yBAAyB;AAC7D,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,sNAAA,EAAA,MAAA,EAAA,CAAA,klDAAA,CAAA,EAAA;;sBAqCpC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MEjDtB,YAAY,CAAA;AACd,IAAA,SAAS,GAAG,KAAK,CAAe,SAAS,gFAAC;AAC1C,IAAA,WAAW,GAAG,KAAK,CAAO,SAAS,kFAAC;AACtC,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,IAAI;AACJ,IAAA,KAAK;AACJ,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACnC,YAAY,GAAW,CAAC;AAEf,IAAA,eAAe,GAAG,MAAM,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;YAC3C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY;AAChC,iBAAA,IAAI,CAAC,IAAI,CAAC,KAAK;AACf,iBAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;QACnC;AACF,IAAA,CAAC,sFAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE;aAClB,IAAI,CAAC,CAAC;AACN,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB;wGA1BW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBzB,snCAmCA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvBI,uBAAuB,8GAGvB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFxB,WAAW,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACX,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;4FAKN,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAElB;wBACP,uBAAuB;wBACvB,WAAW;wBACX,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,snCAAA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA;;;MEMU,aAAa,CAAA;AAChB,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElC,IAAA,SAAS,GAAG,KAAK,CAAe,SAAS,gFAAC;AAC1C,IAAA,WAAW,GAAG,KAAK,CAAO,SAAS,kFAAC;AAEtC,IAAA,UAAU;AACV,IAAA,KAAK;AACL,IAAA,IAAI;AACJ,IAAA,IAAI;AACJ,IAAA,KAAK;IAEJ,YAAY,GAAW,CAAC;AAEf,IAAA,eAAe,GAAG,MAAM,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;YAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;YACjC,IAAI,kBAAkB,GAAG,IAAI,IAAI,CAC/B,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EACnB,CAAC,CACF,CAAC,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY;AAChC,iBAAA,IAAI,CAAC,IAAI,CAAC,KAAK;iBACf,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,kBAAkB,EAAE,CAAC,CAAC;QACxE;AACF,IAAA,CAAC,sFAAC;AAEF,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW;IACjC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE;aAClB,IAAI,CAAC,CAAC;AACN,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB;wGAxCW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB1B,01CA2CA,EAAA,MAAA,EAAA,CAAA,4NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEZ,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEvB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHxB,WAAW,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAEX,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;4FAON,aAAa,EAAA,UAAA,EAAA,CAAA;kBAbzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB;wBACP,YAAY;wBACZ,WAAW;wBACX,uBAAuB;wBACvB,eAAe;wBACf;AACD,qBAAA,EAAA,UAAA,EAGW,IAAI,EAAA,QAAA,EAAA,01CAAA,EAAA,MAAA,EAAA,CAAA,4NAAA,CAAA,EAAA;;;MEEL,mBAAmB,CAAA;AACtB,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAElC,IAAA,SAAS,GAAG,KAAK,CAAe,SAAS,gFAAC;AAC1C,IAAA,WAAW,GAAG,KAAK,CAAO,SAAS,kFAAC;AAEtC,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,IAAI;IACJ,IAAI,GAAa,EAAE;AACnB,IAAA,KAAK;IACJ,gBAAgB,GAAW,CAAC;AAEnB,IAAA,eAAe,GAAG,MAAM,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;YACjC,IAAI,kBAAkB,GAAG,IAAI,IAAI,CAC/B,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EACnB,CAAC,CAAC,CACH,CAAC,OAAO,EAAE;YAEX,IAAI,OAAO,GAAG,CAAC;AACf,YAAA,OAAO,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;gBACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC;gBAChE,IAAI,CAAC,KAAK,EAAE;AACZ,gBAAA,kBAAkB,EAAE;AACpB,gBAAA,OAAO,EAAE;YACX;QACF;AACF,IAAA,CAAC,sFAAC;IAEF,WAAW,GAAG,CAAC,KAAK,EAAE,IAAgB,KAAK,IAAI,CAAC,EAAE;IAElD,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE;aAClB,IAAI,CAAC,CAAC;AACN,aAAA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB;wGA3CW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBhC,45CA8CA,EAAA,MAAA,EAAA,CAAA,gOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEZ,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFxB,WAAW,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAGX,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;4FAMN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB;wBACP,YAAY;wBACZ,WAAW;wBACX,uBAAuB;wBACvB,wBAAwB;wBACxB;AACD,qBAAA,EAAA,UAAA,EAGW,IAAI,EAAA,QAAA,EAAA,45CAAA,EAAA,MAAA,EAAA,CAAA,gOAAA,CAAA,EAAA;;;MEuBL,mBAAmB,CAAA;AACrB,IAAA,IAAI,GAAG,KAAK,CAAa,UAAU,2EAAC;AACpC,IAAA,QAAQ,GAAG,KAAK,CAAO,IAAI,IAAI,EAAE,+EAAC;IAClC,WAAW,GAAG,KAAK,CAAY,KAAK,CAAC,gBAAgB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACzD,IAAA,MAAM,GAAG,KAAK,CAAS,GAAG,6EAAC;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAe,SAAS,2EAAC;AAC7B,IAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC3C,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAE9D,OAAO,GAAA;AACL,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE;AAEA,IAAA,UAAU,CAAC,IAAe,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClE;wGAlBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,62BC3ChC,+iCA2CA,EAAA,MAAA,EAAA,CAAA,+2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBI,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,YAAY,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,aAAa,mGACb,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,mBAAmB,8NACnB,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FASd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd;wBACP,iBAAiB;wBACjB,WAAW;wBACX,YAAY;wBACZ,aAAa;wBACb,mBAAmB;wBACnB,qBAAqB;wBACrB,mBAAmB;wBACnB;qBACD,EAAA,aAAA,EAGc,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,qBAAqB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,+iCAAA,EAAA,MAAA,EAAA,CAAA,+2FAAA,CAAA,EAAA;;;MEzBU,uBAAuB,CAAA;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAe,YAAY,CAAC;AAE7C,IAAA,IAAI,GAAG,KAAK,CAA0B,SAAS,2EAAC;AAE/B,IAAA,SAAS;AAEnC,IAAA,QAAQ,KAAI;IAEZ,WAAW,CAAC,EAAE,IAAI,EAAiB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;AACvE,QAAA,MAAM,QAAQ,GAAG,CAAA,mCAAA,EAAsC,IAAI,CAAC,SAAS,CACnE,IAAI,EACJ,IAAI,EACJ,CAAC,CACF,WAAW;QACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC;IACnE;wGAjBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,uBAAuB,oRAFxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAED,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAME,WAAW;uBAAC,WAAW;;;ACjB1B;;;;;;AAMG;MAeU,kBAAkB,CAAA;AACpB,IAAA,KAAK,GAAG,KAAK,CAAiB,KAAK,4EAAC;AACpC,IAAA,SAAS,GAAG,KAAK,CAAS,sBAAsB,gFAAC;wGAF/C,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,4BAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXnB,CAAA;;AAEH,QAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8tHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASI,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN,CAAA;;SAEH,EAAA,IAAA,EAED;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,0BAA0B,EAAE,mBAAmB;AAC/C,wBAAA,8BAA8B,EAAE;qBACjC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,8tHAAA,CAAA,EAAA;;;ACbjD;;;;;AAKG;MA4DU,sBAAsB,CAAA;AACxB,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;AAC3C,IAAA,IAAI,GAAG,KAAK,CAA0C,SAAS,2EAAC;IAChE,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACtD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;IAClD,SAAS,GAAG,MAAM,EAAQ;AAEnC,IAAA,UAAU,CAAC,KAAY,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;wGAdW,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,kCAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvDvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8tHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/CS,UAAU,oOAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAwD3B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA3DlC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CT,EAAA,IAAA,EAEK;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,kCAAkC,EAAE,UAAU;AAC9C,wBAAA,oCAAoC,EAAE;qBACvC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,8tHAAA,CAAA,EAAA;;;MC1DpC,yBAAyB,CAAA;AAC3B,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;wGAD1C,yBAAyB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAV1B;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8tHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAKU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,QAAA,EACN;;;;;GAKT,EAAA,IAAA,EAEK,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAA,eAAA,EAC9B,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,8tHAAA,CAAA,EAAA;;;ACSjD,MAAM,WAAW,GAAwC;AACvD,IAAA,EAAE,EAAE,GAAG;AACP,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,OAAO,EAAE;CACV;AAED;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAuJU,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,6EAAC;AAC7C,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,4EAAC;AAC5C,IAAA,SAAS,GAAG,KAAK,CAAsB,SAAS,gFAAC;AACjD,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,iFAAC;AACjD,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;AAC3C,IAAA,SAAS,GAAG,KAAK,CAAsB,SAAS,gFAAC;AACjD,IAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,+EAAC;AAC/C,IAAA,QAAQ,GAAG,KAAK,CAAqB,SAAS,+EAAC;AAC/C,IAAA,OAAO,GAAG,KAAK,CAAoB,SAAS,8EAAC;IAC7C,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC3D,SAAS,GAAG,MAAM,EAAQ;IAEzB,UAAU,GAAA;AAClB,QAAA,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACtC;IAEU,UAAU,GAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;wGArBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlJpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iqSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvIS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAmJf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAtJ/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,cACZ,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsIT,EAAA,IAAA,EAEK;AACJ,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,+BAA+B,EAAE,yBAAyB;AAC1D,wBAAA,4BAA4B,EAAE,sBAAsB;AACpD,wBAAA,+BAA+B,EAAE,yBAAyB;AAC1D,wBAAA,4BAA4B,EAAE,sBAAsB;AACpD,wBAAA,mCAAmC,EAAE;qBACtC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,iqSAAA,CAAA,EAAA;;;MClMpC,iBAAiB,CAAA;IACnB,IAAI,GAAG,KAAK,CAAqB,SAAS,4EAAI,KAAK,EAAE,YAAY,EAAA,CAAG;AACpE,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,iFAAC;;AAGjD,IAAA,GAAG,GAAG,MAAM,CAAuB,WAAW,CAAC;wGAL7C,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACHM,MAAM,OAAO,GAAkB;AACpC,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,SAAS,EAAE;AACT,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,CAAC,EAAE,SAAS;;AAEZ,gBAAA,EAAE,EAAE,SAAS;;;;AAIb,gBAAA,EAAE,EAAE,SAAS;;AAEb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,GAAG,EAAE,SAAS;;AAEd,gBAAA,GAAG,EAAE,SAAS;;AAEd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;;AAEd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;;AAEd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;;;AAGd,gBAAA,cAAc,EAAE,SAAS;;;AAGzB,gBAAA,IAAI,EAAE,SAAS;;;;AAIf,gBAAA,QAAQ,EAAE;AACX,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,EAAE,EAAE,SAAS;;;AAGb,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,cAAc,EAAE;AACjB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,UAAU,EAAE;AACb,aAAA;AACD,YAAA,QAAQ,EAAE;AACR,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,UAAU,EAAE;AACb,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,mBAAmB,EAAE,SAAS;AAC9B,gBAAA,kBAAkB,EAAE;AACrB,aAAA;;;;;;;AAOD,YAAA,WAAW,EAAE;AACX,gBAAA,cAAc,EAAE,uBAAuB;AACvC,gBAAA,mBAAmB,EAAE;AACtB,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,aAAa,EAAE,SAAS;AACxB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,QAAQ,EAAE,SAAS;AACnB,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,gBAAgB,EAAE,SAAS;AAC3B,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,SAAS,EAAE;AACZ,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,cAAc,EAAE;AACjB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,SAAS,EAAE,uBAAuB;AAClC,gBAAA,YAAY,EAAE;AACf,aAAA;;;AAGD,YAAA,cAAc,EAAE;AACd,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,sBAAsB,EAAE;AACzB,aAAA;;;AAGD,YAAA,KAAK,EAAE;AACL,gBAAA,YAAY,EAAE;AACf,aAAA;;;;;AAKD,YAAA,MAAM,EAAE;;;;;AAKN,gBAAA,aAAa,EAAE;AAChB,aAAA;;;;AAID,YAAA,IAAI,EAAE;AACJ,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,cAAc,EAAE,SAAS;AACzB,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,iBAAiB,EAAE,SAAS;AAC5B,gBAAA,gBAAgB,EAAE,SAAS;AAC3B,gBAAA,gBAAgB,EAAE;AACnB;AACF,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,OAAO,EAAE,SAAS;;;;AAIlB,YAAA,MAAM,EAAE;AACT,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,+DAA+D;AACrE,gBAAA,OAAO,EACL,uEAAuE;AACzE,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,EAAE,EAAE,MAAM;AACV,gBAAA,EAAE,EAAE,UAAU;AACd,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,kBAAkB,EAAE,YAAY;AAChC,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,SAAS,EAAE,SAAS;;AAEpB,gBAAA,gBAAgB,EAAE,WAAW;;;;AAI7B,gBAAA,KAAK,EAAE,YAAY;;;AAGnB,gBAAA,OAAO,EAAE,WAAW;;;AAGpB,gBAAA,OAAO,EAAE,YAAY;;AAErB,gBAAA,SAAS,EAAE,YAAY;;AAEvB,gBAAA,SAAS,EAAE,YAAY;;AAEvB,gBAAA,SAAS,EAAE;AACZ,aAAA;AACD,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;AAC/D,YAAA,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AACrD,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,CAAC,EAAE,GAAG;AACN,YAAA,CAAC,EAAE,SAAS;AACZ,YAAA,CAAC,EAAE,QAAQ;AACX,YAAA,CAAC,EAAE,SAAS;AACZ,YAAA,CAAC,EAAE,MAAM;AACT,YAAA,CAAC,EAAE,SAAS;AACZ,YAAA,CAAC,EAAE,QAAQ;AACX,YAAA,CAAC,EAAE,UAAU;AACb,YAAA,CAAC,EAAE,MAAM;AACT,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE;AACL,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,QAAQ;;;;AAId,YAAA,KAAK,EAAE,UAAU;;;;;;;AAOjB,YAAA,EAAE,EAAE,SAAS;;;;AAIb,YAAA,YAAY,EAAE,WAAW;;AAEzB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,MAAM,EAAE,OAAO;;;;AAIf,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,qBAAqB,EAAE;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,6DAA6D;AACtE,YAAA,OAAO,EAAE,gCAAgC;AACzC,YAAA,OAAO,EAAE,gCAAgC;AACzC,YAAA,UAAU,EAAE,iCAAiC;AAC7C,YAAA,KAAK,EAAE,iCAAiC;AACxC,YAAA,MAAM,EAAE,yDAAyD;AACjE,YAAA,MAAM,EAAE,8BAA8B;AACtC,YAAA,MAAM,EAAE,8BAA8B;AACtC,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,aAAa,EAAE,OAAO;AACtB,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,OAAO,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE;AACvC,QAAA,UAAU,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;AACjC,QAAA,OAAO,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5C,QAAA,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC5B,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,YAAY,EAAE;AACf,SAAA;AACD,QAAA,MAAM,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE;AAClD,QAAA,IAAI,EAAE;AACJ,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,SAAS,EAAE,MAAM;;;;;AAKjB,YAAA,cAAc,EAAE,UAAU;;;;AAI1B,YAAA,UAAU,EAAE,SAAS;;;;;;;AAOrB,YAAA,aAAa,EAAE,MAAM;;;;;;AAMrB,YAAA,kBAAkB,EAAE,QAAQ;AAC5B,YAAA,mBAAmB,EAAE,SAAS;AAC9B,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,iBAAiB,EAAE,QAAQ;AAC3B,YAAA,6BAA6B,EAAE,KAAK;AACpC,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,oBAAoB,EAAE,MAAM;;;;;AAK5B,YAAA,kBAAkB,EAAE,MAAM;AAC1B,YAAA,mBAAmB,EAAE,MAAM;AAC3B,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,sBAAsB,EAAE,MAAM;AAC9B,YAAA,oBAAoB,EAAE,KAAK;AAC3B,YAAA,qBAAqB,EAAE,MAAM;;;;AAI7B,YAAA,mBAAmB,EAAE,MAAM;AAC3B,YAAA,uBAAuB,EAAE,MAAM;AAC/B,YAAA,oBAAoB,EAAE,KAAK;AAC3B,YAAA,qBAAqB,EAAE,MAAM;AAC7B,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,uBAAuB,EAAE,KAAK;AAC9B,YAAA,wBAAwB,EAAE,MAAM;;;AAGhC,YAAA,8BAA8B,EAAE,MAAM;AACtC,YAAA,+BAA+B,EAAE,MAAM;AACvC,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,OAAO,EAAE,OAAO;;AAEhB,YAAA,OAAO,EAAE,OAAO;;;;AAIhB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,kBAAkB,EAAE,MAAM;;;;;AAK1B,YAAA,mBAAmB,EAAE,UAAU;AAC/B,YAAA,mBAAmB,EAAE,UAAU;AAC/B,YAAA,mBAAmB,EAAE,UAAU;AAC/B,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,aAAa,EAAE,OAAO;AACtB,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,oBAAoB,EAAE,MAAM;AAC5B,YAAA,qBAAqB,EAAE,MAAM;AAC7B,YAAA,2BAA2B,EAAE,MAAM;AACnC,YAAA,4BAA4B,EAAE,MAAM;;;AAGpC,YAAA,gBAAgB,EAAE,MAAM;;AAExB,YAAA,qBAAqB,EAAE,MAAM;;AAE7B,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,oBAAoB,EAAE,MAAM;AAC5B,YAAA,qBAAqB,EAAE,MAAM;;;AAG7B,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,oBAAoB,EAAE,OAAO;AAC7B,YAAA,oBAAoB,EAAE,OAAO;AAC7B,YAAA,oBAAoB,EAAE,OAAO;AAC7B,YAAA,aAAa,EAAE,MAAM;AACrB,YAAA,wBAAwB,EAAE,MAAM;AAChC,YAAA,wBAAwB,EAAE,MAAM;AAChC,YAAA,wBAAwB,EAAE,MAAM;;AAEhC,YAAA,cAAc,EAAE,MAAM;;AAEtB,YAAA,sBAAsB,EAAE,OAAO;AAC/B,YAAA,oBAAoB,EAAE,MAAM;AAC5B,YAAA,yBAAyB,EAAE,MAAM;AACjC,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,sBAAsB,EAAE,MAAM;;;AAG9B,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,cAAc,EAAE,MAAM;AACtB,YAAA,yBAAyB,EAAE,KAAK;AAChC,YAAA,qBAAqB,EAAE,MAAM;AAC7B,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,gBAAgB,EAAE,KAAK;;;;AAIvB,YAAA,oBAAoB,EAAE,MAAM;;;;;;;;;;;;;AAa5B,YAAA,cAAc,EAAE,SAAS;;;;AAIzB,YAAA,mBAAmB,EAAE,UAAU;AAC/B,YAAA,aAAa,EAAE,QAAQ;AACvB,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,WAAW,EAAE,wCAAwC;AACrD,YAAA,YAAY,EAAE,wCAAwC;AACtD,YAAA,gBAAgB,EAAE,wCAAwC;;;;;AAK1D,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI;AAClE,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,OAAO,EAAE,iCAAiC;AAC1C,gBAAA,IAAI,EAAE,8BAA8B;;;;;AAKpC,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,EAAE,EAAE,0BAA0B;AAC9B,gBAAA,EAAE,EAAE,0BAA0B;AAC9B,gBAAA,EAAE,EAAE,0BAA0B;AAC9B,gBAAA,EAAE,EAAE,0BAA0B;;;AAG9B,gBAAA,EAAE,EAAE,0BAA0B;AAC9B,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,kBAAkB,EAAE,0CAA0C;AAC9D,gBAAA,UAAU,EAAE,kCAAkC;AAC9C,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,gBAAgB,EAAE,wCAAwC;AAC1D,gBAAA,KAAK,EAAE,6BAA6B;AACpC,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,SAAS,EAAE,iCAAiC;AAC5C,gBAAA,SAAS,EAAE;AACZ,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,gCAAgC;AACtC,gBAAA,KAAK,EAAE,iCAAiC;AACxC,gBAAA,OAAO,EAAE,mCAAmC;AAC5C,gBAAA,MAAM,EAAE;AACT,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,gCAAgC;AACtC,gBAAA,SAAS,EAAE,qCAAqC;AAChD,gBAAA,YAAY,EAAE,wCAAwC;AACtD,gBAAA,UAAU,EAAE;AACb,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,iCAAiC;AAC1C,gBAAA,MAAM,EAAE,gCAAgC;AACxC,gBAAA,QAAQ,EAAE,kCAAkC;AAC5C,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,OAAO,EAAE,qCAAqC;AAC9C,gBAAA,MAAM,EAAE,oCAAoC;AAC5C,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,EAAE,EAAE,qBAAqB;AACzB,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,GAAG,EAAE;AACN,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,GAAG,EAAE,wBAAwB;AAC7B,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,KAAK,EAAE,yBAAyB;AAChC,gBAAA,KAAK,EAAE,0BAA0B;;;AAGjC,gBAAA,QAAQ,EAAE,uBAAuB;AACjC,gBAAA,YAAY,EAAE,iCAAiC;AAC/C,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,MAAM,EAAE,2BAA2B;AACnC,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,QAAQ,EAAE,8BAA8B;AACxC,gBAAA,KAAK,EAAE,2BAA2B;AAClC,gBAAA,qBAAqB,EAAE;AACxB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE,2BAA2B;AACjC,gBAAA,KAAK,EAAE,4BAA4B;AACnC,gBAAA,IAAI,EAAE,2BAA2B;AACjC,gBAAA,MAAM,EAAE,6BAA6B;AACrC,gBAAA,IAAI,EAAE,2BAA2B;AACjC,gBAAA,aAAa,EAAE,oCAAoC;AACnD,gBAAA,OAAO,EAAE,8BAA8B;AACvC,gBAAA,aAAa,EAAE,oCAAoC;AACnD,gBAAA,MAAM,EAAE,6BAA6B;AACrC,gBAAA,WAAW,EAAE,mCAAmC;AAChD,gBAAA,YAAY,EAAE;AACf,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,mBAAmB,EAAE;AACtB,aAAA;AACD,YAAA,UAAU,EAAE;AACV,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,SAAS,EAAE,4BAA4B;AACvC,gBAAA,SAAS,EAAE,4BAA4B;AACvC,gBAAA,SAAS,EAAE,4BAA4B;AACvC,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,UAAU,EAAE,6BAA6B;AACzC,gBAAA,aAAa,EAAE,gCAAgC;AAC/C,gBAAA,kBAAkB,EAAE,qCAAqC;AACzD,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,SAAS,EAAE,4BAA4B;AACvC,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,6BAA6B,EAC3B,gDAAgD;AAClD,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,eAAe,EAAE,kCAAkC;AACnD,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,kBAAkB,EAAE,qCAAqC;AACzD,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,kBAAkB,EAAE,qCAAqC;AACzD,gBAAA,sBAAsB,EAAE,yCAAyC;AACjE,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,qBAAqB,EAAE,wCAAwC;AAC/D,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,uBAAuB,EAAE,0CAA0C;AACnE,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,qBAAqB,EAAE,wCAAwC;AAC/D,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,aAAa,EAAE,gCAAgC;AAC/C,gBAAA,uBAAuB,EAAE,0CAA0C;AACnE,gBAAA,wBAAwB,EAAE,2CAA2C;AACrE,gBAAA,8BAA8B,EAC5B,iDAAiD;AACnD,gBAAA,+BAA+B,EAC7B,kDAAkD;AACpD,gBAAA,MAAM,EAAE,yBAAyB;AACjC,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,kBAAkB,EAAE,qCAAqC;AACzD,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,YAAY,EAAE,+BAA+B;AAC7C,gBAAA,OAAO,EAAE,0BAA0B;AACnC,gBAAA,aAAa,EAAE,gCAAgC;AAC/C,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,qBAAqB,EAAE,wCAAwC;AAC/D,gBAAA,2BAA2B,EACzB,8CAA8C;AAChD,gBAAA,4BAA4B,EAC1B,+CAA+C;AACjD,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,qBAAqB,EAAE,wCAAwC;AAC/D,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,qBAAqB,EAAE,wCAAwC;AAC/D,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,iBAAiB,EAAE,oCAAoC;AACvD,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,aAAa,EAAE,gCAAgC;AAC/C,gBAAA,wBAAwB,EAAE,2CAA2C;AACrE,gBAAA,wBAAwB,EAAE,2CAA2C;AACrE,gBAAA,wBAAwB,EAAE,2CAA2C;AACrE,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,sBAAsB,EAAE,yCAAyC;AACjE,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,yBAAyB,EAAE,4CAA4C;AACvE,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,sBAAsB,EAAE,yCAAyC;AACjE,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,yBAAyB,EAAE,4CAA4C;AACvE,gBAAA,qBAAqB,EAAE,wCAAwC;AAC/D,gBAAA,sBAAsB,EAAE,yCAAyC;AACjE,gBAAA,gBAAgB,EAAE,mCAAmC;AACrD,gBAAA,oBAAoB,EAAE,uCAAuC;AAC7D,gBAAA,cAAc,EAAE,iCAAiC;AACjD,gBAAA,mBAAmB,EAAE,sCAAsC;AAC3D,gBAAA,aAAa,EAAE,gCAAgC;AAC/C,gBAAA,WAAW,EAAE;AACd,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,6BAA6B;AACvC,gBAAA,KAAK,EAAE,0BAA0B;AACjC,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,gCAAgC;AAC7C,gBAAA,YAAY,EAAE,iCAAiC;AAC/C,gBAAA,gBAAgB,EAAE,qCAAqC;AACvD,gBAAA,kBAAkB,EAAE;AACrB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,WAAW,EAAE,4BAA4B;AACzC,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,UAAU,EAAE,8BAA8B;AAC1C,gBAAA,qBAAqB,EAAE,6BAA6B;AACpD,gBAAA,qBAAqB,EAAE,0CAA0C;AACjE,gBAAA,qBAAqB,EAAE,+BAA+B;AACtD,gBAAA,oBAAoB,EAAE,yCAAyC;;;;AAI/D,gBAAA,eAAe,EAAE,6BAA6B;AAC9C,gBAAA,WAAW,EAAE,gCAAgC;AAC7C,gBAAA,qBAAqB,EAAE,+BAA+B;AACtD,gBAAA,eAAe,EAAE,oCAAoC;AACrD,gBAAA,wBAAwB,EACtB,iDAAiD;AACnD,gBAAA,oCAAoC,EAClC,yDAAyD;AAC3D,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,YAAY,EAAE,+BAA+B;AAC7C,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,YAAY,EAAE,+BAA+B;AAC7C,gBAAA,aAAa,EAAE,+BAA+B;AAC9C,gBAAA,MAAM,EAAE,8BAA8B;AACtC,gBAAA,WAAW,EAAE,8BAA8B;AAC3C,gBAAA,YAAY,EAAE,8BAA8B;AAC5C,gBAAA,iBAAiB,EAAE,+BAA+B;AAClD,gBAAA,sBAAsB,EAAE,+BAA+B;AACvD,gBAAA,uBAAuB,EAAE,yBAAyB;AAClD,gBAAA,iBAAiB,EAAE,+BAA+B;AAClD,gBAAA,sBAAsB,EAAE,yBAAyB;AACjD,gBAAA,uBAAuB,EAAE,yBAAyB;AAClD,gBAAA,gBAAgB,EAAE,+BAA+B;AACjD,gBAAA,qBAAqB,EAAE,yBAAyB;AAChD,gBAAA,sBAAsB,EAAE,yBAAyB;AACjD,gBAAA,qBAAqB,EAAE;AACxB,aAAA;AACD,YAAA,KAAK,EAAE;AACL,gBAAA,QAAQ,EAAE,6BAA6B;AACvC,gBAAA,SAAS,EAAE,8BAA8B;AACzC,gBAAA,cAAc,EAAE,8CAA8C;AAC9D,gBAAA,mBAAmB,EAAE;AACtB,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,eAAe,EAAE,yBAAyB;AAC1C,gBAAA,iBAAiB,EAAE,kCAAkC;AACrD,gBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,gBAAA,gBAAgB,EAAE;AACnB,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,KAAK,EAAE,8BAA8B;AACrC,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,MAAM,EAAE,8BAA8B;AACtC,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,aAAa,EAAE,8BAA8B;AAC7C,gBAAA,OAAO,EAAE;AACV;AACF,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE;AACL,oBAAA,UAAU,EAAE,8BAA8B;AAC1C,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,OAAO,EAAE,yBAAyB;AAClC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,eAAe,EAAE,+BAA+B;AAChD,oBAAA,kBAAkB,EAAE,+BAA+B;AACnD,oBAAA,kBAAkB,EAAE,yBAAyB;AAC7C,oBAAA,IAAI,EAAE,+BAA+B;;;;AAIrC,oBAAA,aAAa,EAAE,+BAA+B;AAC9C,oBAAA,eAAe,EAAE,yCAAyC;AAC1D,oBAAA,eAAe,EAAE,yCAAyC;AAC1D,oBAAA,SAAS,EAAE,+BAA+B;AAC1C,oBAAA,eAAe,EAAE,+BAA+B;AAChD,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,MAAM,EAAE,+BAA+B;AACvC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,SAAS,EAAE,+BAA+B;AAC1C,oBAAA,iBAAiB,EAAE,sCAAsC;;;AAGzD,oBAAA,uBAAuB,EAAE,8BAA8B;AACvD,oBAAA,mBAAmB,EAAE,wCAAwC;AAC7D,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,2BAA2B,EAAE,wCAAwC;;;AAGrE,oBAAA,eAAe,EAAE,+BAA+B;;AAEhD,oBAAA,wBAAwB,EAAE,+BAA+B;AACzD,oBAAA,mBAAmB,EAAE,+BAA+B;;;AAGpD,oBAAA,qBAAqB,EAAE,8BAA8B;;AAErD,oBAAA,sBAAsB,EAAE,8BAA8B;AACtD,oBAAA,kBAAkB,EAAE,+BAA+B;AACnD,oBAAA,OAAO,EAAE,6BAA6B;AACtC,oBAAA,YAAY,EAAE,6BAA6B;AAC3C,oBAAA,aAAa,EAAE,6BAA6B;AAC5C,oBAAA,iBAAiB,EAAE,yBAAyB;AAC5C,oBAAA,gBAAgB,EAAE,6BAA6B;AAC/C,oBAAA,qBAAqB,EAAE,6BAA6B;AACpD,oBAAA,sBAAsB,EAAE,6BAA6B;AACrD,oBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,oBAAA,KAAK,EAAE,6BAA6B;AACpC,oBAAA,GAAG,EAAE,6BAA6B;AAClC,oBAAA,SAAS,EAAE,6BAA6B;AACxC,oBAAA,KAAK,EAAE;AACR,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,yBAAyB;AAC9C,oBAAA,oBAAoB,EAAE,+BAA+B;AACrD,oBAAA,cAAc,EAAE,8CAA8C;AAC9D,oBAAA,aAAa,EAAE;AAChB,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,WAAW,EAAE,4BAA4B;AACzC,oBAAA,WAAW,EAAE,8BAA8B;AAC3C,oBAAA,WAAW,EAAE,8BAA8B;AAC3C,oBAAA,UAAU,EAAE,8BAA8B;AAC1C,oBAAA,qBAAqB,EAAE,6BAA6B;AACpD,oBAAA,qBAAqB,EAAE,0CAA0C;AACjE,oBAAA,qBAAqB,EAAE,+BAA+B;AACtD,oBAAA,oBAAoB,EAAE,yCAAyC;AAC/D,oBAAA,eAAe,EAAE,6BAA6B;AAC9C,oBAAA,WAAW,EAAE,gCAAgC;AAC7C,oBAAA,qBAAqB,EAAE,+BAA+B;AACtD,oBAAA,eAAe,EAAE,oCAAoC;AACrD,oBAAA,wBAAwB,EACtB,iDAAiD;AACnD,oBAAA,oCAAoC,EAClC,yDAAyD;AAC3D,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,kBAAkB,EAAE,mCAAmC;;;;;;;AAOvD,oBAAA,YAAY,EAAE,uCAAuC;AACrD,oBAAA,sBAAsB,EAAE,uCAAuC;AAC/D,oBAAA,eAAe,EAAE,0CAA0C;AAC3D,oBAAA,yBAAyB,EAAE,+BAA+B;AAC1D,oBAAA,eAAe,EAAE,0CAA0C;AAC3D,oBAAA,yBAAyB,EAAE,0CAA0C;AACrE,oBAAA,cAAc,EAAE,yCAAyC;AACzD,oBAAA,wBAAwB,EAAE,yCAAyC;AACnE,oBAAA,YAAY,EAAE,iCAAiC;AAC/C,oBAAA,sBAAsB,EAAE,uCAAuC;AAC/D,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,aAAa,EAAE,+BAA+B;AAC9C,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,aAAa,EAAE,+BAA+B;AAC9C,oBAAA,MAAM,EAAE,8BAA8B;AACtC,oBAAA,WAAW,EAAE,8BAA8B;AAC3C,oBAAA,YAAY,EAAE,8BAA8B;AAC5C,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,sBAAsB,EAAE,+BAA+B;AACvD,oBAAA,uBAAuB,EAAE,yBAAyB;AAClD,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,sBAAsB,EAAE,yBAAyB;AACjD,oBAAA,uBAAuB,EAAE,yBAAyB;AAClD,oBAAA,gBAAgB,EAAE,+BAA+B;AACjD,oBAAA,qBAAqB,EAAE,yBAAyB;AAChD,oBAAA,sBAAsB,EAAE,yBAAyB;AACjD,oBAAA,cAAc,EAAE,4BAA4B;AAC5C,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,iBAAiB,EAAE,8BAA8B;AACjD,oBAAA,WAAW,EAAE,+BAA+B;AAC5C,oBAAA,iBAAiB,EAAE,8BAA8B;AACjD,oBAAA,WAAW,EAAE,+BAA+B;AAC5C,oBAAA,gBAAgB,EAAE,6BAA6B;AAC/C,oBAAA,UAAU,EAAE,8BAA8B;AAC1C,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,WAAW,EAAE,+BAA+B;AAC5C,oBAAA,IAAI,EAAE,mCAAmC;AACzC,oBAAA,MAAM,EAAE;AACT,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,MAAM,EAAE,4BAA4B;AACpC,oBAAA,OAAO,EAAE,4BAA4B;AACrC,oBAAA,KAAK,EAAE,4BAA4B;AACnC,oBAAA,IAAI,EAAE,4BAA4B;AAClC,oBAAA,KAAK,EAAE,+BAA+B;AACtC,oBAAA,KAAK,EAAE;AACR;AACF,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE;AACL,oBAAA,UAAU,EAAE,+BAA+B;AAC3C,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,OAAO,EAAE,gCAAgC;AACzC,oBAAA,YAAY,EAAE,sCAAsC;AACpD,oBAAA,eAAe,EAAE,kCAAkC;AACnD,oBAAA,kBAAkB,EAAE,sCAAsC;AAC1D,oBAAA,kBAAkB,EAAE,6BAA6B;AACjD,oBAAA,IAAI,EAAE,6BAA6B;;;;AAInC,oBAAA,aAAa,EAAE,6BAA6B;AAC5C,oBAAA,eAAe,EAAE,wCAAwC;AACzD,oBAAA,eAAe,EAAE,wCAAwC;AACzD,oBAAA,SAAS,EAAE,8BAA8B;;;;;AAKzC,oBAAA,eAAe,EAAE,8BAA8B;;;AAG/C,oBAAA,YAAY,EAAE,8BAA8B;AAC5C,oBAAA,MAAM,EAAE,+BAA+B;AACvC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,SAAS,EAAE,kCAAkC;;;;AAI7C,oBAAA,iBAAiB,EAAE,kCAAkC;;;;;;AAMrD,oBAAA,uBAAuB,EAAE,sCAAsC;AAC/D,oBAAA,mBAAmB,EAAE,+BAA+B;AACpD,oBAAA,iBAAiB,EAAE,8BAA8B;AACjD,oBAAA,2BAA2B,EAAE,kCAAkC;;;;AAI/D,oBAAA,eAAe,EAAE,8BAA8B;AAC/C,oBAAA,wBAAwB,EAAE,sCAAsC;AAChE,oBAAA,mBAAmB,EAAE,8BAA8B;AACnD,oBAAA,qBAAqB,EAAE,gCAAgC;AACvD,oBAAA,sBAAsB,EAAE,sCAAsC;AAC9D,oBAAA,kBAAkB,EAAE,kCAAkC;AACtD,oBAAA,OAAO,EAAE,6BAA6B;AACtC,oBAAA,YAAY,EAAE,6BAA6B;AAC3C,oBAAA,aAAa,EAAE,6BAA6B;AAC5C,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,gBAAgB,EAAE,6BAA6B;AAC/C,oBAAA,qBAAqB,EAAE,6BAA6B;AACpD,oBAAA,sBAAsB,EAAE,6BAA6B;AACrD,oBAAA,gBAAgB,EAAE,+BAA+B;AACjD,oBAAA,KAAK,EAAE,6BAA6B;AACpC,oBAAA,GAAG,EAAE,4BAA4B;AACjC,oBAAA,SAAS,EAAE,kCAAkC;AAC7C,oBAAA,KAAK,EAAE;AACR,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,gCAAgC;AACrD,oBAAA,oBAAoB,EAAE,+BAA+B;AACrD,oBAAA,cAAc,EAAE,6BAA6B;AAC7C,oBAAA,aAAa,EAAE;AAChB,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,WAAW,EAAE,uCAAuC;AACpD,oBAAA,WAAW,EAAE,0CAA0C;AACvD,oBAAA,WAAW,EAAE,0CAA0C;AACvD,oBAAA,UAAU,EAAE,yCAAyC;AACrD,oBAAA,qBAAqB,EAAE,iCAAiC;AACxD,oBAAA,qBAAqB,EAAE,oCAAoC;AAC3D,oBAAA,qBAAqB,EAAE,oCAAoC;AAC3D,oBAAA,oBAAoB,EAAE,mCAAmC;;;;AAIzD,oBAAA,eAAe,EAAE,yCAAyC;;;;;AAK1D,oBAAA,WAAW,EAAE,0CAA0C;AACvD,oBAAA,qBAAqB,EAAE,oCAAoC;AAC3D,oBAAA,eAAe,EAAE,0CAA0C;AAC3D,oBAAA,wBAAwB,EAAE,oCAAoC;AAC9D,oBAAA,oCAAoC,EAClC,0CAA0C;AAC5C,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,kBAAkB,EAAE,iCAAiC;;;;AAIrD,oBAAA,YAAY,EAAE,uCAAuC;AACrD,oBAAA,sBAAsB,EAAE,iCAAiC;AACzD,oBAAA,eAAe,EAAE,0CAA0C;AAC3D,oBAAA,yBAAyB,EAAE,oCAAoC;AAC/D,oBAAA,eAAe,EAAE,0CAA0C;AAC3D,oBAAA,yBAAyB,EAAE,oCAAoC;AAC/D,oBAAA,cAAc,EAAE,yCAAyC;AACzD,oBAAA,wBAAwB,EAAE,mCAAmC;AAC7D,oBAAA,YAAY,EAAE,uCAAuC;AACrD,oBAAA,sBAAsB,EAAE,iCAAiC;AACzD,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,aAAa,EAAE,+BAA+B;AAC9C,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,YAAY,EAAE,+BAA+B;AAC7C,oBAAA,aAAa,EAAE,+BAA+B;AAC9C,oBAAA,MAAM,EAAE,8BAA8B;AACtC,oBAAA,WAAW,EAAE,8BAA8B;AAC3C,oBAAA,YAAY,EAAE,8BAA8B;AAC5C,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,sBAAsB,EAAE,+BAA+B;AACvD,oBAAA,uBAAuB,EAAE,yBAAyB;AAClD,oBAAA,iBAAiB,EAAE,+BAA+B;AAClD,oBAAA,sBAAsB,EAAE,yBAAyB;AACjD,oBAAA,uBAAuB,EAAE,yBAAyB;AAClD,oBAAA,gBAAgB,EAAE,+BAA+B;AACjD,oBAAA,qBAAqB,EAAE,yBAAyB;AAChD,oBAAA,sBAAsB,EAAE,yBAAyB;AACjD,oBAAA,cAAc,EAAE,uCAAuC;AACvD,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,iBAAiB,EAAE,0CAA0C;AAC7D,oBAAA,WAAW,EAAE,oCAAoC;AACjD,oBAAA,iBAAiB,EAAE,0CAA0C;AAC7D,oBAAA,WAAW,EAAE,oCAAoC;AACjD,oBAAA,gBAAgB,EAAE,yCAAyC;AAC3D,oBAAA,UAAU,EAAE,mCAAmC;AAC/C,oBAAA,iBAAiB,EAAE,0CAA0C;AAC7D,oBAAA,WAAW,EAAE,oCAAoC;AACjD,oBAAA,IAAI,EAAE,iCAAiC;AACvC,oBAAA,MAAM,EAAE;AACT,iBAAA;AACD,gBAAA,MAAM,EAAE;AACN,oBAAA,MAAM,EAAE,2BAA2B;AACnC,oBAAA,OAAO,EAAE,2BAA2B;AACpC,oBAAA,KAAK,EAAE,2BAA2B;AAClC,oBAAA,IAAI,EAAE,2BAA2B;AACjC,oBAAA,KAAK,EAAE,8BAA8B;AACrC,oBAAA,KAAK,EAAE;AACR;AACF;AACF;AACF,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,yBAAyB;AAChC,YAAA,SAAS,EAAE,wBAAwB;AACnC,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,cAAc,EAAE,+BAA+B;AAC/C,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,gBAAgB,EAAE,wBAAwB;;;AAG1C,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;;;AAGpC,YAAA,iBAAiB,EAAE,4BAA4B;;;AAG/C,YAAA,QAAQ,EAAE,+BAA+B;;;;;AAKzC,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,kBAAkB,EAAE,+BAA+B;AACnD,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,mCAAmC;AAC/C,YAAA,eAAe,EAAE,wCAAwC;AACzD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,KAAK,EAAE,mCAAmC;AAC1C,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,iBAAiB,EAAE,qCAAqC;AACxD,YAAA,sBAAsB,EAAE,gCAAgC;AACxD,YAAA,iBAAiB,EAAE,mCAAmC;AACtD,YAAA,sBAAsB,EAAE,mCAAmC;AAC3D,YAAA,uBAAuB,EAAE,iCAAiC;AAC1D,YAAA,uBAAuB,EAAE,mCAAmC;AAC5D,YAAA,gBAAgB,EAAE,oCAAoC;AACtD,YAAA,gBAAgB,EAAE,mCAAmC;AACrD,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,qBAAqB,EAAE,mCAAmC;AAC1D,YAAA,sBAAsB,EAAE,gCAAgC;AACxD,YAAA,sBAAsB,EAAE,mCAAmC;AAC3D,YAAA,mBAAmB,EAAE,uCAAuC;AAC5D,YAAA,oBAAoB,EAAE,wCAAwC;AAC9D,YAAA,cAAc,EAAE,kCAAkC;AAClD,YAAA,wBAAwB,EAAE,2BAA2B;AACrD,YAAA,yBAAyB,EAAE,2BAA2B;AACtD,YAAA,aAAa,EAAE,iCAAiC;AAChD,YAAA,uBAAuB,EAAE,2BAA2B;AACpD,YAAA,wBAAwB,EAAE,2BAA2B;AACrD,YAAA,cAAc,EAAE,0BAA0B;;;;AAI1C,YAAA,kBAAkB,EAAE,4BAA4B;AAChD,YAAA,2BAA2B,EAAE,0BAA0B;AACvD,YAAA,4BAA4B,EAAE,0BAA0B;AACxD,YAAA,sBAAsB,EAAE,kCAAkC;AAC1D,YAAA,gCAAgC,EAAE,2BAA2B;AAC7D,YAAA,iCAAiC,EAAE,2BAA2B;AAC9D,YAAA,iCAAiC,EAAE,2BAA2B;AAC9D,YAAA,kCAAkC,EAAE,2BAA2B;AAC/D,YAAA,0BAA0B,EAAE,+BAA+B;AAC3D,YAAA,2BAA2B,EAAE,+BAA+B;AAC5D,YAAA,qBAAqB,EAAE,iCAAiC;AACxD,YAAA,+BAA+B,EAAE,2BAA2B;AAC5D,YAAA,gCAAgC,EAAE,2BAA2B;AAC7D,YAAA,gCAAgC,EAAE,2BAA2B;AAC7D,YAAA,iCAAiC,EAAE,2BAA2B;AAC9D,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,eAAe,EAAE,iCAAiC;AAClD,YAAA,WAAW,EAAE,oBAAoB;AACjC,YAAA,kBAAkB,EAAE,wBAAwB;;;;;;;;;;AAU5C,YAAA,cAAc,EAAE,qCAAqC;AACrD,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,KAAK,EAAE,oCAAoC;AAC3C,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,UAAU,EAAE,gCAAgC;AAC5C,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,uBAAuB,EAAE;AAC1B,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,iBAAiB,EAAE;AACpB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,gBAAgB,EAAE,mCAAmC;AACrD,YAAA,qBAAqB,EAAE,wCAAwC;AAC/D,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,gBAAgB,EAAE,yBAAyB;AAC3C,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,qBAAqB,EAAE,wBAAwB;AAC/C,YAAA,gBAAgB,EAAE,yBAAyB;AAC3C,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,iBAAiB,EAAE,0CAA0C;AAC7D,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;;;;AAItC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,KAAK,EAAE,0BAA0B;AACjC,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,kCAAkC;AACpD,YAAA,iBAAiB,EAAE,yBAAyB;;;AAG5C,YAAA,kBAAkB,EAAE,sCAAsC;AAC1D,YAAA,mBAAmB,EAAE,2CAA2C;AAChE,YAAA,oBAAoB,EAAE,qBAAqB;AAC3C,YAAA,UAAU,EAAE,kCAAkC;;;AAG9C,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,YAAY,EAAE,gCAAgC;AAC9C,YAAA,WAAW,EAAE,oCAAoC;AACjD,YAAA,qBAAqB,EAAE,8CAA8C;;;;AAIrE,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,QAAQ,EAAE,gCAAgC;AAC1C,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,cAAc,EAAE,wBAAwB;AACxC,YAAA,eAAe,EAAE,uCAAuC;AACxD,YAAA,gBAAgB,EAAE,wCAAwC;AAC1D,YAAA,cAAc,EAAE,sCAAsC;;AAEtD,YAAA,gBAAgB,EAAE,wCAAwC;AAC1D,YAAA,cAAc,EAAE,sCAAsC;AACtD,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,2CAA2C;AAChE,YAAA,iBAAiB,EAAE,qCAAqC;AACxD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,gBAAgB,EAAE,8BAA8B;AAChD,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,+BAA+B;AAC5C,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,MAAM,EAAE,4BAA4B;AACpC,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,UAAU,EAAE,oCAAoC;AAChD,YAAA,UAAU,EAAE,oCAAoC;AAChD,YAAA,WAAW,EAAE,qCAAqC;AAClD,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,gBAAgB,EAAE;AACnB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,cAAc,EAAE,sBAAsB;AACtC,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,WAAW,EAAE,gCAAgC;AAC7C,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,2BAA2B;AAC7C,YAAA,qBAAqB,EAAE,gCAAgC;AACvD,YAAA,sBAAsB,EAAE,iCAAiC;AACzD,YAAA,WAAW,EAAE,2CAA2C;AACxD,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,uBAAuB,EAAE,+BAA+B;AACxD,YAAA,YAAY,EAAE,yCAAyC;AACvD,YAAA,iBAAiB,EAAE,yCAAyC;AAC5D,YAAA,kBAAkB,EAAE,yCAAyC;AAC7D,YAAA,UAAU,EAAE,wBAAwB;AACpC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,eAAe,EAAE,qBAAqB;AACtC,YAAA,YAAY,EAAE,oBAAoB;AAClC,YAAA,cAAc,EAAE,8BAA8B;AAC9C,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,UAAU,EAAE,qBAAqB;AACjC,YAAA,WAAW,EAAE,oBAAoB;AACjC,YAAA,iBAAiB,EAAE,wBAAwB;AAC3C,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,uBAAuB,EAAE,qBAAqB;AAC9C,YAAA,YAAY,EAAE,gCAAgC;AAC9C,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,kBAAkB,EAAE,+BAA+B;AACnD,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,aAAa,EAAE,0BAA0B;AACzC,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,WAAW,EAAE,yBAAyB;;;;;AAKtC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,gBAAgB,EAAE;AACnB,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,wBAAwB;;;;AAI1C,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,gBAAgB,EAAE,wBAAwB;;;;;AAK1C,YAAA,MAAM,EAAE,uBAAuB;AAC/B,YAAA,SAAS,EAAE,2BAA2B;;;;AAItC,YAAA,UAAU,EAAE,wCAAwC;AACpD,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,kCAAkC;AAC/C,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE,0BAA0B;;AAEtC,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,QAAQ,EAAE,gCAAgC;AAC1C,YAAA,SAAS,EAAE,4BAA4B;AACvC,YAAA,GAAG,EAAE;AACN,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,kBAAkB,EAAE,+BAA+B;AACnD,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,UAAU,EAAE,sBAAsB;AAClC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,UAAU,EAAE,qBAAqB;AACjC,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,wBAAwB;;;;AAI1C,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;;;;AAIpC,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;;;;AAIjD,YAAA,YAAY,EAAE,4BAA4B;;;;AAI1C,YAAA,cAAc,EAAE,+BAA+B;AAC/C,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,mBAAmB,EAAE,4BAA4B;AACjD,YAAA,eAAe,EAAE,mCAAmC;AACpD,YAAA,sBAAsB,EAAE,6BAA6B;AACrD,YAAA,4BAA4B,EAAE;AAC/B,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,gBAAgB,EAAE,2BAA2B;AAC7C,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,SAAS,EAAE,iCAAiC;AAC5C,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,cAAc,EAAE,sCAAsC;AACtD,YAAA,YAAY,EAAE,oCAAoC;AAClD,YAAA,aAAa,EAAE,qCAAqC;AACpD,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,YAAY,EAAE,oCAAoC;AAClD,YAAA,gBAAgB,EAAE,wCAAwC;AAC1D,YAAA,iBAAiB,EAAE,wBAAwB;AAC3C,YAAA,MAAM,EAAE;AACT,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,kBAAkB,EAAE,+BAA+B;AACnD,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,UAAU,EAAE,8BAA8B;AAC1C,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,WAAW,EAAE,+BAA+B;AAC5C,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,eAAe,EAAE,kCAAkC;AACnD,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,gBAAgB,EAAE,0BAA0B;AAC5C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE;AACnB,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,kBAAkB,EAAE,yBAAyB;AAC7C,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,aAAa,EAAE,0BAA0B;AACzC,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,oBAAoB,EAAE,wBAAwB;AAC9C,YAAA,YAAY,EAAE,0BAA0B;AACxC,YAAA,kBAAkB,EAAE,wBAAwB;;AAE5C,YAAA,SAAS,EAAE,sBAAsB;;;;;;;;;;;;;AAajC,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,cAAc,EAAE,gCAAgC;AAChD,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,yBAAyB,EAAE,+BAA+B;AAC1D,YAAA,mBAAmB,EAAE,qCAAqC;AAC1D,YAAA,aAAa,EAAE,+BAA+B;AAC9C,YAAA,eAAe,EAAE,uBAAuB;AACxC,YAAA,kBAAkB,EAAE,2BAA2B;AAC/C,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,kBAAkB,EAAE,4BAA4B;AAChD,YAAA,qBAAqB,EAAE,uBAAuB;AAC9C,YAAA,WAAW,EAAE,6BAA6B;AAC1C,YAAA,aAAa,EAAE,uBAAuB;AACtC,YAAA,gBAAgB,EAAE,uBAAuB;AACzC,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,mBAAmB,EAAE,oBAAoB;AACzC,YAAA,cAAc,EAAE,iCAAiC;AACjD,YAAA,mBAAmB,EAAE,sCAAsC;AAC3D,YAAA,SAAS,EAAE,qCAAqC;AAChD,YAAA,UAAU,EAAE,wBAAwB;AACpC,YAAA,gBAAgB,EAAE,qBAAqB;AACvC,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,YAAY,EAAE,uBAAuB;AACrC,YAAA,cAAc,EAAE,8BAA8B;AAC9C,YAAA,UAAU,EAAE,qBAAqB;;;;;;;AAOjC,YAAA,gBAAgB,EAAE;AACnB,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,KAAK,EAAE,0BAA0B;AACjC,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,KAAK,EAAE,kCAAkC;AACzC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,YAAY,EAAE,wBAAwB;AACtC,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,QAAQ,EAAE,+BAA+B;AACzC,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,aAAa,EAAE,sBAAsB;AACrC,YAAA,gBAAgB,EAAE,+BAA+B;AACjD,YAAA,qBAAqB,EAAE,kCAAkC;AACzD,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,YAAY,EAAE;AACf,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,eAAe,EAAE,oBAAoB;AACrC,YAAA,iBAAiB,EAAE,gCAAgC;AACnD,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,aAAa,EAAE,0BAA0B;AACzC,YAAA,sBAAsB,EAAE;AACzB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,sBAAsB,EAAE,2BAA2B;AACnD,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,cAAc,EAAE,+BAA+B;AAC/C,YAAA,aAAa,EAAE,yCAAyC;AACxD,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,gBAAgB,EAAE,8BAA8B;AAChD,YAAA,eAAe,EAAE;AAClB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,UAAU,EAAE,gCAAgC;AAC5C,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,yCAAyC;AAChD,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,OAAO,EAAE;AACV,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,YAAY,EAAE,uBAAuB;AACrC,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,SAAS,EAAE,wCAAwC;AACnD,YAAA,cAAc,EAAE,4BAA4B;AAC5C,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,cAAc,EAAE,4BAA4B;AAC5C,YAAA,YAAY,EAAE,0BAA0B;AACxC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,YAAY,EAAE;AACf,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,cAAc,EAAE,+BAA+B;AAC/C,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;;;;;AAKtC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,YAAY,EAAE,yBAAyB;AACvC,YAAA,YAAY,EAAE,wBAAwB;AACtC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,WAAW,EAAE,oBAAoB;AACjC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,UAAU,EAAE,oCAAoC;AAChD,YAAA,YAAY,EAAE,0BAA0B;;;;;;AAMxC,YAAA,YAAY,EAAE,+BAA+B;AAC7C,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,YAAY,EAAE,oCAAoC;AAClD,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,YAAY,EAAE,qCAAqC;AACnD,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,YAAY,EAAE,qCAAqC;AACnD,YAAA,gBAAgB,EAAE,0BAA0B;AAC5C,YAAA,WAAW,EAAE,oCAAoC;AACjD,YAAA,sBAAsB,EAAE,2BAA2B;AACnD,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,oBAAoB,EAAE,8BAA8B;AACpD,YAAA,eAAe,EAAE,wCAAwC;AACzD,YAAA,kBAAkB,EAAE,4BAA4B;AAChD,YAAA,aAAa,EAAE,sCAAsC;AACrD,YAAA,sBAAsB,EAAE,gCAAgC;AACxD,YAAA,iBAAiB,EAAE,0CAA0C;;;;AAI7D,YAAA,qBAAqB,EAAE,qCAAqC;AAC5D,YAAA,gBAAgB,EAAE,+BAA+B;;;;;AAKjD,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,UAAU,EAAE,wBAAwB;AACpC,YAAA,YAAY,EAAE,oBAAoB;AAClC,YAAA,cAAc,EAAE,8BAA8B;AAC9C,YAAA,gBAAgB,EAAE,sCAAsC;AACxD,YAAA,iBAAiB,EAAE,uCAAuC;;;;;;AAM1D,YAAA,YAAY,EAAE,yBAAyB;AACvC,YAAA,eAAe,EAAE,qCAAqC;AACtD,YAAA,mBAAmB,EAAE,yCAAyC;AAC9D,YAAA,cAAc,EAAE,uBAAuB;AACvC,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,eAAe,EAAE,6BAA6B;AAC9C,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,aAAa,EAAE,yBAAyB;AACxC,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,oBAAoB,EAAE;AACvB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,0BAA0B;AACjC,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,UAAU,EAAE,8BAA8B;AAC1C,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,YAAY,EAAE,0BAA0B;AACxC,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,YAAY,EAAE;AACf,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,eAAe,EAAE,kCAAkC;AACnD,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,gBAAgB,EAAE,0BAA0B;AAC5C,YAAA,uBAAuB,EAAE,0BAA0B;AACnD,YAAA,4BAA4B,EAAE;AAC/B,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,aAAa,EAAE,yBAAyB;AACxC,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,MAAM,EAAE,mCAAmC;AAC3C,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,eAAe,EAAE,kCAAkC;AACnD,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,gBAAgB,EAAE,0BAA0B;AAC5C,YAAA,kBAAkB,EAAE,+CAA+C;AACnE,YAAA,qBAAqB,EAAE,iCAAiC;AACxD,YAAA,uBAAuB,EAAE,0BAA0B;AACnD,YAAA,4BAA4B,EAAE;AAC/B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,gBAAgB,EAAE,2BAA2B;AAC7C,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,oBAAoB,EAAE,qBAAqB;AAC3C,YAAA,UAAU,EAAE,qBAAqB;AACjC,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,kBAAkB,EAAE,yBAAyB;AAC7C,YAAA,uBAAuB,EAAE,+BAA+B;AACxD,YAAA,uBAAuB,EAAE,wBAAwB;AACjD,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,iBAAiB,EAAE,0BAA0B;;;;AAI7C,YAAA,YAAY,EAAE,gCAAgC;AAC9C,YAAA,uBAAuB,EAAE,4BAA4B;AACrD,YAAA,kBAAkB,EAAE,yBAAyB;AAC7C,YAAA,yBAAyB,EAAE,+BAA+B;AAC1D,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,yBAAyB,EAAE,0BAA0B;AACrD,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,aAAa,EAAE,0BAA0B;AACzC,YAAA,aAAa,EAAE,8BAA8B;AAC7C,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,cAAc,EAAE,0BAA0B;AAC1C,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,iBAAiB,EAAE,wBAAwB;AAC3C,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,sBAAsB,EAAE,wBAAwB;AAChD,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,gBAAgB,EAAE,0BAA0B;AAC5C,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,sBAAsB,EAAE,4BAA4B;AACpD,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,wBAAwB,EAAE,+BAA+B;AACzD,YAAA,mBAAmB,EAAE,0BAA0B;AAC/C,YAAA,oBAAoB,EAAE,gCAAgC;AACtD,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,KAAK,EAAE,6BAA6B;AACpC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,aAAa,EAAE,yBAAyB;AACxC,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,aAAa,EAAE,oCAAoC;;;;;AAKnD,YAAA,uBAAuB,EAAE,qCAAqC;AAC9D,YAAA,qBAAqB,EAAE,qBAAqB;AAC5C,YAAA,qBAAqB,EAAE,qCAAqC;AAC5D,YAAA,mBAAmB,EAAE,qCAAqC;AAC1D,YAAA,kBAAkB,EAAE,qCAAqC;AACzD,YAAA,iBAAiB,EAAE,oCAAoC;AACvD,YAAA,gBAAgB,EAAE,kCAAkC;AACpD,YAAA,mBAAmB,EAAE,kCAAkC;AACvD,YAAA,QAAQ,EAAE,6BAA6B;AACvC,YAAA,KAAK,EAAE,yBAAyB;AAChC,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,aAAa,EAAE,yBAAyB;AACxC,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,WAAW,EAAE,2BAA2B;AACxC,YAAA,oBAAoB,EAAE,+BAA+B;AACrD,YAAA,gBAAgB,EAAE;AACnB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,iBAAiB,EAAE,mCAAmC;AACtD,YAAA,YAAY,EAAE,mCAAmC;AACjD,YAAA,aAAa,EAAE,gCAAgC;AAC/C,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,YAAY,EAAE,+BAA+B;AAC7C,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,YAAY,EAAE,yBAAyB;AACvC,YAAA,OAAO,EAAE,0BAA0B;AACnC,YAAA,kBAAkB,EAAE,+BAA+B;AACnD,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,WAAW,EAAE,gCAAgC;AAC7C,YAAA,eAAe,EAAE,oCAAoC;AACrD,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,cAAc,EAAE,+BAA+B;AAC/C,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,kBAAkB,EAAE,mCAAmC;AACvD,YAAA,kBAAkB,EAAE,mCAAmC;AACvD,YAAA,cAAc,EAAE,0BAA0B;AAC1C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,eAAe,EAAE,wBAAwB;AACzC,YAAA,eAAe,EAAE,yBAAyB;;;AAG1C,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,gBAAgB,EAAE,sCAAsC;AACxD,YAAA,iBAAiB,EAAE,uCAAuC;AAC1D,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,iBAAiB,EAAE,yCAAyC;AAC5D,YAAA,uBAAuB,EAAE;AAC1B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,mBAAmB,EAAE,0BAA0B;AAC/C,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,aAAa,EAAE,oCAAoC;AACnD,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,kBAAkB,EAAE,+BAA+B;AACnD,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,gBAAgB,EAAE,wBAAwB;AAC1C,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,UAAU,EAAE,8BAA8B;AAC1C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,mBAAmB,EAAE,oBAAoB;AACzC,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,cAAc,EAAE,qBAAqB;AACrC,YAAA,oBAAoB,EAAE,+BAA+B;AACrD,YAAA,mBAAmB,EAAE,0BAA0B;AAC/C,YAAA,mBAAmB,EAAE,2BAA2B;;;;;AAKhD,YAAA,kBAAkB,EAAE,mCAAmC;AACvD,YAAA,aAAa,EAAE,yCAAyC;AACxD,YAAA,4BAA4B,EAAE,2BAA2B;AACzD,YAAA,2BAA2B,EAAE,2BAA2B;AACxD,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,YAAY,EAAE,qBAAqB;AACnC,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,2BAA2B;AACjC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,YAAY,EAAE,uBAAuB;AACrC,YAAA,kBAAkB,EAAE,0BAA0B;AAC9C,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,eAAe,EAAE,oBAAoB;AACrC,YAAA,iBAAiB,EAAE;AACpB,SAAA;AACD,QAAA,UAAU,EAAE;;;AAGV,YAAA,GAAG,EAAE,+BAA+B;AACpC,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,YAAY,EAAE,0CAA0C;AACxD,YAAA,cAAc,EAAE,0CAA0C;AAC1D,YAAA,cAAc,EAAE,0CAA0C;AAC1D,YAAA,aAAa,EAAE,qBAAqB;AACpC,YAAA,eAAe,EAAE,qBAAqB;AACtC,YAAA,QAAQ,EAAE,kCAAkC;AAC5C,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,cAAc,EAAE,2CAA2C;AAC3D,YAAA,SAAS,EAAE,sCAAsC;AACjD,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,WAAW,EAAE,mCAAmC;AAChD,YAAA,UAAU,EAAE,sCAAsC;AAClD,YAAA,UAAU,EAAE,sCAAsC;AAClD,YAAA,UAAU,EAAE,sCAAsC;AAClD,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,eAAe,EAAE,2BAA2B;AAC5C,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,mBAAmB,EAAE,uBAAuB;AAC5C,YAAA,qBAAqB,EAAE,yBAAyB;AAChD,YAAA,qBAAqB,EAAE,oBAAoB;AAC3C,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,UAAU,EAAE;AACb,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,QAAQ,EAAE,yBAAyB;AACnC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,aAAa,EAAE,yBAAyB;AACxC,YAAA,WAAW,EAAE,0BAA0B;AACvC,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,sBAAsB,EAAE,gCAAgC;AACxD,YAAA,wBAAwB,EAAE,qBAAqB;AAC/C,YAAA,yBAAyB,EAAE,qBAAqB;AAChD,YAAA,YAAY,EAAE,yBAAyB;AACvC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,gBAAgB,EAAE,qBAAqB;AACvC,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,YAAY,EAAE,oBAAoB;AAClC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,gBAAgB,EAAE,0BAA0B;AAC5C,YAAA,gBAAgB,EAAE,2BAA2B;AAC7C,YAAA,gBAAgB,EAAE,2BAA2B;AAC7C,YAAA,eAAe,EAAE,0BAA0B;AAC3C,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,mBAAmB,EAAE,+BAA+B;;;;AAIpD,YAAA,cAAc,EAAE,yCAAyC;AACzD,YAAA,yBAAyB,EAAE,mCAAmC;AAC9D,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,KAAK,EAAE,qBAAqB;AAC5B,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,cAAc,EAAE,0BAA0B;AAC1C,YAAA,OAAO,EAAE,6BAA6B;AACtC,YAAA,SAAS,EAAE,+BAA+B;AAC1C,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,UAAU,EAAE,qBAAqB;AACjC,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,eAAe,EAAE,oBAAoB;AACrC,YAAA,eAAe,EAAE,8BAA8B;AAC/C,YAAA,SAAS,EAAE,4BAA4B;AACvC,YAAA,YAAY,EAAE;AACf,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,UAAU,EAAE,sBAAsB;AAClC,YAAA,KAAK,EAAE,yBAAyB;AAChC,YAAA,iBAAiB,EAAE,0BAA0B;AAC7C,YAAA,YAAY,EAAE,uBAAuB;AACrC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,gBAAgB,EAAE,yCAAyC;AAC3D,YAAA,iBAAiB,EAAE,0CAA0C;AAC7D,YAAA,UAAU,EAAE,uBAAuB;;;;AAInC,YAAA,uBAAuB,EAAE,gDAAgD;AACzE,YAAA,wBAAwB,EACtB,iDAAiD;AACnD,YAAA,iBAAiB,EAAE,2BAA2B;AAC9C,YAAA,YAAY,EAAE,yBAAyB;AACvC,YAAA,cAAc,EAAE,4BAA4B;AAC5C,YAAA,SAAS,EAAE,yBAAyB;AACpC,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,gBAAgB,EAAE,uBAAuB;AACzC,YAAA,sBAAsB,EAAE,yCAAyC;AACjE,YAAA,2BAA2B,EAAE,+BAA+B;AAC5D,YAAA,oBAAoB,EAAE,8BAA8B;AACpD,YAAA,2BAA2B,EAAE,4BAA4B;AACzD,YAAA,uBAAuB,EAAE,oCAAoC;AAC7D,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,kBAAkB,EAAE,wBAAwB;AAC5C,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,iBAAiB,EAAE,iCAAiC;AACpD,YAAA,wBAAwB,EAAE,4BAA4B;AACtD,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,sBAAsB,EAAE,gCAAgC;AACxD,YAAA,yBAAyB,EAAE,+BAA+B;AAC1D,YAAA,wBAAwB,EAAE,qBAAqB;AAC/C,YAAA,yBAAyB,EAAE;AAC5B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,gBAAgB,EAAE,+BAA+B;;;AAGjD,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,YAAY,EAAE,sCAAsC;AACpD,YAAA,aAAa,EAAE,uCAAuC;AACtD,YAAA,mBAAmB,EAAE,6CAA6C;AAClE,YAAA,oBAAoB,EAAE,8CAA8C;AACpE,YAAA,GAAG,EAAE,qBAAqB;AAC1B,YAAA,UAAU,EAAE,4BAA4B;AACxC,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,oBAAoB,EAAE,2BAA2B;AACjD,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,eAAe,EAAE,+BAA+B;AAChD,YAAA,kBAAkB,EAAE,kCAAkC;AACtD,YAAA,yBAAyB,EAAE,gCAAgC;AAC3D,YAAA,qBAAqB,EAAE,yCAAyC;AAChE,YAAA,qBAAqB,EAAE,yCAAyC;AAChE,YAAA,oBAAoB,EAAE,wCAAwC;AAC9D,YAAA,kBAAkB,EAAE,sCAAsC;AAC1D,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,cAAc,EAAE,oBAAoB;AACpC,YAAA,QAAQ,EAAE,kCAAkC;;;;AAI5C,YAAA,UAAU,EAAE,yBAAyB;AACrC,YAAA,SAAS,EAAE,4BAA4B;AACvC,YAAA,aAAa,EAAE,uCAAuC;;;AAGtD,YAAA,UAAU,EAAE,wBAAwB;AACpC,YAAA,gBAAgB,EAAE,sCAAsC;AACxD,YAAA,iBAAiB,EAAE,uCAAuC;AAC1D,YAAA,OAAO,EAAE,6BAA6B;AACtC,YAAA,aAAa,EAAE,mCAAmC;AAClD,YAAA,YAAY,EAAE,kCAAkC;AAChD,YAAA,cAAc,EAAE,yBAAyB;AACzC,YAAA,cAAc,EAAE,kCAAkC;AAClD,YAAA,iBAAiB,EAAE,uBAAuB;AAC1C,YAAA,mBAAmB,EAAE,8BAA8B;AACnD,YAAA,mBAAmB,EAAE,sBAAsB;AAC3C,YAAA,iBAAiB,EAAE,oBAAoB;AACvC,YAAA,sBAAsB,EAAE,iCAAiC;AACzD,YAAA,iBAAiB,EAAE,oBAAoB;AACvC,YAAA,mBAAmB,EAAE,4BAA4B;;;AAGjD,YAAA,gBAAgB,EAAE,6CAA6C;AAC/D,YAAA,kBAAkB,EAAE,4CAA4C;AAChE,YAAA,qBAAqB,EAAE,4BAA4B;AACnD,YAAA,gBAAgB,EAAE,yBAAyB;AAC3C,YAAA,kBAAkB,EAAE,8BAA8B;AAClD,YAAA,kBAAkB,EAAE,gCAAgC;AACpD,YAAA,aAAa,EAAE,0CAA0C;AACzD,YAAA,qBAAqB,EAAE,mCAAmC;AAC1D,YAAA,gBAAgB,EAAE,6CAA6C;AAC/D,YAAA,qBAAqB,EAAE,mCAAmC;AAC1D,YAAA,gBAAgB,EAAE,6CAA6C;AAC/D,YAAA,oBAAoB,EAAE,kCAAkC;AACxD,YAAA,eAAe,EAAE,4CAA4C;AAC7D,YAAA,qBAAqB,EAAE,+BAA+B;AACtD,YAAA,gBAAgB,EAAE,4BAA4B;AAC9C,YAAA,aAAa,EAAE,oBAAoB;AACnC,YAAA,eAAe,EAAE,gCAAgC;AACjD,YAAA,iBAAiB,EAAE,sCAAsC;AACzD,YAAA,kBAAkB,EAAE,uCAAuC;AAC3D,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,iBAAiB,EAAE,+BAA+B;AAClD,YAAA,YAAY,EAAE,yCAAyC;AACvD,YAAA,mBAAmB,EAAE,+BAA+B;AACpD,YAAA,cAAc,EAAE,yCAAyC;AACzD,YAAA,sBAAsB,EAAE,+BAA+B;AACvD,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,SAAS,EAAE,4BAA4B;AACvC,YAAA,YAAY,EAAE,oBAAoB;;;AAGlC,YAAA,oBAAoB,EAAE,yCAAyC;AAC/D,YAAA,oBAAoB,EAAE,yCAAyC;AAC/D,YAAA,mBAAmB,EAAE,wCAAwC;AAC7D,YAAA,iBAAiB,EAAE,sCAAsC;AACzD,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,cAAc,EAAE,qCAAqC;AACrD,YAAA,SAAS,EAAE,qCAAqC;AAChD,YAAA,kBAAkB,EAAE;AACrB,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,aAAa,EAAE,qCAAqC;AACpD,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,UAAU,EAAE,0BAA0B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,MAAM,EAAE,wBAAwB;AAChC,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,sBAAsB,EAAE,4BAA4B;AACpD,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,cAAc,EAAE,oBAAoB;AACpC,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,eAAe,EAAE,4BAA4B;AAC7C,YAAA,kBAAkB,EAAE,oBAAoB;AACxC,YAAA,oBAAoB,EAAE,gCAAgC;AACtD,YAAA,QAAQ,EAAE,qBAAqB;AAC/B,YAAA,WAAW,EAAE,qBAAqB;AAClC,YAAA,OAAO,EAAE,qBAAqB;AAC9B,YAAA,gBAAgB,EAAE,qBAAqB;AACvC,YAAA,iBAAiB,EAAE,qBAAqB;AACxC,YAAA,UAAU,EAAE,2BAA2B;AACvC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,aAAa,EAAE,wCAAwC;AACvD,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,mBAAmB,EAAE,4CAA4C;AACjE,YAAA,0BAA0B,EACxB,wDAAwD;AAC1D,YAAA,qBAAqB,EAAE,yCAAyC;AAChE,YAAA,oBAAoB,EAAE,+BAA+B;AACrD,YAAA,eAAe,EAAE,yCAAyC;AAC1D,YAAA,iBAAiB,EAAE,4BAA4B;AAC/C,YAAA,aAAa,EAAE,+BAA+B;AAC9C,YAAA,QAAQ,EAAE,4BAA4B;AACtC,YAAA,SAAS,EAAE,uBAAuB;AAClC,YAAA,eAAe,EAAE,sCAAsC;AACvD,YAAA,gBAAgB,EAAE,uCAAuC;AACzD,YAAA,WAAW,EAAE,oBAAoB;;;;AAIjC,YAAA,oBAAoB,EAAE,yCAAyC;AAC/D,YAAA,cAAc,EAAE,yCAAyC;AACzD,YAAA,iBAAiB,EAAE,yBAAyB;AAC5C,YAAA,WAAW,EAAE,4BAA4B;AACzC,YAAA,cAAc,EAAE,oBAAoB;AACpC,YAAA,kBAAkB,EAAE,qBAAqB;AACzC,YAAA,mBAAmB,EAAE,qBAAqB;AAC1C,YAAA,WAAW,EAAE,yBAAyB;AACtC,YAAA,aAAa,EAAE,yBAAyB;AACxC,YAAA,WAAW,EAAE;AACd,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE;AACR;AACF;;;ACl1EH,MAAM,qBAAqB,GAAgC;AACzD,IAAA,SAAS,EAAE;CACZ;AAED,MAAM,qBAAqB,GAA2B;AACpD,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,UAAU,EAAE,iBAAiB;AAC7B,IAAA,KAAK,EAAE;CACR;AAEM,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAChD,kBAAkB,EAClB,EAAE,OAAO,EAAE,MAAM,qBAAqB,EAAE;AAGnC,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAChD,kBAAkB,EAClB,EAAE,OAAO,EAAE,MAAM,qBAAqB,EAAE;AAGpC,SAAU,cAAc,CAC5B,OAAA,GAA0B,EAAE,EAAA;AAE5B,IAAA,MAAM,eAAe,GAA2B;AAC9C,QAAA,GAAG,qBAAqB;AACxB,QAAA,GAAG,OAAO;QACV,KAAK,EAAE,EAAE,GAAG,qBAAqB,EAAE,GAAG,OAAO,CAAC,KAAK;KACpD;AACD,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,eAAe,CAAC;AAC3B,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,QAAQ,EAAE,MAAM,MAAM,CAAC,cAAc;AACtC;AACF,KAAA,CAAC;AACJ;;AClDA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACI,MAAM,iBAAiB,GAAqC;AACjE,IAAA,sCAAsC,EACpC;;AAGJ,MAAM,SAAS,GAAG,gCAAgC;AAElD;AACA;AACA,MAAM,mBAAmB,GAUrB;IACF,CAAC,6BAA6B,EAAE,eAAe,CAAC;IAChD,CAAC,4BAA4B,EAAE,cAAc,CAAC;IAC9C,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;IACtC,CAAC,aAAa,EAAE,YAAY,CAAC;IAC7B,CAAC,YAAY,EAAE,WAAW;CAC3B;AACD,MAAM,gBAAgB,GAAG,OAAO;AAChC,MAAM,mBAAmB,GAAG,kCAAkC;AAC9D,MAAM,kBAAkB,GAAG,iCAAiC;AAEtD,SAAU,cAAc,CAC5B,IAAmB,EACnB,SAAiC,EAAA;IAEjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAkB;IAC7D,gBAAgB,CAAC,MAAM,CAAC;AACxB,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,gBAAgB,CAAC,MAAqB,EAAA;IACpD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC3C,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;IACxD;IAEA,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC;IAClD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5D,IAAA,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;AACtE,IAAA,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;IACpE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE;QACtC,IACE,OAAO,KAAK,KAAK,QAAQ;AACzB,aAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC3D;AACA,YAAA,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAA,CAAE,CAAC;QACtE;IACF;IAEA,KAAK,MAAM,MAAM,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE;QAClE,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,CAAC;IAC1E;AAEA,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;AAC5B,QAAA,GAAG,cAAc;AACjB,QAAA,GAAG,aAAa;AAChB,QAAA,GAAG;AACJ,KAAA,CAAC;IACF,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,CAAC;IAE7E,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAW;AAChD,QAAA,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC5D,QAAA,IACE,YAAY;AACZ,YAAA,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC;AACjC,YAAA,EAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EACpE;AACA,YAAA,MAAM,IAAI,KAAK,CACb,8BAA8B,IAAI,CAAA,8EAAA,CAAgF,CACnH;QACH;IACF;AAEA,IAAA,iBAAiB,CAAC;AAChB,QAAA,SAAS,EAAE,UAAU;QACrB,cAAc;QACd,aAAa;QACb,YAAY;QACZ;AACD,KAAA,CAAC;AACJ;AAEA,SAAS,iBAAiB,CAAC,YAM1B,EAAA;AACC,IAAA,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACtE,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAC9C,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAC/B;QACD,IAAI,CAAC,KAAK,EAAE;YACV;QACF;AAEA,QAAA,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK;QAC5B,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACrD,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACvB;IACF;AACF;AAEM,SAAU,aAAa,CAAI,IAAoB,EAAA;AACnD,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa;IAEnC,MAAM,KAAK,GAAG,CAAC,KAAqB,EAAE,MAAM,GAAG,EAAE,KAAU;AACzD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,CAAA,mBAAA,EAAsB,MAAM,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;YACvD;AAEA,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,GAAG;AAC9C,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,gBAAA,KAAK,CAAC,KAAuB,EAAE,IAAI,CAAC;YACtC;iBAAO;AACL,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAU,CAAC;YAC9B;QACF;AACF,IAAA,CAAC;IAED,KAAK,CAAC,IAAI,CAAC;AACX,IAAA,OAAO,MAAM;AACf;AAEM,SAAU,sBAAsB,CACpC,IAA4C,EAC5C,IAAY,EAAA;IAEZ,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA,EAAI;AACpB,SAAA,OAAO,CAAC,oBAAoB,EAAE,OAAO;AACrC,SAAA,UAAU,CAAC,GAAG,EAAE,GAAG;SACnB,WAAW,EAAE,EAAE;AACpB;AAEM,SAAU,sBAAsB,CACpC,SAAqD,EAAA;IAErD,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,SAAS,CAAC;IAChE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,CAAA,CAAE,CAAC;IAC1D;AACA,IAAA,OAAO,CAAA,IAAA,EAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAA6B,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;AACzF;AAEA,SAAS,kBAAkB,CACzB,MAAsB,EACtB,OAAe,EACf,OAA6B,EAC7B,IAAY,EAAA;IAEZ,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;AAClC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,CAAA,MAAA,EAAS,IAAI,CAAA,oBAAA,EAAuB,IAAI,CAAA,KAAA,CAAO,CAAC;QAClE;AAEA,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,CAAA,QAAA,EAAW,IAAI,CAAA,cAAA,EAAiB,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE,CAAC;QACnE;IACF;AACF;AAEA,SAAS,YAAY,CACnB,IAAa,EACb,SAAkB,EAAA;AAElB,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC3C,OAAO,SAAS,KAAK,SAAS,GAAG,IAAI,GAAG,SAAS;IACnD;AAEA,IAAA,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE;AACnD,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACpD,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;IAC9C;AACA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,QAAQ,CAAC,KAAc,EAAA;AAC9B,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E;;MC9Ma,cAAc,CAAA;AACR,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,IAAA,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,IAAA,eAAe,GAAG,IAAI,GAAG,EAAU;AACnC,IAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACpC,IAAA,YAAY,GAAG,MAAM,CACpC,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,mFAC5C;IACgB,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACzC,IAAA,WAAW,GAAG,MAAM,CACnC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,kFACpD;AAEQ,IAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AACtC,IAAA,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC3C,IAAA,MAAM,GAAG,IAAI,CAAC,WAAW;IACzB,mBAAmB,GAAG,QAAQ,CAAwB,MAC7D,IAAI,CAAC,WAAW,EAAE,KAAK;AACrB,UAAE,IAAI,CAAC,YAAY;AACnB,UAAG,IAAI,CAAC,WAAW,EAA4B,0FAClD;AAED,IAAA,WAAA,GAAA;AACE,QAAA,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MACxB,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAC1E;QACD,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,SAAS,CAAC,MAAqB,EAAA;QAC7B,gBAAgB,CAAC,MAAM,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,cAAc,CAAC,WAA0B,EAAA;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,SAAS,CAAC,WAA0B,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IAClC;AAEiB,IAAA,oBAAoB,GAAG,CACtC,KAA0B,KAClB;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AACvD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;YACnC,IAAI,CAAC,UAAU,EAAE;QACnB;AACF,IAAA,CAAC;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB;AAE3C,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC3D,YAAA,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE;QAEA,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5D,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,QAAQ,EAAE;AACxC,YAAA,SAAS,CAAC,GAAG,CACX,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,EACxC,sBAAsB,CAAC,SAAS,CAAC,CAClC;QACH;QACA,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,cAAc,EAAE;AAC9C,YAAA,SAAS,CAAC,GAAG,CACX,sBAAsB,CAAC,UAAU,EAAE,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE,CAAC,EACpD,sBAAsB,CAAC,SAAS,CAAC,CAClC;QACH;AAEA,QAAA,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AAChE,YAAA,SAAS,CAAC,GAAG,CACX,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,EACzC,sBAAsB,CAAC,SAAS,CAAC,CAClC;QACH;AAEA,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;YACrC;QACF;QACA,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;QACzC;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;QAC5B,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;QACpC;QAEA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM;AACtC,QAAA,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM;IACjC;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW;QACtC,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,EAAE,UAAU,KAAK;AACjD,cAAE,IAAI,CAAC,UAAU,CAAC,8BAA8B;cAC9C,SAAS;IACf;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;AACtD,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,OAAO,CAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,CACxB;AACD,YAAA,OAAO,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;QACrE;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,SAAS;QAClB;IACF;AAEQ,IAAA,aAAa,CAAC,WAA0B,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;YACtD;QACF;AAEA,QAAA,IAAI;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY;AACvD,YAAA,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAC5B,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC9C;iBAAO;gBACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC;YACxD;QACF;AAAE,QAAA,MAAM;;QAER;IACF;wGApJW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AClBlC;;;;AAIG;MAeU,mBAAmB,CAAA;AACrB,IAAA,IAAI,GAAG,KAAK,CAAiB,IAAI,2EAAC;wGADhC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXpB,CAAA;;AAEJ,OAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,42EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASK,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN,CAAA;;QAEJ,EAAA,IAAA,EAEA;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,yBAAyB,EAAE,iBAAiB;AAC5C,wBAAA,yBAAyB,EAAE;qBAC5B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,42EAAA,CAAA,EAAA;;;MCoBpC,uBAAuB,CAAA;AACzB,IAAA,KAAK,GAAG,KAAK,CAAsB,SAAS,4EAAC;AAC7C,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;wGAHzC,uBAAuB,EAAA,IAAA,EAAA,EAAA,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,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,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,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,uBAAA,EAAA,iCAAA,EAAA,uBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,iCAAA,EAAA,uBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,gCAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5BxB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,42EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAcU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA/BnC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;GAcT,EAAA,IAAA,EAEK;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,uBAAuB;AAC5D,wBAAA,mCAAmC,EAAE,uBAAuB;AAC5D,wBAAA,mCAAmC,EAAE,uBAAuB;AAC5D,wBAAA,gCAAgC,EAAE,oBAAoB;AACtD,wBAAA,mCAAmC,EAAE,uBAAuB;AAC5D,wBAAA,kCAAkC,EAAE,sBAAsB;AAC1D,wBAAA,kCAAkC,EAAE;qBACrC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,42EAAA,CAAA,EAAA;;;MCpCpC,aAAa,CAAA;AAOL,IAAA,UAAA;AANF,IAAA,WAAW,GAAG,MAAM,CACnC,SAAS,kFACV;AACQ,IAAA,MAAM,GAA2C,IAAI,CAAC,WAAW;AAE1E,IAAA,WAAA,CACmB,UAAgD,EAAA;QAAhD,IAAA,CAAA,UAAU,GAAV,UAAU;IAC1B;IAEH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;IACjC;AAEA,IAAA,OAAO,CAAC,MAA0B,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;IAC9B;AACD;;MC4CY,gBAAgB,CAAA;AAClB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAiC;AACzD,IAAA,OAAO,GAAG,KAAK,CAAiB,MAAM,8EAAC;AACvC,IAAA,SAAS,GAAG,KAAK,CAAmB,SAAS,gFAAC;AAC9C,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,+EAAC;IACtB,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA6B;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,+EAAC;IACtB,SAAS,GAAG,MAAM,EAAsB;AAEhC,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AAClD,IAAA,KAAK;IACL,SAAS,GAAG,CAAC;IACb,SAAS,GAAG,CAAC;IAErB,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,EAAE;IACd;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI;IACrD;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,OAAO,OAAO,YAAY,WAAW,GAAG,OAAO,GAAG,IAAI;IACxD;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf;QACF;AACA,QAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;QACtB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;IAC/C;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE;YACrC;QACF;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;IACxE;AAEA,IAAA,OAAO,CAAC,MAA0B,EAAA;QAChC,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACxB;AAEA,IAAA,UAAU,CAAC,KAAiB,EAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAA4B;AAC/C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvD,IAAI,CAAC,MAAM,EAAE;QACf;IACF;wGAhEW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzCjB;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,04GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAxBS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FA0CX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA7C5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;;;;;;;;;;;;;;;;;;;;GAuBT,EAAA,IAAA,EAEK;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,2BAA2B,EAAE,yBAAyB;AACtD,wBAAA,2BAA2B,EAAE,yBAAyB;AACtD,wBAAA,wBAAwB,EAAE,sBAAsB;AAChD,wBAAA,0BAA0B,EAAE,wBAAwB;AACpD,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,cAAc,EAAE,SAAS;AACzB,wBAAA,cAAc,EAAE,UAAU;AAC1B,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,YAAY,EAAE;qBACf,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,04GAAA,CAAA,EAAA;;;MC9CpC,sBAAsB,CAAA;AACxB,IAAA,SAAS,GAAG,KAAK,CAAmB,SAAS,gFAAC;wGAD5C,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,SAAA,EAAA,IAAA,EAAA,sBAAsB,+XAVvB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4sEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN,EAAE,EAAA,IAAA,EAEN;AACJ,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,eAAe,EAAE,WAAW;AAC5B,wBAAA,YAAY,EAAE;qBACf,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,4sEAAA,CAAA,EAAA;;;MCepC,cAAc,CAAA;IACR,aAAa,GAAG,GAAG;AAEnB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAACD,UAAQ,CAAC;AAC3B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,IAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACvC,OAAO,GAAkB,EAAE;AAC3B,IAAA,OAAO,GAAG,IAAI,GAAG,EAA+B;AACzD,IAAA,MAAM;AAEd,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,GAAG;AACvC,cAAE;cACA,CAAC;IACP;;AAGA,IAAA,IAAI,CAAC,OAAuB,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,SAAS,CAAC;AACjD,YAAA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AAC9B,YAAA,OAAO,MAAM;QACf;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,MAAM;IACf;IAEQ,WAAW,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB;QACF;IACF;AAEQ,IAAA,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAe,EAAA;AAChD,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,EAAE;YACrD,mBAAmB,EAAE,IAAI,CAAC;AAC3B,SAAA,CAAC;QACF,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;QACjD,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;QAC3D,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC/D,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC3D,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;QAC/C,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC3D,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACnD,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;AACvB,gBAAA,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;YAC3B;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAC9B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CACjD,YAAY,CAAC,QAAQ,CAAC,aAAa,CACpC;AACD,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACrD;IAEQ,OAAO,CAAC,MAAqB,EAAE,MAA0B,EAAA;AAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACxC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,MAAM,CACnC;AACD,QAAA,IAAI,WAAW,IAAI,CAAC,EAAE;AACpB,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACnD,YAAA,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5B,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/B;QACF;QACA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3B,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,YAAY,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;AACtC,QAAA,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAC5D,mBAAmB,CACpB;QACD,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,UAAU,CACR,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,EAClD,IAAI,CAAC,aAAa,CACnB;IACH;IAEA,WAAW,GAAA;AACT,QAAA,KAAK,MAAM,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;gBAClC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;YACvD;AACA,YAAA,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;YAC5C,YAAY,CAAC,OAAO,EAAE;QACxB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3B;AAEQ,IAAA,YAAY,CAAC,YAA4C,EAAA;QAC/D,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrD,QAAA,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;QAC5C,YAAY,CAAC,OAAO,EAAE;QACtB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM;QACpB;AACA,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,sBAAsB,EAAE;YACrD,mBAAmB,EAAE,IAAI,CAAC;AAC3B,SAAA,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CACxC,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,CAC5D;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC7D,QAAA,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACxC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,OAAO,MAAM;IACf;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IACE,IAAI,CAAC,OAAO,CAAC,IAAI;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM;AACnB,YAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,EAC7D;YACA;QACF;QACA,IAAI,CAAC,aAAa,EAAE;IACtB;IAEQ,aAAa,CAAC,UAAU,GAAG,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;QACA,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtD;QACA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;AAC3C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB;wGAzJW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCXrB,kBAAkB,CAAA;AACpB,IAAA,OAAO,GAAG,KAAK,CAAY,OAAO,8EAAC;wGADjC,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,wdAXnB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,82BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAWf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,0BAA0B,EAAE,sBAAsB;AAClD,wBAAA,6BAA6B,EAAE,yBAAyB;AACxD,wBAAA,2BAA2B,EAAE;qBAC9B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,82BAAA,CAAA,EAAA;;;MCkBpC,cAAc,CAAA;AAChB,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAS;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;IACxB,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AAChD,IAAA,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,QAAQ;AAE/B,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;wGARvC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,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,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBf,CAAA;;;;;;;;AAQC,YAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kmFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQA,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,SAAS;+BACE,QAAQ,EAAA,UAAA,EACN,IAAI,EAAA,QAAA,EACN,CAAA;;;;;;;;aAQC,EAAA,IAAA,EAEL;AACJ,wBAAA,gBAAgB,EAAE,MAAM;AACxB,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,kmFAAA,CAAA,EAAA;;MAoDpC,eAAe,CAAA;AACjB,IAAA,WAAW,GAAG,KAAK,CAAgB,YAAY,kFAAC;AAChD,IAAA,OAAO,GAAG,KAAK,CAAgB,WAAW,8EAAC;AAC3C,IAAA,WAAW,GAAG,KAAK,CAAoB,SAAS,kFAAC;AACjD,IAAA,IAAI,GAAG,eAAe,CAAC,cAAc,2EAAC;AAC9B,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AAE1D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC;AAEA,IAAA,MAAM,CAAC,GAAU,EAAA;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC;QACpE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE;YAC1B;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3B;IAEA,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;AACrB,QAAA,IACE,CAAC;YACC,WAAW;YACX,SAAS;YACT,WAAW;YACX,YAAY;YACZ,MAAM;YACN;AACD,SAAA,CAAC,QAAQ,CAAC,GAAG,CAAC,EACf;YACA;QACF;QACA,MAAM,IAAI,GAAG,uBAAuB,CAClC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EACxE,KAAK,EACL,GACuE,EACvE,IAAI,CAAC,WAAW,EAAE,CACnB;AACD,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACtB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CACrD,mBAAmB,GAAG,CAAC,OAAO,CAAA,EAAA,CAAI,CACP;YAC7B,MAAM,EAAE,KAAK,EAAE;QACjB;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,MAAM,QAAQ,GACZ,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE;QAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC;AACA,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,QAAQ,CAAC;QAC1C;IACF;wGA7DW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAIM,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtCpC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kmFAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASU,eAAe,EAAA,UAAA,EAAA,CAAA;kBArC3B,SAAS;+BACE,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;GAyBT,EAAA,IAAA,EAEK;AACJ,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,4BAA4B,EAAE,2BAA2B;AACzD,wBAAA,uBAAuB,EAAE;qBAC1B,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,kmFAAA,CAAA,EAAA;kdAMf,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCrDnC,cAAc,CAAA;AAChB,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAS;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;AACvB,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;AACxB,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;AACtB,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;wGANvC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,kzBAhBf,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gxDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAgBf,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,EAAA,UAAA,EACN,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,wBAAwB,EAAE,OAAO;AACjC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,iBAAiB,EAAE,mBAAmB;AACtC,wBAAA,gBAAgB,EAAE,MAAM;AACxB,wBAAA,0BAA0B,EAAE,YAAY;AACxC,wBAAA,0BAA0B,EAAE,YAAY;AACxC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,sBAAsB,EAAE;qBACzB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,gxDAAA,CAAA,EAAA;;MAwBpC,mBAAmB,CAAA;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,MAAM,4EAAC;AACrB,IAAA,aAAa,GAAG,KAAK,CAAkB,UAAU,oFAAC;AAClD,IAAA,YAAY,GAAG,KAAK,CAAmB,EAAE,mFAAC;AAC1C,IAAA,IAAI,GAAG,eAAe,CAAC,cAAc,2EAAC;AAC9B,IAAA,SAAS,GAAG,IAAI,qBAAqB,EAGlD;IACI,WAAW,GAAG,CAAC,CAAC;AAExB,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KACrC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAC/D;QACD,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACxB;IACF;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;AACA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC9C,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,GAAG,EAAE;gBACP,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YACxB;YACA;QACF;AACA,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,QAAA,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAClE,YAAA,IAAI,GAAG,uBAAuB,CAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EACjE,IAAI,CAAC,WAAW,EAChB,KAAK,CAAC,GAAkD,EACxD,YAAY,CACb;QACH;aAAO;AACL,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EACrE,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,WAAW,CACjB;QACH;AACA,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB;IACF;AAEA,IAAA,MAAM,CAAC,GAAU,EAAA;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC;AACpE,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,EAAE;YAC7D;QACF;QACA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;YACvC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9D;aAAO;YACL,QAAQ,CAAC,KAAK,EAAE;AAChB,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QACnB;QACA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;IACtC;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QAChD,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,SAAS,GAAA;QACf,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC7C,QAAA,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;AAChD,YAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC;QAC5C;IACF;wGAxFW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAIE,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdpC,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gxDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUf,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN,gBAAgB,EAAA,IAAA,EAEpB;AACJ,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,6BAA6B,EAAE;qBAChC,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,gxDAAA,CAAA,EAAA;qdAMf,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA;sBAW7C,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAUhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCjDxB,kBAAkB,CAAA;AACpB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AACrB,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAe;AACtC,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;AAClC,IAAA,EAAE,GAAG,KAAK,CAAC,QAAQ,wEAAU;AAC7B,IAAA,SAAS,GAAG,KAAK,CAAc,KAAK,gFAAC;IACrC,MAAM,GAAG,MAAM,EAAwB;AAE/B,IAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AACzC,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,UAAU;IACV,eAAe,GAAG,KAAK;AAE/B,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;AACpE,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,WAAW,EAAE;QACpB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC;IACxC;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACnC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,qBAAqB,EAAE,KAAK;AAC5B,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC5B,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;gBAClC;YACF;AACA,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACxB;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;wGA1DW,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,SAAA,EAAA,IAAA,EAAA,kBAAkB,u4BAVnB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uwBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAUhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN,iBAAiB,EAAA,IAAA,EAErB;AACJ,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE;qBACtB,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,uwBAAA,CAAA,EAAA;;;AClBjD,IAAI,SAAS,GAAG,CAAC;MAYJ,kBAAkB,CAAA;IACpB,OAAO,GAAG,KAAK,CAAC,QAAQ,8EAAW,KAAK,EAAE,WAAW,EAAA,CAAG;IACxD,SAAS,GAAG,KAAK,CAAc,KAAK,iFAC3C,KAAK,EAAE,oBAAoB,EAAA,CAC3B;IACO,KAAK,GAAG,KAAK,CAAC,GAAG,6EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;AAEvC,IAAA,MAAM,GAAG,MAAM,EAAC,UAAuB,EAAC;AACxC,IAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,IAAA,EAAE,GAAG,CAAA,WAAA,EAAc,SAAS,EAAE,EAAE;AACzC,IAAA,YAAY;AACZ,IAAA,KAAK;IACL,mBAAmB,GAAkB,IAAI;IAEjD,IAAI,GAAA;QACF,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE;YACxC;QACF;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE;YACX;QACF;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC1D;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/C;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;IAC9B;IAEQ,IAAI,GAAA;QACV,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;QAChE,IAAI,CAAC,cAAc,EAAE;QACrB,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACxC;IAEQ,eAAe,GAAA;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAC3E,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC1D,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAChD,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACpC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACpD,QAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,OAAO,YAAY;IACrB;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;QACzC,IAAI,CAAC,mBAAmB,KAAK,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC5D;AACD,QAAA,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACzB,QAAA,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAC/D;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CACpC,kBAAkB,EAClB,IAAI,CAAC,mBAAmB,CACzB;QACH;AACA,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACjC;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS;QACxB;IACF;wGAhFW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,WAAW,EAAE,QAAQ;AACrB,wBAAA,YAAY,EAAE;AACf;AACF,iBAAA;;;ACvBD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-solid-design-system.mjs","sources":["../../../../packages/design-system/src/lib/a11y/aria-id.service.ts","../../../../packages/design-system/src/lib/a11y/field-context.ts","../../../../packages/design-system/src/lib/a11y/focus.ts","../../../../packages/design-system/src/lib/a11y/navigation.ts","../../../../packages/design-system/src/lib/a11y/typeahead.ts","../../../../packages/design-system/src/lib/accordion/accordion.component.ts","../../../../packages/design-system/src/lib/alert/alert.component.ts","../../../../packages/design-system/src/lib/avatar/avatar.component.ts","../../../../packages/design-system/src/lib/avatar/avatar-group.component.ts","../../../../packages/design-system/src/lib/badge/badge.component.ts","../../../../packages/design-system/src/lib/breadcrumbs/breadcrumb-item.component.ts","../../../../packages/design-system/src/lib/breadcrumbs/breadcrumbs.component.ts","../../../../packages/design-system/src/lib/button/button.component.ts","../../../../packages/design-system/src/lib/button-group/button-group.component.ts","../../../../packages/design-system/src/lib/card/card.component.ts","../../../../packages/design-system/src/lib/chip/chip.component.ts","../../../../packages/design-system/src/lib/collection/collection.controller.ts","../../../../packages/design-system/src/lib/empty-state/empty-state.component.ts","../../../../packages/design-system/src/lib/overlay/overlay.service.ts","../../../../packages/design-system/src/lib/command-palette/command-palette.component.ts","../../../../packages/design-system/src/lib/form/models/value-accessor.ts","../../../../packages/design-system/src/lib/form/components/checkbox/checkbox.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker-calendar.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-picker.component.ts","../../../../packages/design-system/src/lib/form/components/date-picker/date-range-picker.component.ts","../../../../packages/design-system/src/lib/form/components/dropdown/dropdown-item.directive.ts","../../../../packages/design-system/src/lib/skeleton/skeleton.component.ts","../../../../packages/design-system/src/lib/form/components/dropdown/dropdown.component.ts","../../../../packages/design-system/src/lib/form/components/dropdown/dropdown.component.html","../../../../packages/design-system/src/lib/form/components/input/input.component.ts","../../../../packages/design-system/src/lib/form/components/input/input.component.html","../../../../packages/design-system/src/lib/form/components/input-code/input-code.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group.component.ts","../../../../packages/design-system/src/lib/form/components/input-group/input-group-addon.component.ts","../../../../packages/design-system/src/lib/form/components/input-number/input-number.component.ts","../../../../packages/design-system/src/lib/form/components/input-search/input-search.component.ts","../../../../packages/design-system/src/lib/form/components/radio/radio-context.ts","../../../../packages/design-system/src/lib/form/components/option-card/option-card.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.ts","../../../../packages/design-system/src/lib/form/components/password/password.component.html","../../../../packages/design-system/src/lib/form/components/radio/radio.component.ts","../../../../packages/design-system/src/lib/form/components/radio/radio-group.component.ts","../../../../packages/design-system/src/lib/form/components/slider/slider.component.ts","../../../../packages/design-system/src/lib/form/components/switch/switch.component.ts","../../../../packages/design-system/src/lib/form/components/text-area/text-area.component.ts","../../../../packages/design-system/src/lib/form/directives/content-editable.directive.ts","../../../../packages/design-system/src/lib/form/index.ts","../../../../packages/design-system/src/lib/comment/comment.component.ts","../../../../packages/design-system/src/lib/comment/comment.component.html","../../../../packages/design-system/src/lib/description/description.component.ts","../../../../packages/design-system/src/lib/divider/divider.component.ts","../../../../packages/design-system/src/lib/drawer/drawer.component.ts","../../../../packages/design-system/src/lib/drawer/models/drawer-ref.ts","../../../../packages/design-system/src/lib/drawer/services/drawer.service.ts","../../../../packages/design-system/src/lib/editor/enums/commands.enum.ts","../../../../packages/design-system/src/lib/editor/models/labels.ts","../../../../packages/design-system/src/lib/editor/services/editor.service.ts","../../../../packages/design-system/src/lib/editor/pipes/editor-label.pipe.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.ts","../../../../packages/design-system/src/lib/editor/components/color-picker/color-picker.component.html","../../../../packages/design-system/src/lib/editor/components/image/image.component.ts","../../../../packages/design-system/src/lib/editor/components/image/image.component.html","../../../../packages/design-system/src/lib/editor/components/link/link.component.ts","../../../../packages/design-system/src/lib/editor/components/link/link.component.html","../../../../packages/design-system/src/lib/editor/components/list/list.component.ts","../../../../packages/design-system/src/lib/editor/components/list/list.component.html","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.ts","../../../../packages/design-system/src/lib/editor/components/paragraph/paragraph.component.html","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.ts","../../../../packages/design-system/src/lib/editor/components/toogle/toggle.component.html","../../../../packages/design-system/src/lib/editor/editor.component.ts","../../../../packages/design-system/src/lib/editor/editor.component.html","../../../../packages/design-system/src/lib/image-upload/pipes/image-url.pipe.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.ts","../../../../packages/design-system/src/lib/image-upload/image-upload.component.html","../../../../packages/design-system/src/lib/link/link.component.ts","../../../../packages/design-system/src/lib/menu/menu-item.component.ts","../../../../packages/design-system/src/lib/menu/menu.component.ts","../../../../packages/design-system/src/lib/menu/menu-divider.component.ts","../../../../packages/design-system/src/lib/menu/menu-section.component.ts","../../../../packages/design-system/src/lib/meter/meter.component.ts","../../../../packages/design-system/src/lib/modal/modal.component.ts","../../../../packages/design-system/src/lib/modal/models/modal-ref.ts","../../../../packages/design-system/src/lib/modal/services/modal.service.ts","../../../../packages/design-system/src/lib/pagination/load-more.component.ts","../../../../packages/design-system/src/lib/pagination/pagination.component.ts","../../../../packages/design-system/src/lib/popover/popover.component.ts","../../../../packages/design-system/src/lib/progress-bar/progress-bar.component.ts","../../../../packages/design-system/src/lib/schedule/models/schedule.ts","../../../../packages/design-system/src/lib/schedule/services/schedule.service.ts","../../../../packages/design-system/src/lib/schedule/components/cell/cell.component.ts","../../../../packages/design-system/src/lib/schedule/pipes/week-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/pipes/filter-by-day.pipe.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.ts","../../../../packages/design-system/src/lib/schedule/components/event/event.component.html","../../../../packages/design-system/src/lib/schedule/components/day/day.component.ts","../../../../packages/design-system/src/lib/schedule/components/day/day.component.html","../../../../packages/design-system/src/lib/schedule/components/week/week.component.ts","../../../../packages/design-system/src/lib/schedule/components/week/week.component.html","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.ts","../../../../packages/design-system/src/lib/schedule/components/workweek/workweek.component.html","../../../../packages/design-system/src/lib/schedule/schedule.component.ts","../../../../packages/design-system/src/lib/schedule/schedule.component.html","../../../../packages/design-system/src/lib/schema/schema.component.ts","../../../../packages/design-system/src/lib/side-nav/side-nav.component.ts","../../../../packages/design-system/src/lib/side-nav/side-nav-item.component.ts","../../../../packages/design-system/src/lib/side-nav/side-nav-section.component.ts","../../../../packages/design-system/src/lib/stat-card/stat-card.component.ts","../../../../packages/design-system/src/lib/template/template.directive.ts","../../../../packages/design-system/src/lib/theme/presets/arvisfy.preset.ts","../../../../packages/design-system/src/lib/theme/theme.provider.ts","../../../../packages/design-system/src/lib/theme/utils/theme.utils.ts","../../../../packages/design-system/src/lib/theme/services/theme.service.ts","../../../../packages/design-system/src/lib/timeline/timeline.component.ts","../../../../packages/design-system/src/lib/timeline/timeline-item.component.ts","../../../../packages/design-system/src/lib/toast/models/toast-handle.ts","../../../../packages/design-system/src/lib/toast/toast.component.ts","../../../../packages/design-system/src/lib/toast/toast-region.component.ts","../../../../packages/design-system/src/lib/toast/services/toast.service.ts","../../../../packages/design-system/src/lib/surface/surface.component.ts","../../../../packages/design-system/src/lib/tabs/tabs.component.ts","../../../../packages/design-system/src/lib/tag-group/tag-group.component.ts","../../../../packages/design-system/src/lib/tooltip/tooltip.component.ts","../../../../packages/design-system/src/lib/tooltip/tooltip.directive.ts","../../../../packages/design-system/src/index.ts","../../../../packages/design-system/src/ng-solid-design-system.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n/** Generates deterministic-within-a-session ids for ARIA relationships. */\n@Injectable({ providedIn: 'root' })\nexport class NsAriaIdService {\n private nextId = 0;\n\n create(prefix = 'ns'): string {\n this.nextId += 1;\n return `${prefix}-${this.nextId}`;\n }\n}\n","import { Directive, effect, inject, input } from '@angular/core';\nimport { NsAriaIdService } from './aria-id.service';\n\nexport class NsFieldContext {\n private readonly descriptions = new Set<string>();\n private controlId = '';\n\n setControlId(controlId: string): void {\n this.controlId = controlId;\n }\n\n getControlId(): string {\n return this.controlId;\n }\n\n getDescribedBy(): string | undefined {\n return this.descriptions.size\n ? [...this.descriptions].join(' ')\n : undefined;\n }\n\n registerDescription(id: string): void {\n this.descriptions.add(id);\n }\n\n unregisterDescription(id: string): void {\n this.descriptions.delete(id);\n }\n}\n\n@Directive({\n selector: '[nsField]',\n standalone: true,\n providers: [NsFieldContext]\n})\nexport class NsFieldDirective {\n private readonly context = inject(NsFieldContext);\n private readonly ariaIds = inject(NsAriaIdService);\n\n readonly controlId = input(this.ariaIds.create('ns-field'), {\n alias: 'nsField'\n });\n\n constructor() {\n effect(() => this.context.setControlId(this.controlId()));\n }\n}\n","export const NS_FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[contenteditable=\"true\"]',\n '[tabindex]:not([tabindex=\"-1\"])'\n].join(',');\n\nexport function getNsFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(NS_FOCUSABLE_SELECTOR)\n ).filter((element) => !element.hasAttribute('hidden') && !element.inert);\n}\n\nexport function focusNsFirst(container: HTMLElement): boolean {\n const element = getNsFocusableElements(container)[0];\n element?.focus();\n return Boolean(element);\n}\n\nexport function focusNsLast(container: HTMLElement): boolean {\n const elements = getNsFocusableElements(container);\n const element = elements[elements.length - 1];\n element?.focus();\n return Boolean(element);\n}\n\nexport function isNsEventInside(\n event: Event,\n ...elements: Array<HTMLElement | undefined>\n): boolean {\n const path = event.composedPath();\n return elements.some((element) => Boolean(element && path.includes(element)));\n}\n","import { NsKey } from '../../types';\n\nexport interface NsNavigableItem {\n key: NsKey;\n disabled?: boolean;\n}\n\nexport type NsNavigationKey =\n 'ArrowDown' | 'ArrowLeft' | 'ArrowRight' | 'ArrowUp' | 'End' | 'Home';\n\nexport function getNsNextNavigableIndex(\n items: readonly NsNavigableItem[],\n currentIndex: number,\n key: NsNavigationKey,\n orientation: 'horizontal' | 'vertical' = 'vertical',\n loop = true\n): number {\n if (!items.length) {\n return -1;\n }\n\n const forward = key === 'ArrowDown' || key === 'ArrowRight';\n const backward = key === 'ArrowUp' || key === 'ArrowLeft';\n if (\n (key === 'ArrowLeft' || key === 'ArrowRight') &&\n orientation !== 'horizontal'\n ) {\n return currentIndex;\n }\n if (\n (key === 'ArrowUp' || key === 'ArrowDown') &&\n orientation !== 'vertical'\n ) {\n return currentIndex;\n }\n if (key === 'Home') {\n return getNsEnabledIndex(items, 0, 1);\n }\n if (key === 'End') {\n return getNsEnabledIndex(items, items.length - 1, -1);\n }\n if (!forward && !backward) {\n return currentIndex;\n }\n\n const step = forward ? 1 : -1;\n const start = currentIndex < 0 ? (forward ? -1 : items.length) : currentIndex;\n for (let offset = 1; offset <= items.length; offset += 1) {\n let index = start + step * offset;\n if (loop) {\n index = ((index % items.length) + items.length) % items.length;\n }\n if (index < 0 || index >= items.length) {\n return currentIndex;\n }\n if (!items[index].disabled) {\n return index;\n }\n }\n return currentIndex;\n}\n\nfunction getNsEnabledIndex(\n items: readonly NsNavigableItem[],\n start: number,\n step: 1 | -1\n): number {\n for (let index = start; index >= 0 && index < items.length; index += step) {\n if (!items[index].disabled) {\n return index;\n }\n }\n return -1;\n}\n","export interface NsTypeaheadItem {\n label?: string;\n disabled?: boolean;\n}\n\nexport class NsTypeaheadController<T extends NsTypeaheadItem> {\n private query = '';\n private lastInputAt = 0;\n\n constructor(private readonly timeout = 500) {}\n\n find(items: readonly T[], key: string, currentIndex = -1): number {\n if (key.length !== 1 || key.trim().length === 0) {\n return -1;\n }\n const now = Date.now();\n this.query = now - this.lastInputAt > this.timeout ? key : this.query + key;\n this.lastInputAt = now;\n const normalized = this.query.toLocaleLowerCase();\n\n for (let offset = 1; offset <= items.length; offset += 1) {\n const index = (currentIndex + offset + items.length) % items.length;\n const item = items[index];\n if (\n !item.disabled &&\n item.label?.toLocaleLowerCase().startsWith(normalized)\n ) {\n return index;\n }\n }\n return -1;\n }\n\n reset(): void {\n this.query = '';\n this.lastInputAt = 0;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n contentChildren,\n effect,\n inject,\n input,\n model\n} from '@angular/core';\nimport { NsKey } from '../../types';\nimport { getNsNextNavigableIndex, NsAriaIdService } from '../a11y';\n\n@Component({\n selector: 'ns-accordion-item',\n standalone: true,\n template: `\n <button\n class=\"ns-accordion-item__trigger\"\n type=\"button\"\n [attr.data-ns-accordion-key]=\"key()\"\n [attr.data-state]=\"expanded() ? 'open' : 'closed'\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"panelId\"\n [disabled]=\"disabled()\"\n >\n {{ label() }}\n </button>\n <div\n class=\"ns-accordion-item__panel\"\n [id]=\"panelId\"\n role=\"region\"\n [attr.aria-label]=\"label()\"\n [hidden]=\"!expanded()\"\n >\n <ng-content />\n </div>\n `,\n styleUrls: ['./accordion.component.scss'],\n host: {\n '[class.ns-accordion-item]': 'true',\n '[class.ns-accordion-item--expanded]': 'expanded()',\n '[class.ns-accordion-item--disabled]': 'disabled()',\n '[attr.data-state]':\n \"disabled() ? 'disabled' : (expanded() ? 'open' : 'closed')\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAccordionItemComponent {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false);\n readonly expanded = model(false);\n readonly panelId = inject(NsAriaIdService).create('ns-accordion-panel');\n\n readonly element = inject(ElementRef<HTMLElement>);\n}\n\n@Component({\n selector: 'ns-accordion',\n standalone: true,\n template: '<ng-content />',\n styleUrls: ['./accordion.component.scss'],\n host: {\n '[class.ns-accordion]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAccordionComponent {\n readonly multiple = input(false);\n readonly expandedKeys = model<readonly NsKey[]>([]);\n readonly items = contentChildren(NsAccordionItemComponent);\n\n constructor() {\n effect(() => {\n const expanded = new Set(this.expandedKeys());\n for (const item of this.items()) {\n item.expanded.set(expanded.has(item.key()));\n }\n });\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const trigger = (event.target as HTMLElement | null)?.closest<HTMLElement>(\n '[data-ns-accordion-key]'\n );\n const key = this.findKey(trigger);\n if (key !== undefined) {\n this.toggle(key);\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n return;\n }\n const items = this.items();\n const current = items.findIndex((item) =>\n item.element.nativeElement.contains(event.target as Node)\n );\n const index = getNsNextNavigableIndex(\n items.map((item) => ({ key: item.key(), disabled: item.disabled() })),\n current,\n event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'\n );\n if (index >= 0) {\n event.preventDefault();\n const itemElement = items[index].element.nativeElement as HTMLElement;\n itemElement.querySelector<HTMLButtonElement>('button')?.focus();\n }\n }\n\n toggle(key: NsKey): void {\n const item = this.items().find((candidate) => candidate.key() === key);\n if (!item || item.disabled()) {\n return;\n }\n const expanded = new Set(this.expandedKeys());\n if (expanded.has(key)) {\n expanded.delete(key);\n } else {\n if (!this.multiple()) {\n expanded.clear();\n }\n expanded.add(key);\n }\n const next = [...expanded];\n this.expandedKeys.set(next);\n }\n\n private findKey(trigger: HTMLElement | null): NsKey | undefined {\n if (!trigger) {\n return undefined;\n }\n return this.items()\n .find((item) => item.element.nativeElement.contains(trigger))\n ?.key();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\nexport type NsAlertVariant = 'info' | 'warning' | 'danger' | 'success';\n\n@Component({\n selector: 'ns-alert',\n standalone: true,\n imports: [NsIconsComponent],\n template: `\n <ns-icon\n class=\"ns-alert__icon\"\n [name]=\"iconName()\"\n [size]=\"20\"\n aria-hidden=\"true\"\n />\n <div class=\"ns-alert__content\">\n @if (title()) {\n <strong class=\"ns-alert__title\">{{ title() }}</strong>\n }\n <div class=\"ns-alert__message\"><ng-content /></div>\n <div class=\"ns-alert__footer\"><ng-content select=\"ns-link\" /></div>\n </div>\n @if (dismissible()) {\n <button\n class=\"ns-alert__dismiss\"\n type=\"button\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"dismissed.emit()\"\n >\n ×\n </button>\n }\n `,\n styleUrl: './alert.component.scss',\n host: {\n role: 'alert',\n '[class.ns-alert]': 'true',\n '[class.ns-alert--info]': \"variant() === 'info'\",\n '[class.ns-alert--success]': \"variant() === 'success'\",\n '[class.ns-alert--warning]': \"variant() === 'warning'\",\n '[class.ns-alert--danger]': \"variant() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAlertComponent {\n readonly variant = input<NsAlertVariant>('info');\n readonly title = input<string>('');\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly dismissLabel = input<string>('Dismiss alert');\n readonly dismissed = output<void>();\n\n iconName(): string {\n switch (this.variant()) {\n case 'success':\n return 'circle-check';\n case 'warning':\n return 'triangle-alert';\n case 'danger':\n return 'circle-x';\n default:\n return 'info';\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n signal\n} from '@angular/core';\nimport { NsSize } from '../../types';\n\n@Component({\n selector: 'ns-avatar',\n standalone: true,\n template: `\n @if (showImage()) {\n <img\n class=\"ns-avatar__image\"\n [src]=\"src()\"\n [alt]=\"alt()\"\n (error)=\"onImageError()\"\n />\n } @else if (initials()) {\n <span class=\"ns-avatar__initials\">{{ initials() }}</span>\n } @else if (icon()) {\n <span class=\"ns-avatar__icon\" aria-hidden=\"true\">{{ icon() }}</span>\n }\n `,\n styleUrl: './avatar.component.scss',\n host: {\n '[class.ns-avatar]': 'true',\n '[class.ns-avatar--circle]': \"shape() === 'circle'\",\n '[class.ns-avatar--square]': \"shape() === 'square'\",\n '[class.ns-avatar--sm]': \"size() === 'sm'\",\n '[class.ns-avatar--md]': \"size() === 'md'\",\n '[class.ns-avatar--lg]': \"size() === 'lg'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAvatarComponent {\n readonly src = input<string>('');\n readonly alt = input<string>('');\n readonly initials = input<string>('');\n readonly icon = input<string>('');\n readonly shape = input<'circle' | 'square'>('circle');\n readonly size = input<NsSize>('md');\n\n private readonly imageFailed = signal(false);\n readonly showImage = computed(\n () => Boolean(this.src().trim()) && !this.imageFailed()\n );\n\n onImageError(): void {\n this.imageFailed.set(true);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n contentChildren,\n effect,\n input,\n numberAttribute\n} from '@angular/core';\nimport { NsAvatarComponent } from './avatar.component';\n\n/**\n * Stacks projected `ns-avatar` instances with a configurable overlap and\n * collapses the overflow into a \"+N\" counter. Overlap and visibility are\n * applied imperatively to each projected avatar's native element (read via\n * `contentChildren(..., { read: ElementRef })`) rather than through\n * `::ng-deep`, since the overlap is a per-instance numeric input, not a\n * design token.\n */\n@Component({\n selector: 'ns-avatar-group',\n standalone: true,\n template: `\n <ng-content />\n @if (overflowCount() > 0) {\n <span\n class=\"ns-avatar-group__counter\"\n [style.margin-inline-start.px]=\"-overlap()\"\n >+{{ overflowCount() }}</span\n >\n }\n `,\n styleUrl: './avatar-group.component.scss',\n host: {\n role: 'group',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.ns-avatar-group]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsAvatarGroupComponent {\n readonly overlap = input(8, { transform: numberAttribute });\n readonly max = input<number | undefined>(undefined);\n readonly total = input<number | undefined>(undefined);\n readonly ariaLabel = input<string>('Avatar group');\n\n private readonly avatars = contentChildren(NsAvatarComponent, {\n read: ElementRef\n });\n\n readonly visibleCount = computed(() => {\n const count = this.avatars().length;\n const max = this.max();\n return max === undefined ? count : Math.min(max, count);\n });\n\n readonly overflowCount = computed(() => {\n const total = this.total();\n const baseline = total === undefined ? this.avatars().length : total;\n return Math.max(0, baseline - this.visibleCount());\n });\n\n constructor() {\n effect(() => this.syncAvatars());\n }\n\n private syncAvatars(): void {\n const avatars = this.avatars();\n const visible = this.visibleCount();\n const overlap = this.overlap();\n avatars.forEach((avatarRef, index) => {\n const element = avatarRef.nativeElement as HTMLElement;\n element.style.display = index < visible ? '' : 'none';\n element.style.marginInlineStart = index === 0 ? '0' : `${-overlap}px`;\n element.style.zIndex = String(avatars.length - index);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\n\nexport type NsBadgeMode = 'count' | 'dot';\n\nfunction numberOrUndefined(value: unknown): number | undefined {\n return value === undefined || value === null\n ? undefined\n : numberAttribute(value);\n}\n\n@Component({\n selector: 'ns-badge',\n standalone: true,\n template: \"@if (isVisible() && mode() === 'count') { {{ displayCount() }} }\",\n styleUrl: './badge.component.scss',\n host: {\n '[class.ns-badge]': 'true',\n '[class.ns-badge--single]': \"appearance() === 'single'\",\n '[class.ns-badge--double]': \"appearance() === 'double'\",\n '[class.ns-badge--overflow]': \"appearance() === 'overflow'\",\n '[class.ns-badge--dot]': \"appearance() === 'dot'\",\n '[class.ns-badge--hidden]': \"appearance() === 'hidden'\",\n '[attr.hidden]': 'isVisible() ? null : true',\n '[attr.aria-hidden]': \"isVisible() && ariaLabel() ? null : 'true'\",\n '[attr.role]': \"isVisible() && ariaLabel() ? 'img' : null\",\n '[attr.aria-label]': 'isVisible() && ariaLabel() ? ariaLabel() : null'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsBadgeComponent {\n readonly count = input<number | undefined, unknown>(undefined, {\n transform: numberOrUndefined\n });\n readonly mode = input<NsBadgeMode>('count');\n readonly ariaLabel = input<string | undefined>(undefined);\n\n readonly normalizedCount = computed(() => {\n const count = this.count();\n if (count === undefined || !Number.isFinite(count)) return undefined;\n\n const normalized = Math.trunc(count);\n return normalized > 0 ? normalized : undefined;\n });\n\n readonly isVisible = computed(\n () => this.mode() === 'dot' || this.normalizedCount() !== undefined\n );\n\n readonly displayCount = computed(() => {\n const count = this.normalizedCount();\n if (count === undefined) return '';\n return count >= 100 ? '99+' : String(count);\n });\n\n readonly appearance = computed<\n 'single' | 'double' | 'overflow' | 'dot' | 'hidden'\n >(() => {\n if (!this.isVisible()) return 'hidden';\n if (this.mode() === 'dot') return 'dot';\n\n const count = this.normalizedCount() as number;\n if (count >= 100) return 'overflow';\n return count >= 10 ? 'double' : 'single';\n });\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-breadcrumb-item',\n standalone: true,\n template: `\n @if (href() && !current()) {\n <a class=\"ns-breadcrumb-item__link\" [href]=\"href()\"><ng-content /></a>\n } @else {\n <span class=\"ns-breadcrumb-item__label\"><ng-content /></span>\n }\n `,\n styleUrl: './breadcrumbs.component.scss',\n host: {\n '[attr.aria-current]': \"current() ? 'page' : null\",\n '[class.ns-breadcrumb-item]': 'true',\n '[class.ns-breadcrumb-item--current]': 'current()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsBreadcrumbItemComponent {\n readonly href = input<string>('');\n readonly current = input(false);\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-breadcrumbs',\n standalone: true,\n template: '<ol class=\"ns-breadcrumbs__list\"><ng-content /></ol>',\n styleUrl: './breadcrumbs.component.scss',\n host: {\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.ns-breadcrumbs]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsBreadcrumbsComponent {\n readonly ariaLabel = input<string>('Breadcrumb');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n signal,\n viewChild\n} from '@angular/core';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsSize } from '../../types';\n\nexport type NsButtonVariant =\n 'primary' | 'secondary' | 'tertiary' | 'success' | 'danger' | 'dark';\n\nexport type NsButtonSize = 'xs' | NsSize;\n\nfunction booleanOrUndefined(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\nfunction numberOrUndefined(value: unknown): number | undefined {\n return value === undefined || value === null || value === ''\n ? undefined\n : numberAttribute(value) || undefined;\n}\n\n@Component({\n selector: 'ns-button',\n standalone: true,\n imports: [NsIconsComponent],\n template: `\n <button\n #control\n class=\"ns-button__control\"\n [attr.type]=\"type()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-busy]=\"loading() || null\"\n [attr.role]=\"checkable() ? 'radio' : null\"\n [attr.aria-checked]=\"checkable() ? selected() === true : null\"\n [attr.aria-pressed]=\"\n checkable() ? null : selected() === undefined ? null : selected()\n \"\n [attr.tabindex]=\"active() ? null : -1\"\n [disabled]=\"disabled() || loading()\"\n >\n @if (loading()) {\n <span class=\"ns-button__spinner\" aria-hidden=\"true\"></span>\n } @else if (icon()) {\n <ns-icon\n class=\"ns-button__icon\"\n [name]=\"icon()\"\n [size]=\"effectiveIconSize()\"\n aria-hidden=\"true\"\n />\n }\n <ng-content />\n </button>\n `,\n styleUrl: './button.component.scss',\n host: {\n '[class.ns-button]': 'true',\n '[class.ns-button--block]': 'block()',\n '[class.ns-button--icon-only]': 'iconOnly()',\n '[class.ns-button--loading]': 'loading()',\n '[class.ns-button--selected]': 'selected() === true',\n '[class.ns-button--unselected]': 'selected() === false',\n '[attr.data-selected]': 'selected() === undefined ? null : selected()',\n '[class.ns-button--xs]': \"size() === 'xs'\",\n '[class.ns-button--sm]': \"size() === 'sm'\",\n '[class.ns-button--md]': \"size() === 'md'\",\n '[class.ns-button--lg]': \"size() === 'lg'\",\n '[class.ns-button--primary]': \"variant() === 'primary'\",\n '[class.ns-button--secondary]': \"variant() === 'secondary'\",\n '[class.ns-button--tertiary]': \"variant() === 'tertiary'\",\n '[class.ns-button--success]': \"variant() === 'success'\",\n '[class.ns-button--danger]': \"variant() === 'danger'\",\n '[class.ns-button--dark]': \"variant() === 'dark'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsButtonComponent {\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly variant = input<NsButtonVariant>('primary');\n readonly size = input<NsButtonSize>('md');\n readonly icon = input<string>('');\n readonly iconOnly = input(false, { transform: booleanAttribute });\n /**\n * Explicit `ns-icon` size override. Defaults to 14 for `size=\"xs\"` and 16\n * for every other size when left unset.\n */\n readonly iconSize = input<number | undefined, unknown>(undefined, {\n transform: numberOrUndefined\n });\n\n /** Resolved `ns-icon` size: `iconSize()` when set, else a per-size default. */\n readonly effectiveIconSize = computed(\n () => this.iconSize() ?? (this.size() === 'xs' ? 14 : 16)\n );\n readonly ariaLabel = input<string>('');\n readonly block = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly selected = input<boolean | undefined, unknown>(undefined, {\n transform: booleanOrUndefined\n });\n\n /**\n * Roving-tabindex participation, managed by a hosting `ns-button-group`.\n * `true` (the default) leaves the button's native tabbing behavior alone;\n * a group sets it to `false` on every button except the current roving\n * stop.\n */\n readonly active = signal(true);\n\n /**\n * Radio semantics, managed by a hosting `ns-button-group` in\n * `selectionMode=\"single\"`. Swaps `aria-pressed` for `role=\"radio\"` +\n * `aria-checked`.\n */\n readonly checkable = signal(false);\n\n private readonly control =\n viewChild.required<ElementRef<HTMLButtonElement>>('control');\n\n focus(): void {\n this.control().nativeElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostListener,\n contentChildren,\n effect,\n input\n} from '@angular/core';\nimport { NsButtonComponent } from '../button/button.component';\nimport { NsOrientation } from '../../types';\nimport { getNsNextNavigableIndex, NsNavigationKey } from '../a11y';\n\nexport type NsButtonGroupSelectionMode = 'single' | 'multiple';\n\nconst NAVIGATION_KEYS: readonly string[] = [\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End'\n];\n\n@Component({\n selector: 'ns-button-group',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './button-group.component.scss',\n host: {\n '[attr.role]': \"selectionMode() === 'single' ? 'radiogroup' : 'group'\",\n '[attr.aria-label]': 'ariaLabel()',\n '[class.ns-button-group]': 'true',\n '[class.ns-button-group--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ns-button-group--vertical]': \"orientation() === 'vertical'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n/**\n * Segmented geometry is applied when direct `ns-button` children are projected\n * into the group. Wrapping a button is not part of this contract.\n *\n * Selection itself stays consumer-controlled through each `ns-button`'s own\n * `[selected]` input; the group only reflects it in ARIA (`aria-checked` for\n * `selectionMode=\"single\"`, the default `aria-pressed` for `\"multiple\"`) and\n * drives a roving tabindex so only one button sits in the tab order.\n */\nexport class NsButtonGroupComponent {\n readonly ariaLabel = input<string>('Actions');\n readonly orientation = input<NsOrientation>('horizontal');\n readonly selectionMode = input<NsButtonGroupSelectionMode>('multiple');\n readonly buttons = contentChildren(NsButtonComponent);\n\n private activeIndex = 0;\n\n constructor() {\n effect(() => this.syncState());\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n const buttons = this.buttons();\n if (!buttons.length || !NAVIGATION_KEYS.includes(event.key)) {\n return;\n }\n const next = getNsNextNavigableIndex(\n buttons.map((button) => ({ key: 0, disabled: button.disabled() })),\n this.activeIndex,\n event.key as NsNavigationKey,\n this.orientation()\n );\n if (next >= 0 && next !== this.activeIndex) {\n event.preventDefault();\n this.focus(next);\n }\n }\n\n private focus(index: number): void {\n this.activeIndex = index;\n this.syncState();\n this.buttons()[index]?.focus();\n }\n\n private syncState(): void {\n const buttons = this.buttons();\n if (!buttons.length) {\n return;\n }\n if (\n this.activeIndex >= buttons.length ||\n buttons[this.activeIndex].disabled()\n ) {\n const firstEnabled = buttons.findIndex((button) => !button.disabled());\n this.activeIndex = firstEnabled >= 0 ? firstEnabled : 0;\n }\n const checkable = this.selectionMode() === 'single';\n buttons.forEach((button, index) => {\n button.active.set(index === this.activeIndex);\n button.checkable.set(checkable);\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsVariant } from '../../types';\n\n@Component({\n selector: 'ns-card',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: {\n '[attr.aria-label]': 'ariaLabel() || null',\n '[class.ns-card]': 'true',\n '[class.ns-card--solid]': \"variant() === 'solid'\",\n '[class.ns-card--soft]': \"variant() === 'soft'\",\n '[class.ns-card--outline]': \"variant() === 'outline'\",\n '[class.ns-card--ghost]': \"variant() === 'ghost'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardComponent {\n readonly ariaLabel = input<string>('');\n readonly variant = input<NsVariant>('solid');\n}\n\n@Component({\n selector: 'ns-card-header',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: { '[class.ns-card__header]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardHeaderComponent {}\n\n@Component({\n selector: 'ns-card-body',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: { '[class.ns-card__body]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardBodyComponent {}\n\n@Component({\n selector: 'ns-card-footer',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './card.component.scss',\n host: { '[class.ns-card__footer]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCardFooterComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\nimport { NsColor, NsVariant } from '../../types';\n\n/**\n * Chip-local color union. `info` and `selected` are compact filter/status\n * treatments specific to `ns-chip` and are intentionally not added to the\n * shared `NsColor` union, which many other components reuse.\n */\nexport type NsChipColor = NsColor | 'info' | 'selected';\n\n/**\n * Chip-local variant union. `tint` is a filter/selection treatment (filled\n * background, 1px border and text in the same status color) specific to\n * `ns-chip` and intentionally not added to the shared `NsVariant` union.\n */\nexport type NsChipVariant = Exclude<NsVariant, 'ghost'> | 'tint';\n\nexport type NsChipSize = 'md' | 'pill' | 'choice';\n\n@Component({\n selector: 'ns-chip',\n standalone: true,\n template: `\n <span class=\"ns-chip__label\"><ng-content /></span>\n @if (dismissible()) {\n <button\n class=\"ns-chip__dismiss\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"dismissLabel()\"\n (click)=\"removed.emit()\"\n >\n ×\n </button>\n }\n `,\n styleUrl: './chip.component.scss',\n host: {\n '[class.ns-chip]': 'true',\n '[class.ns-chip--disabled]': 'disabled()',\n '[class.ns-chip--solid]': \"variant() === 'solid'\",\n '[class.ns-chip--soft]': \"variant() === 'soft'\",\n '[class.ns-chip--outline]': \"variant() === 'outline'\",\n '[class.ns-chip--tint]': \"variant() === 'tint'\",\n '[class.ns-chip--neutral]': \"color() === 'neutral'\",\n '[class.ns-chip--primary]': \"color() === 'primary'\",\n '[class.ns-chip--success]': \"color() === 'success'\",\n '[class.ns-chip--warning]': \"color() === 'warning'\",\n '[class.ns-chip--danger]': \"color() === 'danger'\",\n '[class.ns-chip--info]': \"color() === 'info'\",\n '[class.ns-chip--selected]': \"color() === 'selected'\",\n '[class.ns-chip--md]': \"size() === 'md'\",\n '[class.ns-chip--pill]': \"size() === 'pill'\",\n '[class.ns-chip--choice]': \"size() === 'choice'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsChipComponent {\n readonly color = input<NsChipColor>('neutral');\n readonly variant = input<NsChipVariant>('soft');\n readonly size = input<NsChipSize>('md');\n readonly dismissible = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly dismissLabel = input<string>('Remove');\n readonly removed = output<void>();\n}\n","import { computed, signal } from '@angular/core';\nimport { NsCollectionItem, NsKey, NsSelectionMode } from '../../types';\n\nexport class NsCollectionController<T = unknown, TKey extends NsKey = NsKey> {\n private readonly itemsState = signal<readonly NsCollectionItem<T, TKey>[]>(\n []\n );\n private readonly selectedKeysState = signal<ReadonlySet<TKey>>(\n new Set<TKey>()\n );\n\n readonly items = this.itemsState.asReadonly();\n readonly selectedKeys = this.selectedKeysState.asReadonly();\n readonly selectedItems = computed(() =>\n this.itemsState().filter((item) => this.selectedKeysState().has(item.key))\n );\n\n constructor(private readonly selectionMode: NsSelectionMode = 'single') {}\n\n setItems(items: readonly NsCollectionItem<T, TKey>[]): void {\n this.itemsState.set(items);\n const knownKeys = new Set(items.map((item) => item.key));\n this.selectedKeysState.update(\n (keys) => new Set([...keys].filter((key) => knownKeys.has(key)))\n );\n }\n\n isSelected(key: TKey): boolean {\n return this.selectedKeysState().has(key);\n }\n\n select(key: TKey): void {\n const item = this.itemsState().find((candidate) => candidate.key === key);\n if (!item || item.disabled || this.selectionMode === 'none') {\n return;\n }\n if (this.selectionMode === 'single') {\n this.selectedKeysState.set(new Set([key]));\n return;\n }\n this.selectedKeysState.update((keys) => new Set(keys).add(key));\n }\n\n toggle(key: TKey): void {\n if (this.selectionMode !== 'multiple') {\n this.select(key);\n return;\n }\n const item = this.itemsState().find((candidate) => candidate.key === key);\n if (!item || item.disabled) {\n return;\n }\n this.selectedKeysState.update((keys) => {\n const next = new Set(keys);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n return next;\n });\n }\n\n clear(): void {\n this.selectedKeysState.set(new Set<TKey>());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type NsEmptyStateSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'ns-empty-state',\n standalone: true,\n template: `\n <span class=\"ns-empty-state__icon\"\n ><ng-content select=\"[empty-state-icon]\"\n /></span>\n <div class=\"ns-empty-state__text\">\n <p class=\"ns-empty-state__title\">{{ title() }}</p>\n @if (description()) {\n <p class=\"ns-empty-state__description\">{{ description() }}</p>\n }\n </div>\n <div class=\"ns-empty-state__actions\">\n <ng-content select=\"[empty-state-actions]\" />\n </div>\n `,\n styleUrl: './empty-state.component.scss',\n host: {\n '[class.ns-empty-state]': 'true',\n '[class.ns-empty-state--sm]': \"size() === 'sm'\",\n '[class.ns-empty-state--md]': \"size() === 'md'\",\n '[class.ns-empty-state--lg]': \"size() === 'lg'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsEmptyStateComponent {\n readonly title = input.required<string>();\n readonly description = input<string | undefined>(undefined);\n readonly size = input<NsEmptyStateSize>('md');\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, inject, signal } from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport {\n focusNsFirst,\n focusNsLast,\n getNsFocusableElements,\n isNsEventInside\n} from '../a11y';\n\nexport type NsOverlayCloseReason = 'dismiss' | 'escape' | 'programmatic';\n\nexport interface NsOverlayConfig {\n origin?: HTMLElement;\n matchOriginWidth?: boolean;\n placement?: NsPlacement;\n offset?: number;\n closeOnEscape?: boolean;\n closeOnOutsidePointer?: boolean;\n trapFocus?: boolean;\n restoreFocus?: boolean;\n inert?: boolean;\n lockScroll?: boolean;\n}\n\nexport interface NsOverlayPosition {\n top: number;\n left: number;\n placement: NsPlacement;\n}\n\ninterface NsResolvedOverlayConfig {\n origin?: HTMLElement;\n matchOriginWidth: boolean;\n placement: NsPlacement;\n offset: number;\n closeOnEscape: boolean;\n closeOnOutsidePointer: boolean;\n trapFocus: boolean;\n restoreFocus: boolean;\n inert: boolean;\n lockScroll: boolean;\n}\n\ninterface NsAttachedContent {\n element: HTMLElement;\n parent: Node | null;\n nextSibling: Node | null;\n}\n\ninterface NsInertState {\n inert: boolean;\n ariaHidden: string | null;\n}\n\nconst VIEWPORT_GUTTER = 8;\n\nexport class NsOverlayRef {\n private readonly closeListeners = new Set<\n (reason: NsOverlayCloseReason) => void\n >();\n private attachedContent?: NsAttachedContent;\n private closedState = false;\n private readonly priorFocusedElement: HTMLElement | null;\n\n readonly closed = signal<NsOverlayCloseReason | undefined>(undefined);\n\n constructor(\n readonly portal: HTMLElement,\n readonly config: NsResolvedOverlayConfig,\n private readonly document: Document,\n private readonly closeOverlay: (\n ref: NsOverlayRef,\n reason: NsOverlayCloseReason\n ) => void\n ) {\n const activeElement = document.activeElement;\n this.priorFocusedElement =\n activeElement instanceof HTMLElement ? activeElement : null;\n }\n\n attach(element: HTMLElement): void {\n if (this.closedState) {\n throw new Error('Cannot attach content to a closed overlay.');\n }\n this.detachContent();\n this.attachedContent = {\n element,\n parent: element.parentNode,\n nextSibling: element.nextSibling\n };\n this.portal.appendChild(element);\n this.updatePosition();\n }\n\n updatePosition(): void {\n if (this.closedState || !this.config.origin) {\n return;\n }\n const view = this.document.defaultView;\n if (!view) {\n return;\n }\n const origin = this.config.origin.getBoundingClientRect();\n if (this.config.matchOriginWidth) {\n this.portal.style.width = `${origin.width}px`;\n }\n const position = getNsOverlayPosition(\n origin,\n this.portal.getBoundingClientRect(),\n this.config.placement,\n this.config.offset,\n view.innerWidth,\n view.innerHeight\n );\n this.portal.style.top = `${position.top}px`;\n this.portal.style.left = `${position.left}px`;\n this.portal.dataset['nsPlacement'] = position.placement;\n }\n\n focusInitial(): void {\n if (\n !this.config.trapFocus ||\n this.closedState ||\n this.portal.inert ||\n this.portal.getAttribute('aria-hidden') === 'true'\n ) {\n return;\n }\n queueMicrotask(() => {\n if (!this.closedState) {\n focusNsFirst(this.portal) || this.portal.focus();\n }\n });\n }\n\n close(reason: NsOverlayCloseReason = 'programmatic'): void {\n this.closeOverlay(this, reason);\n }\n\n onClose(listener: (reason: NsOverlayCloseReason) => void): () => void {\n this.closeListeners.add(listener);\n return () => this.closeListeners.delete(listener);\n }\n\n isClosed(): boolean {\n return this.closedState;\n }\n\n finalizeClose(reason: NsOverlayCloseReason): void {\n if (this.closedState) {\n return;\n }\n this.closedState = true;\n this.detachContent();\n this.portal.remove();\n this.closed.set(reason);\n for (const listener of this.closeListeners) {\n listener(reason);\n }\n this.closeListeners.clear();\n }\n\n restoreFocus(): void {\n if (this.config.restoreFocus && this.priorFocusedElement?.isConnected) {\n this.priorFocusedElement.focus();\n }\n }\n\n private detachContent(): void {\n const attachedContent = this.attachedContent;\n if (!attachedContent || !attachedContent.parent) {\n return;\n }\n if (attachedContent.nextSibling?.parentNode === attachedContent.parent) {\n attachedContent.parent.insertBefore(\n attachedContent.element,\n attachedContent.nextSibling\n );\n } else {\n attachedContent.parent.appendChild(attachedContent.element);\n }\n this.attachedContent = undefined;\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NsOverlayService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly browser = isPlatformBrowser(this.platformId);\n private readonly overlays: NsOverlayRef[] = [];\n private readonly inertStates = new Map<HTMLElement, NsInertState>();\n private readonly overlayStackStates = new Map<HTMLElement, NsInertState>();\n private scrollOverflow?: string;\n private resizeObserver?: ResizeObserver;\n\n open(config: NsOverlayConfig = {}): NsOverlayRef {\n if (!this.browser) {\n throw new Error('NsOverlayService requires a browser document.');\n }\n const portal = this.document.createElement('div');\n portal.className = 'ns-overlay__portal';\n portal.tabIndex = -1;\n portal.inert = false;\n // The portal is a positioning/stacking box only — it never paints\n // chrome. Every projected root (menu, popover, modal, drawer, ...)\n // already draws its own background/border/radius/shadow, so doing it\n // here again duplicated the chrome and, since no `overlay` component\n // tokens existed, silently fell back to invalid values.\n portal.style.position = 'fixed';\n portal.style.zIndex = `calc(var(--ns-component-overlay-layer) + ${this.overlays.length})`;\n this.document.body.appendChild(portal);\n this.overlayStackStates.set(portal, {\n inert: portal.inert,\n ariaHidden: portal.getAttribute('aria-hidden')\n });\n\n const ref = new NsOverlayRef(\n portal,\n {\n origin: config.origin,\n matchOriginWidth: config.matchOriginWidth ?? false,\n placement: config.placement ?? 'bottom-start',\n offset: config.offset ?? VIEWPORT_GUTTER,\n closeOnEscape: config.closeOnEscape ?? true,\n closeOnOutsidePointer: config.closeOnOutsidePointer ?? true,\n trapFocus: config.trapFocus ?? false,\n restoreFocus: config.restoreFocus ?? true,\n inert: config.inert ?? false,\n lockScroll: config.lockScroll ?? false\n },\n this.document,\n (overlay, reason) => this.close(overlay, reason)\n );\n this.overlays.push(ref);\n this.syncDocumentState();\n ref.updatePosition();\n ref.focusInitial();\n return ref;\n }\n\n closeAll(): void {\n [...this.overlays].reverse().forEach((overlay) => overlay.close());\n }\n\n private close(ref: NsOverlayRef, reason: NsOverlayCloseReason): void {\n const index = this.overlays.indexOf(ref);\n if (index < 0) {\n return;\n }\n this.overlays.splice(index, 1);\n ref.finalizeClose(reason);\n this.overlayStackStates.delete(ref.portal);\n this.syncDocumentState();\n ref.restoreFocus();\n }\n\n private syncDocumentState(): void {\n const top = this.overlays.at(-1);\n if (!top) {\n this.removeDocumentListeners();\n this.restoreDocumentState();\n return;\n }\n this.addDocumentListeners();\n this.syncOverlayStackState(top);\n this.updatePositions();\n if (this.overlays.some((overlay) => overlay.config.lockScroll)) {\n this.lockScroll();\n } else {\n this.unlockScroll();\n }\n if (this.overlays.some((overlay) => overlay.config.inert)) {\n this.applyInert();\n } else {\n this.restoreInert();\n }\n }\n\n private addDocumentListeners(): void {\n const view = this.document.defaultView;\n this.document.addEventListener('keydown', this.handleKeydown);\n this.document.addEventListener('pointerdown', this.handlePointerDown, true);\n this.document.addEventListener('scroll', this.updatePositions, true);\n view?.addEventListener('resize', this.updatePositions);\n if (!this.resizeObserver && view?.ResizeObserver) {\n this.resizeObserver = new view.ResizeObserver(this.updatePositions);\n }\n if (this.resizeObserver) {\n for (const overlay of this.overlays) {\n this.resizeObserver.observe(overlay.portal);\n if (overlay.config.origin) {\n this.resizeObserver.observe(overlay.config.origin);\n }\n }\n }\n }\n\n private removeDocumentListeners(): void {\n const view = this.document.defaultView;\n this.document.removeEventListener('keydown', this.handleKeydown);\n this.document.removeEventListener(\n 'pointerdown',\n this.handlePointerDown,\n true\n );\n this.document.removeEventListener('scroll', this.updatePositions, true);\n view?.removeEventListener('resize', this.updatePositions);\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n\n private readonly handleKeydown = (event: KeyboardEvent): void => {\n const top = this.overlays.at(-1);\n if (!top) {\n return;\n }\n if (event.key === 'Escape' && top.config.closeOnEscape) {\n event.preventDefault();\n top.close('escape');\n return;\n }\n if (event.key !== 'Tab' || !top.config.trapFocus) {\n return;\n }\n const focusable = getNsFocusableElements(top.portal);\n if (!focusable.length) {\n event.preventDefault();\n top.portal.focus();\n return;\n }\n const activeElement = this.document.activeElement;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (\n event.shiftKey &&\n (activeElement === first || !top.portal.contains(activeElement))\n ) {\n event.preventDefault();\n focusNsLast(top.portal);\n } else if (!event.shiftKey && activeElement === last) {\n event.preventDefault();\n focusNsFirst(top.portal);\n }\n };\n\n private readonly handlePointerDown = (event: PointerEvent): void => {\n const top = this.overlays.at(-1);\n if (\n !top ||\n !top.config.closeOnOutsidePointer ||\n isNsEventInside(event, top.portal, top.config.origin)\n ) {\n return;\n }\n top.close('dismiss');\n };\n\n private readonly updatePositions = (): void => {\n for (const overlay of this.overlays) {\n overlay.updatePosition();\n }\n };\n\n private lockScroll(): void {\n if (this.scrollOverflow !== undefined) {\n return;\n }\n this.scrollOverflow = this.document.body.style.overflow;\n this.document.body.style.overflow = 'hidden';\n }\n\n private unlockScroll(): void {\n if (this.scrollOverflow === undefined) {\n return;\n }\n this.document.body.style.overflow = this.scrollOverflow;\n this.scrollOverflow = undefined;\n }\n\n private applyInert(): void {\n const children = Array.from(this.document.body.children).filter(\n (child): child is HTMLElement => child instanceof HTMLElement\n );\n for (const child of children) {\n if (child.classList.contains('ns-overlay__portal')) {\n continue;\n }\n if (!this.inertStates.has(child)) {\n this.inertStates.set(child, {\n inert: child.inert,\n ariaHidden: child.getAttribute('aria-hidden')\n });\n }\n child.inert = true;\n child.setAttribute('aria-hidden', 'true');\n }\n }\n\n private syncOverlayStackState(top: NsOverlayRef): void {\n for (const overlay of this.overlays) {\n const portal = overlay.portal;\n const state = this.overlayStackStates.get(portal);\n if (!state) {\n continue;\n }\n if (overlay === top) {\n portal.inert = state.inert;\n if (state.ariaHidden === null) {\n portal.removeAttribute('aria-hidden');\n } else {\n portal.setAttribute('aria-hidden', state.ariaHidden);\n }\n } else {\n portal.inert = true;\n portal.setAttribute('aria-hidden', 'true');\n }\n }\n }\n\n private restoreInert(): void {\n for (const [element, state] of this.inertStates) {\n element.inert = state.inert;\n if (state.ariaHidden === null) {\n element.removeAttribute('aria-hidden');\n } else {\n element.setAttribute('aria-hidden', state.ariaHidden);\n }\n }\n this.inertStates.clear();\n }\n\n private restoreDocumentState(): void {\n this.unlockScroll();\n this.restoreInert();\n }\n}\n\nexport function getNsOverlayPosition(\n origin: DOMRect,\n overlay: DOMRect,\n placement: NsPlacement,\n offset: number,\n viewportWidth: number,\n viewportHeight: number\n): NsOverlayPosition {\n const candidate = getCandidatePosition(origin, overlay, placement, offset);\n const flippedPlacement = getFlippedPlacement(placement);\n const flippedCandidate = getCandidatePosition(\n origin,\n overlay,\n flippedPlacement,\n offset\n );\n const selected = hasPrimaryAxisOverflow(\n candidate,\n placement,\n overlay,\n viewportWidth,\n viewportHeight\n )\n ? flippedCandidate\n : candidate;\n return {\n top: clamp(\n selected.top,\n VIEWPORT_GUTTER,\n viewportHeight - overlay.height - VIEWPORT_GUTTER\n ),\n left: clamp(\n selected.left,\n VIEWPORT_GUTTER,\n viewportWidth - overlay.width - VIEWPORT_GUTTER\n ),\n placement: selected === flippedCandidate ? flippedPlacement : placement\n };\n}\n\nfunction getCandidatePosition(\n origin: DOMRect,\n overlay: DOMRect,\n placement: NsPlacement,\n offset: number\n): NsOverlayPosition {\n const [side, alignment] = placement.split('-') as [\n 'top' | 'right' | 'bottom' | 'left',\n 'start' | 'end' | undefined\n ];\n let top = origin.bottom + offset;\n let left = origin.left;\n\n if (side === 'top') {\n top = origin.top - overlay.height - offset;\n } else if (side === 'right') {\n top = origin.top;\n left = origin.right + offset;\n } else if (side === 'left') {\n top = origin.top;\n left = origin.left - overlay.width - offset;\n }\n if (side === 'top' || side === 'bottom') {\n if (alignment === 'end') {\n left = origin.right - overlay.width;\n } else if (!alignment) {\n left = origin.left + (origin.width - overlay.width) / 2;\n }\n } else if (alignment === 'end') {\n top = origin.bottom - overlay.height;\n } else if (!alignment) {\n top = origin.top + (origin.height - overlay.height) / 2;\n }\n return { top, left, placement };\n}\n\nfunction getFlippedPlacement(placement: NsPlacement): NsPlacement {\n const [side, alignment] = placement.split('-') as [\n string,\n string | undefined\n ];\n const opposite: Record<string, string> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right'\n };\n return `${opposite[side]}${alignment ? `-${alignment}` : ''}` as NsPlacement;\n}\n\nfunction hasPrimaryAxisOverflow(\n position: NsOverlayPosition,\n placement: NsPlacement,\n overlay: DOMRect,\n viewportWidth: number,\n viewportHeight: number\n): boolean {\n return placement.startsWith('top') || placement.startsWith('bottom')\n ? position.top < VIEWPORT_GUTTER ||\n position.top + overlay.height > viewportHeight - VIEWPORT_GUTTER\n : position.left < VIEWPORT_GUTTER ||\n position.left + overlay.width > viewportWidth - VIEWPORT_GUTTER;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.max(min, max) < min ? min : Math.min(value, max));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n OnDestroy,\n TemplateRef,\n booleanAttribute,\n effect,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal\n} from '@angular/core';\nimport {\n NsAriaIdService,\n getNsNextNavigableIndex,\n NsNavigationKey\n} from '../a11y';\nimport { NsEmptyStateComponent } from '../empty-state';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsCommandGroup, NsCommandItem } from './models/command.model';\n\nconst NAVIGATION_KEYS: readonly string[] = [\n 'ArrowDown',\n 'ArrowUp',\n 'Home',\n 'End'\n];\n\n/**\n * Centered command palette (⌘K-style) built on `NsOverlayService` for its\n * focus trap, escape dismissal, scroll lock and inert background — the same\n * mechanism `ns-menu` and `ns-popover` use, minus anchor-relative placement\n * since this overlay is always centered in the viewport. It has no\n * dedicated open/close service: like `ns-menu` and `ns-popover`, it exposes\n * an `open` model that the host application binds to (for example from a\n * global keyboard shortcut), so a single declared instance can be toggled\n * from anywhere without an extra imperative API to keep in sync.\n *\n * `query` is a debounced model: the input reflects every keystroke\n * immediately, but `query` (and therefore `queryChange`) only updates after\n * `debounceMs` of inactivity, so consumers filtering `groups` server-side\n * are not flooded on every keystroke.\n *\n * `NsCommandItem.icon` is a plain string key, not markup — pair it with\n * `itemIconTemplate` (an `<ng-template let-item>`, rendered through\n * `ngTemplateOutlet` with `$implicit` bound to the item) to project an icon\n * component per item. Falls back to the `avatarText` initials badge, then to\n * a reserved-width placeholder so labels stay aligned when neither is set.\n */\n@Component({\n selector: 'ns-command-palette',\n standalone: true,\n imports: [NsEmptyStateComponent, NgTemplateOutlet],\n template: `\n <div class=\"ns-command-palette__backdrop\" (click)=\"close()\"></div>\n <div\n class=\"ns-command-palette__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <div class=\"ns-command-palette__search\">\n <span class=\"ns-command-palette__search-icon\" aria-hidden=\"true\"\n ><ng-content select=\"[command-palette-icon]\"\n /></span>\n <input\n #searchInput\n class=\"ns-command-palette__input\"\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeDomId() || null\"\n [placeholder]=\"placeholder()\"\n [value]=\"draft()\"\n (input)=\"onQueryInput($event)\"\n (keydown)=\"onKeydown($event)\"\n />\n </div>\n <div class=\"ns-command-palette__body\">\n @if (loading()) {\n <p class=\"ns-command-palette__loading\">Buscando…</p>\n } @else if (!flatItems().length) {\n <ns-empty-state\n size=\"sm\"\n [title]=\"emptyTitle()\"\n [description]=\"emptyDescription()\"\n />\n } @else {\n <div\n class=\"ns-command-palette__list\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @for (group of groups(); track group.id) {\n @if (group.items.length) {\n <div class=\"ns-command-palette__group\">\n <p class=\"ns-command-palette__group-label\">\n {{ group.label }}\n </p>\n @for (item of group.items; track item.id) {\n <div\n [id]=\"itemDomId(item)\"\n class=\"ns-command-palette__item\"\n role=\"option\"\n [attr.aria-selected]=\"item.id === activeId()\"\n [attr.aria-disabled]=\"item.disabled || null\"\n [class.ns-command-palette__item--active]=\"\n item.id === activeId()\n \"\n [class.ns-command-palette__item--disabled]=\"item.disabled\"\n (click)=\"activateItem(item)\"\n (mouseenter)=\"setActive(item)\"\n >\n @if (itemIconTemplate(); as iconTemplate) {\n <span class=\"ns-command-palette__item-icon\">\n <ng-container\n [ngTemplateOutlet]=\"iconTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n />\n </span>\n } @else if (item.avatarText) {\n <span class=\"ns-command-palette__item-avatar\">{{\n item.avatarText\n }}</span>\n } @else {\n <span\n class=\"ns-command-palette__item-icon-placeholder\"\n aria-hidden=\"true\"\n ></span>\n }\n <span class=\"ns-command-palette__item-label\">{{\n item.label\n }}</span>\n @if (item.meta) {\n <span class=\"ns-command-palette__item-meta\">{{\n item.meta\n }}</span>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n </div>\n <div class=\"ns-command-palette__footer\">\n <ng-content select=\"[command-palette-footer]\" />\n </div>\n </div>\n `,\n styleUrl: './command-palette.component.scss',\n host: {\n '[class.ns-command-palette]': 'true',\n '[attr.data-state]': \"open() ? 'open' : 'closed'\",\n '[attr.aria-hidden]': '!open()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsCommandPaletteComponent implements AfterViewInit, OnDestroy {\n readonly open = model(false);\n readonly query = model('');\n readonly placeholder = input<string>('Buscar…');\n readonly debounceMs = input(200, { transform: numberAttribute });\n readonly groups = input<readonly NsCommandGroup[]>([]);\n readonly itemIconTemplate = input<\n TemplateRef<{ $implicit: NsCommandItem }> | undefined\n >(undefined);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyTitle = input<string>('Sin resultados');\n readonly emptyDescription = input<string | undefined>(undefined);\n readonly ariaLabel = input<string>('Paleta de comandos');\n readonly activated = output<NsCommandItem>();\n readonly closed = output<NsOverlayCloseReason>();\n\n protected readonly draft = signal('');\n protected readonly activeId = signal<string | null>(null);\n protected readonly listboxId = inject(NsAriaIdService).create(\n 'ns-command-palette-listbox'\n );\n private readonly idPrefix = inject(NsAriaIdService).create(\n 'ns-command-palette-item'\n );\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n private debounceTimer?: ReturnType<typeof setTimeout>;\n\n constructor() {\n effect(() => {\n const open = this.open();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => {\n const value = this.query();\n if (!this.debounceTimer) {\n this.draft.set(value);\n }\n });\n effect(() => this.syncActiveItem());\n this.destroyRef.onDestroy(() => clearTimeout(this.debounceTimer));\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.open()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n close(): void {\n this.open.set(false);\n }\n\n protected flatItems(): NsCommandItem[] {\n return this.groups().flatMap((group) => [...group.items]);\n }\n\n protected itemDomId(item: NsCommandItem): string {\n return `${this.idPrefix}-${item.id}`;\n }\n\n protected activeDomId(): string | undefined {\n const id = this.activeId();\n if (!id) {\n return undefined;\n }\n const item = this.flatItems().find((candidate) => candidate.id === id);\n return item ? this.itemDomId(item) : undefined;\n }\n\n protected setActive(item: NsCommandItem): void {\n if (!item.disabled) {\n this.activeId.set(item.id);\n }\n }\n\n protected activateItem(item: NsCommandItem): void {\n if (item.disabled) {\n return;\n }\n this.activated.emit(item);\n this.close();\n }\n\n protected onQueryInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.draft.set(value);\n clearTimeout(this.debounceTimer);\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = undefined;\n this.query.set(value);\n }, this.debounceMs());\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const items = this.flatItems();\n if (event.key === 'Enter') {\n const active = items.find((item) => item.id === this.activeId());\n if (active) {\n event.preventDefault();\n this.activateItem(active);\n }\n return;\n }\n if (!items.length || !NAVIGATION_KEYS.includes(event.key)) {\n return;\n }\n const navigable = items.map((item) => ({\n key: item.id,\n disabled: item.disabled\n }));\n const currentIndex = items.findIndex((item) => item.id === this.activeId());\n const nextIndex = getNsNextNavigableIndex(\n navigable,\n currentIndex,\n event.key as NsNavigationKey,\n 'vertical'\n );\n if (nextIndex >= 0 && nextIndex !== currentIndex) {\n event.preventDefault();\n this.activeId.set(items[nextIndex].id);\n this.scrollActiveIntoView(nextIndex);\n }\n }\n\n private scrollActiveIntoView(index: number): void {\n const elements = this.element.nativeElement.querySelectorAll(\n '.ns-command-palette__item'\n ) as NodeListOf<HTMLElement>;\n elements[index]?.scrollIntoView?.({ block: 'nearest' });\n }\n\n private syncActiveItem(): void {\n const items = this.flatItems();\n const current = this.activeId();\n if (!items.length) {\n if (current !== null) {\n this.activeId.set(null);\n }\n return;\n }\n const stillValid = items.some(\n (item) => item.id === current && !item.disabled\n );\n if (!stillValid) {\n const firstEnabled = items.find((item) => !item.disabled);\n this.activeId.set(firstEnabled ? firstEnabled.id : null);\n }\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n closeOnEscape: true,\n closeOnOutsidePointer: false,\n trapFocus: true,\n restoreFocus: true,\n inert: true,\n lockScroll: true\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.open()) {\n this.open.set(false);\n }\n this.closed.emit(reason);\n });\n }\n}\n","import { Directive, computed, inject, input, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { NsAriaIdService, NsFieldContext } from '../../a11y';\n\n@Directive()\nexport abstract class NsValueAccessor<\n T = string\n> implements ControlValueAccessor {\n private readonly ariaIds = inject(NsAriaIdService);\n private readonly field = inject(NsFieldContext, {\n optional: true,\n skipSelf: true\n });\n\n public readonly type = input('text');\n public readonly placeholder = input('');\n public readonly label = input<string | undefined>(undefined);\n public readonly description = input<string | undefined>(undefined);\n public readonly errorMessage = input<string | undefined>(undefined);\n public readonly required = input(false);\n public readonly invalid = input(false);\n public readonly disabled = model(false);\n public readonly readonly = input(false);\n public readonly name = input<string | undefined>(undefined);\n public readonly ariaLabel = input<string | undefined>(undefined);\n public readonly ariaDescribedBy = input<string | undefined>(undefined);\n public readonly size = input<'sm' | 'md' | 'lg'>('md');\n public readonly color = input<\n 'neutral' | 'primary' | 'success' | 'warning' | 'danger'\n >('neutral');\n public readonly variant = input<'solid' | 'soft' | 'outline' | 'ghost'>(\n 'outline'\n );\n\n public readonly id = this.ariaIds.create('ns-control');\n public readonly descriptionId = `${this.id}-description`;\n public readonly errorId = `${this.id}-error`;\n public readonly controlId = computed(\n () => this.field?.getControlId() || this.id\n );\n public readonly describedBy = computed(() => {\n const ids = [\n this.ariaDescribedBy(),\n this.field?.getDescribedBy(),\n this.description() ? this.descriptionId : undefined,\n this.invalid() && this.errorMessage() ? this.errorId : undefined\n ].filter((id): id is string => Boolean(id));\n return ids.length ? ids.join(' ') : undefined;\n });\n\n public readonly value = model<T>(undefined as T);\n\n public setValue(value: T): void {\n if (!Object.is(this.value(), value)) {\n this.value.set(value);\n this.onChange(value);\n }\n }\n\n public onTouched = () => {};\n\n public onChange: (value: T) => void = () => {};\n\n writeValue(value: T): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-checkbox',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<label class=\"ns-checkbox__label\" [for]=\"controlId()\"\n ><input\n class=\"ns-checkbox__input\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n type=\"checkbox\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n /><span>{{ label() }}</span>\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n @if (description()) {\n <p class=\"ns-checkbox__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-checkbox__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./checkbox.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsCheckboxComponent),\n multi: true\n }\n ],\n host: { '[class.ns-checkbox]': 'true' }\n})\nexport class NsCheckboxComponent extends NsValueAccessor<boolean> {}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n LOCALE_ID,\n computed,\n effect,\n inject,\n input,\n output\n} from '@angular/core';\nimport {\n DateFormatter,\n DateValue,\n DayOfWeek,\n endOfMonth,\n getDayOfWeek,\n getLocalTimeZone,\n isToday,\n startOfMonth,\n startOfWeek\n} from '@internationalized/date';\nimport { NsCollectionController } from '../../../collection';\nimport { NsDateRangeValue } from '../../../../types';\n\ntype CalendarDay = {\n readonly date: DateValue;\n readonly key: string;\n readonly outside: boolean;\n readonly disabled: boolean;\n readonly current: boolean;\n readonly selected: boolean;\n readonly inRange: boolean;\n readonly label: string;\n};\n\n@Component({\n selector: 'ns-date-picker-calendar',\n standalone: true,\n imports: [CommonModule],\n template: `\n <table\n class=\"ns-date-picker__month\"\n role=\"grid\"\n [attr.aria-label]=\"monthLabel()\"\n (keydown)=\"onKeydown($event)\"\n >\n <thead>\n <tr role=\"row\">\n @for (weekday of weekdays(); track weekday.label) {\n <th\n class=\"ns-date-picker__weekday\"\n scope=\"col\"\n [attr.aria-label]=\"weekday.fullLabel\"\n >\n {{ weekday.label }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (week of days(); track week[0]?.key) {\n <tr role=\"row\">\n @for (day of week; track day.key) {\n @if (day.outside) {\n <td class=\"ns-date-picker__cell\" aria-hidden=\"true\"></td>\n } @else {\n <td\n class=\"ns-date-picker__cell\"\n role=\"gridcell\"\n [class.ns-date-picker__cell--selected]=\"day.selected\"\n [class.ns-date-picker__cell--range]=\"day.inRange\"\n [class.ns-date-picker__cell--disabled]=\"day.disabled\"\n [class.ns-date-picker__cell--current]=\"day.current\"\n [attr.data-state]=\"\n day.disabled\n ? 'unavailable'\n : day.selected\n ? 'selected'\n : day.inRange\n ? 'range'\n : 'available'\n \"\n [attr.aria-selected]=\"day.selected\"\n [attr.aria-current]=\"day.current ? 'date' : null\"\n [attr.aria-disabled]=\"day.disabled\"\n >\n <button\n class=\"ns-date-picker__day\"\n type=\"button\"\n [attr.data-date]=\"day.key\"\n [attr.aria-label]=\"day.label\"\n [attr.aria-selected]=\"day.selected\"\n [attr.aria-current]=\"day.current ? 'date' : null\"\n [attr.aria-disabled]=\"day.disabled\"\n [attr.tabindex]=\"isFocused(day.date) ? 0 : -1\"\n [disabled]=\"day.disabled\"\n (focus)=\"dateFocused.emit(day.date)\"\n (click)=\"select(day)\"\n >\n {{ day.date.day }}\n </button>\n </td>\n }\n }\n </tr>\n }\n </tbody>\n </table>\n `,\n styleUrl: './date-picker-calendar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDatePickerCalendarComponent {\n readonly month = input.required<DateValue>();\n readonly selected = input<DateValue | null>(null);\n readonly range = input<NsDateRangeValue<DateValue> | null>(null);\n readonly focused = input<DateValue | null>(null);\n readonly minDate = input<DateValue | null>(null);\n readonly maxDate = input<DateValue | null>(null);\n readonly unavailableDates = input<readonly DateValue[]>([]);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n readonly dateSelected = output<DateValue>();\n readonly dateFocused = output<DateValue>();\n\n private readonly locale = inject(LOCALE_ID);\n private readonly collection = new NsCollectionController<DateValue, string>(\n 'single'\n );\n private readonly weekdayFormatter = new DateFormatter(this.locale, {\n weekday: 'short',\n timeZone: 'UTC'\n });\n private readonly weekdayLongFormatter = new DateFormatter(this.locale, {\n weekday: 'long',\n timeZone: 'UTC'\n });\n private readonly dayFormatter = new DateFormatter(this.locale, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private readonly monthFormatter = new DateFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n\n readonly monthLabel = computed(() =>\n this.format(this.monthFormatter, this.month())\n );\n readonly weekdays = computed(() => {\n const start = startOfWeek(this.month(), this.locale, this.firstDayOfWeek());\n return Array.from({ length: 7 }, (_, index) => {\n const date = start.add({ days: index });\n return {\n label: this.format(this.weekdayFormatter, date),\n fullLabel: this.format(this.weekdayLongFormatter, date)\n };\n });\n });\n readonly days = computed(() => this.buildDays());\n\n constructor() {\n effect(() => {\n this.collection.setItems(\n this.days()\n .flat()\n .map((day) => ({\n key: day.key,\n value: day.date,\n label: day.label,\n disabled: day.disabled\n }))\n );\n const selected = this.selected();\n if (selected) {\n this.collection.select(selected.toString());\n }\n });\n }\n\n onKeydown(event: KeyboardEvent): void {\n const focused =\n this.focused() || this.selected() || this.firstAvailableDay();\n if (!focused) {\n return;\n }\n const delta = this.keyDelta(event.key, focused);\n if (!delta) {\n return;\n }\n event.preventDefault();\n const next = focused.add(delta);\n if (event.key === 'PageUp' || event.key === 'PageDown') {\n this.dateFocused.emit(next);\n return;\n }\n this.dateFocused.emit(this.closestAvailable(next, delta.days || 1));\n }\n\n isFocused(date: DateValue): boolean {\n const focused = this.focused();\n return !!focused && focused.compare(date) === 0;\n }\n\n select(day: CalendarDay): void {\n if (!day.disabled) {\n this.collection.select(day.key);\n this.dateSelected.emit(day.date);\n }\n }\n\n private buildDays(): readonly CalendarDay[][] {\n const firstMonthDay = startOfMonth(this.month());\n const gridStart = startOfWeek(\n firstMonthDay,\n this.locale,\n this.firstDayOfWeek()\n );\n const leadingDays = getDayOfWeek(\n firstMonthDay,\n this.locale,\n this.firstDayOfWeek()\n );\n const trailingDays =\n 6 -\n getDayOfWeek(\n endOfMonth(firstMonthDay),\n this.locale,\n this.firstDayOfWeek()\n );\n const totalDays = leadingDays + this.daysInMonth() + trailingDays;\n const weeks = Array.from({ length: totalDays / 7 }, (_, week) =>\n Array.from({ length: 7 }, (_, day) =>\n this.toCalendarDay(gridStart.add({ days: week * 7 + day }))\n )\n );\n const firstBlankDay = gridStart.add({ days: totalDays });\n\n while (weeks.length < 6) {\n weeks.push(\n Array.from({ length: 7 }, (_, day) =>\n this.toCalendarDay(\n firstBlankDay.add({ days: weeks.length * 7 + day })\n )\n )\n );\n }\n\n return weeks;\n }\n\n private daysInMonth(): number {\n return this.month().add({ months: 1 }).subtract({ days: 1 }).day;\n }\n\n private toCalendarDay(date: DateValue): CalendarDay {\n const visibleMonth = this.month();\n const range = this.range();\n const selected = this.selected();\n const isStart = !!range?.start && range.start.compare(date) === 0;\n const isEnd = !!range?.end && range.end.compare(date) === 0;\n return {\n date,\n key: date.toString(),\n outside:\n date.month !== visibleMonth.month || date.year !== visibleMonth.year,\n disabled: !this.isAvailable(date),\n current: isToday(date, getLocalTimeZone()),\n selected:\n (!!selected && selected.compare(date) === 0) || isStart || isEnd,\n inRange:\n !!range?.start &&\n !!range.end &&\n date.compare(range.start) >= 0 &&\n date.compare(range.end) <= 0,\n label: this.format(this.dayFormatter, date)\n };\n }\n\n private isAvailable(date: DateValue): boolean {\n const month = this.month();\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n date.month === month.month &&\n date.year === month.year &&\n (!minDate || date.compare(minDate) >= 0) &&\n (!maxDate || date.compare(maxDate) <= 0) &&\n !this.unavailableDates().some(\n (unavailable) => unavailable.compare(date) === 0\n )\n );\n }\n\n private firstAvailableDay(): DateValue | null {\n return (\n this.days()\n .flat()\n .find((day) => !day.disabled)?.date || null\n );\n }\n\n private closestAvailable(date: DateValue, direction: number): DateValue {\n let candidate = date;\n for (let attempt = 0; attempt < 366; attempt += 1) {\n if (this.isAvailable(candidate)) {\n return candidate;\n }\n candidate = candidate.add({ days: direction });\n }\n return date;\n }\n\n private keyDelta(\n key: string,\n focused: DateValue\n ): { days?: number; months?: number } | null {\n switch (key) {\n case 'ArrowLeft':\n return { days: -1 };\n case 'ArrowRight':\n return { days: 1 };\n case 'ArrowUp':\n return { days: -7 };\n case 'ArrowDown':\n return { days: 7 };\n case 'Home':\n return {\n days: -getDayOfWeek(focused, this.locale, this.firstDayOfWeek())\n };\n case 'End':\n return {\n days: 6 - getDayOfWeek(focused, this.locale, this.firstDayOfWeek())\n };\n case 'PageUp':\n return { months: -1 };\n case 'PageDown':\n return { months: 1 };\n default:\n return null;\n }\n }\n\n private format(formatter: DateFormatter, date: DateValue): string {\n return formatter.format(date.toDate('UTC'));\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n LOCALE_ID,\n ViewChild,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DateFormatter,\n DateValue,\n DayOfWeek,\n getLocalTimeZone,\n today\n} from '@internationalized/date';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsOverlayRef, NsOverlayService } from '../../../overlay';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDatePickerCalendarComponent } from './date-picker-calendar.component';\n\ntype PickerView = 'calendar' | 'months' | 'years';\n\ntype PickerOptionState = {\n readonly current: boolean;\n readonly selected: boolean;\n readonly visible: boolean;\n readonly focused: boolean;\n};\n\n@Component({\n selector: 'ns-date-picker',\n standalone: true,\n imports: [NsIconsComponent, NsDatePickerCalendarComponent],\n template: `\n @if (label()) {\n <label class=\"ns-date-picker__label\" [attr.for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <button\n #trigger\n class=\"ns-date-picker__control\"\n type=\"button\"\n [attr.id]=\"controlId()\"\n [attr.name]=\"name() || null\"\n [attr.aria-label]=\"ariaLabel() || label() || placeholder()\"\n [attr.aria-describedby]=\"describedBy()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggle()\"\n (blur)=\"onTouched()\"\n >\n <ns-icon name=\"calendar-plus\" size=\"20\" aria-hidden=\"true\" />\n <span class=\"ns-date-picker__value\">{{ displayValue() }}</span>\n </button>\n\n <section\n #calendar\n class=\"ns-date-picker__menu\"\n [attr.id]=\"calendarId\"\n role=\"dialog\"\n [attr.aria-label]=\"calendarLabel\"\n [hidden]=\"!isOpen()\"\n >\n <header class=\"ns-date-picker__header\">\n <h2 class=\"ns-date-picker__title\">Seleccionar fecha</h2>\n <div class=\"ns-date-picker__selectors\">\n <button\n class=\"ns-date-picker__selector\"\n type=\"button\"\n aria-label=\"Seleccionar mes\"\n [attr.aria-expanded]=\"isPickerView('months')\"\n [attr.aria-controls]=\"calendarId + '-months'\"\n [class.ns-date-picker__selector--active]=\"isPickerView('months')\"\n (click)=\"openMonthPicker()\"\n >\n <span>{{ monthOnlyLabel() }}</span>\n <ns-icon name=\"chevron-down\" size=\"18\" aria-hidden=\"true\" />\n </button>\n <button\n class=\"ns-date-picker__selector\"\n type=\"button\"\n aria-label=\"Seleccionar año\"\n [attr.aria-expanded]=\"isPickerView('years')\"\n [attr.aria-controls]=\"calendarId + '-years'\"\n [class.ns-date-picker__selector--active]=\"isPickerView('years')\"\n (click)=\"openYearPicker()\"\n >\n <span>{{ visibleMonth().year }}</span>\n <ns-icon name=\"chevron-down\" size=\"18\" aria-hidden=\"true\" />\n </button>\n </div>\n </header>\n @if (isPickerView('calendar')) {\n <ns-date-picker-calendar\n [month]=\"visibleMonth()\"\n [selected]=\"value()\"\n [focused]=\"focusedDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [unavailableDates]=\"unavailableDates()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n (dateSelected)=\"select($event)\"\n (dateFocused)=\"focusDate($event)\"\n ></ns-date-picker-calendar>\n } @else if (isPickerView('months')) {\n <div\n class=\"ns-date-picker__month-grid\"\n [attr.id]=\"calendarId + '-months'\"\n aria-label=\"Meses\"\n >\n @for (month of monthOptions(); track month.value) {\n <button\n class=\"ns-date-picker__picker-option\"\n type=\"button\"\n [disabled]=\"month.disabled\"\n [attr.aria-current]=\"month.current ? 'true' : null\"\n [attr.aria-pressed]=\"month.selected ? 'true' : null\"\n [class.ns-date-picker__picker-option--current]=\"month.current\"\n [class.ns-date-picker__picker-option--selected]=\"month.selected\"\n [class.ns-date-picker__picker-option--visible]=\"month.visible\"\n (click)=\"selectMonth(month.value)\"\n >\n {{ month.label }}\n </button>\n }\n </div>\n } @else {\n <div class=\"ns-date-picker__years\" [attr.id]=\"calendarId + '-years'\">\n <div class=\"ns-date-picker__year-pagination\">\n <button\n class=\"ns-date-picker__year-navigation\"\n type=\"button\"\n aria-label=\"Página de años anterior\"\n [disabled]=\"!canGoToPreviousYearPage()\"\n (click)=\"moveYearPage(-1)\"\n >\n <ns-icon name=\"chevron-left\" size=\"18\" aria-hidden=\"true\" />\n </button>\n <span class=\"ns-date-picker__year-range\">{{\n yearPageLabel()\n }}</span>\n <button\n class=\"ns-date-picker__year-navigation\"\n type=\"button\"\n aria-label=\"Página de años siguiente\"\n [disabled]=\"!canGoToNextYearPage()\"\n (click)=\"moveYearPage(1)\"\n >\n <ns-icon name=\"chevron-right\" size=\"18\" aria-hidden=\"true\" />\n </button>\n </div>\n <div class=\"ns-date-picker__year-grid\" aria-label=\"Años\">\n @for (year of yearPageOptionStates(); track $index) {\n <button\n class=\"ns-date-picker__picker-option\"\n type=\"button\"\n [attr.aria-current]=\"year.current ? 'true' : null\"\n [attr.aria-pressed]=\"year.selected ? 'true' : null\"\n [class.ns-date-picker__picker-option--current]=\"year.current\"\n [class.ns-date-picker__picker-option--selected]=\"year.selected\"\n [class.ns-date-picker__picker-option--visible]=\"year.visible\"\n (click)=\"selectYear(year.value)\"\n >\n {{ year.value }}\n </button>\n }\n </div>\n </div>\n }\n <p class=\"ns-date-picker__announcement\" aria-live=\"polite\">\n {{ calendarAnnouncement() }}\n </p>\n </section>\n `,\n styleUrl: './date-picker.component.scss',\n host: {\n '[class.ns-date-picker]': 'true',\n '[class.ns-date-picker--open]': 'isOpen()',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NsDatePickerComponent,\n multi: true\n }\n ]\n})\nexport class NsDatePickerComponent extends NsValueAccessor<DateValue | null> {\n readonly minDate = input<DateValue | null>(null);\n readonly maxDate = input<DateValue | null>(null);\n readonly unavailableDates = input<readonly DateValue[]>([]);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n\n @ViewChild('calendar') private calendar?: ElementRef<HTMLElement>;\n @ViewChild('trigger') private trigger?: ElementRef<HTMLElement>;\n\n readonly calendarId = `${this.id}-calendar`;\n readonly calendarLabel = 'Date picker';\n readonly isOpen = signal(false);\n readonly focusedDate = signal<DateValue | null>(null);\n readonly visibleMonth = signal<DateValue>(today(getLocalTimeZone()));\n readonly yearAnchor = signal(today(getLocalTimeZone()).year);\n private readonly pickerView = signal<PickerView>('calendar');\n private readonly yearPageStart = signal(today(getLocalTimeZone()).year);\n\n private readonly overlay = inject(NsOverlayService);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly locale = inject(LOCALE_ID);\n private readonly monthFormatter = new DateFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private readonly monthOnlyFormatter = new DateFormatter(this.locale, {\n month: 'long',\n timeZone: 'UTC'\n });\n private overlayRef: NsOverlayRef | null = null;\n\n readonly displayValue = computed(() => {\n const value = this.value();\n if (!value) {\n return this.placeholder();\n }\n return new DateFormatter(this.locale, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n timeZone: 'UTC'\n }).format(value.toDate('UTC'));\n });\n readonly monthLabel = computed(() =>\n this.monthFormatter.format(this.visibleMonth().toDate('UTC'))\n );\n readonly monthOnlyLabel = computed(() =>\n this.monthOnlyFormatter.format(this.visibleMonth().toDate('UTC'))\n );\n readonly monthOptions = computed(() =>\n Array.from({ length: 12 }, (_, index) => {\n const value = index + 1;\n const month = this.visibleMonth().set({ month: value, day: 1 });\n return {\n value,\n label: this.monthOnlyFormatter.format(month.toDate('UTC')),\n disabled: !this.isMonthAvailable(month),\n ...this.monthOptionState(month)\n };\n })\n );\n readonly yearOptions = computed(() => {\n const minYear = this.minDate()?.year;\n const maxYear = this.maxDate()?.year;\n const visibleYear = this.visibleMonth().year;\n const selectedYear = this.value()?.year;\n const anchor = this.yearAnchor();\n let start = anchor - 100;\n let end = anchor + 100;\n const earliestRequired = Math.min(visibleYear, selectedYear ?? visibleYear);\n const latestRequired = Math.max(visibleYear, selectedYear ?? visibleYear);\n\n if (earliestRequired < start) {\n start = earliestRequired;\n end = start + 200;\n }\n if (latestRequired > end) {\n end = latestRequired;\n start = end - 200;\n }\n start = Math.max(start, minYear ?? start);\n end = Math.min(end, maxYear ?? end);\n return Array.from(\n { length: Math.max(0, end - start + 1) },\n (_, index) => start + index\n );\n });\n readonly yearPageOptions = computed(() => {\n const years = this.yearOptions();\n const start = this.yearPageStart();\n const index = Math.max(0, years.indexOf(start));\n return years.slice(index, index + 20);\n });\n readonly yearPageOptionStates = computed(() =>\n this.yearPageOptions().map((year) => ({\n value: year,\n ...this.yearOptionState(year)\n }))\n );\n readonly yearPageLabel = computed(() => {\n const years = this.yearPageOptions();\n if (!years.length) {\n return '';\n }\n return `${years[0]} - ${years[years.length - 1]}`;\n });\n readonly calendarAnnouncement = computed(() => {\n if (this.pickerView() === 'months') {\n return `Seleccionar mes de ${this.visibleMonth().year}`;\n }\n if (this.pickerView() === 'years') {\n return `Seleccionar año, ${this.yearPageLabel()}`;\n }\n return this.monthLabel();\n });\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.overlayRef?.close('programmatic'));\n }\n\n override writeValue(value: DateValue | null): void {\n this.value.set(value || null);\n if (value) {\n this.visibleMonth.set(value.set({ day: 1 }));\n this.focusedDate.set(value);\n }\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n navigate(months: number): void {\n if (!Number.isInteger(months) || months === 0) {\n return;\n }\n const target = this.visibleMonth().add({ months }).set({ day: 1 });\n this.updateVisibleMonth({ year: target.year, month: target.month });\n }\n\n isPickerView(view: PickerView): boolean {\n return this.pickerView() === view;\n }\n\n openMonthPicker(): void {\n this.pickerView.set('months');\n }\n\n openYearPicker(): void {\n this.yearPageStart.set(\n this.pageStartForYear(this.visibleMonth().year, this.yearOptions())\n );\n this.pickerView.set('years');\n }\n\n selectMonth(month: number): void {\n if (!Number.isInteger(month) || month < 1 || month > 12) {\n return;\n }\n this.updateVisibleMonth({ month });\n this.pickerView.set('calendar');\n }\n\n selectYear(year: number): void {\n if (!this.yearOptions().includes(year)) {\n return;\n }\n this.updateVisibleMonth({ year });\n this.pickerView.set('calendar');\n }\n\n canGoToPreviousYearPage(): boolean {\n const years = this.yearOptions();\n return years.indexOf(this.yearPageOptions()[0]) > 0;\n }\n\n canGoToNextYearPage(): boolean {\n const years = this.yearOptions();\n const current = years.indexOf(this.yearPageOptions()[0]);\n return current >= 0 && current + 20 < years.length;\n }\n\n moveYearPage(direction: -1 | 1): void {\n const years = this.yearOptions();\n const current = Math.max(0, years.indexOf(this.yearPageOptions()[0]));\n const next = Math.min(\n Math.max(0, current + direction * 20),\n Math.max(0, years.length - 20)\n );\n if (years[next] !== undefined) {\n this.yearPageStart.set(years[next]);\n }\n }\n\n select(date: DateValue): void {\n if (!this.isSelectable(date)) {\n return;\n }\n this.value.set(date);\n this.onChange(date);\n this.onTouched();\n this.close();\n }\n\n focusDate(date: DateValue): void {\n if (\n date.month !== this.visibleMonth().month ||\n date.year !== this.visibleMonth().year\n ) {\n this.visibleMonth.set(date.set({ day: 1 }));\n }\n this.focusedDate.set(date);\n queueMicrotask(() => {\n const button = this.calendar?.nativeElement.querySelector<HTMLElement>(\n `[data-date=\"${date.toString()}\"]`\n );\n button?.focus();\n });\n }\n\n private open(): void {\n const trigger = this.trigger?.nativeElement;\n const calendar = this.calendar?.nativeElement;\n if (!trigger || !calendar || this.disabled() || this.readonly()) {\n return;\n }\n const selected = this.value();\n const focus =\n selected && this.isSelectable(selected)\n ? selected\n : this.firstSelectableDate();\n if (!focus) {\n return;\n }\n this.isOpen.set(true);\n this.changeDetector.detectChanges();\n this.focusedDate.set(focus);\n this.visibleMonth.set(focus.set({ day: 1 }));\n this.yearAnchor.set(focus.year);\n this.pickerView.set('calendar');\n this.overlayRef = this.overlay.open({\n origin: trigger,\n matchOriginWidth: true,\n placement: 'bottom-start',\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n restoreFocus: true\n });\n this.overlayRef.attach(calendar);\n this.overlayRef.portal.style.border = '0';\n this.overlayRef.portal.style.borderRadius = '0';\n this.overlayRef.portal.style.background = 'transparent';\n this.overlayRef.portal.style.boxShadow = 'none';\n this.overlayRef.onClose(() => {\n this.overlayRef = null;\n this.isOpen.set(false);\n this.pickerView.set('calendar');\n this.changeDetector.markForCheck();\n });\n this.focusDate(focus);\n }\n\n private close(): void {\n this.overlayRef?.close('programmatic');\n }\n\n private firstSelectableDate(): DateValue | null {\n let candidate = this.minDate() || today(getLocalTimeZone());\n const maxDate = this.maxDate();\n const attempts = maxDate\n ? Number.POSITIVE_INFINITY\n : this.unavailableDates().length + 1;\n\n for (\n let attempt = 0;\n attempt < attempts && (!maxDate || candidate.compare(maxDate) <= 0);\n attempt += 1\n ) {\n if (this.isSelectable(candidate)) {\n return candidate;\n }\n candidate = candidate.add({ days: 1 });\n }\n\n return null;\n }\n\n private isSelectable(date: DateValue): boolean {\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n (!minDate || date.compare(minDate) >= 0) &&\n (!maxDate || date.compare(maxDate) <= 0) &&\n !this.unavailableDates().some(\n (unavailable) => unavailable.compare(date) === 0\n )\n );\n }\n\n private updateVisibleMonth(change: { month?: number; year?: number }): void {\n const focused = this.focusedDate() || this.visibleMonth();\n const visibleMonth = this.visibleMonth().set({ ...change, day: 1 });\n if (!this.isMonthAvailable(visibleMonth)) {\n return;\n }\n const nextFocus = focused.set({\n ...change,\n day: Math.min(focused.day, this.daysInMonth(visibleMonth))\n });\n this.visibleMonth.set(visibleMonth);\n this.focusedDate.set(nextFocus);\n queueMicrotask(() => {\n const button = this.calendar?.nativeElement.querySelector<HTMLElement>(\n `[data-date=\"${nextFocus.toString()}\"]`\n );\n button?.focus();\n });\n }\n\n private isMonthAvailable(month: DateValue): boolean {\n const monthEnd = month.add({ months: 1 }).subtract({ days: 1 });\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n (!minDate || monthEnd.compare(minDate) >= 0) &&\n (!maxDate || month.compare(maxDate) <= 0)\n );\n }\n\n private daysInMonth(month: DateValue): number {\n return month.add({ months: 1 }).subtract({ days: 1 }).day;\n }\n\n private pageStartForYear(year: number, years: readonly number[]): number {\n if (!years.length) {\n return year;\n }\n const index = Math.max(0, years.indexOf(year));\n const start = Math.min(\n Math.max(0, index - 9),\n Math.max(0, years.length - 20)\n );\n return years[start];\n }\n\n private monthOptionState(date: DateValue): PickerOptionState {\n const current = today(getLocalTimeZone());\n const selected = this.value();\n const visible = this.visibleMonth();\n const focused = this.focusedDate();\n return {\n current: this.isSameMonth(date, current),\n selected: !!selected && this.isSameMonth(date, selected),\n visible: this.isSameMonth(date, visible),\n focused: !!focused && this.isSameMonth(date, focused)\n };\n }\n\n private yearOptionState(year: number): PickerOptionState {\n const current = today(getLocalTimeZone());\n const selected = this.value();\n const visible = this.visibleMonth();\n const focused = this.focusedDate();\n return {\n current: current.year === year,\n selected: selected?.year === year,\n visible: visible.year === year,\n focused: focused?.year === year\n };\n }\n\n private isSameMonth(first: DateValue, second: DateValue): boolean {\n return first.year === second.year && first.month === second.month;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n LOCALE_ID,\n ViewChild,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n DateFormatter,\n DateValue,\n DayOfWeek,\n getLocalTimeZone,\n today\n} from '@internationalized/date';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsDateRangeValue } from '../../../../types';\nimport { NsOverlayRef, NsOverlayService } from '../../../overlay';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDatePickerCalendarComponent } from './date-picker-calendar.component';\n\n@Component({\n selector: 'ns-date-range-picker',\n standalone: true,\n imports: [NsIconsComponent, NsDatePickerCalendarComponent],\n template: `\n @if (label()) {\n <label class=\"ns-date-range-picker__label\" [attr.for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <button\n #trigger\n class=\"ns-date-range-picker__control\"\n type=\"button\"\n [attr.id]=\"controlId()\"\n [attr.name]=\"name() || null\"\n [attr.aria-label]=\"ariaLabel() || label() || placeholder()\"\n [attr.aria-describedby]=\"describedBy()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"calendarId\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [disabled]=\"disabled() || readonly()\"\n (click)=\"toggle()\"\n (blur)=\"onTouched()\"\n >\n <ns-icon name=\"calendar\" size=\"18\" aria-hidden=\"true\" />\n <span class=\"ns-date-range-picker__value\">{{ displayValue() }}</span>\n </button>\n\n <section\n #calendar\n class=\"ns-date-range-picker__menu\"\n [attr.id]=\"calendarId\"\n role=\"dialog\"\n [attr.aria-label]=\"calendarLabel\"\n [hidden]=\"!isOpen()\"\n >\n <header class=\"ns-date-range-picker__navigation\">\n <button\n class=\"ns-date-range-picker__navigation-button\"\n type=\"button\"\n aria-label=\"Previous month\"\n (click)=\"navigate(-1)\"\n >\n ‹\n </button>\n <span class=\"ns-date-range-picker__month-title\">{{\n monthLabel()\n }}</span>\n <button\n class=\"ns-date-range-picker__navigation-button\"\n type=\"button\"\n aria-label=\"Next month\"\n (click)=\"navigate(1)\"\n >\n ›\n </button>\n </header>\n <ns-date-picker-calendar\n [month]=\"visibleMonth()\"\n [range]=\"value()\"\n [focused]=\"focusedDate()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [unavailableDates]=\"unavailableDates()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n (dateSelected)=\"select($event)\"\n (dateFocused)=\"focusDate($event)\"\n ></ns-date-picker-calendar>\n </section>\n `,\n styleUrl: './date-range-picker.component.scss',\n host: {\n '[class.ns-date-range-picker]': 'true',\n '[class.ns-date-range-picker--open]': 'isOpen()',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NsDateRangePickerComponent,\n multi: true\n }\n ]\n})\nexport class NsDateRangePickerComponent extends NsValueAccessor<NsDateRangeValue<DateValue> | null> {\n readonly minDate = input<DateValue | null>(null);\n readonly maxDate = input<DateValue | null>(null);\n readonly unavailableDates = input<readonly DateValue[]>([]);\n readonly firstDayOfWeek = input<DayOfWeek>('sun');\n\n @ViewChild('calendar') private calendar?: ElementRef<HTMLElement>;\n @ViewChild('trigger') private trigger?: ElementRef<HTMLElement>;\n\n readonly calendarId = `${this.id}-calendar`;\n readonly calendarLabel = 'Date range picker';\n readonly isOpen = signal(false);\n readonly focusedDate = signal<DateValue | null>(null);\n readonly visibleMonth = signal<DateValue>(today(getLocalTimeZone()));\n\n private readonly overlay = inject(NsOverlayService);\n private readonly changeDetector = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly locale = inject(LOCALE_ID);\n private readonly monthFormatter = new DateFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private readonly dateFormatter = new DateFormatter(this.locale, {\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n timeZone: 'UTC'\n });\n private overlayRef: NsOverlayRef | null = null;\n\n readonly displayValue = computed(() => {\n const range = this.value();\n if (!range?.start) {\n return this.placeholder();\n }\n const start = this.formatDate(range.start);\n return range.end ? `${start} – ${this.formatDate(range.end)}` : start;\n });\n readonly monthLabel = computed(() =>\n this.monthFormatter.format(this.visibleMonth().toDate('UTC'))\n );\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.overlayRef?.close('programmatic'));\n }\n\n override writeValue(value: NsDateRangeValue<DateValue> | null): void {\n const normalized = this.normalizeRange(value);\n this.value.set(normalized);\n const focus = normalized?.start || normalized?.end;\n if (focus) {\n this.visibleMonth.set(focus.set({ day: 1 }));\n this.focusedDate.set(focus);\n }\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n navigate(months: number): void {\n this.visibleMonth.update((month) => month.add({ months }).set({ day: 1 }));\n this.focusDate(this.visibleMonth());\n }\n\n select(date: DateValue): void {\n if (!this.isSelectable(date)) {\n return;\n }\n const range = this.value();\n if (!range?.start || range.end || date.compare(range.start) < 0) {\n this.value.set({ start: date, end: null });\n this.focusDate(date);\n return;\n }\n const next = { start: range.start, end: date };\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n this.close();\n }\n\n focusDate(date: DateValue): void {\n if (\n date.month !== this.visibleMonth().month ||\n date.year !== this.visibleMonth().year\n ) {\n this.visibleMonth.set(date.set({ day: 1 }));\n }\n this.focusedDate.set(date);\n queueMicrotask(() => {\n const button = this.calendar?.nativeElement.querySelector<HTMLElement>(\n `[data-date=\"${date.toString()}\"]`\n );\n button?.focus();\n });\n }\n\n private open(): void {\n const trigger = this.trigger?.nativeElement;\n const calendar = this.calendar?.nativeElement;\n if (!trigger || !calendar || this.disabled() || this.readonly()) {\n return;\n }\n const selected = this.value()?.start;\n const focus =\n selected && this.isSelectable(selected)\n ? selected\n : this.firstSelectableDate();\n if (!focus) {\n return;\n }\n this.isOpen.set(true);\n this.changeDetector.detectChanges();\n this.focusedDate.set(focus);\n this.visibleMonth.set(focus.set({ day: 1 }));\n this.overlayRef = this.overlay.open({\n origin: trigger,\n placement: 'bottom-start',\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n restoreFocus: true\n });\n this.overlayRef.attach(calendar);\n this.overlayRef.onClose(() => {\n this.overlayRef = null;\n this.isOpen.set(false);\n this.changeDetector.markForCheck();\n });\n this.focusDate(focus);\n }\n\n private close(): void {\n this.overlayRef?.close('programmatic');\n }\n\n private normalizeRange(\n value: NsDateRangeValue<DateValue> | null\n ): NsDateRangeValue<DateValue> | null {\n if (!value) {\n return null;\n }\n if (value.start && value.end && value.start.compare(value.end) > 0) {\n return { start: value.end, end: value.start };\n }\n return { start: value.start || null, end: value.end || null };\n }\n\n private firstSelectableDate(): DateValue | null {\n let candidate = this.minDate() || today(getLocalTimeZone());\n const maxDate = this.maxDate();\n const attempts = maxDate\n ? Number.POSITIVE_INFINITY\n : this.unavailableDates().length + 1;\n\n for (\n let attempt = 0;\n attempt < attempts && (!maxDate || candidate.compare(maxDate) <= 0);\n attempt += 1\n ) {\n if (this.isSelectable(candidate)) {\n return candidate;\n }\n candidate = candidate.add({ days: 1 });\n }\n\n return null;\n }\n\n private isSelectable(date: DateValue): boolean {\n const minDate = this.minDate();\n const maxDate = this.maxDate();\n return (\n (!minDate || date.compare(minDate) >= 0) &&\n (!maxDate || date.compare(maxDate) <= 0) &&\n !this.unavailableDates().some(\n (unavailable) => unavailable.compare(date) === 0\n )\n );\n }\n\n private formatDate(date: DateValue): string {\n return this.dateFormatter.format(date.toDate('UTC'));\n }\n}\n","import { Directive, booleanAttribute, input } from '@angular/core';\nimport { NsColor, NsKey } from '../../../../types';\n\n@Directive({\n selector: 'ns-dropdown-item',\n standalone: true\n})\nexport class NsDropdownItemDirective {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly dot = input<NsColor | undefined>(undefined);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input\n} from '@angular/core';\n\n@Component({\n selector: 'ns-skeleton',\n standalone: true,\n template: '',\n styleUrl: './skeleton.component.scss',\n host: {\n 'aria-hidden': 'true',\n '[class.ns-skeleton]': 'true',\n '[class.ns-skeleton--animated]': 'animated()',\n '[style.inline-size]': 'width()',\n '[style.block-size]': 'height()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly animated = input(true, { transform: booleanAttribute });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n ViewChild,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport {\n NsColor,\n NsKey,\n NsPlacement,\n NsSelectionMode\n} from '../../../../types';\nimport { getNsNextNavigableIndex, NsTypeaheadController } from '../../../a11y';\nimport { NsOverlayRef, NsOverlayService } from '../../../overlay';\nimport { NsSkeletonComponent } from '../../../skeleton';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsDropdownItemDirective } from './dropdown-item.directive';\nimport { NsDropdownItem, NsDropdownValue } from './dropdown.types';\n\ninterface NsDropdownWorkingItem {\n readonly key: NsKey;\n readonly label: string;\n readonly disabled: boolean;\n readonly dot?: NsColor;\n}\n\nfunction normalizeNsDropdownLabel(value: string): string {\n return value\n .toLocaleLowerCase()\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '');\n}\n\n@Component({\n selector: 'ns-dropdown',\n standalone: true,\n imports: [NsIconsComponent, NsSkeletonComponent],\n templateUrl: './dropdown.component.html',\n styleUrl: './dropdown.component.scss',\n host: {\n '[class.ns-dropdown]': 'true',\n '[class.ns-dropdown--open]': 'open()',\n '[class.ns-dropdown--disabled]': 'disabled()',\n '[class.ns-dropdown--invalid]': 'invalid()',\n '[attr.data-state]': \"open() ? 'open' : 'closed'\"\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: NsDropdownComponent,\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDropdownComponent extends NsValueAccessor<NsDropdownValue> {\n readonly collection = input<readonly NsDropdownItem[]>([]);\n readonly contentItems = contentChildren(NsDropdownItemDirective);\n readonly selectionMode = input<NsSelectionMode>('single');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly searchable = input(true, { transform: booleanAttribute });\n readonly searchPlaceholder = input('Search');\n readonly emptyText = input('No results');\n readonly placement = input<NsPlacement>('bottom-start');\n readonly open = model(false);\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n @ViewChild('trigger') private trigger?: ElementRef<HTMLButtonElement>;\n @ViewChild('menu') private menu?: ElementRef<HTMLElement>;\n @ViewChild('searchInput') private searchInput?: ElementRef<HTMLInputElement>;\n @ViewChild('listbox') private listbox?: ElementRef<HTMLElement>;\n\n private readonly overlay = inject(NsOverlayService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly typeahead = new NsTypeaheadController<{\n label: string;\n disabled: boolean;\n }>();\n private overlayRef?: NsOverlayRef;\n private destroyed = false;\n\n readonly query = signal('');\n readonly activeIndex = signal(-1);\n readonly listboxId = `${this.id}-listbox`;\n readonly searchId = `${this.id}-search`;\n readonly skeletonRows = [0, 1, 2, 3] as const;\n\n readonly items = computed<NsDropdownWorkingItem[]>(() => {\n const projected = this.contentItems();\n if (projected.length) {\n return projected.map((item) => ({\n key: item.key(),\n label: item.label(),\n disabled: item.disabled(),\n dot: item.dot()\n }));\n }\n return this.collection().map((item) => ({\n key: item.key,\n label: item.label,\n disabled: item.disabled ?? false,\n dot: item.dot\n }));\n });\n\n readonly visibleItems = computed(() => {\n const normalized = normalizeNsDropdownLabel(this.query());\n const items = this.items();\n if (!normalized) {\n return items;\n }\n return items.filter((item) =>\n normalizeNsDropdownLabel(item.label).includes(normalized)\n );\n });\n\n readonly selectedKeys = computed<ReadonlySet<NsKey>>(() => {\n const value = this.value();\n if (value === null || value === undefined) {\n return new Set();\n }\n return new Set(Array.isArray(value) ? value : [value]);\n });\n\n readonly selectedLabel = computed(() => {\n const keys = this.selectedKeys();\n if (!keys.size) {\n return '';\n }\n return this.items()\n .filter((item) => keys.has(item.key))\n .map((item) => item.label)\n .join(', ');\n });\n\n /** Dot of the selected item; the trigger shows it for single selection only. */\n readonly selectedDot = computed<NsColor | undefined>(() => {\n if (this.selectionMode() !== 'single') {\n return undefined;\n }\n const keys = this.selectedKeys();\n return this.items().find((item) => keys.has(item.key))?.dot;\n });\n\n readonly activeId = computed(() => {\n const item = this.visibleItems()[this.activeIndex()];\n return item ? `${this.listboxId}-${String(item.key)}` : undefined;\n });\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n this.overlayRef?.close('programmatic');\n });\n }\n\n toggle(): void {\n this.open() ? this.close() : this.show();\n }\n\n select(key: NsKey): void {\n const item = this.items().find((candidate) => candidate.key === key);\n if (!item || item.disabled || this.selectionMode() === 'none') {\n return;\n }\n if (this.selectionMode() === 'multiple') {\n const current = new Set(this.selectedKeys());\n current.has(key) ? current.delete(key) : current.add(key);\n this.setValue([...current]);\n this.onTouched();\n } else {\n this.setValue(key);\n this.onTouched();\n this.close();\n }\n }\n\n onNativeChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const items = this.items();\n if (this.selectionMode() === 'multiple') {\n const keys = Array.from(select.selectedOptions)\n .map(\n (option) =>\n items.find((item) => String(item.key) === option.value)?.key\n )\n .filter((key): key is NsKey => key !== undefined);\n this.setValue(keys);\n this.onTouched();\n return;\n }\n const item = items.find(\n (candidate) => String(candidate.key) === select.value\n );\n if (item) {\n this.select(item.key);\n }\n }\n\n onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.query.set(value);\n this.activeIndex.set(this.visibleItems().length ? 0 : -1);\n }\n\n onTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabled()) {\n return;\n }\n if (event.key === 'Escape' && this.open()) {\n event.preventDefault();\n this.close();\n return;\n }\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n if (!this.open()) {\n this.show();\n }\n }\n }\n\n onSearchKeydown(event: KeyboardEvent): void {\n const items = this.visibleItems();\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n const active = items[this.activeIndex()];\n if (active) {\n this.select(active.key);\n }\n return;\n }\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n const next = getNsNextNavigableIndex(\n items.map((item) => ({ key: item.key, disabled: item.disabled })),\n this.activeIndex(),\n event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'\n );\n if (next >= 0) {\n event.preventDefault();\n this.activeIndex.set(next);\n }\n }\n }\n\n onListboxKeydown(event: KeyboardEvent): void {\n if (this.searchable()) {\n return;\n }\n const items = this.visibleItems();\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n const active = items[this.activeIndex()];\n if (active) {\n this.select(active.key);\n }\n return;\n }\n let next = -1;\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n next = getNsNextNavigableIndex(\n items.map((item) => ({ key: item.key, disabled: item.disabled })),\n this.activeIndex(),\n event.key as 'ArrowDown' | 'ArrowUp' | 'Home' | 'End'\n );\n } else {\n next = this.typeahead.find(\n items.map((item) => ({ label: item.label, disabled: item.disabled })),\n event.key,\n this.activeIndex()\n );\n }\n if (next >= 0) {\n event.preventDefault();\n this.activeIndex.set(next);\n }\n }\n\n private show(): void {\n if (this.disabled() || this.open() || !this.menu || !this.trigger) {\n return;\n }\n this.open.set(true);\n this.query.set('');\n this.activeIndex.set(-1);\n this.overlayRef = this.overlay.open({\n origin: this.trigger.nativeElement,\n placement: this.placement(),\n matchOriginWidth: true,\n restoreFocus: true\n });\n this.overlayRef.attach(this.menu.nativeElement);\n this.overlayRef.onClose(() => {\n const wasDestroyed = this.destroyed;\n this.overlayRef = undefined;\n if (!wasDestroyed) {\n this.open.set(false);\n this.query.set('');\n this.closed.emit();\n }\n });\n this.opened.emit();\n queueMicrotask(() => {\n if (this.searchable()) {\n this.searchInput?.nativeElement.focus();\n } else {\n this.listbox?.nativeElement.focus();\n }\n });\n }\n\n private close(): void {\n this.overlayRef?.close();\n }\n}\n","@if (label()) {\n <label class=\"ns-dropdown__label\" [attr.for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n}\n<button\n #trigger\n type=\"button\"\n class=\"ns-dropdown__trigger\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n aria-haspopup=\"listbox\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"onTouched()\"\n>\n <span\n class=\"ns-dropdown__trigger-value\"\n [class.ns-dropdown__trigger-value--placeholder]=\"!selectedLabel()\"\n >\n @if (selectedDot(); as dot) {\n <span\n class=\"ns-dropdown__dot\"\n [class.ns-dropdown__dot--neutral]=\"dot === 'neutral'\"\n [class.ns-dropdown__dot--primary]=\"dot === 'primary'\"\n [class.ns-dropdown__dot--success]=\"dot === 'success'\"\n [class.ns-dropdown__dot--warning]=\"dot === 'warning'\"\n [class.ns-dropdown__dot--danger]=\"dot === 'danger'\"\n aria-hidden=\"true\"\n ></span>\n }\n {{ selectedLabel() || placeholder() }}</span\n >\n <ns-icon\n class=\"ns-dropdown__trigger-icon\"\n name=\"chevron-down\"\n size=\"18\"\n aria-hidden=\"true\"\n />\n</button>\n<select\n class=\"ns-dropdown__native-control\"\n [attr.name]=\"name()\"\n [multiple]=\"selectionMode() === 'multiple'\"\n [disabled]=\"disabled()\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"onTouched()\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n @for (item of items(); track item.key) {\n <option\n [value]=\"item.key\"\n [selected]=\"selectedKeys().has(item.key)\"\n [disabled]=\"item.disabled\"\n >\n {{ item.label }}\n </option>\n }\n</select>\n<div #menu class=\"ns-dropdown__menu\" role=\"presentation\">\n @if (searchable()) {\n <div class=\"ns-dropdown__search\">\n <input\n #searchInput\n class=\"ns-dropdown__search-input\"\n type=\"text\"\n [id]=\"searchId\"\n [attr.placeholder]=\"searchPlaceholder()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeId()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n <ns-icon\n class=\"ns-dropdown__search-icon\"\n name=\"search\"\n size=\"16\"\n aria-hidden=\"true\"\n />\n </div>\n }\n <div\n #listbox\n class=\"ns-dropdown__listbox\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-multiselectable]=\"selectionMode() === 'multiple'\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.tabindex]=\"searchable() ? null : 0\"\n (keydown)=\"onListboxKeydown($event)\"\n >\n @if (loading()) {\n @for (row of skeletonRows; track row) {\n <div class=\"ns-dropdown__skeleton-row\">\n <ns-skeleton />\n </div>\n }\n } @else if (visibleItems().length === 0) {\n <div class=\"ns-dropdown__empty\" role=\"status\">{{ emptyText() }}</div>\n } @else {\n @for (item of visibleItems(); track item.key; let index = $index) {\n <div\n class=\"ns-dropdown__option\"\n role=\"option\"\n [id]=\"listboxId + '-' + item.key\"\n [class.ns-dropdown__option--selected]=\"selectedKeys().has(item.key)\"\n [class.ns-dropdown__option--active]=\"index === activeIndex()\"\n [class.ns-dropdown__option--disabled]=\"item.disabled\"\n [attr.aria-selected]=\"selectedKeys().has(item.key)\"\n [attr.aria-disabled]=\"item.disabled\"\n (click)=\"select(item.key)\"\n >\n @if (item.dot; as dot) {\n <span\n class=\"ns-dropdown__dot\"\n [class.ns-dropdown__dot--neutral]=\"dot === 'neutral'\"\n [class.ns-dropdown__dot--primary]=\"dot === 'primary'\"\n [class.ns-dropdown__dot--success]=\"dot === 'success'\"\n [class.ns-dropdown__dot--warning]=\"dot === 'warning'\"\n [class.ns-dropdown__dot--danger]=\"dot === 'danger'\"\n aria-hidden=\"true\"\n ></span>\n }\n {{ item.label }}\n </div>\n }\n }\n </div>\n</div>\n@if (description()) {\n <p class=\"ns-dropdown__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n}\n@if (invalid() && errorMessage()) {\n <p class=\"ns-dropdown__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-input',\n standalone: true,\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputComponent),\n multi: true\n }\n ],\n imports: [FormsModule, NsIconsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.ns-input]': 'true',\n '[class.ns-input--invalid]': 'invalid()',\n '[class.ns-input--disabled]': 'disabled()',\n '[class.ns-input--sm]': \"size() === 'sm'\",\n '[class.ns-input--lg]': \"size() === 'lg'\"\n }\n})\nexport class NsInputComponent extends NsValueAccessor<string> {\n /** Leading icon name (`@ng-solid/icons`). Omit for the default, icon-less field. */\n public readonly icon = input<string>('');\n}\n","@if (label()) {\n <label class=\"ns-input__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n}\n@if (icon()) {\n <div class=\"ns-input__field\">\n <span class=\"ns-input__leading\" aria-hidden=\"true\">\n <ns-icon [name]=\"icon()\" />\n </span>\n <input\n class=\"ns-input__control\"\n [id]=\"controlId()\"\n [type]=\"type()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n />\n </div>\n} @else {\n <input\n class=\"ns-input__control\"\n [id]=\"controlId()\"\n [type]=\"type()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n />\n}\n@if (description()) {\n <p class=\"ns-input__description\" [id]=\"descriptionId\">{{ description() }}</p>\n}\n@if (invalid() && errorMessage()) {\n <p class=\"ns-input__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-input-code',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-input-code__label\" [for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <input\n class=\"ns-input-code__control\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n type=\"text\"\n inputmode=\"text\"\n autocomplete=\"one-time-code\"\n [attr.maxlength]=\"length()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n />\n @if (description()) {\n <p class=\"ns-input-code__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-input-code__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./input-code.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputCodeComponent),\n multi: true\n }\n ],\n host: { '[class.ns-input-code]': 'true' }\n})\nexport class NsInputCodeComponent extends NsValueAccessor<string> {\n readonly length = input(6);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ViewEncapsulation\n} from '@angular/core';\n\n/** Visual-only composition primitive. Projected controls own their form state. */\n@Component({\n selector: 'ns-input-group',\n standalone: true,\n template: '<div class=\"ns-input-group__control\"><ng-content /></div>',\n styleUrls: ['./input-group.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[class.ns-input-group]': 'true' }\n})\nexport class NsInputGroupComponent {}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'ns-input-group-addon',\n template: '<ng-content></ng-content>',\n styleUrls: ['./input-group-addon.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n host: {\n '[class.ns-input-group-addon]': 'true'\n }\n})\nexport class NsInputGroupAddonComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n LOCALE_ID,\n computed,\n forwardRef,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-input-number',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-input-number__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n }\n <div class=\"ns-input-number__group\">\n <div class=\"ns-input-number__field\">\n @if (currencyPrefix(); as prefix) {\n <span class=\"ns-input-number__prefix\" aria-hidden=\"true\">{{\n prefix\n }}</span>\n }\n <input\n class=\"ns-input-number__control\"\n type=\"text\"\n inputmode=\"decimal\"\n role=\"spinbutton\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [value]=\"displayValue()\"\n [placeholder]=\"placeholder()\"\n (input)=\"onInputEvent($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"value()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"formatValue(); onTouched()\"\n />\n </div>\n <div class=\"ns-input-number__steppers\" aria-hidden=\"true\">\n <button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"stepBy(1)\"\n [disabled]=\"disabled() || readonly()\"\n >\n +</button\n ><button\n type=\"button\"\n tabindex=\"-1\"\n (click)=\"stepBy(-1)\"\n [disabled]=\"disabled() || readonly()\"\n >\n −\n </button>\n </div>\n </div>\n @if (description()) {\n <p class=\"ns-input-number__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-input-number__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./input-number.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputNumberComponent),\n multi: true\n }\n ],\n host: { '[class.ns-input-number]': 'true' }\n})\nexport class NsInputNumberComponent extends NsValueAccessor<number | null> {\n private readonly locale = inject(LOCALE_ID);\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly step = input(1);\n readonly currency = input<string | undefined>(undefined);\n readonly format = input<Intl.NumberFormatOptions>({});\n readonly displayValue = signal('');\n readonly currencyPrefix = computed(() => {\n if (!this.currency()) {\n return undefined;\n }\n return this.formatter\n .formatToParts(0)\n .find((part) => part.type === 'currency')?.value;\n });\n\n override writeValue(value: number | null): void {\n super.writeValue(value);\n this.displayValue.set(\n value === null || value === undefined\n ? ''\n : this.formatDisplayValue(value)\n );\n }\n onInput(text: string): void {\n this.displayValue.set(text);\n const value = this.parse(text);\n this.setValue(value === null ? null : this.constrain(value));\n }\n onInputEvent(event: Event): void {\n const target = event.target;\n if (!(target instanceof HTMLInputElement)) {\n return;\n }\n this.onInput(target.value);\n }\n formatValue(): void {\n const value = this.value();\n this.displayValue.set(\n value === null || value === undefined\n ? ''\n : this.formatDisplayValue(value)\n );\n }\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.readonly()) return;\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.stepBy(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.stepBy(-1);\n } else if (event.key === 'Home' && this.min() !== undefined) {\n event.preventDefault();\n this.setValue(this.min() ?? null);\n this.formatValue();\n } else if (event.key === 'End' && this.max() !== undefined) {\n event.preventDefault();\n this.setValue(this.max() ?? null);\n this.formatValue();\n }\n }\n stepBy(direction: 1 | -1): void {\n if (this.disabled() || this.readonly()) return;\n const current =\n this.value() ?? (direction > 0 ? (this.min() ?? 0) : (this.max() ?? 0));\n this.setValue(this.constrain(current + direction * this.step()));\n this.formatValue();\n }\n private get formatter(): Intl.NumberFormat {\n return new Intl.NumberFormat(this.locale, {\n ...this.format(),\n ...(this.currency()\n ? { style: 'currency', currency: this.currency() }\n : {})\n });\n }\n /**\n * `format: { style: 'percent' }` deliberately breaks from `Intl.NumberFormat`'s\n * own convention. `Intl` expects a *fraction* (`format(0.1)` → \"10%\"); this\n * component's model is the 0-100 *magnitude* instead (`100` means 100%), so a\n * model of `10` paints \"10%\".\n *\n * Why: almost every form in this codebase stores a percentage as an integer\n * 0-100 (discounts, tax rates, commission splits, `min`/`max`/`step` all read\n * naturally as \"0 to 100\"). Making the model a 0-1 fraction would just push\n * the ×100/÷100 conversion onto every consumer instead of doing it once here.\n *\n * Do NOT \"fix\" this back to matching `Intl` — that silently multiplies every\n * stored percentage by 100 the next time this input round-trips a value.\n * The bug this comment guards against: `formatDisplayValue` used to hand the\n * raw 0-100 model straight to `Intl` (which reads it as a fraction, so `0.1`\n * printed as \"10%\"), while `parse` read \"10%\" back as the magnitude `10` — a\n * value that then painted as \"1,000%\" on the next blur. `parse` already\n * returns the 0-100 magnitude and is intentionally left untouched; only the\n * percent *formatting* path divides by 100 before calling `Intl`.\n */\n private isPercentMode(): boolean {\n return !this.currency() && this.format().style === 'percent';\n }\n private formatDisplayValue(value: number): string {\n if (!this.currency()) {\n return this.formatter.format(this.isPercentMode() ? value / 100 : value);\n }\n return this.formatter\n .formatToParts(value)\n .filter((part) => part.type !== 'currency')\n .map((part) => part.value)\n .join('')\n .trim();\n }\n /** Returns the 0-100 magnitude even in percent mode — see `isPercentMode`. */\n private parse(text: string): number | null {\n const parts = this.formatter.formatToParts(12345.6);\n const group = parts.find((part) => part.type === 'group')?.value ?? ',';\n const decimal = parts.find((part) => part.type === 'decimal')?.value ?? '.';\n const normalized = text\n .replaceAll(group, '')\n .replace(decimal, '.')\n .replace(/[^0-9+-.]/g, '');\n const value = Number(normalized);\n return normalized === '' || !Number.isFinite(value) ? null : value;\n }\n private constrain(value: number): number {\n const min = this.min();\n const max = this.max();\n return Math.min(max ?? Infinity, Math.max(min ?? -Infinity, value));\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-input-search',\n standalone: true,\n imports: [FormsModule, NsIconsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-input-search__label\" [for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <div class=\"ns-input-search__group\">\n <span class=\"ns-input-search__icon\" aria-hidden=\"true\">\n <ns-icon name=\"search\" />\n </span>\n <input\n class=\"ns-input-search__control\"\n type=\"search\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel() || label() || 'Search'\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"invalid() || null\"\n (blur)=\"onTouched()\"\n />\n @if (value() && !disabled() && !readonly()) {\n <button type=\"button\" aria-label=\"Clear search\" (click)=\"setValue('')\">\n ×\n </button>\n }\n </div>\n @if (description()) {\n <p class=\"ns-input-search__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-input-search__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./input-search.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsInputSearchComponent),\n multi: true\n }\n ],\n host: { '[class.ns-input-search]': 'true' }\n})\nexport class NsInputSearchComponent extends NsValueAccessor<string> {}\n","import { signal } from '@angular/core';\n\nexport class NsRadioGroupContext {\n readonly value = signal<string | null>(null);\n readonly disabled = signal(false);\n select: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { NsAriaIdService } from '../../../a11y';\nimport { NsRadioGroupContext } from '../radio/radio-context';\n\n/**\n * Selectable card for rich radio options (icon, label and description)\n * inside an `ns-radio-group`. It reuses `NsRadioGroupContext` and a native\n * `<input type=\"radio\">`, the same mechanism `ns-radio` relies on, so\n * `role=\"radio\"`, `aria-checked` and keyboard behavior (native radio-group\n * navigation when a shared `name` is provided) come from the browser instead\n * of a hand-rolled ARIA widget.\n */\n@Component({\n selector: 'ns-option-card',\n standalone: true,\n template: `\n <input\n class=\"ns-option-card__input\"\n type=\"radio\"\n [id]=\"id\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"group?.value() === value()\"\n [disabled]=\"disabled() || group?.disabled()\"\n (change)=\"select()\"\n (blur)=\"group?.onTouched()\"\n />\n <label class=\"ns-option-card__card\" [for]=\"id\">\n <span class=\"ns-option-card__indicator\" aria-hidden=\"true\"></span>\n <span class=\"ns-option-card__icon\"\n ><ng-content select=\"[option-card-icon]\"\n /></span>\n <span class=\"ns-option-card__body\">\n <span class=\"ns-option-card__label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"ns-option-card__description\">{{ description() }}</span>\n }\n </span>\n </label>\n `,\n styleUrl: './option-card.component.scss',\n host: {\n '[class.ns-option-card]': 'true',\n '[class.ns-option-card--selected]': 'group?.value() === value()',\n '[class.ns-option-card--disabled]': 'disabled() || group?.disabled()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsOptionCardComponent {\n private readonly ids = inject(NsAriaIdService);\n readonly group = inject(NsRadioGroupContext, {\n optional: true,\n skipSelf: true\n });\n readonly id = this.ids.create('ns-option-card');\n readonly value = input.required<string>();\n readonly label = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly disabled = input(false, { transform: booleanAttribute });\n\n select(): void {\n if (!this.disabled() && !this.group?.disabled()) {\n this.group?.select(this.value());\n }\n }\n}\n","import { Component, forwardRef, OnInit, input } from '@angular/core';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { NsIconsComponent } from '@ng-solid/icons';\n\n@Component({\n selector: 'ns-password',\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsPasswordComponent),\n multi: true\n }\n ],\n imports: [RouterLink, FormsModule, NsIconsComponent],\n host: {\n '[class.ns-password]': 'true'\n }\n})\nexport class NsPasswordComponent extends NsValueAccessor implements OnInit {\n readonly forgotLink = input<string>(undefined);\n readonly forgotLinkLabel = input<string>('¿Olvidó su contraseña?');\n\n public show = false;\n\n constructor() {\n super();\n }\n\n ngOnInit() {}\n\n toggle() {\n this.show = !this.show;\n }\n}\n","@if (label()) {\n <div class=\"ns-password__label-row\">\n <label class=\"ns-password__label\" [for]=\"controlId()\">{{ label() }}</label>\n @if (forgotLink()) {\n <a class=\"ns-password__forgot-link\" [routerLink]=\"forgotLink()\">{{\n forgotLinkLabel()\n }}</a>\n }\n </div>\n}\n\n<div class=\"ns-password__group\">\n <input\n class=\"ns-password__control\"\n [id]=\"controlId()\"\n [type]=\"show ? 'text' : 'password'\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [placeholder]=\"placeholder()\"\n (blur)=\"onTouched()\"\n [disabled]=\"disabled()\"\n />\n\n <button\n type=\"button\"\n class=\"ns-password__append\"\n [attr.aria-label]=\"show ? 'Hide password' : 'Show password'\"\n [attr.aria-pressed]=\"show\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n >\n <ns-icon class=\"ns-password__toggle\" [name]=\"show ? 'eye-off' : 'eye'\" />\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input\n} from '@angular/core';\nimport { NsAriaIdService } from '../../../a11y';\nimport { NsRadioGroupContext } from './radio-context';\n\n@Component({\n selector: 'ns-radio',\n standalone: true,\n template: `<label class=\"ns-radio__label\" [for]=\"id\"\n ><input\n class=\"ns-radio__input\"\n [id]=\"id\"\n type=\"radio\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"group?.value() === value()\"\n [disabled]=\"disabled() || group?.disabled()\"\n (change)=\"select()\"\n (blur)=\"group?.onTouched()\"\n /><span>{{ label() }}</span></label\n >`,\n styleUrls: ['./radio.component.scss'],\n host: { '[class.ns-radio]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsRadioComponent {\n private readonly ids = inject(NsAriaIdService);\n readonly group = inject(NsRadioGroupContext, {\n optional: true,\n skipSelf: true\n });\n readonly id = this.ids.create('ns-radio');\n readonly value = input.required<string>();\n readonly label = input<string | undefined>(undefined);\n readonly name = input<string | undefined>(undefined);\n readonly disabled = input(false);\n select(): void {\n if (!this.disabled() && !this.group?.disabled()) {\n this.group?.select(this.value());\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n inject\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\nimport { NsRadioGroupContext } from './radio-context';\n\n@Component({\n selector: 'ns-radio-group',\n standalone: true,\n template: `@if (label()) {\n <span class=\"ns-radio-group__label\" [id]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </span>\n }\n <div\n class=\"ns-radio-group__control\"\n role=\"radiogroup\"\n [attr.aria-labelledby]=\"label() ? controlId() : null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"invalid() || null\"\n >\n <ng-content />\n </div>\n @if (description()) {\n <p class=\"ns-radio-group__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-radio-group__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsRadioGroupComponent),\n multi: true\n },\n NsRadioGroupContext\n ],\n host: { '[class.ns-radio-group]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsRadioGroupComponent extends NsValueAccessor<string | null> {\n private readonly context = inject(NsRadioGroupContext);\n constructor() {\n super();\n this.context.select = (value) => this.setValue(value);\n }\n override writeValue(value: string | null): void {\n super.writeValue(value);\n this.context.value.set(value);\n }\n override setValue(value: string | null): void {\n super.setValue(value);\n this.context.value.set(value);\n }\n override setDisabledState(disabled: boolean): void {\n super.setDisabledState(disabled);\n this.context.disabled.set(disabled);\n }\n override registerOnChange(fn: (value: string | null) => void): void {\n super.registerOnChange(fn);\n }\n override registerOnTouched(fn: () => void): void {\n super.registerOnTouched(fn);\n this.context.onTouched = fn;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\nexport type NsSliderValue = number | readonly [number, number];\n@Component({\n selector: 'ns-slider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (range()) {\n <fieldset\n class=\"ns-slider__range\"\n [attr.aria-describedby]=\"describedBy()\"\n >\n @if (label()) {\n <legend class=\"ns-slider__label\" [id]=\"rangeLabelId\">\n {{ label() }}\n </legend>\n }\n <input\n [id]=\"rangeStartId\"\n type=\"range\"\n [attr.aria-labelledby]=\"rangeStartLabelledBy()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"start()\"\n (input)=\"setRangeStart($event)\"\n (blur)=\"onTouched()\"\n /><input\n [id]=\"rangeEndId\"\n type=\"range\"\n [attr.aria-labelledby]=\"rangeEndLabelledBy()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"end()\"\n (input)=\"setRangeEnd($event)\"\n (blur)=\"onTouched()\"\n />\n <span\n class=\"ns-slider__range-description\"\n [id]=\"rangeStartDescriptionId\"\n >Start</span\n >\n <span class=\"ns-slider__range-description\" [id]=\"rangeEndDescriptionId\"\n >End</span\n >\n </fieldset>\n } @else {\n @if (label()) {\n <label class=\"ns-slider__label\" [for]=\"controlId()\">{{\n label()\n }}</label>\n }\n <input\n class=\"ns-slider__control\"\n [id]=\"controlId()\"\n type=\"range\"\n [name]=\"name()\"\n [min]=\"min()\"\n [max]=\"max()\"\n [step]=\"step()\"\n [disabled]=\"disabled()\"\n [value]=\"single()\"\n [attr.aria-describedby]=\"describedBy()\"\n (input)=\"setSingle($event)\"\n (blur)=\"onTouched()\"\n />\n }\n @if (description()) {\n <p class=\"ns-slider__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }`,\n styleUrls: ['./slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsSliderComponent),\n multi: true\n }\n ],\n host: { '[class.ns-slider]': 'true' }\n})\nexport class NsSliderComponent extends NsValueAccessor<NsSliderValue> {\n readonly min = input(0);\n readonly max = input(100);\n readonly step = input(1);\n readonly range = input(false);\n readonly rangeStartId = `${this.id}-start`;\n readonly rangeEndId = `${this.id}-end`;\n readonly rangeLabelId = `${this.id}-range-label`;\n readonly rangeStartDescriptionId = `${this.id}-range-start`;\n readonly rangeEndDescriptionId = `${this.id}-range-end`;\n readonly rangeStartLabelledBy = () =>\n this.label()\n ? `${this.rangeLabelId} ${this.rangeStartDescriptionId}`\n : this.rangeStartDescriptionId;\n readonly rangeEndLabelledBy = () =>\n this.label()\n ? `${this.rangeLabelId} ${this.rangeEndDescriptionId}`\n : this.rangeEndDescriptionId;\n single(): number {\n const value = this.value();\n return typeof value === 'number' ? value : this.min();\n }\n start(): number {\n const value = this.value();\n return Array.isArray(value) ? value[0] : this.min();\n }\n end(): number {\n const value = this.value();\n return Array.isArray(value) ? value[1] : this.max();\n }\n setSingle(event: Event): void {\n this.setValue(Number((event.target as HTMLInputElement).value));\n }\n setRangeStart(event: Event): void {\n this.setValue([\n Math.min(Number((event.target as HTMLInputElement).value), this.end()),\n this.end()\n ]);\n }\n setRangeEnd(event: Event): void {\n this.setValue([\n this.start(),\n Math.max(Number((event.target as HTMLInputElement).value), this.start())\n ]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\nexport type NsSwitchLayout = 'inline' | 'row';\nexport type NsSwitchSize = 'sm' | 'md';\n\n@Component({\n selector: 'ns-switch',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `<input\n type=\"checkbox\"\n class=\"ns-switch__input\"\n role=\"switch\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n /><label class=\"ns-switch__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n @if (description()) {\n <p class=\"ns-switch__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-switch__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./switch.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsSwitchComponent),\n multi: true\n }\n ],\n host: {\n '[class.ns-switch]': 'true',\n '[class.ns-switch--inline]': \"layout() === 'inline'\",\n '[class.ns-switch--row]': \"layout() === 'row'\",\n '[class.ns-switch--sm]': \"size() === 'sm'\",\n '[class.ns-switch--md]': \"size() === 'md'\"\n }\n})\nexport class NsSwitchComponent extends NsValueAccessor<boolean> {\n readonly layout = input<NsSwitchLayout>('inline');\n readonly size = input<NsSwitchSize>('md');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n forwardRef,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../../models/value-accessor';\n\n@Component({\n selector: 'ns-textarea',\n standalone: true,\n imports: [FormsModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `@if (label()) {\n <label class=\"ns-textarea__label\" [for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n }\n <textarea\n class=\"ns-textarea__control\"\n [id]=\"controlId()\"\n [name]=\"name()\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"describedBy()\"\n (blur)=\"onTouched()\"\n ></textarea>\n @if (description()) {\n <p class=\"ns-textarea__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (invalid() && errorMessage()) {\n <p class=\"ns-textarea__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n }`,\n styleUrls: ['./text-area.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsTextAreaComponent),\n multi: true\n }\n ],\n host: {\n '[class.ns-textarea]': 'true',\n '[class.ns-textarea--invalid]': 'invalid()'\n }\n})\nexport class NsTextAreaComponent extends NsValueAccessor<string> {\n readonly rows = input(3);\n}\n","import {\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Renderer2,\n input,\n signal\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsValueAccessor } from '../models/value-accessor';\n\n@Component({\n selector: 'ns-content-editable',\n template: '',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsContentEditableComponent),\n multi: true\n }\n ],\n styleUrl: './content-editable.component.scss',\n host: {\n '[class.ns-content-editable]': 'true',\n '[class.ns-content-editable--disabled]': 'disabled()'\n }\n})\nexport class NsContentEditableComponent extends NsValueAccessor<string> {\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly maxLength = input<number>(undefined, { alias: 'maxlength' });\n\n /**\n * Character count of the rendered content, measured the same way the\n * `maxlength` guard below measures it (`innerText.length`) so a consumer's\n * counter never drifts from what actually blocks typing.\n */\n readonly length = signal(0);\n\n @HostBinding('attr.contenteditable')\n enabled: boolean = true;\n\n override writeValue(value: string): void {\n if (typeof value !== 'undefined') {\n this.renderer.setProperty(\n this.elementRef.nativeElement,\n 'innerHTML',\n value || ''\n );\n this.updateLength();\n }\n }\n\n @HostListener('input')\n onInput(): void {\n this.onChange(this.elementRef.nativeElement.innerHTML);\n this.updateLength();\n }\n\n private updateLength(): void {\n this.length.set(this.elementRef.nativeElement.innerText?.length ?? 0);\n }\n\n @HostListener('blur')\n onBlur(): void {\n this.onTouched();\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n const maxLength = this.maxLength();\n if (maxLength && this.length() >= maxLength && event.key !== 'Backspace') {\n event.preventDefault();\n }\n }\n\n override setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n this.enabled = !isDisabled;\n }\n}\n","// COMPONENTS\nexport * from './components/checkbox';\nexport * from './components/date-picker';\nexport * from './components/dropdown';\nexport * from './components/input';\nexport * from './components/input-code';\nexport * from './components/input-group';\nexport * from './components/input-number';\nexport * from './components/input-search';\nexport * from './components/option-card';\nexport * from './components/password';\nexport * from './components/radio';\nexport * from './components/slider';\nexport * from './components/switch';\nexport * from './components/text-area';\n\n// DIRECTIVES\nexport * from './directives';\n\n// FOUNDATION\nexport * from './foundation';\n\n// MODELS\nexport * from './models';\n","import { Component, OnInit, input, output } from '@angular/core';\nimport { NsComment } from './interfaces/comment';\nimport { NgClass } from '@angular/common';\nimport { NsAvatarComponent } from '../avatar';\nimport { NsContentEditableComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\nimport { NsHumanizePipe, NsSafeHtmlPipe } from '@ng-solid/core';\n\n@Component({\n selector: 'ns-comment',\n templateUrl: './comment.component.html',\n styleUrls: ['./comment.component.scss'],\n imports: [\n NgClass,\n NsAvatarComponent,\n NsContentEditableComponent,\n FormsModule,\n NsSafeHtmlPipe,\n NsHumanizePipe\n ]\n})\nexport class NsCommentComponent implements OnInit {\n readonly title = input<string>(undefined);\n readonly description = input<string>(undefined);\n readonly placeholder = input<string>(undefined);\n readonly messages = input<NsComment[]>([]);\n readonly cover = input<{\n url: string;\n alt?: string;\n }>(undefined);\n readonly submitText = input<string>(undefined);\n readonly logged = input<boolean>(undefined);\n readonly maxLength = input<number>(128);\n readonly disabled = input<boolean>(undefined);\n\n readonly commit = output<string>();\n\n public invalid: boolean = false;\n public content: string = '';\n\n private clearEmptyValues: RegExp = new RegExp(/(<div><br><\\/div>)*/g);\n\n constructor() {}\n\n ngOnInit(): void {}\n\n publish() {\n if (this.content) {\n this.commit.emit(this.content.replace(this.clearEmptyValues, ''));\n this.content = '';\n } else {\n this.invalid = true;\n }\n }\n\n get counter() {\n const characters = this.maxLength() - this.content.length;\n return characters > 0 ? characters : 0;\n }\n}\n","@if (logged()) {\n <div\n class=\"ns-comment__box\"\n [ngClass]=\"{ 'ns-comment__box--invalid': invalid }\"\n >\n <ns-avatar class=\"ns-comment__avatar\" [src]=\"cover()?.url\" />\n\n <div class=\"ns-comment__input-wrap\">\n <div class=\"ns-comment__input\">\n <ns-content-editable\n class=\"ns-comment__input-content\"\n [maxlength]=\"maxLength()\"\n [(ngModel)]=\"content\"\n [disabled]=\"disabled()\"\n />\n\n @if (!content) {\n <span class=\"ns-comment__input-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n <div class=\"ns-comment__footer\">\n <span class=\"ns-comment__counter\">Quedan {{ counter }} caracteres</span>\n\n @if (submitText()) {\n <button\n class=\"ns-comment__submit\"\n (click)=\"publish()\"\n [disabled]=\"disabled()\"\n >\n {{ submitText() }}\n </button>\n }\n </div>\n </div>\n </div>\n} @else {\n <h4 class=\"ns-comment__title\">\n {{ title() }} <br />\n <small\n class=\"ns-comment__description\"\n [innerHTML]=\"description() | nsSafeHtml\"\n ></small>\n </h4>\n\n <div class=\"ns-comment__logout\">\n <ng-content />\n </div>\n}\n@if (messages().length) {\n <ul class=\"ns-comment__list\">\n @for (comment of messages(); track comment) {\n <li class=\"ns-comment__item\">\n <ns-avatar\n class=\"ns-comment__cover\"\n [src]=\"comment.cover?.url\"\n size=\"md\"\n />\n\n <div class=\"ns-comment__wrap\">\n <div class=\"ns-comment__user-wrap\">\n @if (comment?.author; as author) {\n <a [attr.href]=\"author.link\" class=\"ns-comment__author\">\n {{ author.name }}\n </a>\n }\n @if (comment?.created; as date) {\n <span class=\"ns-comment__date\">{{ date | nsHumanize }}</span>\n }\n\n <div\n class=\"ns-comment__message\"\n [innerHTML]=\"comment?.message | nsSafeHtml\"\n ></div>\n </div>\n </div>\n </li>\n }\n </ul>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n inject,\n input\n} from '@angular/core';\nimport { NsAriaIdService, NsFieldContext } from '../a11y';\n\n@Component({\n selector: 'ns-description',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './description.component.scss',\n host: {\n '[attr.id]': 'id()',\n '[attr.aria-live]': 'live()',\n '[class.ns-description]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDescriptionComponent {\n private readonly ariaIds = inject(NsAriaIdService);\n private readonly field = inject(NsFieldContext, {\n optional: true,\n host: true\n });\n private readonly destroyRef = inject(DestroyRef);\n\n readonly id = input(this.ariaIds.create('ns-description'));\n readonly live = input<'off' | 'polite' | 'assertive'>('off');\n\n constructor() {\n if (!this.field) {\n return;\n }\n const field = this.field;\n const registration = effect(() => {\n const id = this.id();\n field.registerDescription(id);\n return () => field.unregisterDescription(id);\n });\n this.destroyRef.onDestroy(() => registration.destroy());\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsOrientation } from '../../types';\n\n@Component({\n selector: 'ns-divider',\n standalone: true,\n template: '',\n styleUrl: './divider.component.scss',\n host: {\n role: 'separator',\n '[attr.aria-orientation]': 'orientation()',\n '[class.ns-divider]': 'true',\n '[class.ns-divider--horizontal]': \"orientation() === 'horizontal'\",\n '[class.ns-divider--vertical]': \"orientation() === 'vertical'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDividerComponent {\n readonly orientation = input<NsOrientation>('horizontal');\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n effect,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsDrawerPosition } from './interfaces/drawer-config';\n\n@Component({\n selector: 'ns-drawer',\n standalone: true,\n template: `\n <div class=\"ns-drawer__backdrop\" aria-hidden=\"true\"></div>\n <aside\n class=\"ns-drawer__panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"title() || null\"\n [class.ns-drawer__panel--start]=\"position() === 'start'\"\n tabindex=\"-1\"\n >\n <header class=\"ns-drawer__header\">\n @if (title()) {\n <h2 class=\"ns-drawer__title\">{{ title() }}</h2>\n }\n <button\n class=\"ns-drawer__close\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"close()\"\n >\n ×\n </button>\n </header>\n <div class=\"ns-drawer__body\">\n @if (contentComponent()) {\n <ng-template #contentHost />\n } @else {\n <ng-content />\n }\n </div>\n </aside>\n `,\n styleUrl: './drawer.component.scss',\n host: {\n '[class.ns-drawer]': 'true',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsDrawerComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly title = input('');\n readonly position = input<NsDrawerPosition>('end');\n readonly closeLabel = input('Close drawer');\n readonly closeOnEscape = input(true);\n readonly closed = output<NsOverlayCloseReason>();\n readonly contentComponent = input<Type<object> | null>(null);\n readonly contentInputs = input<Record<string, unknown>>({});\n readonly closeReason = signal<NsOverlayCloseReason | undefined>(undefined);\n\n @ViewChild('contentHost', { read: ViewContainerRef })\n private contentHost?: ViewContainerRef;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private contentRef?: ComponentRef<object>;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => this.createContent());\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n this.createContent();\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n this.contentRef?.destroy();\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n getContent<T extends object>(): T {\n if (!this.contentRef) {\n throw new Error('Drawer content could not be created.');\n }\n return this.contentRef.instance as T;\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: false,\n trapFocus: true,\n restoreFocus: true,\n inert: true,\n lockScroll: true\n });\n overlayRef.portal.classList.add('ns-drawer__portal');\n overlayRef.portal.style.inset = '0';\n overlayRef.portal.style.border = '0';\n overlayRef.portal.style.borderRadius = '0';\n overlayRef.portal.style.background = 'transparent';\n overlayRef.portal.style.boxShadow = 'none';\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n this.closeReason.set(reason);\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n\n private createContent(): void {\n const component = this.contentComponent();\n if (\n !this.viewInitialized ||\n !component ||\n !this.contentHost ||\n this.contentRef\n ) {\n return;\n }\n this.contentRef = this.contentHost.createComponent(component);\n for (const [name, value] of Object.entries(this.contentInputs())) {\n this.contentRef.setInput(name, value);\n }\n }\n}\n","import { ComponentRef, Signal } from '@angular/core';\nimport { NsOverlayCloseReason } from '../../overlay';\nimport { NsDrawerComponent } from '../drawer.component';\n\nexport class NsDrawerRef<T> {\n constructor(\n private readonly componentRef: ComponentRef<NsDrawerComponent>,\n readonly content: T,\n readonly closed: Signal<NsOverlayCloseReason | undefined>\n ) {}\n\n close(): void {\n this.componentRef.instance.close();\n }\n}\n","import {\n ApplicationRef,\n EnvironmentInjector,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\nimport { NsDrawerConfig } from '../interfaces/drawer-config';\nimport { NsDrawerComponent } from '../drawer.component';\nimport { NsDrawerRef } from '../models/drawer-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class NsDrawerService {\n private readonly applicationRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n open<T extends object>(config: NsDrawerConfig<T>): NsDrawerRef<T> {\n const componentRef = createComponent(NsDrawerComponent, {\n environmentInjector: this.environmentInjector\n });\n componentRef.setInput('title', config.title ?? '');\n componentRef.setInput('position', config.position ?? 'end');\n componentRef.setInput('closeOnEscape', config.closeOnEscape ?? true);\n componentRef.setInput('contentComponent', config.component);\n componentRef.setInput('contentInputs', config.inputs ?? {});\n this.applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n componentRef.instance.isOpen.set(true);\n\n const drawerRef = new NsDrawerRef(\n componentRef,\n componentRef.instance.getContent<T>(),\n componentRef.instance.closeReason\n );\n componentRef.instance.closed.subscribe(() => {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return drawerRef;\n }\n}\n","export enum Commands {\n BOLD = 'bold',\n CREATE_LINK = 'createLink',\n FONT_NAME = 'fontName',\n FONT_SIZE = 'fontSize',\n FORMAT_BLOCK = 'formatBlock',\n INSERT_HTML = 'insertHTML',\n INSERT_IMAGE = 'insertImage',\n INSERT_ORDERED_LIST = 'insertOrderedList',\n INSERT_UNORDERED_LIST = 'insertUnorderedList',\n INSERT_TEXT = 'insertText',\n ITALIC = 'italic',\n JUSTIFY_CENTER = 'justifyCenter',\n JUSTIFY_FULL = 'justifyFull',\n JUSTIFY_LEFT = 'justifyLeft',\n JUSTIFY_RIGHT = 'justifyRight',\n UNDERLINE = 'underline',\n UNLINK = 'unlink',\n TEXT_COLOR = 'foreColor',\n BACKGROUND_COLOR = 'backColor'\n}\n","export const LABELS_DEFAULT: Record<string, string> = {\n bold: 'Bold',\n italic: 'Italic',\n code: 'Code',\n underline: 'Underline',\n strike: 'Strike',\n blockquote: 'Blockquote',\n bullet_list: 'Bullet List',\n ordered_list: 'Ordered List',\n paragraph: 'Paragraph',\n h1: 'Header 1',\n h2: 'Header 2',\n h3: 'Header 3',\n h4: 'Header 4',\n h5: 'Header 5',\n h6: 'Header 6',\n align_left: 'Left Align',\n align_center: 'Center Align',\n align_right: 'Right Align',\n align_justify: 'Justify',\n text_color: 'Text Color',\n background_color: 'Background Color',\n insert_link: 'Insert Link',\n close_link: 'Close link form',\n link: 'Paste your link',\n text: 'Text to display',\n tooltip_link: 'Tooltip',\n open_new_window: 'Open link in new window',\n submit_link: 'Insert',\n remove_color: 'Remove',\n insert_image: 'Insert Image',\n close_image: 'Close image form',\n image_url: 'Paste the image URL',\n image_alt: 'Alternative text',\n submit_image: 'Insert'\n};\n\nexport type LabelsKeys = keyof typeof LABELS_DEFAULT;\n\nexport class Labels {\n private readonly storage = LABELS_DEFAULT;\n\n constructor(newLabels: Partial<Record<LabelsKeys, string>> = {}) {\n this.storage = { ...LABELS_DEFAULT, ...newLabels };\n }\n\n get = (key: string): string => {\n return this.storage[key] ?? '';\n };\n}\n","import { Labels } from '../models/labels';\nimport { NsEditorSetup } from '../interfaces/editor-config';\nimport { Commands } from '../enums/commands.enum';\nimport { inject, Injectable, InjectionToken, DOCUMENT } from '@angular/core';\n\nexport const NS_EDITOR_SETUP = new InjectionToken<NsEditorSetup>(\n 'NsEditorSetup'\n);\n\n/** Character entities used to neutralize markup when a value is interpolated into HTML. */\nconst HTML_ESCAPES: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n};\n\n/** Matches control characters (including tab/newline) that browsers ignore when resolving a URL scheme. */\n// eslint-disable-next-line no-control-regex\nconst CONTROL_CHARS_PATTERN = /[\\x00-\\x1f\\x7f]/g;\n\n/** Matches a leading `scheme:` on a URL. Absence means the URL is relative or a fragment (`/path`, `./path`, `#anchor`). */\nconst SCHEME_PATTERN = /^([a-zA-Z][a-zA-Z\\d+\\-.]*):/;\n\nconst LINK_ALLOWED_SCHEMES = ['http:', 'https:', 'mailto:', 'tel:'];\nconst IMAGE_ALLOWED_SCHEMES = ['http:', 'https:'];\nconst IMAGE_DATA_URL_PATTERN = /^data:image\\/[a-z0-9.+-]+[;,]/i;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsEditorService {\n private config = inject<NsEditorSetup>(NS_EDITOR_SETUP, { optional: true });\n private doc = inject(DOCUMENT);\n\n private savedSelection: Range | null;\n private selectedText: string;\n private readonly labels: Labels;\n\n constructor() {\n const config = this.config;\n\n this.labels = new Labels(config ? config.labels : {});\n }\n\n translate(key: string): string {\n return this.labels.get(key);\n }\n\n saveSelection() {\n switch (true) {\n case !!this.doc.getSelection:\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n break;\n case !!this.doc.getSelection && !!this.doc.createRange:\n this.savedSelection = document.createRange();\n break;\n default:\n this.savedSelection = null;\n }\n }\n\n command(name: Commands, value?: string) {\n this.doc.execCommand(name, false, value);\n }\n\n formatBlock(heading: string) {\n const headings = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (headings.includes(heading)) {\n this.doc.execCommand(Commands.FORMAT_BLOCK, false, heading);\n }\n }\n\n createLink(link: {\n text: string;\n url: string;\n tooltip: string;\n openNewWindow: boolean;\n }) {\n const resolvedUrl = this.resolveLinkUrl(link.url);\n if (resolvedUrl === null) {\n // Unsupported/unsafe scheme (e.g. `javascript:`): skip silently, the\n // form already validated that a URL was entered, so no error is thrown here.\n return;\n }\n\n const href = this.escapeHtml(resolvedUrl);\n const title = this.escapeHtml(link.tooltip);\n const text = this.escapeHtml(link.text);\n const target = link.openNewWindow ? '_blank' : '_self';\n // `noopener noreferrer` prevents the new tab from reaching back into this\n // page via window.opener; only meaningful (and only emitted) for _blank.\n const rel = link.openNewWindow ? ' rel=\"noopener noreferrer\"' : '';\n\n const newUrl = `<a href=\"${href}\" title=\"${title}\" target=\"${target}\"${rel}>${text}</a>`;\n this.insertHtml(newUrl);\n }\n\n insertImage(image: { url: string; alt?: string }): void {\n const resolvedUrl = this.resolveImageUrl(image.url);\n if (resolvedUrl === null) {\n // Unsupported/unsafe scheme (e.g. `javascript:`, non-image `data:`):\n // skip silently, mirroring createLink's rejection behaviour.\n return;\n }\n\n const src = this.escapeHtml(resolvedUrl);\n const alt = this.escapeHtml(image.alt ?? '');\n\n this.insertHtml(`<img src=\"${src}\" alt=\"${alt}\">`);\n }\n\n insertHtml(html: string): void {\n const isHTMLInserted = this.doc.execCommand(\n Commands.INSERT_HTML,\n false,\n html\n );\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n\n /** Escapes `&`, `<`, `>`, `\"` and `'` — safe for both HTML attribute values and text nodes. */\n private escapeHtml(value: string): string {\n return value.replace(/[&<>\"']/g, (char) => HTML_ESCAPES[char] ?? char);\n }\n\n /** Strips embedded control characters and surrounding whitespace so a scheme like `java\\tscript:` can't be smuggled in. */\n private normalizeUrl(url: string): string {\n return url.replace(CONTROL_CHARS_PATTERN, '').trim();\n }\n\n /** Returns the lowercased `scheme:` (with trailing colon) or null when the URL is relative/a fragment. */\n private extractScheme(normalizedUrl: string): string | null {\n const match = normalizedUrl.match(SCHEME_PATTERN);\n return match ? `${match[1].toLowerCase()}:` : null;\n }\n\n /**\n * Normalizes and validates a link URL in one pass. Returns the normalized\n * URL when its scheme is allowed (or absent), `null` otherwise. Callers\n * must escape and insert the returned string — never the raw input — so\n * the value that was validated is always the value that gets inserted.\n */\n private resolveLinkUrl(url: string): string | null {\n const normalized = this.normalizeUrl(url);\n const scheme = this.extractScheme(normalized);\n if (scheme === null) {\n return normalized;\n }\n return LINK_ALLOWED_SCHEMES.includes(scheme) ? normalized : null;\n }\n\n /**\n * Normalizes and validates an image URL in one pass. Returns the\n * normalized URL when its scheme is allowed (or absent), `null`\n * otherwise. Callers must escape and insert the returned string — never\n * the raw input — so the value that was validated is always the value\n * that gets inserted.\n */\n private resolveImageUrl(url: string): string | null {\n const normalized = this.normalizeUrl(url);\n const scheme = this.extractScheme(normalized);\n if (scheme === null) {\n return normalized;\n }\n if (scheme === 'data:') {\n return IMAGE_DATA_URL_PATTERN.test(normalized) ? normalized : null;\n }\n return IMAGE_ALLOWED_SCHEMES.includes(scheme) ? normalized : null;\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { NsEditorService } from '../services/editor.service';\n\n@Pipe({\n name: 'nsEditorLabel'\n})\nexport class NsEditorLabelPipe implements PipeTransform {\n private editor = inject(NsEditorService);\n\n transform(key: string): string {\n return this.editor.translate(key);\n }\n}\n","import {\n Component,\n OnInit,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgStyle } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n imports: [NgStyle, NsEditorLabelPipe]\n})\nexport class NsEditorColorPickerComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n readonly presets = input<string[][]>(undefined);\n readonly type = input<'text_color' | 'background_color'>('text_color');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n showPopup = false;\n activeColor?: string;\n isActive: boolean;\n\n trackByIndex = (index: number): number => index;\n\n ngOnInit(): void {}\n\n private get command(): Commands {\n return this.type() === 'text_color'\n ? Commands.TEXT_COLOR\n : Commands.BACKGROUND_COLOR;\n }\n\n toggle() {\n this.showPopup = !this.showPopup;\n }\n\n getContrastYIQ(hexadecimal: string): string {\n const color = hexadecimal.replace('#', '');\n const r = parseInt(color.substring(0, 2), 16);\n const g = parseInt(color.substring(2, 4), 16);\n const b = parseInt(color.substring(4, 6), 16);\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? 'black' : 'white';\n }\n\n onColorSelect(color: string): void {\n this.editor.command(this.command, (this.activeColor = color));\n this.toggle();\n }\n\n remove() {}\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n [attr.aria-label]=\"type() | nsEditorLabel\"\n [attr.aria-expanded]=\"showPopup\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <span class=\"ns-editor__color-text\">\n <svg\n role=\"presentation\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M14 12.5h-4l-.874 2.186A.5.5 0 0 1 8.66 15H7.273a.5.5 0 0 1-.456-.705l4.05-9A.5.5 0 0 1 11.323 5h1.354a.5.5 0 0 1 .456.295l4.05 9a.5.5 0 0 1-.456.705h-1.388a.5.5 0 0 1-.465-.314L14 12.5zm-.6-1.5L12 7.5 10.6 11h2.8z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n <span></span>\n </span>\n\n <svg\n role=\"presentation\"\n class=\"ns-editor__toggle\"\n fill=\"currentColor\"\n height=\"12px\"\n viewBox=\"0 0 16 16\"\n width=\"12px\"\n >\n <path\n d=\"M14,11.75a.74.74,0,0,1-.53-.22L8,6.06,2.53,11.53a.75.75,0,0,1-1.06-1.06l6-6a.75.75,0,0,1,1.06,0l6,6a.75.75,0,0,1,0,1.06A.74.74,0,0,1,14,11.75Z\"\n ></path>\n </svg>\n</button>\n\n@if (showPopup) {\n <div class=\"ns-editor__popup\">\n @for (colorGroup of presets(); track $index) {\n <div class=\"ns-editor__color-container\">\n @for (color of colorGroup; track $index) {\n <button\n class=\"ns-editor__color\"\n type=\"button\"\n [ngStyle]=\"{ backgroundColor: color, color: getContrastYIQ(color) }\"\n [title]=\"color\"\n [attr.aria-label]=\"color\"\n (click)=\"onColorSelect(color)\"\n ></button>\n }\n </div>\n }\n </div>\n}\n","import {\n Component,\n booleanAttribute,\n inject,\n input,\n OnInit\n} from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgClass } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\nimport { NsInputComponent } from '../../../form';\nimport { NsButtonComponent } from '../../../button';\n\n@Component({\n selector: 'ns-editor-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.scss'],\n imports: [\n ReactiveFormsModule,\n NgClass,\n NsEditorLabelPipe,\n NsInputComponent,\n NsButtonComponent\n ]\n})\nexport class NsEditorImageComponent implements OnInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public formImage: FormGroup;\n public show: boolean;\n private fb = inject(FormBuilder);\n private editor = inject(NsEditorService);\n\n ngOnInit(): void {\n this.formImage = this.fb.group({\n url: ['', Validators.required],\n text: ['']\n });\n }\n\n insert() {\n if (this.formImage.valid) {\n const { url, text } = this.formImage.getRawValue();\n this.editor.insertImage({ url, alt: text });\n this.formImage.reset();\n this.show = false;\n }\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n id=\"ns-editor-image\"\n [attr.aria-label]=\"'insert_image' | nsEditorLabel\"\n [disabled]=\"disabled()\"\n (click)=\"show = true\"\n>\n <svg\n viewBox=\"0 0 24 24\"\n role=\"presentation\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M5 4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H5Zm14 2H5v8.586l3.293-3.293a1 1 0 0 1 1.414 0L12 13.586l3.793-3.793a1 1 0 0 1 1.414 0L19 11.586V6ZM5 18v-2.586l4-4 2.293 2.293a1 1 0 0 0 1.414 0L17 9.414 19 11.414V18H5Z\"\n ></path>\n <circle cx=\"8\" cy=\"9\" r=\"1.5\"></circle>\n </svg>\n</button>\n\n<form\n [formGroup]=\"formImage\"\n class=\"ns-editor__form-image\"\n aria-labelledby=\"ns-editor-image\"\n [ngClass]=\"{ 'ns-editor__form-image--visible': show }\"\n (ngSubmit)=\"insert()\"\n>\n <header>\n <label>{{ 'insert_image' | nsEditorLabel }}</label>\n <button\n type=\"button\"\n class=\"ns-editor__close\"\n [attr.aria-label]=\"'close_image' | nsEditorLabel\"\n (click)=\"show = false\"\n ></button>\n </header>\n\n <ns-input\n [formControlName]=\"'url'\"\n [placeholder]=\"'image_url' | nsEditorLabel\"\n />\n <ns-input\n [formControlName]=\"'text'\"\n [placeholder]=\"'image_alt' | nsEditorLabel\"\n />\n\n <footer>\n <ns-button type=\"submit\">{{ 'submit_image' | nsEditorLabel }}</ns-button>\n </footer>\n</form>\n","import {\n Component,\n booleanAttribute,\n inject,\n input,\n OnInit\n} from '@angular/core';\nimport {\n FormBuilder,\n FormGroup,\n ReactiveFormsModule,\n Validators\n} from '@angular/forms';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NgClass } from '@angular/common';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\nimport { NsCheckboxComponent, NsInputComponent } from '../../../form';\nimport { NsButtonComponent } from '../../../button';\n\n@Component({\n selector: 'ns-editor-link',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n imports: [\n ReactiveFormsModule,\n NgClass,\n NsEditorLabelPipe,\n NsInputComponent,\n NsCheckboxComponent,\n NsButtonComponent\n ]\n})\nexport class NsEditorLinkComponent implements OnInit {\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public formLink: FormGroup;\n public show: boolean;\n private fb = inject(FormBuilder);\n private editor = inject(NsEditorService);\n\n ngOnInit(): void {\n this.formLink = this.fb.group({\n text: ['', Validators.required],\n url: ['', Validators.required],\n tooltip: [''],\n openNewWindow: [true]\n });\n }\n\n insert() {\n if (this.formLink.valid) {\n this.editor.createLink(this.formLink.getRawValue());\n this.formLink.reset();\n this.show = false;\n }\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n id=\"ns-editor-link\"\n [attr.aria-label]=\"'insert_link' | nsEditorLabel\"\n [disabled]=\"disabled()\"\n (click)=\"show = true\"\n>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M12.654 8.764a.858.858 0 01-1.213-1.213l1.214-1.214a3.717 3.717 0 015.257 0 3.714 3.714 0 01.001 5.258l-1.214 1.214-.804.804a3.72 3.72 0 01-5.263.005.858.858 0 011.214-1.214c.781.782 2.05.78 2.836-.005l.804-.803 1.214-1.214a1.998 1.998 0 00-.001-2.831 2 2 0 00-2.83 0l-1.215 1.213zm-.808 6.472a.858.858 0 011.213 1.213l-1.214 1.214a3.717 3.717 0 01-5.257 0 3.714 3.714 0 01-.001-5.258l1.214-1.214.804-.804a3.72 3.72 0 015.263-.005.858.858 0 01-1.214 1.214 2.005 2.005 0 00-2.836.005l-.804.803L7.8 13.618a1.998 1.998 0 00.001 2.831 2 2 0 002.83 0l1.215-1.213z\"\n ></path>\n </svg>\n</button>\n\n<form\n [formGroup]=\"formLink\"\n class=\"ns-editor__form-link\"\n aria-labelledby=\"ns-editor-link\"\n [ngClass]=\"{ 'ns-editor__form-link--visible': show }\"\n (ngSubmit)=\"insert()\"\n>\n <header>\n <label>{{ 'insert_link' | nsEditorLabel }}</label>\n <button\n type=\"button\"\n class=\"ns-editor__close\"\n [attr.aria-label]=\"'close_link' | nsEditorLabel\"\n (click)=\"show = false\"\n ></button>\n </header>\n\n <ns-input [formControlName]=\"'url'\" [placeholder]=\"'link' | nsEditorLabel\" />\n <ns-input [formControlName]=\"'text'\" [placeholder]=\"'text' | nsEditorLabel\" />\n <ns-input\n [formControlName]=\"'tooltip'\"\n [placeholder]=\"'tooltip_link' | nsEditorLabel\"\n />\n <ns-checkbox\n [formControlName]=\"'openNewWindow'\"\n [label]=\"'open_new_window' | nsEditorLabel\"\n />\n\n <footer>\n <ns-button type=\"submit\">{{ 'submit_link' | nsEditorLabel }}</ns-button>\n </footer>\n</form>\n","import {\n Component,\n OnInit,\n booleanAttribute,\n inject,\n input\n} from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-list',\n templateUrl: './list.component.html',\n styleUrl: './list.component.scss',\n imports: [NsEditorLabelPipe]\n})\nexport class NsEditorListComponent implements OnInit {\n private editor = inject(NsEditorService);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public commands = Commands;\n\n ngOnInit(): void {}\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'bullet_list' | nsEditorLabel\"\n (click)=\"command(commands.INSERT_UNORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M6 8c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'ordered_list' | nsEditorLabel\"\n (click)=\"command(commands.INSERT_ORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M11 7h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 0h3v1H6v-1zm0 2h3v1H6v-1zm1-9H6V7h2v3H7V8zm-1 3h3v1.333h-.6V13H7.2v-.667H6V11zm0 2h3v1H6v-1zm2 3h2v1H8v-1z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n","import { Component, booleanAttribute, inject, input } from '@angular/core';\nimport { Guid } from '@ng-solid/core';\nimport { NsEditorService } from '../../services/editor.service';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../../../form/components/dropdown';\nimport { FormsModule } from '@angular/forms';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-paragraph',\n templateUrl: './paragraph.component.html',\n styleUrls: ['./paragraph.component.scss'],\n imports: [\n NsDropdownComponent,\n NsDropdownItemDirective,\n FormsModule,\n NsEditorLabelPipe\n ]\n})\nexport class NsEditorParagraphComponent {\n private editor = inject(NsEditorService);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public id: string = Guid.create();\n\n private _value: string = 'p';\n\n get value() {\n return this._value;\n }\n\n set value(heading) {\n this.editor.formatBlock(heading);\n }\n}\n","<ns-dropdown [searchable]=\"false\" [disabled]=\"disabled()\" [(ngModel)]=\"value\">\n <ns-dropdown-item [label]=\"'paragraph' | nsEditorLabel\" key=\"p\" />\n <ns-dropdown-item [label]=\"'h1' | nsEditorLabel\" key=\"h1\" />\n <ns-dropdown-item [label]=\"'h2' | nsEditorLabel\" key=\"h2\" />\n <ns-dropdown-item [label]=\"'h3' | nsEditorLabel\" key=\"h3\" />\n <ns-dropdown-item [label]=\"'h4' | nsEditorLabel\" key=\"h4\" />\n <ns-dropdown-item [label]=\"'h5' | nsEditorLabel\" key=\"h5\" />\n <ns-dropdown-item [label]=\"'h6' | nsEditorLabel\" key=\"h6\" />\n</ns-dropdown>\n","import { Component, booleanAttribute, inject, input } from '@angular/core';\nimport { Commands } from '../../enums/commands.enum';\nimport { NsEditorService } from '../../services/editor.service';\nimport { NsEditorLabelPipe } from '../../pipes/editor-label.pipe';\n\n@Component({\n selector: 'ns-editor-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n imports: [NsEditorLabelPipe]\n})\nexport class NsEditorToggleCommandComponent {\n private editor = inject(NsEditorService);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n public commands = Commands;\n\n command(name: Commands) {\n this.editor.command(name);\n }\n}\n","<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'bold' | nsEditorLabel\"\n (click)=\"command(commands.BOLD)\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M8 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h4.5c2.481 0 4.5-1.165 4.5-4 0-1.698-.724-2.796-1.837-3.405C15.69 10.967 16 10.112 16 9c0-2.835-2.019-4-4.5-4H8Zm1 2v4h3c1.379 0 2-.857 2-2s-.621-2-2-2H9Zm0 6v4h4c1.379 0 2-.857 2-2s-.621-2-2-2H9Z\"\n clip-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'italic' | nsEditorLabel\"\n (click)=\"command(commands.ITALIC)\"\n>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 6a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2h-2.167l-1.666 10H14a1 1 0 1 1 0 2H8a1 1 0 1 1 0-2h2.167l1.666-10H10a1 1 0 0 1-1-1Z\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'underline' | nsEditorLabel\"\n (click)=\"command(commands.UNDERLINE)\"\n>\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n aria-hidden=\"true\"\n >\n <path\n clip-rule=\"evenodd\"\n d=\"M9 5a1 1 0 0 1 1 1v5.5c0 1.343.556 2.5 2 2.5s2-1.157 2-2.5V6a1 1 0 1 1 2 0v5.657C16 13.804 14.469 16 12 16c-2.462 0-4-2.196-4-4.343V6a1 1 0 0 1 1-1ZM6 17a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Z\"\n ></path>\n </svg>\n</button>\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n HostListener,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation,\n inject,\n input\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NsEditorService } from './services/editor.service';\nimport { NsContentEditableComponent, NsValueAccessor } from '../form';\nimport { NsEditorParagraphComponent } from './components/paragraph/paragraph.component';\nimport { NsEditorToggleCommandComponent } from './components/toogle/toggle.component';\nimport { NsEditorColorPickerComponent } from './components/color-picker/color-picker.component';\nimport { NsEditorListComponent } from './components/list/list.component';\nimport { NsEditorLinkComponent } from './components/link/link.component';\nimport { NsEditorImageComponent } from './components/image/image.component';\n\nexport type NsEditorTool =\n | 'paragraph' // ns-editor-paragraph — block selector\n | 'format' // ns-editor-toggle — bold, italic, underline\n | 'color' // ns-editor-color-picker\n | 'list' // ns-editor-list — bullet and numbered\n | 'link' // ns-editor-link\n | 'image' // ns-editor-image\n | 'separator'; // visual divider between groups\n\nexport const NS_EDITOR_TOOLS_DEFAULT: readonly NsEditorTool[] = [\n 'paragraph',\n 'format',\n 'color',\n 'list',\n 'link'\n];\n\nconst DEFAULT_COLOR_PRESETS = [\n '#b60205',\n '#d93f0b',\n '#fbca04',\n '#0e8a16',\n '#006b75',\n '#1d76db',\n '#0052cc',\n '#5319e7',\n '#e99695',\n '#f9d0c4',\n '#fef2c0',\n '#c2e0c6',\n '#bfdadc',\n '#c5def5',\n '#bfd4f2',\n '#d4c5f9'\n];\n\n@Component({\n selector: 'ns-editor',\n templateUrl: './editor.component.html',\n styleUrls: ['./editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsEditorComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-editor]': 'true',\n '[class.ns-editor--disabled]': 'disabled()'\n },\n imports: [\n NsEditorParagraphComponent,\n NsEditorToggleCommandComponent,\n NsEditorColorPickerComponent,\n NsEditorListComponent,\n NsEditorLinkComponent,\n NsEditorImageComponent,\n NsContentEditableComponent,\n FormsModule\n ]\n})\nexport class NsEditorComponent\n extends NsValueAccessor<string>\n implements OnInit, OnDestroy\n{\n private editor = inject(NsEditorService);\n\n readonly maxLength = input<number>(undefined);\n readonly colorPresets = input<string[]>(DEFAULT_COLOR_PRESETS);\n readonly tools = input<readonly NsEditorTool[]>(NS_EDITOR_TOOLS_DEFAULT);\n\n @ViewChild(NsContentEditableComponent, { read: ElementRef, static: true })\n textArea: ElementRef<HTMLElement>;\n\n @ViewChild(NsContentEditableComponent, { static: true })\n private contentEditable: NsContentEditableComponent;\n\n /** Mirrors the content-editable's own counter, measured off `innerText`. */\n readonly length = computed(() => this.contentEditable?.length() ?? 0);\n\n readonly hasFooter = computed(() =>\n Boolean(this.description() || this.maxLength())\n );\n\n @HostListener('click')\n focused = () => this.textArea.nativeElement.focus();\n\n ngOnInit(): void {}\n\n get presets(): string[][] {\n const col = 8;\n const colors: string[][] = [];\n\n this.colorPresets().forEach((color, index) => {\n const row = Math.floor(index / col);\n if (!colors[row]) {\n colors.push([]);\n }\n colors[row].push(color);\n });\n\n return colors;\n }\n\n blur(): void {\n this.editor.saveSelection();\n this.onTouched();\n }\n\n ngOnDestroy() {}\n}\n","@if (label()) {\n <label class=\"ns-editor__label\" [attr.for]=\"id\">{{ label() }}</label>\n}\n\n<ul class=\"ns-editor__toolbar\">\n @for (tool of tools(); track $index) {\n @switch (tool) {\n @case ('separator') {\n <li\n class=\"ns-editor__separator\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n ></li>\n }\n @case ('paragraph') {\n <li class=\"ns-editor__item\">\n <ns-editor-paragraph [disabled]=\"disabled()\" />\n </li>\n }\n @case ('format') {\n <li class=\"ns-editor__item\">\n <ns-editor-toggle [disabled]=\"disabled()\" />\n </li>\n }\n @case ('color') {\n <li class=\"ns-editor__item\">\n <ns-editor-color-picker [presets]=\"presets\" [disabled]=\"disabled()\" />\n </li>\n }\n @case ('list') {\n <li class=\"ns-editor__item\">\n <ns-editor-list [disabled]=\"disabled()\" />\n </li>\n }\n @case ('link') {\n <li class=\"ns-editor__item\">\n <ns-editor-link [disabled]=\"disabled()\" />\n </li>\n }\n @case ('image') {\n <li class=\"ns-editor__item\">\n <ns-editor-image [disabled]=\"disabled()\" />\n </li>\n }\n }\n }\n</ul>\n\n<ns-content-editable\n class=\"ns-editor__content\"\n [class.ns-editor__content--footer]=\"hasFooter()\"\n [id]=\"id\"\n (blur)=\"blur()\"\n [maxlength]=\"maxLength()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n/>\n\n@if (hasFooter()) {\n <div class=\"ns-editor__footer\">\n @if (description()) {\n <p class=\"ns-editor__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n @if (maxLength()) {\n <span class=\"ns-editor__counter\" aria-live=\"polite\">\n {{ length() }} / {{ maxLength() }}\n </span>\n }\n </div>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { NsFile } from '@ng-solid/core';\n\n@Pipe({\n name: 'nsImageUrl',\n standalone: true\n})\nexport class NsImageUrlPipe implements PipeTransform {\n transform(image: NsFile): string {\n let url = '';\n if (image && image.data && typeof image.data === 'string') {\n switch (true) {\n case URL.canParse(image.data) || /data:/.test(image.data):\n url = image.data;\n break;\n default:\n url = `data:${image.type};base64,${image.data}`;\n }\n }\n return url;\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n numberAttribute,\n Renderer2,\n signal,\n ViewChild,\n input\n} from '@angular/core';\nimport { NsValueAccessor } from '../form';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NsImageUrlPipe } from './pipes/image-url.pipe';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport { NsButtonComponent } from '../button/button.component';\nimport { NS_UPLOAD_CLIENT, NsFile } from '@ng-solid/core';\n\n/**\n * `NsFile` (published API, `@ng-solid/core`) has no identity field of its\n * own. `uid` used to live as a component-local property written directly\n * onto the object (AVF-15) — that broke the moment a host state library\n * hands this component a frozen `NsFile`: the console's NGXS store deep-\n * freezes its slices, so a saved product's images arrive non-extensible and\n * `image.uid = …` throws `TypeError: Cannot add property uid, object is not\n * extensible` (AVF-18 corrección de rechazo). A design-system component\n * cannot assume its inputs are mutable, so `uid` now lives *outside* every\n * `NsFile`, in the module-level `uidRegistry` below, keyed by object\n * identity — nothing ever writes to the `NsFile` itself. That also gives\n * reference-identity preservation for free: `assignUid` never wraps, clones\n * or copies its argument, so `remove()`'s `img !== image` filter, and every\n * other place that compares an `NsFile` by `===`, keeps working unchanged.\n */\nconst uidRegistry = new WeakMap<NsFile, string>();\n\n/**\n * Holds the original `File` a pending upload started from, keyed by the same\n * `NsFile` instance `add()` tracks. `add()`'s own `reader.onload` overwrites\n * `tracked.data` with the base64 preview string right after kicking off the\n * *first* upload attempt (see the comment in `add()` below) — necessary so\n * the gallery has something to render while the request is in flight, but it\n * means that by the time an upload fails, `tracked.data` is already that\n * string, not the `File` it started from. `retry()` re-runs `upload()` on\n * that same tracked object, so without this side registry it would hand the\n * client a base64 string instead of the file it was supposed to resend\n * (AVF-18 QA finding: a retry after a transient failure sent a data URI and\n * the server rejected it with \"Upload value invalid\").\n */\nconst originalDataRegistry = new WeakMap<NsFile, File>();\n\n/**\n * No structural difference from `NsFile` — the guarantee this alias\n * documents (\"already has an entry in `uidRegistry`\") lives in the registry,\n * not on the object. Kept as a distinct name at call sites (`images()`,\n * `image()`, `retry()`, `remove()`) that specifically require an image which\n * has already been through `assignUid`.\n */\ntype TrackedFile = NsFile;\n\n/**\n * Per-file upload status, keyed by `uid` (AVF-16). Replaces the old\n * `loading: Set<string>` — a boolean set can't distinguish \"still\n * uploading\" from \"upload failed\", which was the actual gap this HU closes.\n * `'ok'` is set (not deleted) on success so a file that went through this\n * component's own upload pipeline stays traceable; a file that arrived via\n * `writeValue`/`[value]` and never uploaded here simply has no entry, which\n * every template check (`=== 'subiendo'` / `=== 'fallido'`) already treats\n * as the normal/idle state.\n */\ntype NsImageUploadFileStatus = 'subiendo' | 'ok' | 'fallido';\n\n/**\n * Module-level monotonic counter backing `uid` for images without a server\n * `id` yet (pending uploads). Deterministic and trivial to assert in tests,\n * unlike `crypto.randomUUID()`.\n */\nlet uidCounter = 0;\n\n/**\n * Registers `uid` once per image instance in `uidRegistry`: derived from\n * the server `id` when present (`srv:${id}`, stable across re-`writeValue`\n * calls even on brand-new instances mapped from GraphQL — a `patchValue`\n * from the host never remounts the gallery), otherwise the next counter\n * value. Never overwrites an existing entry, and never touches `image`\n * itself — safe to call on a frozen, sealed or otherwise non-extensible\n * `NsFile`.\n */\nfunction assignUid(image: NsFile): TrackedFile {\n if (!uidRegistry.has(image)) {\n uidRegistry.set(\n image,\n image.id ? `srv:${image.id}` : `ns-file-${++uidCounter}`\n );\n }\n return image;\n}\n\n@Component({\n selector: 'ns-image-upload',\n templateUrl: './image-upload.component.html',\n imports: [CommonModule, NsImageUrlPipe, NsIconsComponent, NsButtonComponent],\n standalone: true,\n host: {\n '[class.ns-image-upload--loaded]': '!multi() && !!value()',\n '[class.ns-image-upload--disabled]': 'disabled()'\n },\n styleUrls: ['./image-upload.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NsImageUploadComponent),\n multi: true\n }\n ]\n})\nexport class NsImageUploadComponent extends NsValueAccessor<\n NsFile | NsFile[] | null\n> {\n private client = inject(NS_UPLOAD_CLIENT, { optional: true });\n private renderer = inject(Renderer2);\n private readonly cdr = inject(ChangeDetectorRef);\n\n readonly accept = input('.jpg,.jpeg,.png,.webp,.avif,.gif');\n readonly multi = input(false, { transform: booleanAttribute });\n readonly limit = input(5, { transform: numberAttribute });\n readonly layout = input<'grid' | 'cover'>('grid');\n\n /**\n * Rows the `__stack` column reserves before it starts scrolling\n * internally, in `layout=\"cover\"`: at most 3, and never more than\n * `limit() - 1` (the cover itself takes one slot).\n */\n readonly reservedRows = computed(() =>\n Math.max(0, Math.min(3, this.limit() - 1))\n );\n\n @ViewChild('input', { static: false, read: ElementRef })\n imgRef: ElementRef<HTMLInputElement>;\n\n public status = new Map<string, NsImageUploadFileStatus>();\n\n /**\n * Bumped by `setStatus`/`deleteStatus` on every `status` mutation.\n * `status` itself stays a plain, publicly-mutable `Map` — kept for the\n * existing per-file bookkeeping and for tests that poll it to synchronise\n * with an async upload — but a plain `Map.set()`/`.delete()` is invisible\n * to Angular's change detection: no signal write and no `markForCheck()`,\n * so nothing tells Angular this control needs checking again. Worse, an\n * `OnPush` ancestor that wasn't otherwise dirtied (e.g. the \"Fotografías\"\n * `<card>` wrapping this control in the product form) can skip this\n * subtree entirely on the next tick. That is exactly why a failed upload\n * used to get stuck showing the spinner forever, silently (AVF-18\n * corrección de rechazo #2): `status.set(uid, 'fallido')` ran, but nothing\n * ever told Angular to look again — unlike a successful upload, which\n * reaches the template through `value.set()` (a real signal write) via\n * `assignValue`/`onChange`. `statusOf()` reads this counter before reading\n * `status`, giving every render that goes through it a real signal\n * dependency, and `touchStatus()` also calls `markForCheck()` directly —\n * belt and braces: the explicit call is the same, long-proven mechanism\n * Angular has always used to announce a change made from outside its own\n * detection cycle (an RxJS subscription callback, here), and is what\n * reliably walks the ancestor chain and clears an `OnPush` skip, the way\n * a signal read alone was not enough to guarantee in practice.\n */\n private readonly statusVersion = signal(0);\n\n private touchStatus(): void {\n this.statusVersion.update((v) => v + 1);\n this.cdr.markForCheck();\n }\n\n private setStatus(uid: string, value: NsImageUploadFileStatus): void {\n this.status.set(uid, value);\n this.touchStatus();\n }\n\n private deleteStatus(uid: string): void {\n this.status.delete(uid);\n this.touchStatus();\n }\n\n /**\n * The only path from `status` + `uid` to the template — and the one every\n * test should use too (AVF-18 corrección de rechazo #2): reading\n * `status.get(...)` directly, the way earlier tests did, cannot tell a\n * status change nobody announced to Angular from one that actually\n * rendered, which is exactly how the previous regression shipped green —\n * the map held `'fallido'`, the DOM still showed `'subiendo'`, and the\n * assertions that read the map straight agreed with the bug.\n */\n statusOf(image: NsFile): NsImageUploadFileStatus | undefined {\n this.statusVersion();\n return this.status.get(this.uidOf(image));\n }\n\n /**\n * Active while a file dragged from outside the browser (desktop, another\n * app) hovers a drop zone — drives the highlight ring/border (AVF-9,\n * criteria 3-5). Never set for the internal thumbnail-reorder drag,\n * distinguished via `isFileDrag`.\n */\n readonly dragActive = signal(false);\n\n /**\n * Inline, Spanish, component-owned notice for when a selection/drop\n * exceeds `limit()` (AVF-16). Deliberately not an `output()`: a consumer\n * that doesn't wire one up would silently drop files again, which is\n * exactly the defect this HU removes. Overwritten (never accumulated) on\n * every enqueue attempt, successful or not.\n */\n readonly limitWarning = signal<string | null>(null);\n\n private _fromIndex: number;\n private _toIndex: number;\n\n /**\n * The only path from `value()` to the template, whatever fed it: a plain\n * `[value]=\"misImagenes\"` binding — `value` is the public two-way `model()`\n * from `NsValueAccessor`, so nothing forces a consumer through\n * `writeValue`/`add` — lands here same as a file picked through the\n * control itself. `assignUid` is idempotent (never overwrites an existing\n * registry entry) and never mutates the `NsFile`, so re-running it every\n * getter call is safe: the `uid` a given instance gets on its first pass\n * through here is the one it keeps on every later change-detection cycle,\n * and no signal write happens as a side effect of reading the template\n * (AVF-15). Works the same whether the array/elements are frozen or not\n * (AVF-18 corrección de rechazo).\n */\n get images(): TrackedFile[] {\n const value = this.value();\n return Array.isArray(value)\n ? (value as NsFile[]).map((image) => assignUid(image))\n : [];\n }\n\n get image(): TrackedFile | null {\n const value = this.value();\n if (Array.isArray(value) || !value) {\n return null;\n }\n return assignUid(value as NsFile);\n }\n\n /**\n * Reads the `uid` assigned to `image` — the accessor the `.ts` and the\n * template both use instead of a `.uid` property on the `NsFile` itself,\n * which no longer exists (AVF-18 corrección de rechazo: that property\n * write is exactly what threw on a frozen image). Public so the\n * template's `track` expressions can call it directly, and so `statusOf`\n * can resolve the key it looks up. Every `NsFile` reachable from\n * `images()`/`image()` has already been through `assignUid`, so this only\n * ever reads — the `assignUid` call here is a safety net for a caller that\n * hands in an image from outside that path.\n */\n uidOf(image: NsFile): string {\n assignUid(image);\n return uidRegistry.get(image) as string;\n }\n\n /**\n * True while the single (`!multi()`) image's own upload attempt is\n * `'fallido'` — the one flag the drag-container button needs to swap\n * \"open the file picker\" for \"retry this upload\" (AVF-16, corrección de\n * rechazo: criterios 5-6 no estaban cubiertos en modo single, solo en\n * `multi`).\n */\n get singleFailed(): boolean {\n const img = this.image;\n return !this.multi() && !!img && this.statusOf(img) === 'fallido';\n }\n\n override writeValue(value: NsFile | NsFile[] | null) {\n if (Array.isArray(value)) {\n (value as NsFile[]).forEach((image) => assignUid(image));\n this.value.set(value);\n } else {\n if (value) {\n assignUid(value as NsFile);\n }\n this.value.set(this.multi() && !value ? [] : value);\n }\n }\n\n onClick() {\n if (!this.disabled()) {\n this.imgRef.nativeElement.click();\n }\n }\n\n /**\n * Click handler for the single-mode (`!multi()`) drag-container: it is\n * both the file picker trigger and, once the image has failed, the\n * retry control — same dual role the `multi` grid button and the cover\n * chip already had (AVF-16 corrección de rechazo).\n */\n onDragContainerClick(): void {\n if (this.singleFailed) {\n this.retry(this.image as TrackedFile);\n } else {\n this.onClick();\n }\n }\n\n load() {\n const { files } = this.imgRef.nativeElement;\n if (files.length) {\n this.enqueueFiles(Array.from(files));\n this.imgRef.nativeElement.value = null;\n }\n this.onTouched();\n }\n\n add(image: NsFile) {\n const tracked = assignUid(image);\n const uid = this.uidOf(tracked);\n // Stashed before `reader.onload` below overwrites `tracked.data` with\n // the preview string, so a later `retry()` on this same object still\n // has the real file to resend (AVF-18 QA finding).\n originalDataRegistry.set(tracked, tracked.data as File);\n this.setStatus(uid, 'subiendo');\n const reader = new FileReader();\n reader.readAsDataURL(tracked.data as File);\n reader.onload = () => {\n if (this.client) {\n // Started before the local-preview mutation below, matching the\n // pre-AVF-16 ordering: whatever the injected client reads off\n // `tracked.data` at call time, it reads before it gets overwritten\n // with the base64 preview string. `tracked` here is always a\n // freshly `NsFile.parse`d object this component created itself\n // (never a host-provided, possibly-frozen instance), so mutating\n // `.data` in place is safe.\n this.upload(tracked, uid);\n tracked.data = reader.result as string;\n this.assignValue(tracked);\n } else {\n tracked.data = reader.result as string;\n this.setStatus(uid, 'ok');\n this.assignValue(tracked);\n }\n };\n }\n\n /**\n * Re-subscribes to the same upload the failed attempt used — no new\n * `NsUploadClient` contract needed (AVF-16 evidence: `upload(file):\n * Observable<file>` is already re-subscribable). Shared by the first\n * attempt (`add`) and every later retry. `uid` is passed in rather than\n * re-derived from `image`, since `retry()` needs the *original* uid even\n * though the `image` it holds may itself be a server response object by\n * then.\n */\n private upload(image: NsFile, uid: string): void {\n const client = this.client;\n if (!client) {\n return;\n }\n this.setStatus(uid, 'subiendo');\n // On a retry, `image.data` may already be the base64 preview string\n // (see `originalDataRegistry`'s doc comment) — the original `File`, when\n // stashed, is what actually goes out over the wire. Cloning (rather than\n // mutating `image` back) keeps `image`'s own `.data` as the preview the\n // template renders while this request is in flight.\n const original = originalDataRegistry.get(image);\n client\n .upload(original ? new NsFile({ ...image, data: original }) : image)\n .subscribe({\n next: (data: NsFile) => {\n // Preserves identity through the preview → server swap: registers\n // the same `uid` for the new server-response object rather than\n // mutating it, so the gallery doesn't remount the image and\n // AVF-16's per-file state isn't lost right as the upload finishes.\n uidRegistry.set(data, uid);\n this.setStatus(uid, 'ok');\n if (this.multi()) {\n // Replaces the preview in place, by uid, rather than filtering it\n // out and pushing the server response at the end: with several\n // uploads resolving concurrently, each `next` reads `this.images`\n // fresh at its own callback, and an in-place-by-uid update can\n // never clobber or reorder an entry a sibling upload already\n // committed (AVF-16 — verified by the 3-concurrent-uploads spec).\n this.value.set(\n this.images.map((img) => (this.uidOf(img) === uid ? data : img))\n );\n this.onChange(this.value());\n } else {\n this.assignValue(data);\n }\n },\n error: () => {\n // `setStatus` (not a raw `status.set`) is what makes this reach the\n // screen at all: a failed upload is the one outcome that never\n // touches `value`, so without the signal write inside `setStatus`,\n // nothing tells Angular this control needs checking again — the\n // thumbnail stays stuck showing \"subiendo\" forever (AVF-18\n // corrección de rechazo #2).\n this.setStatus(uid, 'fallido');\n }\n });\n }\n\n /**\n * Retries a failed upload in place: same `uid`, same position in the\n * gallery, no re-read from disk (the preview already holds the file's\n * data).\n */\n retry(image: TrackedFile): void {\n if (!this.client || this.statusOf(image) !== 'fallido') {\n return;\n }\n this.upload(image, this.uidOf(image));\n }\n\n private assignValue(image: NsFile) {\n if (this.multi()) {\n this.value.set([...this.images, image]);\n } else {\n this.value.set(image);\n }\n this.onChange(this.value());\n }\n\n remove(image: TrackedFile) {\n const uid = this.uidOf(image);\n const previousStatus = this.statusOf(image);\n this.setStatus(uid, 'subiendo');\n if (this.client && !!image.id) {\n this.client.remove(image.id).subscribe({\n next: () => {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.deleteStatus(uid);\n this.onChange(this.value());\n },\n error: () => {\n // Removal failed: restore whatever status the image had before\n // (normally 'ok' or 'fallido'), rather than leaving it stuck on\n // 'subiendo' with no way out.\n if (previousStatus) {\n this.setStatus(uid, previousStatus);\n } else {\n this.deleteStatus(uid);\n }\n }\n });\n } else {\n this.value.set(\n this.multi() ? this.images.filter((img) => img !== image) : null\n );\n this.deleteStatus(uid);\n this.onChange(this.value());\n }\n }\n\n dragstart(event: DragEvent, index: number) {\n this.renderer.setStyle(event.target, 'opacity', 0.4);\n event.dataTransfer.dropEffect = 'move';\n this._fromIndex = index;\n }\n\n /**\n * Shared by every drop target (thumbnails, the `cover` node — index 0 —\n * and the plain drop zones). `event.dataTransfer.types` never carries\n * `'Files'` for the internal reorder drag (it writes nothing to the\n * clipboard today), so that check alone tells the external-file drop and\n * the reorder drag apart without a separate state flag.\n */\n dragover(event: DragEvent, index: number) {\n event.preventDefault();\n if (this.isFileDrag(event)) {\n this.dragActive.set(true);\n return;\n }\n this._toIndex = index;\n }\n\n dragleave(event: DragEvent) {\n if (this.isFileDrag(event)) {\n this.dragActive.set(false);\n }\n }\n\n dragend(event: DragEvent) {\n this.renderer.setStyle(event.target, 'opacity', 1);\n }\n\n drop(event: DragEvent) {\n event.stopPropagation();\n if (this.isFileDrag(event)) {\n event.preventDefault();\n this.dragActive.set(false);\n this.addDroppedFile(event.dataTransfer.files);\n return;\n }\n this.dragActive.set(false);\n if (this._fromIndex !== this._toIndex) {\n const images = [...this.images];\n const element = images[this._fromIndex];\n images.splice(this._fromIndex, 1);\n images.splice(this._toIndex, 0, element);\n this.value.set(images);\n this.onChange(this.value());\n }\n }\n\n private isFileDrag(event: DragEvent): boolean {\n return !!event.dataTransfer?.types?.includes('Files');\n }\n\n private isAcceptedFile(file: File): boolean {\n const patterns = this.accept()\n .split(',')\n .map((pattern) => pattern.trim().toLowerCase())\n .filter(Boolean);\n if (!patterns.length) {\n return true;\n }\n const name = file.name.toLowerCase();\n const type = file.type.toLowerCase();\n return patterns.some((pattern) => {\n if (pattern.startsWith('.')) {\n return name.endsWith(pattern);\n }\n if (pattern.endsWith('/*')) {\n return type.startsWith(pattern.slice(0, -1));\n }\n return type === pattern;\n });\n }\n\n private addDroppedFile(files: FileList | null): void {\n if (!this.multi()) {\n // Kept byte-for-byte identical to the pre-AVF-16 single-file check:\n // only the raw first dropped file is ever considered, exactly as\n // before. The multi-file/limit pipeline below is new behaviour and\n // must not change this path (AVF-16, criterio \"sin regresión\").\n const file = files?.item(0);\n if (!file || !this.isAcceptedFile(file)) {\n return;\n }\n this.add(NsFile.parse(file));\n this.onTouched();\n return;\n }\n const accepted = Array.from(files ?? []).filter((file) =>\n this.isAcceptedFile(file)\n );\n if (this.enqueueFiles(accepted) > 0) {\n this.onTouched();\n }\n }\n\n /**\n * Accepts as many of `files` as fit under `limit()`, all at once, and\n * reports the rest inline. `limit()` is evaluated once here, against\n * `this.images.length` as it stands *before* any of this batch's\n * `add()` calls run — never inside a per-file callback, where it would\n * lag behind sibling files whose `FileReader`/upload hasn't resolved yet\n * and let more through than actually fit (AVF-16).\n *\n * Returns how many files were actually enqueued, so callers can decide\n * whether to mark the control touched.\n */\n private enqueueFiles(files: File[]): number {\n if (!files.length) {\n return 0;\n }\n if (!this.multi()) {\n this.limitWarning.set(null);\n this.add(NsFile.parse(files[0]));\n return 1;\n }\n const room = Math.max(0, this.limit() - this.images.length);\n const accepted = files.slice(0, room);\n const rejected = files.length - accepted.length;\n this.limitWarning.set(\n rejected > 0 ? this.buildLimitWarning(room, rejected) : null\n );\n accepted.forEach((file) => this.add(NsFile.parse(file)));\n return accepted.length;\n }\n\n private buildLimitWarning(room: number, rejected: number): string {\n const rejectedPhrase =\n rejected === 1 ? '1 no se añadió' : `${rejected} no se añadieron`;\n if (room <= 0) {\n return `Ya alcanzaste el límite de fotos; ${rejectedPhrase}`;\n }\n const roomPhrase = room === 1 ? 'cabe 1 foto' : `caben ${room} fotos`;\n return `Solo ${roomPhrase}; ${rejectedPhrase}`;\n }\n}\n","@if (layout() === 'cover') {\n <div class=\"ns-image-upload__wrap ns-image-upload__wrap--cover\">\n @if (!images.length) {\n <div\n class=\"ns-image-upload__cover-empty\"\n [class.ns-image-upload__cover-empty--dragging]=\"dragActive()\"\n (dragover)=\"dragover($event, 0)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <div class=\"ns-image-upload__cover-empty-icon\">\n <ns-icon name=\"image\" />\n </div>\n <p class=\"ns-image-upload__cover-empty-title\">\n Arrastra tus fotos aquí\n </p>\n <p class=\"ns-image-upload__cover-empty-subtitle\">\n PNG o JPG, hasta 10MB cada una\n </p>\n <ns-button\n type=\"button\"\n variant=\"dark\"\n size=\"sm\"\n [disabled]=\"disabled()\"\n (click)=\"onClick()\"\n >\n Subir fotos\n </ns-button>\n </div>\n } @else {\n <div\n class=\"ns-image-upload__cover-grid\"\n [style.--ns-image-upload-rows]=\"reservedRows()\"\n >\n <div\n class=\"ns-image-upload__cover\"\n tabindex=\"0\"\n [attr.aria-label]=\"'Esta imagen es la portada del producto'\"\n [class.ns-image-upload__cover--dragging]=\"dragActive()\"\n [class.ns-image-upload__cover--loading]=\"\n statusOf(images[0]) === 'subiendo'\n \"\n [class.ns-image-upload__cover--failed]=\"\n statusOf(images[0]) === 'fallido'\n \"\n (dragover)=\"dragover($event, 0)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <img\n class=\"ns-image-upload__cover-image\"\n [attr.src]=\"images[0] | nsImageUrl\"\n [attr.alt]=\"images[0].name\"\n />\n @if (statusOf(images[0]) === 'subiendo') {\n <div class=\"ns-image-upload__status-overlay\">\n <ns-icon name=\"loader-circle\" />\n </div>\n } @else if (statusOf(images[0]) === 'fallido') {\n <button\n type=\"button\"\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Reintentar subir la portada'\"\n (click)=\"retry(images[0]); $event.stopPropagation()\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\"\n >Reintentar</span\n >\n </button>\n }\n <span class=\"ns-image-upload__badge\">Portada</span>\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__cover-remove\"\n [disabled]=\"disabled() || statusOf(images[0]) === 'subiendo'\"\n [attr.aria-label]=\"'Eliminar portada'\"\n (click)=\"remove(images[0]); $event.stopPropagation()\"\n >\n <ns-icon name=\"x\" size=\"14\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n\n <div class=\"ns-image-upload__stack\">\n @for (image of images.slice(1); track uidOf(image); let i = $index) {\n <div\n class=\"ns-image-upload__thumbnail\"\n tabindex=\"0\"\n [draggable]=\"!disabled() && images.length > 1\"\n [class.ns-image-upload__thumbnail--loading]=\"\n statusOf(image) === 'subiendo'\n \"\n [class.ns-image-upload__thumbnail--failed]=\"\n statusOf(image) === 'fallido'\n \"\n (dragstart)=\"dragstart($event, i + 1)\"\n (dragend)=\"dragend($event)\"\n (dragover)=\"dragover($event, i + 1)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <img\n class=\"ns-image-upload__thumbnail-image\"\n [attr.src]=\"image | nsImageUrl\"\n [attr.alt]=\"image.name\"\n />\n @if (statusOf(image) === 'subiendo') {\n <div class=\"ns-image-upload__status-overlay\">\n <ns-icon name=\"loader-circle\" />\n </div>\n } @else if (statusOf(image) === 'fallido') {\n <button\n type=\"button\"\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Reintentar subir imagen ' + (i + 2)\"\n (click)=\"retry(image); $event.stopPropagation()\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\"\n >Reintentar</span\n >\n </button>\n }\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__thumbnail-remove\"\n [disabled]=\"disabled() || statusOf(image) === 'subiendo'\"\n [attr.aria-label]=\"'Eliminar imagen ' + (i + 2)\"\n (click)=\"remove(image); $event.stopPropagation()\"\n >\n <ns-icon name=\"x\" size=\"14\" aria-hidden=\"true\" />\n </button>\n }\n </div>\n }\n @if (images.length < limit()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__add\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"'Explorar archivos para añadir más fotos'\"\n (click)=\"onClick()\"\n >\n <ns-icon name=\"image-plus\" />\n <span class=\"ns-image-upload__add-title\">Añadir más</span>\n <span class=\"ns-image-upload__add-subtitle\"\n >o explora tus archivos</span\n >\n </button>\n }\n </div>\n </div>\n }\n\n @if (limitWarning(); as warning) {\n <p class=\"ns-image-upload__limit-warning\" role=\"status\">{{ warning }}</p>\n }\n\n <input\n [hidden]=\"true\"\n type=\"file\"\n (change)=\"load()\"\n [multiple]=\"multi()\"\n [accept]=\"accept()\"\n #input\n [disabled]=\"disabled()\"\n />\n </div>\n} @else {\n <div\n class=\"ns-image-upload__wrap\"\n [ngClass]=\"{ 'ns-image-upload__wrap--multiple': multi() && images.length }\"\n >\n @if (multi()) {\n @for (image of images; let i = $index; track uidOf(image)) {\n <div\n class=\"ns-image-upload__thumbnail\"\n [draggable]=\"!disabled() && images.length > 1\"\n (dragstart)=\"dragstart($event, i)\"\n (dragend)=\"dragend($event)\"\n (dragover)=\"dragover($event, i)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n >\n <button\n type=\"button\"\n class=\"ns-image-upload__button ns-image-upload__button--upload\"\n (click)=\"statusOf(image) === 'fallido' ? retry(image) : onClick()\"\n [ngClass]=\"{\n 'ns-image-upload__button--loading':\n statusOf(image) === 'subiendo',\n 'ns-image-upload__button--failed': statusOf(image) === 'fallido'\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"\n statusOf(image) === 'fallido'\n ? 'Reintentar subir ' + image.name\n : label()\n \"\n >\n <img\n class=\"ns-image-upload__preview\"\n [attr.src]=\"image | nsImageUrl\"\n [attr.alt]=\"image.name\"\n />\n <ns-icon class=\"ns-image-upload__preload\" name=\"loader-circle\" />\n\n @if (statusOf(image) === 'fallido') {\n <div\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\"\n >Reintentar</span\n >\n </div>\n }\n\n <div class=\"ns-image-upload__overlay\">\n <ns-icon class=\"ns-image-upload__drag\" name=\"grip\" />\n </div>\n </button>\n @if (!disabled()) {\n <button\n type=\"button\"\n class=\"ns-image-upload__remove\"\n [disabled]=\"disabled() || statusOf(image) === 'subiendo'\"\n [attr.aria-label]=\"'Eliminar imagen: ' + image.name\"\n (click)=\"remove(image); $event.stopPropagation()\"\n >\n <ns-icon name=\"trash-2\" />\n </button>\n }\n </div>\n }\n }\n\n <button\n type=\"button\"\n class=\"ns-image-upload__drag-container\"\n (click)=\"onDragContainerClick()\"\n (dragover)=\"dragover($event, images.length)\"\n (dragleave)=\"dragleave($event)\"\n (drop)=\"drop($event)\"\n [ngClass]=\"{\n 'ns-image-upload__drag-container--loading':\n image && !multi() && statusOf(image) === 'subiendo',\n 'ns-image-upload__drag-container--dragging': dragActive()\n }\"\n [attr.aria-label]=\"\n singleFailed ? 'Reintentar subir ' + image?.name : null\n \"\n [hidden]=\"multi() && images.length >= limit()\"\n [disabled]=\"disabled()\"\n >\n @if (!multi() && image; as img) {\n <img\n class=\"ns-image-upload__fluid\"\n [attr.src]=\"img | nsImageUrl\"\n [ngClass]=\"{ 'ns-image-upload__fluid--disabled': disabled() }\"\n alt\n />\n @if (statusOf(img) === 'fallido') {\n <div\n class=\"ns-image-upload__status-overlay ns-image-upload__status-overlay--failed\"\n >\n <ns-icon name=\"triangle-alert\" />\n <span class=\"ns-image-upload__error-overlay-label\">Reintentar</span>\n </div>\n }\n }\n\n @if (!image || multi()) {\n <div class=\"ns-image-upload__empty\">\n <ns-icon name=\"image\" />\n <span>{{ label() }}</span>\n </div>\n }\n\n <input\n [hidden]=\"true\"\n type=\"file\"\n (change)=\"load()\"\n [multiple]=\"multi()\"\n [accept]=\"accept()\"\n #input\n [disabled]=\"disabled()\"\n />\n </button>\n\n @if (limitWarning(); as warning) {\n <p class=\"ns-image-upload__limit-warning\" role=\"status\">{{ warning }}</p>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-link',\n standalone: true,\n template: `\n <a\n class=\"ns-link__anchor\"\n [href]=\"disabled() ? null : href()\"\n [target]=\"target() || null\"\n [rel]=\"rel() || null\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n (click)=\"onClick($event)\"\n ><ng-content\n /></a>\n `,\n styleUrl: './link.component.scss',\n host: {\n '[class.ns-link]': 'true',\n '[class.ns-link--disabled]': 'disabled()',\n '[class.ns-link--neutral]': \"color() === 'neutral'\",\n '[class.ns-link--primary]': \"color() === 'primary'\",\n '[class.ns-link--success]': \"color() === 'success'\",\n '[class.ns-link--warning]': \"color() === 'warning'\",\n '[class.ns-link--danger]': \"color() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsLinkComponent {\n readonly href = input<string>('');\n readonly target = input<'_self' | '_blank' | '_parent' | '_top' | ''>('');\n readonly rel = input<string>('');\n readonly color = input<NsColor>('primary');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n booleanAttribute,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-menu-item',\n standalone: true,\n template: `\n <span class=\"ns-menu-item__icon\"\n ><ng-content select=\"[menu-item-icon]\"\n /></span>\n <span class=\"ns-menu-item__label\"><ng-content /></span>\n `,\n styleUrl: './menu-item.component.scss',\n host: {\n role: 'menuitem',\n '[class.ns-menu-item]': 'true',\n '[class.ns-menu-item--disabled]': 'disabled()',\n '[class.ns-menu-item--neutral]': \"color() === 'neutral'\",\n '[class.ns-menu-item--primary]': \"color() === 'primary'\",\n '[class.ns-menu-item--success]': \"color() === 'success'\",\n '[class.ns-menu-item--warning]': \"color() === 'warning'\",\n '[class.ns-menu-item--danger]': \"color() === 'danger'\",\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.tabindex]': 'disabled() ? null : active() ? 0 : -1',\n '(click)': 'activate()',\n '(keydown.enter)': 'activate()',\n '(keydown.space)': 'onSpace($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuItemComponent {\n private readonly element = inject(ElementRef<HTMLElement>);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly color = input<NsColor>('neutral');\n readonly activated = output<void>();\n\n /** Roving-tabindex state, driven by the parent `ns-menu`. */\n readonly active = signal(false);\n\n activate(): void {\n if (this.disabled()) {\n return;\n }\n this.activated.emit();\n }\n\n onSpace(event: Event): void {\n event.preventDefault();\n this.activate();\n }\n\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n contentChildren,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport { getNsNextNavigableIndex, NsNavigationKey } from '../a11y';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsMenuItemComponent } from './menu-item.component';\n\nconst NAVIGATION_KEYS: readonly string[] = [\n 'ArrowDown',\n 'ArrowUp',\n 'Home',\n 'End'\n];\n\n/**\n * Action menu anchored to an origin element, built on `NsOverlayService`\n * (the same placement/dismiss/focus-trap mechanism as `ns-popover`). Items\n * are plain projected content (`ns-menu-item`, optionally grouped inside\n * `ns-menu-section`), so the menu drives a roving tabindex across them and\n * closes itself once one is activated.\n */\n@Component({\n selector: 'ns-menu',\n standalone: true,\n template: `\n <div class=\"ns-menu__header\"><ng-content select=\"[menu-header]\" /></div>\n <ng-content />\n `,\n styleUrl: './menu.component.scss',\n host: {\n role: 'menu',\n '[class.ns-menu]': 'true',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.aria-hidden]': '!open()',\n '[attr.data-state]': \"open() ? 'open' : 'closed'\",\n '(keydown)': 'onKeydown($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuComponent implements AfterViewInit, OnDestroy {\n readonly open = model(false);\n readonly origin = input.required<HTMLElement>();\n readonly placement = input<NsPlacement>('bottom-start');\n readonly ariaLabel = input<string | undefined>(undefined);\n readonly closed = output<NsOverlayCloseReason>();\n\n readonly items = contentChildren(NsMenuItemComponent, { descendants: true });\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n private activeIndex = -1;\n\n constructor() {\n effect(() => {\n const open = this.open();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => this.syncActiveItem(this.items()));\n effect((onCleanup) => {\n const subscriptions = this.items().map((item) =>\n item.activated.subscribe(() => this.handleItemSelect())\n );\n onCleanup(() =>\n subscriptions.forEach((subscription) => subscription.unsubscribe())\n );\n });\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.open()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n close(): void {\n this.open.set(false);\n }\n\n onKeydown(event: KeyboardEvent): void {\n const items = this.items();\n if (!items.length || !NAVIGATION_KEYS.includes(event.key)) {\n return;\n }\n const next = getNsNextNavigableIndex(\n items.map((item) => ({ key: 0, disabled: item.disabled() })),\n this.activeIndex,\n event.key as NsNavigationKey,\n 'vertical'\n );\n if (next >= 0 && next !== this.activeIndex) {\n event.preventDefault();\n this.focusItem(items, next);\n }\n }\n\n private handleItemSelect(): void {\n this.open.set(false);\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n origin: this.origin(),\n placement: this.placement(),\n closeOnEscape: true,\n closeOnOutsidePointer: true,\n trapFocus: true,\n restoreFocus: true\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.open()) {\n this.open.set(false);\n }\n this.closed.emit(reason);\n });\n }\n\n private syncActiveItem(items: readonly NsMenuItemComponent[]): void {\n if (!items.length) {\n this.activeIndex = -1;\n return;\n }\n if (\n this.activeIndex < 0 ||\n this.activeIndex >= items.length ||\n items[this.activeIndex].disabled()\n ) {\n this.activeIndex = items.findIndex((item) => !item.disabled());\n }\n items.forEach((item, index) => item.active.set(index === this.activeIndex));\n }\n\n private focusItem(\n items: readonly NsMenuItemComponent[],\n index: number\n ): void {\n this.activeIndex = index;\n items.forEach((item, i) => item.active.set(i === index));\n items[index]?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n/**\n * Visual separator between `ns-menu-item` groups. Consumers who prefer the\n * native element can also write `<hr ns-menu-divider>` directly; both forms\n * resolve to the same host styling.\n */\n@Component({\n selector: 'ns-menu-divider, hr[ns-menu-divider]',\n standalone: true,\n template: '',\n styleUrl: './menu-divider.component.scss',\n host: {\n role: 'separator',\n '[class.ns-menu-divider]': 'true'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuDividerComponent {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-menu-section',\n standalone: true,\n template: `\n @if (label()) {\n <p class=\"ns-menu-section__label\">{{ label() }}</p>\n }\n <ng-content />\n `,\n styleUrl: './menu-section.component.scss',\n host: {\n role: 'group',\n '[class.ns-menu-section]': 'true',\n '[attr.aria-label]': 'label() || null'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMenuSectionComponent {\n readonly label = input<string | undefined>(undefined);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-meter',\n standalone: true,\n template:\n '<span class=\"ns-meter__value\" [style.inline-size.%]=\"percentage()\"></span>',\n styleUrl: './meter.component.scss',\n host: {\n role: 'meter',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuenow]': 'value()',\n '[class.ns-meter]': 'true',\n '[class.ns-meter--neutral]': \"color() === 'neutral'\",\n '[class.ns-meter--primary]': \"color() === 'primary'\",\n '[class.ns-meter--success]': \"color() === 'success'\",\n '[class.ns-meter--warning]': \"color() === 'warning'\",\n '[class.ns-meter--danger]': \"color() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsMeterComponent {\n readonly value = input(0, { transform: numberAttribute });\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly ariaLabel = input<string>('Meter');\n readonly color = input<NsColor>('primary');\n readonly percentage = computed(() => {\n const range = this.max() - this.min();\n if (range <= 0) return 0;\n return Math.min(\n 100,\n Math.max(0, ((this.value() - this.min()) / range) * 100)\n );\n });\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef,\n effect,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { NsIconsComponent } from '@ng-solid/icons';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\nimport { NsModalSize } from './interfaces/modal-config';\n\n@Component({\n selector: 'ns-modal',\n standalone: true,\n imports: [CommonModule, NsIconsComponent],\n template: `\n <div class=\"ns-modal__backdrop\" aria-hidden=\"true\"></div>\n <section\n #dialog\n class=\"ns-modal__dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"title() || null\"\n [class.ns-modal__dialog--sm]=\"size() === 'sm'\"\n [class.ns-modal__dialog--lg]=\"size() === 'lg'\"\n [class.ns-modal__dialog--xl]=\"size() === 'xl'\"\n tabindex=\"-1\"\n >\n <header class=\"ns-modal__header\">\n <div class=\"ns-modal__heading\">\n @if (title()) {\n <h2 class=\"ns-modal__title\">{{ title() }}</h2>\n }\n <ng-content select=\"[modal-description]\" />\n </div>\n <button\n class=\"ns-modal__close\"\n type=\"button\"\n [attr.aria-label]=\"closeLabel()\"\n (click)=\"close()\"\n >\n <ns-icon name=\"x\" size=\"18\" aria-hidden=\"true\" />\n </button>\n </header>\n <div class=\"ns-modal__body\">\n @if (contentComponent()) {\n <ng-template #contentHost />\n } @else {\n <ng-content />\n }\n </div>\n <footer class=\"ns-modal__footer\">\n <ng-content select=\"[modal-footer]\" />\n </footer>\n </section>\n `,\n styleUrl: './modal.component.scss',\n host: {\n '[class.ns-modal]': 'true',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsModalComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly title = input('');\n readonly size = input<NsModalSize>('md');\n readonly closeLabel = input('Close modal');\n readonly closeOnEscape = input(true);\n readonly closed = output<NsOverlayCloseReason>();\n\n readonly contentComponent = input<Type<object> | null>(null);\n readonly contentInputs = input<Record<string, unknown>>({});\n readonly closeReason = signal<NsOverlayCloseReason | undefined>(undefined);\n\n @ViewChild('contentHost', { read: ViewContainerRef })\n private contentHost?: ViewContainerRef;\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private contentRef?: ComponentRef<object>;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n effect(() => this.createContent());\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n this.createContent();\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n this.contentRef?.destroy();\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n getContent<T extends object>(): T {\n if (!this.contentRef) {\n throw new Error('Modal content could not be created.');\n }\n return this.contentRef.instance as T;\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: false,\n trapFocus: true,\n restoreFocus: true,\n inert: true,\n lockScroll: true\n });\n overlayRef.portal.classList.add('ns-modal__portal');\n overlayRef.portal.style.inset = '0';\n overlayRef.portal.style.border = '0';\n overlayRef.portal.style.borderRadius = '0';\n overlayRef.portal.style.background = 'transparent';\n overlayRef.portal.style.boxShadow = 'none';\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n this.closeReason.set(reason);\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n\n private createContent(): void {\n const component = this.contentComponent();\n if (\n !this.viewInitialized ||\n !component ||\n !this.contentHost ||\n this.contentRef\n ) {\n return;\n }\n this.contentRef = this.contentHost.createComponent(component);\n for (const [name, value] of Object.entries(this.contentInputs())) {\n this.contentRef.setInput(name, value);\n }\n }\n}\n","import { ComponentRef, Signal } from '@angular/core';\nimport { NsOverlayCloseReason } from '../../overlay';\nimport { NsModalComponent } from '../modal.component';\n\n/** A programmatically opened modal and its typed content instance. */\nexport class NsModalRef<T> {\n constructor(\n private readonly componentRef: ComponentRef<NsModalComponent>,\n readonly content: T,\n readonly closed: Signal<NsOverlayCloseReason | undefined>\n ) {}\n\n close(): void {\n this.componentRef.instance.close();\n }\n}\n","import {\n ApplicationRef,\n EnvironmentInjector,\n Injectable,\n createComponent,\n inject\n} from '@angular/core';\nimport { NsModalConfig } from '../interfaces/modal-config';\nimport { NsModalComponent } from '../modal.component';\nimport { NsModalRef } from '../models/modal-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class NsModalService {\n private readonly applicationRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n\n open<T extends object>(config: NsModalConfig<T>): NsModalRef<T> {\n const componentRef = createComponent(NsModalComponent, {\n environmentInjector: this.environmentInjector\n });\n componentRef.setInput('title', config.title ?? '');\n componentRef.setInput('size', config.size ?? 'md');\n componentRef.setInput('closeOnEscape', config.closeOnEscape ?? true);\n componentRef.setInput('contentComponent', config.component);\n componentRef.setInput('contentInputs', config.inputs ?? {});\n this.applicationRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n componentRef.instance.isOpen.set(true);\n\n const modalRef = new NsModalRef(\n componentRef,\n componentRef.instance.getContent<T>(),\n componentRef.instance.closeReason\n );\n componentRef.instance.closed.subscribe(() => {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return modalRef;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n output\n} from '@angular/core';\nimport { NsButtonComponent } from '../button/button.component';\n\n/**\n * Companion to `ns-pagination` for feeds that grow with a \"load more\" action\n * instead of numbered pages. Kept as a separate component because its\n * template (a status line plus a single button) has nothing in common with\n * `ns-pagination`'s page-number navigation.\n */\n@Component({\n selector: 'ns-load-more',\n standalone: true,\n imports: [NsButtonComponent],\n template: `\n <p class=\"ns-load-more__status\">{{ statusText() }}</p>\n @if (hasMore()) {\n <ns-button\n class=\"ns-load-more__action\"\n type=\"button\"\n variant=\"secondary\"\n [loading]=\"loading()\"\n (click)=\"loadMore.emit()\"\n >\n {{ loadMoreLabel() }}\n </ns-button>\n }\n `,\n styleUrl: './load-more.component.scss',\n host: { '[class.ns-load-more]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsLoadMoreComponent {\n readonly shown = input.required<number>();\n readonly total = input.required<number>();\n readonly label = input<string>('Mostrando {shown} de {total} resultados');\n readonly loadMoreLabel = input<string>('Cargar más');\n readonly loading = input(false, { transform: booleanAttribute });\n readonly loadMore = output<void>();\n\n readonly hasMore = computed(() => this.shown() < this.total());\n readonly statusText = computed(() =>\n this.label()\n .replace('{shown}', String(this.shown()))\n .replace('{total}', String(this.total()))\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model\n} from '@angular/core';\n\n@Component({\n selector: 'ns-pagination',\n standalone: true,\n template: `\n <nav class=\"ns-pagination__navigation\" aria-label=\"Pagination\">\n <button\n class=\"ns-pagination__control\"\n type=\"button\"\n (click)=\"goTo(page() - 1)\"\n [disabled]=\"page() <= 1\"\n >\n Previous\n </button>\n @for (item of pages(); track item) {\n <button\n class=\"ns-pagination__control\"\n type=\"button\"\n [class.ns-pagination__control--current]=\"item === page()\"\n [attr.data-current]=\"item === page()\"\n [attr.aria-current]=\"item === page() ? 'page' : null\"\n (click)=\"goTo(item)\"\n >\n {{ item }}\n </button>\n }\n <button\n class=\"ns-pagination__control\"\n type=\"button\"\n (click)=\"goTo(page() + 1)\"\n [disabled]=\"page() >= pageCount()\"\n >\n Next\n </button>\n </nav>\n `,\n styleUrls: ['./pagination.component.scss'],\n host: { '[class.ns-pagination]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsPaginationComponent {\n readonly total = input.required<number>();\n readonly pageSize = input(10);\n readonly siblingCount = input(1);\n readonly page = model(1);\n readonly pageCount = computed(() =>\n Math.max(\n 1,\n Math.ceil(Math.max(0, this.total()) / Math.max(1, this.pageSize()))\n )\n );\n readonly pages = computed(() => {\n const count = this.pageCount();\n const current = Math.min(Math.max(1, this.page()), count);\n const start = Math.max(1, current - this.siblingCount());\n const end = Math.min(count, current + this.siblingCount());\n return Array.from({ length: end - start + 1 }, (_, index) => start + index);\n });\n\n goTo(page: number): void {\n this.page.set(Math.min(Math.max(1, page), this.pageCount()));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\n\n@Component({\n selector: 'ns-popover',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './popover.component.scss',\n host: {\n role: 'dialog',\n '[class.ns-popover]': 'true',\n '[attr.aria-modal]': 'false',\n '[attr.aria-hidden]': '!isOpen()',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsPopoverComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly origin = input.required<HTMLElement>();\n readonly placement = input<NsPlacement>('bottom-start');\n readonly closeOnEscape = input(true);\n readonly closed = output<NsOverlayCloseReason>();\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n close(): void {\n this.isOpen.set(false);\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n origin: this.origin(),\n placement: this.placement(),\n closeOnEscape: this.closeOnEscape(),\n closeOnOutsidePointer: true,\n trapFocus: false,\n restoreFocus: false\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\nimport { NsColor } from '../../types';\n\n@Component({\n selector: 'ns-progress-bar',\n standalone: true,\n template:\n '<span class=\"ns-progress-bar__value\" [style.inline-size.%]=\"percentage()\"></span>',\n styleUrl: './progress-bar.component.scss',\n host: {\n role: 'progressbar',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-valuenow]': 'indeterminate() ? null : value()',\n '[attr.aria-busy]': 'indeterminate() || null',\n '[class.ns-progress-bar]': 'true',\n '[class.ns-progress-bar--indeterminate]': 'indeterminate()',\n '[class.ns-progress-bar--neutral]': \"color() === 'neutral'\",\n '[class.ns-progress-bar--primary]': \"color() === 'primary'\",\n '[class.ns-progress-bar--success]': \"color() === 'success'\",\n '[class.ns-progress-bar--warning]': \"color() === 'warning'\",\n '[class.ns-progress-bar--danger]': \"color() === 'danger'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsProgressBarComponent {\n readonly value = input(0, { transform: numberAttribute });\n readonly min = input(0, { transform: numberAttribute });\n readonly max = input(100, { transform: numberAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n readonly ariaLabel = input<string>('Progress');\n readonly color = input<NsColor>('primary');\n readonly percentage = computed(() => {\n const range = this.max() - this.min();\n if (range <= 0 || this.indeterminate()) return 0;\n return Math.min(\n 100,\n Math.max(0, ((this.value() - this.min()) / range) * 100)\n );\n });\n}\n","export class NsSchedule {\n public id: number;\n public subject: string;\n public body: string;\n public startTime: string;\n public endTime: string;\n public created: string;\n public updated: string;\n\n constructor(props: Partial<NsSchedule> = {}) {\n Object.assign(this, props);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NsSchedule } from '../models/schedule';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NsScheduleService {\n public readonly onClick$: Subject<NsSchedule> = new Subject<NsSchedule>();\n private _date: Date;\n\n constructor() {}\n\n setCurrentDate(date) {\n this._date = date;\n }\n\n get currentDate() {\n return this._date;\n }\n\n send(schedule: Partial<NsSchedule>) {\n this.onClick$.next(new NsSchedule(schedule));\n }\n\n formatDate(date: Date) {\n const pad = (num) => ('00' + num).slice(-2);\n return (\n date.getFullYear() +\n '-' +\n pad(date.getMonth() + 1) +\n '-' +\n pad(date.getDate()) +\n ' ' +\n pad(date.getHours()) +\n ':' +\n pad(date.getMinutes()) +\n ':' +\n pad(date.getSeconds())\n );\n }\n}\n","import { Component, HostListener, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n@Component({\n selector: 'ns-schedule-cell',\n template: '',\n standalone: true,\n host: {\n '[class.ns-schedule__timeline-cell]': 'true'\n }\n})\nexport class NsScheduleCellComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly day = input<number>(undefined);\n readonly timeline = input<number>(undefined);\n readonly startIn = input<number>(undefined);\n readonly endIn = input<number>(undefined);\n\n ngOnInit(): void {}\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const startTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.startIn()\n );\n const endTime = new Date(\n this.service.currentDate.getFullYear(),\n this.service.currentDate.getMonth(),\n this.day(),\n this.timeline(),\n this.endIn()\n );\n\n this.service.send({\n startTime: this.service.formatDate(startTime),\n endTime: this.service.formatDate(endTime)\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'nsWeekday',\n standalone: true\n})\nexport class WeekDayPipe implements PipeTransform {\n private weekdays: string[] = [\n 'Domingo',\n 'Lunes',\n 'Martes',\n 'Miércoles',\n 'Jueves',\n 'Viernes',\n 'Sábado'\n ];\n\n transform(day: number): string {\n return this.weekdays[day];\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { NsSchedule } from '../models/schedule';\nimport { notEmpty } from '@ng-solid/core';\nimport { NsScheduleService } from '../services/schedule.service';\n\n@Pipe({\n name: 'filterByDay',\n standalone: true\n})\nexport class FilterByDayPipe implements PipeTransform {\n private service = inject(NsScheduleService);\n\n transform(schedules: NsSchedule[], day: number): NsSchedule[] {\n const current = this.service.currentDate;\n const selector = ({ startTime }: NsSchedule) => {\n const date = new Date(startTime);\n return (\n day === date.getDate() &&\n current.getMonth() === date.getMonth() &&\n current.getFullYear() === date.getFullYear()\n );\n };\n return notEmpty(schedules) ? schedules.filter(selector) : [];\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n HostListener,\n inject,\n ViewEncapsulation,\n input\n} from '@angular/core';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleService } from '../../services/schedule.service';\n\n// Fallback for `--ns-component-schedule-slot-height` (mirrors the\n// `min-height` of `.ns-schedule__timeline-day`): used when the token is\n// missing, e.g. in tests or SSR where `provideNsTheme` never ran and the\n// custom property resolves empty.\nconst SLOT_CONTENT_HEIGHT_PX = 96;\n// Shared border between consecutive timeline rows — comes from the\n// `@apply border` on `.ns-schedule__timeline-day` (Tailwind's default border\n// width), not from a theme token.\nconst SLOT_SEAM_PX = 1;\n\n@Component({\n selector: 'ns-schedule-event',\n templateUrl: './event.component.html',\n styleUrls: ['./event.component.scss'],\n host: {\n '[class.ns-schedule__event]': 'true',\n '[class.ns-schedule__event--show]': 'schedule() && matchHour',\n '[style.height.px]': 'height'\n },\n encapsulation: ViewEncapsulation.None\n})\nexport class NsScheduleEventComponent implements AfterContentInit {\n readonly schedule = input<NsSchedule>(undefined);\n readonly timeline = input<number>(undefined);\n\n public height: number;\n private service = inject(NsScheduleService);\n private elementRef = inject(ElementRef<HTMLElement>);\n\n get matchHour() {\n const schedule = this.schedule();\n return (\n !!schedule && new Date(schedule.startTime).getHours() === this.timeline()\n );\n }\n\n ngAfterContentInit() {\n const schedule = this.schedule();\n if (schedule) {\n const startTime = new Date(schedule.startTime);\n const endTime = new Date(schedule.endTime);\n const hours = Math.abs(startTime.getTime() - endTime.getTime()) / 36e5;\n const slot = parseFloat(\n getComputedStyle(this.elementRef.nativeElement).getPropertyValue(\n '--ns-component-schedule-slot-height'\n )\n );\n const slotHeight =\n Number.isNaN(slot) || slot <= 0 ? SLOT_CONTENT_HEIGHT_PX : slot;\n this.height = Math.max(\n slotHeight * hours + SLOT_SEAM_PX * (hours - 1),\n slotHeight / 2\n );\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n event.preventDefault();\n const schedule = this.schedule();\n if (schedule) {\n this.service.send(schedule);\n }\n }\n}\n","@if (schedule(); as currentSchedule) {\n <span class=\"ns-schedule__event-subject\">{{ currentSchedule.subject }}</span>\n <div class=\"ns-schedule__event-body\" [innerHtml]=\"currentSchedule.body\"></div>\n}\n","import { Component, effect, inject, OnInit, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-day',\n templateUrl: './day.component.html',\n imports: [\n NsScheduleCellComponent,\n WeekDayPipe,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n styleUrl: './day.component.scss'\n})\nexport class DayComponent implements OnInit {\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n public current: number;\n public first: number;\n public days: number[];\n public hours: number[];\n private service = inject(NsScheduleService);\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.current = date.getDate();\n this.first = date.getDate() - date.getDay();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((x, y) => x + y);\n this.service.setCurrentDate(date);\n }\n });\n\n ngOnInit(): void {\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n <div class=\"ns-schedule__header ns-schedule__selected\">\n <div class=\"ns-schedule__header-date\">{{ current }}</div>\n <div class=\"ns-schedule__header-day\">\n {{ days.indexOf(current) | nsWeekday }}\n </div>\n </div>\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n <div class=\"ns-schedule__timeline-day ns-schedule__selected\">\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: current; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\nimport { NsScheduleEventComponent } from '../event/event.component';\n\n@Component({\n selector: 'ns-schedule-week',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n FilterByDayPipe,\n NsScheduleEventComponent\n ],\n templateUrl: './week.component.html',\n styleUrl: './week.component.scss',\n standalone: true\n})\nexport class WeekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public currentDay: number;\n public first: number;\n public last: number;\n public days: number[];\n public hours: number[];\n\n private DAYS_OF_WEEK: number = 7;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay();\n this.last = this.first + 6;\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n 0\n ).getDate();\n this.days = Array(this.DAYS_OF_WEEK)\n .fill(this.first)\n .map((day, index) => (day > 0 ? day + index : lastDayOfPrevMonth--));\n }\n });\n\n get current() {\n return this.service.currentDate;\n }\n\n ngOnInit(): void {\n this.currentDay = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': currentDay === day }\"\n >\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"day\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (schedule of schedules() | filterByDay: day; track schedule) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import { Component, effect, OnInit, inject, input } from '@angular/core';\nimport { NsScheduleService } from '../../services/schedule.service';\nimport { NsSchedule } from '../../models/schedule';\nimport { CommonModule } from '@angular/common';\nimport { WeekDayPipe } from '../../pipes/week-day.pipe';\nimport { NsScheduleCellComponent } from '../cell/cell.component';\nimport { NsScheduleEventComponent } from '../event/event.component';\nimport { FilterByDayPipe } from '../../pipes/filter-by-day.pipe';\n\n@Component({\n selector: 'ns-schedule-workweek',\n imports: [\n CommonModule,\n WeekDayPipe,\n NsScheduleCellComponent,\n NsScheduleEventComponent,\n FilterByDayPipe\n ],\n templateUrl: './workweek.component.html',\n styleUrl: './workweek.component.scss',\n standalone: true\n})\nexport class NsWorkweekComponent implements OnInit {\n private service = inject(NsScheduleService);\n\n readonly schedules = input<NsSchedule[]>(undefined);\n readonly currentDate = input<Date>(undefined);\n\n public current: number;\n public first: number;\n public last: number;\n public days: number[] = [];\n public hours: number[];\n private DAYS_OF_WORKWEEK: number = 5;\n\n private readonly syncCurrentDate = effect(() => {\n const date = this.currentDate();\n if (date instanceof Date) {\n this.first = date.getDate() - date.getDay() + 1;\n this.last = this.first + 4;\n this.days = [];\n this.service.setCurrentDate(date);\n let lastDayOfPrevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n -1\n ).getDate();\n\n let current = 0;\n while (current < this.DAYS_OF_WORKWEEK) {\n this.days.push(this.first < 1 ? lastDayOfPrevMonth : this.first);\n this.first++;\n lastDayOfPrevMonth--;\n current++;\n }\n }\n });\n\n identityDay = (index, item: NsSchedule) => item.id;\n\n ngOnInit(): void {\n this.current = new Date().getDate();\n this.hours = Array(24)\n .fill(0)\n .map((x, y) => x + y);\n }\n}\n","<div class=\"ns-schedule__header-wrap\">\n <div class=\"ns-schedule__header\"></div>\n @for (day of days; track day; let i = $index) {\n <div\n class=\"ns-schedule__header\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <div class=\"ns-schedule__header-date\">{{ day }}</div>\n <div class=\"ns-schedule__header-day\">{{ i + 1 | nsWeekday }}</div>\n </div>\n }\n</div>\n\n<div class=\"ns-schedule__timeline-wrap\">\n @for (timeline of hours; track timeline) {\n <div class=\"ns-schedule__timeline\">\n <div class=\"ns-schedule__timeline-day\">{{ timeline }}</div>\n @for (day of days; track day) {\n <div\n class=\"ns-schedule__timeline-day\"\n [ngClass]=\"{ 'ns-schedule__selected': current === day }\"\n >\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline\"\n [startIn]=\"0\"\n [endIn]=\"30\"\n />\n <ns-schedule-cell\n [day]=\"current\"\n [timeline]=\"timeline + 1\"\n [startIn]=\"30\"\n [endIn]=\"0\"\n />\n\n @for (\n schedule of schedules() | filterByDay: day;\n track identityDay($index, schedule)\n ) {\n <ns-schedule-event [schedule]=\"schedule\" [timeline]=\"timeline\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import {\n Component,\n inject,\n ViewEncapsulation,\n input,\n model\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { NsScheduleService } from './services/schedule.service';\nimport { NsSchedule } from './models/schedule';\nimport { NsDateView } from '../../types';\nimport { NsButtonComponent } from '../button';\nimport { NsDatePickerComponent } from '../form';\nimport { FormsModule } from '@angular/forms';\nimport { DateValue, getLocalTimeZone, today } from '@internationalized/date';\n\nimport { DayComponent } from './components/day/day.component';\nimport { WeekComponent } from './components/week/week.component';\nimport { NsWorkweekComponent } from './components/workweek/workweek.component';\nimport {\n NsDropdownComponent,\n NsDropdownItemDirective\n} from '../form/components/dropdown';\n\n@Component({\n selector: 'ns-schedule',\n imports: [\n NsButtonComponent,\n FormsModule,\n DayComponent,\n WeekComponent,\n NsWorkweekComponent,\n NsDatePickerComponent,\n NsDropdownComponent,\n NsDropdownItemDirective\n ],\n templateUrl: './schedule.component.html',\n styleUrls: ['./schedule.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class.ns-schedule]': 'true'\n }\n})\nexport class NsScheduleComponent {\n readonly view = model<NsDateView>('workweek');\n readonly selected = model<Date>(new Date());\n readonly selectedDay = model<DateValue>(today(getLocalTimeZone()));\n readonly height = input<number>(520);\n readonly data = input<NsSchedule[]>(undefined);\n private readonly service = inject(NsScheduleService);\n readonly onClick = outputFromObservable(this.service.onClick$);\n\n goToday(): void {\n const date = today(getLocalTimeZone());\n this.selectedDay.set(date);\n this.selected.set(new Date(date.year, date.month - 1, date.day));\n }\n\n selectDate(date: DateValue): void {\n this.selectedDay.set(date);\n this.selected.set(new Date(date.year, date.month - 1, date.day));\n }\n}\n","<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-schedule__today\" (click)=\"goToday()\">Hoy</ns-button>\n\n <ns-date-picker\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"selectDate($event)\"\n />\n\n <ns-dropdown\n class=\"ns-schedule__view\"\n [searchable]=\"false\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-dropdown-item label=\"Day\" key=\"day\" />\n <ns-dropdown-item label=\"Work week\" key=\"workweek\" />\n <ns-dropdown-item label=\"Week\" key=\"week\" />\n </ns-dropdown>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n","import {\n Component,\n HostBinding,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n input\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { NsSchemaMarkup } from './models/schema';\n\n@Component({\n selector: 'ns-schema',\n template: ''\n})\nexport class NsSchemaMarkupComponent implements OnInit, OnChanges {\n private sanitizer = inject<DomSanitizer>(DomSanitizer);\n\n readonly data = input<Partial<NsSchemaMarkup>>(undefined);\n\n @HostBinding('innerHTML') innerHTML: SafeHtml;\n\n ngOnInit() {}\n\n ngOnChanges({ data }: SimpleChanges) {\n const json = { '@context': 'https://schema.org', ...data.currentValue };\n const template = `<script type=\"application/ld+json\">${JSON.stringify(\n json,\n null,\n 2\n )}</script>`;\n this.innerHTML = this.sanitizer.bypassSecurityTrustHtml(template);\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type NsSideNavColor = 'nav' | 'success';\n\n/**\n * Vertical navigation rail. `color=\"nav\"` renders the branded blue rail\n * (`semantic.color.nav`/`navActive`); `color=\"success\"` renders a neutral\n * surface where only the active item gets a green highlight. Descendant\n * `ns-side-nav-item`/`ns-side-nav-section` read the variant through\n * `:host-context`.\n */\n@Component({\n selector: 'ns-side-nav',\n standalone: true,\n template: `<nav class=\"ns-side-nav__list\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n </nav>`,\n styleUrl: './side-nav.component.scss',\n host: {\n '[class.ns-side-nav]': 'true',\n '[class.ns-side-nav--nav]': \"color() === 'nav'\",\n '[class.ns-side-nav--success]': \"color() === 'success'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSideNavComponent {\n readonly color = input<NsSideNavColor>('nav');\n readonly ariaLabel = input<string>('Navegación principal');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n/**\n * Renders an `<a>` when `link` (routed, via `RouterLink` composition) or\n * `href` (plain external navigation) is provided, and a `<button>`\n * otherwise — so a purely programmatic item (e.g. one that opens a panel)\n * still gets correct semantics and keyboard behavior for free.\n */\n@Component({\n selector: 'ns-side-nav-item',\n standalone: true,\n imports: [RouterLink, NgTemplateOutlet],\n template: `\n <ng-template #content>\n <span class=\"ns-side-nav-item__icon\"\n ><ng-content select=\"[side-nav-item-icon]\"\n /></span>\n <span class=\"ns-side-nav-item__body\">\n <span class=\"ns-side-nav-item__label\"><ng-content /></span>\n @if (description()) {\n <span class=\"ns-side-nav-item__description\">{{ description() }}</span>\n }\n </span>\n <span class=\"ns-side-nav-item__badge\"\n ><ng-content select=\"[side-nav-item-badge]\"\n /></span>\n </ng-template>\n @if (link()) {\n <a\n class=\"ns-side-nav-item__control\"\n [routerLink]=\"link()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"onActivate($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n } @else if (href()) {\n <a\n class=\"ns-side-nav-item__control\"\n [href]=\"href()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"onActivate($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n } @else {\n <button\n class=\"ns-side-nav-item__control\"\n type=\"button\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [disabled]=\"disabled()\"\n (click)=\"onActivate($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </button>\n }\n `,\n styleUrl: './side-nav.component.scss',\n host: {\n '[class.ns-side-nav-item]': 'true',\n '[class.ns-side-nav-item--active]': 'active()',\n '[class.ns-side-nav-item--disabled]': 'disabled()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSideNavItemComponent {\n readonly href = input<string | undefined>(undefined);\n readonly link = input<string | readonly unknown[] | undefined>(undefined);\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly description = input<string | undefined>(undefined);\n readonly activated = output<void>();\n\n onActivate(event: Event): void {\n if (this.disabled()) {\n event.preventDefault();\n return;\n }\n this.activated.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ns-side-nav-section',\n standalone: true,\n template: `\n @if (label()) {\n <p class=\"ns-side-nav-section__label\">{{ label() }}</p>\n }\n <ng-content />\n `,\n styleUrl: './side-nav.component.scss',\n host: { '[class.ns-side-nav-section]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSideNavSectionComponent {\n readonly label = input<string | undefined>(undefined);\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n booleanAttribute,\n input,\n output\n} from '@angular/core';\n\nexport type NsStatCardVariant = 'default' | 'dark' | 'compact' | 'tile';\n\nexport type NsStatCardDeltaTone = 'up' | 'down' | 'neutral';\n\nexport type NsStatCardValueTone =\n 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport type NsStatCardHintTone =\n 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nexport type NsStatCardIconTone =\n 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\nconst DELTA_GLYPH: Record<NsStatCardDeltaTone, string> = {\n up: '↗',\n down: '↘',\n neutral: '→'\n};\n\n/**\n * Dashboard metric card: label, formatted value (with an optional muted\n * suffix), and an optional delta pill (`up` / `down` / `neutral`) with a\n * caption and a secondary hint. `variant=\"dark\"` renders the emphasis\n * surface used for headline metrics; `variant=\"compact\"` renders a smaller\n * card with a smaller value size; `variant=\"tile\"` renders a compact KPI\n * tile (icon circle beside a label/value/delta column, delta as plain\n * colored text instead of a pill). Set `interactive` to render the card as\n * a `<button>` and receive `(activated)` instead of a static `<div>`.\n *\n * `valueTone` colors only the headline value with the matching semantic\n * status color (`success`/`warning`/`danger`/`info`); it is ignored on\n * `variant=\"dark\"`, where the value stays white. `hintTone` colors only the\n * hint with the same semantic scale, independently of `valueTone`; like\n * `valueTone`, it is ignored on `variant=\"dark\"`, where the hint keeps the\n * emphasis-surface foreground color instead of a status color. `iconTone`\n * colors the icon wrapper background/foreground and applies to every\n * variant.\n *\n * The hint's own `margin-inline-start: auto` (pushing it to the opposite\n * edge from the value) only applies when it shares the meta row with a\n * `delta` and/or `deltaLabel` — something to separate from. A lone hint\n * (no delta, no deltaLabel) aligns to the start, under the value.\n */\n@Component({\n selector: 'ns-stat-card',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n @if (interactive()) {\n <button\n type=\"button\"\n class=\"ns-stat-card__surface\"\n (click)=\"onActivate()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </button>\n } @else {\n <div class=\"ns-stat-card__surface\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n }\n <ng-template #iconWrapper>\n <span\n class=\"ns-stat-card__icon\"\n [class.ns-stat-card__icon--info]=\"iconTone() === 'info'\"\n [class.ns-stat-card__icon--success]=\"iconTone() === 'success'\"\n [class.ns-stat-card__icon--warning]=\"iconTone() === 'warning'\"\n [class.ns-stat-card__icon--danger]=\"iconTone() === 'danger'\"\n [class.ns-stat-card__icon--neutral]=\"iconTone() === 'neutral'\"\n ><ng-content select=\"[stat-card-icon]\"\n /></span>\n </ng-template>\n <ng-template #footerSlot>\n <div class=\"ns-stat-card__footer\">\n <ng-content select=\"[stat-card-footer]\" />\n </div>\n </ng-template>\n <ng-template #deltaBadge>\n <span\n class=\"ns-stat-card__delta\"\n [class.ns-stat-card__delta--up]=\"deltaTone() === 'up'\"\n [class.ns-stat-card__delta--down]=\"deltaTone() === 'down'\"\n [class.ns-stat-card__delta--neutral]=\"deltaTone() === 'neutral'\"\n >\n <span class=\"ns-stat-card__delta-icon\" aria-hidden=\"true\">{{\n deltaGlyph()\n }}</span\n >{{ delta() }}\n </span>\n </ng-template>\n <ng-template #hintText>\n <span\n class=\"ns-stat-card__hint\"\n [class.ns-stat-card__hint--success]=\"\n hintTone() === 'success' && variant() !== 'dark'\n \"\n [class.ns-stat-card__hint--warning]=\"\n hintTone() === 'warning' && variant() !== 'dark'\n \"\n [class.ns-stat-card__hint--danger]=\"\n hintTone() === 'danger' && variant() !== 'dark'\n \"\n [class.ns-stat-card__hint--info]=\"\n hintTone() === 'info' && variant() !== 'dark'\n \"\n >{{ hint() }}</span\n >\n </ng-template>\n <ng-template #content>\n @if (variant() === 'tile') {\n <ng-container [ngTemplateOutlet]=\"iconWrapper\" />\n <div class=\"ns-stat-card__column\">\n <span class=\"ns-stat-card__label\">{{ label() }}</span>\n <div class=\"ns-stat-card__value-row\">\n <span class=\"ns-stat-card__value\">\n {{ value() }}\n @if (suffix()) {\n <span class=\"ns-stat-card__suffix\">{{ suffix() }}</span>\n }\n </span>\n @if (delta()) {\n <ng-container [ngTemplateOutlet]=\"deltaBadge\" />\n }\n </div>\n @if (deltaLabel() || hint()) {\n <div class=\"ns-stat-card__meta\">\n @if (deltaLabel()) {\n <span class=\"ns-stat-card__delta-label\">{{\n deltaLabel()\n }}</span>\n }\n @if (hint()) {\n <ng-container [ngTemplateOutlet]=\"hintText\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"footerSlot\" />\n </div>\n } @else {\n <div class=\"ns-stat-card__header\">\n <span class=\"ns-stat-card__label\">\n <ng-container [ngTemplateOutlet]=\"iconWrapper\" />\n {{ label() }}\n </span>\n </div>\n <div\n class=\"ns-stat-card__value\"\n [class.ns-stat-card__value--success]=\"\n valueTone() === 'success' && variant() !== 'dark'\n \"\n [class.ns-stat-card__value--warning]=\"\n valueTone() === 'warning' && variant() !== 'dark'\n \"\n [class.ns-stat-card__value--danger]=\"\n valueTone() === 'danger' && variant() !== 'dark'\n \"\n [class.ns-stat-card__value--info]=\"\n valueTone() === 'info' && variant() !== 'dark'\n \"\n >\n {{ value() }}\n @if (suffix()) {\n <span class=\"ns-stat-card__suffix\">{{ suffix() }}</span>\n }\n </div>\n @if (delta() || hint()) {\n <div class=\"ns-stat-card__meta\">\n @if (delta()) {\n <ng-container [ngTemplateOutlet]=\"deltaBadge\" />\n }\n @if (deltaLabel()) {\n <span class=\"ns-stat-card__delta-label\">{{ deltaLabel() }}</span>\n }\n @if (hint()) {\n <ng-container [ngTemplateOutlet]=\"hintText\" />\n }\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"footerSlot\" />\n }\n </ng-template>\n `,\n styleUrl: './stat-card.component.scss',\n host: {\n '[class.ns-stat-card]': 'true',\n '[class.ns-stat-card--default]': \"variant() === 'default'\",\n '[class.ns-stat-card--dark]': \"variant() === 'dark'\",\n '[class.ns-stat-card--compact]': \"variant() === 'compact'\",\n '[class.ns-stat-card--tile]': \"variant() === 'tile'\",\n '[class.ns-stat-card--interactive]': 'interactive()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsStatCardComponent {\n readonly label = input.required<string>();\n readonly value = input.required<string>();\n readonly suffix = input<string | undefined>(undefined);\n readonly delta = input<string | undefined>(undefined);\n readonly deltaTone = input<NsStatCardDeltaTone>('neutral');\n readonly deltaLabel = input<string | undefined>(undefined);\n readonly hint = input<string | undefined>(undefined);\n readonly valueTone = input<NsStatCardValueTone>('default');\n readonly hintTone = input<NsStatCardHintTone>('default');\n readonly iconTone = input<NsStatCardIconTone>('neutral');\n readonly variant = input<NsStatCardVariant>('default');\n readonly interactive = input(false, { transform: booleanAttribute });\n readonly activated = output<void>();\n\n protected deltaGlyph(): string {\n return DELTA_GLYPH[this.deltaTone()];\n }\n\n protected onActivate(): void {\n this.activated.emit();\n }\n}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n@Directive({\n selector: '[nsTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n readonly name = input<string | undefined>(undefined, { alias: 'nsTemplate' });\n readonly styleClass = input<string | undefined>(undefined);\n\n /** Template handle for consumers that render templates through their own API. */\n readonly ref = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { NsThemePreset } from '../models/theme.model';\n\nexport const Arvisfy: NsThemePreset = {\n name: 'Arvisfy',\n primitive: {\n color: {\n white: '#FFFFFF',\n black: '#000000',\n klein: {\n 50: '#E6EEFD',\n 100: '#C9D6F5',\n 200: '#AFC7FF',\n 300: '#89A6FF',\n 400: '#6F92FF',\n 500: '#3665F3',\n 600: '#1F4BD8',\n 700: '#0847A6',\n 800: '#05367F',\n 900: '#03285F',\n 950: '#021B40'\n },\n neutral: {\n 0: '#FFFFFF',\n // Editor footer background (batch 10), proto 2732.\n 15: '#FCFCFB',\n // Editor toolbar background (batch 9): warmer and lighter than `50`,\n // matches the literal previously kept as its own\n // `editor.toolbarBackground` primitive.\n 25: '#FAFAF9',\n // Toolbar search-field background (batch 10), proto 1121.\n 35: '#F8F8F7',\n 50: '#F7F8FA',\n 100: '#F5F5F4',\n // Empty-state icon circle background (batch 10), proto 1172.\n 125: '#F4F5F7',\n // Neutral status-pill background (batch 6), distinct from `100`.\n 150: '#F1F2F4',\n 200: '#E8E8E6',\n 300: '#E4E4E2',\n 400: '#A9AAAF',\n // Empty-state icon glyph color (batch 10), proto 1173.\n 450: '#9EA1A8',\n 500: '#8A8C93',\n 600: '#6E7078',\n // Inactive pill-tab chrome text (batch 6), distinct from `600`/`700`.\n 650: '#5A5C63',\n 700: '#4A4F58',\n 800: '#12182B',\n 900: '#151C2B',\n 950: '#0C1220'\n },\n success: {\n 50: '#E8F7EC',\n 500: '#0CAC42',\n 600: '#0A9138',\n 700: '#087A30',\n // Soft-pair foreground for chip/badge/alert \"soft\" surfaces (batch 6,\n // distinct from `700`, which stays the solid-button active shade).\n softForeground: '#2E7D46',\n // Selection/interactive tint (filter chips, pill tabs, side-nav,\n // menu hover, command-palette active row) — batch 6.\n tint: '#F1FAF4',\n // Selection-card tint (`ns-option-card`, theme picker cards) — a\n // paler, distinct green from `tint`, observed at the same prototype\n // selected-card treatment. Batch 6.\n cardTint: '#F5FBF8'\n },\n warning: {\n 50: '#FDF6E3',\n 500: '#C08A1E',\n 600: '#A5620A',\n 700: '#804D08'\n },\n danger: {\n 50: '#FEF3F2',\n // Soft-pair background for chip/badge/alert \"soft\" surfaces (batch\n // 6). `50` stays reserved for the menu/alert hover-only treatment.\n 100: '#FCEBEA',\n 500: '#E5514A',\n 600: '#C0362C',\n 700: '#982B24',\n softForeground: '#C74B41'\n },\n info: {\n foreground: '#3B72D9'\n },\n selected: {\n soft: '#E0EAFF',\n foreground: '#1B57D6'\n },\n switch: {\n on: '#3CA040',\n off: '#D7D8DC'\n },\n button: {\n success: '#4EAA50',\n secondaryForeground: '#13182A',\n tertiaryForeground: '#13182A'\n },\n // `ns-image-upload[layout=\"cover\"]` badge/action chips (AVF-8):\n // translucent dark overlay over the cover photo — decided as a\n // literal rgba pair rather than a theme color, since it must read at\n // ~11.2:1 contrast against any photo, not a themed surface. Reused\n // as-is for dark mode: it is already a fixed dark overlay, not a\n // theme-relative surface.\n imageUpload: {\n chipBackground: 'rgba(18, 24, 43, .82)',\n chipBackgroundHover: 'rgba(18, 24, 43, .64)'\n },\n dark: {\n canvas: '#0C1220',\n surface: '#151C2B',\n surfaceRaised: '#1C2536',\n text: '#F5F7FB',\n muted: '#A7B0C0',\n border: '#2B3447',\n separator: '#202A3B',\n infoBackground: '#17284A',\n infoText: '#AFC7FF',\n successBackground: '#142F22',\n successText: '#8FEDAF',\n warningBackground: '#382D17',\n warningText: '#FFD58A',\n dangerBackground: '#3A1F28',\n dangerText: '#FFAAA5',\n neutralBackground: '#202A3B',\n neutralText: '#C8D0DD',\n nav: '#3F72D8',\n navActive: '#2959B9'\n },\n toast: {\n backgroundLight: '#FFFFFF',\n backgroundDark: '#1C2536',\n foregroundLight: '#12182B',\n foregroundDark: '#F5F7FB'\n },\n violet: {\n 400: '#8A7FDA',\n 500: '#584AC0'\n },\n navRail: {\n text: 'rgba(255,255,255,.78)',\n textMuted: 'rgba(255,255,255,.62)',\n sectionLabel: 'rgba(255,255,255,.48)'\n },\n // `ns-command-palette` active-row accents (batch 6): a muted meta text\n // and an avatar-badge tint, both distinct from the shared success tint.\n commandPalette: {\n metaActiveText: '#5FA97B',\n avatarActiveBackground: '#D7F2E0'\n },\n // Local separator observed only under the modal footer (batch 6);\n // distinct from `neutral.300` (the general control/card border).\n modal: {\n footerBorder: '#EFEFEE'\n },\n // `ns-editor` toolbar chrome (batch 8), measured on the prototype's\n // rich-text toolbar. The toolbar background moved into the shared\n // `neutral.25` scale step (batch 9); only the border stays a\n // component-local primitive.\n editor: {\n // Hairline under the toolbar and the action-button hover wash;\n // lighter than `neutral.200`/`300`. Same value as\n // `modal.footerBorder`, kept as its own primitive so the two can\n // diverge independently.\n toolbarBorder: '#EFEFEE'\n },\n // `ns-stat-tile` icon tones (batch 10), measured on the prototype's KPI\n // tile row (proto 1069-1113). `successForeground` is not duplicated\n // here: it reuses the existing `success.600` primitive.\n tile: {\n infoBackground: '#E7EEFF',\n infoForeground: '#3D6BE0',\n successBackground: '#E9F7EF',\n warningBackground: '#FEF3E1',\n warningForeground: '#B9791A',\n dangerBackground: '#FBE9E9',\n dangerForeground: '#D64545'\n }\n },\n letterSpacing: {\n wide: '0.08em',\n tight: '-0.035em',\n tighter: '-0.04em',\n // `ns-stat-tile` value letter-spacing (batch 10): the tile's KPI value\n // reads at the default tracking, distinct from the tighter `stat-card`\n // display figures.\n normal: '0'\n },\n font: {\n family: {\n sans: \"'Inter Variable', Inter, ui-sans-serif, system-ui, sans-serif\",\n display:\n \"Roboto, 'Inter Variable', Inter, ui-sans-serif, system-ui, sans-serif\",\n mono: 'JetBrains Mono, ui-monospace, monospace'\n },\n size: {\n xs: '0.75rem',\n sm: '0.875rem',\n md: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n navItem: '0.84375rem',\n navItemDescription: '0.71875rem',\n navEyebrow: '0.625rem',\n displaySm: '1.5625rem',\n displayMd: '1.8125rem',\n displayLg: '2.25rem',\n // `ns-modal`'s projected `[modal-description]` subtitle (batch 6).\n modalDescription: '0.8125rem',\n // Form-field label size (batch 9): 12.5px, measured on the\n // prototype's field labels — distinct from the 14px `sm` used\n // elsewhere for body copy.\n label: '0.78125rem',\n // Button label size (batch 9): 13px, measured on the prototype's\n // buttons.\n control: '0.8125rem',\n // `ns-editor` footer caption (batch 10): 11.5px, proto 2732 (shared\n // with the stat-tile hint text, proto 1080).\n caption: '0.71875rem',\n // `ns-empty-state[size=\"sm\"]` title (batch 10): 13.5px, proto 1594.\n headingXs: '0.84375rem',\n // `ns-empty-state[size=\"md\"]` title (batch 10): 14.5px, proto 1035.\n headingSm: '0.90625rem',\n // `ns-empty-state[size=\"lg\"]` title (batch 10): 15px, proto 1176.\n headingMd: '0.9375rem'\n },\n weight: { regular: 400, medium: 500, semibold: 600, bold: 700 },\n lineHeight: { compact: 1.25, normal: 1.5, display: 1 }\n },\n space: {\n 0: '0',\n 1: '0.25rem',\n 2: '0.5rem',\n 3: '0.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.875rem',\n 8: '2rem',\n 10: '2.5rem',\n 12: '3rem'\n },\n radius: {\n none: '0',\n sm: '0.75rem',\n md: '1rem',\n lg: '1.125rem',\n tab: '0.6875rem',\n pill: '0.5rem',\n full: '9999px',\n // Form-field radius (batch 6): `ns-input`/`ns-input-number`'s 10px\n // corners, distinct from `sm` (12px), which stays the button/control\n // radius.\n field: '0.625rem',\n // Checkbox radius (batch 7): `ns-checkbox`'s 20px box needs a\n // \"squared with a slight round\" corner, not the 12px `sm`\n // (near-circular at that size) nor the 8px `pill` (still too round).\n // 4px is ~20% of the box side and matches the \"rounded\" convention\n // used by other systems (Tailwind's default `rounded`, Radix,\n // GitHub Primer) for compact 16-20px controls.\n xs: '0.25rem',\n // `ns-editor` toolbar action-button corner (batch 8): 7px. Neither\n // `pill` (8px) nor `sm` (12px) matches the prototype's tighter,\n // 28px-square toolbar buttons — both read too round at that size.\n editorAction: '0.4375rem',\n // `ns-stat-tile` corner radius (batch 10): 14px, proto 1069.\n tile: '0.875rem'\n },\n border: {\n thin: '1px',\n medium: '1.5px',\n // `ns-card[borderless]`/`ns-stat-tile` (batch 10): a tile/card without\n // a visible border still needs a slot in the border scale so its\n // `borderWidth` can reference the tier-3 primitive/semantic chain.\n none: '0'\n },\n opacity: {\n backdrop: 0.7,\n modal: 0.28,\n buttonGroupUnselected: 0.72\n },\n shadow: {\n lightSm: '0 1px 2px rgb(18 24 43 / 5%), 0 8px 24px rgb(18 24 43 / 6%)',\n lightMd: '0 8px 24px rgb(18 24 43 / 10%)',\n lightLg: '0 24px 60px rgba(18,24,43,.18)',\n lightFocus: '0 0 0 3px rgb(54 101 243 / 28%)',\n toast: '0 12px 32px rgb(18 24 43 / 16%)',\n darkSm: '0 1px 2px rgb(0 0 0 / 24%), 0 8px 24px rgb(0 0 0 / 22%)',\n darkMd: '0 12px 28px rgb(0 0 0 / 30%)',\n darkLg: '0 20px 52px rgb(0 0 0 / 42%)',\n darkFocus: '0 0 0 3px rgb(111 146 255 / 36%)'\n },\n duration: {\n fast: '150ms',\n enter: '250ms',\n exit: '60ms',\n normal: '250ms',\n slow: '500ms',\n indeterminate: '1500ms',\n shimmer: '2000ms',\n buttonLoading: '800ms',\n reduced: '0ms'\n },\n content: { breadcrumbSeparator: \"'/'\" },\n decoration: { link: 'underline' },\n outline: { focus: '1px solid currentColor' },\n offset: { link: '0.125rem' },\n transform: {\n toastHidden: 'translate(-50%, 100%)',\n toastVisible: 'translate(-50%, 0)'\n },\n easing: { standard: 'cubic-bezier(0.2, 0, 0, 1)' },\n size: {\n // Extra-small control height (batch AVF button `xs` size): 28px, half\n // way between the icon-only glyph and `controlSm` (38px).\n controlXs: '1.75rem',\n controlSm: '2.375rem',\n controlMd: '2.5rem',\n controlLg: '3rem',\n // Form-field height (batch 6): `ns-input`/`ns-input-number`'s 42px\n // default, distinct from the 40px `controlMd` shared by buttons and\n // other controls. `size=\"sm\"` reuses `controlSm` (38px, matching the\n // toolbar `ns-input-search`).\n inputMinHeight: '2.625rem',\n // Horizontal room a text field reserves on one side for a single\n // icon-sized control: `ns-input`'s leading icon, `ns-password`'s\n // visibility toggle.\n iconGutter: '2.25rem',\n // Rendered size of the icon glyph itself inside a form field —\n // `ns-input`'s leading icon, `ns-password`'s visibility toggle. Kept\n // apart from `iconGutter` (the box that reserves room for it): the\n // default `ns-icon` render is 24px, disproportionate against the\n // 42px field and 36px reserved gutter, so both fields pin the glyph\n // to 16px from this single source.\n fieldIconSize: '1rem',\n // Checkbox check-glyph dimensions (batch 7): the mark is drawn from a\n // box rotated -45deg and clipped to its bottom-left border, not a\n // square — an 8x8 square rotated that way reads as a right-angle\n // corner, not a checkmark. The 2:1 ratio (8px wide : 4px tall) gives\n // the short-arm/long-arm asymmetry that reads as a check instead.\n checkboxCheckWidth: '0.5rem',\n checkboxCheckHeight: '0.25rem',\n buttonMin: '5rem',\n meterHeight: '0.5rem',\n progressBarHeight: '0.5rem',\n progressBarIndeterminateWidth: '40%',\n switchTrackWidth: '42px',\n switchTrackHeight: '24px',\n switchThumbSize: '20px',\n switchThumbInset: '2px',\n switchThumbTranslate: '18px',\n // `sm` variant: track and translate scaled to 2/3 of the default\n // (28x16 vs 42x24), thumb/inset chosen so the thumb still sits snug\n // inside the track (14 + 2*1 = 16 = trackHeightSm) while reading\n // clearly next to 14px form text (e.g. \"Recordarme\").\n switchTrackWidthSm: '28px',\n switchTrackHeightSm: '16px',\n switchThumbSizeSm: '14px',\n switchThumbInsetSm: '1px',\n switchThumbTranslateSm: '12px',\n chipPillPaddingBlock: '5px',\n chipPillPaddingInline: '10px',\n // `ns-chip[size=\"choice\"]` (batch 9): a rectangular selection chip\n // measured on the prototype's sales-channel picker, distinct from the\n // `md` default's pill/round family above.\n chipChoiceMinHeight: '34px',\n chipChoicePaddingInline: '13px',\n tabsPillPaddingBlock: '7px',\n tabsPillPaddingInline: '15px',\n timelineDot: '9px',\n timelineDotSm: '7px',\n sideNavItemPaddingBlock: '9px',\n sideNavItemPaddingInline: '11px',\n // `ns-side-nav[color=\"success\"]` item padding (batch 6): the config\n // sub-nav uses a larger, distinct rhythm from the branded `nav` rail.\n sideNavItemPaddingBlockSuccess: '11px',\n sideNavItemPaddingInlineSuccess: '13px',\n drawer: '32rem',\n datePickerMenu: '18rem',\n modalSm: '24rem',\n // Filters modal (batch 6): 544px, up from 500px.\n modalMd: '34rem',\n // Form modal (batch 6): the prototype markup renders 680px\n // consistently; the brief's 682px target is honored here (documented\n // 2px discrepancy — see DESIGN.md).\n modalLg: '42.625rem',\n modalXl: '71.25rem',\n modalViewportInset: '2rem',\n // `ns-modal` header/body/footer padding recipe observed across every\n // prototype modal instance (batch 6): header/body block padding is\n // asymmetric (26px start, 4px end; 22px start, 26px end) and the\n // footer uses 18px.\n modalPaddingBlockSm: '1.125rem',\n modalPaddingBlockMd: '1.375rem',\n modalPaddingBlockLg: '1.625rem',\n popover: '12rem',\n dropdownMenu: '15rem',\n tooltip: '20rem',\n toastMaxWidth: '25rem',\n toastMinHeight: '3.5rem',\n statCardPaddingBlock: '20px',\n statCardPaddingInline: '22px',\n statCardPaddingBlockCompact: '16px',\n statCardPaddingInlineCompact: '18px',\n // Batch 10: 34px, up from 28px, proto 770 — the icon badge grew to\n // match the redesigned KPI icon treatment.\n statCardIconSize: '34px',\n // `ns-stat-card` icon glyph (batch 10), proto 771.\n statCardIconGlyphSize: '16px',\n // `ns-stat-card[variant=\"tile\"]` (batch 10), proto 1069-1113.\n statTileIconSize: '36px',\n statTileGap: '12px',\n statTileColumnGap: '6px',\n statTilePaddingBlock: '14px',\n statTilePaddingInline: '16px',\n // `ns-empty-state` icon circle sizes (batch 10), proto 1171-1177 (lg),\n // 1030-1036 (md), 1593-1599 (sm).\n emptyStateIconLg: '72px',\n emptyStateIconMd: '64px',\n emptyStateIconSm: '52px',\n emptyStateGlyphLg: '28px',\n emptyStateGlyphMd: '26px',\n emptyStateGlyphSm: '22px',\n emptyStateMaxWidthLg: '320px',\n emptyStateMaxWidthMd: '280px',\n emptyStateMaxWidthSm: '220px',\n emptyStateGap: '14px',\n emptyStatePaddingBlockLg: '64px',\n emptyStatePaddingBlockMd: '56px',\n emptyStatePaddingBlockSm: '36px',\n // `ns-input-search` leading glyph (batch 10), proto 1120.\n searchIconSize: '15px',\n // `ns-editor` footer chrome (batch 10), proto 2729-2732.\n editorContentMinHeight: '118px',\n editorContentPadding: '14px',\n editorFooterPaddingInline: '14px',\n commandPalette: '40rem',\n commandPaletteItemIcon: '20px',\n // `ns-editor` toolbar chrome (batch 8), measured on the prototype's\n // rich-text toolbar.\n editorToolButton: '28px',\n editorToolIcon: '16px',\n editorToolbarPaddingBlock: '6px',\n editorSeparatorHeight: '18px',\n editorSeparatorSpacing: '6px',\n editorToolbarGap: '2px',\n // The color-picker's chevron indicator is smaller than the other\n // toolbar glyphs; a dedicated size keeps `.ns-editor__toggle` out of\n // the generic per-button `svg` sizing rule.\n editorToggleIconSize: '12px',\n // `ns-image-upload[layout=\"cover\"]` (AVF-19, was 30rem in AVF-8):\n // empty-state dropzone minimum height. Also the single source of\n // truth for the filled state's height since AVF-29 — the component's\n // stylesheet reuses this exact token (never a fixed per-row size) for\n // `.ns-image-upload__cover`/`.ns-image-upload__stack`, so both states\n // move together whatever this resolves to, and `grid-auto-rows` there\n // divides it among the reserved rows instead of the rows driving the\n // height. See `imageUpload.stackGap` below for why it no longer\n // participates in that arithmetic. The per-row size token this used\n // to share that arithmetic with, `thumbnailSize`, has been retired —\n // it no longer has any effect, and the retired-token registry warns\n // anyone who still overrides it.\n emptyMinHeight: '17.5rem',\n // Empty-state icon circle (AVF-8): distinct from `emptyStateIconLg`\n // (72px) — this is the larger cover-dropzone treatment, not the\n // generic `ns-empty-state` component.\n emptyIconCircleSize: '6.875rem',\n emptyIconSize: '2.5rem',\n addIconSize: '1.75rem'\n },\n layout: {\n scheduleDay: '[index] 3rem [timeline] minmax(0, 1fr)',\n scheduleWeek: '[index] 3rem repeat(7, minmax(0, 1fr))',\n scheduleWorkweek: '[index] 3rem repeat(5, minmax(0, 1fr))',\n // Timeline row height for a single hour slot (`.ns-schedule__timeline-day`).\n // Must be `px`, not `rem`: `event.component.ts` reads this custom\n // property back with `getComputedStyle` at runtime, which returns the\n // value as written rather than resolving it to pixels.\n scheduleSlotHeight: '96px'\n },\n zIndex: { overlay: 1000, backdrop: 1050, modal: 1060, toast: 1080 }\n },\n semantic: {\n common: {\n font: {\n body: '{primitive.font.family.sans}',\n display: '{primitive.font.family.display}',\n code: '{primitive.font.family.mono}',\n // `ns-stat-tile` value typeface (batch 10): no dedicated semantic\n // name existed for the sans family — `body` already resolves to the\n // same primitive but under a name that doesn't read as a font-family\n // token at the tile's call site.\n sans: '{primitive.font.family.sans}'\n },\n text: {\n xs: '{primitive.font.size.xs}',\n sm: '{primitive.font.size.sm}',\n md: '{primitive.font.size.md}',\n lg: '{primitive.font.size.lg}',\n // `ns-stat-tile` value size (batch 10): the `xl` step existed as a\n // primitive but had no semantic mirror yet.\n xl: '{primitive.font.size.xl}',\n navItem: '{primitive.font.size.navItem}',\n navItemDescription: '{primitive.font.size.navItemDescription}',\n navEyebrow: '{primitive.font.size.navEyebrow}',\n displaySm: '{primitive.font.size.displaySm}',\n displayMd: '{primitive.font.size.displayMd}',\n displayLg: '{primitive.font.size.displayLg}',\n modalDescription: '{primitive.font.size.modalDescription}',\n label: '{primitive.font.size.label}',\n control: '{primitive.font.size.control}',\n caption: '{primitive.font.size.caption}',\n headingXs: '{primitive.font.size.headingXs}',\n headingSm: '{primitive.font.size.headingSm}',\n headingMd: '{primitive.font.size.headingMd}'\n },\n letterSpacing: {\n wide: '{primitive.letterSpacing.wide}',\n tight: '{primitive.letterSpacing.tight}',\n tighter: '{primitive.letterSpacing.tighter}',\n normal: '{primitive.letterSpacing.normal}'\n },\n navRail: {\n text: '{primitive.color.navRail.text}',\n textMuted: '{primitive.color.navRail.textMuted}',\n sectionLabel: '{primitive.color.navRail.sectionLabel}',\n activeText: '{primitive.color.white}'\n },\n fontWeight: {\n regular: '{primitive.font.weight.regular}',\n medium: '{primitive.font.weight.medium}',\n semibold: '{primitive.font.weight.semibold}',\n bold: '{primitive.font.weight.bold}'\n },\n lineHeight: {\n compact: '{primitive.font.lineHeight.compact}',\n normal: '{primitive.font.lineHeight.normal}',\n display: '{primitive.font.lineHeight.display}'\n },\n space: {\n none: '{primitive.space.0}',\n xs: '{primitive.space.1}',\n sm: '{primitive.space.2}',\n md: '{primitive.space.3}',\n lg: '{primitive.space.4}',\n xl: '{primitive.space.6}',\n modal: '{primitive.space.7}',\n xxl: '{primitive.space.8}'\n },\n radius: {\n control: '{primitive.radius.sm}',\n surface: '{primitive.radius.lg}',\n overlay: '{primitive.radius.md}',\n tab: '{primitive.radius.tab}',\n pill: '{primitive.radius.pill}',\n round: '{primitive.radius.full}',\n field: '{primitive.radius.field}',\n // Dedicated slot for the checkbox box (batch 7): kept separate from\n // `control` so button/input/menu radii are untouched.\n checkbox: '{primitive.radius.xs}',\n editorAction: '{primitive.radius.editorAction}',\n tile: '{primitive.radius.tile}'\n },\n border: {\n thin: '{primitive.border.thin}',\n medium: '{primitive.border.medium}',\n none: '{primitive.border.none}'\n },\n opacity: {\n backdrop: '{primitive.opacity.backdrop}',\n modal: '{primitive.opacity.modal}',\n buttonGroupUnselected: '{primitive.opacity.buttonGroupUnselected}'\n },\n motion: {\n fast: '{primitive.duration.fast}',\n enter: '{primitive.duration.enter}',\n exit: '{primitive.duration.exit}',\n normal: '{primitive.duration.normal}',\n slow: '{primitive.duration.slow}',\n indeterminate: '{primitive.duration.indeterminate}',\n shimmer: '{primitive.duration.shimmer}',\n buttonLoading: '{primitive.duration.buttonLoading}',\n easing: '{primitive.easing.standard}',\n toastHidden: '{primitive.transform.toastHidden}',\n toastVisible: '{primitive.transform.toastVisible}'\n },\n content: {\n breadcrumbSeparator: '{primitive.content.breadcrumbSeparator}'\n },\n decoration: {\n link: '{primitive.decoration.link}'\n },\n outline: {\n focus: '{primitive.outline.focus}'\n },\n offset: {\n link: '{primitive.offset.link}'\n },\n size: {\n controlXs: '{primitive.size.controlXs}',\n controlSm: '{primitive.size.controlSm}',\n controlMd: '{primitive.size.controlMd}',\n controlLg: '{primitive.size.controlLg}',\n inputMinHeight: '{primitive.size.inputMinHeight}',\n iconGutter: '{primitive.size.iconGutter}',\n fieldIconSize: '{primitive.size.fieldIconSize}',\n checkboxCheckWidth: '{primitive.size.checkboxCheckWidth}',\n checkboxCheckHeight: '{primitive.size.checkboxCheckHeight}',\n buttonMin: '{primitive.size.buttonMin}',\n meterHeight: '{primitive.size.meterHeight}',\n progressBarHeight: '{primitive.size.progressBarHeight}',\n progressBarIndeterminateWidth:\n '{primitive.size.progressBarIndeterminateWidth}',\n switchTrackWidth: '{primitive.size.switchTrackWidth}',\n switchTrackHeight: '{primitive.size.switchTrackHeight}',\n switchThumbSize: '{primitive.size.switchThumbSize}',\n switchThumbInset: '{primitive.size.switchThumbInset}',\n switchThumbTranslate: '{primitive.size.switchThumbTranslate}',\n switchTrackWidthSm: '{primitive.size.switchTrackWidthSm}',\n switchTrackHeightSm: '{primitive.size.switchTrackHeightSm}',\n switchThumbSizeSm: '{primitive.size.switchThumbSizeSm}',\n switchThumbInsetSm: '{primitive.size.switchThumbInsetSm}',\n switchThumbTranslateSm: '{primitive.size.switchThumbTranslateSm}',\n chipPillPaddingBlock: '{primitive.size.chipPillPaddingBlock}',\n chipPillPaddingInline: '{primitive.size.chipPillPaddingInline}',\n chipChoiceMinHeight: '{primitive.size.chipChoiceMinHeight}',\n chipChoicePaddingInline: '{primitive.size.chipChoicePaddingInline}',\n tabsPillPaddingBlock: '{primitive.size.tabsPillPaddingBlock}',\n tabsPillPaddingInline: '{primitive.size.tabsPillPaddingInline}',\n timelineDot: '{primitive.size.timelineDot}',\n timelineDotSm: '{primitive.size.timelineDotSm}',\n sideNavItemPaddingBlock: '{primitive.size.sideNavItemPaddingBlock}',\n sideNavItemPaddingInline: '{primitive.size.sideNavItemPaddingInline}',\n sideNavItemPaddingBlockSuccess:\n '{primitive.size.sideNavItemPaddingBlockSuccess}',\n sideNavItemPaddingInlineSuccess:\n '{primitive.size.sideNavItemPaddingInlineSuccess}',\n drawer: '{primitive.size.drawer}',\n datePickerMenu: '{primitive.size.datePickerMenu}',\n modalSm: '{primitive.size.modalSm}',\n modalMd: '{primitive.size.modalMd}',\n modalLg: '{primitive.size.modalLg}',\n modalXl: '{primitive.size.modalXl}',\n modalViewportInset: '{primitive.size.modalViewportInset}',\n modalPaddingBlockSm: '{primitive.size.modalPaddingBlockSm}',\n modalPaddingBlockMd: '{primitive.size.modalPaddingBlockMd}',\n modalPaddingBlockLg: '{primitive.size.modalPaddingBlockLg}',\n popover: '{primitive.size.popover}',\n dropdownMenu: '{primitive.size.dropdownMenu}',\n tooltip: '{primitive.size.tooltip}',\n toastMaxWidth: '{primitive.size.toastMaxWidth}',\n toastMinHeight: '{primitive.size.toastMinHeight}',\n statCardPaddingBlock: '{primitive.size.statCardPaddingBlock}',\n statCardPaddingInline: '{primitive.size.statCardPaddingInline}',\n statCardPaddingBlockCompact:\n '{primitive.size.statCardPaddingBlockCompact}',\n statCardPaddingInlineCompact:\n '{primitive.size.statCardPaddingInlineCompact}',\n statCardIconSize: '{primitive.size.statCardIconSize}',\n statCardIconGlyphSize: '{primitive.size.statCardIconGlyphSize}',\n statTileIconSize: '{primitive.size.statTileIconSize}',\n statTileGap: '{primitive.size.statTileGap}',\n statTileColumnGap: '{primitive.size.statTileColumnGap}',\n statTilePaddingBlock: '{primitive.size.statTilePaddingBlock}',\n statTilePaddingInline: '{primitive.size.statTilePaddingInline}',\n emptyStateIconLg: '{primitive.size.emptyStateIconLg}',\n emptyStateIconMd: '{primitive.size.emptyStateIconMd}',\n emptyStateIconSm: '{primitive.size.emptyStateIconSm}',\n emptyStateGlyphLg: '{primitive.size.emptyStateGlyphLg}',\n emptyStateGlyphMd: '{primitive.size.emptyStateGlyphMd}',\n emptyStateGlyphSm: '{primitive.size.emptyStateGlyphSm}',\n emptyStateMaxWidthLg: '{primitive.size.emptyStateMaxWidthLg}',\n emptyStateMaxWidthMd: '{primitive.size.emptyStateMaxWidthMd}',\n emptyStateMaxWidthSm: '{primitive.size.emptyStateMaxWidthSm}',\n emptyStateGap: '{primitive.size.emptyStateGap}',\n emptyStatePaddingBlockLg: '{primitive.size.emptyStatePaddingBlockLg}',\n emptyStatePaddingBlockMd: '{primitive.size.emptyStatePaddingBlockMd}',\n emptyStatePaddingBlockSm: '{primitive.size.emptyStatePaddingBlockSm}',\n searchIconSize: '{primitive.size.searchIconSize}',\n editorContentMinHeight: '{primitive.size.editorContentMinHeight}',\n editorContentPadding: '{primitive.size.editorContentPadding}',\n editorFooterPaddingInline: '{primitive.size.editorFooterPaddingInline}',\n commandPalette: '{primitive.size.commandPalette}',\n commandPaletteItemIcon: '{primitive.size.commandPaletteItemIcon}',\n editorToolButton: '{primitive.size.editorToolButton}',\n editorToolIcon: '{primitive.size.editorToolIcon}',\n editorToolbarPaddingBlock: '{primitive.size.editorToolbarPaddingBlock}',\n editorSeparatorHeight: '{primitive.size.editorSeparatorHeight}',\n editorSeparatorSpacing: '{primitive.size.editorSeparatorSpacing}',\n editorToolbarGap: '{primitive.size.editorToolbarGap}',\n editorToggleIconSize: '{primitive.size.editorToggleIconSize}',\n emptyMinHeight: '{primitive.size.emptyMinHeight}',\n emptyIconCircleSize: '{primitive.size.emptyIconCircleSize}',\n emptyIconSize: '{primitive.size.emptyIconSize}',\n addIconSize: '{primitive.size.addIconSize}'\n },\n layer: {\n overlay: '{primitive.zIndex.overlay}',\n backdrop: '{primitive.zIndex.backdrop}',\n modal: '{primitive.zIndex.modal}',\n toast: '{primitive.zIndex.toast}'\n },\n layout: {\n scheduleDay: '{primitive.layout.scheduleDay}',\n scheduleWeek: '{primitive.layout.scheduleWeek}',\n scheduleWorkweek: '{primitive.layout.scheduleWorkweek}',\n scheduleSlotHeight: '{primitive.layout.scheduleSlotHeight}'\n },\n status: {\n primarySoft: '{primitive.color.klein.50}',\n successSoft: '{primitive.color.success.50}',\n warningSoft: '{primitive.color.warning.50}',\n dangerSoft: '{primitive.color.danger.100}',\n primarySoftForeground: '{primitive.color.klein.600}',\n successSoftForeground: '{primitive.color.success.softForeground}',\n warningSoftForeground: '{primitive.color.warning.500}',\n dangerSoftForeground: '{primitive.color.danger.softForeground}',\n // Preserves the pre-batch-6 `dangerSoft` value (`danger.50`) for the\n // menu/alert hover-only treatment now that `dangerSoft` itself points\n // at the pill-badge `danger.100` value.\n dangerSoftHover: '{primitive.color.danger.50}',\n successTint: '{primitive.color.success.tint}',\n successTintForeground: '{primitive.color.success.500}',\n successCardTint: '{primitive.color.success.cardTint}',\n commandPaletteMetaActive:\n '{primitive.color.commandPalette.metaActiveText}',\n commandPaletteAvatarActiveBackground:\n '{primitive.color.commandPalette.avatarActiveBackground}',\n success: '{primitive.color.success.500}',\n successHover: '{primitive.color.success.600}',\n successActive: '{primitive.color.success.700}',\n warning: '{primitive.color.warning.500}',\n warningHover: '{primitive.color.warning.600}',\n warningActive: '{primitive.color.warning.700}',\n danger: '{primitive.color.danger.500}',\n dangerHover: '{primitive.color.danger.600}',\n dangerActive: '{primitive.color.danger.700}',\n successForeground: '{primitive.color.neutral.950}',\n successHoverForeground: '{primitive.color.neutral.950}',\n successActiveForeground: '{primitive.color.white}',\n warningForeground: '{primitive.color.neutral.950}',\n warningHoverForeground: '{primitive.color.white}',\n warningActiveForeground: '{primitive.color.white}',\n dangerForeground: '{primitive.color.neutral.950}',\n dangerHoverForeground: '{primitive.color.white}',\n dangerActiveForeground: '{primitive.color.white}',\n dangerBadgeForeground: '{primitive.color.white}'\n },\n color: {\n switchOn: '{primitive.color.switch.on}',\n switchOff: '{primitive.color.switch.off}',\n chipBackground: '{primitive.color.imageUpload.chipBackground}',\n chipBackgroundHover: '{primitive.color.imageUpload.chipBackgroundHover}'\n },\n button: {\n solidForeground: '{primitive.color.white}',\n successBackground: '{primitive.color.button.success}',\n successForeground: '{primitive.color.white}',\n dangerBackground: '{primitive.color.danger.500}'\n },\n reducedMotion: {\n fast: '{primitive.duration.reduced}',\n enter: '{primitive.duration.reduced}',\n exit: '{primitive.duration.reduced}',\n normal: '{primitive.duration.reduced}',\n slow: '{primitive.duration.reduced}',\n indeterminate: '{primitive.duration.reduced}',\n shimmer: '{primitive.duration.reduced}'\n }\n },\n colorScheme: {\n light: {\n color: {\n background: '{primitive.color.neutral.50}',\n content1: '{primitive.color.white}',\n content2: '{primitive.color.neutral.100}',\n content3: '{primitive.color.neutral.200}',\n content4: '{primitive.color.neutral.300}',\n surface: '{primitive.color.white}',\n surfaceMuted: '{primitive.color.neutral.100}',\n surfaceEmphasis: '{primitive.color.neutral.200}',\n emphasisBackground: '{primitive.color.neutral.800}',\n emphasisForeground: '{primitive.color.white}',\n text: '{primitive.color.neutral.800}',\n // Typed/entered field text (batch 9): `ns-input` and friends'\n // value text, measured slightly lighter than the general `text`\n // token on the prototype.\n textSecondary: '{primitive.color.neutral.700}',\n toastBackground: '{primitive.color.toast.backgroundLight}',\n toastForeground: '{primitive.color.toast.foregroundLight}',\n textMuted: '{primitive.color.neutral.500}',\n textMutedStrong: '{primitive.color.neutral.600}',\n textInactive: '{primitive.color.neutral.650}',\n border: '{primitive.color.neutral.300}',\n borderStrong: '{primitive.color.neutral.400}',\n separator: '{primitive.color.neutral.100}',\n modalFooterBorder: '{primitive.color.modal.footerBorder}',\n // `ns-editor` toolbar chrome (batch 8): the prototype is\n // light-only, so these have no dark counterpart to observe from.\n editorToolbarBackground: '{primitive.color.neutral.25}',\n editorToolbarBorder: '{primitive.color.editor.toolbarBorder}',\n editorActionColor: '{primitive.color.neutral.700}',\n editorActionHoverBackground: '{primitive.color.editor.toolbarBorder}',\n // Batch 10: `ns-input-search`/`ns-editor` placeholder text, proto\n // 1121/2732.\n textPlaceholder: '{primitive.color.neutral.400}',\n // `ns-empty-state` icon circle (batch 10), proto 1171-1177.\n emptyStateIconBackground: '{primitive.color.neutral.125}',\n emptyStateIconColor: '{primitive.color.neutral.450}',\n // `ns-input-search` toolbar field background (batch 10), proto\n // 1121.\n searchFieldBackground: '{primitive.color.neutral.35}',\n // `ns-editor` footer chrome (batch 10), proto 2732.\n editorFooterBackground: '{primitive.color.neutral.15}',\n editorFooterBorder: '{primitive.color.neutral.100}',\n primary: '{primitive.color.klein.500}',\n primaryHover: '{primitive.color.klein.600}',\n primaryActive: '{primitive.color.klein.700}',\n primaryForeground: '{primitive.color.white}',\n actionBackground: '{primitive.color.klein.500}',\n actionBackgroundHover: '{primitive.color.klein.600}',\n actionBackgroundActive: '{primitive.color.klein.700}',\n actionForeground: '{primitive.color.white}',\n focus: '{primitive.color.klein.500}',\n nav: '{primitive.color.klein.700}',\n navActive: '{primitive.color.klein.800}',\n chart: '{primitive.color.klein.500}'\n },\n button: {\n secondaryBackground: '{primitive.color.white}',\n secondaryBorderColor: '{primitive.color.neutral.200}',\n secondaryColor: '{primitive.color.button.secondaryForeground}',\n tertiaryColor: '{primitive.color.button.tertiaryForeground}'\n },\n status: {\n primarySoft: '{primitive.color.klein.50}',\n successSoft: '{primitive.color.success.50}',\n warningSoft: '{primitive.color.warning.50}',\n dangerSoft: '{primitive.color.danger.100}',\n primarySoftForeground: '{primitive.color.klein.600}',\n successSoftForeground: '{primitive.color.success.softForeground}',\n warningSoftForeground: '{primitive.color.warning.500}',\n dangerSoftForeground: '{primitive.color.danger.softForeground}',\n dangerSoftHover: '{primitive.color.danger.50}',\n successTint: '{primitive.color.success.tint}',\n successTintForeground: '{primitive.color.success.500}',\n successCardTint: '{primitive.color.success.cardTint}',\n commandPaletteMetaActive:\n '{primitive.color.commandPalette.metaActiveText}',\n commandPaletteAvatarActiveBackground:\n '{primitive.color.commandPalette.avatarActiveBackground}',\n infoSoft: '{primitive.color.klein.50}',\n infoSoftForeground: '{primitive.color.info.foreground}',\n // `ns-stat-card[variant=\"tile\"]` icon/delta tones (batch 10),\n // proto 1069-1113. Named `*TileTint` rather than the brief's plain\n // `*Tint` because `successTint`/`successTintForeground` already\n // exist above as the unrelated selection/interactive tint consumed\n // by `chip`, `menu`, `sideNav` and `commandPalette` — reusing that\n // name here would have silently changed those components' colors.\n infoTileTint: '{primitive.color.tile.infoBackground}',\n infoTileTintForeground: '{primitive.color.tile.infoForeground}',\n successTileTint: '{primitive.color.tile.successBackground}',\n successTileTintForeground: '{primitive.color.success.600}',\n warningTileTint: '{primitive.color.tile.warningBackground}',\n warningTileTintForeground: '{primitive.color.tile.warningForeground}',\n dangerTileTint: '{primitive.color.tile.dangerBackground}',\n dangerTileTintForeground: '{primitive.color.tile.dangerForeground}',\n selectedSoft: '{primitive.color.selected.soft}',\n selectedSoftForeground: '{primitive.color.selected.foreground}',\n success: '{primitive.color.success.500}',\n successHover: '{primitive.color.success.600}',\n successActive: '{primitive.color.success.700}',\n warning: '{primitive.color.warning.500}',\n warningHover: '{primitive.color.warning.600}',\n warningActive: '{primitive.color.warning.700}',\n danger: '{primitive.color.danger.500}',\n dangerHover: '{primitive.color.danger.600}',\n dangerActive: '{primitive.color.danger.700}',\n successForeground: '{primitive.color.neutral.950}',\n successHoverForeground: '{primitive.color.neutral.950}',\n successActiveForeground: '{primitive.color.white}',\n warningForeground: '{primitive.color.neutral.950}',\n warningHoverForeground: '{primitive.color.white}',\n warningActiveForeground: '{primitive.color.white}',\n dangerForeground: '{primitive.color.neutral.950}',\n dangerHoverForeground: '{primitive.color.white}',\n dangerActiveForeground: '{primitive.color.white}',\n infoBackground: '{primitive.color.klein.50}',\n infoText: '{primitive.color.klein.600}',\n successBackground: '{primitive.color.success.50}',\n successText: '{primitive.color.success.700}',\n warningBackground: '{primitive.color.warning.50}',\n warningText: '{primitive.color.warning.600}',\n dangerBackground: '{primitive.color.danger.50}',\n dangerText: '{primitive.color.danger.600}',\n neutralBackground: '{primitive.color.neutral.150}',\n neutralText: '{primitive.color.neutral.700}',\n info: '{primitive.color.info.foreground}',\n accent: '{primitive.color.violet.500}'\n },\n shadow: {\n subtle: '{primitive.shadow.lightSm}',\n overlay: '{primitive.shadow.lightMd}',\n modal: '{primitive.shadow.lightMd}',\n high: '{primitive.shadow.lightLg}',\n focus: '{primitive.shadow.lightFocus}',\n toast: '{primitive.shadow.toast}'\n }\n },\n dark: {\n color: {\n background: '{primitive.color.dark.canvas}',\n content1: '{primitive.color.dark.surface}',\n content2: '{primitive.color.dark.surfaceRaised}',\n content3: '{primitive.color.dark.separator}',\n content4: '{primitive.color.dark.border}',\n surface: '{primitive.color.dark.surface}',\n surfaceMuted: '{primitive.color.dark.surfaceRaised}',\n surfaceEmphasis: '{primitive.color.dark.separator}',\n emphasisBackground: '{primitive.color.dark.surfaceRaised}',\n emphasisForeground: '{primitive.color.dark.text}',\n text: '{primitive.color.dark.text}',\n // Typed/entered field text (batch 9): no distinct dark primitive\n // was observed for this secondary shade, so dark mode keeps full\n // contrast instead of introducing an unobserved intermediate tone.\n textSecondary: '{primitive.color.dark.text}',\n toastBackground: '{primitive.color.toast.backgroundDark}',\n toastForeground: '{primitive.color.toast.foregroundDark}',\n textMuted: '{primitive.color.dark.muted}',\n // No distinct dark equivalent observed for the prototype's\n // `#6E7078` modal-description shade; reusing the existing muted\n // dark text keeps the description legible without inventing a new\n // dark primitive (batch 6, documented in DESIGN.md).\n textMutedStrong: '{primitive.color.dark.muted}',\n // No distinct dark equivalent observed for `#5A5C63`; reusing the\n // existing dark muted text (batch 6, documented).\n textInactive: '{primitive.color.dark.muted}',\n border: '{primitive.color.dark.border}',\n borderStrong: '{primitive.color.neutral.600}',\n separator: '{primitive.color.dark.separator}',\n // Reuses the existing dark separator for the modal footer border\n // (batch 6); the prototype is light-only, so no distinct dark\n // value is observed.\n modalFooterBorder: '{primitive.color.dark.separator}',\n // `ns-editor` toolbar chrome (batch 8): the prototype is\n // light-only, so these reuse the existing dark surface/muted\n // tokens that already carry this exact legibility today\n // (`surfaceMuted` in dark already resolves to `dark.surfaceRaised`)\n // — the dark scheme is not degraded by this addition.\n editorToolbarBackground: '{primitive.color.dark.surfaceRaised}',\n editorToolbarBorder: '{primitive.color.dark.border}',\n editorActionColor: '{primitive.color.dark.muted}',\n editorActionHoverBackground: '{primitive.color.dark.separator}',\n // Batch 10: no distinct dark primitives were observed for these\n // light-only prototype surfaces, so dark mode reuses the existing\n // muted/raised-surface tokens that already carry the same role.\n textPlaceholder: '{primitive.color.dark.muted}',\n emptyStateIconBackground: '{primitive.color.dark.surfaceRaised}',\n emptyStateIconColor: '{primitive.color.dark.muted}',\n searchFieldBackground: '{primitive.color.dark.surface}',\n editorFooterBackground: '{primitive.color.dark.surfaceRaised}',\n editorFooterBorder: '{primitive.color.dark.separator}',\n primary: '{primitive.color.klein.400}',\n primaryHover: '{primitive.color.klein.300}',\n primaryActive: '{primitive.color.klein.500}',\n primaryForeground: '{primitive.color.dark.canvas}',\n actionBackground: '{primitive.color.klein.400}',\n actionBackgroundHover: '{primitive.color.klein.300}',\n actionBackgroundActive: '{primitive.color.klein.500}',\n actionForeground: '{primitive.color.dark.canvas}',\n focus: '{primitive.color.klein.400}',\n nav: '{primitive.color.dark.nav}',\n navActive: '{primitive.color.dark.navActive}',\n chart: '{primitive.color.klein.300}'\n },\n button: {\n secondaryBackground: '{primitive.color.dark.surface}',\n secondaryBorderColor: '{primitive.color.dark.border}',\n secondaryColor: '{primitive.color.dark.text}',\n tertiaryColor: '{primitive.color.dark.text}'\n },\n status: {\n primarySoft: '{primitive.color.dark.infoBackground}',\n successSoft: '{primitive.color.dark.successBackground}',\n warningSoft: '{primitive.color.dark.warningBackground}',\n dangerSoft: '{primitive.color.dark.dangerBackground}',\n primarySoftForeground: '{primitive.color.dark.infoText}',\n successSoftForeground: '{primitive.color.dark.successText}',\n warningSoftForeground: '{primitive.color.dark.warningText}',\n dangerSoftForeground: '{primitive.color.dark.dangerText}',\n // Reuses the existing dark danger-soft pair; the light-only\n // `dangerSoftHover` split (batch 6) has no distinct dark\n // observation to draw from.\n dangerSoftHover: '{primitive.color.dark.dangerBackground}',\n // The prototype provides no dark reference for the new selection\n // tints; both reuse the existing dark success-soft pair so the\n // interactive/selected states stay coherent with dark mode's\n // established success treatment (batch 6, documented).\n successTint: '{primitive.color.dark.successBackground}',\n successTintForeground: '{primitive.color.dark.successText}',\n successCardTint: '{primitive.color.dark.successBackground}',\n commandPaletteMetaActive: '{primitive.color.dark.successText}',\n commandPaletteAvatarActiveBackground:\n '{primitive.color.dark.successBackground}',\n infoSoft: '{primitive.color.dark.infoBackground}',\n infoSoftForeground: '{primitive.color.dark.infoText}',\n // `ns-stat-card[variant=\"tile\"]` icon/delta tones (batch 10): see\n // the light-scheme comment above for the `*TileTint` naming\n // rationale.\n infoTileTint: '{primitive.color.dark.infoBackground}',\n infoTileTintForeground: '{primitive.color.dark.infoText}',\n successTileTint: '{primitive.color.dark.successBackground}',\n successTileTintForeground: '{primitive.color.dark.successText}',\n warningTileTint: '{primitive.color.dark.warningBackground}',\n warningTileTintForeground: '{primitive.color.dark.warningText}',\n dangerTileTint: '{primitive.color.dark.dangerBackground}',\n dangerTileTintForeground: '{primitive.color.dark.dangerText}',\n selectedSoft: '{primitive.color.dark.infoBackground}',\n selectedSoftForeground: '{primitive.color.dark.infoText}',\n success: '{primitive.color.success.500}',\n successHover: '{primitive.color.success.600}',\n successActive: '{primitive.color.success.700}',\n warning: '{primitive.color.warning.500}',\n warningHover: '{primitive.color.warning.600}',\n warningActive: '{primitive.color.warning.700}',\n danger: '{primitive.color.danger.500}',\n dangerHover: '{primitive.color.danger.600}',\n dangerActive: '{primitive.color.danger.700}',\n successForeground: '{primitive.color.neutral.950}',\n successHoverForeground: '{primitive.color.neutral.950}',\n successActiveForeground: '{primitive.color.white}',\n warningForeground: '{primitive.color.neutral.950}',\n warningHoverForeground: '{primitive.color.white}',\n warningActiveForeground: '{primitive.color.white}',\n dangerForeground: '{primitive.color.neutral.950}',\n dangerHoverForeground: '{primitive.color.white}',\n dangerActiveForeground: '{primitive.color.white}',\n infoBackground: '{primitive.color.dark.infoBackground}',\n infoText: '{primitive.color.dark.infoText}',\n successBackground: '{primitive.color.dark.successBackground}',\n successText: '{primitive.color.dark.successText}',\n warningBackground: '{primitive.color.dark.warningBackground}',\n warningText: '{primitive.color.dark.warningText}',\n dangerBackground: '{primitive.color.dark.dangerBackground}',\n dangerText: '{primitive.color.dark.dangerText}',\n neutralBackground: '{primitive.color.dark.neutralBackground}',\n neutralText: '{primitive.color.dark.neutralText}',\n info: '{primitive.color.dark.infoText}',\n accent: '{primitive.color.violet.400}'\n },\n shadow: {\n subtle: '{primitive.shadow.darkSm}',\n overlay: '{primitive.shadow.darkMd}',\n modal: '{primitive.shadow.darkMd}',\n high: '{primitive.shadow.darkLg}',\n focus: '{primitive.shadow.darkFocus}',\n toast: '{primitive.shadow.toast}'\n }\n }\n }\n },\n components: {\n description: {\n color: '{semantic.color.textMuted}',\n fontSize: '{semantic.text.sm}',\n lineHeight: '{semantic.lineHeight.normal}'\n },\n divider: {\n color: '{semantic.color.border}',\n thickness: '{semantic.border.thin}',\n opacity: '{semantic.opacity.backdrop}'\n },\n surface: {\n background: '{semantic.color.surface}',\n softBackground: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n radius: '{semantic.radius.surface}',\n shadow: '{semantic.shadow.subtle}',\n transitionDuration: '{semantic.motion.fast}'\n },\n input: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n placeholder: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}',\n // Form-field radius (batch 6): 10px, distinct from the 12px button\n // control radius.\n radius: '{semantic.radius.field}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n // Control's `padding-inline-start` when a leading `icon` is set,\n // reserving room for `.ns-input__leading`.\n iconPaddingInline: '{semantic.size.iconGutter}',\n // Rendered size of `.ns-input__leading`'s `ns-icon` glyph (24px by\n // default, disproportionate against the 36px gutter it sits in).\n iconSize: '{semantic.size.fieldIconSize}',\n // Default (`md`) height is 42px (batch 6), up from the 40px shared\n // `controlMd`. `sm`/`lg` reuse the existing control sizes (38px/48px)\n // so the `size` input — previously a no-op on this component — now\n // has a visible effect.\n minHeight: '{semantic.size.inputMinHeight}',\n minHeightSm: '{semantic.size.controlSm}',\n minHeightLg: '{semantic.size.controlLg}',\n focusShadow: '{semantic.shadow.focus}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n disabledColor: '{semantic.color.textMuted}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n button: {\n background: '{semantic.color.actionBackground}',\n backgroundHover: '{semantic.color.actionBackgroundHover}',\n backgroundActive: '{semantic.color.actionBackgroundActive}',\n color: '{semantic.button.solidForeground}',\n radius: '{semantic.radius.control}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.lg}',\n minWidth: '{semantic.size.buttonMin}',\n minHeight: '{semantic.size.controlMd}',\n fontSize: '{semantic.text.control}',\n fontWeight: '{semantic.fontWeight.bold}',\n gap: '{semantic.space.sm}',\n focusShadow: '{semantic.shadow.focus}',\n successBackground: '{semantic.button.successBackground}',\n successBackgroundHover: '{semantic.status.successHover}',\n successSolidColor: '{semantic.button.solidForeground}',\n successSolidColorHover: '{semantic.button.solidForeground}',\n successBackgroundActive: '{semantic.status.successActive}',\n successSolidColorActive: '{semantic.button.solidForeground}',\n dangerBackground: '{semantic.button.dangerBackground}',\n dangerSolidColor: '{semantic.button.solidForeground}',\n dangerBackgroundHover: '{semantic.status.dangerHover}',\n dangerSolidColorHover: '{semantic.button.solidForeground}',\n dangerBackgroundActive: '{semantic.status.dangerActive}',\n dangerSolidColorActive: '{semantic.button.solidForeground}',\n secondaryBackground: '{semantic.button.secondaryBackground}',\n secondaryBorderColor: '{semantic.button.secondaryBorderColor}',\n secondaryColor: '{semantic.button.secondaryColor}',\n secondaryBackgroundHover: '{semantic.color.content2}',\n secondaryBackgroundActive: '{semantic.color.content3}',\n tertiaryColor: '{semantic.button.tertiaryColor}',\n tertiaryBackgroundHover: '{semantic.color.content2}',\n tertiaryBackgroundActive: '{semantic.color.content3}',\n selectedShadow: '{semantic.shadow.subtle}',\n // Kept equal to `fontWeight` (batch 9): a lighter selected weight would\n // read as less emphasized than the resting state now that the base\n // button label is bold.\n selectedFontWeight: '{semantic.fontWeight.bold}',\n secondarySelectedBackground: '{semantic.color.surface}',\n secondarySelectedBorderColor: '{semantic.color.surface}',\n secondarySelectedColor: '{semantic.button.secondaryColor}',\n secondarySelectedBackgroundHover: '{semantic.color.content2}',\n secondarySelectedBorderColorHover: '{semantic.color.content2}',\n secondarySelectedBackgroundActive: '{semantic.color.content3}',\n secondarySelectedBorderColorActive: '{semantic.color.content3}',\n tertiarySelectedBackground: '{semantic.color.surfaceMuted}',\n tertiarySelectedBorderColor: '{semantic.color.surfaceMuted}',\n tertiarySelectedColor: '{semantic.button.tertiaryColor}',\n tertiarySelectedBackgroundHover: '{semantic.color.content3}',\n tertiarySelectedBorderColorHover: '{semantic.color.content3}',\n tertiarySelectedBackgroundActive: '{semantic.color.content4}',\n tertiarySelectedBorderColorActive: '{semantic.color.content4}',\n iconPaddingInline: '{semantic.space.sm}',\n minHeightXs: '{semantic.size.controlXs}',\n // `size=\"xs\"` (28px) reads too round at the 12px default `control`\n // radius, so it borrows `semantic.radius.pill` (8px) the same way\n // `ns-button-group`'s segment radius borrows a dedicated semantic\n // radius rather than a raw value.\n radiusXs: '{semantic.radius.pill}',\n minHeightSm: '{semantic.size.controlSm}',\n minHeightLg: '{semantic.size.controlLg}',\n loadingDuration: '{semantic.motion.buttonLoading}',\n spinnerSize: '{semantic.text.md}',\n transitionDuration: '{semantic.motion.fast}',\n // `variant=\"dark\"` (AVF-20): the same emphasis pair `ns-stat-card`\n // already uses for its `dark` icon badge (`stat-card.darkBackground`/\n // `darkColor` above) — `emphasisBackground` resolves to `neutral.800`\n // (`#12182B`) in light mode and `dark.surfaceRaised` in dark mode, so\n // this needs no new primitive or semantic token. No `darkBackgroundHover`/\n // `darkBackgroundActive` entry here: `button.component.scss` derives\n // those with `color-mix()` off this single token instead — see the\n // comment there for why (no ready `semantic.status.*Hover/Active` pair\n // exists for an emphasis background the way it does for success/danger).\n darkBackground: '{semantic.color.emphasisBackground}',\n darkColor: '{semantic.color.emphasisForeground}'\n },\n avatar: {\n background: '{semantic.color.surfaceEmphasis}',\n color: '{semantic.color.primaryForeground}',\n borderColor: '{semantic.color.surface}',\n radius: '{semantic.radius.round}',\n radiusSquare: '{semantic.radius.control}',\n fontSize: '{semantic.text.sm}',\n fontWeight: '{semantic.fontWeight.semibold}',\n sizeSm: '{semantic.size.controlSm}',\n sizeMd: '{semantic.size.controlMd}',\n sizeLg: '{semantic.size.controlLg}',\n imageTransitionDuration: '{semantic.motion.slow}'\n },\n buttonGroup: {\n controlGap: '{semantic.space.none}',\n background: '{semantic.color.surfaceMuted}',\n padding: '{semantic.space.xs}',\n radius: '{semantic.radius.control}',\n segmentRadius: '{semantic.radius.control}',\n unselectedOpacity: '{semantic.opacity.buttonGroupUnselected}'\n },\n comment: {\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n mutedColor: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n invalidBorderColor: '{semantic.status.danger}',\n actionBackground: '{semantic.color.actionBackground}',\n actionBackgroundHover: '{semantic.color.actionBackgroundHover}',\n actionColor: '{semantic.color.actionForeground}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.xl}',\n gap: '{semantic.space.lg}',\n borderWidth: '{semantic.border.thin}',\n shadow: '{semantic.shadow.subtle}',\n inputBorderColor: '{semantic.color.border}',\n inputRadius: '{semantic.radius.control}',\n inputBackground: '{semantic.color.surface}',\n inputColor: '{semantic.color.text}',\n inputBorderFocusColor: '{semantic.color.focus}',\n inputFocusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}'\n },\n editor: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n toolbarBackground: '{semantic.color.editorToolbarBackground}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n // Wrapper corner radius (batch 8): 10px, matching the prototype's\n // envelope. Toolbar action buttons no longer read this — see\n // `actionRadius` below.\n radius: '{semantic.radius.field}',\n overlayRadius: '{semantic.radius.overlay}',\n overlayShadow: '{semantic.shadow.overlay}',\n padding: '{semantic.space.sm}',\n gap: '{semantic.space.sm}',\n layer: '{semantic.layer.overlay}',\n focusBorderColor: '{semantic.color.focus}',\n focusShadow: '{semantic.shadow.focus}',\n actionBackground: '{semantic.color.surfaceEmphasis}',\n actionFocusShadow: '{semantic.shadow.focus}',\n // Toolbar chrome (batch 8), measured on the prototype's rich-text\n // toolbar.\n toolbarBorderColor: '{semantic.color.editorToolbarBorder}',\n toolbarPaddingBlock: '{semantic.size.editorToolbarPaddingBlock}',\n toolbarPaddingInline: '{semantic.space.sm}',\n toolbarGap: '{semantic.size.editorToolbarGap}',\n // Toolbar action-button sizing/color (batch 8): a dedicated 28px/7px\n // family distinct from the wrapper's `radius`/`background`.\n actionSize: '{semantic.size.editorToolButton}',\n actionRadius: '{semantic.radius.editorAction}',\n actionColor: '{semantic.color.editorActionColor}',\n actionHoverBackground: '{semantic.color.editorActionHoverBackground}',\n // Only the color-picker button needs this: it hosts two glyphs (the\n // color swatch letter plus the chevron) that don't fit the fixed\n // 28px action width.\n actionPaddingInline: '{semantic.space.xs}',\n iconSize: '{semantic.size.editorToolIcon}',\n separatorColor: '{semantic.color.border}',\n separatorWidth: '{semantic.border.thin}',\n separatorHeight: '{semantic.size.editorSeparatorHeight}',\n separatorSpacing: '{semantic.size.editorSeparatorSpacing}',\n toggleIconSize: '{semantic.size.editorToggleIconSize}',\n // Content area + footer chrome (batch 10), proto 2729-2732.\n contentMinHeight: '{semantic.size.editorContentMinHeight}',\n contentPadding: '{semantic.size.editorContentPadding}',\n footerPaddingBlock: '{semantic.space.sm}',\n footerPaddingInline: '{semantic.size.editorFooterPaddingInline}',\n footerBorderColor: '{semantic.color.editorFooterBorder}',\n footerBackground: '{semantic.color.editorFooterBackground}',\n footerFontSize: '{semantic.text.caption}',\n footerFontWeight: '{semantic.fontWeight.medium}',\n footerColor: '{semantic.color.textPlaceholder}'\n },\n checkbox: {\n color: '{semantic.color.text}',\n accent: '{semantic.color.primary}',\n gap: '{semantic.space.sm}',\n borderColor: '{semantic.color.borderStrong}',\n background: '{semantic.color.surface}',\n radius: '{semantic.radius.checkbox}',\n checkBorderWidth: '{semantic.border.thin}',\n checkColor: '{semantic.color.primaryForeground}',\n checkWidth: '{semantic.size.checkboxCheckWidth}',\n checkHeight: '{semantic.size.checkboxCheckHeight}',\n focusShadow: '{semantic.shadow.focus}',\n invalidBorderColor: '{semantic.status.danger}',\n disabledColor: '{semantic.color.textMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}',\n transitionDuration: '{semantic.motion.fast}',\n transitionEasing: '{semantic.motion.easing}'\n },\n datePicker: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n bodyFontFamily: '{semantic.font.body}',\n titleFontFamily: '{semantic.font.display}',\n titleSize: '{semantic.text.lg}',\n titleWeight: '{semantic.fontWeight.semibold}',\n titleLineHeight: '{semantic.lineHeight.compact}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n mutedColor: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n activeBackground: '{semantic.status.success}',\n activeBackgroundHover: '{semantic.status.successHover}',\n activeBackgroundActive: '{semantic.status.successActive}',\n activeColor: '{semantic.status.successActiveForeground}',\n currentBackground: '{semantic.status.successSoft}',\n currentBackgroundHover: '{semantic.status.successSoft}',\n currentBackgroundActive: '{semantic.status.successSoft}',\n currentColor: '{semantic.status.successSoftForeground}',\n currentColorHover: '{semantic.status.successSoftForeground}',\n currentColorActive: '{semantic.status.successSoftForeground}',\n focusColor: '{semantic.color.focus}',\n radius: '{semantic.radius.control}',\n overlayRadius: '{semantic.radius.overlay}',\n overlayShadow: '{semantic.shadow.overlay}',\n padding: '{semantic.space.sm}',\n gap: '{semantic.space.sm}',\n menuPadding: '{semantic.space.md}',\n headerGap: '{semantic.space.md}',\n selectorGap: '{semantic.space.lg}',\n selectorIconGap: '{semantic.space.lg}',\n selectorSize: '{semantic.text.md}',\n selectorWeight: '{semantic.fontWeight.medium}',\n yearRangeRadius: '{semantic.radius.pill}',\n daySize: '{semantic.size.controlMd}',\n weekdayGap: '{semantic.space.md}',\n weekdaySize: '{semantic.text.sm}',\n focusOutlineWidth: '{semantic.border.thin}',\n focusOutlineOffset: '{semantic.space.sm}',\n navigationOutlineOffset: '{semantic.space.xs}',\n menuMinWidth: '{semantic.size.datePickerMenu}',\n minHeight: '{semantic.size.controlLg}',\n borderHoverColor: '{semantic.color.borderStrong}',\n invalidBorderColor: '{semantic.status.danger}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n overlayDuration: '{semantic.motion.enter}',\n overlayEasing: '{semantic.motion.easing}',\n dayBackgroundHover: '{semantic.color.surfaceMuted}'\n },\n inputGroup: {\n borderColor: '{semantic.color.border}',\n // Aligned to `input.radius` (batch 6 follow-up): the addon must not\n // have a corner radius of its own, or the group stops reading as one\n // piece. This value also drives the group's own first/last-child\n // corner rounding, so both stay in sync from a single source.\n radius: '{semantic.radius.field}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n borderWidth: '{semantic.border.thin}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}'\n },\n inputNumber: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n borderColor: '{semantic.color.border}',\n borderFocusColor: '{semantic.color.focus}',\n // Form-field radius/height (batch 6): 10px/42px, matching `ns-input`\n // instead of the 12px/40px shared button-control tokens. Previously\n // the height was a fixed, untokenized `min-h-10` Tailwind utility.\n radius: '{semantic.radius.field}',\n minHeight: '{semantic.size.inputMinHeight}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n borderHoverColor: '{semantic.color.borderStrong}',\n stepperBorderWidth: '{semantic.border.thin}',\n stepperBackgroundHover: '{semantic.color.surfaceMuted}',\n stepperMutedColor: '{semantic.color.textMuted}',\n prefixColor: '{semantic.color.textMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n inputSearch: {\n labelColor: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}',\n // Toolbar search radius/height (batch 6): 11px/38px, matching the\n // prototype's search field instead of the 12px/40px shared\n // button-control tokens. Previously the height was a fixed,\n // untokenized `min-h-10` Tailwind utility.\n radius: '{semantic.radius.tab}',\n minHeight: '{semantic.size.controlSm}',\n // Batch 10: the toolbar search field carries its own warm-gray fill\n // and placeholder tone (proto 1121), distinct from the plain-surface\n // `ns-input`.\n background: '{semantic.color.searchFieldBackground}',\n color: '{semantic.color.text}',\n placeholder: '{semantic.color.textPlaceholder}',\n paddingInline: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n actionColor: '{semantic.color.textMuted}',\n actionBackgroundHover: '{semantic.color.surfaceMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}',\n // Leading magnifier glyph (batch 10), proto 1120.\n fontSize: '{semantic.text.control}',\n iconSize: '{semantic.size.searchIconSize}',\n iconColor: '{semantic.color.textMuted}',\n gap: '{semantic.space.sm}'\n },\n inputCode: {\n labelColor: '{semantic.color.text}',\n minHeight: '{semantic.size.controlMd}',\n paddingInline: '{semantic.space.md}',\n borderColor: '{semantic.color.border}',\n borderHoverColor: '{semantic.color.borderStrong}',\n borderFocusColor: '{semantic.color.focus}',\n radius: '{semantic.radius.control}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n focusShadow: '{semantic.shadow.focus}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n disabledColor: '{semantic.color.textMuted}',\n fontFamily: '{semantic.font.code}',\n letterSpacing: '{semantic.space.sm}',\n textIndent: '{semantic.space.sm}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n password: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n borderColor: '{semantic.color.border}',\n borderFocusColor: '{semantic.color.focus}',\n // Aligned to `input.radius` (batch 6 follow-up): a password field must\n // not carry its own corner radius, or it stops reading as the same\n // kind of control as `ns-input`.\n radius: '{semantic.radius.field}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n // Aligned to `input.minHeight` (batch 6 follow-up): same source as the\n // 42px `ns-input` default, instead of the 40px Tailwind `min-h-10`\n // utility this control previously hardcoded.\n minHeight: '{semantic.size.inputMinHeight}',\n focusShadow: '{semantic.shadow.focus}',\n borderHoverColor: '{semantic.color.borderStrong}',\n // Control's `padding-inline-end`, reserving room for the always-on\n // visibility-toggle button (`.ns-password__append`), now positioned\n // inside the field instead of appended as its own bordered box.\n appendGutter: '{semantic.size.iconGutter}',\n // Rendered size of the `.ns-password__toggle` (eye/eye-off) `ns-icon`\n // glyph — 24px by default inside a 28px toggle button, leaving next\n // to no padding.\n toggleIconSize: '{semantic.size.fieldIconSize}',\n appendBackgroundHover: '{semantic.color.surfaceMuted}',\n appendDisabledColor: '{semantic.color.textMuted}',\n forgotLinkColor: '{semantic.color.actionBackground}',\n forgotLinkHoverOpacity: '{semantic.opacity.backdrop}',\n forgotLinkTransitionDuration: '{semantic.motion.fast}'\n },\n switch: {\n background: '{semantic.color.switchOff}',\n activeBackground: '{semantic.color.switchOn}',\n thumbColor: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n radius: '{semantic.radius.round}',\n focusShadow: '{semantic.shadow.focus}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}',\n trackWidth: '{semantic.size.switchTrackWidth}',\n trackHeight: '{semantic.size.switchTrackHeight}',\n thumbSize: '{semantic.size.switchThumbSize}',\n thumbInset: '{semantic.size.switchThumbInset}',\n thumbTranslate: '{semantic.size.switchThumbTranslate}',\n trackWidthSm: '{semantic.size.switchTrackWidthSm}',\n trackHeightSm: '{semantic.size.switchTrackHeightSm}',\n thumbSizeSm: '{semantic.size.switchThumbSizeSm}',\n thumbInsetSm: '{semantic.size.switchThumbInsetSm}',\n thumbTranslateSm: '{semantic.size.switchThumbTranslateSm}',\n thumbBorderOffset: '{semantic.border.thin}',\n rowGap: '{semantic.space.lg}'\n },\n textarea: {\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.textSecondary}',\n placeholder: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n borderFocusColor: '{semantic.color.focus}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n radius: '{semantic.radius.control}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n borderHoverColor: '{semantic.color.borderStrong}',\n lineHeight: '{semantic.lineHeight.normal}',\n invalidBorderColor: '{semantic.status.danger}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n radio: {\n labelColor: '{semantic.color.text}',\n borderColor: '{semantic.color.borderStrong}',\n background: '{semantic.color.surface}',\n inset: '{semantic.space.sm}',\n checkedBackground: '{semantic.color.primary}',\n focusShadow: '{semantic.shadow.focus}',\n disabledColor: '{semantic.color.textMuted}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n slider: {\n labelColor: '{semantic.color.text}',\n trackHeight: '{semantic.space.xs}',\n trackRadius: '{semantic.radius.control}',\n trackBackground: '{semantic.color.surfaceEmphasis}',\n thumbSize: '{semantic.space.lg}',\n thumbBorderWidth: '{semantic.border.thin}',\n thumbBorderColor: '{semantic.color.surface}',\n thumbRadius: '{semantic.radius.round}',\n thumbBackground: '{semantic.color.primary}',\n thumbShadow: '{semantic.shadow.subtle}',\n focusShadow: '{semantic.shadow.focus}',\n descriptionColor: '{semantic.color.textMuted}'\n },\n imageUpload: {\n borderHoverColor: '{semantic.color.borderStrong}',\n dangerColor: '{semantic.status.danger}',\n gap: '{semantic.space.sm}',\n padding: '{semantic.space.lg}',\n controlBorderColor: '{semantic.color.border}',\n controlRadius: '{semantic.radius.control}',\n controlBackground: '{semantic.color.surface}',\n controlShadow: '{semantic.shadow.subtle}',\n thumbnailRadius: '{semantic.radius.surface}',\n thumbnailShadow: '{semantic.shadow.overlay}',\n thumbnailBorderWidth: '{semantic.border.thin}',\n overlayColor: '{semantic.color.surface}',\n transitionDuration: '{semantic.motion.fast}',\n // --- layout=\"cover\" (AVF-8) ---\n columnGap: '{semantic.space.xxl}',\n // AVF-19 (was `semantic.space.lg`/16px): dropped to `md` (12px). Still\n // the gap `grid-auto-rows` in the component's stylesheet subtracts\n // between reserved rows (AVF-29: each row's height is\n // `(emptyMinHeight - (rows - 1) * stackGap) / rows`), not a value\n // chosen to hit a fixed pixel target the way it used to be — the\n // 280px arithmetic this comment previously cited (the old\n // `thumbnailSize` token, since retired) no longer holds now that the\n // filled state's total height is pinned to `emptyMinHeight` directly\n // instead of being computed from a per-row thumbnail size and this\n // gap. 10px (the prototype's gap) still doesn't exist in\n // `primitive.space` (see the scale above), so `md` remains the\n // closest available step.\n stackGap: '{semantic.space.md}',\n focusShadow: '{semantic.shadow.focus}',\n coverBackground: '{semantic.color.surfaceMuted}',\n emptyMinHeight: '{semantic.size.emptyMinHeight}',\n emptyGap: '{semantic.space.lg}',\n emptyIconCircleBackground: '{semantic.color.surfaceMuted}',\n emptyIconCircleSize: '{semantic.size.emptyIconCircleSize}',\n emptyIconSize: '{semantic.size.emptyIconSize}',\n emptyTitleColor: '{semantic.color.text}',\n emptyTitleFontSize: '{semantic.text.headingSm}',\n emptyTitleFontWeight: '{semantic.fontWeight.bold}',\n emptySubtitleColor: '{semantic.color.textMuted}',\n emptySubtitleFontSize: '{semantic.text.label}',\n addIconSize: '{semantic.size.addIconSize}',\n addTitleColor: '{semantic.color.text}',\n addTitleFontSize: '{semantic.text.label}',\n addSubtitleColor: '{semantic.color.textMuted}',\n addSubtitleFontSize: '{semantic.text.xs}',\n chipBackground: '{semantic.color.chipBackground}',\n chipBackgroundHover: '{semantic.color.chipBackgroundHover}',\n chipColor: '{semantic.color.emphasisForeground}',\n chipRadius: '{semantic.radius.pill}',\n chipPaddingBlock: '{semantic.space.sm}',\n chipPaddingInline: '{semantic.space.lg}',\n chipFontSize: '{semantic.text.label}',\n chipFontWeight: '{semantic.fontWeight.medium}',\n chipOffset: '{semantic.space.md}',\n // Limit-exceeded inline notice (AVF-16). Reuses the pre-existing\n // `status.warningText` pair (defined in both color schemes but,\n // before this, consumed by no component) rather than\n // `warningSoftForeground` — that one is tuned for an icon on a soft\n // background (~3:1), not plain text on `surface`, where it falls\n // short of the 4.5:1 AA text minimum.\n warningTextColor: '{semantic.status.warningText}'\n },\n scheduleEvent: {\n background: '{semantic.color.surfaceEmphasis}',\n color: '{semantic.color.primary}',\n borderColor: '{semantic.color.primary}',\n radius: '{semantic.radius.control}',\n padding: '{semantic.space.xs}',\n layer: '{semantic.layer.overlay}'\n },\n toast: {\n background: '{semantic.color.toastBackground}',\n color: '{semantic.color.toastForeground}',\n radius: '{semantic.radius.surface}',\n paddingBlock: '{semantic.space.md}',\n paddingInline: '{semantic.space.lg}',\n gapBlock: '{semantic.space.none}',\n duration: '{semantic.motion.enter}',\n exitDuration: '{semantic.motion.exit}',\n easing: '{semantic.motion.easing}',\n gap: '{semantic.space.md}',\n offset: '{semantic.space.xl}',\n mobileOffset: '{semantic.space.lg}',\n entryOffset: '{semantic.space.lg}',\n maxWidth: '{semantic.size.toastMaxWidth}',\n minHeight: '{semantic.size.toastMinHeight}',\n focusShadow: '{semantic.shadow.focus}',\n shadow: '{semantic.shadow.toast}',\n viewportInset: '{semantic.space.xxl}',\n actionBackground: '{semantic.color.surfaceMuted}',\n actionBackgroundHover: '{semantic.color.surfaceEmphasis}',\n actionPaddingBlock: '{semantic.space.xs}',\n actionPaddingInline: '{semantic.space.sm}',\n closeSize: '{semantic.size.controlSm}',\n closePadding: '{semantic.space.none}'\n },\n accordion: {\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.md}',\n gap: '{semantic.space.sm}',\n focusShadow: '{semantic.shadow.focus}',\n triggerFontSize: '{semantic.text.sm}',\n triggerFontWeight: '{semantic.fontWeight.semibold}',\n triggerDuration: '{semantic.motion.normal}',\n triggerEasing: '{semantic.motion.easing}',\n triggerBackgroundHover: '{semantic.color.surfaceMuted}'\n },\n alert: {\n color: '{semantic.color.text}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.md}',\n gap: '{semantic.space.sm}',\n titleGap: '{semantic.space.xs}',\n focusShadow: '{semantic.shadow.focus}',\n dismissBackgroundHover: '{semantic.color.content3}',\n transitionDuration: '{semantic.motion.fast}',\n infoBackground: '{semantic.status.primarySoft}',\n infoIconColor: '{semantic.status.primarySoftForeground}',\n successBackground: '{semantic.status.successSoft}',\n successIconColor: '{semantic.status.successSoftForeground}',\n warningBackground: '{semantic.status.warningSoft}',\n warningIconColor: '{semantic.status.warningSoftForeground}',\n dangerBackground: '{semantic.status.dangerSoft}',\n dangerIconColor: '{semantic.status.dangerSoftForeground}'\n },\n badge: {\n radius: '{semantic.radius.round}',\n fontSize: '{semantic.text.xs}',\n fontWeight: '{semantic.fontWeight.semibold}',\n lineHeight: '{semantic.lineHeight.compact}',\n borderWidth: '{semantic.border.thin}',\n background: '{semantic.status.danger}',\n color: '{semantic.status.dangerBadgeForeground}',\n borderColor: '{semantic.color.surface}',\n size: '{semantic.space.xl}',\n overflowSize: '{semantic.size.controlMd}',\n dotSize: '{semantic.space.sm}'\n },\n breadcrumbs: {\n color: '{semantic.color.textMuted}',\n currentColor: '{semantic.color.text}',\n fontSize: '{semantic.text.sm}',\n gap: '{semantic.space.sm}',\n separator: '{semantic.content.breadcrumbSeparator}',\n separatorColor: '{semantic.color.textMuted}',\n linkColor: '{semantic.color.primary}',\n linkDecoration: '{semantic.decoration.link}',\n focusOutline: '{semantic.outline.focus}',\n listRadius: '{semantic.radius.surface}',\n linkRadius: '{semantic.radius.control}',\n underlineOffset: '{semantic.offset.link}',\n transitionDuration: '{semantic.motion.fast}',\n hoverOpacity: '{semantic.opacity.backdrop}'\n },\n card: {\n background: '{semantic.color.surface}',\n softBackground: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n // Batch 10: the default card relies on `shadow` for separation, not a\n // visible border — matching the prototype's borderless card shell.\n // Callers that still want a hairline (e.g. an `outline` variant) use\n // `outlineBorderWidth` below.\n borderWidth: '{semantic.border.none}',\n outlineBorderWidth: '{semantic.border.thin}',\n dividerColor: '{semantic.color.border}',\n dividerWidth: '{semantic.border.thin}',\n radius: '{semantic.radius.surface}',\n padding: '{semantic.space.xl}',\n shadow: '{semantic.shadow.subtle}',\n transitionDuration: '{semantic.motion.fast}'\n },\n chip: {\n background: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.round}',\n gap: '{semantic.space.xs}',\n minHeight: '{semantic.size.controlSm}',\n paddingInline: '{semantic.space.sm}',\n fontSize: '{semantic.text.sm}',\n dismissSize: '{semantic.text.md}',\n focusShadow: '{semantic.shadow.focus}',\n solidBackground: '{semantic.color.primary}',\n solidColor: '{semantic.color.primaryForeground}',\n outlineColor: '{semantic.color.primary}',\n // `outline` + `color=\"neutral\"` text (batch 6): the unqualified\n // `.ns-chip--outline` rule otherwise always shows `outlineColor`\n // (primary blue) regardless of `color`; a dedicated\n // `.ns-chip--outline.ns-chip--neutral` rule keeps neutral outline\n // chips on the neutral text color instead.\n neutralColor: '{semantic.status.neutralText}',\n primaryBackground: '{semantic.color.primary}',\n primaryColor: '{semantic.color.primaryForeground}',\n successBackground: '{semantic.status.success}',\n successColor: '{semantic.status.successForeground}',\n warningBackground: '{semantic.status.warning}',\n warningColor: '{semantic.status.warningForeground}',\n dangerBackground: '{semantic.status.danger}',\n dangerColor: '{semantic.status.dangerForeground}',\n dismissBackgroundHover: '{semantic.color.content3}',\n softPrimaryBackground: '{semantic.status.primarySoft}',\n softPrimaryColor: '{semantic.status.primarySoftForeground}',\n softSuccessBackground: '{semantic.status.successSoft}',\n softSuccessColor: '{semantic.status.successSoftForeground}',\n softWarningBackground: '{semantic.status.warningSoft}',\n softWarningColor: '{semantic.status.warningSoftForeground}',\n softDangerBackground: '{semantic.status.dangerSoft}',\n softDangerColor: '{semantic.status.dangerSoftForeground}',\n softInfoBackground: '{semantic.status.infoSoft}',\n softInfoColor: '{semantic.status.infoSoftForeground}',\n softSelectedBackground: '{semantic.status.selectedSoft}',\n softSelectedColor: '{semantic.status.selectedSoftForeground}',\n // `soft` + `color=\"neutral\"` (batch 6): the prototype's neutral status\n // pill (`#F1F2F4` / `#4A4F58`), distinct from the base soft treatment\n // (`surfaceMuted`/`text`) chips otherwise fall back to.\n softNeutralBackground: '{semantic.status.neutralBackground}',\n softNeutralColor: '{semantic.status.neutralText}',\n // New `tint` variant (batch 6): filled with the success selection\n // tint, bordered and text-colored with the matching foreground. Only\n // `success` has exact prototype numbers; other colors fall back to\n // their existing solid hue in the component SCSS.\n tintSuccessBackground: '{semantic.status.successTint}',\n tintSuccessColor: '{semantic.status.successTintForeground}',\n pillRadius: '{semantic.radius.pill}',\n pillFontSize: '{semantic.text.xs}',\n pillFontWeight: '{semantic.fontWeight.medium}',\n pillPaddingBlock: '{semantic.size.chipPillPaddingBlock}',\n pillPaddingInline: '{semantic.size.chipPillPaddingInline}',\n // `size=\"choice\"` (batch 9): a rectangular selection chip measured on\n // the prototype's sales-channel picker (e.g. \"Tienda online\",\n // \"WhatsApp Business\"). The `md` default stays the pill/round shape\n // above — this is an additional size, not a replacement. Colors are\n // unchanged; only shape/typography tokens are added.\n choiceRadius: '{semantic.radius.field}',\n choiceMinHeight: '{semantic.size.chipChoiceMinHeight}',\n choicePaddingInline: '{semantic.size.chipChoicePaddingInline}',\n choiceFontSize: '{semantic.text.label}',\n choiceFontWeight: '{semantic.fontWeight.bold}',\n transitionDuration: '{semantic.motion.fast}'\n },\n drawer: {\n backdrop: '{semantic.color.background}',\n backdropOpacity: '{semantic.opacity.backdrop}',\n width: '{semantic.size.drawer}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.control}',\n shadow: '{semantic.shadow.overlay}',\n padding: '{semantic.space.lg}',\n focusShadow: '{semantic.shadow.focus}',\n borderWidth: '{semantic.border.thin}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}',\n closeRadius: '{semantic.radius.control}',\n closeBackgroundHover: '{semantic.color.surfaceMuted}'\n },\n link: {\n color: '{semantic.color.primary}',\n disabledColor: '{semantic.color.textMuted}',\n successColor: '{semantic.status.success}',\n warningColor: '{semantic.status.warning}',\n dangerColor: '{semantic.status.danger}',\n fontWeight: '{semantic.fontWeight.medium}',\n decoration: '{semantic.decoration.link}',\n underlineOffset: '{semantic.offset.link}',\n focusOutline: '{semantic.outline.focus}',\n focusOffset: '{semantic.space.xs}',\n radius: '{semantic.radius.control}',\n transitionDuration: '{semantic.motion.fast}',\n hoverOpacity: '{semantic.opacity.backdrop}'\n },\n meter: {\n height: '{semantic.size.meterHeight}',\n radius: '{semantic.radius.round}',\n trackBackground: '{semantic.color.surfaceEmphasis}',\n valueBackground: '{semantic.color.primary}',\n successBackground: '{semantic.status.success}',\n warningBackground: '{semantic.status.warning}',\n dangerBackground: '{semantic.status.danger}',\n valueTransitionDuration: '{semantic.motion.normal}',\n backgroundTransitionDuration: '{semantic.motion.fast}'\n },\n popover: {\n minWidth: '{semantic.size.popover}',\n padding: '{semantic.space.md}',\n borderWidth: '{semantic.border.thin}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.overlay}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n shadow: '{semantic.shadow.overlay}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}'\n },\n progressBar: {\n height: '{semantic.size.progressBarHeight}',\n radius: '{semantic.radius.round}',\n trackBackground: '{semantic.color.surfaceEmphasis}',\n valueBackground: '{semantic.color.primary}',\n successBackground: '{semantic.status.success}',\n warningBackground: '{semantic.status.warning}',\n dangerBackground: '{semantic.status.danger}',\n indeterminateWidth: '{semantic.size.progressBarIndeterminateWidth}',\n indeterminateDuration: '{semantic.motion.indeterminate}',\n valueTransitionDuration: '{semantic.motion.normal}',\n backgroundTransitionDuration: '{semantic.motion.fast}'\n },\n dropdown: {\n labelGap: '{semantic.space.sm}',\n labelColor: '{semantic.color.text}',\n labelSize: '{semantic.text.label}',\n labelWeight: '{semantic.fontWeight.bold}',\n triggerMinHeight: '{semantic.size.controlMd}',\n triggerPaddingBlock: '{semantic.space.sm}',\n triggerPaddingInline: '{semantic.space.md}',\n triggerGap: '{semantic.space.sm}',\n triggerBorderWidth: '{semantic.border.thin}',\n triggerBorderColor: '{semantic.color.border}',\n triggerBorderHoverColor: '{semantic.color.borderStrong}',\n triggerBorderFocusColor: '{semantic.color.focus}',\n triggerRadius: '{semantic.radius.control}',\n triggerBackground: '{semantic.color.surface}',\n // Selected-value text (batch 9), the dropdown's equivalent of an\n // input's typed text — distinct from `menuColor`/`searchColor`, which\n // stay on `semantic.color.text`.\n triggerColor: '{semantic.color.textSecondary}',\n triggerPlaceholderColor: '{semantic.color.textMuted}',\n triggerFocusShadow: '{semantic.shadow.focus}',\n triggerDisabledBackground: '{semantic.color.surfaceMuted}',\n triggerDisabledColor: '{semantic.color.textMuted}',\n triggerInvalidBorderColor: '{semantic.status.danger}',\n triggerIconColor: '{semantic.color.textMuted}',\n triggerDuration: '{semantic.motion.normal}',\n triggerEasing: '{semantic.motion.easing}',\n menuMaxHeight: '{semantic.size.dropdownMenu}',\n menuPadding: '{semantic.space.md}',\n menuGap: '{semantic.space.sm}',\n menuBorderWidth: '{semantic.border.thin}',\n menuBorderColor: '{semantic.color.border}',\n menuRadius: '{semantic.radius.overlay}',\n menuBackground: '{semantic.color.surface}',\n menuColor: '{semantic.color.text}',\n menuShadow: '{semantic.shadow.overlay}',\n menuEnterDuration: '{semantic.motion.enter}',\n menuEnterEasing: '{semantic.motion.easing}',\n searchMinHeight: '{semantic.size.controlMd}',\n searchPaddingBlock: '{semantic.space.sm}',\n searchPaddingInline: '{semantic.space.md}',\n searchBorderWidth: '{semantic.border.thin}',\n searchBorderColor: '{semantic.color.border}',\n searchBorderFocusColor: '{semantic.color.focus}',\n searchRadius: '{semantic.radius.control}',\n searchBackground: '{semantic.color.surface}',\n searchColor: '{semantic.color.text}',\n searchPlaceholderColor: '{semantic.color.textMuted}',\n searchIconColor: '{semantic.color.textMuted}',\n searchFocusShadow: '{semantic.shadow.focus}',\n optionPaddingBlock: '{semantic.space.sm}',\n optionPaddingInline: '{semantic.space.md}',\n optionRadius: '{semantic.radius.control}',\n optionBackgroundHover: '{semantic.color.surfaceMuted}',\n optionActiveBackground: '{semantic.color.surfaceMuted}',\n optionSelectedBackground: '{semantic.color.surfaceMuted}',\n optionSelectedColor: '{semantic.color.primary}',\n optionSelectedWeight: '{semantic.fontWeight.semibold}',\n dotSize: '{semantic.size.timelineDot}',\n dotNeutral: '{semantic.status.neutralText}',\n dotPrimary: '{semantic.color.primary}',\n dotSuccess: '{semantic.status.success}',\n dotWarning: '{semantic.status.warning}',\n dotDanger: '{semantic.status.danger}',\n emptyPadding: '{semantic.space.md}',\n emptyColor: '{semantic.color.textMuted}',\n emptySize: '{semantic.text.sm}',\n descriptionColor: '{semantic.color.textMuted}',\n errorColor: '{semantic.status.danger}'\n },\n skeleton: {\n background: '{semantic.color.surfaceMuted}',\n highlight: '{semantic.color.surface}',\n radius: '{semantic.radius.control}',\n duration: '{semantic.motion.shimmer}'\n },\n tooltip: {\n maxWidth: '{semantic.size.tooltip}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n radius: '{semantic.radius.control}',\n background: '{semantic.color.text}',\n color: '{semantic.color.background}',\n shadow: '{semantic.shadow.overlay}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}'\n },\n modal: {\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n radius: '{semantic.radius.overlay}',\n shadow: '{semantic.shadow.modal}',\n padding: '{semantic.space.modal}',\n margin: '{semantic.space.lg}',\n viewportInset: '{semantic.size.modalViewportInset}',\n // Header/body/footer block padding recipe observed consistently\n // across every prototype modal (batch 6): asymmetric header (26px\n // start / 4px end) and body (22px start / 26px end), and an 18px\n // footer with its own top border.\n headerPaddingBlockStart: '{semantic.size.modalPaddingBlockLg}',\n headerPaddingBlockEnd: '{semantic.space.xs}',\n bodyPaddingBlockStart: '{semantic.size.modalPaddingBlockMd}',\n bodyPaddingBlockEnd: '{semantic.size.modalPaddingBlockLg}',\n footerPaddingBlock: '{semantic.size.modalPaddingBlockSm}',\n footerBorderColor: '{semantic.color.modalFooterBorder}',\n descriptionColor: '{semantic.color.textMutedStrong}',\n descriptionFontSize: '{semantic.text.modalDescription}',\n backdrop: '{semantic.color.background}',\n width: '{semantic.size.modalMd}',\n widthSm: '{semantic.size.modalSm}',\n widthLg: '{semantic.size.modalLg}',\n widthXl: '{semantic.size.modalXl}',\n backdropOpacity: '{semantic.opacity.modal}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}',\n footerGap: '{semantic.space.sm}',\n closeRadius: '{semantic.radius.control}',\n closeBackgroundHover: '{semantic.color.surfaceMuted}',\n closeFocusShadow: '{semantic.shadow.focus}'\n },\n pagination: {\n gap: '{semantic.space.sm}',\n minWidth: '{semantic.size.buttonMin}',\n minHeight: '{semantic.size.controlMd}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.lg}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.control}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n backgroundHover: '{semantic.color.surfaceMuted}',\n colorHover: '{semantic.color.primary}',\n currentBorderColor: '{semantic.color.primary}',\n currentBackground: '{semantic.color.actionBackground}',\n currentColor: '{semantic.color.actionForeground}',\n currentWeight: '{semantic.fontWeight.semibold}',\n focusShadow: '{semantic.shadow.focus}'\n },\n schedule: {\n surface: '{semantic.color.surface}',\n surfaceMuted: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.textMuted}',\n borderColor: '{semantic.color.border}',\n borderRadius: '{semantic.radius.surface}',\n shadow: '{semantic.shadow.subtle}',\n padding: '{semantic.space.lg}',\n dividerColor: '{semantic.color.border}',\n primary: '{semantic.color.primary}',\n selectedBackground: '{semantic.color.surfaceMuted}',\n gap: '{semantic.space.sm}',\n dayColumns: '{semantic.layout.scheduleDay}',\n weekColumns: '{semantic.layout.scheduleWeek}',\n workweekColumns: '{semantic.layout.scheduleWorkweek}',\n slotHeight: '{semantic.layout.scheduleSlotHeight}'\n },\n tabs: {\n gap: '{semantic.space.sm}',\n borderColor: '{semantic.color.border}',\n listBackground: '{semantic.color.surfaceMuted}',\n listRadius: '{semantic.radius.tab}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.lg}',\n tabMinHeight: '{semantic.size.controlMd}',\n tabRadius: '{semantic.radius.tab}',\n color: '{semantic.color.text}',\n hoverColor: '{semantic.color.primary}',\n selectedBackground: '{semantic.color.actionBackground}',\n selectedForeground: '{semantic.color.actionForeground}',\n selectedShadow: '{semantic.shadow.subtle}',\n focusShadow: '{semantic.shadow.focus}',\n pillBorderWidth: '{semantic.border.thin}',\n pillBorderColor: '{semantic.color.border}',\n // Unselected pill-tab text (batch 6), distinct from the shared\n // `color` token underline tabs keep using.\n pillColor: '{semantic.color.textInactive}',\n pillPaddingBlock: '{semantic.size.tabsPillPaddingBlock}',\n pillPaddingInline: '{semantic.size.tabsPillPaddingInline}',\n pillSelectedBackground: '{semantic.status.successTint}',\n pillSelectedColor: '{semantic.status.successTintForeground}',\n pillSelectedBorderColor: '{semantic.status.successTintForeground}'\n },\n tagGroup: {\n gap: '{semantic.space.xs}',\n minHeight: '{semantic.size.controlSm}',\n paddingInline: '{semantic.space.sm}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.round}',\n background: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n fontSize: '{semantic.text.sm}',\n backgroundHover: '{semantic.color.surfaceMuted}',\n selectedBorderColor: '{semantic.color.primary}',\n selectedBackground: '{semantic.color.primary}',\n selectedColor: '{semantic.color.primaryForeground}',\n focusShadow: '{semantic.shadow.focus}'\n },\n contentEditable: {\n background: '{semantic.color.surface}',\n disabledBackground: '{semantic.color.surfaceMuted}',\n color: '{semantic.color.text}',\n paddingBlock: '{semantic.space.sm}',\n paddingInline: '{semantic.space.md}',\n focusBorderWidth: '{semantic.border.thin}',\n focusBorderColor: '{semantic.color.focus}',\n focusShadow: '{semantic.shadow.focus}'\n },\n optionCard: {\n gap: '{semantic.space.sm}',\n bodyGap: '{semantic.space.xs}',\n padding: '{semantic.space.lg}',\n radius: '{semantic.radius.control}',\n borderWidth: '{semantic.border.medium}',\n borderColor: '{semantic.color.border}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n fontSize: '{semantic.text.sm}',\n fontWeight: '{semantic.fontWeight.medium}',\n descriptionColor: '{semantic.color.textMuted}',\n descriptionFontSize: '{semantic.text.xs}',\n indicatorSize: '{semantic.space.md}',\n indicatorInset: '{semantic.space.xs}',\n indicatorBorderColor: '{semantic.color.borderStrong}',\n indicatorBackground: '{semantic.color.surface}',\n selectedBorderColor: '{semantic.status.success}',\n // The prototype's selected \"Tipo de descuento\" card background\n // (`#F5FBF8`, batch 6) is a paler green than the general chip/badge\n // soft surface, so it uses the dedicated card tint instead of\n // `successSoft`.\n selectedBackground: '{semantic.status.successCardTint}',\n selectedColor: '{semantic.status.successSoftForeground}',\n selectedIndicatorBorderColor: '{semantic.status.success}',\n selectedIndicatorBackground: '{semantic.status.success}',\n focusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}'\n },\n loadMore: {\n gap: '{semantic.space.md}',\n paddingBlock: '{semantic.space.lg}',\n color: '{semantic.color.textMuted}',\n fontSize: '{semantic.text.sm}'\n },\n avatarGroup: {\n size: '{semantic.size.controlMd}',\n radius: '{semantic.radius.round}',\n counterBackground: '{semantic.color.surfaceMuted}',\n counterColor: '{semantic.color.text}',\n counterBorderColor: '{semantic.color.surface}',\n counterBorderWidth: '{semantic.border.thin}',\n counterFontSize: '{semantic.text.xs}',\n counterFontWeight: '{semantic.fontWeight.semibold}'\n },\n emptyState: {\n // Batch 10: `lg`/`md`/`sm` sizes with an icon circle, proto 1171-1177\n // (lg), 1030-1036 (md), 1593-1599 (sm).\n gap: '{semantic.size.emptyStateGap}',\n gapSm: '{semantic.space.md}',\n textGap: '{semantic.space.xs}',\n paddingBlock: '{semantic.size.emptyStatePaddingBlockMd}',\n paddingBlockLg: '{semantic.size.emptyStatePaddingBlockLg}',\n paddingBlockSm: '{semantic.size.emptyStatePaddingBlockSm}',\n paddingInline: '{semantic.space.xl}',\n paddingInlineSm: '{semantic.space.md}',\n iconSize: '{semantic.size.emptyStateIconMd}',\n iconSizeLg: '{semantic.size.emptyStateIconLg}',\n iconSizeSm: '{semantic.size.emptyStateIconSm}',\n iconBackground: '{semantic.color.emptyStateIconBackground}',\n iconColor: '{semantic.color.emptyStateIconColor}',\n glyphSizeLg: '{semantic.size.emptyStateGlyphLg}',\n glyphSizeMd: '{semantic.size.emptyStateGlyphMd}',\n glyphSizeSm: '{semantic.size.emptyStateGlyphSm}',\n maxWidthLg: '{semantic.size.emptyStateMaxWidthLg}',\n maxWidthMd: '{semantic.size.emptyStateMaxWidthMd}',\n maxWidthSm: '{semantic.size.emptyStateMaxWidthSm}',\n titleColor: '{semantic.color.text}',\n titleFontSize: '{semantic.text.headingSm}',\n titleFontSizeLg: '{semantic.text.headingMd}',\n titleFontSizeSm: '{semantic.text.headingXs}',\n titleFontWeight: '{semantic.fontWeight.bold}',\n descriptionColor: '{semantic.color.textMuted}',\n descriptionFontSize: '{semantic.text.label}',\n descriptionFontSizeLg: '{semantic.text.control}',\n descriptionFontSizeSm: '{semantic.text.xs}',\n descriptionFontWeight: '{semantic.fontWeight.regular}',\n actionsGap: '{semantic.space.sm}'\n },\n menu: {\n minWidth: '{semantic.size.popover}',\n padding: '{semantic.space.sm}',\n gap: '{semantic.space.xs}',\n borderWidth: '{semantic.border.thin}',\n borderColor: '{semantic.color.border}',\n radius: '{semantic.radius.overlay}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n shadow: '{semantic.shadow.subtle}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}',\n headerGap: '{semantic.space.sm}',\n headerPaddingBlock: '{semantic.space.sm}',\n headerPaddingInline: '{semantic.space.md}',\n headerBorderColor: '{semantic.color.border}',\n sectionLabelColor: '{semantic.color.textMuted}',\n sectionLabelFontSize: '{semantic.text.xs}',\n sectionLabelFontWeight: '{semantic.fontWeight.semibold}',\n sectionLabelPaddingBlock: '{semantic.space.xs}',\n sectionLabelPaddingInline: '{semantic.space.md}',\n dividerColor: '{semantic.color.border}',\n itemGap: '{semantic.space.sm}',\n itemPaddingBlock: '{semantic.space.sm}',\n itemPaddingInline: '{semantic.space.md}',\n itemRadius: '{semantic.radius.control}',\n itemFontSize: '{semantic.text.sm}',\n itemColor: '{semantic.color.text}',\n itemColorPrimary: '{semantic.color.primary}',\n itemColorSuccess: '{semantic.status.success}',\n itemColorWarning: '{semantic.status.warning}',\n itemColorDanger: '{semantic.status.danger}',\n itemDisabledColor: '{semantic.color.textMuted}',\n itemBackgroundHover: '{semantic.status.successTint}',\n // Text turns the same success tint green on hover, regardless of the\n // item's own `color` (batch 6) — except `color=\"danger\"`, which keeps\n // its own text color and only changes the hover background.\n itemColorHover: '{semantic.status.successTintForeground}',\n itemBackgroundHoverDanger: '{semantic.status.dangerSoftHover}',\n itemFocusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}'\n },\n timeline: {\n gap: '{semantic.space.md}',\n gapSm: '{semantic.space.sm}',\n connectorColor: '{semantic.color.border}',\n connectorWidth: '{semantic.border.medium}',\n dotSize: '{semantic.size.timelineDot}',\n dotSizeSm: '{semantic.size.timelineDotSm}',\n dotNeutral: '{semantic.status.neutralText}',\n dotPrimary: '{semantic.color.primary}',\n dotSuccess: '{semantic.status.success}',\n dotInfo: '{semantic.status.info}',\n dotWarning: '{semantic.status.warning}',\n dotDanger: '{semantic.status.danger}',\n dotAccent: '{semantic.status.accent}',\n markerGap: '{semantic.space.sm}',\n contentGap: '{semantic.space.xs}',\n titleColor: '{semantic.color.text}',\n titleFontSize: '{semantic.text.sm}',\n titleFontSizeSm: '{semantic.text.xs}',\n titleFontWeight: '{semantic.fontWeight.medium}',\n metaColor: '{semantic.color.textMuted}',\n metaFontSize: '{semantic.text.xs}'\n },\n sideNav: {\n gap: '{semantic.space.xs}',\n background: '{semantic.color.nav}',\n color: '{semantic.navRail.text}',\n successBackground: '{semantic.color.surface}',\n successColor: '{semantic.color.text}',\n itemGap: '{semantic.space.sm}',\n itemPaddingBlock: '{semantic.size.sideNavItemPaddingBlock}',\n itemPaddingInline: '{semantic.size.sideNavItemPaddingInline}',\n itemRadius: '{semantic.radius.tab}',\n // `color=\"success\"` item padding/radius (batch 6): the config sub-nav\n // uses a larger rhythm and a 12px radius, distinct from the branded\n // `nav` rail's 9px/11px/11px.\n itemPaddingBlockSuccess: '{semantic.size.sideNavItemPaddingBlockSuccess}',\n itemPaddingInlineSuccess:\n '{semantic.size.sideNavItemPaddingInlineSuccess}',\n itemRadiusSuccess: '{semantic.radius.control}',\n itemFontSize: '{semantic.text.navItem}',\n itemFontWeight: '{semantic.fontWeight.bold}',\n itemColor: '{semantic.navRail.text}',\n itemColorActive: '{semantic.navRail.activeText}',\n itemBackgroundActive: '{semantic.color.navActive}',\n itemSuccessColor: '{semantic.color.text}',\n itemSuccessColorActive: '{semantic.status.successTintForeground}',\n itemSuccessBackgroundActive: '{semantic.status.successTint}',\n itemDescriptionColor: '{semantic.navRail.textMuted}',\n itemDescriptionSuccessColor: '{semantic.color.textMuted}',\n itemDescriptionFontSize: '{semantic.text.navItemDescription}',\n itemFocusShadow: '{semantic.shadow.focus}',\n transitionDuration: '{semantic.motion.fast}',\n badgeGap: '{semantic.space.sm}',\n sectionLabelColor: '{semantic.navRail.sectionLabel}',\n sectionLabelSuccessColor: '{semantic.color.textMuted}',\n sectionLabelFontSize: '{semantic.text.navEyebrow}',\n sectionLabelFontWeight: '{semantic.fontWeight.semibold}',\n sectionLabelLetterSpacing: '{semantic.letterSpacing.wide}',\n sectionLabelPaddingBlock: '{semantic.space.xs}',\n sectionLabelPaddingInline: '{semantic.size.sideNavItemPaddingInline}'\n },\n statCard: {\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderColorHover: '{semantic.color.borderStrong}',\n // Batch 10: borderless by default, matching the redesigned card shell\n // — see `card.borderWidth` above.\n borderWidth: '{semantic.border.none}',\n radius: '{semantic.radius.surface}',\n radiusCompact: '{semantic.radius.overlay}',\n shadow: '{semantic.shadow.subtle}',\n paddingBlock: '{semantic.size.statCardPaddingBlock}',\n paddingInline: '{semantic.size.statCardPaddingInline}',\n paddingBlockCompact: '{semantic.size.statCardPaddingBlockCompact}',\n paddingInlineCompact: '{semantic.size.statCardPaddingInlineCompact}',\n gap: '{semantic.space.sm}',\n labelColor: '{semantic.color.textMuted}',\n labelFontSize: '{semantic.text.xs}',\n labelFontWeight: '{semantic.fontWeight.bold}',\n valueFontFamily: '{semantic.font.display}',\n valueFontSize: '{semantic.text.displayLg}',\n valueFontSizeCompact: '{semantic.text.displaySm}',\n valueFontWeight: '{semantic.fontWeight.bold}',\n valueLineHeight: '{semantic.lineHeight.display}',\n valueLetterSpacing: '{semantic.letterSpacing.tighter}',\n valueLetterSpacingCompact: '{semantic.letterSpacing.tight}',\n valueToneSuccessColor: '{semantic.status.successSoftForeground}',\n valueToneWarningColor: '{semantic.status.warningSoftForeground}',\n valueToneDangerColor: '{semantic.status.dangerSoftForeground}',\n valueToneInfoColor: '{semantic.status.infoSoftForeground}',\n suffixColor: '{semantic.color.textMuted}',\n suffixFontSize: '{semantic.text.lg}',\n iconSize: '{semantic.size.statCardIconSize}',\n // Batch 10: the icon badge moved from a circle to the shared field\n // radius (10px) — the tile variant below keeps its own circular\n // `iconRadiusTile`.\n iconRadius: '{semantic.radius.field}',\n iconColor: '{semantic.color.textMuted}',\n iconGlyphSize: '{semantic.size.statCardIconGlyphSize}',\n // `variant=\"tile\"` (batch 10), proto 1069-1113: a compact KPI tile\n // layout with its own padding/gap/icon/value/delta/hint scale.\n radiusTile: '{semantic.radius.tile}',\n paddingBlockTile: '{semantic.size.statTilePaddingBlock}',\n paddingInlineTile: '{semantic.size.statTilePaddingInline}',\n gapTile: '{semantic.size.statTileGap}',\n columnGapTile: '{semantic.size.statTileColumnGap}',\n iconSizeTile: '{semantic.size.statTileIconSize}',\n iconRadiusTile: '{semantic.radius.round}',\n labelColorTile: '{semantic.color.textMutedStrong}',\n labelFontSizeTile: '{semantic.text.label}',\n labelFontWeightTile: '{semantic.fontWeight.medium}',\n valueFontFamilyTile: '{semantic.font.sans}',\n valueFontSizeTile: '{semantic.text.xl}',\n valueLetterSpacingTile: '{semantic.letterSpacing.normal}',\n deltaFontSizeTile: '{semantic.text.xs}',\n deltaFontWeightTile: '{semantic.fontWeight.bold}',\n // `*Tile` delta/icon tones reference the `*TileTint` status family\n // added above, kept distinct from the base card's `*Soft` tones.\n deltaUpColorTile: '{semantic.status.successTileTintForeground}',\n deltaDownColorTile: '{semantic.status.dangerTileTintForeground}',\n deltaNeutralColorTile: '{semantic.color.textMuted}',\n hintFontSizeTile: '{semantic.text.caption}',\n hintFontWeightTile: '{semantic.fontWeight.medium}',\n iconInfoBackground: '{semantic.status.infoTileTint}',\n iconInfoColor: '{semantic.status.infoTileTintForeground}',\n iconSuccessBackground: '{semantic.status.successTileTint}',\n iconSuccessColor: '{semantic.status.successTileTintForeground}',\n iconWarningBackground: '{semantic.status.warningTileTint}',\n iconWarningColor: '{semantic.status.warningTileTintForeground}',\n iconDangerBackground: '{semantic.status.dangerTileTint}',\n iconDangerColor: '{semantic.status.dangerTileTintForeground}',\n iconNeutralBackground: '{semantic.color.surfaceMuted}',\n iconNeutralColor: '{semantic.color.textMuted}',\n deltaFontSize: '{semantic.text.xs}',\n deltaFontWeight: '{semantic.fontWeight.semibold}',\n deltaPaddingBlock: '{semantic.size.chipPillPaddingBlock}',\n deltaPaddingInline: '{semantic.size.chipPillPaddingInline}',\n deltaRadius: '{semantic.radius.pill}',\n deltaGap: '{semantic.space.xs}',\n deltaUpBackground: '{semantic.status.successSoft}',\n deltaUpColor: '{semantic.status.successSoftForeground}',\n deltaDownBackground: '{semantic.status.warningSoft}',\n deltaDownColor: '{semantic.status.warningSoftForeground}',\n deltaNeutralBackground: '{semantic.color.surfaceMuted}',\n deltaNeutralColor: '{semantic.color.textMuted}',\n deltaLabelColor: '{semantic.color.textMuted}',\n hintColor: '{semantic.color.textMuted}',\n hintFontSize: '{semantic.text.xs}',\n // `hintTone`: colors the hint independently of the delta pill, reusing\n // the same status-soft-foreground family as `valueTone`.\n hintToneSuccessColor: '{semantic.status.successSoftForeground}',\n hintToneWarningColor: '{semantic.status.warningSoftForeground}',\n hintToneDangerColor: '{semantic.status.dangerSoftForeground}',\n hintToneInfoColor: '{semantic.status.infoSoftForeground}',\n metaGap: '{semantic.space.sm}',\n footerBorderColor: '{semantic.color.border}',\n footerPaddingBlock: '{semantic.space.sm}',\n focusShadow: '{semantic.shadow.focus}',\n darkBackground: '{semantic.color.emphasisBackground}',\n darkColor: '{semantic.color.emphasisForeground}',\n transitionDuration: '{semantic.motion.fast}'\n },\n commandPalette: {\n backdropColor: '{semantic.color.emphasisBackground}',\n width: '{semantic.size.commandPalette}',\n radius: '{semantic.radius.overlay}',\n background: '{semantic.color.surface}',\n color: '{semantic.color.text}',\n borderColor: '{semantic.color.border}',\n borderWidth: '{semantic.border.thin}',\n shadow: '{semantic.shadow.high}',\n layer: '{semantic.layer.modal}',\n searchBorderColor: '{semantic.color.border}',\n searchIconColor: '{semantic.color.textMuted}',\n searchPlaceholderColor: '{semantic.color.textMuted}',\n searchColor: '{semantic.color.text}',\n searchFontSize: '{semantic.text.md}',\n searchPaddingBlock: '{semantic.space.md}',\n searchPaddingInline: '{semantic.space.lg}',\n searchGap: '{semantic.space.sm}',\n groupLabelColor: '{semantic.color.textMuted}',\n groupLabelFontSize: '{semantic.text.xs}',\n groupLabelFontWeight: '{semantic.fontWeight.semibold}',\n groupGap: '{semantic.space.xs}',\n listPadding: '{semantic.space.sm}',\n itemGap: '{semantic.space.sm}',\n itemPaddingBlock: '{semantic.space.sm}',\n itemPaddingInline: '{semantic.space.md}',\n itemRadius: '{semantic.radius.control}',\n itemColor: '{semantic.color.text}',\n itemIconWidth: '{semantic.size.commandPaletteItemIcon}',\n itemMetaColor: '{semantic.color.textMuted}',\n itemMetaColorActive: '{semantic.status.commandPaletteMetaActive}',\n itemAvatarActiveBackground:\n '{semantic.status.commandPaletteAvatarActiveBackground}',\n itemAvatarActiveColor: '{semantic.status.successTintForeground}',\n itemActiveBackground: '{semantic.status.successTint}',\n itemActiveColor: '{semantic.status.successTintForeground}',\n itemDisabledColor: '{semantic.color.textMuted}',\n kbdBackground: '{semantic.color.surfaceMuted}',\n kbdColor: '{semantic.color.textMuted}',\n kbdRadius: '{semantic.radius.tab}',\n kbdPaddingBlock: '{semantic.size.chipPillPaddingBlock}',\n kbdPaddingInline: '{semantic.size.chipPillPaddingInline}',\n kbdFontSize: '{semantic.text.xs}',\n // Opt-in modifier for a projected `<kbd data-active>` (e.g. a\n // consumer-built search-prefix hint) — batch 6. No interactive\n // prefix-hint feature is wired into the component itself yet.\n kbdActiveBorderColor: '{semantic.status.successTintForeground}',\n kbdActiveColor: '{semantic.status.successTintForeground}',\n footerBorderColor: '{semantic.color.border}',\n footerColor: '{semantic.color.textMuted}',\n footerFontSize: '{semantic.text.xs}',\n footerPaddingBlock: '{semantic.space.sm}',\n footerPaddingInline: '{semantic.space.lg}',\n focusShadow: '{semantic.shadow.focus}',\n enterDuration: '{semantic.motion.enter}',\n enterEasing: '{semantic.motion.easing}'\n },\n overlay: {\n layer: '{semantic.layer.overlay}'\n }\n }\n};\n","import {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n InjectionToken,\n inject,\n makeEnvironmentProviders\n} from '@angular/core';\nimport {\n NsResolvedThemeOptions,\n NsResolvedToastThemeOptions,\n NsThemeOptions\n} from './models/theme.model';\nimport { Arvisfy } from './presets/arvisfy.preset';\nimport { NsThemeService } from './services/theme.service';\n\nconst DEFAULT_TOAST_OPTIONS: NsResolvedToastThemeOptions = {\n placement: 'top-end'\n};\n\nconst DEFAULT_THEME_OPTIONS: NsResolvedThemeOptions = {\n preset: Arvisfy,\n colorScheme: 'system',\n storageKey: 'ns-color-scheme',\n toast: DEFAULT_TOAST_OPTIONS\n};\n\nexport const NS_THEME_OPTIONS = new InjectionToken<NsResolvedThemeOptions>(\n 'NS_THEME_OPTIONS',\n { factory: () => DEFAULT_THEME_OPTIONS }\n);\n\nexport const NS_TOAST_OPTIONS = new InjectionToken<NsResolvedToastThemeOptions>(\n 'NS_TOAST_OPTIONS',\n { factory: () => DEFAULT_TOAST_OPTIONS }\n);\n\nexport function provideNsTheme(\n options: NsThemeOptions = {}\n): EnvironmentProviders {\n const resolvedOptions: NsResolvedThemeOptions = {\n ...DEFAULT_THEME_OPTIONS,\n ...options,\n toast: { ...DEFAULT_TOAST_OPTIONS, ...options.toast }\n };\n return makeEnvironmentProviders([\n {\n provide: NS_THEME_OPTIONS,\n useValue: resolvedOptions\n },\n {\n provide: NS_TOAST_OPTIONS,\n useValue: resolvedOptions.toast\n },\n {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => inject(NsThemeService)\n }\n ]);\n}\n","import {\n NsPrimitiveReference,\n NsPrimitiveTokenValue,\n NsSemanticReference,\n NsThemePreset,\n NsThemePresetOverrides,\n NsTokenTree\n} from '../models/theme.model';\n\n/**\n * Registry of theme tokens that used to be part of the Arvisfy preset and no\n * longer have any effect on rendering. `NsTokenTree` has an open index\n * signature and `mergeObjects` (below) merges unknown keys in without\n * complaint, so a consumer overriding a retired token gets no type error and\n * no `validateNsPreset` error -- the override is silently inert.\n * `validateNsPreset` walks this map against the resolved preset and emits a\n * `console.warn` for every retired path still present, so the override at\n * least surfaces instead of doing nothing invisibly.\n *\n * Keys are full token paths, one of:\n * - `primitive.<path>`\n * - `semantic.common.<path>`\n * - `semantic.colorScheme.<light|dark>.<path>`\n * - `components.<path>`\n *\n * Values are the exact message logged for that path. Do not include a\n * version number in a message: the published package version and this\n * source's `package.json` version can diverge, so a hardcoded version would\n * go stale.\n *\n * This lives here rather than in its own file: `packages/mcp` transpiles\n * this module in isolation (`extract-tokens.mjs`'s `assertNoValueImports`)\n * and cannot resolve a relative value import from a sibling module at that\n * point, so a second file imported here for its data would break\n * `nx run mcp:build-data`.\n */\nexport const NS_RETIRED_TOKENS: Readonly<Record<string, string>> = {\n 'components.imageUpload.thumbnailSize':\n '[@ng-solid/design-system] Theme token `components.imageUpload.thumbnailSize` is retired and no longer has any effect. `components.imageUpload.emptyMinHeight` now sizes `ns-image-upload[layout=\"cover\"]` in both its empty and filled states. Remove this override.'\n};\n\nconst TOKEN_KEY = /^(?:[a-z][a-zA-Z0-9]*|[0-9]+)$/;\n\n// Longest prefix first: `semantic.colorScheme.light.` must win over a naive\n// `semantic.` match before `semantic.common.` gets a chance.\nconst RETIRED_TOKEN_TIERS: ReadonlyArray<\n readonly [\n prefix: string,\n tier:\n | 'primitive'\n | 'semanticCommon'\n | 'semanticLight'\n | 'semanticDark'\n | 'components'\n ]\n> = [\n ['semantic.colorScheme.light.', 'semanticLight'],\n ['semantic.colorScheme.dark.', 'semanticDark'],\n ['semantic.common.', 'semanticCommon'],\n ['components.', 'components'],\n ['primitive.', 'primitive']\n];\nconst UNSAFE_CSS_VALUE = /[;{}]/;\nconst PRIMITIVE_REFERENCE = /^\\{primitive\\.([a-zA-Z0-9.]+)\\}$/;\nconst SEMANTIC_REFERENCE = /^\\{semantic\\.([a-zA-Z0-9.]+)\\}$/;\n\nexport function defineNsPreset(\n base: NsThemePreset,\n overrides: NsThemePresetOverrides\n): NsThemePreset {\n const preset = mergeObjects(base, overrides) as NsThemePreset;\n validateNsPreset(preset);\n return preset;\n}\n\nexport function validateNsPreset(preset: NsThemePreset): void {\n if (!/^[a-z][a-z0-9-]*$/i.test(preset.name)) {\n throw new Error(`Invalid preset name: ${preset.name}`);\n }\n\n const primitives = flattenTokens(preset.primitive);\n const semanticCommon = flattenTokens(preset.semantic.common);\n const semanticLight = flattenTokens(preset.semantic.colorScheme.light);\n const semanticDark = flattenTokens(preset.semantic.colorScheme.dark);\n const components = flattenTokens(preset.components);\n\n for (const [path, value] of primitives) {\n if (\n typeof value === 'string' &&\n (UNSAFE_CSS_VALUE.test(value) || value.trim().length === 0)\n ) {\n throw new Error(`Unsafe primitive token value at primitive.${path}`);\n }\n }\n\n for (const tokens of [semanticCommon, semanticLight, semanticDark]) {\n validateReferences(tokens, PRIMITIVE_REFERENCE, primitives, 'primitive');\n }\n\n const semanticPaths = new Map([\n ...semanticCommon,\n ...semanticLight,\n ...semanticDark\n ]);\n validateReferences(components, SEMANTIC_REFERENCE, semanticPaths, 'semantic');\n\n for (const path of components.keys()) {\n const reference = components.get(path) as string;\n const semanticPath = SEMANTIC_REFERENCE.exec(reference)?.[1];\n if (\n semanticPath &&\n !semanticCommon.has(semanticPath) &&\n !(semanticLight.has(semanticPath) && semanticDark.has(semanticPath))\n ) {\n throw new Error(\n `Component token components.${path} must reference a common semantic token or one available in both color schemes`\n );\n }\n }\n\n warnRetiredTokens({\n primitive: primitives,\n semanticCommon,\n semanticLight,\n semanticDark,\n components\n });\n}\n\nfunction warnRetiredTokens(tokensByTier: {\n primitive: Map<string, unknown>;\n semanticCommon: Map<string, unknown>;\n semanticLight: Map<string, unknown>;\n semanticDark: Map<string, unknown>;\n components: Map<string, unknown>;\n}): void {\n for (const [retiredPath, message] of Object.entries(NS_RETIRED_TOKENS)) {\n const match = RETIRED_TOKEN_TIERS.find(([prefix]) =>\n retiredPath.startsWith(prefix)\n );\n if (!match) {\n continue;\n }\n\n const [prefix, tier] = match;\n const relativePath = retiredPath.slice(prefix.length);\n if (tokensByTier[tier].has(relativePath)) {\n console.warn(message);\n }\n }\n}\n\nexport function flattenTokens<T>(tree: NsTokenTree<T>): Map<string, T> {\n const tokens = new Map<string, T>();\n\n const visit = (value: NsTokenTree<T>, prefix = ''): void => {\n for (const [key, token] of Object.entries(value)) {\n if (!TOKEN_KEY.test(key)) {\n throw new Error(`Invalid token key: ${prefix}${key}`);\n }\n\n const path = prefix ? `${prefix}.${key}` : key;\n if (isRecord(token)) {\n visit(token as NsTokenTree<T>, path);\n } else {\n tokens.set(path, token as T);\n }\n }\n };\n\n visit(tree);\n return tokens;\n}\n\nexport function tokenPathToCssVariable(\n tier: 'primitive' | 'semantic' | 'component',\n path: string\n): string {\n return `--ns-${tier}-${path\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replaceAll('.', '-')\n .toLowerCase()}`;\n}\n\nexport function referenceToCssVariable(\n reference: NsPrimitiveReference | NsSemanticReference\n): string {\n const match = /^\\{(primitive|semantic)\\.(.+)\\}$/.exec(reference);\n if (!match) {\n throw new Error(`Invalid token reference: ${reference}`);\n }\n return `var(${tokenPathToCssVariable(match[1] as 'primitive' | 'semantic', match[2])})`;\n}\n\nfunction validateReferences<T>(\n tokens: Map<string, T>,\n pattern: RegExp,\n targets: Map<string, unknown>,\n tier: string\n): void {\n for (const [path, value] of tokens) {\n if (typeof value !== 'string') {\n throw new Error(`Token ${path} must reference the ${tier} tier`);\n }\n\n const target = pattern.exec(value)?.[1];\n if (!target || !targets.has(target)) {\n throw new Error(`Invalid ${tier} reference at ${path}: ${value}`);\n }\n }\n}\n\nfunction mergeObjects(\n base: unknown,\n overrides: unknown\n): Record<string, unknown> | unknown {\n if (!isRecord(base) || !isRecord(overrides)) {\n return overrides === undefined ? base : overrides;\n }\n\n const merged: Record<string, unknown> = { ...base };\n for (const [key, value] of Object.entries(overrides)) {\n merged[key] = mergeObjects(base[key], value);\n }\n return merged;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport type NsFlattenedPrimitiveTokens = Map<string, NsPrimitiveTokenValue>;\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n DestroyRef,\n Injectable,\n PLATFORM_ID,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport {\n NsColorScheme,\n NsResolvedColorScheme,\n NsThemePreset\n} from '../models/theme.model';\nimport { NS_THEME_OPTIONS } from '../theme.provider';\nimport {\n flattenTokens,\n referenceToCssVariable,\n tokenPathToCssVariable,\n validateNsPreset\n} from '../utils/theme.utils';\n\n@Injectable({ providedIn: 'root' })\nexport class NsThemeService {\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly destroyRef = inject(DestroyRef);\n private readonly options = inject(NS_THEME_OPTIONS);\n private readonly browser = isPlatformBrowser(this.platformId);\n private readonly activeVariables = new Set<string>();\n private readonly mediaQuery = this.createMediaQuery();\n private readonly systemScheme = signal<NsResolvedColorScheme>(\n this.mediaQuery?.matches ? 'dark' : 'light'\n );\n private readonly presetState = signal(this.options.preset);\n private readonly schemeState = signal<NsColorScheme>(\n this.readStoredScheme() ?? this.options.colorScheme\n );\n\n readonly preset = this.presetState.asReadonly();\n readonly colorScheme = this.schemeState.asReadonly();\n readonly scheme = this.colorScheme;\n readonly resolvedColorScheme = computed<NsResolvedColorScheme>(() =>\n this.schemeState() === 'system'\n ? this.systemScheme()\n : (this.schemeState() as NsResolvedColorScheme)\n );\n\n constructor() {\n validateNsPreset(this.options.preset);\n this.mediaQuery?.addEventListener('change', this.onSystemSchemeChange);\n this.destroyRef.onDestroy(() =>\n this.mediaQuery?.removeEventListener('change', this.onSystemSchemeChange)\n );\n this.applyTheme();\n }\n\n setPreset(preset: NsThemePreset): void {\n validateNsPreset(preset);\n this.presetState.set(preset);\n this.applyTheme();\n }\n\n setColorScheme(colorScheme: NsColorScheme): void {\n this.schemeState.set(colorScheme);\n this.persistScheme(colorScheme);\n this.applyTheme();\n }\n\n setScheme(colorScheme: NsColorScheme): void {\n this.setColorScheme(colorScheme);\n }\n\n private readonly onSystemSchemeChange = (\n event: MediaQueryListEvent\n ): void => {\n this.systemScheme.set(event.matches ? 'dark' : 'light');\n if (this.schemeState() === 'system') {\n this.applyTheme();\n }\n };\n\n private applyTheme(): void {\n const root = this.document.documentElement;\n const preset = this.presetState();\n const scheme = this.resolvedColorScheme();\n const variables = new Map<string, string>();\n\n for (const [path, value] of flattenTokens(preset.primitive)) {\n variables.set(tokenPathToCssVariable('primitive', path), String(value));\n }\n\n const semanticCommon = flattenTokens(preset.semantic.common);\n const semanticScheme = flattenTokens(preset.semantic.colorScheme[scheme]);\n const semantic = new Map([...semanticCommon, ...semanticScheme]);\n for (const [path, reference] of semantic) {\n variables.set(\n tokenPathToCssVariable('semantic', path),\n referenceToCssVariable(reference)\n );\n }\n for (const [path, reference] of semanticCommon) {\n variables.set(\n tokenPathToCssVariable('semantic', `common.${path}`),\n referenceToCssVariable(reference)\n );\n }\n\n for (const [path, reference] of flattenTokens(preset.components)) {\n variables.set(\n tokenPathToCssVariable('component', path),\n referenceToCssVariable(reference)\n );\n }\n\n for (const variable of this.activeVariables) {\n if (!variables.has(variable)) {\n root.style.removeProperty(variable);\n }\n }\n for (const [variable, value] of variables) {\n root.style.setProperty(variable, value);\n }\n\n this.activeVariables.clear();\n for (const variable of variables.keys()) {\n this.activeVariables.add(variable);\n }\n\n root.dataset['nsPreset'] = preset.name;\n root.dataset['nsColorScheme'] = scheme;\n root.style.colorScheme = scheme;\n }\n\n private createMediaQuery(): MediaQueryList | undefined {\n const view = this.document.defaultView;\n return this.browser && typeof view?.matchMedia === 'function'\n ? view.matchMedia('(prefers-color-scheme: dark)')\n : undefined;\n }\n\n private readStoredScheme(): NsResolvedColorScheme | undefined {\n if (!this.browser || this.options.storageKey === false) {\n return undefined;\n }\n\n try {\n const stored = this.document.defaultView?.localStorage.getItem(\n this.options.storageKey\n );\n return stored === 'light' || stored === 'dark' ? stored : undefined;\n } catch {\n return undefined;\n }\n }\n\n private persistScheme(colorScheme: NsColorScheme): void {\n if (!this.browser || this.options.storageKey === false) {\n return;\n }\n\n try {\n const storage = this.document.defaultView?.localStorage;\n if (colorScheme === 'system') {\n storage?.removeItem(this.options.storageKey);\n } else {\n storage?.setItem(this.options.storageKey, colorScheme);\n }\n } catch {\n // Storage can be unavailable in privacy-restricted browser contexts.\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nexport type NsTimelineSize = 'sm' | 'md';\n\n/**\n * Vertical list of dated events. Renders an actual `<ol>` so screen readers\n * announce it as a list; `ns-timeline-item` renders the individual `<li>`\n * rows and reads `size` from this host through `:host-context`.\n */\n@Component({\n selector: 'ns-timeline',\n standalone: true,\n template: `<ol class=\"ns-timeline__list\">\n <ng-content />\n </ol>`,\n styleUrl: './timeline.component.scss',\n host: {\n '[class.ns-timeline]': 'true',\n '[class.ns-timeline--sm]': \"size() === 'sm'\",\n '[class.ns-timeline--md]': \"size() === 'md'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTimelineComponent {\n readonly size = input<NsTimelineSize>('md');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsColor } from '../../types';\n\n/**\n * `accent` is a violet event marker specific to the timeline (not part of\n * the shared `NsColor` union), alongside the `info` tone already used by\n * other status-driven components such as `ns-chip`.\n */\nexport type NsTimelineItemColor = NsColor | 'info' | 'accent';\n\n@Component({\n selector: 'ns-timeline-item',\n standalone: true,\n template: `\n <li class=\"ns-timeline-item__row\">\n <span class=\"ns-timeline-item__marker\" aria-hidden=\"true\">\n <span class=\"ns-timeline-item__dot\"></span>\n <span class=\"ns-timeline-item__connector\"></span>\n </span>\n <div class=\"ns-timeline-item__content\">\n <p class=\"ns-timeline-item__title\">{{ title() }}</p>\n @if (meta()) {\n <p class=\"ns-timeline-item__meta\">{{ meta() }}</p>\n }\n <div class=\"ns-timeline-item__extra\"><ng-content /></div>\n </div>\n </li>\n `,\n styleUrl: './timeline.component.scss',\n host: {\n '[class.ns-timeline-item]': 'true',\n '[class.ns-timeline-item--neutral]': \"color() === 'neutral'\",\n '[class.ns-timeline-item--primary]': \"color() === 'primary'\",\n '[class.ns-timeline-item--success]': \"color() === 'success'\",\n '[class.ns-timeline-item--info]': \"color() === 'info'\",\n '[class.ns-timeline-item--warning]': \"color() === 'warning'\",\n '[class.ns-timeline-item--danger]': \"color() === 'danger'\",\n '[class.ns-timeline-item--accent]': \"color() === 'accent'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTimelineItemComponent {\n readonly color = input<NsTimelineItemColor>('neutral');\n readonly title = input.required<string>();\n readonly meta = input<string | undefined>(undefined);\n}\n","import { Signal, signal } from '@angular/core';\nimport { NsToastCloseReason } from '../interfaces/toast-config';\n\nexport class NsToastHandle {\n private readonly closeReason = signal<NsToastCloseReason | undefined>(\n undefined\n );\n readonly closed: Signal<NsToastCloseReason | undefined> = this.closeReason;\n\n constructor(\n private readonly closeToast: (reason: NsToastCloseReason) => void\n ) {}\n\n dismiss(): void {\n this.closeToast('programmatic');\n }\n\n resolve(reason: NsToastCloseReason): void {\n this.closeReason.set(reason);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n TemplateRef,\n inject,\n input,\n output\n} from '@angular/core';\nimport {\n NsToastAction,\n NsToastCloseReason,\n NsToastPlacement,\n NsToastVariant\n} from './interfaces/toast-config';\n\n@Component({\n selector: 'ns-toast',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"ns-toast__message\">\n @if (textMessage() !== null) {\n {{ textMessage() }}\n } @else if (templateMessage()) {\n <ng-container [ngTemplateOutlet]=\"templateMessage()\" />\n }\n </div>\n @if (action()) {\n <button class=\"ns-toast__action\" type=\"button\" (click)=\"triggerAction()\">\n {{ action()?.label }}\n </button>\n }\n @if (closable()) {\n <button\n class=\"ns-toast__close\"\n type=\"button\"\n aria-label=\"Close notification\"\n (click)=\"dismiss('close')\"\n >\n ×\n </button>\n }\n `,\n styleUrl: './toast.component.scss',\n host: {\n role: 'status',\n '[class.ns-toast]': 'true',\n '[class.ns-toast--success]': \"variant() === 'success'\",\n '[class.ns-toast--warning]': \"variant() === 'warning'\",\n '[class.ns-toast--info]': \"variant() === 'info'\",\n '[class.ns-toast--danger]': \"variant() === 'danger'\",\n '[attr.data-variant]': 'variant()',\n '[attr.data-placement]': 'placement()',\n '(mouseenter)': 'pause()',\n '(mouseleave)': 'resume()',\n '(focusin)': 'pause()',\n '(focusout)': 'onFocusOut($event)'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsToastComponent implements AfterViewInit, OnDestroy {\n readonly message = input.required<string | TemplateRef<unknown>>();\n readonly variant = input<NsToastVariant>('info');\n readonly placement = input<NsToastPlacement>('top-end');\n readonly duration = input(5000);\n readonly action = input<NsToastAction | undefined>();\n readonly closable = input(true);\n readonly dismissed = output<NsToastCloseReason>();\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private timer?: ReturnType<typeof setTimeout>;\n private remaining = 0;\n private startedAt = 0;\n\n ngAfterViewInit(): void {\n this.remaining = this.duration();\n this.resume();\n }\n\n ngOnDestroy(): void {\n this.pause();\n }\n\n textMessage(): string | null {\n const message = this.message();\n return typeof message === 'string' ? message : null;\n }\n\n templateMessage(): TemplateRef<unknown> | null {\n const message = this.message();\n return message instanceof TemplateRef ? message : null;\n }\n\n pause(): void {\n if (!this.timer) {\n return;\n }\n clearTimeout(this.timer);\n this.timer = undefined;\n this.remaining -= Date.now() - this.startedAt;\n }\n\n resume(): void {\n if (this.timer || this.remaining <= 0) {\n return;\n }\n this.startedAt = Date.now();\n this.timer = setTimeout(() => this.dismiss('timeout'), this.remaining);\n }\n\n dismiss(reason: NsToastCloseReason): void {\n this.pause();\n this.dismissed.emit(reason);\n }\n\n triggerAction(): void {\n this.dismiss('action');\n }\n\n onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (!next || !this.element.nativeElement.contains(next)) {\n this.resume();\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsToastPlacement } from './interfaces/toast-config';\n\n@Component({\n selector: 'ns-toast-region',\n standalone: true,\n template: '',\n styleUrl: './toast-region.component.scss',\n host: {\n '[attr.data-placement]': 'placement()',\n 'aria-live': 'polite',\n 'aria-relevant': 'additions',\n 'aria-label': 'Notifications'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsToastRegionComponent {\n readonly placement = input<NsToastPlacement>('top-end');\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n DOCUMENT,\n EnvironmentInjector,\n Injectable,\n PLATFORM_ID,\n createComponent,\n inject,\n type OnDestroy\n} from '@angular/core';\nimport { NS_TOAST_OPTIONS } from '../../theme/theme.provider';\nimport { NsToastCloseReason, NsToastOptions } from '../interfaces/toast-config';\nimport { NsToastHandle } from '../models/toast-handle';\nimport { NsToastComponent } from '../toast.component';\nimport { NsToastRegionComponent } from '../toast-region.component';\n\ninterface QueuedToast {\n options: NsToastOptions;\n handle: NsToastHandle;\n}\n\ninterface VisibleToast {\n componentRef: ComponentRef<NsToastComponent>;\n options: NsToastOptions;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NsToastService implements OnDestroy {\n private readonly leaveDuration = 200;\n\n private readonly applicationRef = inject(ApplicationRef);\n private readonly environmentInjector = inject(EnvironmentInjector);\n private readonly document = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly browser = isPlatformBrowser(this.platformId);\n private readonly toastOptions = inject(NS_TOAST_OPTIONS);\n private readonly pending: QueuedToast[] = [];\n private readonly visible = new Map<NsToastHandle, VisibleToast>();\n private region?: ComponentRef<NsToastRegionComponent>;\n\n get maxVisible(): number {\n return this.document.defaultView?.innerWidth &&\n this.document.defaultView.innerWidth < 768\n ? 1\n : 2;\n }\n\n /** SSR resolves immediately because notifications have no browser region. */\n show(options: NsToastOptions): NsToastHandle {\n if (!this.browser) {\n const handle = new NsToastHandle(() => undefined);\n handle.resolve('programmatic');\n return handle;\n }\n const handle = new NsToastHandle((reason) => this.dismiss(handle, reason));\n this.pending.push({ options, handle });\n this.showPending();\n return handle;\n }\n\n private showPending(): void {\n while (this.visible.size < this.maxVisible && this.pending.length) {\n const toast = this.pending.shift();\n if (toast) {\n this.showToast(toast);\n }\n }\n }\n\n private showToast({ options, handle }: QueuedToast): void {\n const componentRef = createComponent(NsToastComponent, {\n environmentInjector: this.environmentInjector\n });\n componentRef.setInput('message', options.message);\n componentRef.setInput('variant', options.variant ?? 'info');\n componentRef.setInput('placement', this.toastOptions.placement);\n componentRef.setInput('duration', options.duration ?? 5000);\n componentRef.setInput('action', options.action);\n componentRef.setInput('closable', options.closable ?? true);\n componentRef.instance.dismissed.subscribe((reason) => {\n if (reason === 'action') {\n options.action?.handler();\n }\n this.dismiss(handle, reason);\n });\n this.applicationRef.attachView(componentRef.hostView);\n this.getRegion().location.nativeElement.appendChild(\n componentRef.location.nativeElement\n );\n componentRef.changeDetectorRef.detectChanges();\n this.visible.set(handle, { componentRef, options });\n }\n\n private dismiss(handle: NsToastHandle, reason: NsToastCloseReason): void {\n const queuedIndex = this.pending.findIndex(\n (toast) => toast.handle === handle\n );\n if (queuedIndex >= 0) {\n const [toast] = this.pending.splice(queuedIndex, 1);\n toast.handle.resolve(reason);\n toast.options.onClose?.(reason);\n return;\n }\n const visibleToast = this.visible.get(handle);\n if (!visibleToast) {\n return;\n }\n this.visible.delete(handle);\n handle.resolve(reason);\n visibleToast.options.onClose?.(reason);\n visibleToast.componentRef.location.nativeElement.classList.add(\n 'ns-toast--leaving'\n );\n this.showPending();\n setTimeout(\n () => this.destroyToast(visibleToast.componentRef),\n this.leaveDuration\n );\n }\n\n ngOnDestroy(): void {\n for (const { componentRef } of this.visible.values()) {\n if (!this.applicationRef.destroyed) {\n this.applicationRef.detachView(componentRef.hostView);\n }\n componentRef.location.nativeElement.remove();\n componentRef.destroy();\n }\n this.visible.clear();\n this.pending.length = 0;\n this.destroyRegion(false);\n }\n\n private destroyToast(componentRef: ComponentRef<NsToastComponent>): void {\n this.applicationRef.detachView(componentRef.hostView);\n componentRef.location.nativeElement.remove();\n componentRef.destroy();\n this.destroyRegionIfEmpty();\n }\n\n private getRegion(): ComponentRef<NsToastRegionComponent> {\n if (this.region) {\n return this.region;\n }\n const region = createComponent(NsToastRegionComponent, {\n environmentInjector: this.environmentInjector\n });\n region.setInput('placement', this.toastOptions.placement);\n this.applicationRef.attachView(region.hostView);\n region.location.nativeElement.setAttribute(\n 'dir',\n this.document.documentElement.dir === 'rtl' ? 'rtl' : 'ltr'\n );\n this.document.body.appendChild(region.location.nativeElement);\n region.changeDetectorRef.detectChanges();\n this.region = region;\n return region;\n }\n\n private destroyRegionIfEmpty(): void {\n if (\n this.visible.size ||\n this.pending.length ||\n this.region?.location.nativeElement.querySelector('ns-toast')\n ) {\n return;\n }\n this.destroyRegion();\n }\n\n private destroyRegion(detachView = true): void {\n if (!this.region) {\n return;\n }\n if (detachView) {\n this.applicationRef.detachView(this.region.hostView);\n }\n this.region.location.nativeElement.remove();\n this.region.destroy();\n this.region = undefined;\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NsVariant } from '../../types';\n\n@Component({\n selector: 'ns-surface',\n standalone: true,\n template: '<ng-content />',\n styleUrl: './surface.component.scss',\n host: {\n '[class.ns-surface]': 'true',\n '[class.ns-surface--solid]': \"variant() === 'solid'\",\n '[class.ns-surface--soft]': \"variant() === 'soft'\",\n '[class.ns-surface--outline]': \"variant() === 'outline'\",\n '[class.ns-surface--ghost]': \"variant() === 'ghost'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsSurfaceComponent {\n readonly variant = input<NsVariant>('solid');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n contentChildren,\n effect,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { NsKey, NsOrientation } from '../../types';\nimport { getNsNextNavigableIndex, NsAriaIdService } from '../a11y';\n\n@Component({\n selector: 'ns-tab',\n standalone: true,\n template: `<section\n class=\"ns-tab__panel\"\n role=\"tabpanel\"\n [id]=\"panelId\"\n [attr.aria-labelledby]=\"tabId\"\n [hidden]=\"!selected()\"\n >\n <ng-content />\n </section>`,\n styleUrls: ['./tabs.component.scss'],\n host: {\n '[class.ns-tab]': 'true',\n '[attr.data-state]': \"selected() ? 'active' : 'inactive'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTabComponent {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false);\n readonly selected = signal(false);\n readonly tabId = inject(NsAriaIdService).create('ns-tab');\n readonly panelId = `${this.tabId}-panel`;\n\n readonly element = inject(ElementRef<HTMLElement>);\n}\n\nexport type NsTabsVariant = 'underline' | 'pill';\n\n@Component({\n selector: 'ns-tabs',\n standalone: true,\n template: `\n <div\n class=\"ns-tabs__list\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation()\"\n >\n @for (tab of tabs(); track tab.key(); let index = $index) {\n <button\n class=\"ns-tabs__tab\"\n type=\"button\"\n role=\"tab\"\n [id]=\"tab.tabId\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-selected]=\"tab.selected()\"\n [attr.data-state]=\"tab.selected() ? 'active' : 'inactive'\"\n [attr.tabindex]=\"tab.selected() ? 0 : -1\"\n [disabled]=\"tab.disabled()\"\n (click)=\"select(tab.key())\"\n (keydown)=\"onKeydown($event, index)\"\n >\n {{ tab.label() }}\n </button>\n }\n </div>\n <ng-content />\n `,\n styleUrls: ['./tabs.component.scss'],\n host: {\n '[class.ns-tabs]': 'true',\n '[class.ns-tabs--underline]': \"variant() === 'underline'\",\n '[class.ns-tabs--pill]': \"variant() === 'pill'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTabsComponent {\n readonly orientation = input<NsOrientation>('horizontal');\n readonly variant = input<NsTabsVariant>('underline');\n readonly selectedKey = model<NsKey | undefined>(undefined);\n readonly tabs = contentChildren(NsTabComponent);\n private readonly element = inject(ElementRef<HTMLElement>);\n\n constructor() {\n effect(() => this.syncSelection());\n }\n\n select(key: NsKey): void {\n const tab = this.tabs().find((candidate) => candidate.key() === key);\n if (!tab || tab.disabled()) {\n return;\n }\n this.selectedKey.set(key);\n }\n\n onKeydown(event: KeyboardEvent, index: number): void {\n const key = event.key;\n if (\n ![\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End'\n ].includes(key)\n ) {\n return;\n }\n const next = getNsNextNavigableIndex(\n this.tabs().map((tab) => ({ key: tab.key(), disabled: tab.disabled() })),\n index,\n key as\n 'ArrowDown' | 'ArrowUp' | 'ArrowLeft' | 'ArrowRight' | 'Home' | 'End',\n this.orientation()\n );\n if (next >= 0) {\n event.preventDefault();\n const tab = this.tabs()[next];\n this.select(tab.key());\n const button = this.element.nativeElement.querySelector(\n `[aria-controls=\"${tab.panelId}\"]`\n ) as HTMLButtonElement | null;\n button?.focus();\n }\n }\n\n private syncSelection(): void {\n const tabs = this.tabs();\n const selected =\n this.selectedKey() ?? tabs.find((tab) => !tab.disabled())?.key();\n if (selected !== undefined && this.selectedKey() !== selected) {\n this.selectedKey.set(selected);\n }\n for (const tab of tabs) {\n tab.selected.set(tab.key() === selected);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n contentChildren,\n effect,\n inject,\n input,\n model,\n signal\n} from '@angular/core';\nimport { NsKey, NsSelectionMode } from '../../types';\nimport { getNsNextNavigableIndex, NsTypeaheadController } from '../a11y';\n\n@Component({\n selector: 'ns-tag',\n standalone: true,\n template: '<ng-content />',\n styleUrls: ['./tag-group.component.scss'],\n host: {\n role: 'option',\n '[attr.data-ns-tag-key]': 'key()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'active() ? 0 : -1',\n '[class.ns-tag]': 'true',\n '[class.ns-tag--selected]': 'selected()',\n '[class.ns-tag--disabled]': 'disabled()',\n '[attr.data-selected]': 'selected()',\n '[attr.data-disabled]': 'disabled()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTagComponent {\n readonly key = input.required<NsKey>();\n readonly label = input.required<string>();\n readonly disabled = input(false);\n readonly selected = signal(false);\n readonly active = signal(false);\n readonly element = inject(ElementRef<HTMLElement>);\n}\n\n@Component({\n selector: 'ns-tag-group',\n standalone: true,\n template: '<ng-content />',\n styleUrls: ['./tag-group.component.scss'],\n host: {\n role: 'listbox',\n '[class.ns-tag-group]': 'true',\n '[attr.aria-label]': 'label()',\n '[attr.aria-multiselectable]': \"selectionMode() === 'multiple'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTagGroupComponent {\n readonly label = input('Tags');\n readonly selectionMode = input<NsSelectionMode>('multiple');\n readonly selectedKeys = model<readonly NsKey[]>([]);\n readonly tags = contentChildren(NsTagComponent);\n private readonly typeahead = new NsTypeaheadController<{\n label: string;\n disabled: boolean;\n }>();\n private activeIndex = -1;\n\n constructor() {\n effect(() => this.syncState());\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n const tag = this.tags().find((candidate) =>\n candidate.element.nativeElement.contains(event.target as Node)\n );\n if (tag) {\n this.select(tag.key());\n }\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n const tags = this.tags();\n if (!tags.length) {\n return;\n }\n if (event.key === ' ' || event.key === 'Enter') {\n const tag =\n tags[this.activeIndex] ?? tags.find((item) => !item.disabled());\n if (tag) {\n event.preventDefault();\n this.select(tag.key());\n }\n return;\n }\n let next = -1;\n if (['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(event.key)) {\n next = getNsNextNavigableIndex(\n tags.map((tag) => ({ key: tag.key(), disabled: tag.disabled() })),\n this.activeIndex,\n event.key as 'ArrowLeft' | 'ArrowRight' | 'Home' | 'End',\n 'horizontal'\n );\n } else {\n next = this.typeahead.find(\n tags.map((tag) => ({ label: tag.label(), disabled: tag.disabled() })),\n event.key,\n this.activeIndex\n );\n }\n if (next >= 0) {\n event.preventDefault();\n this.focus(next);\n }\n }\n\n select(key: NsKey): void {\n const tag = this.tags().find((candidate) => candidate.key() === key);\n if (!tag || tag.disabled() || this.selectionMode() === 'none') {\n return;\n }\n const selected = new Set(this.selectedKeys());\n if (this.selectionMode() === 'multiple') {\n selected.has(key) ? selected.delete(key) : selected.add(key);\n } else {\n selected.clear();\n selected.add(key);\n }\n this.selectedKeys.set([...selected]);\n }\n\n private focus(index: number): void {\n this.activeIndex = index;\n this.tags()[index].element.nativeElement.focus();\n this.syncState();\n }\n\n private syncState(): void {\n const selected = new Set(this.selectedKeys());\n for (const [index, tag] of this.tags().entries()) {\n tag.selected.set(selected.has(tag.key()));\n tag.active.set(index === this.activeIndex);\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnDestroy,\n effect,\n inject,\n input,\n model,\n output\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport {\n NsOverlayCloseReason,\n NsOverlayRef,\n NsOverlayService\n} from '../overlay';\n\n@Component({\n selector: 'ns-tooltip',\n standalone: true,\n template: '{{ message() }}',\n styleUrl: './tooltip.component.scss',\n host: {\n role: 'tooltip',\n '[id]': 'id()',\n '[class.ns-tooltip]': 'true',\n '[attr.data-state]': \"isOpen() ? 'open' : 'closed'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NsTooltipComponent implements AfterViewInit, OnDestroy {\n readonly isOpen = model(false);\n readonly origin = input.required<HTMLElement>();\n readonly message = input.required<string>();\n readonly id = input.required<string>();\n readonly placement = input<NsPlacement>('top');\n readonly closed = output<NsOverlayCloseReason>();\n\n private readonly element = inject(ElementRef<HTMLElement>);\n private readonly overlay = inject(NsOverlayService);\n private overlayRef?: NsOverlayRef;\n private viewInitialized = false;\n\n constructor() {\n effect(() => {\n const open = this.isOpen();\n if (!this.viewInitialized) {\n return;\n }\n open ? this.openOverlay() : this.overlayRef?.close('programmatic');\n });\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n if (this.isOpen()) {\n this.openOverlay();\n }\n }\n\n ngOnDestroy(): void {\n this.overlayRef?.close('programmatic');\n }\n\n private openOverlay(): void {\n if (this.overlayRef) {\n return;\n }\n const overlayRef = this.overlay.open({\n origin: this.origin(),\n placement: this.placement(),\n closeOnEscape: true,\n closeOnOutsidePointer: false,\n trapFocus: false,\n restoreFocus: false\n });\n overlayRef.attach(this.element.nativeElement);\n this.overlayRef = overlayRef;\n overlayRef.onClose((reason) => {\n if (this.overlayRef !== overlayRef) {\n return;\n }\n this.overlayRef = undefined;\n if (this.isOpen()) {\n this.isOpen.set(false);\n }\n this.closed.emit(reason);\n });\n }\n}\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n OnDestroy,\n ViewContainerRef,\n input,\n inject\n} from '@angular/core';\nimport { NsPlacement } from '../../types';\nimport { NsTooltipComponent } from './tooltip.component';\n\nlet tooltipId = 0;\n\n@Directive({\n selector: '[nsTooltip]',\n standalone: true,\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(focusin)': 'show()',\n '(focusout)': 'hide()'\n }\n})\nexport class NsTooltipDirective implements OnDestroy {\n readonly message = input.required<string>({ alias: 'nsTooltip' });\n readonly placement = input<NsPlacement>('top', {\n alias: 'nsTooltipPlacement'\n });\n readonly delay = input(300, { alias: 'nsTooltipDelay' });\n\n private readonly origin = inject(ElementRef<HTMLElement>);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly id = `ns-tooltip-${tooltipId++}`;\n private componentRef?: ComponentRef<NsTooltipComponent>;\n private timer?: ReturnType<typeof setTimeout>;\n private previousDescription: string | null = null;\n\n show(): void {\n this.cancelPendingHide();\n if (this.componentRef?.instance.isOpen()) {\n return;\n }\n if (this.delay() === 0) {\n this.open();\n return;\n }\n this.timer = setTimeout(() => this.open(), this.delay());\n }\n\n hide(): void {\n this.cancelPendingHide();\n this.componentRef?.instance.isOpen.set(false);\n }\n\n ngOnDestroy(): void {\n this.cancelPendingHide();\n this.componentRef?.destroy();\n }\n\n private open(): void {\n const componentRef = this.componentRef ?? this.createComponent();\n this.addDescription();\n componentRef.instance.isOpen.set(true);\n }\n\n private createComponent(): ComponentRef<NsTooltipComponent> {\n const componentRef = this.viewContainer.createComponent(NsTooltipComponent);\n componentRef.setInput('origin', this.origin.nativeElement);\n componentRef.setInput('message', this.message());\n componentRef.setInput('id', this.id);\n componentRef.setInput('placement', this.placement());\n componentRef.instance.closed.subscribe(() => this.removeDescription());\n this.componentRef = componentRef;\n return componentRef;\n }\n\n private addDescription(): void {\n const element = this.origin.nativeElement;\n this.previousDescription ??= element.getAttribute('aria-describedby');\n const descriptions = new Set(\n (this.previousDescription ?? '').split(' ').filter(Boolean)\n );\n descriptions.add(this.id);\n element.setAttribute('aria-describedby', [...descriptions].join(' '));\n }\n\n private removeDescription(): void {\n if (this.previousDescription === null) {\n this.origin.nativeElement.removeAttribute('aria-describedby');\n } else {\n this.origin.nativeElement.setAttribute(\n 'aria-describedby',\n this.previousDescription\n );\n }\n this.previousDescription = null;\n }\n\n private cancelPendingHide(): void {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n}\n","/*\n * Public API Surface of @ng-solid/design-system\n */\n\nexport * from './types';\nexport * from './lib/accordion';\nexport * from './lib/alert';\nexport * from './lib/avatar';\nexport * from './lib/badge';\nexport * from './lib/breadcrumbs';\nexport * from './lib/button';\nexport * from './lib/button-group';\nexport * from './lib/card';\nexport * from './lib/chip';\nexport * from './lib/collection';\nexport * from './lib/command-palette';\nexport * from './lib/comment';\nexport * from './lib/description';\nexport * from './lib/divider';\nexport * from './lib/drawer';\nexport * from './lib/editor';\nexport * from './lib/empty-state';\nexport * from './lib/form';\nexport * from './lib/image-upload';\nexport * from './lib/link';\nexport * from './lib/menu';\nexport * from './lib/meter';\nexport * from './lib/modal';\nexport * from './lib/overlay';\nexport * from './lib/pagination';\nexport * from './lib/popover';\nexport * from './lib/progress-bar';\nexport * from './lib/schedule';\nexport * from './lib/schema';\nexport * from './lib/side-nav';\nexport * from './lib/skeleton';\nexport * from './lib/stat-card';\nexport * from './lib/template';\nexport * from './lib/theme';\nexport * from './lib/timeline';\nexport * from './lib/toast';\nexport * from './lib/surface';\nexport * from './lib/tabs';\nexport * from './lib/tag-group';\nexport * from './lib/tooltip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["numberOrUndefined","NAVIGATION_KEYS","DOCUMENT","i1"],"mappings":"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"}