@letsprogram/ng-oat 0.1.0 → 0.1.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.
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  Most Angular UI libraries ship massive bundles, override half your app's styles, and lock you into their design language. ng-oat takes a different approach:
13
13
 
14
- - **Tiny footprint** — Oat CSS is just ~4 KB (gzipped). The Angular wrapper adds components, not weight.
14
+ - **Tiny footprint** — Oat CSS is just ~4 KB (gzipped). The Angular wrapper adds components, not weight expect less than 200kB packed.
15
15
  - **Signals-first** — Every component is built with Angular Signals from day one. No RxJS subscriptions to manage.
16
16
  - **Standalone everything** — Import only what you use. No `NgModule` ceremony.
17
17
  - **Semantic HTML** — Components render clean, accessible markup. Oat CSS does the styling; Angular handles the behavior.
@@ -45,7 +45,6 @@ Open `angular.json` and add the stylesheet, tokens, and script:
45
45
  "styles": [
46
46
  "node_modules/@letsprogram/ng-oat/assets/oat/oat.css",
47
47
  "node_modules/@letsprogram/ng-oat/src/lib/tokens/tokens.css",
48
- "node_modules/@letsprogram/ng-oat/src/lib/styles/tooltip-positions.css",
49
48
  "src/styles.css"
50
49
  ],
51
50
  "scripts": [
@@ -63,7 +62,6 @@ Open `angular.json` and add the stylesheet, tokens, and script:
63
62
  |------|---------|
64
63
  | `oat.css` | Core Oat CSS framework (typography, colors, layout, all component styles) |
65
64
  | `tokens.css` | `--oat-*` design token aliases for runtime theming |
66
- | `tooltip-positions.css` | Tooltip positioning variants (top, bottom, left, right) |
67
65
  | `oat.js` | Lightweight JS for dropdown, toast, sidebar, and tabs native behavior |
68
66
 
69
67
  > **Alternative:** You can also import the CSS in your `styles.css` instead:
@@ -229,7 +227,7 @@ This requires `@angular/cdk` as a peer dependency.
229
227
 
230
228
  | ng-oat | Angular | Node.js |
231
229
  |--------|---------|---------|
232
- | 0.1.x | ^21.0.0 | >= 20 |
230
+ | 0.1.x | ^21.0.0 | >= 22 |
233
231
 
234
232
  ---
235
233
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@letsprogram/ng-oat",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Angular component library built on top of the Oat CSS framework — signals-first, lightweight, and accessible.",
5
5
  "license": "MIT",
6
6
  "author": "SashiKumar Yadav",
@@ -1 +0,0 @@
1
- {"version":3,"file":"letsprogram-ng-oat-cdk.mjs","sources":["../../../projects/ng-oat/cdk/src/lib/cdk-tooltip-positioner.ts","../../../projects/ng-oat/cdk/src/public-api.ts","../../../projects/ng-oat/cdk/src/letsprogram-ng-oat-cdk.ts"],"sourcesContent":["import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport { TooltipPositioner, TOOLTIP_POSITIONER } from '@letsprogram/ng-oat';\nimport { Placement } from '@letsprogram/ng-oat';\n\n/**\n @deprecated This CDK-based tooltip positioner is no longer provided by default in ng-oat. It can be added as an optional dependency via provideNgOatCdkTooltipPositioner() if you want to use it instead of the built-in positionElement-based implementation.\n */\nclass CdkTooltipPositioner implements TooltipPositioner {\n constructor(private overlay: Overlay) {}\n\n position(anchor: HTMLElement, floating: HTMLElement, placement: Placement, offset = 8): void {\n // Use CDK overlay positioning logic directly on the element\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(anchor)\n .withPositions(this.getPositions(placement, offset))\n .withPush(true)\n .withViewportMargin(4);\n\n // Apply position manually using the strategy's calculation\n const originRect = anchor.getBoundingClientRect();\n const overlayRect = floating.getBoundingClientRect();\n\n // Calculate based on placement with CDK-style fallbacks\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case 'top':\n top = originRect.top - overlayRect.height - offset;\n left = originRect.left + (originRect.width - overlayRect.width) / 2;\n break;\n case 'bottom':\n top = originRect.bottom + offset;\n left = originRect.left + (originRect.width - overlayRect.width) / 2;\n break;\n case 'left':\n top = originRect.top + (originRect.height - overlayRect.height) / 2;\n left = originRect.left - overlayRect.width - offset;\n break;\n case 'right':\n top = originRect.top + (originRect.height - overlayRect.height) / 2;\n left = originRect.right + offset;\n break;\n }\n\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n // Flip if overflowing\n if (placement === 'top' && top < 0) top = originRect.bottom + offset;\n if (placement === 'bottom' && top + overlayRect.height > vh) top = originRect.top - overlayRect.height - offset;\n if (placement === 'left' && left < 0) left = originRect.right + offset;\n if (placement === 'right' && left + overlayRect.width > vw) left = originRect.left - overlayRect.width - offset;\n\n // Clamp\n top = Math.max(4, Math.min(top, vh - overlayRect.height - 4));\n left = Math.max(4, Math.min(left, vw - overlayRect.width - 4));\n\n floating.style.position = 'fixed';\n floating.style.top = `${top}px`;\n floating.style.left = `${left}px`;\n\n // Clean up the strategy since we only used it for reference\n strategy.dispose();\n }\n\n private getPositions(placement: Placement, offset: number) {\n const positions: any[] = [];\n switch (placement) {\n case 'top':\n positions.push({ originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset });\n positions.push({ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset });\n break;\n case 'bottom':\n positions.push({ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: offset });\n positions.push({ originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: -offset });\n break;\n case 'left':\n positions.push({ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset });\n positions.push({ originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset });\n break;\n case 'right':\n positions.push({ originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center', offsetX: offset });\n positions.push({ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center', offsetX: -offset });\n break;\n }\n return positions;\n }\n\n destroy(): void {}\n}\n\n/**\n * @deprecated This CDK-based tooltip positioner is no longer provided by default in ng-oat. It can be added as an optional dependency via provideNgOatCdkTooltipPositioner() if you want to use it instead of the built-in positionElement-based implementation.\n *\n * Add to your app providers alongside provideNgOat():\n * ```ts\n * provideNgOat(),\n * provideNgOatCdkTooltipPositioner()\n * ```\n *\n * Requires @angular/cdk as a peer dependency.\n */\nexport function provideNgOatCdkTooltipPositioner(): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: TOOLTIP_POSITIONER, useFactory: (overlay: Overlay) => new CdkTooltipPositioner(overlay), deps: [Overlay] },\n ]);\n}\n","/*\n * Public API Surface of ng-oat/cdk\n */\n\nexport { provideNgOatCdkTooltipPositioner } from './lib/cdk-tooltip-positioner';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"letsprogram-ng-oat.mjs","sources":["../../../projects/ng-oat/src/lib/providers/provide-oat.ts","../../../projects/ng-oat/src/lib/tokens/token-map.ts","../../../projects/ng-oat/src/lib/providers/provide-oat-theme.ts","../../../projects/ng-oat/src/lib/directives/dropdown.ts","../../../projects/ng-oat/src/lib/util/positioning.ts","../../../projects/ng-oat/src/lib/util/tooltip-positioner.ts","../../../projects/ng-oat/src/lib/util/keyboard.ts","../../../projects/ng-oat/src/lib/directives/tooltip.ts","../../../projects/ng-oat/src/lib/directives/sidebar.ts","../../../projects/ng-oat/src/lib/directives/tabs.ts","../../../projects/ng-oat/src/lib/directives/dialog.ts","../../../projects/ng-oat/src/lib/services/toast.ts","../../../projects/ng-oat/src/lib/components/badge.ts","../../../projects/ng-oat/src/lib/components/alert.ts","../../../projects/ng-oat/src/lib/components/button.ts","../../../projects/ng-oat/src/lib/components/split-button.ts","../../../projects/ng-oat/src/lib/components/breadcrumb.ts","../../../projects/ng-oat/src/lib/components/pagination.ts","../../../projects/ng-oat/src/lib/components/progress.ts","../../../projects/ng-oat/src/lib/components/meter.ts","../../../projects/ng-oat/src/lib/components/spinner.ts","../../../projects/ng-oat/src/lib/components/switch.ts","../../../projects/ng-oat/src/lib/components/skeleton.ts","../../../projects/ng-oat/src/lib/components/accordion.ts","../../../projects/ng-oat/src/lib/components/card.ts","../../../projects/ng-oat/src/lib/components/table.ts","../../../projects/ng-oat/src/lib/components/dropdown.ts","../../../projects/ng-oat/src/lib/components/tooltip.ts","../../../projects/ng-oat/src/lib/components/sidebar.ts","../../../projects/ng-oat/src/lib/components/tabs.ts","../../../projects/ng-oat/src/lib/components/dialog.ts","../../../projects/ng-oat/src/lib/components/avatar.ts","../../../projects/ng-oat/src/lib/components/file-upload.ts","../../../projects/ng-oat/src/lib/components/input-otp.ts","../../../projects/ng-oat/src/lib/components/search-input.ts","../../../projects/ng-oat/src/lib/components/separator.ts","../../../projects/ng-oat/src/lib/components/toggle.ts","../../../projects/ng-oat/src/lib/components/toggle-group.ts","../../../projects/ng-oat/src/lib/components/chips.ts","../../../projects/ng-oat/src/lib/components/carousel.ts","../../../projects/ng-oat/src/lib/components/card-carousel.ts","../../../projects/ng-oat/src/lib/components/forms/input.ts","../../../projects/ng-oat/src/lib/components/forms/textarea.ts","../../../projects/ng-oat/src/lib/components/forms/select.ts","../../../projects/ng-oat/src/lib/components/forms/checkbox.ts","../../../projects/ng-oat/src/lib/components/forms/radio-group.ts","../../../projects/ng-oat/src/lib/components/forms/form-error.ts","../../../projects/ng-oat/src/lib/components/index.ts","../../../projects/ng-oat/src/lib/util/oat-version.ts","../../../projects/ng-oat/src/public-api.ts","../../../projects/ng-oat/src/letsprogram-ng-oat.ts"],"sourcesContent":["import {\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n PLATFORM_ID,\n provideAppInitializer,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\n/** Configuration for provideNgOat() */\nexport interface NgOatOptions {\n assets?: {\n /** How to load Oat CSS. 'auto' = 'link'. false = skip. */\n css?: 'auto' | 'link' | 'import' | false;\n /** How to load Oat JS. 'auto' = 'script'. false = skip. */\n js?: 'auto' | 'script' | false;\n };\n /** Register ot-tabs/ot-dropdown custom elements from Oat JS (default: true). */\n registerWebComponents?: boolean;\n /** Base path for vendored Oat assets (default: 'assets/oat'). */\n basePath?: string;\n}\n\nconst DEFAULT_OPTIONS: Required<NgOatOptions> = {\n assets: { css: 'auto', js: 'auto' },\n registerWebComponents: true,\n basePath: 'assets/oat',\n};\n\nfunction injectTag(\n doc: Document,\n tag: 'link' | 'script',\n attrs: Record<string, string>,\n id: string,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n if (doc.getElementById(id)) {\n resolve();\n return;\n }\n const el = doc.createElement(tag);\n el.id = id;\n Object.entries(attrs).forEach(([k, v]) => el.setAttribute(k, v));\n el.addEventListener('load', () => resolve());\n el.addEventListener('error', () => reject(new Error(`Failed to load ${tag}: ${attrs['href'] || attrs['src']}`)));\n doc.head.appendChild(el);\n });\n}\n\n/**\n * Provides Oat UI assets and initialisation.\n *\n * Include in your app config providers array:\n * ```ts\n * provideNgOat() // auto-inject CSS + JS\n * provideNgOat({ assets: { css: false } }) // user imported CSS manually\n * provideNgOat({ basePath: '/custom/oat' }) // custom asset location\n * ```\n */\nexport function provideNgOat(options?: NgOatOptions): EnvironmentProviders {\n const opts = {\n ...DEFAULT_OPTIONS,\n ...options,\n assets: { ...DEFAULT_OPTIONS.assets, ...options?.assets },\n };\n\n return makeEnvironmentProviders([\n provideAppInitializer(() => {\n const platformId = inject(PLATFORM_ID);\n const doc = inject(DOCUMENT);\n\n if (!isPlatformBrowser(platformId)) return;\n\n const base = opts.basePath!.replace(/\\/+$/, '');\n const promises: Promise<void>[] = [];\n\n // CSS\n const cssMode = opts.assets.css === 'auto' ? 'link' : opts.assets.css;\n if (cssMode === 'link') {\n promises.push(\n injectTag(doc, 'link', { rel: 'stylesheet', href: `${base}/oat.min.css` }, 'ng-oat-css'),\n );\n // Also inject the token layer CSS\n promises.push(\n injectTag(doc, 'link', { rel: 'stylesheet', href: `${base}/tokens.css` }, 'ng-oat-tokens-css'),\n );\n }\n\n // JS\n const jsMode = opts.assets.js === 'auto' ? 'script' : opts.assets.js;\n if (jsMode === 'script') {\n promises.push(\n injectTag(doc, 'script', { src: `${base}/oat.min.js`, defer: '' }, 'ng-oat-js'),\n );\n }\n\n return Promise.all(promises).then(() => {});\n }),\n ]);\n}\n","/**\n * Stable --oat-* token names for ng-oat theming.\n *\n * Each key is a --oat-* CSS custom property.\n * The value is the CSS string to set (color, px, rem, etc.).\n *\n * These map to upstream Oat variables via tokens.css.\n */\nexport type OatTokens = Partial<{\n // Colors\n '--oat-background': string;\n '--oat-foreground': string;\n '--oat-card': string;\n '--oat-card-foreground': string;\n '--oat-primary': string;\n '--oat-primary-foreground': string;\n '--oat-secondary': string;\n '--oat-secondary-foreground': string;\n '--oat-muted': string;\n '--oat-muted-foreground': string;\n '--oat-faint': string;\n '--oat-faint-foreground': string;\n '--oat-accent': string;\n '--oat-danger': string;\n '--oat-danger-foreground': string;\n '--oat-success': string;\n '--oat-success-foreground': string;\n '--oat-warning': string;\n '--oat-warning-foreground': string;\n '--oat-border': string;\n '--oat-input': string;\n '--oat-ring': string;\n // Spacing\n '--oat-space-1': string;\n '--oat-space-2': string;\n '--oat-space-3': string;\n '--oat-space-4': string;\n '--oat-space-5': string;\n '--oat-space-6': string;\n '--oat-space-8': string;\n '--oat-space-10': string;\n '--oat-space-12': string;\n '--oat-space-14': string;\n '--oat-space-16': string;\n '--oat-space-18': string;\n // Border radius\n '--oat-radius-small': string;\n '--oat-radius-medium': string;\n '--oat-radius-large': string;\n '--oat-radius-full': string;\n // Typography\n '--oat-font-sans': string;\n '--oat-font-mono': string;\n '--oat-text-1': string;\n '--oat-text-2': string;\n '--oat-text-3': string;\n '--oat-text-4': string;\n '--oat-text-5': string;\n '--oat-text-6': string;\n '--oat-text-7': string;\n '--oat-text-8': string;\n '--oat-text-regular': string;\n '--oat-leading-normal': string;\n '--oat-font-normal': string;\n '--oat-font-medium': string;\n '--oat-font-semibold': string;\n '--oat-font-bold': string;\n // Shadows\n '--oat-shadow-small': string;\n '--oat-shadow-medium': string;\n '--oat-shadow-large': string;\n // Transitions\n '--oat-transition-fast': string;\n '--oat-transition': string;\n // Z-index\n '--oat-z-dropdown': string;\n '--oat-z-modal': string;\n // Dimensions\n '--oat-bar-height': string;\n // Component-level (patch)\n '--oat-grid-cols': string;\n '--oat-grid-gap': string;\n '--oat-container-max': string;\n '--oat-container-pad': string;\n '--oat-topnav-offset': string;\n}>;\n\n/**\n * Mapping of --oat-* public tokens → upstream Oat variable names.\n * Used by the sync script to detect upstream changes.\n */\nexport const OAT_TOKEN_MAP: Record<string, string> = {\n '--oat-background': '--background',\n '--oat-foreground': '--foreground',\n '--oat-card': '--card',\n '--oat-card-foreground': '--card-foreground',\n '--oat-primary': '--primary',\n '--oat-primary-foreground': '--primary-foreground',\n '--oat-secondary': '--secondary',\n '--oat-secondary-foreground': '--secondary-foreground',\n '--oat-muted': '--muted',\n '--oat-muted-foreground': '--muted-foreground',\n '--oat-faint': '--faint',\n '--oat-faint-foreground': '--faint-foreground',\n '--oat-accent': '--accent',\n '--oat-danger': '--danger',\n '--oat-danger-foreground': '--danger-foreground',\n '--oat-success': '--success',\n '--oat-success-foreground': '--success-foreground',\n '--oat-warning': '--warning',\n '--oat-warning-foreground': '--warning-foreground',\n '--oat-border': '--border',\n '--oat-input': '--input',\n '--oat-ring': '--ring',\n '--oat-space-1': '--space-1',\n '--oat-space-2': '--space-2',\n '--oat-space-3': '--space-3',\n '--oat-space-4': '--space-4',\n '--oat-space-5': '--space-5',\n '--oat-space-6': '--space-6',\n '--oat-space-8': '--space-8',\n '--oat-space-10': '--space-10',\n '--oat-space-12': '--space-12',\n '--oat-space-14': '--space-14',\n '--oat-space-16': '--space-16',\n '--oat-space-18': '--space-18',\n '--oat-radius-small': '--radius-small',\n '--oat-radius-medium': '--radius-medium',\n '--oat-radius-large': '--radius-large',\n '--oat-radius-full': '--radius-full',\n '--oat-font-sans': '--font-sans',\n '--oat-font-mono': '--font-mono',\n '--oat-text-1': '--text-1',\n '--oat-text-2': '--text-2',\n '--oat-text-3': '--text-3',\n '--oat-text-4': '--text-4',\n '--oat-text-5': '--text-5',\n '--oat-text-6': '--text-6',\n '--oat-text-7': '--text-7',\n '--oat-text-8': '--text-8',\n '--oat-text-regular': '--text-regular',\n '--oat-leading-normal': '--leading-normal',\n '--oat-font-normal': '--font-normal',\n '--oat-font-medium': '--font-medium',\n '--oat-font-semibold': '--font-semibold',\n '--oat-font-bold': '--font-bold',\n '--oat-shadow-small': '--shadow-small',\n '--oat-shadow-medium': '--shadow-medium',\n '--oat-shadow-large': '--shadow-large',\n '--oat-transition-fast': '--transition-fast',\n '--oat-transition': '--transition',\n '--oat-z-dropdown': '--z-dropdown',\n '--oat-z-modal': '--z-modal',\n '--oat-bar-height': '--bar-height',\n '--oat-grid-cols': '--grid-cols',\n '--oat-grid-gap': '--grid-gap',\n '--oat-container-max': '--container-max',\n '--oat-container-pad': '--container-pad',\n '--oat-topnav-offset': '--topnav-offset',\n};\n","import {\n EnvironmentProviders,\n inject,\n Injectable,\n makeEnvironmentProviders,\n PLATFORM_ID,\n provideAppInitializer,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { OatTokens, OAT_TOKEN_MAP } from '../tokens/token-map';\n\n/** Configuration for provideNgOatTheme() */\nexport interface NgOatThemeConfig {\n /** Token overrides: record of --oat-* → CSS value */\n tokens: OatTokens;\n /** Where to apply tokens. Default: ':root' (document.documentElement) */\n scope?: ':root' | HTMLElement | string;\n}\n\n/**\n * Injectable reference for runtime theme manipulation.\n * Provided automatically when provideNgOatTheme() is used.\n */\n@Injectable()\nexport class NgOatThemeRef {\n private appliedTokens = new Map<string, string>();\n private targetElement: HTMLElement | null = null;\n\n private platformId = inject(PLATFORM_ID);\n private doc = inject(DOCUMENT);\n\n /** @internal */\n _init(config: NgOatThemeConfig): void {\n if (!isPlatformBrowser(this.platformId)) return;\n this.resolveTarget(config.scope ?? ':root');\n this.setTokens(config.tokens);\n }\n\n /** Merge and apply token overrides to the current scope element. */\n setTokens(tokens: OatTokens): void {\n if (!this.targetElement) return;\n for (const [key, value] of Object.entries(tokens)) {\n if (value != null) {\n // Set the --oat-* alias token\n this.targetElement.style.setProperty(key, value);\n this.appliedTokens.set(key, value);\n\n // Also set the upstream Oat variable so that Oat CSS picks it up.\n // e.g. '--oat-primary' → '--primary'\n const upstream = (OAT_TOKEN_MAP as Record<string, string>)[key];\n if (upstream) {\n this.targetElement.style.setProperty(upstream, value);\n this.appliedTokens.set(upstream, value);\n }\n }\n }\n }\n\n /** Remove all previously applied token overrides. */\n resetTokens(): void {\n if (!this.targetElement) return;\n for (const key of this.appliedTokens.keys()) {\n this.targetElement.style.removeProperty(key);\n }\n this.appliedTokens.clear();\n }\n\n /** Change the scope element and re-apply current tokens. */\n setScope(scope: ':root' | HTMLElement | string): void {\n // Save tokens before resetting\n const saved = new Map(this.appliedTokens);\n // Reset on old target\n this.resetTokens();\n this.resolveTarget(scope);\n // Re-apply saved tokens on new target\n if (this.targetElement) {\n for (const [key, value] of saved) {\n this.targetElement.style.setProperty(key, value);\n this.appliedTokens.set(key, value);\n }\n }\n }\n\n /** Get currently applied tokens as a plain object (includes both --oat-* and upstream keys). */\n getTokens(): Record<string, string> {\n return Object.fromEntries(this.appliedTokens);\n }\n\n private resolveTarget(scope: ':root' | HTMLElement | string): void {\n if (scope instanceof HTMLElement) {\n this.targetElement = scope;\n } else if (scope === ':root') {\n this.targetElement = this.doc.documentElement;\n } else {\n this.targetElement = this.doc.querySelector(scope) as HTMLElement | null;\n }\n }\n}\n\n/**\n * Provides Oat theme token overrides via Angular DI.\n *\n * CSS-only theming: just override --oat-* in your CSS, no Angular code needed.\n *\n * Angular theming:\n * ```ts\n * provideNgOatTheme({\n * tokens: { '--oat-primary': '#3b82f6', '--oat-danger': '#dc2626' },\n * scope: ':root',\n * })\n * ```\n *\n * Then inject NgOatThemeRef for runtime switching:\n * ```ts\n * const theme = inject(NgOatThemeRef);\n * theme.setTokens({ '--oat-primary': '#10b981' });\n * theme.resetTokens();\n * ```\n */\nexport function provideNgOatTheme(config: NgOatThemeConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n NgOatThemeRef,\n provideAppInitializer(() => {\n const themeRef = inject(NgOatThemeRef);\n themeRef._init(config);\n }),\n ]);\n}\n","import {\n Directive,\n ElementRef,\n inject,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Angular integration for Oat's <ot-dropdown> WebComponent.\n *\n * Oat already handles all dropdown behaviour (positioning, keyboard nav, ARIA).\n * This directive provides Angular-friendly programmatic control and signal-based state.\n *\n * Usage:\n * ```html\n * <ot-dropdown ngOatDropdown #dd=\"ngOatDropdown\">\n * <button popovertarget=\"my-menu\">Options</button>\n * <menu popover id=\"my-menu\">\n * <button role=\"menuitem\">Item 1</button>\n * </menu>\n * </ot-dropdown>\n *\n * <p>Open: {{ dd.isOpen() }}</p>\n * <button (click)=\"dd.toggle()\">Toggle</button>\n * ```\n */\n@Directive({\n selector: 'ot-dropdown[ngOatDropdown], [ngOatDropdown]',\n exportAs: 'ngOatDropdown',\n})\nexport class NgOatDropdown {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n\n /** Reactive open state */\n readonly isOpen = signal(false);\n\n /** Emits when dropdown opens or closes */\n readonly ngOatDropdownChange = output<boolean>();\n\n private popoverEl: HTMLElement | null = null;\n private triggerEl: HTMLElement | null = null;\n private toggleListener: ((e: Event) => void) | null = null;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.el.nativeElement;\n this.popoverEl = host.querySelector('[popover]');\n this.triggerEl = host.querySelector('[popovertarget]');\n\n if (!this.popoverEl) return;\n\n this.toggleListener = (e: any) => {\n const open = e.newState === 'open';\n this.isOpen.set(open);\n this.ngOatDropdownChange.emit(open);\n };\n\n this.popoverEl.addEventListener('toggle', this.toggleListener);\n\n this.destroyRef.onDestroy(() => {\n this.popoverEl?.removeEventListener('toggle', this.toggleListener!);\n });\n });\n }\n\n /** Programmatically open the dropdown */\n open(): void {\n this.popoverEl?.showPopover?.();\n }\n\n /** Programmatically close the dropdown */\n close(): void {\n this.popoverEl?.hidePopover?.();\n }\n\n /** Toggle the dropdown */\n toggle(): void {\n this.popoverEl?.togglePopover?.();\n }\n}\n","export type Placement = 'top' | 'bottom' | 'left' | 'right';\n\ninterface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n right: number;\n bottom: number;\n}\n\n/**\n * Minimal positioning utility. Measures anchor rect, places floating element,\n * clamps to viewport so it doesn't overflow.\n *\n * @param anchor The trigger element\n * @param floating The tooltip/dropdown element (must be position: fixed or absolute)\n * @param placement Desired placement relative to anchor\n * @param offset Gap in px between anchor and floating element (default 8)\n */\nexport function positionElement(\n anchor: HTMLElement,\n floating: HTMLElement,\n placement: Placement = 'top',\n offset = 8,\n): void {\n const anchorRect = anchor.getBoundingClientRect();\n const floatingRect = floating.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case 'top':\n top = anchorRect.top - floatingRect.height - offset;\n left = anchorRect.left + (anchorRect.width - floatingRect.width) / 2;\n break;\n case 'bottom':\n top = anchorRect.bottom + offset;\n left = anchorRect.left + (anchorRect.width - floatingRect.width) / 2;\n break;\n case 'left':\n top = anchorRect.top + (anchorRect.height - floatingRect.height) / 2;\n left = anchorRect.left - floatingRect.width - offset;\n break;\n case 'right':\n top = anchorRect.top + (anchorRect.height - floatingRect.height) / 2;\n left = anchorRect.right + offset;\n break;\n }\n\n // Flip if overflowing viewport\n if (placement === 'top' && top < 0) {\n top = anchorRect.bottom + offset;\n } else if (placement === 'bottom' && top + floatingRect.height > vh) {\n top = anchorRect.top - floatingRect.height - offset;\n } else if (placement === 'left' && left < 0) {\n left = anchorRect.right + offset;\n } else if (placement === 'right' && left + floatingRect.width > vw) {\n left = anchorRect.left - floatingRect.width - offset;\n }\n\n // Clamp to viewport edges\n top = Math.max(4, Math.min(top, vh - floatingRect.height - 4));\n left = Math.max(4, Math.min(left, vw - floatingRect.width - 4));\n\n floating.style.position = 'fixed';\n floating.style.top = `${top}px`;\n floating.style.left = `${left}px`;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Placement, positionElement } from './positioning';\n\n/**\n * Abstraction for tooltip positioning. The default implementation uses the\n * built-in positionElement utility. The ng-oat/cdk entrypoint provides an\n * alternative CDK Overlay-based implementation via provideCdkTooltipPositioner().\n */\nexport interface TooltipPositioner {\n position(anchor: HTMLElement, floating: HTMLElement, placement: Placement, offset?: number): void;\n destroy?(): void;\n}\n\n/** Default built-in positioner (zero external deps) */\nexport class DefaultTooltipPositioner implements TooltipPositioner {\n position(anchor: HTMLElement, floating: HTMLElement, placement: Placement, offset = 8): void {\n positionElement(anchor, floating, placement, offset);\n }\n}\n\n/** DI token for tooltip positioning strategy */\nexport const TOOLTIP_POSITIONER = new InjectionToken<TooltipPositioner>('TOOLTIP_POSITIONER', {\n providedIn: 'root',\n factory: () => new DefaultTooltipPositioner(),\n});\n","/** Keyboard key constants for a11y handlers */\nexport const KEYS = {\n ESCAPE: 'Escape',\n ARROW_UP: 'ArrowUp',\n ARROW_DOWN: 'ArrowDown',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n HOME: 'Home',\n END: 'End',\n ENTER: 'Enter',\n SPACE: ' ',\n TAB: 'Tab',\n} as const;\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n DestroyRef,\n afterNextRender,\n Renderer2,\n PLATFORM_ID,\n TemplateRef,\n ViewContainerRef,\n EmbeddedViewRef,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { TOOLTIP_POSITIONER } from '../util/tooltip-positioner';\nimport { Placement } from '../util/positioning';\nimport { KEYS } from '../util/keyboard';\n\nlet tooltipIdCounter = 0;\n\n/**\n * Tooltip directive that integrates with Oat's CSS tooltip system.\n *\n * For **string** content the directive sets `data-tooltip` and\n * `data-tooltip-pos` attributes at init time and relies entirely on\n * Oat CSS `:hover / :focus-visible` pseudo-classes to show / hide the\n * tooltip — zero JavaScript at runtime.\n *\n * For **TemplateRef** content a floating `<div>` is created on\n * mouseenter / focusin and positioned via the positioning strategy.\n *\n * Usage:\n * ```html\n * <!-- String (pure CSS) -->\n * <button ngOatTooltip=\"Save changes\">💾</button>\n *\n * <!-- Position variants -->\n * <button ngOatTooltip=\"Below\" ngOatTooltipPosition=\"bottom\">Hover</button>\n *\n * <!-- Template ref -->\n * <button [ngOatTooltip]=\"tipTpl\">Info</button>\n * <ng-template #tipTpl><strong>Rich</strong> tooltip</ng-template>\n * ```\n */\n@Directive({\n selector: '[ngOatTooltip]',\n exportAs: 'ngOatTooltip',\n})\nexport class NgOatTooltip {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n private doc = inject(DOCUMENT);\n private vcr = inject(ViewContainerRef);\n private positioner = inject(TOOLTIP_POSITIONER);\n\n /** Tooltip content — string or TemplateRef */\n readonly ngOatTooltip = input.required<string | TemplateRef<any>>();\n\n /** Placement relative to anchor */\n readonly ngOatTooltipPosition = input<Placement>('top');\n\n /** Show delay in ms (only used for TemplateRef tooltips; string tooltips use CSS transition-delay) */\n readonly ngOatTooltipDelay = input(700);\n\n /** Disable the tooltip */\n readonly ngOatTooltipDisabled = input(false);\n\n /** Whether tooltip is currently visible */\n readonly isVisible = signal(false);\n\n private tooltipEl: HTMLElement | null = null;\n private embeddedView: EmbeddedViewRef<any> | null = null;\n private showTimeout: any;\n private rafId: number | null = null;\n private tooltipId = '';\n private cleanupFns: (() => void)[] = [];\n private initialized = false;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.el.nativeElement;\n this.tooltipId = `ng-oat-tooltip-${++tooltipIdCounter}`;\n this.initialized = true;\n\n // Immediately sync string tooltip attrs so CSS :hover works\n this.syncStringAttrs();\n\n // TemplateRef tooltips need JS show/hide listeners\n if (this.ngOatTooltip() instanceof TemplateRef) {\n this.listen(host, 'mouseenter', () => this.scheduleShow());\n this.listen(host, 'focusin', () => this.scheduleShow());\n this.listen(host, 'mouseleave', () => this.hide());\n this.listen(host, 'focusout', () => this.hide());\n this.listen(host, 'keydown', (e: KeyboardEvent) => {\n if (e.key === KEYS.ESCAPE) this.hide();\n });\n }\n\n this.destroyRef.onDestroy(() => this.destroy());\n });\n\n // Reactive effect — keeps string-tooltip attrs in sync when inputs change\n effect(() => {\n // Read all relevant inputs so Angular tracks them\n this.ngOatTooltip();\n this.ngOatTooltipPosition();\n this.ngOatTooltipDisabled();\n\n if (this.initialized) {\n this.syncStringAttrs();\n }\n });\n }\n\n // ── String-tooltip helpers (pure CSS) ──────────────────────────\n\n /**\n * Set / remove `data-tooltip` and `data-tooltip-pos` attributes.\n * Oat CSS + our extension CSS handle visibility entirely via\n * `:hover` / `:focus-visible`.\n */\n private syncStringAttrs(): void {\n const host = this.el.nativeElement;\n const content = this.ngOatTooltip();\n const disabled = this.ngOatTooltipDisabled();\n\n if (typeof content !== 'string') return;\n\n if (disabled) {\n this.renderer.removeAttribute(host, 'data-tooltip');\n this.renderer.removeAttribute(host, 'data-tooltip-pos');\n this.renderer.removeAttribute(host, 'aria-label');\n return;\n }\n\n this.renderer.setAttribute(host, 'data-tooltip', content);\n this.renderer.setAttribute(host, 'data-tooltip-pos', this.ngOatTooltipPosition());\n if (!host.hasAttribute('aria-label')) {\n this.renderer.setAttribute(host, 'aria-label', content);\n }\n }\n\n // ── Public API ─────────────────────────────────────────────────\n\n /** Programmatically show the tooltip */\n show(): void {\n if (this.ngOatTooltipDisabled() || this.isVisible()) return;\n\n const content = this.ngOatTooltip();\n const host = this.el.nativeElement;\n\n if (typeof content === 'string') {\n // CSS handles everything — nothing to do\n this.isVisible.set(true);\n return;\n }\n\n // TemplateRef path: create floating element\n this.tooltipEl = this.renderer.createElement('div');\n this.renderer.addClass(this.tooltipEl, 'ng-oat-tooltip');\n this.renderer.setAttribute(this.tooltipEl, 'role', 'tooltip');\n this.renderer.setAttribute(this.tooltipEl, 'id', this.tooltipId);\n this.renderer.setStyle(this.tooltipEl, 'position', 'fixed');\n this.renderer.setStyle(this.tooltipEl, 'z-index', '9999');\n this.renderer.setStyle(this.tooltipEl, 'pointer-events', 'none');\n\n // Render template\n this.embeddedView = this.vcr.createEmbeddedView(content);\n this.embeddedView.rootNodes.forEach((node: Node) => {\n this.renderer.appendChild(this.tooltipEl, node);\n });\n\n this.renderer.appendChild(this.doc.body, this.tooltipEl);\n this.renderer.setAttribute(host, 'aria-describedby', this.tooltipId);\n\n // Position after layout\n requestAnimationFrame(() => {\n if (this.tooltipEl) {\n this.positioner.position(host, this.tooltipEl, this.ngOatTooltipPosition());\n this.startRepositioning(host);\n }\n });\n\n this.isVisible.set(true);\n }\n\n /** Programmatically hide the tooltip */\n hide(): void {\n clearTimeout(this.showTimeout);\n this.stopRepositioning();\n\n const content = this.ngOatTooltip();\n\n if (typeof content === 'string') {\n this.isVisible.set(false);\n return;\n }\n\n // Clean up floating element\n if (this.tooltipEl) {\n this.renderer.removeChild(this.doc.body, this.tooltipEl);\n this.tooltipEl = null;\n }\n if (this.embeddedView) {\n this.embeddedView.destroy();\n this.embeddedView = null;\n }\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-describedby');\n this.isVisible.set(false);\n }\n\n // ── Internal helpers ───────────────────────────────────────────\n\n private scheduleShow(): void {\n if (this.ngOatTooltipDisabled()) return;\n clearTimeout(this.showTimeout);\n const delay = this.ngOatTooltipDelay();\n if (delay > 0) {\n this.showTimeout = setTimeout(() => this.show(), delay);\n } else {\n this.show();\n }\n }\n\n private startRepositioning(host: HTMLElement): void {\n const reposition = () => {\n if (this.tooltipEl) {\n this.positioner.position(host, this.tooltipEl, this.ngOatTooltipPosition());\n }\n this.rafId = requestAnimationFrame(reposition);\n };\n this.rafId = requestAnimationFrame(reposition);\n }\n\n private stopRepositioning(): void {\n if (this.rafId != null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n }\n\n private listen<K extends keyof HTMLElementEventMap>(\n el: HTMLElement,\n event: K,\n handler: (e: HTMLElementEventMap[K]) => void,\n ): void {\n el.addEventListener(event, handler as EventListener);\n this.cleanupFns.push(() => el.removeEventListener(event, handler as EventListener));\n }\n\n private destroy(): void {\n clearTimeout(this.showTimeout);\n this.stopRepositioning();\n this.cleanupFns.forEach(fn => fn());\n this.cleanupFns = [];\n\n // Clean up string tooltip attributes\n const host = this.el.nativeElement;\n this.renderer.removeAttribute(host, 'data-tooltip');\n this.renderer.removeAttribute(host, 'data-tooltip-pos');\n\n if (this.tooltipEl) {\n this.tooltipEl.remove();\n this.tooltipEl = null;\n }\n if (this.embeddedView) {\n this.embeddedView.destroy();\n this.embeddedView = null;\n }\n this.positioner.destroy?.();\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n Renderer2,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { KEYS } from '../util/keyboard';\n\nconst MOBILE_BREAKPOINT = 768;\n\n/**\n * Sidebar directive for Oat's data-sidebar-layout system.\n *\n * Place on the element that has `data-sidebar-layout`.\n * Provides programmatic open/close/toggle + ESC handling + scroll lock on mobile.\n *\n * Usage:\n * ```html\n * <body data-sidebar-layout ngOatSidebar #sb=\"ngOatSidebar\">\n * <aside data-sidebar>…</aside>\n * <main>\n * <button (click)=\"sb.toggle()\">☰</button>\n * </main>\n * </body>\n * ```\n */\n@Directive({\n selector: '[ngOatSidebar]',\n exportAs: 'ngOatSidebar',\n})\nexport class NgOatSidebar {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n private doc = inject(DOCUMENT);\n\n /** Whether scroll lock is applied on mobile when sidebar is open */\n readonly ngOatSidebarScrollLock = input(true);\n\n /** Reactive open state */\n readonly isOpen = signal(false);\n\n /** Emits when sidebar opens or closes */\n readonly ngOatSidebarChange = output<boolean>();\n\n private cleanupFns: (() => void)[] = [];\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.el.nativeElement;\n\n // Sync initial state from DOM attribute\n this.isOpen.set(host.hasAttribute('data-sidebar-open'));\n\n // ESC to close on mobile\n this.listen(this.doc as any, 'keydown', (e: KeyboardEvent) => {\n if (e.key === KEYS.ESCAPE && this.isOpen() && this.isMobile()) {\n this.close();\n }\n });\n\n // Outside click to close on mobile\n this.listen(this.doc as any, 'click', (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (\n this.isOpen() &&\n this.isMobile() &&\n !target.closest('[data-sidebar]') &&\n !target.closest('[data-sidebar-toggle]')\n ) {\n this.close();\n }\n });\n\n // Listen for toggle clicks within our layout (in case oat.js isn't loaded)\n this.listen(host, 'click', (e: MouseEvent) => {\n const toggle = (e.target as HTMLElement).closest('[data-sidebar-toggle]');\n if (toggle) {\n this.toggle();\n e.stopPropagation();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n this.cleanupFns.forEach(fn => fn());\n this.cleanupFns = [];\n this.restoreScroll();\n });\n });\n }\n\n /** Open the sidebar */\n open(): void {\n const host = this.el.nativeElement;\n this.renderer.setAttribute(host, 'data-sidebar-open', '');\n this.isOpen.set(true);\n this.ngOatSidebarChange.emit(true);\n if (this.ngOatSidebarScrollLock() && this.isMobile()) {\n this.lockScroll();\n }\n }\n\n /** Close the sidebar */\n close(): void {\n const host = this.el.nativeElement;\n this.renderer.removeAttribute(host, 'data-sidebar-open');\n this.isOpen.set(false);\n this.ngOatSidebarChange.emit(false);\n this.restoreScroll();\n }\n\n /** Toggle the sidebar */\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private isMobile(): boolean {\n return typeof window !== 'undefined' && typeof window.matchMedia === 'function'\n && window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT}px)`).matches;\n }\n\n private lockScroll(): void {\n this.renderer.setStyle(this.doc.body, 'overflow', 'hidden');\n }\n\n private restoreScroll(): void {\n this.renderer.removeStyle(this.doc.body, 'overflow');\n }\n\n private listen<K extends keyof HTMLElementEventMap>(\n el: HTMLElement,\n event: K,\n handler: (e: HTMLElementEventMap[K]) => void,\n ): void {\n el.addEventListener(event, handler as EventListener);\n this.cleanupFns.push(() => el.removeEventListener(event, handler as EventListener));\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Angular integration for Oat's <ot-tabs> WebComponent.\n *\n * Oat's WC handles all ARIA, keyboard nav, and panel toggling.\n * This directive provides Angular-friendly signals and event binding.\n *\n * Usage:\n * ```html\n * <ot-tabs ngOatTabs #t=\"ngOatTabs\" (ngOatTabChange)=\"onTab($event)\">\n * <div role=\"tablist\">\n * <button role=\"tab\">Tab 1</button>\n * <button role=\"tab\">Tab 2</button>\n * </div>\n * <div role=\"tabpanel\">Content 1</div>\n * <div role=\"tabpanel\">Content 2</div>\n * </ot-tabs>\n *\n * <p>Active: {{ t.activeIndex() }}</p>\n * <button (click)=\"t.selectTab(1)\">Go to Tab 2</button>\n * ```\n */\n@Directive({\n selector: 'ot-tabs[ngOatTabs], [ngOatTabs]',\n exportAs: 'ngOatTabs',\n})\nexport class NgOatTabs {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n\n /** Currently active tab index */\n readonly activeIndex = signal(0);\n\n /** Emits on tab change with { index, tab } */\n readonly ngOatTabChange = output<{ index: number; tab: HTMLElement }>();\n\n private tabChangeListener: ((e: Event) => void) | null = null;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.el.nativeElement as any;\n\n // Listen for ot-tab-change custom event emitted by the WebComponent\n this.tabChangeListener = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n if (detail) {\n this.activeIndex.set(detail.index);\n this.ngOatTabChange.emit({ index: detail.index, tab: detail.tab });\n }\n };\n\n host.addEventListener('ot-tab-change', this.tabChangeListener);\n\n // Sync initial active index\n if (typeof host.activeIndex === 'number') {\n this.activeIndex.set(host.activeIndex);\n }\n\n this.destroyRef.onDestroy(() => {\n host.removeEventListener('ot-tab-change', this.tabChangeListener!);\n });\n });\n }\n\n /** Programmatically select a tab by index */\n selectTab(index: number): void {\n const host = this.el.nativeElement as any;\n if (typeof host.activeIndex === 'number') {\n host.activeIndex = index;\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n Renderer2,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Dialog directive for Oat's native <dialog> styling.\n *\n * Oat styles `<dialog>` with animations/backdrop via CSS.\n * Chrome/Firefox support `commandfor` natively; Safari has a polyfill in oat base.js.\n * This directive adds Angular-friendly programmatic control and focus management.\n *\n * Usage:\n * ```html\n * <button (click)=\"dlg.showModal()\">Open</button>\n *\n * <dialog ngOatDialog #dlg=\"ngOatDialog\" (ngOatDialogClose)=\"onClose($event)\">\n * <form method=\"dialog\">\n * <header><h3>Title</h3></header>\n * <div>Body content</div>\n * <footer>\n * <button value=\"cancel\" class=\"outline\">Cancel</button>\n * <button value=\"confirm\">OK</button>\n * </footer>\n * </form>\n * </dialog>\n * ```\n */\n@Directive({\n selector: 'dialog[ngOatDialog]',\n exportAs: 'ngOatDialog',\n})\nexport class NgOatDialog {\n private el = inject<ElementRef<HTMLDialogElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n\n /** Whether the dialog is currently open */\n readonly isOpen = signal(false);\n\n /** Emits the dialog return value when closed */\n readonly ngOatDialogClose = output<string>();\n\n private triggerElement: HTMLElement | null = null;\n private closeListener: (() => void) | null = null;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const dialog = this.el.nativeElement;\n\n // Listen for the native close event\n this.closeListener = () => {\n this.isOpen.set(false);\n this.ngOatDialogClose.emit(dialog.returnValue ?? '');\n\n // Return focus to the element that opened the dialog\n if (this.triggerElement) {\n this.triggerElement.focus();\n this.triggerElement = null;\n }\n };\n\n dialog.addEventListener('close', this.closeListener);\n\n this.destroyRef.onDestroy(() => {\n dialog.removeEventListener('close', this.closeListener!);\n });\n });\n }\n\n /** Open as modal dialog. Captures the currently focused element for focus return. */\n showModal(): void {\n const dialog = this.el.nativeElement;\n if (dialog.open) return;\n\n // Remember the trigger for focus return\n if (typeof document !== 'undefined') {\n this.triggerElement = document.activeElement as HTMLElement;\n }\n\n dialog.showModal();\n this.isOpen.set(true);\n\n // Focus first focusable element inside dialog\n requestAnimationFrame(() => {\n const focusable = dialog.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n focusable?.focus();\n });\n }\n\n /** Open as non-modal dialog */\n show(): void {\n const dialog = this.el.nativeElement;\n if (dialog.open) return;\n\n if (typeof document !== 'undefined') {\n this.triggerElement = document.activeElement as HTMLElement;\n }\n\n dialog.show();\n this.isOpen.set(true);\n }\n\n /** Close the dialog with an optional return value */\n close(returnValue?: string): void {\n const dialog = this.el.nativeElement;\n if (!dialog.open) return;\n dialog.close(returnValue);\n // The close event handler updates isOpen and emits\n }\n}\n","import {\n inject,\n Injectable,\n PLATFORM_ID,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\n\n/** Toast placement positions (matches Oat's toast system) */\nexport type NgOatToastPlacement =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n/** Toast variants (matches Oat's toast system) */\nexport type NgOatToastVariant = 'info' | 'success' | 'danger' | 'warning';\n\n/** Options for showing a toast */\nexport interface NgOatToastOptions {\n /** Visual variant. Default: 'info' */\n variant?: NgOatToastVariant;\n /** Screen position. Default: 'top-right' */\n placement?: NgOatToastPlacement;\n /** Auto-dismiss duration in ms. 0 = persistent. Default: 4000 */\n duration?: number;\n /** Show a close/dismiss button on the toast. Default: false */\n dismissible?: boolean;\n}\n\n/** The window.ot global API shape (from Oat's IIFE bundle) */\ninterface OtGlobal {\n toast: ((message: string, title?: string, options?: any) => HTMLElement) & {\n el: (element: HTMLElement, options?: any) => HTMLElement;\n clear: (placement?: string) => void;\n };\n}\n\n/**\n * Angular service wrapping Oat's toast notification system.\n *\n * Delegates to `window.ot.toast()` (provided by oat.min.js).\n * Falls back to a no-op if Oat JS is not loaded.\n *\n * Usage:\n * ```ts\n * const toast = inject(NgOatToast);\n * toast.success('Saved!');\n * toast.error('Something went wrong', 'Error');\n * toast.show('Custom message', 'Title', { variant: 'warning', placement: 'bottom-center' });\n * toast.dismiss(); // clear all\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class NgOatToast {\n private platformId = inject(PLATFORM_ID);\n private doc = inject(DOCUMENT);\n\n private get ot(): OtGlobal | null {\n if (!isPlatformBrowser(this.platformId)) return null;\n return (this.doc.defaultView as any)?.ot ?? null;\n }\n\n success(message: string, title?: string, options?: Omit<NgOatToastOptions, 'variant'>): void {\n this.show(message, title, { ...options, variant: 'success' });\n }\n\n info(message: string, title?: string, options?: Omit<NgOatToastOptions, 'variant'>): void {\n this.show(message, title, { ...options, variant: 'info' });\n }\n\n warning(message: string, title?: string, options?: Omit<NgOatToastOptions, 'variant'>): void {\n this.show(message, title, { ...options, variant: 'warning' });\n }\n\n error(message: string, title?: string, options?: Omit<NgOatToastOptions, 'variant'>): void {\n this.show(message, title, { ...options, variant: 'danger' });\n }\n\n show(message: string, title?: string, options: NgOatToastOptions = {}): HTMLElement | void {\n const ot = this.ot;\n if (!ot?.toast) {\n console.warn('ng-oat: Oat JS not loaded. Toast not shown. Ensure oat.min.js is loaded via provideNgOat() or angular.json scripts.');\n return;\n }\n const { dismissible, ...rest } = options;\n const el = ot.toast(message, title, rest);\n if (dismissible && el) {\n this.addCloseButton(el);\n }\n return el;\n }\n\n /**\n * Show a toast from a DOM element or template element.\n * For Angular TemplateRef, use showTemplate() instead.\n */\n showElement(element: HTMLElement, options: NgOatToastOptions = {}): void {\n const ot = this.ot;\n if (!ot?.toast?.el) return;\n ot.toast.el(element, options);\n }\n\n /**\n * Show a toast from an Angular TemplateRef.\n * Requires a ViewContainerRef to render the template.\n */\n showTemplate(\n templateRef: TemplateRef<any>,\n vcr: ViewContainerRef,\n options: NgOatToastOptions = {},\n ): void {\n const ot = this.ot;\n if (!ot?.toast?.el) return;\n\n const view = vcr.createEmbeddedView(templateRef);\n view.detectChanges();\n\n // Wrap template nodes in a container\n const container = this.doc.createElement('div');\n view.rootNodes.forEach((node: Node) => container.appendChild(node));\n\n ot.toast.el(container, options);\n\n // Clean up the view after the toast duration\n const duration = options.duration ?? 4000;\n if (duration > 0) {\n setTimeout(() => view.destroy(), duration + 500);\n }\n }\n\n /** Dismiss toasts. If placement given, only that position; otherwise all. */\n dismiss(placement?: NgOatToastPlacement): void {\n this.ot?.toast?.clear(placement);\n }\n\n /** Add a close button to a toast element */\n private addCloseButton(el: HTMLElement): void {\n const btn = this.doc.createElement('button');\n btn.setAttribute('data-close', '');\n btn.setAttribute('aria-label', 'Dismiss');\n btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/></svg>';\n btn.style.cssText = 'position:absolute;top:0.5rem;right:0.5rem;background:none;border:none;cursor:pointer;color:var(--foreground);opacity:0.6;padding:0.25rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;';\n btn.addEventListener('mouseenter', () => { btn.style.opacity = '1'; });\n btn.addEventListener('mouseleave', () => { btn.style.opacity = '0.6'; });\n btn.addEventListener('click', () => {\n el.setAttribute('data-exiting', '');\n const cleanup = () => el.remove();\n el.addEventListener('transitionend', cleanup, { once: true });\n setTimeout(cleanup, 350);\n });\n el.style.position = 'relative';\n el.style.paddingRight = '2rem';\n el.appendChild(btn);\n }\n}\n","import { Component, input, computed } from '@angular/core';\n\nexport type NgOatBadgeVariant = 'default' | 'secondary' | 'outline' | 'danger' | 'success';\n\n/**\n * Angular wrapper for Oat CSS badge.\n *\n * Usage:\n * ```html\n * <ng-oat-badge>Default</ng-oat-badge>\n * <ng-oat-badge variant=\"success\">Active</ng-oat-badge>\n * ```\n */\n@Component({\n selector: 'ng-oat-badge',\n host: {\n '[class]': 'hostClass()',\n },\n template: `<ng-content />`,\n})\nexport class NgOatBadge {\n /** Badge variant */\n readonly variant = input<NgOatBadgeVariant>('default');\n\n protected hostClass = computed(() => {\n const v = this.variant();\n return v === 'default' ? 'badge' : `badge ${v}`;\n });\n}\n","import { Component, input, output, computed } from '@angular/core';\n\nexport type NgOatAlertVariant = 'default' | 'success' | 'danger' | 'warning';\n\n/**\n * Angular wrapper for Oat CSS alert.\n *\n * Usage:\n * ```html\n * <ng-oat-alert>Default message</ng-oat-alert>\n * <ng-oat-alert variant=\"success\">Saved!</ng-oat-alert>\n * <ng-oat-alert variant=\"danger\" [dismissible]=\"true\" (dismissed)=\"onDismiss()\">Error!</ng-oat-alert>\n * ```\n */\n@Component({\n selector: 'ng-oat-alert',\n host: {\n role: 'alert',\n '[attr.data-variant]': 'attrVariant()',\n },\n template: `\n <ng-content />\n @if (dismissible()) {\n <button class=\"ghost small dismiss-btn\" aria-label=\"Dismiss\" (click)=\"dismiss()\">✕</button>\n }\n `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n }\n :host ng-content { flex: 1; }\n .dismiss-btn {\n margin-inline-start: auto;\n padding: var(--space-1);\n font-size: var(--text-7);\n }\n `,\n})\nexport class NgOatAlert {\n readonly variant = input<NgOatAlertVariant>('default');\n readonly dismissible = input(false);\n readonly dismissed = output<void>();\n\n protected attrVariant = computed(() => {\n const v = this.variant();\n return v === 'default' ? null : v;\n });\n\n dismiss() {\n this.dismissed.emit();\n }\n}\n","import { Component, input, computed, output } from '@angular/core';\n\nexport type NgOatButtonVariant = 'default' | 'secondary' | 'danger';\nexport type NgOatButtonStyle = 'filled' | 'outline' | 'ghost';\nexport type NgOatButtonSize = 'default' | 'small' | 'large';\n\n/**\n * Angular wrapper for Oat CSS button.\n *\n * Uses `data-variant` for color variants and CSS classes for style/size.\n *\n * Usage:\n * ```html\n * <ng-oat-button>Click me</ng-oat-button>\n * <ng-oat-button variant=\"danger\" btnStyle=\"outline\">Delete</ng-oat-button>\n * <ng-oat-button size=\"small\" icon>✕</ng-oat-button>\n * ```\n */\n@Component({\n selector: 'ng-oat-button',\n host: {\n style: 'display: contents',\n },\n template: `\n <button\n [type]=\"type()\"\n [class]=\"btnClass()\"\n [disabled]=\"disabled()\"\n [attr.data-variant]=\"attrVariant()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n (click)=\"clicked.emit($event)\">\n <ng-content />\n </button>\n `,\n})\nexport class NgOatButton {\n readonly variant = input<NgOatButtonVariant>('default');\n readonly btnStyle = input<NgOatButtonStyle>('filled');\n readonly size = input<NgOatButtonSize>('default');\n readonly icon = input(false);\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly disabled = input(false);\n readonly ariaLabel = input<string>('');\n\n readonly clicked = output<MouseEvent>();\n\n protected attrVariant = computed(() => {\n const v = this.variant();\n return v === 'default' ? null : v;\n });\n\n protected btnClass = computed(() => {\n const classes: string[] = [];\n const style = this.btnStyle();\n if (style !== 'filled') classes.push(style);\n const size = this.size();\n if (size !== 'default') classes.push(size);\n if (this.icon()) classes.push('icon');\n return classes.join(' ');\n });\n}\n","import {\n Component,\n input,\n computed,\n output,\n signal,\n inject,\n ElementRef,\n DestroyRef,\n afterNextRender,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport type { NgOatButtonVariant, NgOatButtonStyle, NgOatButtonSize } from './button';\n\n/**\n * Split button: a primary action button paired with a dropdown toggle\n * that reveals additional menu items.\n *\n * Uses Oat's `menu.buttons` for the grouped visual style and\n * popover-based dropdown for the menu.\n *\n * Usage:\n * ```html\n * <ng-oat-split-button label=\"Save\" (clicked)=\"save()\">\n * <button role=\"menuitem\" (click)=\"saveAsDraft()\">Save as Draft</button>\n * <button role=\"menuitem\" (click)=\"saveAndClose()\">Save &amp; Close</button>\n * </ng-oat-split-button>\n * ```\n */\n@Component({\n selector: 'ng-oat-split-button',\n host: { style: 'display: inline-block' },\n template: `\n <div class=\"split-group\">\n <button\n class=\"split-main\"\n [attr.data-variant]=\"attrVariant()\"\n [class]=\"mainBtnClass()\"\n [disabled]=\"disabled()\"\n (click)=\"clicked.emit($event)\">\n {{ label() }}\n </button><button\n class=\"split-toggle\"\n [attr.data-variant]=\"attrVariant()\"\n [class]=\"arrowBtnClass()\"\n [disabled]=\"disabled()\"\n [attr.popovertarget]=\"menuId()\"\n aria-haspopup=\"true\"\n [attr.aria-expanded]=\"isOpen() ? 'true' : 'false'\"\n aria-label=\"More options\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"/></svg>\n </button>\n </div>\n <menu popover [id]=\"menuId()\" class=\"split-menu\">\n <ng-content />\n </menu>\n `,\n styles: `\n :host {\n position: relative;\n }\n .split-group {\n display: inline-flex;\n align-items: stretch;\n }\n .split-group > button {\n border-radius: 0;\n }\n .split-main {\n border-start-start-radius: var(--radius-medium) !important;\n border-end-start-radius: var(--radius-medium) !important;\n border-inline-end: 1px solid rgb(from var(--primary-foreground) r g b / 0.2) !important;\n }\n /* For outline/ghost, use a subtler separator */\n .split-main:is(.outline, .ghost) {\n border-inline-end: 1px solid var(--border) !important;\n }\n .split-toggle {\n border-start-end-radius: var(--radius-medium) !important;\n border-end-end-radius: var(--radius-medium) !important;\n padding-inline: var(--space-2) !important;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .split-toggle svg {\n pointer-events: none;\n }\n .split-menu {\n position: fixed;\n margin: 0;\n min-width: 10rem;\n padding: var(--space-1);\n background-color: var(--background);\n border: 1px solid var(--border);\n border-radius: var(--radius-medium);\n box-shadow: var(--shadow-medium);\n opacity: 0;\n transform: translateY(-4px);\n transition:\n opacity 150ms ease-out,\n transform 150ms ease-out,\n display 150ms allow-discrete,\n overlay 150ms allow-discrete;\n }\n .split-menu:popover-open {\n opacity: 1;\n transform: translateY(0);\n }\n /* Replicate Oat's dropdown menuitem styling (scoped to ot-dropdown in Oat CSS) */\n .split-menu::ng-deep [role=\"menuitem\"] {\n display: flex;\n align-items: center;\n justify-content: start;\n gap: var(--space-2);\n width: 100%;\n padding: var(--space-2) var(--space-3);\n font-size: var(--text-7);\n text-align: start;\n color: var(--foreground);\n background: none;\n border: none;\n border-radius: var(--radius-small);\n cursor: pointer;\n }\n .split-menu::ng-deep [role=\"menuitem\"]:hover,\n .split-menu::ng-deep [role=\"menuitem\"]:focus {\n background-color: var(--accent);\n outline: none;\n }\n `,\n})\nexport class NgOatSplitButton {\n private static nextId = 0;\n\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n private elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly label = input.required<string>();\n readonly variant = input<NgOatButtonVariant>('default');\n readonly btnStyle = input<NgOatButtonStyle>('filled');\n readonly size = input<NgOatButtonSize>('default');\n readonly disabled = input(false);\n\n\n readonly clicked = output<MouseEvent>();\n\n /** Unique popover id */\n readonly menuId = signal(`ng-oat-split-${++NgOatSplitButton.nextId}`);\n readonly isOpen = signal(false);\n\n protected attrVariant = computed(() => {\n const v = this.variant();\n return v === 'default' ? null : v;\n });\n\n protected mainBtnClass = computed(() => {\n const classes: string[] = [];\n const style = this.btnStyle();\n if (style !== 'filled') classes.push(style);\n const size = this.size();\n if (size !== 'default') classes.push(size);\n return classes.join(' ');\n });\n\n protected arrowBtnClass = computed(() => {\n const classes: string[] = [];\n const style = this.btnStyle();\n if (style !== 'filled') classes.push(style);\n const size = this.size();\n if (size !== 'default') classes.push(size);\n return classes.join(' ');\n });\n\n private popoverEl: HTMLElement | null = null;\n private arrowEl: HTMLElement | null = null;\n private positionFn: (() => void) | null = null;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.elRef.nativeElement;\n this.popoverEl = host.querySelector('[popover]');\n this.arrowEl = host.querySelector('[popovertarget]') as HTMLElement | null;\n\n if (!this.popoverEl || !this.arrowEl) return;\n\n this.positionFn = () => {\n if (!this.arrowEl || !this.popoverEl) return;\n const group = host.querySelector('.split-group') as HTMLElement;\n const r = (group ?? this.arrowEl).getBoundingClientRect();\n const m = this.popoverEl.getBoundingClientRect();\n this.popoverEl.style.top = `${\n r.bottom + m.height > window.innerHeight ? r.top - m.height : r.bottom\n }px`;\n this.popoverEl.style.left = `${\n r.left + m.width > window.innerWidth ? r.right - m.width : r.left\n }px`;\n };\n\n const onToggle = (e: any) => {\n const open = e.newState === 'open';\n this.isOpen.set(open);\n\n if (open) {\n // Defer positioning to next frame so popover is laid out and\n // getBoundingClientRect() returns real dimensions.\n requestAnimationFrame(() => {\n this.positionFn!();\n });\n window.addEventListener('scroll', this.positionFn!, true);\n window.addEventListener('resize', this.positionFn!);\n requestAnimationFrame(() => {\n const items = this.popoverEl!.querySelectorAll<HTMLElement>('[role=\"menuitem\"]');\n items[0]?.focus();\n });\n } else {\n window.removeEventListener('scroll', this.positionFn!, true);\n window.removeEventListener('resize', this.positionFn!);\n this.arrowEl?.focus();\n }\n };\n\n this.popoverEl.addEventListener('toggle', onToggle);\n this.destroyRef.onDestroy(() => {\n this.popoverEl?.removeEventListener('toggle', onToggle);\n window.removeEventListener('scroll', this.positionFn!, true);\n window.removeEventListener('resize', this.positionFn!);\n });\n });\n }\n\n /** Programmatically open the dropdown menu */\n open(): void {\n this.popoverEl?.showPopover?.();\n }\n\n /** Programmatically close the dropdown menu */\n close(): void {\n this.popoverEl?.hidePopover?.();\n }\n}\n","import { Component, input, output } from '@angular/core';\n\nexport interface OatBreadcrumbItem {\n label: string;\n url?: string;\n}\n\n/**\n * Angular wrapper for Oat CSS breadcrumb navigation.\n *\n * Usage:\n * ```html\n * <ng-oat-breadcrumb\n * [items]=\"[{label:'Home', url:'/'}, {label:'Products', url:'/products'}, {label:'Detail'}]\"\n * (navigate)=\"router.navigate([$event.url])\">\n * </ng-oat-breadcrumb>\n * ```\n */\n@Component({\n selector: 'ng-oat-breadcrumb',\n host: {\n 'aria-label': 'Breadcrumb',\n },\n template: `\n <ol class=\"unstyled hstack\">\n @for (item of items(); track item.label; let last = $last) {\n @if (!last) {\n <li>\n <a href=\"javascript:void(0)\" class=\"unstyled\" (click)=\"onNavigate(item, $event)\">{{ item.label }}</a>\n </li>\n <li aria-hidden=\"true\">/</li>\n } @else {\n <li>\n <a href=\"javascript:void(0)\" class=\"unstyled\" aria-current=\"page\" (click)=\"onNavigate(item, $event)\">\n <strong>{{ item.label }}</strong>\n </a>\n </li>\n }\n }\n </ol>\n `,\n})\nexport class NgOatBreadcrumb {\n readonly items = input.required<OatBreadcrumbItem[]>();\n readonly navigate = output<OatBreadcrumbItem>();\n\n onNavigate(item: OatBreadcrumbItem, event: Event) {\n event.preventDefault();\n this.navigate.emit(item);\n }\n}\n","import { Component, input, output, computed } from '@angular/core';\n/**\n * Angular wrapper for Oat CSS pagination.\n *\n * Usage:\n * ```html\n * <ng-oat-pagination [totalPages]=\"10\" [currentPage]=\"3\" (pageChange)=\"goToPage($event)\"></ng-oat-pagination>\n * ```\n */\n@Component({\n selector: 'ng-oat-pagination',\n template: `\n <nav aria-label=\"Pagination\">\n <menu class=\"buttons\">\n <li>\n <button class=\"outline small\"\n [disabled]=\"currentPage() <= 1\"\n (click)=\"goTo(currentPage() - 1)\">\n &larr; Previous\n </button>\n </li>\n @for (page of pages(); track $index) {\n @if (page === -1 || page === -2) {\n <li><button class=\"outline small\">&hellip;</button></li>\n } @else {\n <li>\n <button [class]=\"page === currentPage() ? 'small' : 'outline small'\"\n [attr.aria-current]=\"page === currentPage() ? 'page' : null\"\n (click)=\"goTo(page)\">\n {{ page }}\n </button>\n </li>\n }\n }\n <li>\n <button class=\"outline small\"\n [disabled]=\"currentPage() >= totalPages()\"\n (click)=\"goTo(currentPage() + 1)\">\n Next &rarr;\n </button>\n </li>\n </menu>\n </nav>\n `,\n styles: ``,\n})\nexport class NgOatPagination {\n readonly totalPages = input.required<number>();\n readonly currentPage = input(1);\n readonly maxVisible = input(5);\n readonly pageChange = output<number>();\n\n protected pages = computed(() => {\n const total = this.totalPages();\n const current = this.currentPage();\n const max = this.maxVisible();\n\n if (total <= max + 2) {\n // Show all pages when total is small enough\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n const pages: number[] = [];\n const half = Math.floor((max - 2) / 2); // slots for middle pages (excluding first & last)\n\n let start = Math.max(2, current - half);\n let end = Math.min(total - 1, current + half);\n\n // Adjust window to always show `max - 2` middle pages\n if (start <= 2) {\n start = 2;\n end = Math.min(total - 1, start + max - 3);\n }\n if (end >= total - 1) {\n end = total - 1;\n start = Math.max(2, end - max + 3);\n }\n\n pages.push(1);\n if (start > 2) pages.push(-1); // left ellipsis\n for (let i = start; i <= end; i++) pages.push(i);\n if (end < total - 1) pages.push(-2); // right ellipsis (unique sentinel)\n pages.push(total);\n\n return pages;\n });\n\n goTo(page: number) {\n if (page >= 1 && page <= this.totalPages() && page !== this.currentPage()) {\n this.pageChange.emit(page);\n }\n }\n}\n","import { Component, input } from '@angular/core';\n\n/**\n * Angular wrapper for Oat CSS progress bar.\n *\n * Usage:\n * ```html\n * <ng-oat-progress [value]=\"60\" [max]=\"100\"></ng-oat-progress>\n * ```\n */\n@Component({\n selector: 'ng-oat-progress',\n template: `<progress [attr.value]=\"value()\" [attr.max]=\"max()\"></progress>`,\n styles: `\n :host { display: block; }\n progress { width: 100%; }\n `,\n})\nexport class NgOatProgress {\n readonly value = input.required<number>();\n readonly max = input(100);\n}\n","import { Component, input } from '@angular/core';\n\n/**\n * Angular wrapper for Oat CSS meter element.\n *\n * Usage:\n * ```html\n * <ng-oat-meter [value]=\"0.8\" [min]=\"0\" [max]=\"1\" [low]=\"0.3\" [high]=\"0.7\" [optimum]=\"1\"></ng-oat-meter>\n * ```\n */\n@Component({\n selector: 'ng-oat-meter',\n template: `\n <meter [attr.value]=\"value()\"\n [attr.min]=\"min()\"\n [attr.max]=\"max()\"\n [attr.low]=\"low()\"\n [attr.high]=\"high()\"\n [attr.optimum]=\"optimum()\">\n </meter>\n `,\n styles: `\n :host { display: block; }\n meter { width: 100%; }\n `,\n})\nexport class NgOatMeter {\n readonly value = input.required<number>();\n readonly min = input(0);\n readonly max = input(1);\n readonly low = input<number | undefined>(undefined);\n readonly high = input<number | undefined>(undefined);\n readonly optimum = input<number | undefined>(undefined);\n}\n","import { Component, input, computed } from '@angular/core';\n\nexport type NgOatSpinnerSize = 'small' | 'default' | 'large';\n\n/**\n * Angular wrapper for Oat CSS spinner / loading indicator.\n *\n * Usage:\n * ```html\n * <ng-oat-spinner />\n * <ng-oat-spinner size=\"small\" />\n * <ng-oat-spinner size=\"large\" [overlay]=\"true\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-spinner',\n host: {\n 'aria-busy': 'true',\n '[attr.data-spinner]': 'spinnerAttr()',\n },\n template: `<ng-content />`,\n})\nexport class NgOatSpinner {\n readonly size = input<NgOatSpinnerSize>('default');\n readonly overlay = input(false);\n\n protected spinnerAttr = computed(() => {\n const parts: string[] = [];\n const s = this.size();\n if (s !== 'default') parts.push(s);\n if (this.overlay()) parts.push('overlay');\n return parts.length ? parts.join(' ') : null;\n });\n}\n","import { Component, input, model, output } from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\n\n/**\n * Angular wrapper for Oat CSS toggle switch.\n * Implements `FormCheckboxControl` for seamless Signal Forms integration — no CVA needed.\n *\n * **Signal Forms usage:**\n * ```html\n * <ng-oat-switch label=\"Notifications\" [formField]=\"myForm.notifications\" />\n * ```\n *\n * **Standalone usage:**\n * ```html\n * <ng-oat-switch label=\"Alerts\" [(checked)]=\"isOn\" (changed)=\"onToggle($event)\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-switch',\n template: `\n <label>\n <input\n type=\"checkbox\"\n role=\"switch\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n (change)=\"onInputChange($event)\"\n />\n {{ label() }}\n </label>\n `,\n})\nexport class NgOatSwitch implements FormCheckboxControl {\n readonly label = input('');\n readonly checked = model(false);\n readonly disabled = input(false);\n readonly value = undefined;\n\n readonly changed = output<boolean>();\n\n onInputChange(event: Event) {\n const val = (event.target as HTMLInputElement).checked;\n this.checked.set(val);\n this.changed.emit(val);\n }\n}\n","import { Component, input, computed } from '@angular/core';\n\nexport type NgOatSkeletonType = 'line' | 'box';\n\n/**\n * Angular wrapper for Oat CSS skeleton loader.\n *\n * Usage:\n * ```html\n * <ng-oat-skeleton type=\"line\" />\n * <ng-oat-skeleton type=\"box\" />\n * <ng-oat-skeleton type=\"line\" width=\"60%\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-skeleton',\n template: `\n <div role=\"status\" [class]=\"hostClass()\" [style.width]=\"width()\"></div>\n `,\n})\nexport class NgOatSkeleton {\n readonly type = input<NgOatSkeletonType>('line');\n readonly width = input<string | undefined>(undefined);\n protected hostClass = computed(() => `skeleton ${this.type()}`);\n}\n","import { Component, input, output } from '@angular/core';\n\nexport interface NgOatAccordionItem {\n title: string;\n content: string;\n open?: boolean;\n}\n\n/**\n * Angular wrapper for Oat CSS accordion (details/summary).\n *\n * Usage:\n * ```html\n * <ng-oat-accordion [items]=\"faqItems\"></ng-oat-accordion>\n * <ng-oat-accordion [items]=\"groupedItems\" group=\"faq\" (toggled)=\"onToggle($event)\"></ng-oat-accordion>\n * ```\n */\n@Component({\n selector: 'ng-oat-accordion',\n template: `\n @for (item of items(); track item.title) {\n <details [attr.name]=\"group() || null\"\n [open]=\"item.open ?? false\"\n (toggle)=\"onToggle($event, item)\">\n <summary>{{ item.title }}</summary>\n <p>{{ item.content }}</p>\n </details>\n }\n `,\n})\nexport class NgOatAccordion {\n readonly items = input.required<NgOatAccordionItem[]>();\n readonly group = input<string | undefined>(undefined);\n readonly toggled = output<{ item: NgOatAccordionItem; open: boolean }>();\n\n onToggle(event: Event, item: NgOatAccordionItem) {\n const details = event.target as HTMLDetailsElement;\n this.toggled.emit({ item, open: details.open });\n }\n}\n","import { Component } from '@angular/core';\n\n/**\n * Angular wrapper for Oat CSS card using content projection.\n *\n * Usage:\n * ```html\n * <ng-oat-card>\n * <ng-oat-card-header>\n * <h3>Card Title</h3>\n * <p>Card description</p>\n * </ng-oat-card-header>\n * <p>Card body content here.</p>\n * <ng-oat-card-footer>\n * <button class=\"outline\">Cancel</button>\n * <button>Save</button>\n * </ng-oat-card-footer>\n * </ng-oat-card>\n * ```\n */\n@Component({\n selector: 'ng-oat-card',\n host: { class: 'card' },\n template: `<ng-content />`,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class NgOatCard {}\n\n@Component({\n selector: 'ng-oat-card-header',\n host: { role: 'heading' },\n template: `\n <header>\n <ng-content />\n </header>\n `,\n})\nexport class NgOatCardHeader {}\n\n@Component({\n selector: 'ng-oat-card-footer',\n template: `\n <footer class=\"flex gap-2 mt-4\">\n <ng-content />\n </footer>\n `,\n})\nexport class NgOatCardFooter {}\n","import { Component, input, output, computed } from '@angular/core';\n\nexport interface NgOatTableColumn {\n /** Object key to access data */\n key: string;\n /** Column header label */\n label: string;\n /** Optional column width (e.g. '200px', '30%') */\n width?: string;\n}\n\n/**\n * Angular wrapper for Oat CSS data table.\n *\n * Usage:\n * ```html\n * <ng-oat-table\n * [columns]=\"[{key:'name', label:'Name'}, {key:'email', label:'Email'}]\"\n * [data]=\"users\"\n * [striped]=\"true\"\n * (rowClick)=\"onRowClick($event)\">\n * </ng-oat-table>\n * ```\n */\n@Component({\n selector: 'ng-oat-table',\n template: `\n <div class=\"table\">\n <table>\n <thead>\n <tr>\n @for (col of columns(); track col.key) {\n <th [style.width]=\"col.width ?? null\">{{ col.label }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of data(); track $index) {\n <tr [class.clickable]=\"clickable()\"\n (click)=\"onRowClick(row)\">\n @for (col of columns(); track col.key) {\n <td>{{ row[col.key] }}</td>\n }\n </tr>\n }\n @empty {\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"align-center text-light\">\n {{ emptyText() }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n `,\n styles: `\n .clickable { cursor: pointer; }\n .clickable:hover { background: var(--hover); }\n `,\n})\nexport class NgOatTable {\n readonly columns = input.required<NgOatTableColumn[]>();\n readonly data = input.required<Record<string, any>[]>();\n readonly striped = input(false);\n readonly clickable = input(false);\n readonly emptyText = input('No data available.');\n readonly rowClick = output<Record<string, any>>();\n\n onRowClick(row: Record<string, any>) {\n this.rowClick.emit(row);\n }\n}\n","import {\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n inject,\n input,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n PLATFORM_ID,\n contentChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Angular component wrapper for Oat's dropdown.\n *\n * Wraps `<ot-dropdown>` internally with Angular-friendly inputs/outputs.\n * Handles menu positioning (relative to trigger), keyboard navigation,\n * and scroll/resize repositioning internally — the Oat JS `init()` runs\n * before Angular sets `popovertarget`, so we replicate the positioning here.\n *\n * Usage:\n * ```html\n * <ng-oat-dropdown>\n * <button trigger>Open menu ▾</button>\n * <button role=\"menuitem\">Item 1</button>\n * <button role=\"menuitem\">Item 2</button>\n * </ng-oat-dropdown>\n * ```\n */\n@Component({\n selector: 'ng-oat-dropdown',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: `\n <ot-dropdown>\n <ng-content select=\"[trigger]\" />\n <menu popover [id]=\"menuId()\">\n <ng-content />\n </menu>\n </ot-dropdown>\n `,\n styles: `\n :host { display: inline-block; }\n `,\n})\nexport class NgOatDropdownComponent {\n private static nextId = 0;\n\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n private elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Unique popover id for this dropdown instance */\n readonly menuId = signal(`ng-oat-dd-${++NgOatDropdownComponent.nextId}`);\n\n readonly isOpen = signal(false);\n\n readonly openChange = output<boolean>();\n\n private popoverEl: HTMLElement | null = null;\n private triggerEl: HTMLElement | null = null;\n private positionFn: (() => void) | null = null;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.elRef.nativeElement;\n this.popoverEl = host.querySelector('[popover]');\n this.triggerEl = host.querySelector('[trigger]') as HTMLElement | null;\n\n // Wire up trigger button popovertarget\n if (this.triggerEl && this.popoverEl) {\n this.triggerEl.setAttribute('popovertarget', this.menuId());\n }\n\n if (!this.popoverEl) return;\n\n // Build a positioning function identical to Oat's dropdown.js\n this.positionFn = () => {\n if (!this.triggerEl || !this.popoverEl) return;\n const r = this.triggerEl.getBoundingClientRect();\n const m = this.popoverEl.getBoundingClientRect();\n this.popoverEl.style.top = `${\n r.bottom + m.height > window.innerHeight ? r.top - m.height : r.bottom\n }px`;\n this.popoverEl.style.left = `${\n r.left + m.width > window.innerWidth ? r.right - m.width : r.left\n }px`;\n };\n\n const onToggle = (e: any) => {\n const open = e.newState === 'open';\n this.isOpen.set(open);\n this.openChange.emit(open);\n\n if (open) {\n // Position the menu relative to the trigger\n this.positionFn!();\n window.addEventListener('scroll', this.positionFn!, true);\n window.addEventListener('resize', this.positionFn!);\n\n // Focus first menu item\n const items = host.querySelectorAll<HTMLElement>('[role=\"menuitem\"]');\n items[0]?.focus();\n this.triggerEl?.setAttribute('aria-expanded', 'true');\n } else {\n window.removeEventListener('scroll', this.positionFn!, true);\n window.removeEventListener('resize', this.positionFn!);\n this.triggerEl?.setAttribute('aria-expanded', 'false');\n this.triggerEl?.focus();\n }\n };\n\n this.popoverEl.addEventListener('toggle', onToggle);\n this.destroyRef.onDestroy(() => {\n this.popoverEl?.removeEventListener('toggle', onToggle);\n window.removeEventListener('scroll', this.positionFn!, true);\n window.removeEventListener('resize', this.positionFn!);\n });\n });\n }\n\n open(): void {\n this.popoverEl?.showPopover?.();\n }\n\n close(): void {\n this.popoverEl?.hidePopover?.();\n }\n\n toggle(): void {\n this.popoverEl?.togglePopover?.();\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n signal,\n effect,\n DestroyRef,\n afterNextRender,\n Renderer2,\n PLATFORM_ID,\n TemplateRef,\n ViewContainerRef,\n EmbeddedViewRef,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { TOOLTIP_POSITIONER } from '../util/tooltip-positioner';\nimport { Placement } from '../util/positioning';\nimport { KEYS } from '../util/keyboard';\n\nlet tooltipCompId = 0;\n\n/**\n * Angular component wrapper for Oat CSS tooltips.\n *\n * Usage:\n * ```html\n * <ng-oat-tooltip text=\"Save changes\" position=\"top\">\n * <button>💾</button>\n * </ng-oat-tooltip>\n *\n * <ng-oat-tooltip [template]=\"richTip\" position=\"bottom\">\n * <button>Info</button>\n * </ng-oat-tooltip>\n * <ng-template #richTip><strong>Rich</strong> tooltip content</ng-template>\n * ```\n */\n@Component({\n selector: 'ng-oat-tooltip',\n template: `<ng-content />`,\n styles: `\n :host { display: inline-block; position: relative; }\n `,\n})\nexport class NgOatTooltipComponent {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n private doc = inject(DOCUMENT);\n private vcr = inject(ViewContainerRef);\n private positioner = inject(TOOLTIP_POSITIONER);\n\n readonly text = input<string>('');\n readonly template = input<TemplateRef<any> | undefined>(undefined);\n readonly position = input<Placement>('top');\n readonly delay = input(700);\n readonly disabled = input(false);\n\n readonly isVisible = signal(false);\n\n private tooltipEl: HTMLElement | null = null;\n private embeddedView: EmbeddedViewRef<any> | null = null;\n private showTimeout: any;\n private rafId: number | null = null;\n private tooltipId = '';\n private cleanupFns: (() => void)[] = [];\n private initialized = false;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.el.nativeElement;\n this.tooltipId = `ng-oat-tip-${++tooltipCompId}`;\n this.initialized = true;\n\n this.syncAttrs();\n\n if (this.template()) {\n this.listen(host, 'mouseenter', () => this.scheduleShow());\n this.listen(host, 'focusin', () => this.scheduleShow());\n this.listen(host, 'mouseleave', () => this.hide());\n this.listen(host, 'focusout', () => this.hide());\n this.listen(host, 'keydown', (e: KeyboardEvent) => {\n if (e.key === KEYS.ESCAPE) this.hide();\n });\n }\n\n this.destroyRef.onDestroy(() => this.destroy());\n });\n\n effect(() => {\n this.text();\n this.position();\n this.disabled();\n if (this.initialized) this.syncAttrs();\n });\n }\n\n private syncAttrs(): void {\n const host = this.el.nativeElement;\n const text = this.text();\n const tpl = this.template();\n\n if (this.disabled() || tpl) {\n this.renderer.removeAttribute(host, 'data-tooltip');\n this.renderer.removeAttribute(host, 'data-tooltip-pos');\n return;\n }\n\n if (text) {\n this.renderer.setAttribute(host, 'data-tooltip', text);\n this.renderer.setAttribute(host, 'data-tooltip-pos', this.position());\n if (!host.hasAttribute('aria-label')) {\n this.renderer.setAttribute(host, 'aria-label', text);\n }\n }\n }\n\n show(): void {\n if (this.disabled() || this.isVisible()) return;\n\n const tpl = this.template();\n if (!tpl) {\n this.isVisible.set(true);\n return;\n }\n\n const host = this.el.nativeElement;\n this.tooltipEl = this.renderer.createElement('div');\n this.renderer.addClass(this.tooltipEl, 'ng-oat-tooltip');\n this.renderer.setAttribute(this.tooltipEl!, 'role', 'tooltip');\n this.renderer.setAttribute(this.tooltipEl!, 'id', this.tooltipId);\n this.renderer.setStyle(this.tooltipEl, 'position', 'fixed');\n this.renderer.setStyle(this.tooltipEl, 'z-index', '9999');\n this.renderer.setStyle(this.tooltipEl, 'pointer-events', 'none');\n\n this.embeddedView = this.vcr.createEmbeddedView(tpl);\n this.embeddedView.rootNodes.forEach((node: Node) => {\n this.renderer.appendChild(this.tooltipEl, node);\n });\n\n this.renderer.appendChild(this.doc.body, this.tooltipEl);\n this.renderer.setAttribute(host, 'aria-describedby', this.tooltipId);\n\n requestAnimationFrame(() => {\n if (this.tooltipEl) {\n this.positioner.position(host, this.tooltipEl, this.position());\n this.startRepositioning(host);\n }\n });\n\n this.isVisible.set(true);\n }\n\n hide(): void {\n clearTimeout(this.showTimeout);\n this.stopRepositioning();\n\n if (this.tooltipEl) {\n this.renderer.removeChild(this.doc.body, this.tooltipEl);\n this.tooltipEl = null;\n }\n if (this.embeddedView) {\n this.embeddedView.destroy();\n this.embeddedView = null;\n }\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-describedby');\n this.isVisible.set(false);\n }\n\n private scheduleShow(): void {\n if (this.disabled()) return;\n clearTimeout(this.showTimeout);\n const d = this.delay();\n if (d > 0) {\n this.showTimeout = setTimeout(() => this.show(), d);\n } else {\n this.show();\n }\n }\n\n private startRepositioning(host: HTMLElement): void {\n const reposition = () => {\n if (this.tooltipEl) {\n this.positioner.position(host, this.tooltipEl, this.position());\n }\n this.rafId = requestAnimationFrame(reposition);\n };\n this.rafId = requestAnimationFrame(reposition);\n }\n\n private stopRepositioning(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n }\n\n private listen(el: HTMLElement, event: string, handler: (e: any) => void): void {\n el.addEventListener(event, handler);\n this.cleanupFns.push(() => el.removeEventListener(event, handler));\n }\n\n private destroy(): void {\n clearTimeout(this.showTimeout);\n this.stopRepositioning();\n this.hide();\n this.cleanupFns.forEach(fn => fn());\n this.cleanupFns = [];\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n Renderer2,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport { KEYS } from '../util/keyboard';\n\nconst MOBILE_BREAKPOINT = 768;\n\n/**\n * Angular component wrapper for Oat's sidebar layout.\n *\n * Usage:\n * ```html\n * <ng-oat-sidebar [scrollLock]=\"true\" (openChange)=\"onToggle($event)\">\n * <aside sidebar>Navigation</aside>\n * <main>Main content</main>\n * </ng-oat-sidebar>\n * ```\n */\n@Component({\n selector: 'ng-oat-sidebar',\n host: {\n '[attr.data-sidebar-layout]': '\"\"',\n '[attr.data-sidebar-open]': 'isOpen() ? \"\" : null',\n },\n template: `<ng-content />`,\n styles: `\n :host { display: block; }\n `,\n})\nexport class NgOatSidebarComponent {\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n private doc = inject(DOCUMENT);\n\n /** Whether scroll lock is applied on mobile when sidebar is open */\n readonly scrollLock = input(true);\n readonly initialOpen = input(false);\n\n readonly isOpen = signal(false);\n\n readonly openChange = output<boolean>();\n\n private cleanupFns: (() => void)[] = [];\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n if (this.initialOpen()) {\n this.isOpen.set(true);\n }\n\n this.listen(this.doc as any, 'keydown', (e: KeyboardEvent) => {\n if (e.key === KEYS.ESCAPE && this.isOpen() && this.isMobile()) {\n this.close();\n }\n });\n\n // Outside click to close on mobile\n this.listen(this.doc as any, 'click', (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n if (\n this.isOpen() &&\n this.isMobile() &&\n !target.closest('[sidebar]') &&\n !target.closest('aside') &&\n !target.closest('[data-sidebar-toggle]')\n ) {\n this.close();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n this.cleanupFns.forEach(fn => fn());\n this.cleanupFns = [];\n this.restoreScroll();\n });\n });\n }\n\n open(): void {\n this.isOpen.set(true);\n this.openChange.emit(true);\n if (this.scrollLock() && this.isMobile()) {\n this.lockScroll();\n }\n }\n\n close(): void {\n this.isOpen.set(false);\n this.openChange.emit(false);\n this.restoreScroll();\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private isMobile(): boolean {\n return typeof window !== 'undefined' && window.innerWidth < MOBILE_BREAKPOINT;\n }\n\n private lockScroll(): void {\n this.renderer.setStyle(this.doc.body, 'overflow', 'hidden');\n }\n\n private restoreScroll(): void {\n this.renderer.removeStyle(this.doc.body, 'overflow');\n }\n\n private listen(el: HTMLElement, event: string, handler: (e: any) => void): void {\n el.addEventListener(event, handler);\n this.cleanupFns.push(() => el.removeEventListener(event, handler));\n }\n}\n","import {\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n ElementRef,\n inject,\n input,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport interface NgOatTabItem {\n label: string;\n disabled?: boolean;\n}\n\n/**\n * Angular component wrapper for Oat's tabs.\n *\n * Handles tab activation, panel visibility, ARIA attributes, and keyboard\n * navigation internally because the Oat JS `init()` runs on\n * `connectedCallback` — before Angular renders the `@for` tab buttons.\n *\n * Usage:\n * ```html\n * <ng-oat-tabs [tabs]=\"['Tab 1', 'Tab 2', 'Tab 3']\" (tabChange)=\"onTab($event)\">\n * <div>Content 1</div>\n * <div>Content 2</div>\n * <div>Content 3</div>\n * </ng-oat-tabs>\n * ```\n *\n * Or with objects:\n * ```html\n * <ng-oat-tabs [tabs]=\"[{label:'Tab 1'}, {label:'Tab 2', disabled: true}]\">\n * <div>Content 1</div>\n * <div>Content 2</div>\n * </ng-oat-tabs>\n * ```\n */\n@Component({\n selector: 'ng-oat-tabs',\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n template: `\n <ot-tabs>\n <div role=\"tablist\">\n @for (tab of normalizedTabs(); track $index) {\n <button role=\"tab\"\n [disabled]=\"tab.disabled || false\"\n [attr.aria-selected]=\"$index === activeIndex() ? 'true' : 'false'\"\n [attr.tabindex]=\"$index === activeIndex() ? 0 : -1\">\n {{ tab.label }}\n </button>\n }\n </div>\n <ng-content />\n </ot-tabs>\n `,\n styles: `\n :host { display: block; }\n `,\n})\nexport class NgOatTabsComponent {\n private elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n\n readonly tabs = input.required<(string | NgOatTabItem)[]>();\n\n readonly activeIndex = signal(0);\n\n readonly tabChange = output<{ index: number; tab: HTMLElement }>();\n\n protected normalizedTabs = () => {\n return this.tabs().map(t => typeof t === 'string' ? { label: t } : t);\n };\n\n private tabEls: HTMLElement[] = [];\n private panelEls: HTMLElement[] = [];\n private cleanupFns: (() => void)[] = [];\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const host = this.elRef.nativeElement;\n const otTabs = host.querySelector('ot-tabs');\n if (!otTabs) return;\n\n const tablist = otTabs.querySelector(':scope > [role=\"tablist\"]');\n this.tabEls = tablist\n ? Array.from(tablist.querySelectorAll<HTMLElement>('[role=\"tab\"]'))\n : [];\n this.panelEls = Array.from(\n otTabs.querySelectorAll<HTMLElement>(':scope > [role=\"tabpanel\"]'),\n );\n\n // Wire ARIA ids\n this.tabEls.forEach((tab, i) => {\n const panel = this.panelEls[i];\n if (!panel) return;\n const tabId = tab.id || `ng-oat-tab-${crypto.randomUUID().slice(0, 8)}`;\n const panelId = panel.id || `ng-oat-panel-${crypto.randomUUID().slice(0, 8)}`;\n tab.id = tabId;\n panel.id = panelId;\n tab.setAttribute('aria-controls', panelId);\n panel.setAttribute('aria-labelledby', tabId);\n });\n\n // Activate the initial tab\n this.activate(this.activeIndex());\n\n // Click handler\n const onClick = (e: MouseEvent) => {\n const btn = (e.target as HTMLElement).closest?.('[role=\"tab\"]') as HTMLElement | null;\n if (!btn) return;\n const idx = this.tabEls.indexOf(btn);\n if (idx >= 0 && !btn.hasAttribute('disabled')) this.activate(idx);\n };\n\n // Keyboard navigation (Arrow Left / Right, Home, End)\n const onKeydown = (e: KeyboardEvent) => {\n if (!(e.target as HTMLElement).closest?.('[role=\"tab\"]')) return;\n const len = this.tabEls.length;\n const current = this.activeIndex();\n let next = -1;\n\n if (e.key === 'ArrowRight') next = (current + 1) % len;\n else if (e.key === 'ArrowLeft') next = (current - 1 + len) % len;\n else if (e.key === 'Home') next = 0;\n else if (e.key === 'End') next = len - 1;\n\n if (next >= 0) {\n e.preventDefault();\n // Skip disabled tabs\n const orig = next;\n const dir = e.key === 'ArrowLeft' || e.key === 'End' ? -1 : 1;\n while (this.tabEls[next]?.hasAttribute('disabled')) {\n next = (next + dir + len) % len;\n if (next === orig) return; // all disabled\n }\n this.activate(next);\n this.tabEls[next]?.focus();\n }\n };\n\n tablist?.addEventListener('click', onClick as EventListener);\n tablist?.addEventListener('keydown', onKeydown as EventListener);\n this.cleanupFns.push(\n () => tablist?.removeEventListener('click', onClick as EventListener),\n () => tablist?.removeEventListener('keydown', onKeydown as EventListener),\n );\n\n this.destroyRef.onDestroy(() => {\n this.cleanupFns.forEach(fn => fn());\n this.cleanupFns = [];\n });\n });\n }\n\n selectTab(index: number): void {\n this.activate(index);\n }\n\n private activate(idx: number): void {\n if (idx < 0 || idx >= this.tabEls.length) return;\n\n this.tabEls.forEach((tab, i) => {\n const isActive = i === idx;\n tab.setAttribute('aria-selected', String(isActive));\n tab.tabIndex = isActive ? 0 : -1;\n });\n\n this.panelEls.forEach((panel, i) => {\n panel.hidden = i !== idx;\n });\n\n this.activeIndex.set(idx);\n this.tabChange.emit({ index: idx, tab: this.tabEls[idx] });\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n output,\n signal,\n DestroyRef,\n afterNextRender,\n PLATFORM_ID,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Angular component wrapper for Oat's native `<dialog>` styling.\n *\n * Usage:\n * ```html\n * <ng-oat-dialog (closed)=\"onClose($event)\">\n * <h3 header>Title</h3>\n * <p>Dialog body content</p>\n * <div footer>\n * <button class=\"outline\" (click)=\"dlg.close('cancel')\">Cancel</button>\n * <button (click)=\"dlg.close('confirm')\">OK</button>\n * </div>\n * </ng-oat-dialog>\n * ```\n */\n@Component({\n selector: 'ng-oat-dialog',\n template: `\n <dialog #dialogEl [attr.closedby]=\"closedBy()\">\n <form method=\"dialog\">\n <header>\n <ng-content select=\"[header]\" />\n </header>\n <div>\n <ng-content />\n </div>\n <footer>\n <ng-content select=\"[footer]\" />\n </footer>\n </form>\n </dialog>\n `,\n})\nexport class NgOatDialogComponent {\n private elRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private destroyRef = inject(DestroyRef);\n private platformId = inject(PLATFORM_ID);\n\n /** closedby attribute — 'any' allows backdrop click to close */\n readonly closedBy = signal<'any' | 'closerequest' | 'none'>('any');\n\n readonly isOpen = signal(false);\n\n readonly closed = output<string>();\n\n private dialogEl: HTMLDialogElement | null = null;\n private triggerElement: HTMLElement | null = null;\n\n constructor() {\n afterNextRender(() => {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.dialogEl = this.elRef.nativeElement.querySelector('dialog');\n if (!this.dialogEl) return;\n\n const onClose = () => {\n this.isOpen.set(false);\n this.closed.emit(this.dialogEl?.returnValue ?? '');\n if (this.triggerElement) {\n this.triggerElement.focus();\n this.triggerElement = null;\n }\n };\n\n this.dialogEl.addEventListener('close', onClose);\n this.destroyRef.onDestroy(() => {\n this.dialogEl?.removeEventListener('close', onClose);\n });\n });\n }\n\n showModal(): void {\n if (!this.dialogEl || this.dialogEl.open) return;\n if (typeof document !== 'undefined') {\n this.triggerElement = document.activeElement as HTMLElement;\n }\n this.dialogEl.showModal();\n this.isOpen.set(true);\n requestAnimationFrame(() => {\n const focusable = this.dialogEl?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n focusable?.focus();\n });\n }\n\n show(): void {\n if (!this.dialogEl || this.dialogEl.open) return;\n if (typeof document !== 'undefined') {\n this.triggerElement = document.activeElement as HTMLElement;\n }\n this.dialogEl.show();\n this.isOpen.set(true);\n }\n\n close(returnValue?: string): void {\n if (!this.dialogEl?.open) return;\n this.dialogEl.close(returnValue ?? '');\n }\n}\n","import { Component, input, signal, computed } from '@angular/core';\n\nexport type NgOatAvatarSize = 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * Avatar component displaying a user image with initials fallback.\n *\n * Usage:\n * ```html\n * <ng-oat-avatar src=\"/photo.jpg\" alt=\"John Doe\" />\n * <ng-oat-avatar initials=\"JD\" size=\"lg\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-avatar',\n host: {\n '[class]': 'hostClass()',\n 'role': 'img',\n '[attr.aria-label]': 'alt() || initials() || fallback() || null',\n },\n template: `\n @if (src() && !imgError()) {\n <img [src]=\"src()\" [alt]=\"alt()\" (error)=\"onImageError()\" />\n } @else {\n <span>{{ displayText() }}</span>\n }\n `,\n styles: `\n :host { display: inline-flex; vertical-align: middle; }\n span { pointer-events: none; }\n `,\n})\nexport class NgOatAvatar {\n readonly src = input('');\n readonly alt = input('');\n readonly initials = input('');\n readonly fallback = input('');\n readonly size = input<NgOatAvatarSize>('default');\n\n protected imgError = signal(false);\n\n protected hostClass = computed(() => {\n const s = this.size();\n const classes = ['avatar'];\n if (s !== 'default') classes.push(`avatar-${s}`);\n return classes.join(' ');\n });\n\n protected displayText = computed(() => {\n if (this.initials()) return this.initials();\n if (this.fallback()) return this.fallback().slice(0, 2).toUpperCase();\n if (this.alt()) {\n return this.alt()\n .split(' ')\n .map(w => w[0])\n .slice(0, 2)\n .join('')\n .toUpperCase();\n }\n return '?';\n });\n\n protected onImageError(): void {\n this.imgError.set(true);\n }\n}\n","import { Component, input, output, signal, computed, ElementRef, viewChild } from '@angular/core';\n\n/**\n * File upload dropzone with drag-and-drop and click-to-browse support.\n *\n * Usage:\n * ```html\n * <ng-oat-file-upload\n * accept=\"image/*\"\n * [multiple]=\"true\"\n * [maxSize]=\"5242880\"\n * (filesSelected)=\"onFiles($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'ng-oat-file-upload',\n host: { '[class.disabled]': 'disabled()' },\n template: `\n <div\n class=\"file-upload\"\n [class.dragover]=\"isDragover()\"\n [class.disabled]=\"disabled()\"\n (click)=\"openFilePicker()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n role=\"button\"\n [attr.aria-disabled]=\"disabled() || null\"\n tabindex=\"0\"\n (keydown.enter)=\"openFilePicker()\"\n (keydown.space)=\"openFilePicker(); $event.preventDefault()\"\n >\n <input\n #fileInput\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"disabled()\"\n (change)=\"onFileChange($event)\"\n hidden\n aria-hidden=\"true\"\n />\n <div class=\"file-upload-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n </div>\n <div class=\"file-upload-text\">{{ label() || 'Click to upload or drag and drop' }}</div>\n <div class=\"file-upload-hint\">\n @if (accept()) {\n {{ accept() }}\n }\n @if (maxSize()) {\n &middot; Max {{ formatSize(maxSize()) }}\n }\n </div>\n </div>\n\n @if (files().length) {\n <div class=\"file-upload-list\">\n @for (file of files(); track file.name + file.size) {\n <div class=\"file-upload-item\">\n <span class=\"file-upload-item-name\">{{ file.name }}</span>\n <span class=\"file-upload-item-size\">{{ formatSize(file.size) }}</span>\n <button class=\"file-upload-item-remove\" type=\"button\"\n (click)=\"removeFile($index); $event.stopPropagation()\"\n [attr.aria-label]=\"'Remove ' + file.name\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n }\n </div>\n }\n `,\n styles: `\n :host { display: block; }\n `,\n})\nexport class NgOatFileUpload {\n readonly accept = input('');\n readonly multiple = input(false);\n readonly maxSize = input(0);\n readonly disabled = input(false);\n readonly label = input('');\n\n readonly filesSelected = output<File[]>();\n\n readonly files = signal<File[]>([]);\n protected isDragover = signal(false);\n\n private fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n openFilePicker(): void {\n if (this.disabled()) return;\n this.fileInputRef()?.nativeElement.click();\n }\n\n onFileChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files) {\n this.addFiles(Array.from(input.files));\n input.value = '';\n }\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled()) this.isDragover.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragover.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragover.set(false);\n if (this.disabled() || !event.dataTransfer?.files.length) return;\n this.addFiles(Array.from(event.dataTransfer.files));\n }\n\n removeFile(index: number): void {\n this.files.update(files => files.filter((_, i) => i !== index));\n this.filesSelected.emit(this.files());\n }\n\n protected formatSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / Math.pow(1024, i)).toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n }\n\n private addFiles(newFiles: File[]): void {\n let filtered = newFiles;\n\n // Filter by max size\n if (this.maxSize() > 0) {\n filtered = filtered.filter(f => f.size <= this.maxSize());\n }\n\n if (this.multiple()) {\n this.files.update(current => [...current, ...filtered]);\n } else {\n this.files.set(filtered.slice(0, 1));\n }\n\n this.filesSelected.emit(this.files());\n }\n}\n","import {\n Component,\n input,\n model,\n computed,\n signal,\n ElementRef,\n viewChildren,\n afterNextRender,\n} from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/**\n * OTP (One-Time Password) input component with individual digit slots.\n * Implements `FormValueControl<string>` for Signal Forms integration.\n *\n * Usage:\n * ```html\n * <ng-oat-input-otp [length]=\"6\" [separator]=\"3\" [(value)]=\"otpCode\" />\n * ```\n *\n * Signal Forms:\n * ```html\n * <ng-oat-input-otp [formField]=\"myForm.otp\" [length]=\"6\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-input-otp',\n template: `\n <div class=\"otp-group\" role=\"group\" [attr.aria-label]=\"'OTP input with ' + length() + ' digits'\">\n @for (slot of slots(); track $index) {\n @if (separator() > 0 && $index === separator()) {\n <span class=\"otp-separator\" aria-hidden=\"true\">&ndash;</span>\n }\n <input\n #slotInput\n class=\"otp-slot\"\n [class.masked]=\"mask()\"\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n [maxLength]=\"1\"\n [disabled]=\"disabled()\"\n [value]=\"slot\"\n [attr.aria-label]=\"'Digit ' + ($index + 1) + ' of ' + length()\"\n (input)=\"onSlotInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (paste)=\"onPaste($event, $index)\"\n (focus)=\"onFocus($index)\"\n />\n }\n </div>\n `,\n styles: `\n :host { display: inline-block; }\n `,\n})\nexport class NgOatInputOtp implements FormValueControl<string> {\n readonly length = input(6);\n readonly separator = input(0);\n readonly disabled = input(false);\n readonly mask = input(false);\n\n readonly value = model('');\n\n readonly checked = undefined;\n\n private slotInputRefs = viewChildren<ElementRef<HTMLInputElement>>('slotInput');\n\n protected slots = computed(() => {\n const val = this.value();\n const len = this.length();\n return Array.from({ length: len }, (_, i) => val[i] || '');\n });\n\n protected onSlotInput(event: Event, index: number): void {\n const input = event.target as HTMLInputElement;\n const char = input.value.replace(/\\D/g, '').slice(-1);\n input.value = char;\n\n this.updateValueAt(index, char);\n\n // Auto-advance to next slot\n if (char && index < this.length() - 1) {\n this.focusSlot(index + 1);\n }\n }\n\n protected onKeyDown(event: KeyboardEvent, index: number): void {\n const target = event.target as HTMLInputElement;\n\n if (event.key === 'Backspace') {\n if (target.value) {\n this.updateValueAt(index, '');\n } else if (index > 0) {\n this.focusSlot(index - 1);\n this.updateValueAt(index - 1, '');\n }\n event.preventDefault();\n } else if (event.key === 'ArrowLeft' && index > 0) {\n this.focusSlot(index - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowRight' && index < this.length() - 1) {\n this.focusSlot(index + 1);\n event.preventDefault();\n }\n }\n\n protected onPaste(event: ClipboardEvent, index: number): void {\n event.preventDefault();\n const pasted = (event.clipboardData?.getData('text') || '').replace(/\\D/g, '');\n if (!pasted) return;\n\n const current = this.value().split('');\n for (let i = 0; i < pasted.length && index + i < this.length(); i++) {\n current[index + i] = pasted[i];\n }\n\n // Pad to length\n while (current.length < this.length()) current.push('');\n this.value.set(current.join('').slice(0, this.length()));\n\n // Focus last filled slot or next empty\n const focusIndex = Math.min(index + pasted.length, this.length()) - 1;\n this.focusSlot(focusIndex);\n }\n\n protected onFocus(index: number): void {\n const refs = this.slotInputRefs();\n if (refs[index]) {\n refs[index].nativeElement.select();\n }\n }\n\n private updateValueAt(index: number, char: string): void {\n const current = this.value().padEnd(this.length(), ' ').split('');\n current[index] = char || ' ';\n this.value.set(current.join('').trimEnd());\n }\n\n private focusSlot(index: number): void {\n const refs = this.slotInputRefs();\n if (refs[index]) {\n refs[index].nativeElement.focus();\n }\n }\n\n focus(options?: FocusOptions): void {\n this.focusSlot(0);\n }\n}\n","import { Component, input, model, output, computed, effect, OnDestroy, OnInit, ElementRef, viewChild, inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\nimport type { FormValueControl } from '@angular/forms/signals';\n\n/**\n * Search input with icon, clear button, optional keyboard shortcut badge, and built-in debounce.\n * Implements `FormValueControl<string>` for Signal Forms integration.\n *\n * Usage:\n * ```html\n * <ng-oat-search-input placeholder=\"Search docs...\" shortcut=\"⌘K\"\n * [(value)]=\"query\" (search)=\"onSearch($event)\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-search-input',\n template: `\n <div class=\"search-input\" [class.has-value]=\"hasValue()\">\n <span class=\"search-input-icon\" aria-hidden=\"true\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" /><path d=\"m21 21-4.3-4.3\" />\n </svg>\n </span>\n <input\n #searchEl\n type=\"search\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [attr.aria-label]=\"placeholder()\"\n />\n <button\n class=\"search-input-clear\"\n type=\"button\"\n (click)=\"clear()\"\n aria-label=\"Clear search\"\n tabindex=\"-1\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n @if (shortcut() && !hasValue()) {\n <span class=\"search-input-shortcut\">{{ shortcut() }}</span>\n }\n </div>\n `,\n styles: `\n :host { display: block; }\n `,\n})\nexport class NgOatSearchInput implements FormValueControl<string>, OnInit, OnDestroy {\n readonly placeholder = input('Search...');\n readonly disabled = input(false);\n readonly shortcut = input('');\n readonly debounceMs = input(300);\n readonly value = model('');\n\n readonly checked = undefined;\n\n readonly search = output<string>();\n\n readonly touched = model(false);\n\n protected hasValue = computed(() => this.value().length > 0);\n\n private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private searchInputRef = viewChild<ElementRef<HTMLInputElement>>('searchEl');\n private doc = inject(DOCUMENT);\n private platformId = inject(PLATFORM_ID);\n private keydownHandler: ((e: KeyboardEvent) => void) | null = null;\n\n constructor() {\n // Debounced search output\n effect(() => {\n const val = this.value();\n const ms = this.debounceMs();\n\n if (this.debounceTimer) clearTimeout(this.debounceTimer);\n this.debounceTimer = setTimeout(() => {\n this.search.emit(val);\n }, ms);\n });\n }\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId) && this.shortcut()) {\n this.keydownHandler = (e: KeyboardEvent) => {\n // Parse shortcut: \"⌘K\" → metaKey+k, \"Ctrl+K\" → ctrlKey+k\n const shortcut = this.shortcut();\n if (!shortcut) return;\n\n const isMeta = shortcut.includes('⌘') || shortcut.toLowerCase().includes('cmd');\n const isCtrl = shortcut.toLowerCase().includes('ctrl');\n const keyChar = shortcut.replace(/[⌘⌃⇧⌥]|cmd|ctrl|shift|alt|\\+/gi, '').trim().toLowerCase();\n\n if (!keyChar) return;\n\n const metaMatch = isMeta ? e.metaKey : true;\n const ctrlMatch = isCtrl ? e.ctrlKey : true;\n const keyMatch = e.key.toLowerCase() === keyChar;\n\n if (keyMatch && (isMeta ? e.metaKey : isCtrl ? e.ctrlKey : false)) {\n e.preventDefault();\n this.focusInput();\n }\n };\n this.doc.addEventListener('keydown', this.keydownHandler);\n }\n }\n\n ngOnDestroy(): void {\n if (this.debounceTimer) clearTimeout(this.debounceTimer);\n if (this.keydownHandler) {\n this.doc.removeEventListener('keydown', this.keydownHandler);\n }\n }\n\n protected onInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n }\n\n protected onBlur(): void {\n this.touched.set(true);\n }\n\n clear(): void {\n this.value.set('');\n this.focusInput();\n }\n\n focus(options?: FocusOptions): void {\n this.focusInput(options);\n }\n\n private focusInput(options?: FocusOptions): void {\n this.searchInputRef()?.nativeElement.focus(options);\n }\n}\n","import { Component, input, computed } from '@angular/core';\n\nexport type NgOatSeparatorOrientation = 'horizontal' | 'vertical';\n\n/**\n * Separator component for visual content division. Renders as `<hr>` for\n * horizontal (no label), a labeled divider, or a vertical separator.\n *\n * Usage:\n * ```html\n * <ng-oat-separator />\n * <ng-oat-separator label=\"OR\" />\n * <div class=\"hstack\"><span>Left</span> <ng-oat-separator orientation=\"vertical\" /> <span>Right</span></div>\n * ```\n */\n@Component({\n selector: 'ng-oat-separator',\n host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'orientation()',\n '[class]': 'hostClass()',\n '[style.display]': 'orientation() === \"vertical\" ? \"inline-flex\" : null',\n },\n template: `\n @if (orientation() === 'vertical') {\n <!-- vertical: just styled via host class -->\n } @else if (label()) {\n <div class=\"separator-label\">{{ label() }}</div>\n } @else {\n <hr />\n }\n `,\n styles: `\n :host { display: block; }\n :host(.separator-vertical) {\n display: inline-flex;\n border-left: 1px solid var(--border);\n align-self: stretch;\n margin: 0 var(--space-2);\n min-height: 1em;\n }\n hr { border: none; border-top: 1px solid var(--border); margin: var(--space-2) 0; }\n `,\n})\nexport class NgOatSeparator {\n readonly orientation = input<NgOatSeparatorOrientation>('horizontal');\n readonly label = input('');\n\n protected hostClass = computed(() => {\n return this.orientation() === 'vertical' ? 'separator-vertical' : '';\n });\n}\n","import { Component, input, model, computed, output, inject, InjectionToken } from '@angular/core';\n\nexport type NgOatToggleVariant = 'default' | 'outline';\nexport type NgOatToggleSize = 'sm' | 'default' | 'lg';\n\n/**\n * Injection token that allows `NgOatToggle` to communicate with its parent\n * `NgOatToggleGroup` without a circular import.\n */\nexport interface NgOatToggleGroupHost {\n handleToggle(toggle: NgOatToggle): void;\n}\n\nexport const NG_OAT_TOGGLE_GROUP = new InjectionToken<NgOatToggleGroupHost>('NgOatToggleGroup');\n\n/**\n * Toggle button that can be pressed/unpressed. Acts like a toggle switch in button form.\n *\n * Usage:\n * ```html\n * <ng-oat-toggle [(pressed)]=\"isBold\">B</ng-oat-toggle>\n * <ng-oat-toggle variant=\"outline\" size=\"sm\" [(pressed)]=\"isActive\">Active</ng-oat-toggle>\n * ```\n */\n@Component({\n selector: 'ng-oat-toggle',\n host: {\n '[style.display]': '\"inline-block\"',\n },\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClass()\"\n [attr.aria-pressed]=\"pressed()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n >\n <ng-content />\n </button>\n `,\n})\nexport class NgOatToggle {\n readonly variant = input<NgOatToggleVariant>('default');\n readonly size = input<NgOatToggleSize>('default');\n readonly disabled = input(false);\n readonly toggleValue = input('');\n\n readonly pressed = model(false);\n\n readonly pressedChange = output<boolean>();\n\n private group = inject(NG_OAT_TOGGLE_GROUP, { optional: true });\n\n protected buttonClass = computed(() => {\n const classes = ['toggle'];\n const v = this.variant();\n const s = this.size();\n if (v === 'outline') classes.push('outline');\n if (s !== 'default') classes.push(`toggle-${s}`);\n return classes.join(' ');\n });\n\n toggle(): void {\n if (this.disabled()) return;\n\n if (this.group) {\n // Delegate to parent group for single/multi select logic\n this.group.handleToggle(this);\n } else {\n // Standalone toggle\n this.pressed.update(v => !v);\n this.pressedChange.emit(this.pressed());\n }\n }\n}\n","import { Component, input, model, computed, contentChildren, effect } from '@angular/core';\nimport { NgOatToggle, NG_OAT_TOGGLE_GROUP } from './toggle';\nimport type { NgOatToggleGroupHost } from './toggle';\n\nexport type NgOatToggleGroupVariant = 'default' | 'outline';\nexport type NgOatToggleGroupSize = 'sm' | 'default' | 'lg';\n\n/**\n * Groups multiple `NgOatToggle` buttons with single or multi-select behavior.\n *\n * Usage (single select):\n * ```html\n * <ng-oat-toggle-group [(value)]=\"alignment\">\n * <ng-oat-toggle toggleValue=\"left\">Left</ng-oat-toggle>\n * <ng-oat-toggle toggleValue=\"center\">Center</ng-oat-toggle>\n * <ng-oat-toggle toggleValue=\"right\">Right</ng-oat-toggle>\n * </ng-oat-toggle-group>\n * ```\n *\n * Usage (multi select):\n * ```html\n * <ng-oat-toggle-group [multiple]=\"true\" [(value)]=\"formats\">\n * <ng-oat-toggle toggleValue=\"bold\">B</ng-oat-toggle>\n * <ng-oat-toggle toggleValue=\"italic\">I</ng-oat-toggle>\n * <ng-oat-toggle toggleValue=\"underline\">U</ng-oat-toggle>\n * </ng-oat-toggle-group>\n * ```\n */\n@Component({\n selector: 'ng-oat-toggle-group',\n template: `\n <div class=\"toggle-group\" role=\"group\">\n <ng-content />\n </div>\n `,\n styles: `\n :host { display: inline-block; }\n `,\n providers: [\n { provide: NG_OAT_TOGGLE_GROUP, useExisting: NgOatToggleGroup },\n ],\n})\nexport class NgOatToggleGroup implements NgOatToggleGroupHost {\n readonly multiple = input(false);\n readonly disabled = input(false);\n readonly variant = input<NgOatToggleGroupVariant>('default');\n readonly size = input<NgOatToggleGroupSize>('default');\n\n /**\n * Selected value(s):\n * - Single mode: string (empty string = nothing selected)\n * - Multiple mode: comma-separated string (e.g. \"bold,italic\")\n */\n readonly value = model('');\n\n private toggles = contentChildren(NgOatToggle);\n\n constructor() {\n // Single effect: sync parent value → child pressed states\n effect(() => {\n const toggles = this.toggles();\n const val = this.value();\n const selectedSet = new Set(val ? val.split(',') : []);\n\n for (const toggle of toggles) {\n const isSelected = selectedSet.has(toggle.toggleValue());\n if (toggle.pressed() !== isSelected) {\n toggle.pressed.set(isSelected);\n }\n }\n });\n }\n\n /**\n * Called by child `NgOatToggle` when it is clicked.\n * Manages single/multi select logic and updates the group value.\n */\n handleToggle(toggle: NgOatToggle): void {\n const toggleVal = toggle.toggleValue();\n if (!toggleVal) return;\n\n if (this.multiple()) {\n // Multi select: toggle the value in the comma-separated list\n const current = new Set(this.value() ? this.value().split(',') : []);\n if (current.has(toggleVal)) {\n current.delete(toggleVal);\n } else {\n current.add(toggleVal);\n }\n this.value.set([...current].join(','));\n } else {\n // Single select: toggle off if already selected, otherwise select\n const currentVal = this.value();\n this.value.set(currentVal === toggleVal ? '' : toggleVal);\n }\n }\n}\n","import { Component, input, model, output, computed, signal, InjectionToken, inject } from '@angular/core';\n\nexport type NgOatChipVariant = 'default' | 'secondary' | 'outline' | 'success' | 'warning' | 'danger';\nexport type NgOatChipSize = 'sm' | 'default' | 'lg';\n\n/**\n * Injection token for the parent chip group.\n */\nexport interface NgOatChipGroupHost {\n handleSelect(chip: NgOatChip): void;\n handleRemove(chip: NgOatChip): void;\n}\n\nexport const NG_OAT_CHIP_GROUP = new InjectionToken<NgOatChipGroupHost>('NgOatChipGroup');\n\n/**\n * Individual chip component — a compact element for displaying tags, categories, or selections.\n *\n * Usage:\n * ```html\n * <ng-oat-chip>Tag</ng-oat-chip>\n * <ng-oat-chip variant=\"success\" removable (removed)=\"onRemove()\">Active</ng-oat-chip>\n * <ng-oat-chip selectable [(selected)]=\"isSelected\">Filter</ng-oat-chip>\n * ```\n */\n@Component({\n selector: 'ng-oat-chip',\n host: {\n '[class]': 'hostClass()',\n '[attr.aria-selected]': 'selectable() ? selected() : null',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.role]': 'selectable() ? \"option\" : null',\n '[tabindex]': 'selectable() && !disabled() ? 0 : -1',\n '(click)': 'onClick()',\n '(keydown.enter)': 'onClick()',\n '(keydown.space)': 'onSpace($event)',\n '(keydown.delete)': 'onDelete()',\n '(keydown.backspace)': 'onDelete()',\n },\n template: `\n <ng-content select=\"[chipIcon]\" />\n <ng-content />\n @if (removable() && !disabled()) {\n <button\n class=\"chip-dismiss\"\n type=\"button\"\n (click)=\"onRemove($event)\"\n [attr.aria-label]=\"'Remove ' + label()\"\n tabindex=\"-1\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n </button>\n }\n `,\n styles: `\n :host { display: inline-flex; vertical-align: middle; }\n `,\n})\nexport class NgOatChip {\n readonly variant = input<NgOatChipVariant>('default');\n readonly size = input<NgOatChipSize>('default');\n readonly disabled = input(false);\n readonly removable = input(false);\n readonly selectable = input(false);\n readonly chipValue = input('');\n readonly label = input('');\n\n readonly selected = model(false);\n\n readonly removed = output<void>();\n readonly selectedChange = output<boolean>();\n\n private group = inject(NG_OAT_CHIP_GROUP, { optional: true });\n\n protected hostClass = computed(() => {\n const classes = ['chip'];\n const v = this.variant();\n const s = this.size();\n if (v !== 'default') classes.push(v);\n if (s !== 'default') classes.push(`chip-${s}`);\n if (this.selectable()) classes.push('interactive');\n if (this.selected()) classes.push('selected');\n return classes.join(' ');\n });\n\n onClick(): void {\n if (this.disabled() || !this.selectable()) return;\n\n if (this.group) {\n this.group.handleSelect(this);\n } else {\n this.selected.update(v => !v);\n this.selectedChange.emit(this.selected());\n }\n }\n\n protected onSpace(event: Event): void {\n event.preventDefault();\n this.onClick();\n }\n\n protected onDelete(): void {\n if (this.disabled() || !this.removable()) return;\n if (this.group) {\n this.group.handleRemove(this);\n } else {\n this.removed.emit();\n }\n }\n\n protected onRemove(event: Event): void {\n event.stopPropagation();\n if (this.disabled()) return;\n if (this.group) {\n this.group.handleRemove(this);\n } else {\n this.removed.emit();\n }\n }\n}\n\n/**\n * Chip group that manages selection state for a set of selectable chips.\n *\n * Usage:\n * ```html\n * <ng-oat-chip-group [(value)]=\"selectedTags\" [multiple]=\"true\">\n * <ng-oat-chip chipValue=\"angular\" selectable>Angular</ng-oat-chip>\n * <ng-oat-chip chipValue=\"react\" selectable>React</ng-oat-chip>\n * <ng-oat-chip chipValue=\"vue\" selectable>Vue</ng-oat-chip>\n * </ng-oat-chip-group>\n * ```\n */\n@Component({\n selector: 'ng-oat-chip-group',\n host: {\n 'role': 'listbox',\n '[attr.aria-multiselectable]': 'multiple() || null',\n '[attr.aria-label]': 'ariaLabel() || null',\n },\n template: `\n <div class=\"chip-group\">\n <ng-content />\n </div>\n `,\n styles: `\n :host { display: block; }\n `,\n providers: [\n { provide: NG_OAT_CHIP_GROUP, useExisting: NgOatChipGroup },\n ],\n})\nexport class NgOatChipGroup implements NgOatChipGroupHost {\n readonly multiple = input(false);\n readonly ariaLabel = input('');\n\n /**\n * Selected value(s):\n * - Single: string (empty = nothing selected)\n * - Multiple: comma-separated string (e.g. \"angular,vue\")\n */\n readonly value = model('');\n\n readonly chipRemoved = output<string>();\n\n private chips = signal<NgOatChip[]>([]);\n\n /**\n * Called by child chip when clicked.\n */\n handleSelect(chip: NgOatChip): void {\n const chipVal = chip.chipValue();\n if (!chipVal) return;\n\n if (this.multiple()) {\n const current = new Set(this.value() ? this.value().split(',') : []);\n if (current.has(chipVal)) {\n current.delete(chipVal);\n chip.selected.set(false);\n } else {\n current.add(chipVal);\n chip.selected.set(true);\n }\n this.value.set([...current].join(','));\n } else {\n const currentVal = this.value();\n if (currentVal === chipVal) {\n this.value.set('');\n chip.selected.set(false);\n } else {\n this.value.set(chipVal);\n chip.selected.set(true);\n }\n }\n chip.selectedChange.emit(chip.selected());\n }\n\n /**\n * Called by child chip when removed.\n */\n handleRemove(chip: NgOatChip): void {\n const chipVal = chip.chipValue();\n // Remove from selection if selected\n if (chipVal && this.value()) {\n const current = new Set(this.value().split(','));\n current.delete(chipVal);\n this.value.set([...current].join(','));\n }\n chip.removed.emit();\n this.chipRemoved.emit(chipVal);\n }\n}\n\n/**\n * Chip input — a text field that creates chips from typed input.\n *\n * Usage:\n * ```html\n * <ng-oat-chip-input [(chips)]=\"tags\" placeholder=\"Add tag...\"\n * variant=\"outline\" removable />\n * ```\n */\n@Component({\n selector: 'ng-oat-chip-input',\n template: `\n <div class=\"chip-input-wrapper\" (click)=\"focusInput()\">\n @for (chip of chips(); track chip) {\n <span class=\"chip\" [class]=\"chipClass()\">\n {{ chip }}\n <button class=\"chip-dismiss\" type=\"button\" (click)=\"removeChip(chip)\"\n [attr.aria-label]=\"'Remove ' + chip\" tabindex=\"-1\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"12\" height=\"12\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n </svg>\n </button>\n </span>\n }\n <input\n #chipInput\n [placeholder]=\"chips().length === 0 ? placeholder() : ''\"\n [disabled]=\"disabled()\"\n (keydown.enter)=\"addFromInput($event)\"\n (keydown.comma)=\"addFromInput($event)\"\n (keydown.backspace)=\"onBackspace($event)\"\n [attr.aria-label]=\"placeholder()\"\n />\n </div>\n `,\n styles: `\n :host { display: block; }\n `,\n})\nexport class NgOatChipInput {\n readonly placeholder = input('Add item...');\n readonly disabled = input(false);\n readonly variant = input<NgOatChipVariant>('default');\n readonly allowDuplicates = input(false);\n readonly maxChips = input(Infinity);\n\n readonly chips = model<string[]>([]);\n\n readonly chipAdded = output<string>();\n readonly chipRemovedEvent = output<string>();\n\n protected chipClass = computed(() => {\n const v = this.variant();\n return v !== 'default' ? `chip ${v}` : 'chip';\n });\n\n protected addFromInput(event: Event): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const val = input.value.replace(',', '').trim();\n\n if (!val) return;\n if (!this.allowDuplicates() && this.chips().includes(val)) return;\n if (this.chips().length >= this.maxChips()) return;\n\n this.chips.update(chips => [...chips, val]);\n this.chipAdded.emit(val);\n input.value = '';\n }\n\n removeChip(chip: string): void {\n this.chips.update(chips => chips.filter(c => c !== chip));\n this.chipRemovedEvent.emit(chip);\n }\n\n protected onBackspace(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.value === '' && this.chips().length > 0) {\n const removed = this.chips()[this.chips().length - 1];\n this.chips.update(chips => chips.slice(0, -1));\n this.chipRemovedEvent.emit(removed);\n }\n }\n\n focusInput(): void {\n const wrapper = (document.querySelector('.chip-input-wrapper input') as HTMLInputElement);\n wrapper?.focus();\n }\n}\n","import {\n Component, input, model, output, computed, signal,\n OnInit, OnDestroy, inject, PLATFORM_ID, ElementRef, viewChild,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport type NgOatCarouselOrientation = 'horizontal';\nexport type NgOatCarouselAspectRatio = 'auto' | '16:9' | '4:3' | '1:1';\n\nexport interface NgOatCarouselSlide {\n /** Image URL */\n src: string;\n /** Alt text for accessibility */\n alt: string;\n /** Optional caption title */\n title?: string;\n /** Optional caption description */\n description?: string;\n}\n\n/**\n * A configurable carousel / image slider with navigation, autoplay, dots, keyboard support, and captions.\n *\n * Usage:\n * ```html\n * <ng-oat-carousel [slides]=\"images\" [autoplay]=\"true\" [interval]=\"5000\"\n * [showDots]=\"true\" [showArrows]=\"true\" [loop]=\"true\"\n * aspectRatio=\"16:9\" (slideChange)=\"onSlide($event)\" />\n * ```\n *\n * Or with projected content:\n * ```html\n * <ng-oat-carousel [slideCount]=\"3\" [(activeIndex)]=\"idx\">\n * <div class=\"carousel-slide\">Custom slide 1</div>\n * <div class=\"carousel-slide\">Custom slide 2</div>\n * <div class=\"carousel-slide\">Custom slide 3</div>\n * </ng-oat-carousel>\n * ```\n */\n@Component({\n selector: 'ng-oat-carousel',\n host: {\n '[class]': 'hostClass()',\n 'role': 'region',\n '[attr.aria-roledescription]': '\"carousel\"',\n '[attr.aria-label]': 'ariaLabel()',\n '(keydown.ArrowLeft)': 'prev()',\n '(keydown.ArrowRight)': 'next()',\n '(mouseenter)': 'onMouseEnter()',\n '(mouseleave)': 'onMouseLeave()',\n '(focusin)': 'onMouseEnter()',\n '(focusout)': 'onMouseLeave()',\n '(touchstart)': 'onTouchStart($event)',\n '(touchmove)': 'onTouchMove($event)',\n '(touchend)': 'onTouchEnd()',\n '(mousedown)': 'onPointerDown($event)',\n 'tabindex': '0',\n },\n template: `\n <div\n #viewport\n class=\"carousel-viewport\"\n [class.no-transition]=\"noTransition()\"\n [class.dragging]=\"isDragging()\"\n [style.transform]=\"viewportTransform()\"\n aria-live=\"off\"\n >\n @if (slides().length) {\n @for (slide of slides(); track slide.src; let i = $index) {\n <div\n class=\"carousel-slide\"\n role=\"group\"\n [attr.aria-roledescription]=\"'slide'\"\n [attr.aria-label]=\"(i + 1) + ' of ' + slides().length\"\n [attr.aria-hidden]=\"i !== activeIndex()\"\n >\n <img [src]=\"slide.src\" [alt]=\"slide.alt\" loading=\"lazy\" />\n @if (showCaptions() && (slide.title || slide.description)) {\n <div class=\"carousel-caption\">\n @if (slide.title) { <h3>{{ slide.title }}</h3> }\n @if (slide.description) { <p>{{ slide.description }}</p> }\n </div>\n }\n </div>\n }\n } @else {\n <ng-content />\n }\n </div>\n\n @if (showArrows() && totalSlides() > 1) {\n <button\n class=\"carousel-prev\"\n type=\"button\"\n (click)=\"prev()\"\n [disabled]=\"!loop() && activeIndex() === 0\"\n aria-label=\"Previous slide\"\n >\n <\n </button>\n <button\n class=\"carousel-next\"\n type=\"button\"\n (click)=\"next()\"\n [disabled]=\"!loop() && activeIndex() === totalSlides() - 1\"\n aria-label=\"Next slide\"\n >\n >\n </button>\n }\n\n @if (showDots() && totalSlides() > 1) {\n <div class=\"carousel-dots\" [class.overlay]=\"dotsOverlay()\" role=\"tablist\" aria-label=\"Slide navigation\">\n @for (dot of dotsArray(); track dot; let i = $index) {\n <button\n class=\"carousel-dot\"\n [class.active]=\"i === activeIndex()\"\n (click)=\"goTo(i)\"\n role=\"tab\"\n [attr.aria-selected]=\"i === activeIndex()\"\n [attr.aria-label]=\"'Go to slide ' + (i + 1)\"\n ></button>\n }\n </div>\n }\n `,\n styles: `\n :host { display: block; outline: none; }\n :host:focus-visible {\n outline: 2px solid var(--ring);\n outline-offset: 2px;\n border-radius: var(--radius-large);\n }\n `,\n})\nexport class NgOatCarousel implements OnInit, OnDestroy {\n /** Array of slide data (use this OR project content children) */\n readonly slides = input<NgOatCarouselSlide[]>([]);\n\n /** For projected content: total number of slides */\n readonly slideCount = input(0);\n\n /** Auto-play slides */\n readonly autoplay = input(false);\n\n /** Autoplay interval in ms */\n readonly interval = input(5000);\n\n /** Loop back to start after last slide */\n readonly loop = input(true);\n\n /** Show previous/next arrow buttons */\n readonly showArrows = input(true);\n\n /** Show dot indicators */\n readonly showDots = input(true);\n\n /** Position dots over the slides vs below */\n readonly dotsOverlay = input(false);\n\n /** Show slide captions (from slide data) */\n readonly showCaptions = input(true);\n\n /** Aspect ratio constraint */\n readonly aspectRatio = input<NgOatCarouselAspectRatio>('auto');\n\n /** Pause autoplay on hover/focus */\n readonly pauseOnHover = input(true);\n\n /** Accessible label for the carousel region */\n readonly ariaLabel = input('Image carousel');\n\n /** Currently active slide index (two-way) */\n readonly activeIndex = model(0);\n\n /** Emits when the active slide changes */\n readonly slideChange = output<number>();\n\n protected noTransition = signal(false);\n protected isDragging = signal(false);\n\n private platformId = inject(PLATFORM_ID);\n private hostEl = inject(ElementRef);\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n private paused = false;\n\n // Touch / pointer drag state\n private dragStartX = 0;\n private dragCurrentX = 0;\n private dragDelta = signal(0);\n private pointerMoveHandler = (e: MouseEvent) => this.onPointerMove(e);\n private pointerUpHandler = () => this.onPointerUp();\n\n protected totalSlides = computed(() => {\n return this.slides().length || this.slideCount();\n });\n\n protected dotsArray = computed(() => {\n return Array.from({ length: this.totalSlides() }, (_, i) => i);\n });\n\n protected viewportTransform = computed(() => {\n const base = this.activeIndex() * 100;\n const delta = this.dragDelta();\n if (delta !== 0) {\n const el = this.hostEl.nativeElement as HTMLElement;\n const pct = (delta / (el.offsetWidth || 1)) * 100;\n return `translateX(calc(-${base}% + ${pct}px))`;\n }\n return `translateX(-${base}%)`;\n });\n\n protected hostClass = computed(() => {\n const classes = ['carousel'];\n const ratio = this.aspectRatio();\n if (ratio === '16:9') classes.push('ratio-16-9');\n else if (ratio === '4:3') classes.push('ratio-4-3');\n else if (ratio === '1:1') classes.push('ratio-1-1');\n return classes.join(' ');\n });\n\n ngOnInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.startAutoplay();\n }\n }\n\n ngOnDestroy(): void {\n this.stopAutoplay();\n if (isPlatformBrowser(this.platformId)) {\n document.removeEventListener('mousemove', this.pointerMoveHandler);\n document.removeEventListener('mouseup', this.pointerUpHandler);\n }\n }\n\n // ── Touch swipe ──\n protected onTouchStart(e: TouchEvent): void {\n this.dragStartX = e.touches[0].clientX;\n this.dragCurrentX = this.dragStartX;\n this.isDragging.set(true);\n }\n\n protected onTouchMove(e: TouchEvent): void {\n if (!this.isDragging()) return;\n this.dragCurrentX = e.touches[0].clientX;\n this.dragDelta.set(this.dragCurrentX - this.dragStartX);\n }\n\n protected onTouchEnd(): void {\n this.finishDrag();\n }\n\n // ── Mouse drag ──\n protected onPointerDown(e: MouseEvent): void {\n if (e.button !== 0) return; // left click only\n e.preventDefault();\n this.dragStartX = e.clientX;\n this.dragCurrentX = this.dragStartX;\n this.isDragging.set(true);\n document.addEventListener('mousemove', this.pointerMoveHandler);\n document.addEventListener('mouseup', this.pointerUpHandler);\n }\n\n private onPointerMove(e: MouseEvent): void {\n if (!this.isDragging()) return;\n this.dragCurrentX = e.clientX;\n this.dragDelta.set(this.dragCurrentX - this.dragStartX);\n }\n\n private onPointerUp(): void {\n document.removeEventListener('mousemove', this.pointerMoveHandler);\n document.removeEventListener('mouseup', this.pointerUpHandler);\n this.finishDrag();\n }\n\n private finishDrag(): void {\n const delta = this.dragDelta();\n const threshold = 50; // px needed to count as a swipe\n\n this.isDragging.set(false);\n this.dragDelta.set(0);\n\n if (Math.abs(delta) > threshold) {\n if (delta < 0) {\n this.next();\n } else {\n this.prev();\n }\n }\n }\n\n /** Navigate to the next slide */\n next(): void {\n const total = this.totalSlides();\n if (total <= 1) return;\n\n const current = this.activeIndex();\n if (current < total - 1) {\n this.goTo(current + 1);\n } else if (this.loop()) {\n this.goTo(0);\n }\n }\n\n /** Navigate to the previous slide */\n prev(): void {\n const total = this.totalSlides();\n if (total <= 1) return;\n\n const current = this.activeIndex();\n if (current > 0) {\n this.goTo(current - 1);\n } else if (this.loop()) {\n this.goTo(total - 1);\n }\n }\n\n /** Go to a specific slide index */\n goTo(index: number): void {\n const total = this.totalSlides();\n if (index < 0 || index >= total) return;\n this.activeIndex.set(index);\n this.slideChange.emit(index);\n this.resetAutoplay();\n }\n\n protected onMouseEnter(): void {\n if (this.pauseOnHover()) {\n this.paused = true;\n this.stopAutoplay();\n }\n }\n\n protected onMouseLeave(): void {\n if (this.pauseOnHover()) {\n this.paused = false;\n this.startAutoplay();\n }\n }\n\n private startAutoplay(): void {\n if (!this.autoplay() || this.paused) return;\n this.stopAutoplay();\n this.autoplayTimer = setInterval(() => this.next(), this.interval());\n }\n\n private stopAutoplay(): void {\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n }\n\n private resetAutoplay(): void {\n if (this.autoplay() && !this.paused) {\n this.stopAutoplay();\n this.startAutoplay();\n }\n }\n}\n","import {\n Component, input, output, computed, signal,\n OnInit, OnDestroy, inject, PLATFORM_ID, ElementRef, viewChild, AfterViewInit,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport interface NgOatProductCard {\n /** Unique identifier */\n id: string | number;\n /** Product image URL */\n image: string;\n /** Image alt text (A11y) */\n imageAlt: string;\n /** Product title */\n title: string;\n /** Short description */\n description?: string;\n /** Formatted price (e.g. \"$29.99\") */\n price?: string;\n /** Original price for strikethrough */\n originalPrice?: string;\n /** Rating 0-5 */\n rating?: number;\n /** Number of reviews */\n reviewCount?: number;\n /** Badge text (e.g. \"Sale\", \"New\") */\n badge?: string;\n /** Badge variant */\n badgeVariant?: 'default' | 'success' | 'warning' | 'danger';\n /** Any extra data the consumer needs */\n [key: string]: unknown;\n}\n\n/**\n * A horizontal scrollable card carousel for showcasing products, articles, or any card-based content.\n * Shows multiple cards at once, with left/right arrows on desktop and native touch scroll on mobile.\n *\n * Usage:\n * ```html\n * <ng-oat-card-carousel\n * heading=\"Featured Products\"\n * [items]=\"products\"\n * [showSeeAll]=\"true\"\n * (seeAllClick)=\"goToProducts()\"\n * (cardClick)=\"onProduct($event)\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-card-carousel',\n host: {\n 'class': 'card-carousel',\n 'role': 'region',\n '[attr.aria-label]': 'ariaLabel()',\n },\n template: `\n @if (heading()) {\n <div class=\"card-carousel-header\">\n <h3>{{ heading() }}</h3>\n <div class=\"card-carousel-actions\">\n @if (showSeeAll()) {\n <button class=\"card-carousel-see-all\" type=\"button\" (click)=\"seeAllClick.emit()\">\n See All →\n </button>\n }\n <button\n class=\"card-carousel-nav\"\n type=\"button\"\n (click)=\"scrollPrev()\"\n [disabled]=\"!canScrollPrev()\"\n aria-label=\"Scroll left\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <button\n class=\"card-carousel-nav\"\n type=\"button\"\n (click)=\"scrollNext()\"\n [disabled]=\"!canScrollNext()\"\n aria-label=\"Scroll right\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n </div>\n }\n\n <div\n #track\n class=\"card-carousel-track\"\n role=\"list\"\n (scroll)=\"onScroll()\"\n >\n @for (item of items(); track item.id; let i = $index) {\n <article\n class=\"product-card\"\n role=\"listitem\"\n [attr.aria-label]=\"item.title\"\n tabindex=\"0\"\n (click)=\"cardClick.emit(item)\"\n (keydown.enter)=\"cardClick.emit(item)\"\n >\n <div class=\"product-card-image\">\n <img [src]=\"item.image\" [alt]=\"item.imageAlt\" loading=\"lazy\" />\n @if (item.badge) {\n <span class=\"product-card-badge\">\n <span class=\"badge\" [class]=\"item.badgeVariant || ''\">{{ item.badge }}</span>\n </span>\n }\n </div>\n <div class=\"product-card-body\">\n <h4 class=\"product-card-title\">{{ item.title }}</h4>\n @if (item.description) {\n <p class=\"product-card-description\">{{ item.description }}</p>\n }\n <div class=\"product-card-meta\">\n @if (item.price) {\n <span class=\"product-card-price\">\n {{ item.price }}\n @if (item.originalPrice) {\n <span class=\"product-card-price-original\">{{ item.originalPrice }}</span>\n }\n </span>\n }\n @if (item.rating != null) {\n <span class=\"product-card-rating\" [attr.aria-label]=\"item.rating + ' out of 5 stars'\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n {{ item.rating }}\n @if (item.reviewCount != null) {\n <span>({{ item.reviewCount }})</span>\n }\n </span>\n }\n </div>\n </div>\n </article>\n }\n </div>\n `,\n styles: `\n :host { display: block; }\n `,\n})\nexport class NgOatCardCarousel implements AfterViewInit, OnDestroy {\n /** Section heading */\n readonly heading = input('');\n\n /** Accessible label for the region */\n readonly ariaLabel = input('Product carousel');\n\n /** Array of product/card items */\n readonly items = input<NgOatProductCard[]>([]);\n\n /** Show \"See All\" button */\n readonly showSeeAll = input(false);\n\n /** How many pixels to scroll per arrow click */\n readonly scrollAmount = input(0); // 0 = auto-calculate based on card width\n\n /** Emits when \"See All\" is clicked */\n readonly seeAllClick = output<void>();\n\n /** Emits when a card is clicked */\n readonly cardClick = output<NgOatProductCard>();\n\n protected canScrollPrev = signal(false);\n protected canScrollNext = signal(true);\n\n private trackRef = viewChild<ElementRef<HTMLElement>>('track');\n private platformId = inject(PLATFORM_ID);\n private resizeObserver: ResizeObserver | null = null;\n\n ngAfterViewInit(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.updateScrollState();\n // Watch for resize to update arrow states\n const el = this.trackRef()?.nativeElement;\n if (el && typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.updateScrollState());\n this.resizeObserver.observe(el);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n protected onScroll(): void {\n this.updateScrollState();\n }\n\n scrollNext(): void {\n const el = this.trackRef()?.nativeElement;\n if (!el) return;\n const amount = this.scrollAmount() || this.getAutoScrollAmount(el);\n el.scrollBy({ left: amount, behavior: 'smooth' });\n }\n\n scrollPrev(): void {\n const el = this.trackRef()?.nativeElement;\n if (!el) return;\n const amount = this.scrollAmount() || this.getAutoScrollAmount(el);\n el.scrollBy({ left: -amount, behavior: 'smooth' });\n }\n\n private getAutoScrollAmount(el: HTMLElement): number {\n // Scroll by ~one card width + gap\n const firstCard = el.querySelector('.product-card') as HTMLElement | null;\n if (firstCard) {\n const style = getComputedStyle(el);\n const gap = parseFloat(style.gap) || 16;\n return firstCard.offsetWidth + gap;\n }\n return el.clientWidth * 0.8;\n }\n\n private updateScrollState(): void {\n const el = this.trackRef()?.nativeElement;\n if (!el) return;\n this.canScrollPrev.set(el.scrollLeft > 2);\n this.canScrollNext.set(el.scrollLeft + el.clientWidth < el.scrollWidth - 2);\n }\n}\n","import { Component, input, model, computed } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { ValidationError } from '@angular/forms/signals';\n\nexport type NgOatInputType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search'\n | 'date'\n | 'datetime-local'\n | 'time'\n | 'month'\n | 'week'\n | 'color';\n\n/**\n * Oat-styled text input implementing `FormValueControl<string>`.\n * Works seamlessly with Signal Forms `[formField]` — no CVA needed.\n *\n * **Signal Forms:**\n * ```html\n * <ng-oat-input label=\"Name\" [formField]=\"myForm.name\" />\n * ```\n *\n * **Standalone:**\n * ```html\n * <ng-oat-input label=\"Email\" type=\"email\" [(value)]=\"email\" placeholder=\"you@example.com\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-input',\n template: `\n @if (label()) {\n <label [attr.for]=\"inputId()\">{{ label() }}</label>\n }\n <input\n [id]=\"inputId()\"\n [type]=\"type()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.min]=\"min() ?? null\"\n [attr.max]=\"max() ?? null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n @if (showErrors()) {\n @for (err of errors(); track $index) {\n <small class=\"error\">{{ err.message }}</small>\n }\n }\n `,\n styles: `\n :host { display: block; }\n .error { color: var(--danger); display: block; font-size: var(--text-8); margin-block-start: var(--space-1); }\n `,\n})\nexport class NgOatInput implements FormValueControl<string> {\n private static nextId = 0;\n\n readonly value = model('');\n\n readonly checked = undefined;\n\n // --- Signal Forms optional bindings ---\n readonly disabled = input(false);\n readonly readonly = input(false);\n readonly required = input(false);\n readonly invalid = input(false);\n readonly errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n readonly touched = model(false);\n readonly min = input<number | undefined>(undefined);\n readonly max = input<number | undefined>(undefined);\n readonly minLength = input<number | undefined>(undefined);\n readonly maxLength = input<number | undefined>(undefined);\n\n // --- Component-specific inputs ---\n readonly label = input('');\n readonly type = input<NgOatInputType>('text');\n readonly placeholder = input('');\n readonly showErrors = input(true);\n\n protected inputId = computed(() => `ng-oat-input-${++NgOatInput.nextId}`);\n\n onInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n }\n\n onBlur(): void {\n this.touched.set(true);\n }\n\n focus(options?: FocusOptions): void {\n const input = document.getElementById(this.inputId());\n input?.focus(options);\n }\n}\n","import { Component, input, model, computed } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { ValidationError } from '@angular/forms/signals';\n\n/**\n * Oat-styled textarea implementing `FormValueControl<string>`.\n * Works seamlessly with Signal Forms `[formField]` — no CVA needed.\n *\n * **Signal Forms:**\n * ```html\n * <ng-oat-textarea label=\"Bio\" [formField]=\"myForm.bio\" />\n * ```\n *\n * **Standalone:**\n * ```html\n * <ng-oat-textarea label=\"Notes\" [(value)]=\"notes\" rows=\"5\" placeholder=\"Enter notes...\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-textarea',\n template: `\n @if (label()) {\n <label [attr.for]=\"textareaId()\">{{ label() }}</label>\n }\n <textarea\n [id]=\"textareaId()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [readOnly]=\"readonly()\"\n [required]=\"required()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.minlength]=\"minLength() ?? null\"\n [attr.maxlength]=\"maxLength() ?? null\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n ></textarea>\n @if (showErrors()) {\n @for (err of errors(); track $index) {\n <small class=\"error\">{{ err.message }}</small>\n }\n }\n `,\n styles: `\n :host { display: block; }\n .error { color: var(--danger); display: block; font-size: var(--text-8); margin-block-start: var(--space-1); }\n `,\n})\nexport class NgOatTextarea implements FormValueControl<string> {\n private static nextId = 0;\n\n readonly value = model('');\n readonly checked = undefined;\n\n readonly disabled = input(false);\n readonly readonly = input(false);\n readonly required = input(false);\n readonly invalid = input(false);\n readonly minLength = input<number | undefined>(undefined);\n readonly maxLength = input<number | undefined>(undefined);\n readonly errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n readonly touched = model(false);\n\n // --- Component-specific inputs ---\n readonly label = input('');\n readonly placeholder = input('');\n readonly rows = input(4);\n readonly showErrors = input(true);\n\n protected textareaId = computed(() => `ng-oat-ta-${++NgOatTextarea.nextId}`);\n\n onInput(event: Event): void {\n const val = (event.target as HTMLTextAreaElement).value;\n this.value.set(val);\n }\n\n onBlur(): void {\n this.touched.set(true);\n }\n\n focus(options?: FocusOptions): void {\n const el = document.getElementById(this.textareaId());\n el?.focus(options);\n }\n}\n","import { Component, input, model, computed } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { ValidationError } from '@angular/forms/signals';\n\nexport interface NgOatSelectOption {\n /** Display label */\n label: string;\n /** Option value */\n value: string;\n /** Disabled flag */\n disabled?: boolean;\n}\n\n/**\n * Oat-styled select implementing `FormValueControl<string>`.\n * Works seamlessly with Signal Forms `[formField]` — no CVA needed.\n *\n * **Signal Forms:**\n * ```html\n * <ng-oat-select label=\"Country\" [options]=\"countries\" [formField]=\"myForm.country\" />\n * ```\n *\n * **Standalone:**\n * ```html\n * <ng-oat-select label=\"Color\" [options]=\"colors\" [(value)]=\"selectedColor\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-select',\n template: `\n @if (label()) {\n <label [attr.for]=\"selectId()\">{{ label() }}</label>\n }\n <select\n [id]=\"selectId()\"\n [value]=\"value()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"invalid() || null\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur()\"\n >\n @if (placeholder()) {\n <option value=\"\" disabled [selected]=\"!value()\">{{ placeholder() }}</option>\n }\n @for (opt of options(); track opt.value) {\n <option\n [value]=\"opt.value\"\n [disabled]=\"opt.disabled ?? false\"\n [selected]=\"opt.value === value()\">\n {{ opt.label }}\n </option>\n }\n </select>\n @if (showErrors()) {\n @for (err of errors(); track $index) {\n <small class=\"error\">{{ err.message }}</small>\n }\n }\n `,\n styles: `\n :host { display: block; }\n .error { color: var(--danger); display: block; font-size: var(--text-8); margin-block-start: var(--space-1); }\n `,\n})\nexport class NgOatSelect implements FormValueControl<string> {\n private static nextId = 0;\n readonly checked = undefined;\n readonly value = model('');\n\n // --- Signal Forms optional bindings ---\n readonly disabled = input(false);\n readonly required = input(false);\n readonly invalid = input(false);\n readonly errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n readonly touched = model(false);\n\n // --- Component-specific inputs ---\n readonly label = input('');\n readonly placeholder = input('');\n readonly options = input.required<NgOatSelectOption[]>();\n readonly showErrors = input(true);\n\n protected selectId = computed(() => `ng-oat-sel-${++NgOatSelect.nextId}`);\n\n onChange(event: Event): void {\n const val = (event.target as HTMLSelectElement).value;\n this.value.set(val);\n }\n\n onBlur(): void {\n this.touched.set(true);\n }\n\n focus(options?: FocusOptions): void {\n const el = document.getElementById(this.selectId());\n el?.focus(options);\n }\n}\n","import { Component, input, model } from '@angular/core';\nimport type { FormCheckboxControl } from '@angular/forms/signals';\n\n/**\n * Oat-styled checkbox implementing `FormCheckboxControl`.\n * Works seamlessly with Signal Forms `[formField]` — no CVA needed.\n *\n * **Signal Forms:**\n * ```html\n * <ng-oat-checkbox label=\"Accept terms\" [formField]=\"myForm.accepted\" />\n * ```\n *\n * **Standalone:**\n * ```html\n * <ng-oat-checkbox label=\"Remember me\" [(checked)]=\"rememberMe\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-checkbox',\n template: `\n <label>\n <input\n type=\"checkbox\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n />\n {{ label() }}\n </label>\n `,\n})\nexport class NgOatCheckbox implements FormCheckboxControl {\n readonly checked = model(false);\n readonly disabled = input(false);\n\n /** FormCheckboxControl requires `value` to be undefined */\n readonly value = undefined;\n\n // --- Component-specific inputs ---\n readonly label = input('');\n\n onChange(event: Event): void {\n const val = (event.target as HTMLInputElement).checked;\n this.checked.set(val);\n }\n}\n","import { Component, input, model, computed } from '@angular/core';\nimport type { FormValueControl } from '@angular/forms/signals';\nimport type { ValidationError } from '@angular/forms/signals';\n\nexport interface NgOatRadioOption {\n /** Display label */\n label: string;\n /** Option value */\n value: string;\n /** Disabled flag */\n disabled?: boolean;\n}\n\n/**\n * Oat-styled radio group implementing `FormValueControl<string>`.\n * Works seamlessly with Signal Forms `[formField]` — no CVA needed.\n *\n * **Signal Forms:**\n * ```html\n * <ng-oat-radio-group\n * label=\"Plan\"\n * [options]=\"[{label:'Free', value:'free'}, {label:'Pro', value:'pro'}]\"\n * [formField]=\"myForm.plan\" />\n * ```\n *\n * **Standalone:**\n * ```html\n * <ng-oat-radio-group\n * label=\"Gender\"\n * [options]=\"genders\"\n * [(value)]=\"selectedGender\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-radio-group',\n template: `\n @if (label()) {\n <fieldset>\n <legend>{{ label() }}</legend>\n @for (opt of options(); track opt.value) {\n <label>\n <input\n type=\"radio\"\n [name]=\"groupName()\"\n [value]=\"opt.value\"\n [checked]=\"opt.value === value()\"\n [disabled]=\"disabled() || (opt.disabled ?? false)\"\n (change)=\"onSelect(opt.value)\"\n />\n {{ opt.label }}\n </label>\n }\n </fieldset>\n } @else {\n @for (opt of options(); track opt.value) {\n <label>\n <input\n type=\"radio\"\n [name]=\"groupName()\"\n [value]=\"opt.value\"\n [checked]=\"opt.value === value()\"\n [disabled]=\"disabled() || (opt.disabled ?? false)\"\n (change)=\"onSelect(opt.value)\"\n />\n {{ opt.label }}\n </label>\n }\n }\n @if (showErrors()) {\n @for (err of errors(); track $index) {\n <small class=\"error\">{{ err.message }}</small>\n }\n }\n `,\n styles: `\n :host { display: block; }\n fieldset { border: none; padding: 0; margin: 0; }\n legend { font-size: var(--text-7); font-weight: var(--font-medium); margin-block-end: var(--space-1); }\n label { display: flex; align-items: center; gap: var(--space-2); margin-block-end: var(--space-1); }\n .error { color: var(--danger); display: block; font-size: var(--text-8); margin-block-start: var(--space-1); }\n `,\n})\nexport class NgOatRadioGroup implements FormValueControl<string> {\n private static nextId = 0;\n\n readonly value = model('');\n\n readonly checked = undefined;\n\n // --- Signal Forms optional bindings ---\n readonly disabled = input(false);\n readonly required = input(false);\n readonly invalid = input(false);\n readonly errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n readonly touched = model(false);\n\n // --- Component-specific inputs ---\n readonly label = input('');\n readonly options = input.required<NgOatRadioOption[]>();\n readonly showErrors = input(true);\n\n protected groupName = computed(() => `ng-oat-radio-${++NgOatRadioGroup.nextId}`);\n\n onSelect(val: string): void {\n this.value.set(val);\n this.touched.set(true);\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport type { FieldState } from '@angular/forms/signals';\n\n/**\n * Displays validation errors for a Signal Forms field.\n * Shows errors only when the field has been touched and is invalid.\n *\n * Usage:\n * ```html\n * <ng-oat-input label=\"Email\" [formField]=\"myForm.email\" />\n * <ng-oat-form-error [control]=\"myForm.email\" />\n * ```\n */\n@Component({\n selector: 'ng-oat-form-error',\n template: `\n @if (shouldShowError()) {\n @for (error of control().errors(); track error.kind) {\n <small class=\"error\">{{ error.message }}</small>\n }\n }\n `,\n styles: `\n :host {\n display: block;\n }\n .error {\n display: block;\n font-size: var(--text-8);\n font-weight: var(--font-normal);\n color: var(--danger);\n margin-block-start: var(--space-1);\n }\n `,\n})\nexport class NgOatFormError {\n readonly control = input.required<FieldState<unknown>>();\n\n protected readonly shouldShowError = computed(() => {\n const field = this.control();\n return !field.valid() && field.touched();\n });\n}\n","// Components barrel export\nexport { NgOatBadge, type NgOatBadgeVariant } from './badge';\nexport { NgOatAlert, type NgOatAlertVariant } from './alert';\nexport { NgOatButton, type NgOatButtonVariant, type NgOatButtonStyle, type NgOatButtonSize } from './button';\nexport { NgOatSplitButton } from './split-button';\nexport { NgOatBreadcrumb, type OatBreadcrumbItem } from './breadcrumb';\nexport { NgOatPagination } from './pagination';\nexport { NgOatProgress } from './progress';\nexport { NgOatMeter } from './meter';\nexport { NgOatSpinner, type NgOatSpinnerSize } from './spinner';\nexport { NgOatSwitch } from './switch';\nexport { NgOatSkeleton, type NgOatSkeletonType } from './skeleton';\nexport { NgOatAccordion, type NgOatAccordionItem } from './accordion';\nexport { NgOatCard, NgOatCardHeader, NgOatCardFooter } from './card';\nexport { NgOatTable, type NgOatTableColumn } from './table';\n\n// Component wrappers for directives\nexport { NgOatDropdownComponent } from './dropdown';\nexport { NgOatTooltipComponent } from './tooltip';\nexport { NgOatSidebarComponent } from './sidebar';\nexport { NgOatTabsComponent, type NgOatTabItem } from './tabs';\nexport { NgOatDialogComponent } from './dialog';\n\nexport { NgOatAvatar, type NgOatAvatarSize } from './avatar';\nexport { NgOatFileUpload } from './file-upload';\nexport { NgOatInputOtp } from './input-otp';\nexport { NgOatSearchInput } from './search-input';\nexport { NgOatSeparator, type NgOatSeparatorOrientation } from './separator';\nexport { NgOatToggle, NG_OAT_TOGGLE_GROUP, type NgOatToggleGroupHost, type NgOatToggleVariant, type NgOatToggleSize } from './toggle';\nexport { NgOatToggleGroup, type NgOatToggleGroupVariant, type NgOatToggleGroupSize } from './toggle-group';\nexport { NgOatChip, NgOatChipGroup, NgOatChipInput, NG_OAT_CHIP_GROUP, type NgOatChipGroupHost, type NgOatChipVariant, type NgOatChipSize } from './chips';\nexport { NgOatCarousel, type NgOatCarouselSlide, type NgOatCarouselAspectRatio, type NgOatCarouselOrientation } from './carousel';\nexport { NgOatCardCarousel, type NgOatProductCard } from './card-carousel';\n\n// Signal Forms custom field components\nexport { NgOatInput, type NgOatInputType } from './forms/input';\nexport { NgOatTextarea } from './forms/textarea';\nexport { NgOatSelect, type NgOatSelectOption } from './forms/select';\nexport { NgOatCheckbox } from './forms/checkbox';\nexport { NgOatRadioGroup, type NgOatRadioOption } from './forms/radio-group';\nexport { NgOatFormError } from './forms/form-error';\n","/** Upstream Oat version this build is synced to. */\nexport const OAT_VERSION = '0.0.0-vendored';\n\nimport { InjectionToken } from '@angular/core';\n\n/** Injection token exposing the upstream Oat version string. */\nexport const OAT_VERSION_TOKEN = new InjectionToken<string>('OAT_VERSION', {\n providedIn: 'root',\n factory: () => OAT_VERSION,\n});\n","/*\n * Public API Surface of ng-oat\n */\n\n// Providers\nexport { provideNgOat } from './lib/providers/provide-oat';\nexport type { NgOatOptions } from './lib/providers/provide-oat';\nexport { provideNgOatTheme, NgOatThemeRef } from './lib/providers/provide-oat-theme';\nexport type { NgOatThemeConfig } from './lib/providers/provide-oat-theme';\n\n// Tokens\nexport { OAT_TOKEN_MAP } from './lib/tokens/token-map';\nexport type { OatTokens } from './lib/tokens/token-map';\n\n// Directives\nexport { NgOatDropdown } from './lib/directives/dropdown';\nexport { NgOatTooltip } from './lib/directives/tooltip';\nexport { NgOatSidebar } from './lib/directives/sidebar';\nexport { NgOatTabs } from './lib/directives/tabs';\nexport { NgOatDialog } from './lib/directives/dialog';\n\n// Services\nexport { NgOatToast } from './lib/services/toast';\nexport type { NgOatToastOptions, NgOatToastPlacement, NgOatToastVariant } from './lib/services/toast';\n\n// Components\nexport {\n NgOatBadge,\n NgOatAlert,\n NgOatButton,\n NgOatSplitButton,\n NgOatBreadcrumb,\n NgOatPagination,\n NgOatProgress,\n NgOatMeter,\n NgOatSpinner,\n NgOatSwitch,\n NgOatSkeleton,\n NgOatAccordion,\n NgOatCard,\n NgOatCardHeader,\n NgOatCardFooter,\n NgOatTable,\n} from './lib/components';\nexport type {\n NgOatBadgeVariant,\n NgOatAlertVariant,\n NgOatButtonVariant,\n NgOatButtonStyle,\n NgOatButtonSize,\n OatBreadcrumbItem,\n NgOatSpinnerSize,\n NgOatSkeletonType,\n NgOatAccordionItem,\n NgOatTableColumn,\n} from './lib/components';\n\n// New components\nexport {\n NgOatAvatar,\n NgOatFileUpload,\n NgOatInputOtp,\n NgOatSearchInput,\n NgOatSeparator,\n NgOatToggle,\n NgOatToggleGroup,\n NG_OAT_TOGGLE_GROUP,\n NgOatChip,\n NgOatChipGroup,\n NgOatChipInput,\n NG_OAT_CHIP_GROUP,\n NgOatCarousel,\n NgOatCardCarousel,\n} from './lib/components';\nexport type {\n NgOatAvatarSize,\n NgOatSeparatorOrientation,\n NgOatToggleGroupHost,\n NgOatToggleVariant,\n NgOatToggleSize,\n NgOatToggleGroupVariant,\n NgOatToggleGroupSize,\n NgOatChipVariant,\n NgOatChipSize,\n NgOatChipGroupHost,\n NgOatCarouselSlide,\n NgOatCarouselAspectRatio,\n NgOatCarouselOrientation,\n NgOatProductCard,\n} from './lib/components';\n\n// Component wrappers (full Angular components for directive counterparts)\nexport {\n NgOatDropdownComponent,\n NgOatTooltipComponent,\n NgOatSidebarComponent,\n NgOatTabsComponent,\n NgOatDialogComponent,\n} from './lib/components';\nexport type { NgOatTabItem } from './lib/components';\n\n// Signal Forms custom field components\nexport {\n NgOatInput,\n NgOatTextarea,\n NgOatSelect,\n NgOatCheckbox,\n NgOatRadioGroup,\n NgOatFormError,\n} from './lib/components';\nexport type {\n NgOatInputType,\n NgOatSelectOption,\n NgOatRadioOption,\n} from './lib/components';\n\n// Utilities\nexport { OAT_VERSION, OAT_VERSION_TOKEN } from './lib/util/oat-version';\nexport { TOOLTIP_POSITIONER } from './lib/util/tooltip-positioner';\nexport type { TooltipPositioner } from './lib/util/tooltip-positioner';\nexport type { Placement } from './lib/util/positioning';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["MOBILE_BREAKPOINT"],"mappings":";;;;AAuBA,MAAM,eAAe,GAA2B;IAC9C,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AACnC,IAAA,qBAAqB,EAAE,IAAI;AAC3B,IAAA,QAAQ,EAAE,YAAY;CACvB;AAED,SAAS,SAAS,CAChB,GAAa,EACb,GAAsB,EACtB,KAA6B,EAC7B,EAAU,EAAA;IAEV,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,QAAA,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC1B,YAAA,OAAO,EAAE;YACT;QACF;QACA,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,QAAA,EAAE,CAAC,EAAE,GAAG,EAAE;QACV,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,OAAO,EAAE,CAAC;AAC5C,QAAA,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,KAAK,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,EAAA,EAAK,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAC;AAChH,QAAA,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1B,IAAA,CAAC,CAAC;AACJ;AAEA;;;;;;;;;AASG;AACG,SAAU,YAAY,CAAC,OAAsB,EAAA;AACjD,IAAA,MAAM,IAAI,GAAG;AACX,QAAA,GAAG,eAAe;AAClB,QAAA,GAAG,OAAO;QACV,MAAM,EAAE,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE;KAC1D;AAED,IAAA,OAAO,wBAAwB,CAAC;QAC9B,qBAAqB,CAAC,MAAK;AACzB,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;gBAAE;AAEpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAoB,EAAE;;YAGpC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;AACrE,YAAA,IAAI,OAAO,KAAK,MAAM,EAAE;gBACtB,QAAQ,CAAC,IAAI,CACX,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc,EAAE,EAAE,YAAY,CAAC,CACzF;;gBAED,QAAQ,CAAC,IAAI,CACX,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA,EAAG,IAAI,CAAA,WAAA,CAAa,EAAE,EAAE,mBAAmB,CAAC,CAC/F;YACH;;YAGA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;AACpE,YAAA,IAAI,MAAM,KAAK,QAAQ,EAAE;gBACvB,QAAQ,CAAC,IAAI,CACX,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,WAAA,CAAa,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,CAChF;YACH;AAEA,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAK,EAAE,CAAC,CAAC;AAC7C,QAAA,CAAC,CAAC;AACH,KAAA,CAAC;AACJ;;ACZA;;;AAGG;AACI,MAAM,aAAa,GAA2B;AACnD,IAAA,kBAAkB,EAAE,cAAc;AAClC,IAAA,kBAAkB,EAAE,cAAc;AAClC,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,uBAAuB,EAAE,mBAAmB;AAC5C,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,0BAA0B,EAAE,sBAAsB;AAClD,IAAA,iBAAiB,EAAE,aAAa;AAChC,IAAA,4BAA4B,EAAE,wBAAwB;AACtD,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,wBAAwB,EAAE,oBAAoB;AAC9C,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,wBAAwB,EAAE,oBAAoB;AAC9C,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,yBAAyB,EAAE,qBAAqB;AAChD,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,0BAA0B,EAAE,sBAAsB;AAClD,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,0BAA0B,EAAE,sBAAsB;AAClD,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,aAAa,EAAE,SAAS;AACxB,IAAA,YAAY,EAAE,QAAQ;AACtB,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,oBAAoB,EAAE,gBAAgB;AACtC,IAAA,qBAAqB,EAAE,iBAAiB;AACxC,IAAA,oBAAoB,EAAE,gBAAgB;AACtC,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,iBAAiB,EAAE,aAAa;AAChC,IAAA,iBAAiB,EAAE,aAAa;AAChC,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,oBAAoB,EAAE,gBAAgB;AACtC,IAAA,sBAAsB,EAAE,kBAAkB;AAC1C,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,mBAAmB,EAAE,eAAe;AACpC,IAAA,qBAAqB,EAAE,iBAAiB;AACxC,IAAA,iBAAiB,EAAE,aAAa;AAChC,IAAA,oBAAoB,EAAE,gBAAgB;AACtC,IAAA,qBAAqB,EAAE,iBAAiB;AACxC,IAAA,oBAAoB,EAAE,gBAAgB;AACtC,IAAA,uBAAuB,EAAE,mBAAmB;AAC5C,IAAA,kBAAkB,EAAE,cAAc;AAClC,IAAA,kBAAkB,EAAE,cAAc;AAClC,IAAA,eAAe,EAAE,WAAW;AAC5B,IAAA,kBAAkB,EAAE,cAAc;AAClC,IAAA,iBAAiB,EAAE,aAAa;AAChC,IAAA,gBAAgB,EAAE,YAAY;AAC9B,IAAA,qBAAqB,EAAE,iBAAiB;AACxC,IAAA,qBAAqB,EAAE,iBAAiB;AACxC,IAAA,qBAAqB,EAAE,iBAAiB;;;AC3I1C;;;AAGG;MAEU,aAAa,CAAA;AAChB,IAAA,aAAa,GAAG,IAAI,GAAG,EAAkB;IACzC,aAAa,GAAuB,IAAI;AAExC,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAG9B,IAAA,KAAK,CAAC,MAAwB,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/B;;AAGA,IAAA,SAAS,CAAC,MAAiB,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AACzB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjD,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;;gBAEjB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;gBAChD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;;;AAIlC,gBAAA,MAAM,QAAQ,GAAI,aAAwC,CAAC,GAAG,CAAC;gBAC/D,IAAI,QAAQ,EAAE;oBACZ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;oBACrD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;gBACzC;YACF;QACF;IACF;;IAGA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC;QAC9C;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;IAC5B;;AAGA,IAAA,QAAQ,CAAC,KAAqC,EAAA;;QAE5C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;;QAEzC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;AAEzB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE;gBAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;gBAChD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YACpC;QACF;IACF;;IAGA,SAAS,GAAA;QACP,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IAC/C;AAEQ,IAAA,aAAa,CAAC,KAAqC,EAAA;AACzD,QAAA,IAAI,KAAK,YAAY,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC5B;AAAO,aAAA,IAAI,KAAK,KAAK,OAAO,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe;QAC/C;aAAO;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAuB;QAC1E;IACF;uGAxEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAb,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;AA4ED;;;;;;;;;;;;;;;;;;;AAmBG;AACG,SAAU,iBAAiB,CAAC,MAAwB,EAAA;AACxD,IAAA,OAAO,wBAAwB,CAAC;QAC9B,aAAa;QACb,qBAAqB,CAAC,MAAK;AACzB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACxB,QAAA,CAAC,CAAC;AACH,KAAA,CAAC;AACJ;;ACnHA;;;;;;;;;;;;;;;;;;AAkBG;MAKU,aAAa,CAAA;AAChB,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAG/B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;;IAGtB,mBAAmB,GAAG,MAAM,EAAW;IAExC,SAAS,GAAuB,IAAI;IACpC,SAAS,GAAuB,IAAI;IACpC,cAAc,GAAgC,IAAI;AAE1D,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;YAEtD,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE;AAErB,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAM,KAAI;AAC/B,gBAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAM;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,YAAA,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC;AAE9D,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC7B,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAe,CAAC;AACrE,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI;IACjC;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI;IACjC;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI;IACnC;uGApDW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6CAA6C;AACvD,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;;;ACvBD;;;;;;;;AAQG;AACG,SAAU,eAAe,CAC7B,MAAmB,EACnB,QAAqB,EACrB,SAAA,GAAuB,KAAK,EAC5B,MAAM,GAAG,CAAC,EAAA;AAEV,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE;AACjD,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,qBAAqB,EAAE;AACrD,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU;AAC5B,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW;IAE7B,IAAI,GAAG,GAAG,CAAC;IACX,IAAI,IAAI,GAAG,CAAC;IAEZ,QAAQ,SAAS;AACf,QAAA,KAAK,KAAK;YACR,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,GAAG,MAAM;AACnD,YAAA,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,CAAC;YACpE;AACF,QAAA,KAAK,QAAQ;AACX,YAAA,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM;AAChC,YAAA,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,CAAC;YACpE;AACF,QAAA,KAAK,MAAM;AACT,YAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC;YACpE,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,MAAM;YACpD;AACF,QAAA,KAAK,OAAO;AACV,YAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC;AACpE,YAAA,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,MAAM;YAChC;;;IAIJ,IAAI,SAAS,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE;AAClC,QAAA,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM;IAClC;AAAO,SAAA,IAAI,SAAS,KAAK,QAAQ,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE;QACnE,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,YAAY,CAAC,MAAM,GAAG,MAAM;IACrD;SAAO,IAAI,SAAS,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,EAAE;AAC3C,QAAA,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,MAAM;IAClC;AAAO,SAAA,IAAI,SAAS,KAAK,OAAO,IAAI,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,EAAE,EAAE;QAClE,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,MAAM;IACtD;;IAGA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAE/D,IAAA,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;IACjC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,IAAI;IAC/B,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,IAAI;AACnC;;AC1DA;MACa,wBAAwB,CAAA;IACnC,QAAQ,CAAC,MAAmB,EAAE,QAAqB,EAAE,SAAoB,EAAE,MAAM,GAAG,CAAC,EAAA;QACnF,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC;IACtD;AACD;AAED;MACa,kBAAkB,GAAG,IAAI,cAAc,CAAoB,oBAAoB,EAAE;AAC5F,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,IAAI,wBAAwB,EAAE;AAC9C,CAAA;;ACxBD;AACO,MAAM,IAAI,GAAG;AAClB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,WAAW,EAAE,YAAY;AACzB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,GAAG,EAAE,KAAK;CACF;;ACQV,IAAI,gBAAgB,GAAG,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAKU,YAAY,CAAA;AACf,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC;;AAGtC,IAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,uDAA6B;;AAG1D,IAAA,oBAAoB,GAAG,KAAK,CAAY,KAAK,gEAAC;;AAG9C,IAAA,iBAAiB,GAAG,KAAK,CAAC,GAAG,6DAAC;;AAG9B,IAAA,oBAAoB,GAAG,KAAK,CAAC,KAAK,gEAAC;;AAGnC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;IAE1B,SAAS,GAAuB,IAAI;IACpC,YAAY,GAAgC,IAAI;AAChD,IAAA,WAAW;IACX,KAAK,GAAkB,IAAI;IAC3B,SAAS,GAAG,EAAE;IACd,UAAU,GAAmB,EAAE;IAC/B,WAAW,GAAG,KAAK;AAE3B,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,kBAAkB,EAAE,gBAAgB,EAAE;AACvD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;;YAGvB,IAAI,CAAC,eAAe,EAAE;;AAGtB,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,YAAY,WAAW,EAAE;AAC9C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAgB,KAAI;AAChD,oBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,IAAI,EAAE;AACxC,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,EAAE;AAE3B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,IAAI,CAAC,eAAe,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;;AAIA;;;;AAIG;IACK,eAAe,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE;QAE5C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE;QAEjC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC;YACjD;QACF;QAEA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC;QACzD;IACF;;;IAKA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AAErD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAElC,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;;AAE/B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB;QACF;;QAGA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;;QAGhE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAU,KAAI;YACjD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACjD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC;;QAGpE,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC3E,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;;IAGA,IAAI,GAAA;AACF,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AAEnC,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;;IAIQ,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAAE;AACjC,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACtC,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC;QACzD;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEQ,IAAA,kBAAkB,CAAC,IAAiB,EAAA;QAC1C,MAAM,UAAU,GAAG,MAAK;AACtB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC7E;AACA,YAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC;AAChD,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC;IAChD;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACnB;IACF;AAEQ,IAAA,MAAM,CACZ,EAAe,EACf,KAAQ,EACR,OAA4C,EAAA;AAE5C,QAAA,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAwB,CAAC;AACpD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAwB,CAAC,CAAC;IACrF;IAEQ,OAAO,GAAA;AACb,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;;AAGpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAClC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI;IAC7B;uGAlOW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,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,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;;AClCD,MAAMA,mBAAiB,GAAG,GAAG;AAE7B;;;;;;;;;;;;;;;AAeG;MAKU,YAAY,CAAA;AACf,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGrB,IAAA,sBAAsB,GAAG,KAAK,CAAC,IAAI,kEAAC;;AAGpC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;;IAGtB,kBAAkB,GAAG,MAAM,EAAW;IAEvC,UAAU,GAAmB,EAAE;AAEvC,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;;AAGlC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;;AAGvD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAU,EAAE,SAAS,EAAE,CAAC,CAAgB,KAAI;AAC3D,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBAC7D,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAU,EAAE,OAAO,EAAE,CAAC,CAAa,KAAI;AACtD,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB;gBACtC,IACE,IAAI,CAAC,MAAM,EAAE;oBACb,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACjC,oBAAA,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EACxC;oBACA,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,CAAC;;YAGF,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAa,KAAI;gBAC3C,MAAM,MAAM,GAAI,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,uBAAuB,CAAC;gBACzE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,MAAM,EAAE;oBACb,CAAC,CAAC,eAAe,EAAE;gBACrB;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;gBACpB,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,GAAA;AACF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAClC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpD,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;;IAGA,KAAK,GAAA;AACH,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAClC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,aAAa,EAAE;IACtB;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;IAEQ,QAAQ,GAAA;QACd,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK;eAChE,MAAM,CAAC,UAAU,CAAC,CAAA,YAAA,EAAeA,mBAAiB,CAAA,GAAA,CAAK,CAAC,CAAC,OAAO;IACvE;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC7D;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;IACtD;AAEQ,IAAA,MAAM,CACZ,EAAe,EACf,KAAQ,EACR,OAA4C,EAAA;AAE5C,QAAA,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAwB,CAAC;AACpD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAwB,CAAC,CAAC;IACrF;uGAjHW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA;;;ACxBD;;;;;;;;;;;;;;;;;;;;AAoBG;MAKU,SAAS,CAAA;AACZ,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAG/B,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,uDAAC;;IAGvB,cAAc,GAAG,MAAM,EAAuC;IAE/D,iBAAiB,GAAgC,IAAI;AAE7D,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAoB;;AAGzC,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAQ,KAAI;AACpC,gBAAA,MAAM,MAAM,GAAI,CAAiB,CAAC,MAAM;gBACxC,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;gBACpE;AACF,YAAA,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC;;AAG9D,YAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;gBACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACxC;AAEA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC7B,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAkB,CAAC;AACpE,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAoB;AACzC,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;AACxC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAC1B;IACF;uGA/CW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA;;;ACvBD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAKU,WAAW,CAAA;AACd,IAAA,EAAE,GAAG,MAAM,CAAgC,UAAU,CAAC;AACtD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAG/B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;;IAGtB,gBAAgB,GAAG,MAAM,EAAU;IAEpC,cAAc,GAAuB,IAAI;IACzC,aAAa,GAAwB,IAAI;AAEjD,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;;AAGpC,YAAA,IAAI,CAAC,aAAa,GAAG,MAAK;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;;AAGpD,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC5B;AACF,YAAA,CAAC;YAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC;AAEpD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC7B,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAc,CAAC;AAC1D,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGA,SAAS,GAAA;AACP,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACpC,IAAI,MAAM,CAAC,IAAI;YAAE;;AAGjB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAA4B;QAC7D;QAEA,MAAM,CAAC,SAAS,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;;QAGrB,qBAAqB,CAAC,MAAK;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CACpC,0EAA0E,CAC3E;YACD,SAAS,EAAE,KAAK,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,GAAA;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACpC,IAAI,MAAM,CAAC,IAAI;YAAE;AAEjB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAA4B;QAC7D;QAEA,MAAM,CAAC,IAAI,EAAE;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;;AAGA,IAAA,KAAK,CAAC,WAAoB,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE;AAClB,QAAA,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;;IAE3B;uGAlFW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA;;;ACED;;;;;;;;;;;;;;AAcG;MAEU,UAAU,CAAA;AACb,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE9B,IAAA,IAAY,EAAE,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AAAE,YAAA,OAAO,IAAI;QACpD,OAAQ,IAAI,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAE,IAAI,IAAI;IAClD;AAEA,IAAA,OAAO,CAAC,OAAe,EAAE,KAAc,EAAE,OAA4C,EAAA;AACnF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/D;AAEA,IAAA,IAAI,CAAC,OAAe,EAAE,KAAc,EAAE,OAA4C,EAAA;AAChF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5D;AAEA,IAAA,OAAO,CAAC,OAAe,EAAE,KAAc,EAAE,OAA4C,EAAA;AACnF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/D;AAEA,IAAA,KAAK,CAAC,OAAe,EAAE,KAAc,EAAE,OAA4C,EAAA;AACjF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC9D;AAEA,IAAA,IAAI,CAAC,OAAe,EAAE,KAAc,EAAE,UAA6B,EAAE,EAAA;AACnE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,QAAA,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,qHAAqH,CAAC;YACnI;QACF;QACA,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO;AACxC,QAAA,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AACzC,QAAA,IAAI,WAAW,IAAI,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACzB;AACA,QAAA,OAAO,EAAE;IACX;AAEA;;;AAGG;AACH,IAAA,WAAW,CAAC,OAAoB,EAAE,OAAA,GAA6B,EAAE,EAAA;AAC/D,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,QAAA,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAAE;QACpB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IAC/B;AAEA;;;AAGG;AACH,IAAA,YAAY,CACV,WAA6B,EAC7B,GAAqB,EACrB,UAA6B,EAAE,EAAA;AAE/B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,QAAA,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAAE;QAEpB,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE;;QAGpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAU,KAAK,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEnE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;;AAG/B,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI;AACzC,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,GAAG,GAAG,CAAC;QAClD;IACF;;AAGA,IAAA,OAAO,CAAC,SAA+B,EAAA;QACrC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC;;AAGQ,IAAA,cAAc,CAAC,EAAe,EAAA;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC5C,QAAA,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC;AAClC,QAAA,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC;AACzC,QAAA,GAAG,CAAC,SAAS,GAAG,sOAAsO;AACtP,QAAA,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,uNAAuN;AAC3O,QAAA,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK,EAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,QAAA,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK,EAAG,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACxE,QAAA,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACjC,YAAA,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE;AACjC,YAAA,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7D,YAAA,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1B,QAAA,CAAC,CAAC;AACF,QAAA,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC9B,QAAA,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM;AAC9B,QAAA,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;IACrB;uGApGW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cADG,MAAM,EAAA,CAAA;;2FACnB,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpDlC;;;;;;;;AAQG;MAQU,UAAU,CAAA;;AAEZ,IAAA,OAAO,GAAG,KAAK,CAAoB,SAAS,mDAAC;AAE5C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,OAAO,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,CAAA,MAAA,EAAS,CAAC,EAAE;AACjD,IAAA,CAAC,qDAAC;uGAPS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,oQAFX,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,aAAa;AACzB,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;ACfD;;;;;;;;;AASG;MA0BU,UAAU,CAAA;AACZ,IAAA,OAAO,GAAG,KAAK,CAAoB,SAAS,mDAAC;AAC7C,IAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;IAC1B,SAAS,GAAG,MAAM,EAAQ;AAEzB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;QACxB,OAAO,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC;AACnC,IAAA,CAAC,uDAAC;IAEF,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;uGAZW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,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,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBX;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA,CAAA;;2FAcU,UAAU,EAAA,UAAA,EAAA,CAAA;kBAzBtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,IAAA,EAClB;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,qBAAqB,EAAE,eAAe;qBACvC,EAAA,QAAA,EACS;;;;;AAKT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uJAAA,CAAA,EAAA;;;ACnBH;;;;;;;;;;;AAWG;MAkBU,WAAW,CAAA;AACb,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;AAC9C,IAAA,QAAQ,GAAG,KAAK,CAAmB,QAAQ,oDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAkB,SAAS,gDAAC;AACxC,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AACnB,IAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,gDAAC;AACrD,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;IAE7B,OAAO,GAAG,MAAM,EAAc;AAE7B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;QACxB,OAAO,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC;AACnC,IAAA,CAAC,uDAAC;AAEQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,oDAAC;uGAxBS,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,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,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZZ;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,mBAAmB;AAC3B,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;;ACnBD;;;;;;;;;;;;;;AAcG;MAwGU,gBAAgB,CAAA;AACnB,IAAA,OAAO,MAAM,GAAG,CAAC;AAEjB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;AAElD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;AAC9C,IAAA,QAAQ,GAAG,KAAK,CAAmB,QAAQ,oDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAkB,SAAS,gDAAC;AACxC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IAGvB,OAAO,GAAG,MAAM,EAAc;;IAG9B,MAAM,GAAG,MAAM,CAAC,CAAA,aAAA,EAAgB,EAAE,gBAAgB,CAAC,MAAM,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC5D,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;QACxB,OAAO,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC;AACnC,IAAA,CAAC,uDAAC;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACrC,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,wDAAC;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,IAAI,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,yDAAC;IAEM,SAAS,GAAuB,IAAI;IACpC,OAAO,GAAuB,IAAI;IAClC,UAAU,GAAwB,IAAI;AAE9C,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAuB;YAE1E,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AAEtC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAK;gBACrB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAgB;AAC/D,gBAAA,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE;gBACzD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;AAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EACzB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAClE,IAAI;AACJ,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAC/D,IAAI;AACN,YAAA,CAAC;AAED,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAM,KAAI;AAC1B,gBAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAM;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAErB,IAAI,IAAI,EAAE;;;oBAGR,qBAAqB,CAAC,MAAK;wBACzB,IAAI,CAAC,UAAW,EAAE;AACpB,oBAAA,CAAC,CAAC;oBACF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC;oBACzD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;oBACnD,qBAAqB,CAAC,MAAK;wBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAU,CAAC,gBAAgB,CAAc,mBAAmB,CAAC;AAChF,wBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACnB,oBAAA,CAAC,CAAC;gBACJ;qBAAO;oBACL,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC;oBAC5D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;AACtD,oBAAA,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;gBACvB;AACF,YAAA,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC7B,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACvD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC;gBAC5D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;AACxD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI;IACjC;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI;IACjC;uGA9GW,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,QAAA,EAAA,IAAA,EAAA,gBAAgB,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,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,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,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,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApGjB;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,g/CAAA,CAAA,EAAA,CAAA;;2FA4EU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvG5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,QACzB,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAC9B;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,g/CAAA,CAAA,EAAA;;;AClDH;;;;;;;;;;AAUG;MAyBU,eAAe,CAAA;AACjB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAuB;IAC7C,QAAQ,GAAG,MAAM,EAAqB;IAE/C,UAAU,CAAC,IAAuB,EAAE,KAAY,EAAA;QAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;uGAPW,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBhB;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAxB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,YAAY;AAC3B,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACF,iBAAA;;;ACxCD;;;;;;;AAOG;MAsCU,eAAe,CAAA;AACjB,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,qDAAU;AACrC,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;AACtB,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;IACrB,UAAU,GAAG,MAAM,EAAU;AAE5B,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AAE7B,QAAA,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE;;YAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD;QAEA,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;AACvC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;;AAG7C,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,KAAK,GAAG,CAAC;AACT,YAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAC5C;AACA,QAAA,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AACpB,YAAA,GAAG,GAAG,KAAK,GAAG,CAAC;AACf,YAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACpC;AAEA,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,QAAA,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAEjB,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,iDAAC;AAEF,IAAA,IAAI,CAAC,IAAY,EAAA;AACf,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACzE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B;IACF;uGA7CW,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,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,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBArC3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,QAAA,EACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA;;;ACzCH;;;;;;;AAOG;MASU,aAAa,CAAA;AACf,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,GAAG,GAAG,KAAK,CAAC,GAAG,+CAAC;uGAFd,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,gUANd,CAAA,+DAAA,CAAiE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA,CAAA;;2FAMhE,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,YACjB,CAAA,+DAAA,CAAiE,EAAA,MAAA,EAAA,CAAA,4CAAA,CAAA,EAAA;;;ACV7E;;;;;;;AAOG;MAiBU,UAAU,CAAA;AACZ,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,GAAG,GAAG,KAAK,CAAC,CAAC,+CAAC;AACd,IAAA,GAAG,GAAG,KAAK,CAAC,CAAC,+CAAC;AACd,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,+CAAC;AAC1C,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,gDAAC;AAC3C,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;uGAN5C,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,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,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,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,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,QAAA,EAAA,EAAA,EAAA,QAAA,EAdX;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yCAAA,CAAA,EAAA,CAAA;;2FAMU,UAAU,EAAA,UAAA,EAAA,CAAA;kBAhBtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,QAAA,EACd;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yCAAA,CAAA,EAAA;;;AChBH;;;;;;;;;AASG;MASU,YAAY,CAAA;AACd,IAAA,IAAI,GAAG,KAAK,CAAmB,SAAS,gDAAC;AACzC,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AAErB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AAC9C,IAAA,CAAC,uDAAC;uGAVS,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,8aAFb,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEf,YAAY,EAAA,UAAA,EAAA,CAAA;kBARxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,qBAAqB,EAAE,eAAe;AACvC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;AAC3B,iBAAA;;;AClBD;;;;;;;;;;;;;AAaG;MAgBU,WAAW,CAAA;AACb,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IACvB,KAAK,GAAG,SAAS;IAEjB,OAAO,GAAG,MAAM,EAAW;AAEpC,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IACxB;uGAZW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,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,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,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbZ;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,EAAA,CAAA;AACF,iBAAA;;;AC3BD;;;;;;;;;AASG;MAOU,aAAa,CAAA;AACf,IAAA,IAAI,GAAG,KAAK,CAAoB,MAAM,gDAAC;AACvC,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;AAC3C,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE,qDAAC;uGAHpD,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJd;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;AAET,EAAA,CAAA;AACF,iBAAA;;;ACXD;;;;;;;;AAQG;MAcU,cAAc,CAAA;AAChB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAwB;AAC9C,IAAA,KAAK,GAAG,KAAK,CAAqB,SAAS,iDAAC;IAC5C,OAAO,GAAG,MAAM,EAA+C;IAExE,QAAQ,CAAC,KAAY,EAAE,IAAwB,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAA4B;AAClD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACjD;uGARW,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,QAAA,EAAA,IAAA,EAAA,cAAc,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,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXf;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;;;;;;AAST,EAAA,CAAA;AACF,iBAAA;;;AC3BD;;;;;;;;;;;;;;;;;AAiBG;MAWU,SAAS,CAAA;uGAAT,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,yGAPV,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAOf,SAAS,EAAA,UAAA,EAAA,CAAA;kBAVrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,QACjB,EAAE,KAAK,EAAE,MAAM,EAAE,YACb,CAAA,cAAA,CAAgB,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;MAkBf,eAAe,CAAA;uGAAf,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANhB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;AACzB,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;AACF,iBAAA;;MAWY,eAAe,CAAA;uGAAf,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANhB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE;;;;AAIT,EAAA,CAAA;AACF,iBAAA;;;ACvCD;;;;;;;;;;;;AAYG;MAsCU,UAAU,CAAA;AACZ,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAsB;AAC9C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAyB;AAC9C,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,IAAA,SAAS,GAAG,KAAK,CAAC,oBAAoB,qDAAC;IACvC,QAAQ,GAAG,MAAM,EAAuB;AAEjD,IAAA,UAAU,CAAC,GAAwB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB;uGAVW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,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,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnCX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA,CAAA;;2FAMU,UAAU,EAAA,UAAA,EAAA,CAAA;kBArCtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,QAAA,EACd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uEAAA,CAAA,EAAA;;;ACxCH;;;;;;;;;;;;;;;;AAgBG;MAgBU,sBAAsB,CAAA;AACzB,IAAA,OAAO,MAAM,GAAG,CAAC;AAEjB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;;IAGlD,MAAM,GAAG,MAAM,CAAC,CAAA,UAAA,EAAa,EAAE,sBAAsB,CAAC,MAAM,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE/D,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;IAEtB,UAAU,GAAG,MAAM,EAAW;IAE/B,SAAS,GAAuB,IAAI;IACpC,SAAS,GAAuB,IAAI;IACpC,UAAU,GAAwB,IAAI;AAE9C,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAuB;;YAGtE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AACpC,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7D;YAEA,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE;;AAGrB,YAAA,IAAI,CAAC,UAAU,GAAG,MAAK;gBACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE;gBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;gBAChD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE;AAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EACzB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAClE,IAAI;AACJ,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAC1B,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAC/D,IAAI;AACN,YAAA,CAAC;AAED,YAAA,MAAM,QAAQ,GAAG,CAAC,CAAM,KAAI;AAC1B,gBAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAM;AAClC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAE1B,IAAI,IAAI,EAAE;;oBAER,IAAI,CAAC,UAAW,EAAE;oBAClB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC;oBACzD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;;oBAGnD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAc,mBAAmB,CAAC;AACrE,oBAAA,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;oBACjB,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;gBACvD;qBAAO;oBACL,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC;oBAC5D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;oBACtD,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AACtD,oBAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;gBACzB;AACF,YAAA,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC7B,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBACvD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,EAAE,IAAI,CAAC;gBAC5D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAW,CAAC;AACxD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI;IACjC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,IAAI;IACjC;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI;IACnC;uGAxFW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZvB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;2FAKU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAflC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB,CAAC,sBAAsB,CAAC,EAAA,QAAA,EACvB;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;ACtBH,IAAI,aAAa,GAAG,CAAC;AAErB;;;;;;;;;;;;;;AAcG;MAQU,qBAAqB,CAAA;AACxB,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEtC,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,gDAAC;AACxB,IAAA,QAAQ,GAAG,KAAK,CAA+B,SAAS,oDAAC;AACzD,IAAA,QAAQ,GAAG,KAAK,CAAY,KAAK,oDAAC;AAClC,IAAA,KAAK,GAAG,KAAK,CAAC,GAAG,iDAAC;AAClB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AAEvB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;IAE1B,SAAS,GAAuB,IAAI;IACpC,YAAY,GAAgC,IAAI;AAChD,IAAA,WAAW;IACX,KAAK,GAAkB,IAAI;IAC3B,SAAS,GAAG,EAAE;IACd,UAAU,GAAmB,EAAE;IAC/B,WAAW,GAAG,KAAK;AAE3B,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc,EAAE,aAAa,EAAE;AAChD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YAEvB,IAAI,CAAC,SAAS,EAAE;AAEhB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1D,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AACvD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAClD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAgB,KAAI;AAChD,oBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,IAAI,EAAE;AACxC,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,SAAS,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;IAEQ,SAAS,GAAA;AACf,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC;YACvD;QACF;QAEA,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC;AACtD,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;gBACpC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC;YACtD;QACF;IACF;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE;AAEzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAU,EAAE,MAAM,EAAE,SAAS,CAAC;AAC9D,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAU,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;QAEhE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAU,KAAI;YACjD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACjD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC;QAEpE,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;IAEA,IAAI,GAAA;AACF,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;AACxD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEQ,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEQ,IAAA,kBAAkB,CAAC,IAAiB,EAAA;QAC1C,MAAM,UAAU,GAAG,MAAK;AACtB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjE;AACA,YAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC;AAChD,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC;IAChD;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvB,YAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACnB;IACF;AAEQ,IAAA,MAAM,CAAC,EAAe,EAAE,KAAa,EAAE,OAAyB,EAAA;AACtE,QAAA,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpE;IAEQ,OAAO,GAAA;AACb,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;uGAvKW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ssBALtB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,CAAA;;2FAKf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,YAChB,CAAA,cAAA,CAAgB,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA;;;ACxB5B,MAAM,iBAAiB,GAAG,GAAG;AAE7B;;;;;;;;;;AAUG;MAYU,qBAAqB,CAAA;AACxB,IAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAChD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGrB,IAAA,UAAU,GAAG,KAAK,CAAC,IAAI,sDAAC;AACxB,IAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;AAE1B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;IAEtB,UAAU,GAAG,MAAM,EAAW;IAE/B,UAAU,GAAmB,EAAE;AAEvC,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB;AAEA,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAU,EAAE,SAAS,EAAE,CAAC,CAAgB,KAAI;AAC3D,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBAC7D,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,CAAC;;AAGF,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAU,EAAE,OAAO,EAAE,CAAC,CAAa,KAAI;AACtD,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB;gBACtC,IACE,IAAI,CAAC,MAAM,EAAE;oBACb,IAAI,CAAC,QAAQ,EAAE;AACf,oBAAA,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;AAC5B,oBAAA,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACxB,oBAAA,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,EACxC;oBACA,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;gBACpB,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE;IACtB;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;IAEQ,QAAQ,GAAA;QACd,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,GAAG,iBAAiB;IAC/E;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;IAC7D;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;IACtD;AAEQ,IAAA,MAAM,CAAC,EAAe,EAAE,KAAa,EAAE,OAAyB,EAAA;AACtE,QAAA,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpE;uGA1FW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ggBALtB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAKf,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,IAAA,EACpB;AACJ,wBAAA,4BAA4B,EAAE,IAAI;AAClC,wBAAA,0BAA0B,EAAE,sBAAsB;AACnD,qBAAA,EAAA,QAAA,EACS,CAAA,cAAA,CAAgB,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACf5B;;;;;;;;;;;;;;;;;;;;;;;AAuBG;MAuBU,kBAAkB,CAAA;AACrB,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;AACnD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAA6B;AAElD,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,uDAAC;IAEvB,SAAS,GAAG,MAAM,EAAuC;IAExD,cAAc,GAAG,MAAK;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACvE,IAAA,CAAC;IAEO,MAAM,GAAkB,EAAE;IAC1B,QAAQ,GAAkB,EAAE;IAC5B,UAAU,GAAmB,EAAE;AAEvC,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM;gBAAE;YAEb,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,2BAA2B,CAAC;YACjE,IAAI,CAAC,MAAM,GAAG;kBACV,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAc,cAAc,CAAC;kBAChE,EAAE;AACN,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CACxB,MAAM,CAAC,gBAAgB,CAAc,4BAA4B,CAAC,CACnE;;YAGD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9B,gBAAA,IAAI,CAAC,KAAK;oBAAE;AACZ,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,IAAI,cAAc,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACvE,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,IAAI,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7E,gBAAA,GAAG,CAAC,EAAE,GAAG,KAAK;AACd,gBAAA,KAAK,CAAC,EAAE,GAAG,OAAO;AAClB,gBAAA,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAC1C,gBAAA,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC;AAC9C,YAAA,CAAC,CAAC;;YAGF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGjC,YAAA,MAAM,OAAO,GAAG,CAAC,CAAa,KAAI;gBAChC,MAAM,GAAG,GAAI,CAAC,CAAC,MAAsB,CAAC,OAAO,GAAG,cAAc,CAAuB;AACrF,gBAAA,IAAI,CAAC,GAAG;oBAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBACpC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC;AAAE,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AACnE,YAAA,CAAC;;AAGD,YAAA,MAAM,SAAS,GAAG,CAAC,CAAgB,KAAI;gBACrC,IAAI,CAAE,CAAC,CAAC,MAAsB,CAAC,OAAO,GAAG,cAAc,CAAC;oBAAE;AAC1D,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAC9B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,gBAAA,IAAI,IAAI,GAAG,CAAC,CAAC;AAEb,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY;oBAAE,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG;AACjD,qBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;oBAAE,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG;AAC3D,qBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM;oBAAE,IAAI,GAAG,CAAC;AAC9B,qBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK;AAAE,oBAAA,IAAI,GAAG,GAAG,GAAG,CAAC;AAExC,gBAAA,IAAI,IAAI,IAAI,CAAC,EAAE;oBACb,CAAC,CAAC,cAAc,EAAE;;oBAElB,MAAM,IAAI,GAAG,IAAI;oBACjB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AAC7D,oBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;wBAClD,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG;wBAC/B,IAAI,IAAI,KAAK,IAAI;AAAE,4BAAA,OAAO;oBAC5B;AACA,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;gBAC5B;AACF,YAAA,CAAC;AAED,YAAA,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAwB,CAAC;AAC5D,YAAA,OAAO,EAAE,gBAAgB,CAAC,SAAS,EAAE,SAA0B,CAAC;AAChE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,MAAM,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAwB,CAAC,EACrE,MAAM,OAAO,EAAE,mBAAmB,CAAC,SAAS,EAAE,SAA0B,CAAC,CAC1E;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;AACnC,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACtB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACtB;AAEQ,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC1B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE;QAE1C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC7B,YAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,GAAG;YAC1B,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnD,YAAA,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AAClC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACjC,YAAA,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,GAAG;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5D;uGArHW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBnB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAKU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd,CAAC,sBAAsB,CAAC,EAAA,QAAA,EACvB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AChDH;;;;;;;;;;;;;;AAcG;MAmBU,oBAAoB,CAAA;AACvB,IAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;AACnD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAG/B,IAAA,QAAQ,GAAG,MAAM,CAAkC,KAAK,oDAAC;AAEzD,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,kDAAC;IAEtB,MAAM,GAAG,MAAM,EAAU;IAE1B,QAAQ,GAA6B,IAAI;IACzC,cAAc,GAAuB,IAAI;AAEjD,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE;AAEzC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE;YAEpB,MAAM,OAAO,GAAG,MAAK;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC;AAClD,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,oBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;gBAC5B;AACF,YAAA,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AAChD,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;gBAC7B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACtD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE;AAC1C,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAA4B;QAC7D;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,qBAAqB,CAAC,MAAK;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAC5C,0EAA0E,CAC3E;YACD,SAAS,EAAE,KAAK,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE;AAC1C,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAA4B;QAC7D;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;AAEA,IAAA,KAAK,CAAC,WAAoB,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI;YAAE;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IACxC;uGAjEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBrB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA;;;ACxCD;;;;;;;;AAQG;MAoBU,WAAW,CAAA;AACb,IAAA,GAAG,GAAG,KAAK,CAAC,EAAE,+CAAC;AACf,IAAA,GAAG,GAAG,KAAK,CAAC,EAAE,+CAAC;AACf,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;AACpB,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;AACpB,IAAA,IAAI,GAAG,KAAK,CAAkB,SAAS,gDAAC;AAEvC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AAExB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAE,CAAC;AAChD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,qDAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACpC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;QAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;AACrE,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;YACd,OAAO,IAAI,CAAC,GAAG;iBACZ,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA,KAAK,CAAC,CAAC,EAAE,CAAC;iBACV,IAAI,CAAC,EAAE;AACP,iBAAA,WAAW,EAAE;QAClB;AACA,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,uDAAC;IAEQ,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;uGAhCW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,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,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZZ;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6EAAA,CAAA,EAAA,CAAA;;2FAMU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAnBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,IAAA,EACnB;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,mBAAmB,EAAE,2CAA2C;qBACjE,EAAA,QAAA,EACS;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,6EAAA,CAAA,EAAA;;;ACxBH;;;;;;;;;;;;AAYG;MAqEU,eAAe,CAAA;AACjB,IAAA,MAAM,GAAG,KAAK,CAAC,EAAE,kDAAC;AAClB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,CAAC,mDAAC;AAClB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,aAAa,GAAG,MAAM,EAAU;AAEhC,IAAA,KAAK,GAAG,MAAM,CAAS,EAAE,iDAAC;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAE5B,IAAA,YAAY,GAAG,SAAS,CAA+B,WAAW,wDAAC;IAE3E,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC5C;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;QAClB;IACF;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IACjD;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM;YAAE;AAC1D,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACrD;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACvC;AAEU,IAAA,UAAU,CAAC,KAAa,EAAA;QAChC,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtD,QAAA,OAAO,CAAA,EAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IAC9E;AAEQ,IAAA,QAAQ,CAAC,QAAgB,EAAA;QAC/B,IAAI,QAAQ,GAAG,QAAQ;;AAGvB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;AACtB,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3D;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;QACzD;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC;QAEA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACvC;uGA1EW,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,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,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,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAKU,eAAe,EAAA,UAAA,EAAA,CAAA;kBApE3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,QACxB,EAAE,kBAAkB,EAAE,YAAY,EAAE,EAAA,QAAA,EAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;6lBAiB8D,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACnF5E;;;;;;;;;;;;;AAaG;MAgCU,aAAa,CAAA;AACf,IAAA,MAAM,GAAG,KAAK,CAAC,CAAC,kDAAC;AACjB,IAAA,SAAS,GAAG,KAAK,CAAC,CAAC,qDAAC;AACpB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AAEnB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,OAAO,GAAG,SAAS;AAEpB,IAAA,aAAa,GAAG,YAAY,CAA+B,WAAW,yDAAC;AAErE,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,IAAA,CAAC,iDAAC;IAEQ,WAAW,CAAC,KAAY,EAAE,KAAa,EAAA;AAC/C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,KAAK,CAAC,KAAK,GAAG,IAAI;AAElB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;;QAG/B,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B;IACF;IAEU,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AACrD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAE/C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC7B,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B;AAAO,iBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC;YACnC;YACA,KAAK,CAAC,cAAc,EAAE;QACxB;aAAO,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,KAAK,CAAC,cAAc,EAAE;QACxB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;IAEU,OAAO,CAAC,KAAqB,EAAE,KAAa,EAAA;QACpD,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC9E,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;YACnE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAChC;;AAGA,QAAA,OAAO,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;;AAGxD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;IAC5B;AAEU,IAAA,OAAO,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE;QACpC;IACF;IAEQ,aAAa,CAAC,KAAa,EAAE,IAAY,EAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACjE,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5C;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;QACnC;IACF;AAEA,IAAA,KAAK,CAAC,OAAsB,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACnB;uGA5FW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,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,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,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,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Bd;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;2FAKU,aAAa,EAAA,UAAA,EAAA,CAAA;kBA/BzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,QAAA,EAClB;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;0kBAekE,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC/DhF;;;;;;;;;AASG;MAwCU,gBAAgB,CAAA;AAClB,IAAA,WAAW,GAAG,KAAK,CAAC,WAAW,uDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,oDAAC;AACpB,IAAA,UAAU,GAAG,KAAK,CAAC,GAAG,sDAAC;AACvB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,OAAO,GAAG,SAAS;IAEnB,MAAM,GAAG,MAAM,EAAU;AAEzB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AAErB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,oDAAC;IAEpD,aAAa,GAAyC,IAAI;AAC1D,IAAA,cAAc,GAAG,SAAS,CAA+B,UAAU,0DAAC;AACpE,IAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;IAChC,cAAc,GAAwC,IAAI;AAElE,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;YAE5B,IAAI,IAAI,CAAC,aAAa;AAAE,gBAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACxD,YAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,CAAC,EAAE,EAAE,CAAC;AACR,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzD,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAgB,KAAI;;AAEzC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ;oBAAE;AAEf,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtD,gBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAE3F,gBAAA,IAAI,CAAC,OAAO;oBAAE;AAEd,gBAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI;AAC3C,gBAAA,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI;gBAC3C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO;gBAEhD,IAAI,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;oBACjE,CAAC,CAAC,cAAc,EAAE;oBAClB,IAAI,CAAC,UAAU,EAAE;gBACnB;AACF,YAAA,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QAC3D;IACF;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AACxD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;QAC9D;IACF;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACpD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB;IAEU,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEA,IAAA,KAAK,CAAC,OAAsB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;IAC1B;AAEQ,IAAA,UAAU,CAAC,OAAsB,EAAA;QACvC,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;IACrD;uGAvFW,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,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAKU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvC5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;mzBAqBgE,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACjE7E;;;;;;;;;;AAUG;MA8BU,cAAc,CAAA;AAChB,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,uDAAC;AAC5D,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEhB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,GAAG,oBAAoB,GAAG,EAAE;AACtE,IAAA,CAAC,qDAAC;uGANS,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,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,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,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,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,aAAA,EAAA,eAAA,EAAA,yDAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBf;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+OAAA,CAAA,EAAA,CAAA;;2FAaU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA7B1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,IAAA,EACtB;AACJ,wBAAA,MAAM,EAAE,WAAW;AACnB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,iBAAiB,EAAE,qDAAqD;qBACzE,EAAA,QAAA,EACS;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+OAAA,CAAA,EAAA;;;MClBU,mBAAmB,GAAG,IAAI,cAAc,CAAuB,kBAAkB;AAE9F;;;;;;;;AAQG;MAkBU,WAAW,CAAA;AACb,IAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,mDAAC;AAC9C,IAAA,IAAI,GAAG,KAAK,CAAkB,SAAS,gDAAC;AACxC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AAEvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;IAEtB,aAAa,GAAG,MAAM,EAAW;IAElC,KAAK,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAErD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,CAAE,CAAC;AAChD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,uDAAC;IAEF,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEd,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;QAC/B;aAAO;;AAEL,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACzC;IACF;uGAhCW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,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,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZZ;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,gBAAgB;AACpC,qBAAA;AACD,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;;ACjCD;;;;;;;;;;;;;;;;;;;;AAoBG;MAeU,gBAAgB,CAAA;AAClB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAA0B,SAAS,mDAAC;AACnD,IAAA,IAAI,GAAG,KAAK,CAAuB,SAAS,gDAAC;AAEtD;;;;AAIG;AACM,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAElB,IAAA,OAAO,GAAG,eAAe,CAAC,WAAW,mDAAC;AAE9C,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;YACxB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAEtD,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AACxD,gBAAA,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,UAAU,EAAE;AACnC,oBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBAChC;YACF;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,MAAmB,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;;YAEnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACpE,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC1B,gBAAA,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YAC3B;iBAAO;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACxB;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC;aAAO;;AAEL,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC;QAC3D;IACF;uGArDW,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,QAAA,EAAA,IAAA,EAAA,gBAAgB,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,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,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,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAJhB;AACT,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE;AAChE,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAeiC,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzBnC;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;2FAQU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;GAIT,EAAA,SAAA,EAIU;AACT,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,kBAAkB,EAAE;AAChE,qBAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;qnBAeiC,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MC1ClC,iBAAiB,GAAG,IAAI,cAAc,CAAqB,gBAAgB;AAExF;;;;;;;;;AASG;MAoCU,SAAS,CAAA;AACX,IAAA,OAAO,GAAG,KAAK,CAAmB,SAAS,mDAAC;AAC5C,IAAA,IAAI,GAAG,KAAK,CAAgB,SAAS,gDAAC;AACtC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACxB,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;AACzB,IAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AACrB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAEjB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;IAEvB,OAAO,GAAG,MAAM,EAAQ;IACxB,cAAc,GAAG,MAAM,EAAW;IAEnC,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEnD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC;AACxB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;QAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,qDAAC;IAEF,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AAE3C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3C;IACF;AAEU,IAAA,OAAO,CAAC,KAAY,EAAA;QAC5B,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,OAAO,EAAE;IAChB;IAEU,QAAQ,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AAC1C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;AAEU,IAAA,QAAQ,CAAC,KAAY,EAAA;QAC7B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB;IACF;uGA5DW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,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,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,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,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,kCAAA,EAAA,UAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBV;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA,CAAA;;2FAKU,SAAS,EAAA,UAAA,EAAA,CAAA;kBAnCrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,IAAA,EACjB;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,sBAAsB,EAAE,kCAAkC;AAC1D,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,aAAa,EAAE,gCAAgC;AAC/C,wBAAA,YAAY,EAAE,sCAAsC;AACpD,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,iBAAiB,EAAE,iBAAiB;AACpC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,qBAAqB,EAAE,YAAY;qBACpC,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA;;AAoEH;;;;;;;;;;;AAWG;MAoBU,cAAc,CAAA;AAChB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,SAAS,GAAG,KAAK,CAAC,EAAE,qDAAC;AAE9B;;;;AAIG;AACM,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,WAAW,GAAG,MAAM,EAAU;AAE/B,IAAA,KAAK,GAAG,MAAM,CAAc,EAAE,iDAAC;AAEvC;;AAEG;AACH,IAAA,YAAY,CAAC,IAAe,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACpE,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxB,gBAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B;iBAAO;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC;aAAO;AACL,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAC/B,YAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B;iBAAO;AACL,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;QACF;QACA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3C;AAEA;;AAEG;AACH,IAAA,YAAY,CAAC,IAAe,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE;;AAEhC,QAAA,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAChD,YAAA,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IAChC;uGA1DW,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,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,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,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAJd;AACT,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE;SAC5D,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVS;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAQU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,IAAA,EACvB;AACJ,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,6BAA6B,EAAE,oBAAoB;AACnD,wBAAA,mBAAmB,EAAE,qBAAqB;qBAC3C,EAAA,QAAA,EACS;;;;GAIT,EAAA,SAAA,EAIU;AACT,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,gBAAgB,EAAE;AAC5D,qBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;AA+DH;;;;;;;;AAQG;MA+BU,cAAc,CAAA;AAChB,IAAA,WAAW,GAAG,KAAK,CAAC,aAAa,uDAAC;AAClC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAmB,SAAS,mDAAC;AAC5C,IAAA,eAAe,GAAG,KAAK,CAAC,KAAK,2DAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,oDAAC;AAE1B,IAAA,KAAK,GAAG,KAAK,CAAW,EAAE,iDAAC;IAE3B,SAAS,GAAG,MAAM,EAAU;IAC5B,gBAAgB,GAAG,MAAM,EAAU;AAElC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,QAAA,OAAO,CAAC,KAAK,SAAS,GAAG,CAAA,KAAA,EAAQ,CAAC,CAAA,CAAE,GAAG,MAAM;AAC/C,IAAA,CAAC,qDAAC;AAEQ,IAAA,YAAY,CAAC,KAAY,EAAA;QACjC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AAE/C,QAAA,IAAI,CAAC,GAAG;YAAE;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE;QAC3D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAE5C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;IAClB;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC;IACF;IAEA,UAAU,GAAA;QACR,MAAM,OAAO,GAAI,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAsB;QACzF,OAAO,EAAE,KAAK,EAAE;IAClB;uGAhDW,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,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,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,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,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5Bf;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAKU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA9B1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,QAAA,EACnB;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACrOH;;;;;;;;;;;;;;;;;;AAkBG;MAiGU,aAAa,CAAA;;AAEf,IAAA,MAAM,GAAG,KAAK,CAAuB,EAAE,kDAAC;;AAGxC,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,sDAAC;;AAGrB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;AAGvB,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,oDAAC;;AAGtB,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,gDAAC;;AAGlB,IAAA,UAAU,GAAG,KAAK,CAAC,IAAI,sDAAC;;AAGxB,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,oDAAC;;AAGtB,IAAA,WAAW,GAAG,KAAK,CAAC,KAAK,uDAAC;;AAG1B,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,wDAAC;;AAG1B,IAAA,WAAW,GAAG,KAAK,CAA2B,MAAM,uDAAC;;AAGrD,IAAA,YAAY,GAAG,KAAK,CAAC,IAAI,wDAAC;;AAG1B,IAAA,SAAS,GAAG,KAAK,CAAC,gBAAgB,qDAAC;;AAGnC,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,uDAAC;;IAGtB,WAAW,GAAG,MAAM,EAAU;AAE7B,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAE5B,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,IAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;IAC3B,aAAa,GAA0C,IAAI;IAC3D,MAAM,GAAG,KAAK;;IAGd,UAAU,GAAG,CAAC;IACd,YAAY,GAAG,CAAC;AAChB,IAAA,SAAS,GAAG,MAAM,CAAC,CAAC,qDAAC;AACrB,IAAA,kBAAkB,GAAG,CAAC,CAAa,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7D,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAEzC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACpC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;AAClD,IAAA,CAAC,uDAAC;AAEQ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QAClC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAChE,IAAA,CAAC,qDAAC;AAEQ,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAA4B;AACnD,YAAA,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,GAAG;AACjD,YAAA,OAAO,CAAA,iBAAA,EAAoB,IAAI,CAAA,IAAA,EAAO,GAAG,MAAM;QACjD;QACA,OAAO,CAAA,YAAA,EAAe,IAAI,CAAA,EAAA,CAAI;AAChC,IAAA,CAAC,6DAAC;AAEQ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,KAAK,MAAM;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;aAC3C,IAAI,KAAK,KAAK,KAAK;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;aAC9C,IAAI,KAAK,KAAK,KAAK;AAAE,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACnD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC,qDAAC;IAEF,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;YAClE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAChE;IACF;;AAGU,IAAA,YAAY,CAAC,CAAa,EAAA;QAClC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEU,IAAA,WAAW,CAAC,CAAa,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;IACzD;IAEU,UAAU,GAAA;QAClB,IAAI,CAAC,UAAU,EAAE;IACnB;;AAGU,IAAA,aAAa,CAAC,CAAa,EAAA;AACnC,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO;QAC3B,CAAC,CAAC,cAAc,EAAE;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;AACnC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAC/D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;IAC7D;AAEQ,IAAA,aAAa,CAAC,CAAa,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;IACzD;IAEQ,WAAW,GAAA;QACjB,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAClE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC9D,IAAI,CAAC,UAAU,EAAE;IACnB;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAErB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,EAAE;AAC/B,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,IAAI,EAAE;YACb;iBAAO;gBACL,IAAI,CAAC,IAAI,EAAE;YACb;QACF;IACF;;IAGA,IAAI,GAAA;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,IAAI,CAAC;YAAE;AAEhB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,OAAO,GAAG,KAAK,GAAG,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACxB;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACd;IACF;;IAGA,IAAI,GAAA;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,IAAI,KAAK,IAAI,CAAC;YAAE;AAEhB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACxB;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACtB;IACF;;AAGA,IAAA,IAAI,CAAC,KAAa,EAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK;YAAE;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,EAAE;IACtB;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAClB,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;YACnB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM;YAAE;QACrC,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtE;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAC3B;IACF;IAEQ,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACnC,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;uGA/NW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,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,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,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Ed;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,CAAA;;2FAUU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAhGzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,IAAA,EACrB;AACJ,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,6BAA6B,EAAE,YAAY;AAC3C,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,qBAAqB,EAAE,QAAQ;AAC/B,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,WAAW,EAAE,gBAAgB;AAC7B,wBAAA,YAAY,EAAE,gBAAgB;AAC9B,wBAAA,cAAc,EAAE,sBAAsB;AACtC,wBAAA,aAAa,EAAE,qBAAqB;AACpC,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,UAAU,EAAE,GAAG;qBAChB,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA;;;AC5FH;;;;;;;;;;;;;AAaG;MAsGU,iBAAiB,CAAA;;AAEnB,IAAA,OAAO,GAAG,KAAK,CAAC,EAAE,mDAAC;;AAGnB,IAAA,SAAS,GAAG,KAAK,CAAC,kBAAkB,qDAAC;;AAGrC,IAAA,KAAK,GAAG,KAAK,CAAqB,EAAE,iDAAC;;AAGrC,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,sDAAC;;AAGzB,IAAA,YAAY,GAAG,KAAK,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC;;IAGxB,WAAW,GAAG,MAAM,EAAQ;;IAG5B,SAAS,GAAG,MAAM,EAAoB;AAErC,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,IAAA,aAAa,GAAG,MAAM,CAAC,IAAI,yDAAC;AAE9B,IAAA,QAAQ,GAAG,SAAS,CAA0B,OAAO,oDAAC;AACtD,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;IAChC,cAAc,GAA0B,IAAI;IAEpD,eAAe,GAAA;AACb,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,iBAAiB,EAAE;;YAExB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;AACzC,YAAA,IAAI,EAAE,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACxE,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;IACnC;IAEU,QAAQ,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,UAAU,GAAA;QACR,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;AACzC,QAAA,IAAI,CAAC,EAAE;YAAE;AACT,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAClE,QAAA,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACnD;IAEA,UAAU,GAAA;QACR,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;AACzC,QAAA,IAAI,CAAC,EAAE;YAAE;AACT,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAClE,QAAA,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACpD;AAEQ,IAAA,mBAAmB,CAAC,EAAe,EAAA;;QAEzC,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAAuB;QACzE,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AACvC,YAAA,OAAO,SAAS,CAAC,WAAW,GAAG,GAAG;QACpC;AACA,QAAA,OAAO,EAAE,CAAC,WAAW,GAAG,GAAG;IAC7B;IAEQ,iBAAiB,GAAA;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;AACzC,QAAA,IAAI,CAAC,EAAE;YAAE;QACT,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC;IAC7E;uGA/EW,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,QAAA,EAAA,IAAA,EAAA,iBAAiB,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9FlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;2FAKU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArG7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,IAAA,EAC1B;AACJ,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,mBAAmB,EAAE,aAAa;qBACnC,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;8pBA8BqD,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1J/D;;;;;;;;;;;;;AAaG;MAkCU,UAAU,CAAA;AACb,IAAA,OAAO,MAAM,GAAG,CAAC;AAEhB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,OAAO,GAAG,SAAS;;AAGnB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,MAAM,GAAG,KAAK,CAAmD,EAAE,kDAAC;AACpE,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,+CAAC;AAC1C,IAAA,GAAG,GAAG,KAAK,CAAqB,SAAS,+CAAC;AAC1C,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;;AAGhD,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,IAAA,IAAI,GAAG,KAAK,CAAiB,MAAM,gDAAC;AACpC,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AACvB,IAAA,UAAU,GAAG,KAAK,CAAC,IAAI,sDAAC;AAEvB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAA,aAAA,EAAgB,EAAE,UAAU,CAAC,MAAM,CAAA,CAAE,mDAAC;AAEzE,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACpD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,KAAK,CAAC,OAAsB,EAAA;QAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACrD,QAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;IACvB;uGAvCW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,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,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,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,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,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,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BX;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2HAAA,CAAA,EAAA,CAAA;;2FAMU,UAAU,EAAA,UAAA,EAAA,CAAA;kBAjCtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,QAAA,EACd;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2HAAA,CAAA,EAAA;;;ACxDH;;;;;;;;;;;;;AAaG;MAgCU,aAAa,CAAA;AAChB,IAAA,OAAO,MAAM,GAAG,CAAC;AAEhB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IACjB,OAAO,GAAG,SAAS;AAEnB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,qDAAC;AAChD,IAAA,MAAM,GAAG,KAAK,CAAmD,EAAE,kDAAC;AACpE,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AACvB,IAAA,IAAI,GAAG,KAAK,CAAC,CAAC,gDAAC;AACf,IAAA,UAAU,GAAG,KAAK,CAAC,IAAI,sDAAC;AAEvB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA,UAAA,EAAa,EAAE,aAAa,CAAC,MAAM,CAAA,CAAE,sDAAC;AAE5E,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA8B,CAAC,KAAK;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,KAAK,CAAC,OAAsB,EAAA;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACrD,QAAA,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC;IACpB;uGAnCW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,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,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,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,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,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,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Bd;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2HAAA,CAAA,EAAA,CAAA;;2FAMU,aAAa,EAAA,UAAA,EAAA,CAAA;kBA/BzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,QAAA,EACjB;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2HAAA,CAAA,EAAA;;;AC9BH;;;;;;;;;;;;;AAaG;MAuCU,WAAW,CAAA;AACd,IAAA,OAAO,MAAM,GAAG,CAAC;IAChB,OAAO,GAAG,SAAS;AACnB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;;AAGjB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,MAAM,GAAG,KAAK,CAAmD,EAAE,kDAAC;AACpE,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,IAAA,WAAW,GAAG,KAAK,CAAC,EAAE,uDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAuB;AAC/C,IAAA,UAAU,GAAG,KAAK,CAAC,IAAI,sDAAC;AAEvB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAA,WAAA,EAAc,EAAE,WAAW,CAAC,MAAM,CAAA,CAAE,oDAAC;AAEzE,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA4B,CAAC,KAAK;AACrD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,KAAK,CAAC,OAAsB,EAAA;QAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnD,QAAA,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC;IACpB;uGAhCW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,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,IAAA,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,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2HAAA,CAAA,EAAA,CAAA;;2FAMU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAtCvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,QAAA,EACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2HAAA,CAAA,EAAA;;;ACxDH;;;;;;;;;;;;;AAaG;MAeU,aAAa,CAAA;AACf,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;;IAGvB,KAAK,GAAG,SAAS;;AAGjB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AAE1B,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACvB;uGAbW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,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,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,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZd;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAdzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUT,EAAA,CAAA;AACF,iBAAA;;;ACjBD;;;;;;;;;;;;;;;;;;;AAmBG;MAkDU,eAAe,CAAA;AAClB,IAAA,OAAO,MAAM,GAAG,CAAC;AAEhB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;IAEjB,OAAO,GAAG,SAAS;;AAGnB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;AACtB,IAAA,MAAM,GAAG,KAAK,CAAmD,EAAE,kDAAC;AACpE,IAAA,OAAO,GAAG,KAAK,CAAC,KAAK,mDAAC;;AAGtB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,iDAAC;AACjB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAsB;AAC9C,IAAA,UAAU,GAAG,KAAK,CAAC,IAAI,sDAAC;AAEvB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA,aAAA,EAAgB,EAAE,eAAe,CAAC,MAAM,CAAA,CAAE,qDAAC;AAEhF,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;uGAxBW,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/ChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0VAAA,CAAA,EAAA,CAAA;;2FASU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAjD3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,QAAA,EACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0VAAA,CAAA,EAAA;;;ACtEH;;;;;;;;;AASG;MAuBU,cAAc,CAAA;AAChB,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAuB;AAErC,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE;AAC1C,IAAA,CAAC,2DAAC;uGANS,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,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBf;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0JAAA,CAAA,EAAA,CAAA;;2FAcU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAtB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,QAAA,EACnB;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,0JAAA,CAAA,EAAA;;;ACrBH;;ACAA;AACO,MAAM,WAAW,GAAG;AAI3B;MACa,iBAAiB,GAAG,IAAI,cAAc,CAAS,aAAa,EAAE;AACzE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,WAAW;AAC3B,CAAA;;ACTD;;AAEG;AAEH;;ACJA;;AAEG;;;;"}