@arsedizioni/ars-utils 22.0.40 → 22.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-ui.mjs","sources":["../../../projects/ars-utils/ui/ui/paginatorIntl.ts","../../../projects/ars-utils/ui/ui/directives/flex/breakpoints.ts","../../../projects/ars-utils/ui/ui/directives/flex/media-observer.service.ts","../../../projects/ars-utils/ui/ui/directives/flex/if-bp.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex-extras.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-align.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-gap.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-show-hide.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-style-class.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/flex-module.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.ts","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.html","../../../projects/ars-utils/ui/ui/services/ui.service.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.html","../../../projects/ars-utils/ui/ui/services/dialog.service.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.html","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.ts","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.html","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.html","../../../projects/ars-utils/ui/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/** Italian localisation for the Material paginator labels. */\r\n@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n override itemsPerPageLabel = 'Elementi per pagina';\r\n override nextPageLabel = 'Prossima pagina';\r\n override previousPageLabel = 'Pagina precedente';\r\n override lastPageLabel = 'Ultima pagina';\r\n override firstPageLabel = 'Prima pagina';\r\n\r\n /**\r\n * Returns the human-readable range label shown inside the paginator.\r\n * @param page - Zero-based index of the current page.\r\n * @param pageSize - Number of items displayed per page.\r\n * @param length - Total number of items, or `-1` when the total is still being calculated.\r\n * @returns A formatted string such as `\"1 - 25 di 100\"`.\r\n */\r\n override getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === -1) {\r\n return '0 di calcolo...';\r\n }\r\n if (length === 0 || pageSize === 0) {\r\n return `0 di ${length}`;\r\n }\r\n const totalLength = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try to fix the end index.\r\n const endIndex =\r\n startIndex < totalLength\r\n ? Math.min(startIndex + pageSize, totalLength)\r\n : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} di ${totalLength}`;\r\n };\r\n}\r\n","/**\n * @file breakpoints.ts\n * Angular CDK (v22) breakpoint definitions.\n *\n * The canonical tiers map 1:1 to the CDK `Breakpoints` constants from\n * '@angular/cdk/layout' (Material Design specification):\n *\n * xs = Breakpoints.XSmall < 600px\n * sm = Breakpoints.Small >= 600px and < 960px\n * md = Breakpoints.Medium >= 960px and < 1280px\n * lg = Breakpoints.Large >= 1280px and < 1920px\n * xl = Breakpoints.XLarge >= 1920px\n *\n * These are the SAME tiers used by @ngbracket/ngx-layout, so responsive\n * suffixes (fxHide.xs, fxFlex.lt-sm, ...) behave exactly like the legacy\n * library — no breakpoint drift on migrated templates.\n *\n * Derived alias families (composed on the same CDK pixel boundaries; the CDK\n * does not publish range-combining constants):\n *\n * \"and up\" sm-up | md-up | lg-up | xl-up\n * gt-xs | gt-sm | gt-md | gt-lg (ngx-layout compat)\n * \"and down\" sm-down | md-down | lg-down\n * lt-sm | lt-md | lt-lg | lt-xl (ngx-layout compat)\n *\n * Device aliases (CDK constants, point-in-time only): usable with\n * MediaObserver.isActive() / isActive$() and *ifBp — NOT as input suffixes:\n *\n * handset | tablet | web |\n * handset-portrait | tablet-portrait | web-portrait |\n * handset-landscape | tablet-landscape | web-landscape\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Breakpoints } from '@angular/cdk/layout';\n\nexport const CDK_LAYOUT_BREAKPOINTS: Record<string, string> = {\n // ── Canonical ranges — CDK constants verbatim ──────────────────────────────\n 'xs': Breakpoints.XSmall,\n 'sm': Breakpoints.Small,\n 'md': Breakpoints.Medium,\n 'lg': Breakpoints.Large,\n 'xl': Breakpoints.XLarge,\n\n // ── \"and up\" — composed on CDK tier boundaries ─────────────────────────────\n 'sm-up': '(min-width: 600px)',\n 'md-up': '(min-width: 960px)',\n 'lg-up': '(min-width: 1280px)',\n 'xl-up': '(min-width: 1920px)',\n\n // ── \"and up\" — ngx-layout gt-* style ───────────────────────────────────────\n 'gt-xs': '(min-width: 600px)',\n 'gt-sm': '(min-width: 960px)',\n 'gt-md': '(min-width: 1280px)',\n 'gt-lg': '(min-width: 1920px)',\n\n // ── \"and down\" — composed on CDK tier boundaries ───────────────────────────\n 'sm-down': '(max-width: 959.98px)',\n 'md-down': '(max-width: 1279.98px)',\n 'lg-down': '(max-width: 1919.98px)',\n\n // ── \"and down\" — ngx-layout lt-* style ─────────────────────────────────────\n // lt-sm = everything below sm = xs only\n 'lt-sm': '(max-width: 599.98px)',\n // lt-md = xs + sm\n 'lt-md': '(max-width: 959.98px)',\n // lt-lg = xs + sm + md\n 'lt-lg': '(max-width: 1279.98px)',\n // lt-xl = xs through lg\n 'lt-xl': '(max-width: 1919.98px)',\n\n // ── CDK device aliases (point-in-time: MediaObserver.isActive / *ifBp) ─────\n 'handset': Breakpoints.Handset,\n 'tablet': Breakpoints.Tablet,\n 'web': Breakpoints.Web,\n 'handset-portrait': Breakpoints.HandsetPortrait,\n 'tablet-portrait': Breakpoints.TabletPortrait,\n 'web-portrait': Breakpoints.WebPortrait,\n 'handset-landscape': Breakpoints.HandsetLandscape,\n 'tablet-landscape': Breakpoints.TabletLandscape,\n 'web-landscape': Breakpoints.WebLandscape,\n};\n\n/**\n * @deprecated Renamed to `CDK_LAYOUT_BREAKPOINTS`: the module now follows the\n * Angular CDK breakpoint scale, not Bootstrap 5. Kept as an alias so existing\n * imports keep compiling; update references when convenient.\n */\nexport const BS5_BREAKPOINTS: Record<string, string> = CDK_LAYOUT_BREAKPOINTS;\n\n/** InjectionToken — override to customise or extend breakpoints */\nexport const LAYOUT_BREAKPOINTS = new InjectionToken<Record<string, string>>(\n 'LAYOUT_BREAKPOINTS',\n { providedIn: 'root', factory: () => CDK_LAYOUT_BREAKPOINTS }\n);\n\n/** Ordered canonical aliases, smallest → largest (used for mobile-first cascade) */\nexport const CANONICAL_ALIASES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BreakpointAlias = typeof CANONICAL_ALIASES[number];\n\n/**\n * All non-canonical alias families.\n * Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-* / *-up / *-down\n * inputs without polluting the mobile-first cascade logic.\n * Device aliases (handset/tablet/web*) are intentionally excluded: they are\n * point-in-time queries for *ifBp / MediaObserver, not directive input suffixes.\n */\nexport const ALIAS_FAMILIES = {\n up: ['sm-up', 'md-up', 'lg-up', 'xl-up'],\n down: ['sm-down', 'md-down', 'lg-down'],\n gt: ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg'],\n lt: ['lt-sm', 'lt-md', 'lt-lg', 'lt-xl'],\n} as const;\n","/**\n * @file media-observer.service.ts (v2 — optimized)\n *\n * ── Optimizations over v1 ─────────────────────────────────────────────────\n *\n * ✅ Single bo.observe() call for all 5 canonical CDK breakpoints.\n * CDK internally uses one MediaQueryList listener per query string.\n * Calling observe() N times creates N listeners — here we create only one.\n *\n * ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in\n * directives) receive the same value without redundant re-computations.\n *\n * ✅ The currentBp Signal is derived from the Observable via toSignal():\n * Angular manages the subscription internally and tears it down with root.\n *\n * ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.\n *\n * ✅ isActive$() reuses the shared currentBp$ stream instead of opening\n * a new bo.observe() for every requested alias.\n */\n\nimport { inject, Signal, Service } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable, map, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LAYOUT_BREAKPOINTS, CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\n\n@Service()\nexport class MediaObserver {\n private readonly bo = inject(BreakpointObserver);\n private readonly bp = inject(LAYOUT_BREAKPOINTS);\n\n /**\n * A SINGLE CDK observation for all 5 canonical CDK breakpoints.\n * Each breakpoint change emits → we resolve the current alias → shared.\n *\n * shareReplay(1): all subscribers (N directives in the DOM) receive\n * the same value without N separate recomputations.\n */\n readonly currentBp$: Observable<BreakpointAlias> = this.bo\n .observe(CANONICAL_ALIASES.map(a => this.bp[a]))\n .pipe(\n map(() => this._resolve()),\n distinctUntilChanged(), // does not emit if the breakpoint hasn't actually changed\n shareReplay(1) // multicast: N directives, 1 single execution\n );\n\n /**\n * Signal derived from currentBp$.\n * Directives read it via effect() — zero manual subscriptions.\n * providedIn: 'root' ensures the Signal is a singleton.\n */\n readonly currentBp: Signal<BreakpointAlias> = toSignal(this.currentBp$, {\n initialValue: this._resolve()\n });\n\n /**\n * Returns true if the given alias (or raw media query) is currently active.\n * Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.\n *\n * @example\n * media.isActive('md') // true on 960–1279px screens\n * media.isActive('lg-up') // true on 1280px+\n * media.isActive('handset') // CDK device alias (orientation-aware)\n */\n isActive(alias: string): boolean {\n const query = this.bp[alias] ?? alias; // fallback: treat as raw media query\n return this.bo.isMatched(query);\n }\n\n /**\n * Observable true/false for a specific alias.\n * Reuses currentBp$ instead of opening a new bo.observe():\n * no additional MediaQueryList listener is created.\n */\n isActive$(alias: string): Observable<boolean> {\n return this.currentBp$.pipe(\n map(() => this.isActive(alias)),\n distinctUntilChanged()\n );\n }\n\n /** Resolves the active canonical alias (from xl down to xs, mobile-first) */\n private _resolve(): BreakpointAlias {\n for (let i = CANONICAL_ALIASES.length - 1; i >= 0; i--) {\n if (this.bo.isMatched(this.bp[CANONICAL_ALIASES[i]])) {\n return CANONICAL_ALIASES[i];\n }\n }\n return 'xs';\n }\n}\n","/**\n * @file if-bp.directive.ts (Angular 21 — signals)\n *\n * *ifBp — structural directive that adds/removes an element from the DOM\n * based on the active Bootstrap 5 breakpoint.\n *\n * Unlike [fxShow]/[fxHide] (which use display:none), *ifBp actually adds and\n * removes the element from the DOM — ideal for heavy components like mat-sidenav.\n *\n * Angular 21 changes:\n * • @Input setters replaced by input() / input.required()\n * • computed() derives alias list and active state reactively\n * • effect() in constructor handles DOM add/remove (no OnInit/OnChanges)\n * • No Injector, EffectRef, _initialized guard or manual subscriptions\n *\n * Usage:\n * <mat-sidenav *ifBp=\"'lg-up'\"> only rendered on lg and above\n * <div *ifBp=\"'xs'\">Mobile only</div>\n * <div *ifBp=\"'sm md'\">sm and md only (space-separated list of aliases)</div>\n * <div *ifBp=\"'lg-up'; else mobileRef\">Desktop view</div>\n * <ng-template #mobileRef>Mobile fallback</ng-template>\n *\n * Accepted alias values (Angular CDK tiers):\n * xs | sm | md | lg | xl\n * sm-up | md-up | lg-up | xl-up (also gt-xs … gt-lg)\n * sm-down | md-down | lg-down (also lt-sm … lt-xl)\n * handset | tablet | web (+ -portrait / -landscape) — CDK device aliases\n * Space-separated list of any of the above\n */\n\nimport {\n Directive, TemplateRef, ViewContainerRef,\n computed, effect, inject, input\n} from '@angular/core';\nimport { MediaObserver } from './media-observer.service';\n\n@Directive({\n selector: '[ifBp]',\n standalone: true\n})\nexport class IfBpDirective {\n private readonly tpl = inject(TemplateRef<unknown>);\n private readonly vcr = inject(ViewContainerRef);\n private readonly media = inject(MediaObserver);\n\n /** Space-separated list of breakpoint aliases, e.g. `'lg xl-up handset'` */\n readonly ifBp = input.required<string>();\n /** Optional else-template shown when no alias is active */\n readonly ifBpElse = input<TemplateRef<unknown>>();\n\n private readonly _aliases = computed(() => this.ifBp().trim().split(/\\s+/));\n private readonly _isActive = computed(() => {\n this.media.currentBp(); // reactive dependency — re-evaluates on breakpoint change\n return this._aliases().some(alias => this.media.isActive(alias));\n });\n\n /** Which template is currently rendered. `undefined` = nothing decided yet. */\n private _rendered: 'main' | 'else' | 'none' | undefined;\n /** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */\n private _renderedTpl: TemplateRef<unknown> | null = null;\n\n constructor() {\n effect(() => {\n const active = this._isActive();\n const elseTpl = this.ifBpElse();\n const next: 'main' | 'else' | 'none' = active ? 'main' : elseTpl ? 'else' : 'none';\n const nextTpl: TemplateRef<unknown> | null =\n next === 'main' ? this.tpl : next === 'else' ? elseTpl! : null;\n\n // Dirty-check on BOTH state and template instance: a swapped [ifBpElse]\n // reference must re-render even when the state stays 'else'.\n if (next === this._rendered && nextTpl === this._renderedTpl) return;\n\n this.vcr.clear();\n if (nextTpl) {\n this.vcr.createEmbeddedView(nextTpl);\n }\n this._rendered = next;\n this._renderedTpl = nextTpl;\n });\n }\n}\n","/**\n * @file responsive-base.directive.ts (v5 — Angular 21 signals)\n *\n * ── What changed in v5 ────────────────────────────────────────────────────\n *\n * Full Angular 21 signals refactor:\n *\n * • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED\n * FUNCTIONS that accept currentBp and isActive as parameters.\n * Directives call them from computed() or effect() with no \"this\" binding.\n *\n * • ResponsiveBaseDirective is now a thin utility base:\n * – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.\n * – Exposes safeSetStyle() helper.\n * – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().\n *\n * • Each concrete directive uses:\n * – input() for every @Input (signals, no more setters + _v/_nc maps)\n * – computed() to build BpValues / NcValues maps and derive resolved CSS\n * – effect() in the constructor to write to the DOM\n *\n * Benefits vs v4:\n * ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)\n * ✅ Angular's reactive graph provides built-in dirty-checking and memoization\n * ✅ DOM writes happen only when the resolved CSS value actually changes\n * ✅ No more Injector injection just to create effects\n *\n * ── Resolution strategy (unchanged) ──────────────────────────────────────\n *\n * Canonical aliases (xs … xl, CDK tiers) → mobile-first cascade via resolve()\n * Non-canonical (lt-*, gt-*, *-up, *-down) → point-in-time isActive() checks\n * Final order: resolveNonCanonical() wins over resolve()\n */\n\nimport {\n Directive,\n inject, ElementRef, Renderer2, PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MediaObserver } from './media-observer.service';\nimport { CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\nimport { BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── O(1) alias → index lookup (module-level constant, shared across instances) ──\nexport const ALIAS_INDEX = new Map<string, number>(\n CANONICAL_ALIASES.map((a, i) => [a, i])\n);\n\n/**\n * All non-canonical alias keys in priority order (most specific first).\n * lt-sm is \"below sm\" (= xs only), lt-md is \"below md\" (= xs+sm), etc.\n * Narrower range = higher priority = checked first.\n */\nexport const NON_CANONICAL_PRIORITY = [\n // lt-* from narrowest to widest\n 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl',\n // gt-* from widest to narrowest\n 'gt-xs', 'gt-sm', 'gt-md', 'gt-lg',\n // *-down from narrowest to widest (CDK boundaries)\n 'sm-down', 'md-down', 'lg-down',\n // *-up from widest to narrowest (CDK boundaries)\n 'sm-up', 'md-up', 'lg-up', 'xl-up',\n] as const;\n\n// ── Pure resolution functions ─────────────────────────────────────────────────\n// These are standalone functions (not class methods) so they can be called\n// from computed() closures without capturing `this`.\n\n/**\n * Resolution with three-tier priority:\n *\n * 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])\n * 2. Generic `default` value (e.g. [fxFlex]=\"49\" — applies to all unspecified bps)\n * 3. Mobile-first cascade down (e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\" → lg cascades to md)\n *\n * This ensures [fxFlex]=\"49\" [fxFlex.xs]=\"100\" gives xs→100 and sm+→49,\n * instead of `xs` cascading up and shadowing the default on sm/md/lg.\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n // 1. Exact match\n const exact = values[currentBp as keyof BpValues<T>];\n if (exact !== undefined) return exact;\n\n // 2. Generic default (wins over cascade — it's the \"applies everywhere\" value)\n const def = (values as Record<string, T | undefined>)['default'];\n if (def !== undefined) return def;\n\n // 3. Mobile-first cascade (only when no default — e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\")\n const idx = ALIAS_INDEX.get(currentBp) ?? 0;\n for (let i = idx - 1; i >= 0; i--) {\n const v = values[CANONICAL_ALIASES[i] as keyof BpValues<T>];\n if (v !== undefined) return v;\n }\n return undefined;\n}\n\n/**\n * Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and\n * returns the value for the first alias that isActive().\n */\nexport function resolveNonCanonical<T>(\n nc: NcValues<T>,\n isActive: (alias: string) => boolean,\n): T | undefined {\n for (const alias of NON_CANONICAL_PRIORITY) {\n const v = (nc as Record<string, T | undefined>)[alias];\n if (v !== undefined && isActive(alias)) return v;\n }\n return undefined;\n}\n\n/**\n * Full resolution: non-canonical overrides win over the canonical cascade.\n *\n * Usage inside computed():\n * const resolved = computed(() =>\n * resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))\n * );\n */\nexport function resolveAll<T>(\n canonical: BpValues<T>,\n nonCanonical: NcValues<T>,\n currentBp: BreakpointAlias,\n isActive: (alias: string) => boolean,\n): T | undefined {\n return resolveNonCanonical(nonCanonical, isActive) ?? resolve(canonical, currentBp);\n}\n\n// ── Base directive ─────────────────────────────────────────────────────────────\n\n@Directive()\nexport abstract class ResponsiveBaseDirective {\n protected readonly el = inject(ElementRef<HTMLElement>);\n protected readonly r2 = inject(Renderer2);\n protected readonly media = inject(MediaObserver);\n\n /** true in browser, false in SSR */\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** SSR-safe style setter. Pass null/empty string to remove the property. */\n protected safeSetStyle(prop: string, value: string | null): void {\n if (value === null || value === '') {\n this.r2.removeStyle(this.el.nativeElement, prop);\n } else {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n }\n}\n","/**\n * @file fx-layout.directive.ts (Angular 22 — signals)\n *\n * [fxLayout] — sets display + flex-direction (+ optional flex-wrap) on the host.\n * [fxLayoutWrap] — dedicated alias for flex-wrap (original ngx-layout compat).\n *\n * ngx-layout parity (ported from @ngbracket layout-validator.ts):\n * • Value format: \"<direction> [wrap] [inline]\" in any ngx-accepted spelling\n * • Wrap aliases: reverse | wrap-reverse | reverse-wrap → wrap-reverse,\n * no | none | nowrap → nowrap, anything else truthy → wrap\n * • 'inline' modifier → display: inline-flex\n * • No wrap token → flex-wrap REMOVED (ngx emits null), not forced to nowrap\n * • box-sizing: border-box on the container\n * • display preserved when currently 'none' (so fxHide is never overridden)\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nexport const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nconst INLINE = 'inline';\n\n/** Port of ngx-layout validateWrapValue(). */\nexport function validateWrapValue(value: string): string {\n if (value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n return 'wrap-reverse';\n case 'no':\n case 'none':\n case 'nowrap':\n return 'nowrap';\n default:\n return 'wrap';\n }\n }\n return value;\n}\n\n/** Port of ngx-layout validateValue(): [direction, wrap, inline]. */\nexport function validateLayoutValue(value: string): [string, string, boolean] {\n value = value?.toLowerCase() ?? '';\n let [direction, wrap = '', inline = ''] = value.split(' ');\n if (!LAYOUT_VALUES.find(x => x === direction)) direction = LAYOUT_VALUES[0];\n if (wrap === INLINE) {\n wrap = inline !== INLINE ? inline : '';\n inline = INLINE;\n }\n // Always return a string for wrap: undefined here used to make\n // resolveParentFlow report hasWrap=true on plain \"row\"/\"column\" containers.\n return [direction, validateWrapValue(wrap) || '', !!inline];\n}\n\n/** Port of ngx-layout buildLayoutCSS(): null values mean \"remove the property\". */\nexport function buildLayoutCSS(value: string): Record<string, string | null> {\n const [direction, wrap, inline] = validateLayoutValue(value);\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': wrap || null\n };\n}\n\n/**\n * Resolves the flex flow of the parent container for a flex child.\n * Prefers the reactive FxLayoutDirective instance when it sits on the DIRECT\n * parent element (signal read → re-evaluates with the parent); falls back to\n * getComputedStyle for plain-CSS flex parents; SSR-safe defaults.\n */\nexport function resolveParentFlow(\n host: HTMLElement,\n parentLayout: FxLayoutDirective | null,\n isBrowser: boolean\n): { direction: string; hasWrap: boolean } {\n if (parentLayout && parentLayout.hostElement === host.parentElement) {\n return {\n direction: parentLayout.direction(), // signal: reactive\n hasWrap: parentLayout.wrap() !== '' && parentLayout.wrap() !== 'nowrap'\n };\n }\n if (isBrowser && host.parentElement) {\n const cs = getComputedStyle(host.parentElement);\n return {\n direction: cs.flexDirection || 'row',\n hasWrap: !!cs.flexWrap && cs.flexWrap !== 'nowrap'\n };\n }\n return { direction: 'row', hasWrap: false };\n}\n\n@Directive({\n selector: `\n [fxLayout],\n [fxLayout.xs],\n [fxLayout.sm],\n [fxLayout.md],\n [fxLayout.lg],\n [fxLayout.xl],\n [fxLayout.lt-sm],\n [fxLayout.lt-md],\n [fxLayout.lt-lg],\n [fxLayout.lt-xl],\n [fxLayout.gt-xs],\n [fxLayout.gt-sm],\n [fxLayout.gt-md],\n [fxLayout.gt-lg],\n [fxLayout.sm-up],\n [fxLayout.md-up],\n [fxLayout.lg-up],\n [fxLayout.xl-up],\n [fxLayout.sm-down],\n [fxLayout.md-down],\n [fxLayout.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutDirective extends ResponsiveBaseDirective {\n readonly fxLayout = input<string>('row', { alias: 'fxLayout' });\n readonly xs = input<string>(undefined, { alias: 'fxLayout.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayout.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayout.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayout.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayout.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayout.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayout.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayout.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayout.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayout.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayout.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayout.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayout.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayout.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayout.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayout.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayout.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayout.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayout.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayout.lg-down' });\n\n private readonly _parsed = computed(() =>\n validateLayoutValue(resolveAll(\n { default: this.fxLayout(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'row')\n );\n\n /** Reactive layout parts — readable by FxFlex / FxLayoutAlign / FxFlexOffset. */\n readonly direction = computed(() => this._parsed()[0]);\n readonly wrap = computed(() => this._parsed()[1]);\n readonly inline = computed(() => this._parsed()[2]);\n\n /** Host element, exposed for direct-parent matching by child directives. */\n get hostElement(): HTMLElement { return this.el.nativeElement; }\n\n constructor() {\n super();\n effect(() => {\n const [dir, wrap, inline] = this._parsed();\n // ngx-layout parity: never override display:none set by fxHide\n // (LayoutStyleBuilder: display === 'none' ? display : css.display)\n if (this.el.nativeElement.style.display !== 'none') {\n this.safeSetStyle('display', inline ? 'inline-flex' : 'flex');\n }\n this.safeSetStyle('box-sizing', 'border-box');\n this.safeSetStyle('flex-direction', dir);\n this.safeSetStyle('flex-wrap', wrap || null);\n });\n }\n}\n\n@Directive({\n selector: `\n [fxLayoutWrap],\n [fxLayoutWrap.xs],\n [fxLayoutWrap.sm],\n [fxLayoutWrap.md],\n [fxLayoutWrap.lg],\n [fxLayoutWrap.xl],\n [fxLayoutWrap.lt-sm],\n [fxLayoutWrap.lt-md],\n [fxLayoutWrap.lt-lg],\n [fxLayoutWrap.lt-xl],\n [fxLayoutWrap.gt-xs],\n [fxLayoutWrap.gt-sm],\n [fxLayoutWrap.gt-md],\n [fxLayoutWrap.gt-lg],\n [fxLayoutWrap.sm-up],\n [fxLayoutWrap.md-up],\n [fxLayoutWrap.lg-up],\n [fxLayoutWrap.xl-up],\n [fxLayoutWrap.sm-down],\n [fxLayoutWrap.md-down],\n [fxLayoutWrap.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutWrapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutWrap = input<string>('wrap', { alias: 'fxLayoutWrap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutWrap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutWrap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutWrap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutWrap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutWrap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutWrap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutWrap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutWrap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutWrap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutWrap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutWrap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutWrap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutWrap.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutWrap.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutWrap.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutWrap.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutWrap.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutWrap.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutWrap.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutWrap.lg-down' });\n\n private readonly _wrap = computed(() =>\n validateWrapValue(resolveAll(\n { default: this.fxLayoutWrap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) || 'wrap')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('flex-wrap', this._wrap()); });\n }\n}\n","/**\n * @file fx-flex-extras.directives.ts (Angular 21 — signals)\n *\n * Flex child helper directives:\n * [fxFlexOrder] — CSS order\n * [fxFlexOffset] — margin-inline-start (RTL-safe)\n * [fxFlexAlign] — align-self override\n * [fxFlexFill] — fills the container (width/height 100%)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the resolved CSS values\n * • effect() in constructor writes to DOM — no lifecycle hooks\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, inject, input, isDevMode } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n@Directive({\n selector: `\n [fxFlexOrder],\n [fxFlexOrder.xs],\n [fxFlexOrder.sm],\n [fxFlexOrder.md],\n [fxFlexOrder.lg],\n [fxFlexOrder.xl],\n [fxFlexOrder.lt-sm],\n [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg],\n [fxFlexOrder.lt-xl],\n [fxFlexOrder.gt-xs],\n [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md],\n [fxFlexOrder.gt-lg],\n [fxFlexOrder.sm-up],\n [fxFlexOrder.md-up],\n [fxFlexOrder.lg-up],\n [fxFlexOrder.xl-up],\n [fxFlexOrder.sm-down],\n [fxFlexOrder.md-down],\n [fxFlexOrder.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexOrderDirective extends ResponsiveBaseDirective {\n readonly fxFlexOrder = input<string>(undefined, { alias: 'fxFlexOrder' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOrder.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOrder.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOrder.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOrder.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOrder.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOrder.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOrder.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOrder.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOrder.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOrder.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOrder.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOrder.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOrder.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOrder.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOrder.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOrder.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOrder.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOrder.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOrder.lg-down' });\n\n private readonly _order = computed(() =>\n resolveAll(\n { default: this.fxFlexOrder(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._order();\n if (isDevMode() && isNaN(Number(v))) console.warn(`[fxFlexOrder] Non-numeric value: \"${v}\"`);\n this.safeSetStyle('order', v);\n });\n }\n}\n\n// ─── fxFlexOffset ────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxFlexOffset],\n [fxFlexOffset.xs],\n [fxFlexOffset.sm],\n [fxFlexOffset.md],\n [fxFlexOffset.lg],\n [fxFlexOffset.xl],\n [fxFlexOffset.lt-sm],\n [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg],\n [fxFlexOffset.lt-xl],\n [fxFlexOffset.gt-xs],\n [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md],\n [fxFlexOffset.gt-lg],\n [fxFlexOffset.sm-up],\n [fxFlexOffset.md-up],\n [fxFlexOffset.lg-up],\n [fxFlexOffset.xl-up],\n [fxFlexOffset.sm-down],\n [fxFlexOffset.md-down],\n [fxFlexOffset.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexOffsetDirective extends ResponsiveBaseDirective {\n /** Ancestor FxLayout (matched to the direct parent inside resolveParentFlow). */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlexOffset = input<string>(undefined, { alias: 'fxFlexOffset' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOffset.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOffset.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOffset.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOffset.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOffset.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOffset.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOffset.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOffset.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOffset.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOffset.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOffset.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOffset.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOffset.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOffset.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOffset.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOffset.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOffset.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOffset.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOffset.lg-down' });\n\n private readonly _offset = computed(() =>\n resolveAll(\n { default: this.fxFlexOffset(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._offset();\n // ngx-layout parity: when the parent flex container is a column, offset\n // pushes down (margin-top); otherwise it pushes on the inline axis\n // (margin-inline-start, RTL-safe). Direction comes reactively from the\n // parent FxLayoutDirective when present, else from getComputedStyle.\n const { direction } = resolveParentFlow(this.el.nativeElement, this.parentLayout, this.isBrowser);\n const isColumn = direction.indexOf('column') > -1;\n if (isColumn) {\n this.safeSetStyle('margin-inline-start', null);\n this.safeSetStyle('margin-top', v);\n } else {\n this.safeSetStyle('margin-top', null);\n this.safeSetStyle('margin-inline-start', v);\n }\n });\n }\n}\n\n// ─── fxFlexAlign ─────────────────────────────────────────────────────────────\n\ntype AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nconst ALIGN_SELF_MAP: Record<string, string> = {\n start: 'flex-start', end: 'flex-end', center: 'center',\n stretch: 'stretch', baseline: 'baseline', auto: 'auto'\n};\n\n@Directive({\n selector: `\n [fxFlexAlign],\n [fxFlexAlign.xs],\n [fxFlexAlign.sm],\n [fxFlexAlign.md],\n [fxFlexAlign.lg],\n [fxFlexAlign.xl],\n [fxFlexAlign.lt-sm],\n [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg],\n [fxFlexAlign.lt-xl],\n [fxFlexAlign.gt-xs],\n [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md],\n [fxFlexAlign.gt-lg],\n [fxFlexAlign.sm-up],\n [fxFlexAlign.md-up],\n [fxFlexAlign.lg-up],\n [fxFlexAlign.xl-up],\n [fxFlexAlign.sm-down],\n [fxFlexAlign.md-down],\n [fxFlexAlign.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexAlignDirective extends ResponsiveBaseDirective {\n readonly fxFlexAlign = input<AlignSelf>(undefined, { alias: 'fxFlexAlign' });\n readonly xs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xs' });\n readonly sm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm' });\n readonly md = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md' });\n readonly lg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg' });\n readonly xl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl' });\n readonly ltSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-sm' });\n readonly ltMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-md' });\n readonly ltLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-lg' });\n readonly ltXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xl' });\n readonly gtXs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xs' });\n readonly gtSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-sm' });\n readonly gtMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-md' });\n readonly gtLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-lg' });\n readonly smUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-up' });\n readonly mdUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-up' });\n readonly lgUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-up' });\n readonly xlUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl-up' });\n readonly smDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-down' });\n readonly mdDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-down' });\n readonly lgDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-down' });\n\n private readonly _alignSelf = computed(() => {\n const v = resolveAll(\n { default: this.fxFlexAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'stretch';\n if (isDevMode() && !ALIGN_SELF_MAP[v]) console.warn(`[fxFlexAlign] Unknown value: \"${v}\". Valid: ${Object.keys(ALIGN_SELF_MAP).join(', ')}`);\n return ALIGN_SELF_MAP[v] ?? v;\n });\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('align-self', this._alignSelf()); });\n }\n}\n\n// ─── fxFlexFill ──────────────────────────────────────────────────────────────\n// fxFlexFill is intentionally non-responsive in its most common usage,\n// but supports breakpoint suffixes for edge cases where fill must be toggled.\n\ntype FillValue = 'fill' | 'none' | '' | boolean;\nfunction toBool(v: FillValue | undefined): boolean | undefined {\n if (v === undefined) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n return v !== 'none';\n}\n\n@Directive({\n selector: `\n [fxFlexFill],\n [fxFill],\n [fxFlexFill.xs],\n [fxFlexFill.sm],\n [fxFlexFill.md],\n [fxFlexFill.lg],\n [fxFlexFill.xl],\n [fxFlexFill.lt-sm],\n [fxFlexFill.lt-md],\n [fxFlexFill.lt-lg],\n [fxFlexFill.lt-xl],\n [fxFlexFill.gt-xs],\n [fxFlexFill.gt-sm],\n [fxFlexFill.gt-md],\n [fxFlexFill.gt-lg],\n [fxFlexFill.sm-up],\n [fxFlexFill.md-up],\n [fxFlexFill.lg-up],\n [fxFlexFill.xl-up],\n [fxFlexFill.sm-down],\n [fxFlexFill.md-down],\n [fxFlexFill.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexFillDirective extends ResponsiveBaseDirective {\n readonly fxFlexFill = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill', transform: toBool });\n readonly fxFill = input<boolean, FillValue>(undefined, { alias: 'fxFill', transform: toBool });\n readonly xs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xs', transform: toBool });\n readonly sm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm', transform: toBool });\n readonly md = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md', transform: toBool });\n readonly lg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg', transform: toBool });\n readonly xl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl', transform: toBool });\n readonly ltSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-sm', transform: toBool });\n readonly ltMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-md', transform: toBool });\n readonly ltLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-lg', transform: toBool });\n readonly ltXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xl', transform: toBool });\n readonly gtXs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xs', transform: toBool });\n readonly gtSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-sm', transform: toBool });\n readonly gtMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-md', transform: toBool });\n readonly gtLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-lg', transform: toBool });\n readonly smUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-up', transform: toBool });\n readonly mdUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-up', transform: toBool });\n readonly lgUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-up', transform: toBool });\n readonly xlUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl-up', transform: toBool });\n readonly smDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-down', transform: toBool });\n readonly mdDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-down', transform: toBool });\n readonly lgDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-down', transform: toBool });\n\n private readonly _active = computed(() =>\n (resolveAll(\n // fxFill is a shorthand alias for the default; fxFlexFill wins if both set\n { default: this.fxFlexFill() ?? this.fxFill(),\n xs: this.xs() as boolean | undefined, sm: this.sm() as boolean | undefined,\n md: this.md() as boolean | undefined, lg: this.lg() as boolean | undefined,\n xl: this.xl() as boolean | undefined },\n { 'lt-sm': this.ltSm() as boolean | undefined, 'lt-md': this.ltMd() as boolean | undefined,\n 'lt-lg': this.ltLg() as boolean | undefined, 'lt-xl': this.ltXl() as boolean | undefined,\n 'gt-xs': this.gtXs() as boolean | undefined, 'gt-sm': this.gtSm() as boolean | undefined,\n 'gt-md': this.gtMd() as boolean | undefined, 'gt-lg': this.gtLg() as boolean | undefined,\n 'sm-up': this.smUp() as boolean | undefined, 'md-up': this.mdUp() as boolean | undefined,\n 'lg-up': this.lgUp() as boolean | undefined, 'xl-up': this.xlUp() as boolean | undefined,\n 'sm-down': this.smDown() as boolean | undefined, 'md-down': this.mdDown() as boolean | undefined,\n 'lg-down': this.lgDown() as boolean | undefined },\n this.media.currentBp(), a => this.media.isActive(a)\n ) as boolean | undefined) ?? true\n );\n\n constructor() {\n super();\n effect(() => {\n const active = this._active();\n const v = active ? '100%' : null;\n this.safeSetStyle('margin', active ? '0' : null);\n // align-self: stretch ensures this element fills the parent's cross axis even\n // when the parent flex container has align-items: center (e.g. mat-toolbar).\n // Without this, height: 100% collapses to content height and align-items on\n // this container has no visible centering space.\n this.safeSetStyle('align-self', active ? 'stretch' : null);\n this.safeSetStyle('width', v);\n this.safeSetStyle('height', v);\n this.safeSetStyle('min-width', v);\n this.safeSetStyle('min-height', v);\n });\n }\n}\n","/**\n * @file fx-flex.directive.ts (Angular 22 — signals)\n *\n * [fxFlex] — flex shorthand on a flex child element.\n *\n * The CSS builder is a faithful port of @ngbracket/ngx-layout\n * FlexStyleBuilder.buildStyles + validateBasis, including:\n * • direction-aware min/max (max-width vs max-height by parent flow)\n * • percentage basis → flex: G S 100% + max-* capped to the percentage\n * • fixed units → flex: G S <px> + min/max-* locks\n * • empty basis → '0%' in row, '0.000000001px' in column (useColumnBasisZero)\n * • calc() support (flex-grow/shrink/basis split, operator padding)\n * • wrap-container basis rewrite (ngx issue 660)\n *\n * Extensions beyond ngx-layout (documented, opt-in by syntax):\n * • fxFlex=\"*\" → behaves like fxFlex=\"auto\" (1 1 auto)\n * • fxFlex=\"\" + a SIBLING with fxFlex=\"*\" → this element gets 0 0 auto\n * (static-attribute detection only; property bindings are not seen)\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n// ─── Ports of ngx-layout basis-validator.ts ──────────────────────────────────\n\n/** Pads calc() operators with whitespace (ngx _validateCalcValue). */\nfunction validateCalcValue(calc: string): string {\n return calc.replace(/[\\s]/g, '').replace(/[\\/\\*\\+\\-]/g, ' $& ');\n}\n\n/** Port of ngx validateBasis(): returns [grow, shrink, basis]. */\nexport function validateBasis(basis: string, grow = '1', shrink = '1'): string[] {\n let parts = [grow, shrink, basis];\n const j = basis.indexOf('calc');\n if (j > 0) {\n parts[2] = validateCalcValue(basis.substring(j).trim());\n const matches = basis.substring(0, j).trim().split(' ');\n if (matches.length === 2) {\n parts[0] = matches[0];\n parts[1] = matches[1];\n }\n } else if (j === 0) {\n parts[2] = validateCalcValue(basis.trim());\n } else {\n const matches = basis.split(' ');\n parts = matches.length === 3 ? matches : [grow, shrink, basis];\n }\n return parts;\n}\n\n// ─── Port of ngx-layout FlexStyleBuilder.buildStyles ─────────────────────────\n\nconst CLEAR_STYLES: Record<string, string | null> = {\n 'max-width': null, 'max-height': null, 'min-width': null, 'min-height': null\n};\n\n/**\n * Builds the complete flex style map for a child, given the raw fxFlex value\n * and the parent flow. `null` values mean \"remove this property\".\n * Matches ngx-layout output exactly (useColumnBasisZero = true, the default).\n */\nexport function buildFlexStyles(\n value: string,\n direction: string,\n hasWrap: boolean\n): Record<string, string | null> {\n const isHorizontal = direction.indexOf('row') > -1 || direction.indexOf('column') === -1;\n const parts = validateBasis(String(value).replace(';', ''));\n let grow: string | number = parts[0];\n let shrink: string | number = parts[1];\n let basis = parts[2];\n\n const max = isHorizontal ? 'max-width' : 'max-height';\n const min = isHorizontal ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || basis === 'auto';\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits =\n String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n let isValue = hasCalc || hasUnits;\n\n // eslint-disable-next-line eqeqeq\n grow = grow == '0' ? 0 : grow;\n // eslint-disable-next-line eqeqeq\n shrink = shrink == '0' ? 0 : shrink;\n const isFixed = !grow && !shrink;\n\n let css: Record<string, string | number | null> = {};\n\n switch (basis || '') {\n case '':\n // useColumnBasisZero default = true (ngx LAYOUT_CONFIG default)\n basis = isHorizontal ? '0%' : '0.000000001px';\n break;\n case 'initial':\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n if (!isValue && !isPercent && !isNaN(basis as unknown as number)) {\n basis = basis + '%';\n }\n if (basis === '0%') isValue = true; // ngx fix #280\n if (basis === '0px') basis = '0%';\n if (hasCalc) { // ngx fix #5345\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%' };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${isValue ? basis : '100%'}` };\n }\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n }\n\n // ngx fixes #277 / #534 / #728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n if (!css[min] && !css[max]) {\n // ngx fix #528\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n } else if (hasWrap) {\n // ngx fix #660\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max]\n ? (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`)\n : (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n\n // Normalize numbers to strings for the renderer\n const out: Record<string, string | null> = {};\n for (const [k, v] of Object.entries(css)) out[k] = v === null ? null : String(v);\n return out;\n}\n\n/** Extension: true when a sibling element declares fxFlex=\"*\" (static attribute). */\nfunction parentHasStar(el: HTMLElement): boolean {\n const parent = el.parentElement;\n if (!parent) return false;\n return Array.from(parent.children).some(\n c => c !== el && (c.getAttribute('fxflex') === '*' || c.getAttribute('fxFlex') === '*')\n );\n}\n\n@Directive({\n selector: `\n [fxFlex],\n [fxFlex.xs],\n [fxFlex.sm],\n [fxFlex.md],\n [fxFlex.lg],\n [fxFlex.xl],\n [fxFlex.lt-sm],\n [fxFlex.lt-md],\n [fxFlex.lt-lg],\n [fxFlex.lt-xl],\n [fxFlex.gt-xs],\n [fxFlex.gt-sm],\n [fxFlex.gt-md],\n [fxFlex.gt-lg],\n [fxFlex.sm-up],\n [fxFlex.md-up],\n [fxFlex.lg-up],\n [fxFlex.xl-up],\n [fxFlex.sm-down],\n [fxFlex.md-down],\n [fxFlex.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexDirective extends ResponsiveBaseDirective {\n /** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlex = input<string>(undefined, { alias: 'fxFlex' });\n readonly xs = input<string>(undefined, { alias: 'fxFlex.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlex.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlex.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlex.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlex.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlex.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlex.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlex.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlex.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlex.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlex.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlex.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlex.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxFlex.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlex.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlex.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlex.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxFlex.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlex.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlex.lg-down' });\n\n private readonly _rawFlex = computed(() =>\n resolveAll(\n { default: this.fxFlex(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n /** CSS properties applied on the last effect run (for stale cleanup). */\n private _applied = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n let raw = this._rawFlex();\n const el = this.el.nativeElement;\n\n // No rule matches the current breakpoint → remove everything we applied\n if (raw === undefined) {\n for (const prop of this._applied) this.r2.removeStyle(el, prop);\n this._applied.clear();\n return;\n }\n\n // Extensions (non-ngx, documented in the header)\n if (raw === '*') raw = 'auto';\n else if (raw === '' && this.isBrowser && parentHasStar(el)) raw = 'none'; // 0 0 auto\n\n // Parent flow: reactive via FxLayoutDirective signals when it is the\n // direct parent; getComputedStyle fallback for plain-CSS flex parents.\n const { direction, hasWrap } = resolveParentFlow(el, this.parentLayout, this.isBrowser);\n\n const styles = buildFlexStyles(raw, direction, hasWrap);\n const nextKeys = new Set<string>();\n for (const [prop, value] of Object.entries(styles)) {\n if (value === null) {\n this.r2.removeStyle(el, prop);\n } else {\n this.r2.setStyle(el, prop, value);\n nextKeys.add(prop);\n }\n }\n for (const prop of this._applied) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(el, prop);\n }\n this._applied = nextKeys;\n });\n }\n}\n","/**\n * @file fx-grid.directives.ts (Angular 21 — signals)\n *\n * CSS Grid responsive directives.\n *\n * [fxGrid] — display:grid + responsive grid-template-columns.\n * Accepts [fxGridRows] and [fxGridGap] inputs on same host.\n * [fxGridColumn] — grid-column on a child\n * [fxGridArea] — grid-area on a child\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • FxGridDirective uses 3 pairs of computed() for cols/rows/gap maps\n * • Single effect() in constructor writes all 3 CSS props\n * • Null/undefined props are removed (no style leak)\n *\n * Unitless numeric gap values are normalized to px (\"16\" → \"16px\").\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string | undefined): string | undefined {\n if (!raw) return undefined;\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n// ─── fxGrid (container) ──────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGrid],\n [fxGrid.xs],\n [fxGrid.sm],\n [fxGrid.md],\n [fxGrid.lg],\n [fxGrid.xl],\n [fxGrid.lt-sm],\n [fxGrid.lt-md],\n [fxGrid.lt-lg],\n [fxGrid.lt-xl],\n [fxGrid.gt-xs],\n [fxGrid.gt-sm],\n [fxGrid.gt-md],\n [fxGrid.gt-lg],\n [fxGrid.sm-up],\n [fxGrid.md-up],\n [fxGrid.lg-up],\n [fxGrid.xl-up],\n [fxGrid.sm-down],\n [fxGrid.md-down],\n [fxGrid.lg-down]\n `,\n standalone: true,\n host: { '[style.display]': '\"grid\"' }\n})\nexport class FxGridDirective extends ResponsiveBaseDirective {\n // ── grid-template-columns ──────────────────────────────────────────────────\n readonly fxGrid = input<string>(undefined, { alias: 'fxGrid' });\n readonly xs = input<string>(undefined, { alias: 'fxGrid.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGrid.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGrid.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGrid.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGrid.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGrid.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGrid.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGrid.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGrid.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGrid.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGrid.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGrid.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGrid.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxGrid.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxGrid.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxGrid.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxGrid.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxGrid.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxGrid.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxGrid.lg-down' });\n\n // ── grid-template-rows ────────────────────────────────────────────────────\n readonly fxGridRows = input<string>(undefined, { alias: 'fxGridRows' });\n readonly rowsXs = input<string>(undefined, { alias: 'fxGridRows.xs' });\n readonly rowsSm = input<string>(undefined, { alias: 'fxGridRows.sm' });\n readonly rowsMd = input<string>(undefined, { alias: 'fxGridRows.md' });\n readonly rowsLg = input<string>(undefined, { alias: 'fxGridRows.lg' });\n readonly rowsXl = input<string>(undefined, { alias: 'fxGridRows.xl' });\n readonly rowsLtSm = input<string>(undefined, { alias: 'fxGridRows.lt-sm' });\n readonly rowsLtMd = input<string>(undefined, { alias: 'fxGridRows.lt-md' });\n readonly rowsLtLg = input<string>(undefined, { alias: 'fxGridRows.lt-lg' });\n readonly rowsLtXl = input<string>(undefined, { alias: 'fxGridRows.lt-xl' });\n readonly rowsGtXs = input<string>(undefined, { alias: 'fxGridRows.gt-xs' });\n readonly rowsGtSm = input<string>(undefined, { alias: 'fxGridRows.gt-sm' });\n readonly rowsGtMd = input<string>(undefined, { alias: 'fxGridRows.gt-md' });\n readonly rowsGtLg = input<string>(undefined, { alias: 'fxGridRows.gt-lg' });\n readonly rowsSmUp = input<string>(undefined, { alias: 'fxGridRows.sm-up' });\n readonly rowsMdUp = input<string>(undefined, { alias: 'fxGridRows.md-up' });\n readonly rowsLgUp = input<string>(undefined, { alias: 'fxGridRows.lg-up' });\n readonly rowsXlUp = input<string>(undefined, { alias: 'fxGridRows.xl-up' });\n readonly rowsSmDown = input<string>(undefined, { alias: 'fxGridRows.sm-down' });\n readonly rowsMdDown = input<string>(undefined, { alias: 'fxGridRows.md-down' });\n readonly rowsLgDown = input<string>(undefined, { alias: 'fxGridRows.lg-down' });\n\n // ── gap ───────────────────────────────────────────────────────────────────\n readonly fxGridGap = input<string>(undefined, { alias: 'fxGridGap' });\n readonly gapXs = input<string>(undefined, { alias: 'fxGridGap.xs' });\n readonly gapSm = input<string>(undefined, { alias: 'fxGridGap.sm' });\n readonly gapMd = input<string>(undefined, { alias: 'fxGridGap.md' });\n readonly gapLg = input<string>(undefined, { alias: 'fxGridGap.lg' });\n readonly gapXl = input<string>(undefined, { alias: 'fxGridGap.xl' });\n readonly gapLtSm = input<string>(undefined, { alias: 'fxGridGap.lt-sm' });\n readonly gapLtMd = input<string>(undefined, { alias: 'fxGridGap.lt-md' });\n readonly gapLtLg = input<string>(undefined, { alias: 'fxGridGap.lt-lg' });\n readonly gapLtXl = input<string>(undefined, { alias: 'fxGridGap.lt-xl' });\n readonly gapGtXs = input<string>(undefined, { alias: 'fxGridGap.gt-xs' });\n readonly gapGtSm = input<string>(undefined, { alias: 'fxGridGap.gt-sm' });\n readonly gapGtMd = input<string>(undefined, { alias: 'fxGridGap.gt-md' });\n readonly gapGtLg = input<string>(undefined, { alias: 'fxGridGap.gt-lg' });\n readonly gapSmUp = input<string>(undefined, { alias: 'fxGridGap.sm-up' });\n readonly gapMdUp = input<string>(undefined, { alias: 'fxGridGap.md-up' });\n readonly gapLgUp = input<string>(undefined, { alias: 'fxGridGap.lg-up' });\n readonly gapXlUp = input<string>(undefined, { alias: 'fxGridGap.xl-up' });\n readonly gapSmDown = input<string>(undefined, { alias: 'fxGridGap.sm-down' });\n readonly gapMdDown = input<string>(undefined, { alias: 'fxGridGap.md-down' });\n readonly gapLgDown = input<string>(undefined, { alias: 'fxGridGap.lg-down' });\n\n // ── resolved values (flat computed — no intermediate object computed) ──────\n private readonly _cols = computed(() =>\n resolveAll<string>(\n { default: this.fxGrid(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _rows = computed(() =>\n resolveAll<string>(\n { default: this.fxGridRows(), xs: this.rowsXs(), sm: this.rowsSm(),\n md: this.rowsMd(), lg: this.rowsLg(), xl: this.rowsXl() },\n { 'lt-sm': this.rowsLtSm(), 'lt-md': this.rowsLtMd(), 'lt-lg': this.rowsLtLg(),\n 'lt-xl': this.rowsLtXl(), 'gt-xs': this.rowsGtXs(), 'gt-sm': this.rowsGtSm(), 'gt-md': this.rowsGtMd(),\n 'gt-lg': this.rowsGtLg(), 'sm-up': this.rowsSmUp(), 'md-up': this.rowsMdUp(), 'lg-up': this.rowsLgUp(),\n 'xl-up': this.rowsXlUp(), 'sm-down': this.rowsSmDown(), 'md-down': this.rowsMdDown(),\n 'lg-down': this.rowsLgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll<string>(\n { default: this.fxGridGap(), xs: this.gapXs(), sm: this.gapSm(),\n md: this.gapMd(), lg: this.gapLg(), xl: this.gapXl() },\n { 'lt-sm': this.gapLtSm(), 'lt-md': this.gapLtMd(), 'lt-lg': this.gapLtLg(),\n 'lt-xl': this.gapLtXl(), 'gt-xs': this.gapGtXs(), 'gt-sm': this.gapGtSm(), 'gt-md': this.gapGtMd(),\n 'gt-lg': this.gapGtLg(), 'sm-up': this.gapSmUp(), 'md-up': this.gapMdUp(), 'lg-up': this.gapLgUp(),\n 'xl-up': this.gapXlUp(), 'sm-down': this.gapSmDown(), 'md-down': this.gapMdDown(),\n 'lg-down': this.gapLgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n constructor() {\n super();\n effect(() => {\n const cols = this._cols();\n const rows = this._rows();\n const gap = this._gap();\n cols ? this.safeSetStyle('grid-template-columns', cols)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-columns');\n rows ? this.safeSetStyle('grid-template-rows', rows)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-rows');\n gap ? this.safeSetStyle('gap', gap)\n : this.r2.removeStyle(this.el.nativeElement, 'gap');\n });\n }\n}\n\n// ─── fxGridColumn ─────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridColumn],\n [fxGridColumn.xs],\n [fxGridColumn.sm],\n [fxGridColumn.md],\n [fxGridColumn.lg],\n [fxGridColumn.xl],\n [fxGridColumn.lt-sm],\n [fxGridColumn.lt-md],\n [fxGridColumn.lt-lg],\n [fxGridColumn.lt-xl],\n [fxGridColumn.gt-xs],\n [fxGridColumn.gt-sm],\n [fxGridColumn.gt-md],\n [fxGridColumn.gt-lg],\n [fxGridColumn.sm-up],\n [fxGridColumn.md-up],\n [fxGridColumn.lg-up],\n [fxGridColumn.xl-up],\n [fxGridColumn.sm-down],\n [fxGridColumn.md-down],\n [fxGridColumn.lg-down]\n `,\n standalone: true\n})\nexport class FxGridColumnDirective extends ResponsiveBaseDirective {\n readonly fxGridColumn = input<string>(undefined, { alias: 'fxGridColumn' });\n readonly xs = input<string>(undefined, { alias: 'fxGridColumn.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridColumn.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridColumn.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridColumn.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridColumn.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridColumn.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridColumn.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridColumn.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridColumn.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridColumn.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridColumn.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridColumn.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridColumn.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxGridColumn.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxGridColumn.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxGridColumn.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxGridColumn.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxGridColumn.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxGridColumn.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxGridColumn.lg-down' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridColumn(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-column', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-column');\n });\n }\n}\n\n// ─── fxGridArea ───────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridArea],\n [fxGridArea.xs],\n [fxGridArea.sm],\n [fxGridArea.md],\n [fxGridArea.lg],\n [fxGridArea.xl],\n [fxGridArea.lt-sm],\n [fxGridArea.lt-md],\n [fxGridArea.lt-lg],\n [fxGridArea.lt-xl],\n [fxGridArea.gt-xs],\n [fxGridArea.gt-sm],\n [fxGridArea.gt-md],\n [fxGridArea.gt-lg],\n [fxGridArea.sm-up],\n [fxGridArea.md-up],\n [fxGridArea.lg-up],\n [fxGridArea.xl-up],\n [fxGridArea.sm-down],\n [fxGridArea.md-down],\n [fxGridArea.lg-down]\n `,\n standalone: true\n})\nexport class FxGridAreaDirective extends ResponsiveBaseDirective {\n readonly fxGridArea = input<string>(undefined, { alias: 'fxGridArea' });\n readonly xs = input<string>(undefined, { alias: 'fxGridArea.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridArea.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridArea.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridArea.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridArea.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridArea.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridArea.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridArea.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridArea.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridArea.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridArea.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridArea.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridArea.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxGridArea.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxGridArea.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxGridArea.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxGridArea.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxGridArea.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxGridArea.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxGridArea.lg-down' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridArea(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-area', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-area');\n });\n }\n}\n","/**\n * @file fx-layout-align.directive.ts (Angular 22 — signals)\n *\n * [fxLayoutAlign] — sets justify-content + align-items + align-content\n * on a flex container. Faithful port of @ngbracket LayoutAlignStyleBuilder:\n *\n * • mainAxis : start|flex-start | center | end|flex-end |\n * space-between | space-around | space-evenly (default: flex-start)\n * • crossAxis: start|flex-start | center | end|flex-end | baseline |\n * space-between | space-around | stretch (default: stretch)\n * • align-content is set alongside align-items (multi-line wrap alignment)\n * • crossAxis 'stretch' → max-width:100% (column flow) / max-height:100% (row flow)\n * • display flex/inline-flex + box-sizing, preserving display:none (fxHide)\n *\n * Direction/inline are read reactively from the FxLayoutDirective on the SAME\n * host when present (signals), defaulting to row / non-inline otherwise.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective } from './fx-layout.directive';\n\n/**\n * Port of ngx LayoutAlignStyleBuilder.buildStyles.\n * `null` values mean \"remove the property\".\n */\nexport function buildAlignStyles(\n align: string,\n layoutDirection: string,\n inline: boolean\n): Record<string, string | null> {\n const css: Record<string, string | null> = {};\n const [mainAxis, crossAxis] = align.split(' ');\n\n switch (mainAxis) {\n case 'center': css['justify-content'] = 'center'; break;\n case 'space-around': css['justify-content'] = 'space-around'; break;\n case 'space-between': css['justify-content'] = 'space-between'; break;\n case 'space-evenly': css['justify-content'] = 'space-evenly'; break;\n case 'end':\n case 'flex-end': css['justify-content'] = 'flex-end'; break;\n case 'start':\n case 'flex-start':\n default: css['justify-content'] = 'flex-start'; break;\n }\n\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start'; break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center'; break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end'; break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch'; break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch'; break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline'; break;\n case 'stretch':\n default:\n css['align-items'] = css['align-content'] = 'stretch'; break;\n }\n\n const isHorizontal = layoutDirection.indexOf('row') > -1 || layoutDirection.indexOf('column') === -1;\n return {\n ...css,\n 'display': inline ? 'inline-flex' : 'flex',\n 'flex-direction': layoutDirection,\n 'box-sizing': 'border-box',\n 'max-width': crossAxis === 'stretch' ? (!isHorizontal ? '100%' : null) : null,\n 'max-height': crossAxis === 'stretch' ? (isHorizontal ? '100%' : null) : null\n };\n}\n\n@Directive({\n selector: `\n [fxLayoutAlign],\n [fxLayoutAlign.xs],\n [fxLayoutAlign.sm],\n [fxLayoutAlign.md],\n [fxLayoutAlign.lg],\n [fxLayoutAlign.xl],\n [fxLayoutAlign.lt-sm],\n [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg],\n [fxLayoutAlign.lt-xl],\n [fxLayoutAlign.gt-xs],\n [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md],\n [fxLayoutAlign.gt-lg],\n [fxLayoutAlign.sm-up],\n [fxLayoutAlign.md-up],\n [fxLayoutAlign.lg-up],\n [fxLayoutAlign.xl-up],\n [fxLayoutAlign.sm-down],\n [fxLayoutAlign.md-down],\n [fxLayoutAlign.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutAlignDirective extends ResponsiveBaseDirective {\n /** FxLayout on the same host (optional): direction/inline read reactively. */\n private readonly selfLayout = inject(FxLayoutDirective, { self: true, optional: true });\n\n readonly fxLayoutAlign = input<string>(undefined, { alias: 'fxLayoutAlign' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutAlign.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutAlign.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutAlign.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutAlign.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutAlign.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutAlign.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutAlign.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutAlign.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutAlign.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutAlign.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutAlign.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutAlign.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutAlign.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutAlign.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutAlign.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutAlign.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutAlign.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutAlign.lg-down' });\n\n private readonly _align = computed(() =>\n resolveAll(\n { default: this.fxLayoutAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'start stretch'\n );\n\n constructor() {\n super();\n effect(() => {\n const direction = this.selfLayout?.direction() ?? 'row';\n const inline = this.selfLayout?.inline() ?? false;\n const styles = buildAlignStyles(this._align(), direction, inline);\n const el = this.el.nativeElement;\n for (const [prop, value] of Object.entries(styles)) {\n // ngx parity: never override display:none set by fxHide\n if (prop === 'display' && el.style.display === 'none') continue;\n this.safeSetStyle(prop, value);\n }\n });\n }\n}\n","/**\n * @file fx-layout-gap.directive.ts (Angular 21 — signals)\n *\n * [fxLayoutGap] — sets gap on a flex or grid container.\n * Unitless numbers are normalized to px (e.g. \"16\" → \"16px\").\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the normalized gap value\n * • effect() in constructor writes to DOM\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string): string {\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n@Directive({\n selector: `\n [fxLayoutGap],\n [fxLayoutGap.xs],\n [fxLayoutGap.sm],\n [fxLayoutGap.md],\n [fxLayoutGap.lg],\n [fxLayoutGap.xl],\n [fxLayoutGap.lt-sm],\n [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg],\n [fxLayoutGap.lt-xl],\n [fxLayoutGap.gt-xs],\n [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md],\n [fxLayoutGap.gt-lg],\n [fxLayoutGap.sm-up],\n [fxLayoutGap.md-up],\n [fxLayoutGap.lg-up],\n [fxLayoutGap.xl-up],\n [fxLayoutGap.sm-down],\n [fxLayoutGap.md-down],\n [fxLayoutGap.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutGapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutGap = input<string>(undefined, { alias: 'fxLayoutGap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutGap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutGap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutGap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutGap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutGap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutGap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutGap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutGap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutGap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutGap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutGap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutGap.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutGap.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutGap.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutGap.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutGap.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutGap.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutGap.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutGap.lg-down' });\n\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll(\n { default: this.fxLayoutGap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('gap', this._gap()); });\n }\n}\n","/**\n * @file fx-show-hide.directives.ts (Angular 21 — signals)\n *\n * [fxShow] / [fxHide] — responsive visibility via display:none.\n * Elements stay in the DOM (unlike *ifBp which removes them).\n *\n * IMPORTANT: fxShow and fxHide are implemented as a SINGLE directive class\n * (FxShowHideDirective) so that mixed patterns like\n * <div fxHide fxShow.xs> ← hidden everywhere, shown on xs\n * <div fxShow fxHide.lt-lg> ← shown everywhere, hidden below lg\n * work correctly.\n *\n * Resolution algorithm (no mobile-first cascade — semantics for show/hide\n * are point-in-time, not cumulative):\n * 1. Non-canonical (lt-*, gt-*, *-up, *-down) isActive checks — most specific first\n * 2. Exact canonical match for current bp\n * 3. Default values (fxShow / fxHide without suffix)\n * 4. Fallback: visible (true)\n *\n * When both show and hide match at the same priority level, show wins.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, effect, input, computed } from '@angular/core';\nimport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n/**\n * Pure visibility transition (exported for tests).\n * Captures the inline display before hiding and restores it when shown again,\n * so display:flex|grid written by FxLayout/FxGrid effects is never lost.\n * @returns the new \"previous display\" state to carry to the next transition\n */\nexport function applyVisibility(\n el: { style: { display: string } },\n setStyle: (prop: string, value: string) => void,\n removeStyle: (prop: string) => void,\n visible: boolean,\n prevDisplay: string | null\n): string | null {\n if (!visible) {\n const current = el.style.display;\n if (current !== 'none') prevDisplay = current || null;\n setStyle('display', 'none');\n return prevDisplay;\n }\n // Visible: touch the DOM only if we are the ones who hid it\n if (el.style.display === 'none') {\n if (prevDisplay) setStyle('display', prevDisplay);\n else removeStyle('display');\n }\n return prevDisplay;\n}\n\nfunction toBool(v: string | boolean | '' | undefined | null): boolean | undefined {\n if (v === undefined || v === null) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n if (v === 'false' || v === '0') return false;\n return true;\n}\n\n// ─── Unified fxShow + fxHide ─────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxShow],\n [fxHide],\n [fxShow.xs],\n [fxShow.sm],\n [fxShow.md],\n [fxShow.lg],\n [fxShow.xl],\n [fxShow.lt-sm],\n [fxShow.lt-md],\n [fxShow.lt-lg],\n [fxShow.lt-xl],\n [fxShow.gt-xs],\n [fxShow.gt-sm],\n [fxShow.gt-md],\n [fxShow.gt-lg],\n [fxShow.sm-up],\n [fxShow.md-up],\n [fxShow.lg-up],\n [fxShow.xl-up],\n [fxShow.sm-down],\n [fxShow.md-down],\n [fxShow.lg-down],\n [fxHide.xs],\n [fxHide.sm],\n [fxHide.md],\n [fxHide.lg],\n [fxHide.xl],\n [fxHide.lt-sm],\n [fxHide.lt-md],\n [fxHide.lt-lg],\n [fxHide.lt-xl],\n [fxHide.gt-xs],\n [fxHide.gt-sm],\n [fxHide.gt-md],\n [fxHide.gt-lg],\n [fxHide.sm-up],\n [fxHide.md-up],\n [fxHide.lg-up],\n [fxHide.xl-up],\n [fxHide.sm-down],\n [fxHide.md-down],\n [fxHide.lg-down]\n `,\n standalone: true\n})\nexport class FxShowHideDirective extends ResponsiveBaseDirective {\n // ── fxShow inputs ─────────────────────────────────────────────────────────\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\n readonly showXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\n readonly showSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\n readonly showMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\n readonly showLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\n readonly showXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\n readonly showLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\n readonly showLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\n readonly showLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\n readonly showLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\n readonly showGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\n readonly showGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\n readonly showGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\n readonly showGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\n readonly showSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-up', transform: toBool });\n readonly showMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-up', transform: toBool });\n readonly showLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-up', transform: toBool });\n readonly showXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-up', transform: toBool });\n readonly showSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-down', transform: toBool });\n readonly showMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-down', transform: toBool });\n readonly showLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-down', transform: toBool });\n\n // ── fxHide inputs ─────────────────────────────────────────────────────────\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\n readonly hideXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\n readonly hideSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\n readonly hideMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\n readonly hideLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\n readonly hideXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\n readonly hideLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\n readonly hideLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\n readonly hideLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\n readonly hideLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\n readonly hideGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\n readonly hideGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\n readonly hideGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\n readonly hideGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\n readonly hideSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-up', transform: toBool });\n readonly hideMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-up', transform: toBool });\n readonly hideLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-up', transform: toBool });\n readonly hideXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-up', transform: toBool });\n readonly hideSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-down', transform: toBool });\n readonly hideMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-down', transform: toBool });\n readonly hideLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-down', transform: toBool });\n\n private readonly _visible = computed((): boolean => {\n const bp = this.media.currentBp();\n const isActive = (a: string) => this.media.isActive(a);\n\n // Non-canonical maps (alias → show value / hide value)\n const showNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.showLtSm(), 'lt-md': this.showLtMd(), 'lt-lg': this.showLtLg(),\n 'lt-xl': this.showLtXl(), 'gt-xs': this.showGtXs(), 'gt-sm': this.showGtSm(), 'gt-md': this.showGtMd(),\n 'gt-lg': this.showGtLg(), 'sm-up': this.showSmUp(), 'md-up': this.showMdUp(), 'lg-up': this.showLgUp(),\n 'xl-up': this.showXlUp(), 'sm-down': this.showSmDown(), 'md-down': this.showMdDown(),\n 'lg-down': this.showLgDown() };\n const hideNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.hideLtSm(), 'lt-md': this.hideLtMd(), 'lt-lg': this.hideLtLg(),\n 'lt-xl': this.hideLtXl(), 'gt-xs': this.hideGtXs(), 'gt-sm': this.hideGtSm(), 'gt-md': this.hideGtMd(),\n 'gt-lg': this.hideGtLg(), 'sm-up': this.hideSmUp(), 'md-up': this.hideMdUp(), 'lg-up': this.hideLgUp(),\n 'xl-up': this.hideXlUp(), 'sm-down': this.hideSmDown(), 'md-down': this.hideMdDown(),\n 'lg-down': this.hideLgDown() };\n\n // 1. Non-canonical (lt-*, gt-*, *-up, *-down) — most specific first\n for (const alias of NON_CANONICAL_PRIORITY) {\n const sv = showNc[alias];\n const hv = hideNc[alias];\n if ((sv !== undefined || hv !== undefined) && isActive(alias)) {\n if (sv !== undefined) return sv; // show beats hide at same priority\n return !hv!;\n }\n }\n\n // Canonical maps (bp → value) — exact only, NO cascade\n const showV: Record<string, boolean | undefined> = {\n xs: this.showXs(), sm: this.showSm(), md: this.showMd(),\n lg: this.showLg(), xl: this.showXl() };\n const hideV: Record<string, boolean | undefined> = {\n xs: this.hideXs(), sm: this.hideSm(), md: this.hideMd(),\n lg: this.hideLg(), xl: this.hideXl() };\n\n // 2. Exact canonical match for current bp\n const showExact = showV[bp];\n const hideExact = hideV[bp];\n if (showExact !== undefined) return showExact;\n if (hideExact !== undefined) return !hideExact;\n\n // 3. Default values (fxShow / fxHide without suffix)\n const showDef = this.fxShow();\n const hideDef = this.fxHide();\n if (showDef !== undefined) return showDef;\n if (hideDef !== undefined) return !hideDef;\n\n // 4. Neither directive active → visible\n return true;\n });\n\n /** Inline display captured before the last hide — restored on show. */\n private _prevDisplay: string | null = null;\n\n constructor() {\n super();\n effect(() => {\n this._prevDisplay = applyVisibility(\n this.el.nativeElement,\n (p, v) => this.r2.setStyle(this.el.nativeElement, p, v),\n p => this.r2.removeStyle(this.el.nativeElement, p),\n this._visible(),\n this._prevDisplay\n );\n });\n }\n}\n\n\n","/**\n * @file fx-style-class.directives.ts (Angular 21 — signals)\n *\n * [fxStyle] — responsive inline style binding (Record<string,string>)\n * [fxClass] — responsive CSS class binding (string | string[] | Record<string,boolean>)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives resolved StyleMap / ClassInput value\n * • effect() in constructor handles DOM writes with diff\n *\n * Style/class leak prevention:\n * _appliedProps / _appliedClasses are regular Set<string> fields\n * (NOT signals) — they track what was actively applied so the\n * effect can remove stale properties/classes on the next run.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\n// ─── fxStyle ─────────────────────────────────────────────────────────────────\n\ntype StyleMap = Record<string, string>;\n\n@Directive({\n selector: `\n [fxStyle],\n [fxStyle.xs],\n [fxStyle.sm],\n [fxStyle.md],\n [fxStyle.lg],\n [fxStyle.xl],\n [fxStyle.lt-sm],\n [fxStyle.lt-md],\n [fxStyle.lt-lg],\n [fxStyle.lt-xl],\n [fxStyle.gt-xs],\n [fxStyle.gt-sm],\n [fxStyle.gt-md],\n [fxStyle.gt-lg],\n [fxStyle.sm-up],\n [fxStyle.md-up],\n [fxStyle.lg-up],\n [fxStyle.xl-up],\n [fxStyle.sm-down],\n [fxStyle.md-down],\n [fxStyle.lg-down]\n `,\n standalone: true\n})\nexport class FxStyleDirective extends ResponsiveBaseDirective {\n readonly fxStyle = input<StyleMap>(undefined, { alias: 'fxStyle' });\n readonly xs = input<StyleMap>(undefined, { alias: 'fxStyle.xs' });\n readonly sm = input<StyleMap>(undefined, { alias: 'fxStyle.sm' });\n readonly md = input<StyleMap>(undefined, { alias: 'fxStyle.md' });\n readonly lg = input<StyleMap>(undefined, { alias: 'fxStyle.lg' });\n readonly xl = input<StyleMap>(undefined, { alias: 'fxStyle.xl' });\n readonly ltSm = input<StyleMap>(undefined, { alias: 'fxStyle.lt-sm' });\n readonly ltMd = input<StyleMap>(undefined, { alias: 'fxStyle.lt-md' });\n readonly ltLg = input<StyleMap>(undefined, { alias: 'fxStyle.lt-lg' });\n readonly ltXl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xl' });\n readonly gtXs = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xs' });\n readonly gtSm = input<StyleMap>(undefined, { alias: 'fxStyle.gt-sm' });\n readonly gtMd = input<StyleMap>(undefined, { alias: 'fxStyle.gt-md' });\n readonly gtLg = input<StyleMap>(undefined, { alias: 'fxStyle.gt-lg' });\n readonly smUp = input<StyleMap>(undefined, { alias: 'fxStyle.sm-up' });\n readonly mdUp = input<StyleMap>(undefined, { alias: 'fxStyle.md-up' });\n readonly lgUp = input<StyleMap>(undefined, { alias: 'fxStyle.lg-up' });\n readonly xlUp = input<StyleMap>(undefined, { alias: 'fxStyle.xl-up' });\n readonly smDown = input<StyleMap>(undefined, { alias: 'fxStyle.sm-down' });\n readonly mdDown = input<StyleMap>(undefined, { alias: 'fxStyle.md-down' });\n readonly lgDown = input<StyleMap>(undefined, { alias: 'fxStyle.lg-down' });\n\n private readonly _resolved = computed(() =>\n (resolveAll<StyleMap>(\n { default: this.fxStyle(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? {})\n );\n\n /** Tracks which CSS properties were last applied — plain field, not a signal. */\n private _appliedProps = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n const nextKeys = new Set(Object.keys(next));\n for (const prop of this._appliedProps) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(this.el.nativeElement, prop);\n }\n for (const [prop, value] of Object.entries(next)) {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n this._appliedProps = nextKeys;\n });\n }\n}\n\n// ─── fxClass ─────────────────────────────────────────────────────────────────\n\ntype ClassInput = string | string[] | Record<string, boolean>;\n\nfunction toClassSet(v: ClassInput | undefined): Set<string> {\n if (!v) return new Set();\n if (typeof v === 'string') return new Set(v.split(/\\s+/).filter(Boolean));\n if (Array.isArray(v)) return new Set(v.filter(Boolean));\n return new Set(Object.entries(v).filter(([, on]) => on).map(([cls]) => cls));\n}\n\n@Directive({\n selector: `\n [fxClass],\n [fxClass.xs],\n [fxClass.sm],\n [fxClass.md],\n [fxClass.lg],\n [fxClass.xl],\n [fxClass.lt-sm],\n [fxClass.lt-md],\n [fxClass.lt-lg],\n [fxClass.lt-xl],\n [fxClass.gt-xs],\n [fxClass.gt-sm],\n [fxClass.gt-md],\n [fxClass.gt-lg],\n [fxClass.sm-up],\n [fxClass.md-up],\n [fxClass.lg-up],\n [fxClass.xl-up],\n [fxClass.sm-down],\n [fxClass.md-down],\n [fxClass.lg-down]\n `,\n standalone: true\n})\nexport class FxClassDirective extends ResponsiveBaseDirective {\n readonly fxClass = input<ClassInput>(undefined, { alias: 'fxClass' });\n readonly xs = input<ClassInput>(undefined, { alias: 'fxClass.xs' });\n readonly sm = input<ClassInput>(undefined, { alias: 'fxClass.sm' });\n readonly md = input<ClassInput>(undefined, { alias: 'fxClass.md' });\n readonly lg = input<ClassInput>(undefined, { alias: 'fxClass.lg' });\n readonly xl = input<ClassInput>(undefined, { alias: 'fxClass.xl' });\n readonly ltSm = input<ClassInput>(undefined, { alias: 'fxClass.lt-sm' });\n readonly ltMd = input<ClassInput>(undefined, { alias: 'fxClass.lt-md' });\n readonly ltLg = input<ClassInput>(undefined, { alias: 'fxClass.lt-lg' });\n readonly ltXl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xl' });\n readonly gtXs = input<ClassInput>(undefined, { alias: 'fxClass.gt-xs' });\n readonly gtSm = input<ClassInput>(undefined, { alias: 'fxClass.gt-sm' });\n readonly gtMd = input<ClassInput>(undefined, { alias: 'fxClass.gt-md' });\n readonly gtLg = input<ClassInput>(undefined, { alias: 'fxClass.gt-lg' });\n readonly smUp = input<ClassInput>(undefined, { alias: 'fxClass.sm-up' });\n readonly mdUp = input<ClassInput>(undefined, { alias: 'fxClass.md-up' });\n readonly lgUp = input<ClassInput>(undefined, { alias: 'fxClass.lg-up' });\n readonly xlUp = input<ClassInput>(undefined, { alias: 'fxClass.xl-up' });\n readonly smDown = input<ClassInput>(undefined, { alias: 'fxClass.sm-down' });\n readonly mdDown = input<ClassInput>(undefined, { alias: 'fxClass.md-down' });\n readonly lgDown = input<ClassInput>(undefined, { alias: 'fxClass.lg-down' });\n\n private readonly _resolved = computed(() =>\n toClassSet(resolveAll<ClassInput>(\n { default: this.fxClass(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n /** Tracks which CSS classes were last applied — plain field, not a signal. */\n private _appliedClasses = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n for (const cls of this._appliedClasses) {\n if (!next.has(cls)) this.r2.removeClass(this.el.nativeElement, cls);\n }\n for (const cls of next) {\n this.r2.addClass(this.el.nativeElement, cls);\n }\n this._appliedClasses = next;\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\n// ── Tokens ───────────────────────────────────────────────────────────────────\nexport { BS5_BREAKPOINTS, LAYOUT_BREAKPOINTS, CANONICAL_ALIASES } from './breakpoints';\nexport type { BreakpointAlias } from './breakpoints';\nexport { ALIAS_FAMILIES } from './breakpoints';\n\n// ── Input type helpers (useful for custom directive extensions) ──────────────\nexport type { CanonicalKey, NonCanonicalKey, BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── Service ──────────────────────────────────────────────────────────────────\nexport { MediaObserver } from './media-observer.service';\n\n// ── Base (re-export for extension) ───────────────────────────────────────────\nexport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n// ── Flex directives ──────────────────────────────────────────────────────────\nexport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nexport { FxFlexDirective } from './fx-flex.directive';\nexport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nexport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nexport {\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n} from './fx-flex-extras.directives';\n\n// ── Visibility directives ─────────────────────────────────────────────────────\nexport { FxShowHideDirective } from './fx-show-hide.directives';\n\n// ── Style / Class directives ─────────────────────────────────────────────────\nexport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\n\n// ── Grid directives (bonus — not in original ngx-layout) ─────────────────────\nexport {\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n} from './fx-grid.directives';\n\n// ── Structural directives ─────────────────────────────────────────────────────\nexport { IfBpDirective } from './if-bp.directive';\n\n// ── Convenience module (for non-standalone NgModule apps) ────────────────────\nimport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nimport { FxFlexDirective } from './fx-flex.directive';\nimport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nimport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nimport {\n FxFlexOrderDirective, FxFlexOffsetDirective,\n FxFlexAlignDirective, FxFlexFillDirective,\n} from './fx-flex-extras.directives';\nimport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\nimport {\n FxGridDirective, FxGridColumnDirective, FxGridAreaDirective,\n} from './fx-grid.directives';\nimport { IfBpDirective } from './if-bp.directive';\nimport { FxShowHideDirective } from \"./fx-show-hide.directives\";\n\n\n@NgModule({\n imports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n exports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n\n})\nexport class FlexModule { }\n\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { FlexModule } from '../../directives/flex';\nimport { MatIcon } from '@angular/material/icon';\n\n/**\n * Overlay dialog that blocks interaction while a background operation is in progress.\n * Supports four visual styles: progress bar, spinner, hourglass, and wait icon.\n */\n@Component({\n templateUrl: './busy-dialog.component.html',\n styleUrl: './busy-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexModule, MatProgressBarModule, MatProgressSpinnerModule, MatIcon, SafeHtmlPipe]\n})\nexport class BusyDialogComponent {\n /** Visual style of the busy indicator. */\n readonly type = signal<'bar' | 'spinner' | 'wait' | 'hourglass'>('bar');\n\n /** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */\n readonly progress = signal<number>(0);\n\n /** Progress mode passed to the Material progress components. */\n readonly progressMode = signal<'determinate' | 'indeterminate'>('indeterminate');\n\n /** Message displayed above the progress indicator. */\n readonly message = signal<string>('');\n\n /**\n * Updates the busy dialog state.\n * @param message - New message to display. Ignored when empty, preserving the previous text.\n * @param progress - Current progress value (0–100). A value > 0 forces `'determinate'` mode.\n * @param progressMode - Progress bar/spinner mode (default: `'indeterminate'`).\n * @param type - Visual style to use (default: `'bar'`).\n */\n set(\n message: string,\n progress: number,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar'\n ): void {\n if (message) {\n this.message.set(message);\n }\n if (type) {\n this.type.set(type);\n }\n this.progress.set(progress);\n this.progressMode.set(progress > 0 ? 'determinate' : progressMode);\n }\n}\n","@if(type() === 'hourglass') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n</div>\r\n} @else if (type() === 'wait') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n</div>\r\n} @else {\r\n<div class=\"busy-panel\">\r\n <div fxLayout=\"column\" fxFill>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n @if (type() === 'bar') {\r\n <div>\r\n <mat-progress-bar [mode]=\"progressMode()\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto; max-width: 350px;\"></mat-progress-bar>\r\n </div>\r\n } @else if (type() === 'spinner') {\r\n <div>\r\n <mat-progress-spinner [mode]=\"progressMode()\" diameter=\"70\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto;\"></mat-progress-spinner>\r\n </div>\r\n }\r\n @if (progress() > 0) {\r\n <div>\r\n <span style=\"font-size: smaller;\"><b>{{progress()}}%</b></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { DialogOption, DialogResult } from '../../definitions';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FlexModule } from '../../directives/flex';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ConfirmDialogOption extends DialogOption {}\n\nexport interface ConfirmDialogData {\n title?: string;\n message: string;\n okCaption?: string;\n cancelCaption?: string;\n otherCaption?: string;\n options?: ConfirmDialogOption[];\n details?: string;\n}\n\n@Component({\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\n MatDialogActions, MatButtonModule, SafeHtmlPipe]\n})\nexport class ConfirmDialogComponent {\n /** Emitted when the user makes a choice. Carries the selected result and any option state. */\n readonly choosen = output<DialogResult>();\n\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\n\n /** Dialog configuration, with sensible defaults applied at construction time. */\n protected readonly dialogData = signal<ConfirmDialogData>({\n title: 'Conferma',\n okCaption: 'Si',\n cancelCaption: 'No',\n message: '',\n ...((inject(MAT_DIALOG_DATA) as ConfirmDialogData | null) ?? {}),\n });\n\n constructor() {\n // Ensure optional captions always have a value even when the caller omits them\n this.dialogData.update(d => ({\n ...d,\n title: d.title ?? 'Conferma',\n okCaption: d.okCaption ?? 'Si',\n cancelCaption: d.cancelCaption ?? 'No',\n }));\n }\n\n /**\n * Confirms the dialog, emitting `'ok'` together with the current option selections.\n */\n ok(): void {\n this.choosen.emit({ result: 'ok', options: this.dialogData().options });\n this.dialogRef.close();\n }\n\n /**\n * Cancels the dialog, emitting `'cancel'`.\n */\n cancel(): void {\n this.choosen.emit({ result: 'cancel' });\n this.dialogRef.close();\n }\n\n /**\n * Triggers the tertiary action, emitting `'other'`.\n */\n other(): void {\n this.choosen.emit({ result: 'other' });\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().options) {\r\n <div>\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" name=\"opt_{{i}}\" >\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().otherCaption) {\r\n <button mat-flat-button (click)=\"other()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().otherCaption}}</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, DestroyRef, inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { FlexModule } from '../../directives/flex';\nimport { DialogService } from '../../services/dialog.service';\n\nexport interface InfoDialogData {\n title?: string;\n message: string;\n details?: string;\n okCaption?: string;\n dismissAfter?: number;\n onNavigate?: (url: string) => void;\n}\n\n@Component({\n templateUrl: './info-dialog.component.html',\n styleUrl: './info-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, FlexModule,\n MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\n})\nexport class InfoDialogComponent {\n private readonly dialogService = inject(DialogService);\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\n private dismissTimer?: ReturnType<typeof setTimeout>;\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<InfoDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as InfoDialogData | null) ?? { message: '' };\n return { title: 'Informazioni', ...raw };\n })());\n\n constructor() {\n // Schedule auto-dismiss if configured; cancel it when the dialog is destroyed\n this.scheduleDismiss(this.dialogData().dismissAfter);\n inject(DestroyRef).onDestroy(() => clearTimeout(this.dismissTimer));\n }\n\n /**\n * (Re)schedules the auto-dismiss timer, cancelling any pending one so that\n * an earlier (shorter) timer can never close a newer message.\n * @param dismissAfter - Delay in milliseconds; no-op when falsy.\n */\n private scheduleDismiss(dismissAfter?: number): void {\n clearTimeout(this.dismissTimer);\n this.dismissTimer = undefined;\n if (dismissAfter) {\n this.dismissTimer = setTimeout(() => this.dialogRef.close(), dismissAfter);\n }\n }\n\n /**\n * Replaces the dialog data at runtime (e.g. after an async operation resolves).\n * Also re-schedules the auto-dismiss timer if `dismissAfter` is set.\n * @param data - The new dialog data to display.\n */\n public setData(data: InfoDialogData): void {\n this.dialogData.set({ title: 'Informazioni', ...data });\n this.scheduleDismiss(data.dismissAfter);\n }\n\n /**\n * Invokes the optional navigation callback provided by the caller.\n * @param url - The URL to navigate to.\n */\n protected navigate(url: string): void {\n this.dialogData().onNavigate?.(url);\n }\n\n /**\n * Copy to clipboard\n */\n protected async copy(): Promise<void> {\n const elem = document.getElementById('info-dialog-content');\n if (!elem) return;\n const htmlBlob = new Blob([elem.innerHTML], { type: 'text/html' });\n const textBlob = new Blob([elem.innerText], { type: 'text/plain' });\n try {\n const data = [\n new ClipboardItem({\n 'text/html': htmlBlob,\n 'text/plain': textBlob\n })\n ];\n window.focus(); // the Clipboard API requires the document to be focused\n await navigator.clipboard.write(data);\n this.dialogService.toast('Copiato negli appunti.');\n } catch (err) {\n this.dialogService.toast(`Errore copiando negli appunti: ${err}`);\n }\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill id=\"info-dialog-content\">\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <br>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <button mat-icon-button (click)=\"copy()\" matTooltip=\"Copia negli appunti\"><mat-icon>content_copy</mat-icon></button>\r\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial>{{dialogData().okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output, signal } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FlexModule } from '../../directives/flex';\n\nexport interface ToastData {\n message: string;\n icon?: string;\n actionCaption?: string;\n}\n\n@Component({\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexModule, MatIconModule, MatButtonModule, SafeHtmlPipe]\n})\nexport class ToastComponent {\n /** Emitted when the user clicks the optional action button. */\n readonly action = output<void>();\n\n /** Snack-bar payload with a safe fallback to an empty message when no data is injected. */\n protected readonly dialogData = signal<ToastData>(\n (inject(MAT_SNACK_BAR_DATA) as ToastData | null) ?? { message: '' }\n );\n\n /**\n * Emits the `action` event to notify the caller that the action button was clicked.\n */\n protected do(): void {\n this.action.emit();\n }\n}\n","<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData().icon) {\r\n <div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData().icon}}</mat-icon>\r\n </div>\r\n }\r\n <div fxFlex='*' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData().message) {\r\n <span [innerHTML]=\"dialogData().message | safeHtml\"></span>\r\n }\r\n </div>\r\n @if (dialogData().actionCaption) {\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <div style=\"padding-left: 20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"do()\"\r\n [innerHTML]=\"dialogData().actionCaption\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { Service, signal } from '@angular/core';\r\n\r\n\r\n@Service()\r\nexport class UIService {\r\n\r\n /**\r\n * The default Material form-field appearance used across dialogs and forms.\r\n * Defaults to `'fill'`.\r\n */\r\n readonly appearance = signal<'fill' | 'outline'>('fill');\r\n\r\n /**\r\n * Updates the global form-field appearance.\r\n * @param value - The new appearance value. Falls back to `'fill'` when `undefined` is passed.\r\n */\r\n setAppearance(value: 'fill' | 'outline' | undefined): void {\r\n this.appearance.set(value ?? 'fill');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { DialogResult } from '../../definitions';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FlexModule } from '../../directives/flex';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n\nexport enum DeleteDialogConfirmMode {\n None = 0,\n Simple = 1,\n Strong = 2\n}\n\nexport interface DeleteDialogData {\n title?: string;\n message: string;\n confirmMode: DeleteDialogConfirmMode;\n okCaption?: string;\n cancelCaption?: string;\n details?: string;\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './delete-dialog.component.html',\n styleUrl: './delete-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\n MatDialogActions, MatButtonModule, MatFormFieldModule, MatInputModule, SafeHtmlPipe]\n})\nexport class DeleteDialogComponent {\n /** Emitted when the user makes a choice. Carries the selected result. */\n readonly choosen = output<DialogResult>();\n\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<DeleteDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as DeleteDialogData | null) ?? {};\n return {\n title: 'Attenzione',\n okCaption: 'Si',\n cancelCaption: 'No',\n confirmMode: DeleteDialogConfirmMode.None,\n message: '',\n ...raw,\n };\n })());\n\n /**\n * Whether the user has confirmed the deletion.\n * Starts as `true` for all modes except `Simple`, which requires explicit checkbox confirmation.\n */\n protected readonly confirmed = signal<boolean>(\n this.dialogData().confirmMode !== DeleteDialogConfirmMode.Simple\n );\n\n /** Current value typed into the strong-confirmation text field. */\n protected confirmValue?: string;\n\n /**\n * Confirms the deletion, emitting `'ok'` and closing the dialog.\n */\n ok(): void {\n this.choosen.emit({ result: 'ok' });\n this.dialogRef.close();\n }\n\n /**\n * Cancels the operation, emitting `'cancel'` and closing the dialog.\n */\n cancel(): void {\n this.choosen.emit({ result: 'cancel' });\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().confirmMode === 1) {\r\n <div>\r\n <mat-checkbox (change)=\"confirmed.set($event.checked)\" [checked]=\"confirmed()\">\r\n Confermo la cancellazione\r\n </mat-checkbox>\r\n </div>\r\n } @else if (dialogData().confirmMode === 2) {\r\n <p>Per confermare la cancellazione digita la parola <i><b>elimina</b></i>.</p>\r\n <mat-form-field style=\"width: 200px\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma</mat-label>\r\n <input matInput #field_confirm=\"ngModel\" [(ngModel)]=\"confirmValue\" name=\"field_confirm\" required\r\n [attr.aria-label]=\"'Digita la parola -elimina-'\">\r\n @if (field_confirm.invalid) {\r\n <mat-error>Digita la parola \"elimina\"</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <br>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\"\r\n [disabled]=\"f.form.invalid || (confirmValue && confirmValue.toLowerCase() !== 'elimina') || !confirmed()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\"\r\n (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { PlatformLocation } from '@angular/common';\nimport { ComponentRef, inject, Service } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\nimport { BusyDialogComponent } from '../dialogs/busy/busy-dialog.component';\nimport {\n ConfirmDialogComponent,\n ConfirmDialogData,\n ConfirmDialogOption\n} from '../dialogs/confirm/confirm-dialog.component';\nimport {\n InfoDialogComponent,\n InfoDialogData\n} from '../dialogs/info/info-dialog.component';\nimport { ToastComponent, ToastData } from '../dialogs/toast/toast.component';\nimport { UIService } from './ui.service';\nimport { DeleteDialogComponent, DeleteDialogConfirmMode, DeleteDialogData } from '../dialogs/delete/delete-dialog.component';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IDialogService {}\n\ninterface PopHistoryEntry {\n id: string;\n value: number;\n}\n\nexport class BusyTimer {\n private readonly subscription: Subscription;\n\n constructor(\n private readonly dialogService: DialogService,\n due: number = 100,\n message: string = 'Operazione in corso...'\n ) {\n this.subscription = timer(due).pipe(tap(() => this.dialogService.busy(message))).subscribe();\n }\n\n /** Dispose object */\n clear(): void {\n this.subscription.unsubscribe();\n this.dialogService.clearBusy();\n }\n}\n\n@Service()\nexport class DialogService extends UIService {\n\n /**\n * Shares the SAME `appearance` signal instance as the root `UIService`:\n * `uiService.setAppearance('outline')` is immediately visible here and in\n * every dialog opened by this service.\n */\n override readonly appearance = inject(UIService).appearance;\n\n private readonly dialog = inject(MatDialog);\n private readonly overlay = inject(Overlay);\n private readonly snackBar = inject(MatSnackBar);\n private readonly location = inject(PlatformLocation);\n\n private busyDialogRef?: OverlayRef;\n private busyComponentRef?: ComponentRef<BusyDialogComponent>;\n private clearBusyTimer?: ReturnType<typeof setTimeout>;\n private errorDialogRef?: MatDialogRef<InfoDialogComponent>;\n private readonly popHistory: PopHistoryEntry[] = [];\n private popState = true;\n private poppingState = false;\n\n constructor() {\n super();\n\n // Handle dialog close when back button is clicked\n this.location.onPopState(() => {\n if (!this.poppingState) {\n const count = this.dialog.openDialogs.length;\n if (count > 0) {\n // Disable pop state if needed\n this.popState = false;\n // Close dialog\n this.dialog.openDialogs[count - 1].close();\n }\n } else {\n this.poppingState = false;\n }\n });\n }\n\n /**\n * Removes trailing `#` characters from the current URL (e.g. after a page reload).\n * @param resetPoppingState - When `true`, resets the internal popping-state flag.\n */\n clearUrl(resetPoppingState: boolean = false): void {\n const url = location.href;\n let l = url.length;\n while (l >= 0 && url[l - 1] === '#') l--;\n if (l < url.length)\n history.replaceState({}, '', url.substring(0, l));\n if (resetPoppingState)\n this.poppingState = false;\n }\n\n /**\n * Close all dialogs\n */\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n\n /**\n * Opens a Material dialog. Returns `null` when not running in a browser.\n * @param component - The component to open as a dialog.\n * @param config - The dialog configuration.\n * @returns The dialog reference, or `null` outside the browser.\n */\n open<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> | null {\n if (!SystemUtils.isBrowser()) return null;\n this.clearBusy();\n return this.openDialog(component, config);\n }\n\n\n /**\n * Internal helper that wraps `MatDialog.open`, subscribes to lifecycle hooks\n * and manages browser-history push/pop entries.\n * @param component - The component to open.\n * @param config - The dialog configuration.\n * @returns The dialog reference.\n */\n private openDialog<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> {\n // We will take care of navigation\n config.closeOnNavigation = false;\n const d = this.dialog.open(component, config);\n d.afterOpened().pipe(first()).subscribe(() => this.pushDialog(d.id));\n d.beforeClosed().pipe(first()).subscribe(() => this.popDialog(d.id));\n d.afterClosed().pipe(first()).subscribe(() => {\n // Final cleanup of middle objects\n this.errorDialogRef = undefined;\n });\n return d;\n }\n\n /**\n * Returns the element height including margins\n * @param element - element\n * @returns the height\n */\n private outerHeight(element: HTMLElement): number {\n if (!SystemUtils.isBrowser()) return 0;\n const height = element.offsetHeight;\n const style = window.getComputedStyle(element);\n return (['top', 'bottom'] as const)\n .map(side => parseInt(style.getPropertyValue(`margin-${side}`), 10))\n .reduce((total, margin) => total + margin, height);\n }\n\n /**\n * Return current dialog height\n */\n getCurrentDialogHeight(): number {\n if (!SystemUtils.isBrowser()) return 0;\n const count = this.popHistory.length;\n if (count > 0) {\n let id = this.popHistory[count - 1].id;\n let elem = document.getElementById(id);\n if (elem && elem.clientHeight > 0) return elem.clientHeight;\n }\n return 0;\n }\n\n /**\n * Returns the scrollable content area height for the topmost open dialog.\n * @param fixedPartsClassName - CSS class names of fixed (non-scrollable) elements whose heights are subtracted.\n * @param minimalHeight - Minimum height floor to use when the dialog height is smaller.\n * @returns The computed scrollable height in pixels.\n */\n getCurrentDialogScrollableHeight(\n fixedPartsClassName: string[],\n minimalHeight: number\n ): number {\n if (!SystemUtils.isBrowser()) return 0;\n let h = Math.max(this.getCurrentDialogHeight(), minimalHeight);\n if (fixedPartsClassName) {\n fixedPartsClassName.forEach(n => {\n const elems = document.getElementsByClassName(n);\n if (elems) {\n for (let i = 0; i < elems.length; i++) {\n h -= this.outerHeight(elems[i] as HTMLElement);\n }\n }\n });\n }\n return h;\n }\n\n /**\n * Push a dialog into the browser history\n */\n private pushDialog(id: string): void {\n if (!SystemUtils.isBrowser()) return;\n const index = history.length;\n history.pushState({ index }, '', location.href + '#');\n this.popHistory.push({ id, value: index });\n }\n\n /**\n * Pop a dialog from the history\n */\n private popDialog(id?: string): void {\n if (!SystemUtils.isBrowser()) return;\n if (this.popState) {\n this.poppingState = true;\n let popped = 1;\n if (id) {\n const p = this.popHistory.findIndex(n => n.id === id);\n if (p !== -1) {\n popped = this.popHistory[p].value - (history.state?.index ?? 0);\n popped = popped ? popped + 1 : 1;\n this.popHistory.splice(p, 1);\n }\n const url = location.href;\n let l = url.length;\n while (l >= 0 && url[l - 1] === '#' && popped > 0) {\n l--;\n popped--;\n }\n if (l < url.length)\n history.replaceState({}, '', url.substring(0, l));\n }\n }\n this.popState = true;\n }\n\n /**\n * Creates the CDK overlay used to host the busy indicator.\n * @returns The new `OverlayRef`.\n */\n private createBusy(): OverlayRef {\n return this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'busy-backdrop',\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n }\n\n /**\n * Clears the busy overlay after a short grace delay (lets very fast\n * operations avoid a visible flicker). The pending detach is cancelled by\n * any new `setBusy()` call, so it can never kill a freshly opened overlay.\n */\n clearBusy(): void {\n clearTimeout(this.clearBusyTimer);\n this.clearBusyTimer = setTimeout(() => {\n this.clearBusyTimer = undefined;\n this.busyDialogRef?.detach();\n this.busyComponentRef?.destroy();\n this.busyComponentRef = undefined;\n }, 500);\n }\n\n /**\n * Shows or updates the busy overlay.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\n * @param type - Visual style of the overlay. Defaults to `'bar'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created, `false` if an existing one was updated.\n */\n setBusy(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar',\n action?: Observable<unknown>\n ): boolean {\n // Cancel any pending clearBusy() detach: it must never kill this overlay\n clearTimeout(this.clearBusyTimer);\n this.clearBusyTimer = undefined;\n const exists = this.busyDialogRef?.hasAttached();\n if (exists) {\n this.busyComponentRef?.instance.set(message, progress, progressMode, type); // update existing\n } else {\n // Open new\n if (!this.busyDialogRef) {\n this.busyDialogRef = this.createBusy();\n }\n this.busyComponentRef = this.busyDialogRef.attach(new ComponentPortal(BusyDialogComponent));\n this.busyComponentRef.instance.set(message, progress, progressMode, type);\n if (action) {\n action\n .pipe(first())\n .subscribe(() => {\n this.clearBusy();\n });\n }\n }\n return !exists;\n }\n\n /**\n * Shows or updates the busy overlay using the progress-bar style.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busy(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, progress, progressMode, 'bar', action);\n }\n\n \n /**\n * Returns a `BusyTimer` that shows the busy overlay after a debounce delay.\n * @param message - Text to display. Defaults to `'Operazione in corso...'`.\n * @param due - Delay in milliseconds before the overlay appears. Defaults to `100`.\n * @returns A `BusyTimer` that must be disposed with `clear()` when the operation ends.\n */\n busyTimer(message: string = \"Operazione in corso...\", due: number = 100): BusyTimer {\n return new BusyTimer(this, due, message);\n }\n\n\n /**\n * Shows or updates the busy overlay using the hourglass style.\n * @param message - Text to display inside the overlay.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busyHourglass(\n message: string,\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, -1, 'indeterminate', 'hourglass', action);\n }\n\n /**\n * Shows or updates the busy overlay using the spinner style.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress mode. Defaults to `'indeterminate'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busySpinner(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, progress, progressMode, 'spinner', action);\n }\n\n /**\n * Shows a minimal wait spinner overlay.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n wait(action?: Observable<unknown>): boolean {\n return this.setBusy('', -1, 'indeterminate', 'wait', action);\n }\n\n\n /**\n * Opens an informational dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Informazioni'`.\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\n * @param details - Optional secondary details text.\n * @param onNavigate - Optional navigation callback invoked when the user clicks a link.\n * @returns The dialog reference, or `null` outside the browser.\n */\n info(\n message: string,\n title: string = 'Informazioni',\n okCaption: string = 'Ok',\n width: number = 500,\n dismissAfter?: number,\n details?: string,\n onNavigate?: (url: string) => void\n ): MatDialogRef<InfoDialogComponent> | null {\n this.clearBusy();\n return this.open(InfoDialogComponent, {\n ariaLabel: 'informazioni',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n okCaption,\n dismissAfter,\n details,\n onNavigate,\n appearance: this.appearance()\n } as InfoDialogData,\n closeOnNavigation: false,\n \n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n /**\n * Opens an error dialog. If one is already open, its content is updated in place.\n * @param message - HTML error message to display.\n * @param log - Optional technical log / stack trace shown in the details panel.\n * @param title - Dialog title. Defaults to `'Errore'`.\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\n * @returns The dialog reference, or `null` outside the browser.\n */\n error(\n message: string,\n log?: string,\n title: string = 'Errore',\n okCaption: string = 'Ok',\n width: number = 500,\n dismissAfter?: number,\n ): MatDialogRef<InfoDialogComponent> | null {\n this.clearBusy();\n if (this.errorDialogRef) {\n // Just change current error\n this.errorDialogRef.componentInstance.setData({\n message,\n title,\n details: log,\n okCaption,\n dismissAfter\n });\n return this.errorDialogRef;\n }\n const ref = this.open(InfoDialogComponent, {\n ariaLabel: 'errore',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n details: log,\n okCaption,\n dismissAfter,\n appearance: this.appearance()\n } as InfoDialogData,\n closeOnNavigation: false,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n this.errorDialogRef = ref ?? undefined;\n return ref;\n }\n\n /**\n * Shows a snack-bar toast notification.\n * @param message - HTML message to display.\n * @param duration - Visible duration in milliseconds. Defaults to `2000`.\n * @param icon - Material icon name shown beside the message. Defaults to `'check'`.\n * @param actionCaption - Optional label for the action button.\n * @returns The snack-bar reference.\n */\n toast(\n message: string,\n duration: number = 2000,\n icon: string = 'check',\n actionCaption?: string\n ): MatSnackBarRef<ToastComponent> {\n this.clearBusy();\n if (duration === -1) duration = 2000; // default\n const toastRef = this.snackBar.openFromComponent(ToastComponent, {\n duration,\n data: { message, icon, actionCaption } as ToastData\n });\n toastRef.instance.action.subscribe(() => toastRef.dismiss());\n return toastRef;\n }\n\n /**\n * Opens a confirmation dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Conferma'`.\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\n * @param otherCaption - Optional tertiary action button label.\n * @param options - Optional list of checkbox options shown to the user.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param details - Optional secondary details text.\n * @returns The dialog reference, or `null` outside the browser.\n */\n confirm(\n message: string,\n title: string = 'Conferma',\n okCaption: string = 'Si',\n cancelCaption: string = 'No',\n otherCaption?: string,\n options?: ConfirmDialogOption[],\n width: number = 500,\n details?: string\n ): MatDialogRef<ConfirmDialogComponent> | null {\n return this.open(ConfirmDialogComponent, {\n ariaLabel: 'conferma',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n okCaption,\n cancelCaption,\n otherCaption,\n options,\n details,\n appearance: this.appearance()\n } as ConfirmDialogData,\n closeOnNavigation: false,\n disableClose: true,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n /**\n * Opens a deletion-confirmation dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Attenzione'`.\n * @param confirmMode - Confirmation mode (none / checkbox / type-to-confirm). Defaults to `None`.\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param details - Optional secondary details text.\n * @returns The dialog reference, or `null` outside the browser.\n */\n delete(\n message: string,\n title: string = 'Attenzione',\n confirmMode: DeleteDialogConfirmMode = DeleteDialogConfirmMode.None,\n okCaption: string = 'Si',\n cancelCaption: string = 'No',\n width: number = 500,\n details?: string\n ): MatDialogRef<DeleteDialogComponent> | null {\n return this.open(DeleteDialogComponent, {\n ariaLabel: 'attenzione',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n confirmMode,\n okCaption,\n cancelCaption,\n details,\n appearance: this.appearance()\n } as DeleteDialogData,\n closeOnNavigation: false,\n disableClose: true,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n}\n\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { PasswordStrength, SystemUtils } from '@arsedizioni/ars-utils/core';\r\n\r\nconst DEFAULT_STRENGTH: PasswordStrength = { score: 0, label: '', color: '', suggestions: [], isValid: false };\r\n\r\n/**\r\n * Displays a password-strength indicator for the provided password string.\r\n * Uses `SystemUtils.calculatePasswordStrength` to derive the score and label.\r\n */\r\n@Component({\r\n selector: 'password-strength',\r\n templateUrl: './password-strength.component.html',\r\n styleUrl: './password-strength.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatTooltipModule]\r\n})\r\nexport class PasswordStrengthComponent {\r\n /** The password to evaluate. An empty string renders the default (score 0) state. */\r\n readonly password = input<string>('');\r\n\r\n /**\r\n * Computed strength result for the current password.\r\n * Falls back to `DEFAULT_STRENGTH` when the password is empty.\r\n */\r\n protected readonly strength = computed<PasswordStrength>(() => {\r\n const pwd = this.password();\r\n return pwd ? SystemUtils.calculatePasswordStrength(pwd) : DEFAULT_STRENGTH;\r\n });\r\n\r\n /**\r\n * CSS class applied to the label element based on the numeric score (1–6 bands).\r\n * Scores ≤ 2 → `'score-2'`, ≤ 3 → `'score-3'`, etc.\r\n */\r\n protected readonly scoreClass = computed<string>(() => {\r\n const score = this.strength().score;\r\n if (score <= 2) return 'score-2';\r\n if (score <= 3) return 'score-3';\r\n if (score <= 4) return 'score-4';\r\n if (score <= 5) return 'score-5';\r\n return 'score-6';\r\n });\r\n}\r\n","<div class=\"wide x-small bold\" style=\"white-space: nowrap; padding-top:4px\" [matTooltip]=\"strength().suggestions?.join('\\n ')\">\r\n <span [class]=\"scoreClass()\">{{strength().label}}</span>\r\n</div>","import { Component, ElementRef, computed, forwardRef, signal, viewChildren, ChangeDetectionStrategy } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, FormsModule, ValidationErrors, Validator } from '@angular/forms';\n\n\n@Component({\n selector: 'otp-input',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './otp-input.component.html',\n styleUrl: './otp-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OtpInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OtpInputComponent),\n multi: true,\n },\n ],\n})\nexport class OtpInputComponent implements ControlValueAccessor, Validator {\n /** Signal-based query for all individual OTP digit input elements. */\n readonly otpFields = viewChildren<ElementRef<HTMLInputElement>>('otpField');\n\n /** `true` when every digit slot contains a valid single decimal digit. */\n readonly isValid = computed(() => this.otpArray().every(d => /^\\d$/.test(d)));\n\n /** Array of per-digit values backing the OTP display. */\n readonly otpArray = signal<string[]>(Array(6).fill(''));\n\n /** Whether the control is currently disabled. */\n readonly disabled = signal<boolean>(false);\n\n private onChange: (val: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n // ── ControlValueAccessor ───────────────────────────────────────────────────\n\n /**\n * Writes a new value into the control from the model.\n * @param value - A string of up to 6 digits to pre-fill the OTP fields.\n */\n writeValue(value: string): void {\n const arr = Array(6).fill('');\n if (value) {\n value.split('').forEach((c, i) => {\n if (i < 6) arr[i] = c;\n });\n }\n this.otpArray.set(arr);\n }\n\n /**\n * Registers the callback invoked when the control value changes.\n * @param fn - The callback function.\n */\n registerOnChange(fn: (val: string) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers the callback invoked when the control is touched.\n * @param fn - The callback function.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Enables or disables the control.\n * @param isDisabled - `true` to disable all OTP inputs.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n // ── Validator ──────────────────────────────────────────────────────────────\n\n /**\n * Validates the OTP value: an empty code is left to `required`, while a\n * PARTIAL code (e.g. \"12\") is reported as invalid. Without this, the joined\n * value \"12\" was a non-empty string and `required` let the form submit\n * with an incomplete OTP.\n * @param control - The form control bound to this component.\n * @returns `null` when empty or complete (6 digits), `{ otp: true }` otherwise.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value: string = control.value ?? '';\n if (value.length === 0) return null; // let `required` handle emptiness\n return /^\\d{6}$/.test(value) ? null : { otp: true };\n }\n\n /**\n * Marks the control as touched when an OTP field loses focus.\n */\n onBlur(): void {\n this.onTouched();\n }\n\n // ── Event handlers ─────────────────────────────────────────────────────────\n\n /**\n * Blocks non-digit characters before they are inserted.\n * @param event - The `beforeinput` event from the input element.\n */\n onBeforeInput(event: InputEvent): void {\n if (event.data && !/^\\d$/.test(event.data)) {\n event.preventDefault();\n }\n }\n\n /**\n * Handles digit input, updates the OTP array, and advances focus.\n * @param event - The `input` event from the digit field.\n * @param index - Zero-based index of the field that received input.\n */\n onInput(event: Event, index: number): void {\n let val = (event.target as HTMLInputElement).value;\n val = val.replace(/\\D/g, '').slice(-1);\n\n const arr = [...this.otpArray()];\n arr[index] = val;\n this.otpArray.set(arr);\n\n this.updateModel();\n\n if (val && index < 5) {\n this.focusField(index + 1);\n }\n }\n\n /**\n * Handles the Backspace key by moving focus to the previous field when the current one is empty.\n * @param event - The `keydown` event.\n * @param index - Zero-based index of the field that received the keydown.\n */\n onKeyDown(event: KeyboardEvent, index: number): void {\n if (event.key === 'Backspace' && !this.otpArray()[index] && index > 0) {\n this.focusField(index - 1);\n }\n }\n\n /**\n * Handles paste events by extracting up to 6 digits and distributing them across the OTP fields.\n * @param event - The `ClipboardEvent` from the paste action.\n */\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const digits = pasted.replace(/\\D/g, '').slice(0, 6).split('');\n\n if (digits.length > 0) {\n const arr = Array(6).fill('');\n digits.forEach((d, i) => (arr[i] = d));\n this.otpArray.set(arr);\n this.updateModel();\n this.focusField(Math.min(digits.length, 5));\n }\n }\n\n /**\n * Moves focus to the OTP field at the given index.\n * @param index - Zero-based index of the target field.\n */\n private focusField(index: number): void {\n const field = this.otpFields()[index];\n field?.nativeElement.focus();\n field?.nativeElement.select();\n }\n\n /**\n * Notifies the form model of the current OTP value and marks the control as touched.\n */\n private updateModel(): void {\n const code = this.otpArray().join('');\n this.onChange(code);\n this.onTouched();\n }\n}\n","<div class=\"otp-container\">\n @for (digit of otpArray(); track $index) {\n <input\n #otpField\n type=\"text\"\n maxlength=\"1\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n class=\"otp-box\"\n [value]=\"digit\"\n (beforeinput)=\"onBeforeInput($event)\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (blur)=\"onBlur()\"\n (paste)=\"onPaste($event)\"\n [disabled]=\"disabled()\"\n required\n />\n }\n</div>\n\n","import { Component, inject, output, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { CredentialsDialogResult } from '../../definitions';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexModule } from '../../directives/flex';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { OtpInputComponent } from '../../components/otp/otp-input.component';\n\nexport interface CredentialsDialogData {\n title?: string;\n message?: string;\n remember?: boolean;\n recoverPassword?: boolean;\n recoverPasswordUrl?: string;\n user?: string;\n okCaption?: string;\n mode?: 'email' | 'user' | 'otp';\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './credentials-dialog.component.html',\n styleUrl: './credentials-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatCheckboxModule,\n MatDialogActions,\n FlexModule,\n MatButtonModule,\n MatDialogClose,\n PasswordStrengthComponent,\n OtpInputComponent,\n SafeHtmlPipe,\n ],\n})\nexport class CredentialsDialogComponent {\n /** Emitted when the user submits the form. Carries the entered credentials. */\n readonly done = output<CredentialsDialogResult>();\n\n /** Emitted when the user requests a password-recovery flow. */\n readonly recoveringPassword = output<CredentialsDialogResult>();\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<CredentialsDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null) ?? {};\n const data: CredentialsDialogData = {\n appearance: 'fill',\n title: 'Informazioni',\n okCaption: 'Salva',\n mode: 'email',\n ...raw,\n };\n data.appearance ??= 'fill';\n data.title ??= 'Informazioni';\n data.okCaption ??= 'Salva';\n data.mode ??= 'email';\n if (data.mode === 'otp' && !data.message) {\n data.message = '<div class=\"small\">Inserisci il codice di verifica di 6 cifre che ti abbiamo inviato ora per email<br><span class=\"x-small\">(controlla anche la posta indesiderata)</span>.</div>';\n }\n return data;\n })());\n\n /** Current form model, pre-filled with the user name from dialog data when provided. */\n protected item: CredentialsDialogResult = {\n user: (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null)?.user,\n };\n\n /** Whether the password field is currently shown as plain text. */\n protected readonly showPassword = signal<boolean>(false);\n\n /**\n * Switches the input mode of the dialog at runtime (e.g. from login to OTP).\n * Intended to be called from outside via the dialog component reference.\n * @param mode - The new input mode (`'email'`, `'user'`, or `'otp'`).\n * @param message - Optional new message to display above the form.\n */\n public changeMode(mode: 'email' | 'user' | 'otp', message?: string): void {\n this.dialogData.update(d => ({\n ...d,\n mode,\n message: message ?? d.message,\n }));\n }\n\n /**\n * Emits the current form result and closes the dialog.\n */\n protected ok(): void {\n this.done.emit(this.item);\n }\n\n /**\n * Emits the current form result for the password-recovery flow and optionally\n * opens the recovery URL in a new tab.\n */\n protected recoverPassword(): void {\n this.recoveringPassword.emit(this.item);\n const url = this.dialogData().recoverPasswordUrl;\n if (url) {\n window.open(url, '_blank');\n }\n }\n}\n\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content>\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\" style=\"padding-bottom: 20px;\"></div>\r\n }\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n @if(dialogData().mode !== 'otp') {\r\n @if (dialogData().mode === 'email') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.user\" name=\"email\" #email=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email'\">\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n } @else if (dialogData().mode === 'user') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Utente</mat-label>\r\n <input matInput [(ngModel)]=\"item.user\" name=\"user\" #user=\"ngModel\" required [attr.aria-label]=\"'user'\">\r\n @if (user.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>La tua password abilitata</mat-label>\r\n <input matInput name=\"password\" #password=\"ngModel\" [type]=\"!showPassword() ? 'password' : 'text'\"\r\n [(ngModel)]=\"item.password\" required [attr.aria-label]=\"'La tua password abilitata'\" autocomplete=\"on\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint>Attento a maiuscole e minuscole</mat-hint>\r\n @if (password.invalid) {\r\n <mat-error>Password non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n @if (dialogData().remember || dialogData().recoverPassword) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill style=\"margin-top: 20px;\">\r\n <div>\r\n @if (dialogData().remember) {\r\n <mat-checkbox fxFlexAlign=\"center\" [(ngModel)]=\"item.rememberMe\" name=\"rememberMe\"> Ricordami</mat-checkbox>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (dialogData().recoverPassword) {\r\n <button fxFlexAlign=\"center\" mat-button (click)=\"recoverPassword()\" title=\"Recupero password\"\r\n >Non riesco ad accedere</button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <otp-input name=\"otp\" [(ngModel)]=\"item.code\" required></otp-input>\r\n }\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FlexModule } from '../../directives/flex';\nimport { RecoverPasswordDialogResult } from '../../definitions';\n\nexport interface RecoverPasswordDialogData {\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './recover-password-dialog.component.html',\n styleUrl: './recover-password-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatDialogActions,\n FlexModule,\n MatDialogClose,\n ],\n})\nexport class RecoverPasswordDialogComponent {\n\n /** Emitted when the user submits the recovery request. Carries the entered email and recaptcha state. */\n readonly done = output<RecoverPasswordDialogResult>();\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<RecoverPasswordDialogData>({\n appearance: 'fill',\n ...((inject(MAT_DIALOG_DATA) as RecoverPasswordDialogData | null) ?? {}),\n });\n\n /** Current form model bound to the template inputs. */\n protected item: RecoverPasswordDialogResult = {\n email: '',\n recaptcha: false,\n };\n\n /**\n * Emits the current form result to trigger the password-recovery flow.\n */\n protected ok(): void {\n this.done.emit(this.item);\n }\n}\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<div mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</div>\r\n<mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password è collegata. Non è possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\" [(ngModel)]=\"item.email\" required email\r\n maxlength=\"200\" />\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non è corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non può accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento è stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'è il nuovo indirizzo IP e comunicatelo ad\r\n ARS Edizioni Informatiche.\r\n </p>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" >Chiudi</button>\r\n </div>\r\n</mat-dialog-actions>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n output,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { EqualsValidatorDirective, PasswordValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { FlexModule } from '../../directives/flex';\nimport { ResetPasswordDialogResult } from '../../definitions';\nimport { DialogService } from '../../services/dialog.service';\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n\nexport type ResetPasswordDialogMode = 'admin' | 'change' | 'forgot';\n\nexport interface ResetPasswordDialogData {\n mode: ResetPasswordDialogMode;\n userId?: number;\n userEmail?: string;\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './reset-password-dialog.component.html',\n styleUrl: './reset-password-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n FormsModule,\n FlexModule,\n MatFormFieldModule,\n MatInputModule,\n PasswordValidatorDirective,\n PasswordStrengthComponent,\n EqualsValidatorDirective,\n MatIconModule,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class ResetPasswordDialogComponent {\n /** Emitted when the user submits the new password. Carries the entered password data. */\n readonly done = output<ResetPasswordDialogResult>();\n\n private readonly dialogService = inject(DialogService);\n private readonly dialogRef = inject(MatDialogRef<ResetPasswordDialogComponent>);\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<ResetPasswordDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as ResetPasswordDialogData | null);\n return { mode: 'admin' as ResetPasswordDialogMode, appearance: 'fill' as MatFormFieldAppearance, ...raw };\n })());\n\n /** Current form model bound to the template inputs. */\n protected item: ResetPasswordDialogResult = {};\n\n /** Whether the old-password field is currently shown as plain text. */\n protected readonly showOldPassword = signal<boolean>(false);\n\n /** Whether the new-password field is currently shown as plain text. */\n protected readonly showPassword = signal<boolean>(false);\n\n /** Whether the confirm-password field is currently shown as plain text. */\n protected readonly showPassword2 = signal<boolean>(false);\n\n constructor() {\n const data = this.dialogData();\n if (data.mode !== 'forgot' && !data.userId) {\n this.dialogRef.close();\n this.dialogService.error('Utente non specificato.');\n return;\n }\n if (data.mode === 'forgot' && !data.userEmail) {\n this.dialogRef.close();\n this.dialogService.error('Email utente non specificata.');\n return;\n }\n this.item.userEmail = data.userEmail;\n this.item.userId = data.userId;\n }\n\n /**\n * Emits the current form result to trigger the password-reset flow.\n */\n protected ok(): void {\n this.done.emit(this.item);\n }\n\n /**\n * Generates a random password and populates both password fields with it.\n */\n protected generatePassword(): void {\n const password = SystemUtils.generatePassword();\n this.item.password = password;\n this.item.password2 = password;\n }\n}\n\n\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<div mat-dialog-title>Reimposta password</div>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n @if (dialogData().mode === 'forgot') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData().mode !== 'admin') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Vecchia password</mat-label>\r\n <input [type]=\"!showOldPassword() ? 'password' : 'text'\" matInput name=\"oldPwd\" autocomplete=\"on\"\r\n [(ngModel)]=\"item.oldPassword\" required maxlength=\"30\" #oldPwd=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix\r\n (click)=\"showOldPassword.set(!showOldPassword())\">\r\n <mat-icon>{{showOldPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.oldPassword) {\r\n <password-strength [password]=\"item.oldPassword\"></password-strength>\r\n }\r\n @if (oldPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Nuova password</mat-label>\r\n <input [type]=\"!showPassword() ? 'password' : 'text'\" matInput name=\"newPwd\" [(ngModel)]=\"item.password\" required\r\n password minlength=\"10\" maxlength=\"30\" #newPwd=\"ngModel\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma nuova password</mat-label>\r\n <input [type]=\"!showPassword2() ? 'password' : 'text'\" matInput name=\"newPwd2\" [(ngModel)]=\"item.password2\"\r\n [required]=\"dialogData().mode !== 'admin'\" password minlength=\"10\" maxlength=\"30\" [equals]=\"newPwd.control\" #newPwd2=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword2.set(!showPassword2())\">\r\n <mat-icon>{{showPassword2() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.password2) {\r\n <password-strength [password]=\"item.password2\"></password-strength>\r\n }\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd2.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().mode === 'admin') {\r\n <button mat-stroked-button (click)=\"generatePassword()\">Genera</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">Salva</button>\r\n @if (dialogData().mode !== 'forgot') {\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","/*\r\n * Public API Surface of scm-utils\r\n */\r\nexport * from './ui/definitions';\r\nexport * from './ui/paginatorIntl';\r\nexport * from './ui/services/index';\r\nexport * from './ui/dialogs/index';\r\nexport * from './ui/components/index';\r\nexport * from './ui/directives/flex/index';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["toBool","normalizeGap","i1.FxLayoutDirective","i2.FxLayoutAlignDirective","i3.FxFlexFillDirective","i2.FxFlexDirective","i3.FxLayoutAlignDirective","i4.FxLayoutGapDirective","i5.FxFlexFillDirective","i6","i7","i9","i10","i1","i4","i5","i6.FxLayoutDirective","i7.FxLayoutAlignDirective","i8.FxLayoutGapDirective","i9.FxFlexAlignDirective","i9.FxFlexFillDirective","i2.FxLayoutDirective","i3.FxFlexDirective","i4.FxLayoutAlignDirective","i5.FxLayoutGapDirective","i6.FxFlexFillDirective","i8"],"mappings":"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A,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,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,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAA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,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA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AA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA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A,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAA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AAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IA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A,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,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AA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IA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AAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,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,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBA3B3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,QAAQ;AACpC,iBAAA;;AA6HD;AA4BM,MAAO,qBAAsB,SAAQ,uBAAuB,CAAA;AAoChE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QApCA,IAAA,CAAA,YAAY,GAAI,KAAK,CAAS,SAAS,oFAAI,KAAK,EAAE,cAAc,EAAA,CAAG;QACnE,IAAA,CAAA,EAAE,GAAc,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;QACtE,IAAA,CAAA,EAAE,GAAc,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;QACtE,IAAA,CAAA,EAAE,GAAc,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;QACtE,IAAA,CAAA,EAAE,GAAc,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;QACtE,IAAA,CAAA,EAAE,GAAc,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;QACtE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,IAAI,GAAY,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,oBAAoB,EAAA,CAAG;QACzE,IAAA,CAAA,MAAM,GAAU,KAAK,CAAS,SAAS,8EAAI,KAAK,EAAE,sBAAsB,EAAA,CAAG;QAC3E,IAAA,CAAA,MAAM,GAAU,KAAK,CAAS,SAAS,8EAAI,KAAK,EAAE,sBAAsB,EAAA,CAAG;QAC3E,IAAA,CAAA,MAAM,GAAU,KAAK,CAAS,SAAS,8EAAI,KAAK,EAAE,sBAAsB,EAAA,CAAG;AAEnE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MACpC,UAAU,CACR,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;AAC1D,YAAA,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAC/C,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YAChE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YACtF,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;AACtF,YAAA,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;YACxE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpD;sFACF;QAIC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;YAC1B,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;AACpC,kBAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;AAC/D,QAAA,CAAC,CAAC;IACJ;8GA3CW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6iBAAA,EAAA,MAAA,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,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAA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,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,E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AA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAA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A,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,U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AAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA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UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-ui.mjs","sources":["../../../projects/ars-utils/ui/ui/paginatorIntl.ts","../../../projects/ars-utils/ui/ui/directives/flex/breakpoints.ts","../../../projects/ars-utils/ui/ui/directives/flex/media-observer.service.ts","../../../projects/ars-utils/ui/ui/directives/flex/if-bp.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/responsive-base.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex-extras.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-flex.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-grid.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-align.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-layout-gap.directive.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-show-hide.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/fx-style-class.directives.ts","../../../projects/ars-utils/ui/ui/directives/flex/flex-module.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/busy/busy-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/confirm/confirm-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/info/info-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.ts","../../../projects/ars-utils/ui/ui/dialogs/toast/toast.component.html","../../../projects/ars-utils/ui/ui/services/ui.service.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/delete/delete-dialog.component.html","../../../projects/ars-utils/ui/ui/services/dialog.service.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.ts","../../../projects/ars-utils/ui/ui/components/password-strength/password-strength.component.html","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.ts","../../../projects/ars-utils/ui/ui/components/otp/otp-input.component.html","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/credentials/credentials-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/recover-password/recover-password-dialog.component.html","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.ts","../../../projects/ars-utils/ui/ui/dialogs/reset-password/reset-password-dialog.component.html","../../../projects/ars-utils/ui/public_api.ts","../../../projects/ars-utils/ui/arsedizioni-ars-utils-ui.ts"],"sourcesContent":["import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/** Italian localisation for the Material paginator labels. */\r\n@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n override itemsPerPageLabel = 'Elementi per pagina';\r\n override nextPageLabel = 'Prossima pagina';\r\n override previousPageLabel = 'Pagina precedente';\r\n override lastPageLabel = 'Ultima pagina';\r\n override firstPageLabel = 'Prima pagina';\r\n\r\n /**\r\n * Returns the human-readable range label shown inside the paginator.\r\n * @param page - Zero-based index of the current page.\r\n * @param pageSize - Number of items displayed per page.\r\n * @param length - Total number of items, or `-1` when the total is still being calculated.\r\n * @returns A formatted string such as `\"1 - 25 di 100\"`.\r\n */\r\n override getRangeLabel = (page: number, pageSize: number, length: number): string => {\r\n if (length === -1) {\r\n return '0 di calcolo...';\r\n }\r\n if (length === 0 || pageSize === 0) {\r\n return `0 di ${length}`;\r\n }\r\n const totalLength = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n // If the start index exceeds the list length, do not try to fix the end index.\r\n const endIndex =\r\n startIndex < totalLength\r\n ? Math.min(startIndex + pageSize, totalLength)\r\n : startIndex + pageSize;\r\n return `${startIndex + 1} - ${endIndex} di ${totalLength}`;\r\n };\r\n}\r\n","/**\n * @file breakpoints.ts\n * Angular CDK (v22) breakpoint definitions.\n *\n * The canonical tiers map 1:1 to the CDK `Breakpoints` constants from\n * '@angular/cdk/layout' (Material Design specification):\n *\n * xs = Breakpoints.XSmall < 600px\n * sm = Breakpoints.Small >= 600px and < 960px\n * md = Breakpoints.Medium >= 960px and < 1280px\n * lg = Breakpoints.Large >= 1280px and < 1920px\n * xl = Breakpoints.XLarge >= 1920px\n *\n * These are the SAME tiers used by @ngbracket/ngx-layout, so responsive\n * suffixes (fxHide.xs, fxFlex.lt-sm, ...) behave exactly like the legacy\n * library — no breakpoint drift on migrated templates.\n *\n * Derived alias families (composed on the same CDK pixel boundaries; the CDK\n * does not publish range-combining constants):\n *\n * \"and up\" sm-up | md-up | lg-up | xl-up\n * gt-xs | gt-sm | gt-md | gt-lg (ngx-layout compat)\n * \"and down\" sm-down | md-down | lg-down\n * lt-sm | lt-md | lt-lg | lt-xl (ngx-layout compat)\n *\n * Device aliases (CDK constants, point-in-time only): usable with\n * MediaObserver.isActive() / isActive$() and *ifBp — NOT as input suffixes:\n *\n * handset | tablet | web |\n * handset-portrait | tablet-portrait | web-portrait |\n * handset-landscape | tablet-landscape | web-landscape\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Breakpoints } from '@angular/cdk/layout';\n\nexport const CDK_LAYOUT_BREAKPOINTS: Record<string, string> = {\n // ── Canonical ranges — CDK constants verbatim ──────────────────────────────\n 'xs': Breakpoints.XSmall,\n 'sm': Breakpoints.Small,\n 'md': Breakpoints.Medium,\n 'lg': Breakpoints.Large,\n 'xl': Breakpoints.XLarge,\n\n // ── \"and up\" — composed on CDK tier boundaries ─────────────────────────────\n 'sm-up': '(min-width: 600px)',\n 'md-up': '(min-width: 960px)',\n 'lg-up': '(min-width: 1280px)',\n 'xl-up': '(min-width: 1920px)',\n\n // ── \"and up\" — ngx-layout gt-* style ───────────────────────────────────────\n 'gt-xs': '(min-width: 600px)',\n 'gt-sm': '(min-width: 960px)',\n 'gt-md': '(min-width: 1280px)',\n 'gt-lg': '(min-width: 1920px)',\n\n // ── \"and down\" — composed on CDK tier boundaries ───────────────────────────\n 'sm-down': '(max-width: 959.98px)',\n 'md-down': '(max-width: 1279.98px)',\n 'lg-down': '(max-width: 1919.98px)',\n\n // ── \"and down\" — ngx-layout lt-* style ─────────────────────────────────────\n // lt-sm = everything below sm = xs only\n 'lt-sm': '(max-width: 599.98px)',\n // lt-md = xs + sm\n 'lt-md': '(max-width: 959.98px)',\n // lt-lg = xs + sm + md\n 'lt-lg': '(max-width: 1279.98px)',\n // lt-xl = xs through lg\n 'lt-xl': '(max-width: 1919.98px)',\n\n // ── CDK device aliases (point-in-time: MediaObserver.isActive / *ifBp) ─────\n 'handset': Breakpoints.Handset,\n 'tablet': Breakpoints.Tablet,\n 'web': Breakpoints.Web,\n 'handset-portrait': Breakpoints.HandsetPortrait,\n 'tablet-portrait': Breakpoints.TabletPortrait,\n 'web-portrait': Breakpoints.WebPortrait,\n 'handset-landscape': Breakpoints.HandsetLandscape,\n 'tablet-landscape': Breakpoints.TabletLandscape,\n 'web-landscape': Breakpoints.WebLandscape,\n};\n\n/**\n * @deprecated Renamed to `CDK_LAYOUT_BREAKPOINTS`: the module now follows the\n * Angular CDK breakpoint scale, not Bootstrap 5. Kept as an alias so existing\n * imports keep compiling; update references when convenient.\n */\nexport const BS5_BREAKPOINTS: Record<string, string> = CDK_LAYOUT_BREAKPOINTS;\n\n/** InjectionToken — override to customise or extend breakpoints */\nexport const LAYOUT_BREAKPOINTS = new InjectionToken<Record<string, string>>(\n 'LAYOUT_BREAKPOINTS',\n { providedIn: 'root', factory: () => CDK_LAYOUT_BREAKPOINTS }\n);\n\n/** Ordered canonical aliases, smallest → largest (used for mobile-first cascade) */\nexport const CANONICAL_ALIASES = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type BreakpointAlias = typeof CANONICAL_ALIASES[number];\n\n/**\n * All non-canonical alias families.\n * Used by ResponsiveBaseDirective.resolveNonCanonical() to handle lt-* / gt-* / *-up / *-down\n * inputs without polluting the mobile-first cascade logic.\n * Device aliases (handset/tablet/web*) are intentionally excluded: they are\n * point-in-time queries for *ifBp / MediaObserver, not directive input suffixes.\n */\nexport const ALIAS_FAMILIES = {\n up: ['sm-up', 'md-up', 'lg-up', 'xl-up'],\n down: ['sm-down', 'md-down', 'lg-down'],\n gt: ['gt-xs', 'gt-sm', 'gt-md', 'gt-lg'],\n lt: ['lt-sm', 'lt-md', 'lt-lg', 'lt-xl'],\n} as const;\n","/**\n * @file media-observer.service.ts (v2 — optimized)\n *\n * ── Optimizations over v1 ─────────────────────────────────────────────────\n *\n * ✅ Single bo.observe() call for all 5 canonical CDK breakpoints.\n * CDK internally uses one MediaQueryList listener per query string.\n * Calling observe() N times creates N listeners — here we create only one.\n *\n * ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in\n * directives) receive the same value without redundant re-computations.\n *\n * ✅ The currentBp Signal is derived from the Observable via toSignal():\n * Angular manages the subscription internally and tears it down with root.\n *\n * ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.\n *\n * ✅ isActive$() reuses the shared currentBp$ stream instead of opening\n * a new bo.observe() for every requested alias.\n */\n\nimport { inject, Signal, Service } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Observable, map, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LAYOUT_BREAKPOINTS, CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\n\n@Service()\nexport class MediaObserver {\n private readonly bo = inject(BreakpointObserver);\n private readonly bp = inject(LAYOUT_BREAKPOINTS);\n\n /**\n * A SINGLE CDK observation for all 5 canonical CDK breakpoints.\n * Each breakpoint change emits → we resolve the current alias → shared.\n *\n * shareReplay(1): all subscribers (N directives in the DOM) receive\n * the same value without N separate recomputations.\n */\n readonly currentBp$: Observable<BreakpointAlias> = this.bo\n .observe(CANONICAL_ALIASES.map(a => this.bp[a]))\n .pipe(\n map(() => this._resolve()),\n distinctUntilChanged(), // does not emit if the breakpoint hasn't actually changed\n shareReplay(1) // multicast: N directives, 1 single execution\n );\n\n /**\n * Signal derived from currentBp$.\n * Directives read it via effect() — zero manual subscriptions.\n * providedIn: 'root' ensures the Signal is a singleton.\n */\n readonly currentBp: Signal<BreakpointAlias> = toSignal(this.currentBp$, {\n initialValue: this._resolve()\n });\n\n /**\n * Returns true if the given alias (or raw media query) is currently active.\n * Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.\n *\n * @example\n * media.isActive('md') // true on 960–1279px screens\n * media.isActive('lg-up') // true on 1280px+\n * media.isActive('handset') // CDK device alias (orientation-aware)\n */\n isActive(alias: string): boolean {\n const query = this.bp[alias] ?? alias; // fallback: treat as raw media query\n return this.bo.isMatched(query);\n }\n\n /**\n * Observable true/false for a specific alias.\n * Reuses currentBp$ instead of opening a new bo.observe():\n * no additional MediaQueryList listener is created.\n */\n isActive$(alias: string): Observable<boolean> {\n return this.currentBp$.pipe(\n map(() => this.isActive(alias)),\n distinctUntilChanged()\n );\n }\n\n /** Resolves the active canonical alias (from xl down to xs, mobile-first) */\n private _resolve(): BreakpointAlias {\n for (let i = CANONICAL_ALIASES.length - 1; i >= 0; i--) {\n if (this.bo.isMatched(this.bp[CANONICAL_ALIASES[i]])) {\n return CANONICAL_ALIASES[i];\n }\n }\n return 'xs';\n }\n}\n","/**\n * @file if-bp.directive.ts (Angular 21 — signals)\n *\n * *ifBp — structural directive that adds/removes an element from the DOM\n * based on the active Bootstrap 5 breakpoint.\n *\n * Unlike [fxShow]/[fxHide] (which use display:none), *ifBp actually adds and\n * removes the element from the DOM — ideal for heavy components like mat-sidenav.\n *\n * Angular 21 changes:\n * • @Input setters replaced by input() / input.required()\n * • computed() derives alias list and active state reactively\n * • effect() in constructor handles DOM add/remove (no OnInit/OnChanges)\n * • No Injector, EffectRef, _initialized guard or manual subscriptions\n *\n * Usage:\n * <mat-sidenav *ifBp=\"'lg-up'\"> only rendered on lg and above\n * <div *ifBp=\"'xs'\">Mobile only</div>\n * <div *ifBp=\"'sm md'\">sm and md only (space-separated list of aliases)</div>\n * <div *ifBp=\"'lg-up'; else mobileRef\">Desktop view</div>\n * <ng-template #mobileRef>Mobile fallback</ng-template>\n *\n * Accepted alias values (Angular CDK tiers):\n * xs | sm | md | lg | xl\n * sm-up | md-up | lg-up | xl-up (also gt-xs … gt-lg)\n * sm-down | md-down | lg-down (also lt-sm … lt-xl)\n * handset | tablet | web (+ -portrait / -landscape) — CDK device aliases\n * Space-separated list of any of the above\n */\n\nimport {\n Directive, TemplateRef, ViewContainerRef,\n computed, effect, inject, input\n} from '@angular/core';\nimport { MediaObserver } from './media-observer.service';\n\n@Directive({\n selector: '[ifBp]',\n standalone: true\n})\nexport class IfBpDirective {\n private readonly tpl = inject(TemplateRef<unknown>);\n private readonly vcr = inject(ViewContainerRef);\n private readonly media = inject(MediaObserver);\n\n /** Space-separated list of breakpoint aliases, e.g. `'lg xl-up handset'` */\n readonly ifBp = input.required<string>();\n /** Optional else-template shown when no alias is active */\n readonly ifBpElse = input<TemplateRef<unknown>>();\n\n private readonly _aliases = computed(() => this.ifBp().trim().split(/\\s+/));\n private readonly _isActive = computed(() => {\n this.media.currentBp(); // reactive dependency — re-evaluates on breakpoint change\n return this._aliases().some(alias => this.media.isActive(alias));\n });\n\n /** Which template is currently rendered. `undefined` = nothing decided yet. */\n private _rendered: 'main' | 'else' | 'none' | undefined;\n /** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */\n private _renderedTpl: TemplateRef<unknown> | null = null;\n\n constructor() {\n effect(() => {\n const active = this._isActive();\n const elseTpl = this.ifBpElse();\n const next: 'main' | 'else' | 'none' = active ? 'main' : elseTpl ? 'else' : 'none';\n const nextTpl: TemplateRef<unknown> | null =\n next === 'main' ? this.tpl : next === 'else' ? elseTpl! : null;\n\n // Dirty-check on BOTH state and template instance: a swapped [ifBpElse]\n // reference must re-render even when the state stays 'else'.\n if (next === this._rendered && nextTpl === this._renderedTpl) return;\n\n this.vcr.clear();\n if (nextTpl) {\n this.vcr.createEmbeddedView(nextTpl);\n }\n this._rendered = next;\n this._renderedTpl = nextTpl;\n });\n }\n}\n","/**\n * @file responsive-base.directive.ts (v5 — Angular 21 signals)\n *\n * ── What changed in v5 ────────────────────────────────────────────────────\n *\n * Full Angular 21 signals refactor:\n *\n * • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED\n * FUNCTIONS that accept currentBp and isActive as parameters.\n * Directives call them from computed() or effect() with no \"this\" binding.\n *\n * • ResponsiveBaseDirective is now a thin utility base:\n * – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.\n * – Exposes safeSetStyle() helper.\n * – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().\n *\n * • Each concrete directive uses:\n * – input() for every @Input (signals, no more setters + _v/_nc maps)\n * – computed() to build BpValues / NcValues maps and derive resolved CSS\n * – effect() in the constructor to write to the DOM\n *\n * Benefits vs v4:\n * ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)\n * ✅ Angular's reactive graph provides built-in dirty-checking and memoization\n * ✅ DOM writes happen only when the resolved CSS value actually changes\n * ✅ No more Injector injection just to create effects\n *\n * ── Resolution strategy (unchanged) ──────────────────────────────────────\n *\n * Canonical aliases (xs … xl, CDK tiers) → mobile-first cascade via resolve()\n * Non-canonical (lt-*, gt-*, *-up, *-down) → point-in-time isActive() checks\n * Final order: resolveNonCanonical() wins over resolve()\n */\n\nimport {\n Directive,\n inject, ElementRef, Renderer2, PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { MediaObserver } from './media-observer.service';\nimport { CANONICAL_ALIASES, BreakpointAlias } from './breakpoints';\nimport { BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── O(1) alias → index lookup (module-level constant, shared across instances) ──\nexport const ALIAS_INDEX = new Map<string, number>(\n CANONICAL_ALIASES.map((a, i) => [a, i])\n);\n\n/**\n * All non-canonical alias keys in priority order (most specific first).\n * lt-sm is \"below sm\" (= xs only), lt-md is \"below md\" (= xs+sm), etc.\n * Narrower range = higher priority = checked first.\n */\nexport const NON_CANONICAL_PRIORITY = [\n // lt-* from narrowest to widest\n 'lt-sm', 'lt-md', 'lt-lg', 'lt-xl',\n // gt-* from widest to narrowest\n 'gt-xs', 'gt-sm', 'gt-md', 'gt-lg',\n // *-down from narrowest to widest (CDK boundaries)\n 'sm-down', 'md-down', 'lg-down',\n // *-up from widest to narrowest (CDK boundaries)\n 'sm-up', 'md-up', 'lg-up', 'xl-up',\n] as const;\n\n// ── Pure resolution functions ─────────────────────────────────────────────────\n// These are standalone functions (not class methods) so they can be called\n// from computed() closures without capturing `this`.\n\n/**\n * Resolution with three-tier priority:\n *\n * 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])\n * 2. Generic `default` value (e.g. [fxFlex]=\"49\" — applies to all unspecified bps)\n * 3. Mobile-first cascade down (e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\" → lg cascades to md)\n *\n * This ensures [fxFlex]=\"49\" [fxFlex.xs]=\"100\" gives xs→100 and sm+→49,\n * instead of `xs` cascading up and shadowing the default on sm/md/lg.\n */\nexport function resolve<T>(\n values: BpValues<T>,\n currentBp: BreakpointAlias,\n): T | undefined {\n // 1. Exact match\n const exact = values[currentBp as keyof BpValues<T>];\n if (exact !== undefined) return exact;\n\n // 2. Generic default (wins over cascade — it's the \"applies everywhere\" value)\n const def = (values as Record<string, T | undefined>)['default'];\n if (def !== undefined) return def;\n\n // 3. Mobile-first cascade (only when no default — e.g. [fxFlex.xs]=\"X\" [fxFlex.md]=\"Y\")\n const idx = ALIAS_INDEX.get(currentBp) ?? 0;\n for (let i = idx - 1; i >= 0; i--) {\n const v = values[CANONICAL_ALIASES[i] as keyof BpValues<T>];\n if (v !== undefined) return v;\n }\n return undefined;\n}\n\n/**\n * Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and\n * returns the value for the first alias that isActive().\n */\nexport function resolveNonCanonical<T>(\n nc: NcValues<T>,\n isActive: (alias: string) => boolean,\n): T | undefined {\n for (const alias of NON_CANONICAL_PRIORITY) {\n const v = (nc as Record<string, T | undefined>)[alias];\n if (v !== undefined && isActive(alias)) return v;\n }\n return undefined;\n}\n\n/**\n * Full resolution: non-canonical overrides win over the canonical cascade.\n *\n * Usage inside computed():\n * const resolved = computed(() =>\n * resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))\n * );\n */\nexport function resolveAll<T>(\n canonical: BpValues<T>,\n nonCanonical: NcValues<T>,\n currentBp: BreakpointAlias,\n isActive: (alias: string) => boolean,\n): T | undefined {\n return resolveNonCanonical(nonCanonical, isActive) ?? resolve(canonical, currentBp);\n}\n\n// ── Base directive ─────────────────────────────────────────────────────────────\n\n@Directive()\nexport abstract class ResponsiveBaseDirective {\n protected readonly el = inject(ElementRef<HTMLElement>);\n protected readonly r2 = inject(Renderer2);\n protected readonly media = inject(MediaObserver);\n\n /** true in browser, false in SSR */\n protected readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** SSR-safe style setter. Pass null/empty string to remove the property. */\n protected safeSetStyle(prop: string, value: string | null): void {\n if (value === null || value === '') {\n this.r2.removeStyle(this.el.nativeElement, prop);\n } else {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n }\n}\n","/**\n * @file fx-layout.directive.ts (Angular 22 — signals)\n *\n * [fxLayout] — sets display + flex-direction (+ optional flex-wrap) on the host.\n * [fxLayoutWrap] — dedicated alias for flex-wrap (original ngx-layout compat).\n *\n * ngx-layout parity (ported from @ngbracket layout-validator.ts):\n * • Value format: \"<direction> [wrap] [inline]\" in any ngx-accepted spelling\n * • Wrap aliases: reverse | wrap-reverse | reverse-wrap → wrap-reverse,\n * no | none | nowrap → nowrap, anything else truthy → wrap\n * • 'inline' modifier → display: inline-flex\n * • No wrap token → flex-wrap REMOVED (ngx emits null), not forced to nowrap\n * • box-sizing: border-box on the container\n * • display preserved when currently 'none' (so fxHide is never overridden)\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nexport const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nconst INLINE = 'inline';\n\n/** Port of ngx-layout validateWrapValue(). */\nexport function validateWrapValue(value: string): string {\n if (value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n return 'wrap-reverse';\n case 'no':\n case 'none':\n case 'nowrap':\n return 'nowrap';\n default:\n return 'wrap';\n }\n }\n return value;\n}\n\n/** Port of ngx-layout validateValue(): [direction, wrap, inline]. */\nexport function validateLayoutValue(value: string): [string, string, boolean] {\n value = value?.toLowerCase() ?? '';\n let [direction, wrap = '', inline = ''] = value.split(' ');\n if (!LAYOUT_VALUES.find(x => x === direction)) direction = LAYOUT_VALUES[0];\n if (wrap === INLINE) {\n wrap = inline !== INLINE ? inline : '';\n inline = INLINE;\n }\n // Always return a string for wrap: undefined here used to make\n // resolveParentFlow report hasWrap=true on plain \"row\"/\"column\" containers.\n return [direction, validateWrapValue(wrap) || '', !!inline];\n}\n\n/** Port of ngx-layout buildLayoutCSS(): null values mean \"remove the property\". */\nexport function buildLayoutCSS(value: string): Record<string, string | null> {\n const [direction, wrap, inline] = validateLayoutValue(value);\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': wrap || null\n };\n}\n\n/**\n * Resolves the flex flow of the parent container for a flex child.\n * Prefers the reactive FxLayoutDirective instance when it sits on the DIRECT\n * parent element (signal read → re-evaluates with the parent); falls back to\n * getComputedStyle for plain-CSS flex parents; SSR-safe defaults.\n */\nexport function resolveParentFlow(\n host: HTMLElement,\n parentLayout: FxLayoutDirective | null,\n isBrowser: boolean\n): { direction: string; hasWrap: boolean } {\n if (parentLayout && parentLayout.hostElement === host.parentElement) {\n return {\n direction: parentLayout.direction(), // signal: reactive\n hasWrap: parentLayout.wrap() !== '' && parentLayout.wrap() !== 'nowrap'\n };\n }\n if (isBrowser && host.parentElement) {\n const cs = getComputedStyle(host.parentElement);\n return {\n direction: cs.flexDirection || 'row',\n hasWrap: !!cs.flexWrap && cs.flexWrap !== 'nowrap'\n };\n }\n return { direction: 'row', hasWrap: false };\n}\n\n@Directive({\n selector: `\n [fxLayout],\n [fxLayout.xs],\n [fxLayout.sm],\n [fxLayout.md],\n [fxLayout.lg],\n [fxLayout.xl],\n [fxLayout.lt-sm],\n [fxLayout.lt-md],\n [fxLayout.lt-lg],\n [fxLayout.lt-xl],\n [fxLayout.gt-xs],\n [fxLayout.gt-sm],\n [fxLayout.gt-md],\n [fxLayout.gt-lg],\n [fxLayout.sm-up],\n [fxLayout.md-up],\n [fxLayout.lg-up],\n [fxLayout.xl-up],\n [fxLayout.sm-down],\n [fxLayout.md-down],\n [fxLayout.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutDirective extends ResponsiveBaseDirective {\n readonly fxLayout = input<string>('row', { alias: 'fxLayout' });\n readonly xs = input<string>(undefined, { alias: 'fxLayout.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayout.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayout.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayout.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayout.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayout.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayout.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayout.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayout.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayout.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayout.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayout.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayout.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayout.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayout.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayout.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayout.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayout.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayout.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayout.lg-down' });\n\n private readonly _parsed = computed(() =>\n validateLayoutValue(resolveAll(\n { default: this.fxLayout(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'row')\n );\n\n /** Reactive layout parts — readable by FxFlex / FxLayoutAlign / FxFlexOffset. */\n readonly direction = computed(() => this._parsed()[0]);\n readonly wrap = computed(() => this._parsed()[1]);\n readonly inline = computed(() => this._parsed()[2]);\n\n /** Host element, exposed for direct-parent matching by child directives. */\n get hostElement(): HTMLElement { return this.el.nativeElement; }\n\n constructor() {\n super();\n effect(() => {\n const [dir, wrap, inline] = this._parsed();\n // ngx-layout parity: never override display:none set by fxHide\n // (LayoutStyleBuilder: display === 'none' ? display : css.display)\n if (this.el.nativeElement.style.display !== 'none') {\n this.safeSetStyle('display', inline ? 'inline-flex' : 'flex');\n }\n this.safeSetStyle('box-sizing', 'border-box');\n this.safeSetStyle('flex-direction', dir);\n this.safeSetStyle('flex-wrap', wrap || null);\n });\n }\n}\n\n@Directive({\n selector: `\n [fxLayoutWrap],\n [fxLayoutWrap.xs],\n [fxLayoutWrap.sm],\n [fxLayoutWrap.md],\n [fxLayoutWrap.lg],\n [fxLayoutWrap.xl],\n [fxLayoutWrap.lt-sm],\n [fxLayoutWrap.lt-md],\n [fxLayoutWrap.lt-lg],\n [fxLayoutWrap.lt-xl],\n [fxLayoutWrap.gt-xs],\n [fxLayoutWrap.gt-sm],\n [fxLayoutWrap.gt-md],\n [fxLayoutWrap.gt-lg],\n [fxLayoutWrap.sm-up],\n [fxLayoutWrap.md-up],\n [fxLayoutWrap.lg-up],\n [fxLayoutWrap.xl-up],\n [fxLayoutWrap.sm-down],\n [fxLayoutWrap.md-down],\n [fxLayoutWrap.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutWrapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutWrap = input<string>('wrap', { alias: 'fxLayoutWrap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutWrap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutWrap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutWrap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutWrap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutWrap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutWrap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutWrap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutWrap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutWrap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutWrap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutWrap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutWrap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutWrap.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutWrap.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutWrap.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutWrap.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutWrap.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutWrap.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutWrap.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutWrap.lg-down' });\n\n private readonly _wrap = computed(() =>\n validateWrapValue(resolveAll(\n { default: this.fxLayoutWrap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) || 'wrap')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('flex-wrap', this._wrap()); });\n }\n}\n","/**\n * @file fx-flex-extras.directives.ts (Angular 21 — signals)\n *\n * Flex child helper directives:\n * [fxFlexOrder] — CSS order\n * [fxFlexOffset] — margin-inline-start (RTL-safe)\n * [fxFlexAlign] — align-self override\n * [fxFlexFill] — fills the container (width/height 100%)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the resolved CSS values\n * • effect() in constructor writes to DOM — no lifecycle hooks\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, inject, input, isDevMode } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n@Directive({\n selector: `\n [fxFlexOrder],\n [fxFlexOrder.xs],\n [fxFlexOrder.sm],\n [fxFlexOrder.md],\n [fxFlexOrder.lg],\n [fxFlexOrder.xl],\n [fxFlexOrder.lt-sm],\n [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg],\n [fxFlexOrder.lt-xl],\n [fxFlexOrder.gt-xs],\n [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md],\n [fxFlexOrder.gt-lg],\n [fxFlexOrder.sm-up],\n [fxFlexOrder.md-up],\n [fxFlexOrder.lg-up],\n [fxFlexOrder.xl-up],\n [fxFlexOrder.sm-down],\n [fxFlexOrder.md-down],\n [fxFlexOrder.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexOrderDirective extends ResponsiveBaseDirective {\n readonly fxFlexOrder = input<string>(undefined, { alias: 'fxFlexOrder' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOrder.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOrder.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOrder.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOrder.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOrder.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOrder.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOrder.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOrder.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOrder.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOrder.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOrder.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOrder.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOrder.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOrder.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOrder.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOrder.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOrder.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOrder.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOrder.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOrder.lg-down' });\n\n private readonly _order = computed(() =>\n resolveAll(\n { default: this.fxFlexOrder(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._order();\n if (isDevMode() && isNaN(Number(v))) console.warn(`[fxFlexOrder] Non-numeric value: \"${v}\"`);\n this.safeSetStyle('order', v);\n });\n }\n}\n\n// ─── fxFlexOffset ────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxFlexOffset],\n [fxFlexOffset.xs],\n [fxFlexOffset.sm],\n [fxFlexOffset.md],\n [fxFlexOffset.lg],\n [fxFlexOffset.xl],\n [fxFlexOffset.lt-sm],\n [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg],\n [fxFlexOffset.lt-xl],\n [fxFlexOffset.gt-xs],\n [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md],\n [fxFlexOffset.gt-lg],\n [fxFlexOffset.sm-up],\n [fxFlexOffset.md-up],\n [fxFlexOffset.lg-up],\n [fxFlexOffset.xl-up],\n [fxFlexOffset.sm-down],\n [fxFlexOffset.md-down],\n [fxFlexOffset.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexOffsetDirective extends ResponsiveBaseDirective {\n /** Ancestor FxLayout (matched to the direct parent inside resolveParentFlow). */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlexOffset = input<string>(undefined, { alias: 'fxFlexOffset' });\n readonly xs = input<string>(undefined, { alias: 'fxFlexOffset.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlexOffset.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlexOffset.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlexOffset.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlexOffset.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlexOffset.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlexOffset.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlexOffset.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlexOffset.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlexOffset.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlexOffset.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlexOffset.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlexOffset.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxFlexOffset.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlexOffset.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlexOffset.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlexOffset.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxFlexOffset.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlexOffset.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlexOffset.lg-down' });\n\n private readonly _offset = computed(() =>\n resolveAll(\n { default: this.fxFlexOffset(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0'\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._offset();\n // ngx-layout parity: when the parent flex container is a column, offset\n // pushes down (margin-top); otherwise it pushes on the inline axis\n // (margin-inline-start, RTL-safe). Direction comes reactively from the\n // parent FxLayoutDirective when present, else from getComputedStyle.\n const { direction } = resolveParentFlow(this.el.nativeElement, this.parentLayout, this.isBrowser);\n const isColumn = direction.indexOf('column') > -1;\n if (isColumn) {\n this.safeSetStyle('margin-inline-start', null);\n this.safeSetStyle('margin-top', v);\n } else {\n this.safeSetStyle('margin-top', null);\n this.safeSetStyle('margin-inline-start', v);\n }\n });\n }\n}\n\n// ─── fxFlexAlign ─────────────────────────────────────────────────────────────\n\ntype AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nconst ALIGN_SELF_MAP: Record<string, string> = {\n start: 'flex-start', end: 'flex-end', center: 'center',\n stretch: 'stretch', baseline: 'baseline', auto: 'auto'\n};\n\n@Directive({\n selector: `\n [fxFlexAlign],\n [fxFlexAlign.xs],\n [fxFlexAlign.sm],\n [fxFlexAlign.md],\n [fxFlexAlign.lg],\n [fxFlexAlign.xl],\n [fxFlexAlign.lt-sm],\n [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg],\n [fxFlexAlign.lt-xl],\n [fxFlexAlign.gt-xs],\n [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md],\n [fxFlexAlign.gt-lg],\n [fxFlexAlign.sm-up],\n [fxFlexAlign.md-up],\n [fxFlexAlign.lg-up],\n [fxFlexAlign.xl-up],\n [fxFlexAlign.sm-down],\n [fxFlexAlign.md-down],\n [fxFlexAlign.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexAlignDirective extends ResponsiveBaseDirective {\n readonly fxFlexAlign = input<AlignSelf>(undefined, { alias: 'fxFlexAlign' });\n readonly xs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xs' });\n readonly sm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm' });\n readonly md = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md' });\n readonly lg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg' });\n readonly xl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl' });\n readonly ltSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-sm' });\n readonly ltMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-md' });\n readonly ltLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-lg' });\n readonly ltXl = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lt-xl' });\n readonly gtXs = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-xs' });\n readonly gtSm = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-sm' });\n readonly gtMd = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-md' });\n readonly gtLg = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.gt-lg' });\n readonly smUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-up' });\n readonly mdUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-up' });\n readonly lgUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-up' });\n readonly xlUp = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.xl-up' });\n readonly smDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.sm-down' });\n readonly mdDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.md-down' });\n readonly lgDown = input<AlignSelf>(undefined, { alias: 'fxFlexAlign.lg-down' });\n\n private readonly _alignSelf = computed(() => {\n const v = resolveAll(\n { default: this.fxFlexAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'stretch';\n if (isDevMode() && !ALIGN_SELF_MAP[v]) console.warn(`[fxFlexAlign] Unknown value: \"${v}\". Valid: ${Object.keys(ALIGN_SELF_MAP).join(', ')}`);\n return ALIGN_SELF_MAP[v] ?? v;\n });\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('align-self', this._alignSelf()); });\n }\n}\n\n// ─── fxFlexFill ──────────────────────────────────────────────────────────────\n// fxFlexFill is intentionally non-responsive in its most common usage,\n// but supports breakpoint suffixes for edge cases where fill must be toggled.\n\ntype FillValue = 'fill' | 'none' | '' | boolean;\nfunction toBool(v: FillValue | undefined): boolean | undefined {\n if (v === undefined) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n return v !== 'none';\n}\n\n@Directive({\n selector: `\n [fxFlexFill],\n [fxFill],\n [fxFlexFill.xs],\n [fxFlexFill.sm],\n [fxFlexFill.md],\n [fxFlexFill.lg],\n [fxFlexFill.xl],\n [fxFlexFill.lt-sm],\n [fxFlexFill.lt-md],\n [fxFlexFill.lt-lg],\n [fxFlexFill.lt-xl],\n [fxFlexFill.gt-xs],\n [fxFlexFill.gt-sm],\n [fxFlexFill.gt-md],\n [fxFlexFill.gt-lg],\n [fxFlexFill.sm-up],\n [fxFlexFill.md-up],\n [fxFlexFill.lg-up],\n [fxFlexFill.xl-up],\n [fxFlexFill.sm-down],\n [fxFlexFill.md-down],\n [fxFlexFill.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexFillDirective extends ResponsiveBaseDirective {\n readonly fxFlexFill = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill', transform: toBool });\n readonly fxFill = input<boolean, FillValue>(undefined, { alias: 'fxFill', transform: toBool });\n readonly xs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xs', transform: toBool });\n readonly sm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm', transform: toBool });\n readonly md = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md', transform: toBool });\n readonly lg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg', transform: toBool });\n readonly xl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl', transform: toBool });\n readonly ltSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-sm', transform: toBool });\n readonly ltMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-md', transform: toBool });\n readonly ltLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-lg', transform: toBool });\n readonly ltXl = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lt-xl', transform: toBool });\n readonly gtXs = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-xs', transform: toBool });\n readonly gtSm = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-sm', transform: toBool });\n readonly gtMd = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-md', transform: toBool });\n readonly gtLg = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.gt-lg', transform: toBool });\n readonly smUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-up', transform: toBool });\n readonly mdUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-up', transform: toBool });\n readonly lgUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-up', transform: toBool });\n readonly xlUp = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.xl-up', transform: toBool });\n readonly smDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.sm-down', transform: toBool });\n readonly mdDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.md-down', transform: toBool });\n readonly lgDown = input<boolean, FillValue>(undefined, { alias: 'fxFlexFill.lg-down', transform: toBool });\n\n private readonly _active = computed(() =>\n (resolveAll(\n // fxFill is a shorthand alias for the default; fxFlexFill wins if both set\n { default: this.fxFlexFill() ?? this.fxFill(),\n xs: this.xs() as boolean | undefined, sm: this.sm() as boolean | undefined,\n md: this.md() as boolean | undefined, lg: this.lg() as boolean | undefined,\n xl: this.xl() as boolean | undefined },\n { 'lt-sm': this.ltSm() as boolean | undefined, 'lt-md': this.ltMd() as boolean | undefined,\n 'lt-lg': this.ltLg() as boolean | undefined, 'lt-xl': this.ltXl() as boolean | undefined,\n 'gt-xs': this.gtXs() as boolean | undefined, 'gt-sm': this.gtSm() as boolean | undefined,\n 'gt-md': this.gtMd() as boolean | undefined, 'gt-lg': this.gtLg() as boolean | undefined,\n 'sm-up': this.smUp() as boolean | undefined, 'md-up': this.mdUp() as boolean | undefined,\n 'lg-up': this.lgUp() as boolean | undefined, 'xl-up': this.xlUp() as boolean | undefined,\n 'sm-down': this.smDown() as boolean | undefined, 'md-down': this.mdDown() as boolean | undefined,\n 'lg-down': this.lgDown() as boolean | undefined },\n this.media.currentBp(), a => this.media.isActive(a)\n ) as boolean | undefined) ?? true\n );\n\n constructor() {\n super();\n effect(() => {\n const active = this._active();\n const v = active ? '100%' : null;\n this.safeSetStyle('margin', active ? '0' : null);\n // align-self: stretch ensures this element fills the parent's cross axis even\n // when the parent flex container has align-items: center (e.g. mat-toolbar).\n // Without this, height: 100% collapses to content height and align-items on\n // this container has no visible centering space.\n this.safeSetStyle('align-self', active ? 'stretch' : null);\n this.safeSetStyle('width', v);\n this.safeSetStyle('height', v);\n this.safeSetStyle('min-width', v);\n this.safeSetStyle('min-height', v);\n });\n }\n}\n","/**\n * @file fx-flex.directive.ts (Angular 22 — signals)\n *\n * [fxFlex] — flex shorthand on a flex child element.\n *\n * The CSS builder is a faithful port of @ngbracket/ngx-layout\n * FlexStyleBuilder.buildStyles + validateBasis, including:\n * • direction-aware min/max (max-width vs max-height by parent flow)\n * • percentage basis → flex: G S 100% + max-* capped to the percentage\n * • fixed units → flex: G S <px> + min/max-* locks\n * • empty basis → '0%' in row, '0.000000001px' in column (useColumnBasisZero)\n * • calc() support (flex-grow/shrink/basis split, operator padding)\n * • wrap-container basis rewrite (ngx issue 660)\n *\n * Extensions beyond ngx-layout (documented, opt-in by syntax):\n * • fxFlex=\"*\" → fills the remaining space like a bare fxFlex (1 1 0%)\n * • fxFlex=\"\" + a SIBLING with fxFlex=\"*\" → this element gets 0 0 auto\n * (static-attribute detection only; property bindings are not seen)\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective, resolveParentFlow } from './fx-layout.directive';\n\n// ─── Ports of ngx-layout basis-validator.ts ──────────────────────────────────\n\n/** Pads calc() operators with whitespace (ngx _validateCalcValue). */\nfunction validateCalcValue(calc: string): string {\n return calc.replace(/[\\s]/g, '').replace(/[\\/\\*\\+\\-]/g, ' $& ');\n}\n\n/** Port of ngx validateBasis(): returns [grow, shrink, basis]. */\nexport function validateBasis(basis: string, grow = '1', shrink = '1'): string[] {\n let parts = [grow, shrink, basis];\n const j = basis.indexOf('calc');\n if (j > 0) {\n parts[2] = validateCalcValue(basis.substring(j).trim());\n const matches = basis.substring(0, j).trim().split(' ');\n if (matches.length === 2) {\n parts[0] = matches[0];\n parts[1] = matches[1];\n }\n } else if (j === 0) {\n parts[2] = validateCalcValue(basis.trim());\n } else {\n const matches = basis.split(' ');\n parts = matches.length === 3 ? matches : [grow, shrink, basis];\n }\n return parts;\n}\n\n// ─── Port of ngx-layout FlexStyleBuilder.buildStyles ─────────────────────────\n\nconst CLEAR_STYLES: Record<string, string | null> = {\n 'max-width': null, 'max-height': null, 'min-width': null, 'min-height': null\n};\n\n/**\n * Builds the complete flex style map for a child, given the raw fxFlex value\n * and the parent flow. `null` values mean \"remove this property\".\n * Matches ngx-layout output exactly (useColumnBasisZero = true, the default).\n */\nexport function buildFlexStyles(\n value: string,\n direction: string,\n hasWrap: boolean\n): Record<string, string | null> {\n const isHorizontal = direction.indexOf('row') > -1 || direction.indexOf('column') === -1;\n const parts = validateBasis(String(value).replace(';', ''));\n let grow: string | number = parts[0];\n let shrink: string | number = parts[1];\n let basis = parts[2];\n\n const max = isHorizontal ? 'max-width' : 'max-height';\n const min = isHorizontal ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || basis === 'auto';\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits =\n String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n let isValue = hasCalc || hasUnits;\n\n // eslint-disable-next-line eqeqeq\n grow = grow == '0' ? 0 : grow;\n // eslint-disable-next-line eqeqeq\n shrink = shrink == '0' ? 0 : shrink;\n const isFixed = !grow && !shrink;\n\n let css: Record<string, string | number | null> = {};\n\n switch (basis || '') {\n case '':\n // useColumnBasisZero default = true (ngx LAYOUT_CONFIG default)\n basis = isHorizontal ? '0%' : '0.000000001px';\n break;\n case 'initial':\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n if (!isValue && !isPercent && !isNaN(basis as unknown as number)) {\n basis = basis + '%';\n }\n if (basis === '0%') isValue = true; // ngx fix #280\n if (basis === '0px') basis = '0%';\n if (hasCalc) { // ngx fix #5345\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%' };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${isValue ? basis : '100%'}` };\n }\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n }\n\n // ngx fixes #277 / #534 / #728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n if (!css[min] && !css[max]) {\n // ngx fix #528\n if (hasCalc) {\n css = { ...CLEAR_STYLES, 'flex-grow': grow, 'flex-shrink': shrink, 'flex-basis': basis };\n } else {\n css = { ...CLEAR_STYLES, flex: `${grow} ${shrink} ${basis}` };\n }\n } else if (hasWrap) {\n // ngx fix #660\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max]\n ? (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`)\n : (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n\n // Normalize numbers to strings for the renderer\n const out: Record<string, string | null> = {};\n for (const [k, v] of Object.entries(css)) out[k] = v === null ? null : String(v);\n return out;\n}\n\n/** Extension: true when a sibling element declares fxFlex=\"*\" (static attribute). */\nfunction parentHasStar(el: HTMLElement): boolean {\n const parent = el.parentElement;\n if (!parent) return false;\n return Array.from(parent.children).some(\n c => c !== el && (c.getAttribute('fxflex') === '*' || c.getAttribute('fxFlex') === '*')\n );\n}\n\n@Directive({\n selector: `\n [fxFlex],\n [fxFlex.xs],\n [fxFlex.sm],\n [fxFlex.md],\n [fxFlex.lg],\n [fxFlex.xl],\n [fxFlex.lt-sm],\n [fxFlex.lt-md],\n [fxFlex.lt-lg],\n [fxFlex.lt-xl],\n [fxFlex.gt-xs],\n [fxFlex.gt-sm],\n [fxFlex.gt-md],\n [fxFlex.gt-lg],\n [fxFlex.sm-up],\n [fxFlex.md-up],\n [fxFlex.lg-up],\n [fxFlex.xl-up],\n [fxFlex.sm-down],\n [fxFlex.md-down],\n [fxFlex.lg-down]\n `,\n standalone: true\n})\nexport class FxFlexDirective extends ResponsiveBaseDirective {\n /** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */\n private readonly parentLayout = inject(FxLayoutDirective, { skipSelf: true, optional: true });\n\n readonly fxFlex = input<string>(undefined, { alias: 'fxFlex' });\n readonly xs = input<string>(undefined, { alias: 'fxFlex.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxFlex.sm' });\n readonly md = input<string>(undefined, { alias: 'fxFlex.md' });\n readonly lg = input<string>(undefined, { alias: 'fxFlex.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxFlex.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxFlex.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxFlex.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxFlex.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxFlex.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxFlex.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxFlex.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxFlex.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxFlex.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxFlex.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxFlex.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxFlex.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxFlex.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxFlex.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxFlex.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxFlex.lg-down' });\n\n private readonly _rawFlex = computed(() =>\n resolveAll(\n { default: this.fxFlex(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n /** CSS properties applied on the last effect run (for stale cleanup). */\n private _applied = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n let raw = this._rawFlex();\n const el = this.el.nativeElement;\n\n // No rule matches the current breakpoint → remove everything we applied\n if (raw === undefined) {\n for (const prop of this._applied) this.r2.removeStyle(el, prop);\n this._applied.clear();\n return;\n }\n\n // Extensions (documented in the header)\n // fxFlex=\"*\" fills the remaining space exactly like a bare fxFlex (=> flex: 1 1 0%),\n // matching @ngbracket/ngx-layout's \"fill\" semantics instead of content-based auto.\n if (raw === '*') raw = '';\n else if (raw === '' && this.isBrowser && parentHasStar(el)) raw = 'none'; // 0 0 auto\n\n // Parent flow: reactive via FxLayoutDirective signals when it is the\n // direct parent; getComputedStyle fallback for plain-CSS flex parents.\n const { direction, hasWrap } = resolveParentFlow(el, this.parentLayout, this.isBrowser);\n\n const styles = buildFlexStyles(raw, direction, hasWrap);\n const nextKeys = new Set<string>();\n for (const [prop, value] of Object.entries(styles)) {\n if (value === null) {\n this.r2.removeStyle(el, prop);\n } else {\n this.r2.setStyle(el, prop, value);\n nextKeys.add(prop);\n }\n }\n for (const prop of this._applied) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(el, prop);\n }\n this._applied = nextKeys;\n });\n }\n}","/**\n * @file fx-grid.directives.ts (Angular 21 — signals)\n *\n * CSS Grid responsive directives.\n *\n * [fxGrid] — display:grid + responsive grid-template-columns.\n * Accepts [fxGridRows] and [fxGridGap] inputs on same host.\n * [fxGridColumn] — grid-column on a child\n * [fxGridArea] — grid-area on a child\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • FxGridDirective uses 3 pairs of computed() for cols/rows/gap maps\n * • Single effect() in constructor writes all 3 CSS props\n * • Null/undefined props are removed (no style leak)\n *\n * Unitless numeric gap values are normalized to px (\"16\" → \"16px\").\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string | undefined): string | undefined {\n if (!raw) return undefined;\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n// ─── fxGrid (container) ──────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGrid],\n [fxGrid.xs],\n [fxGrid.sm],\n [fxGrid.md],\n [fxGrid.lg],\n [fxGrid.xl],\n [fxGrid.lt-sm],\n [fxGrid.lt-md],\n [fxGrid.lt-lg],\n [fxGrid.lt-xl],\n [fxGrid.gt-xs],\n [fxGrid.gt-sm],\n [fxGrid.gt-md],\n [fxGrid.gt-lg],\n [fxGrid.sm-up],\n [fxGrid.md-up],\n [fxGrid.lg-up],\n [fxGrid.xl-up],\n [fxGrid.sm-down],\n [fxGrid.md-down],\n [fxGrid.lg-down]\n `,\n standalone: true,\n host: { '[style.display]': '\"grid\"' }\n})\nexport class FxGridDirective extends ResponsiveBaseDirective {\n // ── grid-template-columns ──────────────────────────────────────────────────\n readonly fxGrid = input<string>(undefined, { alias: 'fxGrid' });\n readonly xs = input<string>(undefined, { alias: 'fxGrid.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGrid.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGrid.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGrid.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGrid.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGrid.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGrid.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGrid.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGrid.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGrid.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGrid.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGrid.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGrid.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxGrid.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxGrid.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxGrid.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxGrid.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxGrid.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxGrid.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxGrid.lg-down' });\n\n // ── grid-template-rows ────────────────────────────────────────────────────\n readonly fxGridRows = input<string>(undefined, { alias: 'fxGridRows' });\n readonly rowsXs = input<string>(undefined, { alias: 'fxGridRows.xs' });\n readonly rowsSm = input<string>(undefined, { alias: 'fxGridRows.sm' });\n readonly rowsMd = input<string>(undefined, { alias: 'fxGridRows.md' });\n readonly rowsLg = input<string>(undefined, { alias: 'fxGridRows.lg' });\n readonly rowsXl = input<string>(undefined, { alias: 'fxGridRows.xl' });\n readonly rowsLtSm = input<string>(undefined, { alias: 'fxGridRows.lt-sm' });\n readonly rowsLtMd = input<string>(undefined, { alias: 'fxGridRows.lt-md' });\n readonly rowsLtLg = input<string>(undefined, { alias: 'fxGridRows.lt-lg' });\n readonly rowsLtXl = input<string>(undefined, { alias: 'fxGridRows.lt-xl' });\n readonly rowsGtXs = input<string>(undefined, { alias: 'fxGridRows.gt-xs' });\n readonly rowsGtSm = input<string>(undefined, { alias: 'fxGridRows.gt-sm' });\n readonly rowsGtMd = input<string>(undefined, { alias: 'fxGridRows.gt-md' });\n readonly rowsGtLg = input<string>(undefined, { alias: 'fxGridRows.gt-lg' });\n readonly rowsSmUp = input<string>(undefined, { alias: 'fxGridRows.sm-up' });\n readonly rowsMdUp = input<string>(undefined, { alias: 'fxGridRows.md-up' });\n readonly rowsLgUp = input<string>(undefined, { alias: 'fxGridRows.lg-up' });\n readonly rowsXlUp = input<string>(undefined, { alias: 'fxGridRows.xl-up' });\n readonly rowsSmDown = input<string>(undefined, { alias: 'fxGridRows.sm-down' });\n readonly rowsMdDown = input<string>(undefined, { alias: 'fxGridRows.md-down' });\n readonly rowsLgDown = input<string>(undefined, { alias: 'fxGridRows.lg-down' });\n\n // ── gap ───────────────────────────────────────────────────────────────────\n readonly fxGridGap = input<string>(undefined, { alias: 'fxGridGap' });\n readonly gapXs = input<string>(undefined, { alias: 'fxGridGap.xs' });\n readonly gapSm = input<string>(undefined, { alias: 'fxGridGap.sm' });\n readonly gapMd = input<string>(undefined, { alias: 'fxGridGap.md' });\n readonly gapLg = input<string>(undefined, { alias: 'fxGridGap.lg' });\n readonly gapXl = input<string>(undefined, { alias: 'fxGridGap.xl' });\n readonly gapLtSm = input<string>(undefined, { alias: 'fxGridGap.lt-sm' });\n readonly gapLtMd = input<string>(undefined, { alias: 'fxGridGap.lt-md' });\n readonly gapLtLg = input<string>(undefined, { alias: 'fxGridGap.lt-lg' });\n readonly gapLtXl = input<string>(undefined, { alias: 'fxGridGap.lt-xl' });\n readonly gapGtXs = input<string>(undefined, { alias: 'fxGridGap.gt-xs' });\n readonly gapGtSm = input<string>(undefined, { alias: 'fxGridGap.gt-sm' });\n readonly gapGtMd = input<string>(undefined, { alias: 'fxGridGap.gt-md' });\n readonly gapGtLg = input<string>(undefined, { alias: 'fxGridGap.gt-lg' });\n readonly gapSmUp = input<string>(undefined, { alias: 'fxGridGap.sm-up' });\n readonly gapMdUp = input<string>(undefined, { alias: 'fxGridGap.md-up' });\n readonly gapLgUp = input<string>(undefined, { alias: 'fxGridGap.lg-up' });\n readonly gapXlUp = input<string>(undefined, { alias: 'fxGridGap.xl-up' });\n readonly gapSmDown = input<string>(undefined, { alias: 'fxGridGap.sm-down' });\n readonly gapMdDown = input<string>(undefined, { alias: 'fxGridGap.md-down' });\n readonly gapLgDown = input<string>(undefined, { alias: 'fxGridGap.lg-down' });\n\n // ── resolved values (flat computed — no intermediate object computed) ──────\n private readonly _cols = computed(() =>\n resolveAll<string>(\n { default: this.fxGrid(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _rows = computed(() =>\n resolveAll<string>(\n { default: this.fxGridRows(), xs: this.rowsXs(), sm: this.rowsSm(),\n md: this.rowsMd(), lg: this.rowsLg(), xl: this.rowsXl() },\n { 'lt-sm': this.rowsLtSm(), 'lt-md': this.rowsLtMd(), 'lt-lg': this.rowsLtLg(),\n 'lt-xl': this.rowsLtXl(), 'gt-xs': this.rowsGtXs(), 'gt-sm': this.rowsGtSm(), 'gt-md': this.rowsGtMd(),\n 'gt-lg': this.rowsGtLg(), 'sm-up': this.rowsSmUp(), 'md-up': this.rowsMdUp(), 'lg-up': this.rowsLgUp(),\n 'xl-up': this.rowsXlUp(), 'sm-down': this.rowsSmDown(), 'md-down': this.rowsMdDown(),\n 'lg-down': this.rowsLgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll<string>(\n { default: this.fxGridGap(), xs: this.gapXs(), sm: this.gapSm(),\n md: this.gapMd(), lg: this.gapLg(), xl: this.gapXl() },\n { 'lt-sm': this.gapLtSm(), 'lt-md': this.gapLtMd(), 'lt-lg': this.gapLtLg(),\n 'lt-xl': this.gapLtXl(), 'gt-xs': this.gapGtXs(), 'gt-sm': this.gapGtSm(), 'gt-md': this.gapGtMd(),\n 'gt-lg': this.gapGtLg(), 'sm-up': this.gapSmUp(), 'md-up': this.gapMdUp(), 'lg-up': this.gapLgUp(),\n 'xl-up': this.gapXlUp(), 'sm-down': this.gapSmDown(), 'md-down': this.gapMdDown(),\n 'lg-down': this.gapLgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n constructor() {\n super();\n effect(() => {\n const cols = this._cols();\n const rows = this._rows();\n const gap = this._gap();\n cols ? this.safeSetStyle('grid-template-columns', cols)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-columns');\n rows ? this.safeSetStyle('grid-template-rows', rows)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-template-rows');\n gap ? this.safeSetStyle('gap', gap)\n : this.r2.removeStyle(this.el.nativeElement, 'gap');\n });\n }\n}\n\n// ─── fxGridColumn ─────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridColumn],\n [fxGridColumn.xs],\n [fxGridColumn.sm],\n [fxGridColumn.md],\n [fxGridColumn.lg],\n [fxGridColumn.xl],\n [fxGridColumn.lt-sm],\n [fxGridColumn.lt-md],\n [fxGridColumn.lt-lg],\n [fxGridColumn.lt-xl],\n [fxGridColumn.gt-xs],\n [fxGridColumn.gt-sm],\n [fxGridColumn.gt-md],\n [fxGridColumn.gt-lg],\n [fxGridColumn.sm-up],\n [fxGridColumn.md-up],\n [fxGridColumn.lg-up],\n [fxGridColumn.xl-up],\n [fxGridColumn.sm-down],\n [fxGridColumn.md-down],\n [fxGridColumn.lg-down]\n `,\n standalone: true\n})\nexport class FxGridColumnDirective extends ResponsiveBaseDirective {\n readonly fxGridColumn = input<string>(undefined, { alias: 'fxGridColumn' });\n readonly xs = input<string>(undefined, { alias: 'fxGridColumn.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridColumn.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridColumn.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridColumn.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridColumn.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridColumn.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridColumn.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridColumn.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridColumn.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridColumn.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridColumn.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridColumn.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridColumn.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxGridColumn.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxGridColumn.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxGridColumn.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxGridColumn.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxGridColumn.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxGridColumn.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxGridColumn.lg-down' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridColumn(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-column', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-column');\n });\n }\n}\n\n// ─── fxGridArea ───────────────────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxGridArea],\n [fxGridArea.xs],\n [fxGridArea.sm],\n [fxGridArea.md],\n [fxGridArea.lg],\n [fxGridArea.xl],\n [fxGridArea.lt-sm],\n [fxGridArea.lt-md],\n [fxGridArea.lt-lg],\n [fxGridArea.lt-xl],\n [fxGridArea.gt-xs],\n [fxGridArea.gt-sm],\n [fxGridArea.gt-md],\n [fxGridArea.gt-lg],\n [fxGridArea.sm-up],\n [fxGridArea.md-up],\n [fxGridArea.lg-up],\n [fxGridArea.xl-up],\n [fxGridArea.sm-down],\n [fxGridArea.md-down],\n [fxGridArea.lg-down]\n `,\n standalone: true\n})\nexport class FxGridAreaDirective extends ResponsiveBaseDirective {\n readonly fxGridArea = input<string>(undefined, { alias: 'fxGridArea' });\n readonly xs = input<string>(undefined, { alias: 'fxGridArea.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxGridArea.sm' });\n readonly md = input<string>(undefined, { alias: 'fxGridArea.md' });\n readonly lg = input<string>(undefined, { alias: 'fxGridArea.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxGridArea.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxGridArea.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxGridArea.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxGridArea.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxGridArea.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxGridArea.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxGridArea.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxGridArea.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxGridArea.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxGridArea.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxGridArea.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxGridArea.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxGridArea.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxGridArea.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxGridArea.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxGridArea.lg-down' });\n\n private readonly _resolved = computed(() =>\n resolveAll<string>(\n { default: this.fxGridArea(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n )\n );\n\n constructor() {\n super();\n effect(() => {\n const v = this._resolved();\n v ? this.safeSetStyle('grid-area', v)\n : this.r2.removeStyle(this.el.nativeElement, 'grid-area');\n });\n }\n}\n","/**\n * @file fx-layout-align.directive.ts (Angular 22 — signals)\n *\n * [fxLayoutAlign] — sets justify-content + align-items + align-content\n * on a flex container. Faithful port of @ngbracket LayoutAlignStyleBuilder:\n *\n * • mainAxis : start|flex-start | center | end|flex-end |\n * space-between | space-around | space-evenly (default: flex-start)\n * • crossAxis: start|flex-start | center | end|flex-end | baseline |\n * space-between | space-around | stretch (default: stretch)\n * • align-content is set alongside align-items (multi-line wrap alignment)\n * • crossAxis 'stretch' → max-width:100% (column flow) / max-height:100% (row flow)\n * • display flex/inline-flex + box-sizing, preserving display:none (fxHide)\n *\n * Direction/inline are read reactively from the FxLayoutDirective on the SAME\n * host when present (signals), defaulting to row / non-inline otherwise.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, inject, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\nimport { FxLayoutDirective } from './fx-layout.directive';\n\n/**\n * Port of ngx LayoutAlignStyleBuilder.buildStyles.\n * `null` values mean \"remove the property\".\n */\nexport function buildAlignStyles(\n align: string,\n layoutDirection: string,\n inline: boolean\n): Record<string, string | null> {\n const css: Record<string, string | null> = {};\n const [mainAxis, crossAxis] = align.split(' ');\n\n switch (mainAxis) {\n case 'center': css['justify-content'] = 'center'; break;\n case 'space-around': css['justify-content'] = 'space-around'; break;\n case 'space-between': css['justify-content'] = 'space-between'; break;\n case 'space-evenly': css['justify-content'] = 'space-evenly'; break;\n case 'end':\n case 'flex-end': css['justify-content'] = 'flex-end'; break;\n case 'start':\n case 'flex-start':\n default: css['justify-content'] = 'flex-start'; break;\n }\n\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start'; break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center'; break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end'; break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch'; break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch'; break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline'; break;\n case 'stretch':\n default:\n css['align-items'] = css['align-content'] = 'stretch'; break;\n }\n\n const isHorizontal = layoutDirection.indexOf('row') > -1 || layoutDirection.indexOf('column') === -1;\n return {\n ...css,\n 'display': inline ? 'inline-flex' : 'flex',\n 'flex-direction': layoutDirection,\n 'box-sizing': 'border-box',\n 'max-width': crossAxis === 'stretch' ? (!isHorizontal ? '100%' : null) : null,\n 'max-height': crossAxis === 'stretch' ? (isHorizontal ? '100%' : null) : null\n };\n}\n\n@Directive({\n selector: `\n [fxLayoutAlign],\n [fxLayoutAlign.xs],\n [fxLayoutAlign.sm],\n [fxLayoutAlign.md],\n [fxLayoutAlign.lg],\n [fxLayoutAlign.xl],\n [fxLayoutAlign.lt-sm],\n [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg],\n [fxLayoutAlign.lt-xl],\n [fxLayoutAlign.gt-xs],\n [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md],\n [fxLayoutAlign.gt-lg],\n [fxLayoutAlign.sm-up],\n [fxLayoutAlign.md-up],\n [fxLayoutAlign.lg-up],\n [fxLayoutAlign.xl-up],\n [fxLayoutAlign.sm-down],\n [fxLayoutAlign.md-down],\n [fxLayoutAlign.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutAlignDirective extends ResponsiveBaseDirective {\n /** FxLayout on the same host (optional): direction/inline read reactively. */\n private readonly selfLayout = inject(FxLayoutDirective, { self: true, optional: true });\n\n readonly fxLayoutAlign = input<string>(undefined, { alias: 'fxLayoutAlign' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutAlign.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutAlign.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutAlign.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutAlign.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutAlign.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutAlign.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutAlign.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutAlign.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutAlign.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutAlign.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutAlign.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutAlign.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutAlign.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutAlign.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutAlign.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutAlign.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutAlign.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutAlign.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutAlign.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutAlign.lg-down' });\n\n private readonly _align = computed(() =>\n resolveAll(\n { default: this.fxLayoutAlign(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? 'start stretch'\n );\n\n constructor() {\n super();\n effect(() => {\n const direction = this.selfLayout?.direction() ?? 'row';\n const inline = this.selfLayout?.inline() ?? false;\n const styles = buildAlignStyles(this._align(), direction, inline);\n const el = this.el.nativeElement;\n for (const [prop, value] of Object.entries(styles)) {\n // ngx parity: never override display:none set by fxHide\n if (prop === 'display' && el.style.display === 'none') continue;\n this.safeSetStyle(prop, value);\n }\n });\n }\n}\n","/**\n * @file fx-layout-gap.directive.ts (Angular 21 — signals)\n *\n * [fxLayoutGap] — sets gap on a flex or grid container.\n * Unitless numbers are normalized to px (e.g. \"16\" → \"16px\").\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives the normalized gap value\n * • effect() in constructor writes to DOM\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\nfunction normalizeGap(raw: string): string {\n return raw.trim().split(/\\s+/)\n .map(v => /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v)\n .join(' ');\n}\n\n@Directive({\n selector: `\n [fxLayoutGap],\n [fxLayoutGap.xs],\n [fxLayoutGap.sm],\n [fxLayoutGap.md],\n [fxLayoutGap.lg],\n [fxLayoutGap.xl],\n [fxLayoutGap.lt-sm],\n [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg],\n [fxLayoutGap.lt-xl],\n [fxLayoutGap.gt-xs],\n [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md],\n [fxLayoutGap.gt-lg],\n [fxLayoutGap.sm-up],\n [fxLayoutGap.md-up],\n [fxLayoutGap.lg-up],\n [fxLayoutGap.xl-up],\n [fxLayoutGap.sm-down],\n [fxLayoutGap.md-down],\n [fxLayoutGap.lg-down]\n `,\n standalone: true\n})\nexport class FxLayoutGapDirective extends ResponsiveBaseDirective {\n readonly fxLayoutGap = input<string>(undefined, { alias: 'fxLayoutGap' });\n readonly xs = input<string>(undefined, { alias: 'fxLayoutGap.xs' });\n readonly sm = input<string>(undefined, { alias: 'fxLayoutGap.sm' });\n readonly md = input<string>(undefined, { alias: 'fxLayoutGap.md' });\n readonly lg = input<string>(undefined, { alias: 'fxLayoutGap.lg' });\n readonly xl = input<string>(undefined, { alias: 'fxLayoutGap.xl' });\n readonly ltSm = input<string>(undefined, { alias: 'fxLayoutGap.lt-sm' });\n readonly ltMd = input<string>(undefined, { alias: 'fxLayoutGap.lt-md' });\n readonly ltLg = input<string>(undefined, { alias: 'fxLayoutGap.lt-lg' });\n readonly ltXl = input<string>(undefined, { alias: 'fxLayoutGap.lt-xl' });\n readonly gtXs = input<string>(undefined, { alias: 'fxLayoutGap.gt-xs' });\n readonly gtSm = input<string>(undefined, { alias: 'fxLayoutGap.gt-sm' });\n readonly gtMd = input<string>(undefined, { alias: 'fxLayoutGap.gt-md' });\n readonly gtLg = input<string>(undefined, { alias: 'fxLayoutGap.gt-lg' });\n readonly smUp = input<string>(undefined, { alias: 'fxLayoutGap.sm-up' });\n readonly mdUp = input<string>(undefined, { alias: 'fxLayoutGap.md-up' });\n readonly lgUp = input<string>(undefined, { alias: 'fxLayoutGap.lg-up' });\n readonly xlUp = input<string>(undefined, { alias: 'fxLayoutGap.xl-up' });\n readonly smDown = input<string>(undefined, { alias: 'fxLayoutGap.sm-down' });\n readonly mdDown = input<string>(undefined, { alias: 'fxLayoutGap.md-down' });\n readonly lgDown = input<string>(undefined, { alias: 'fxLayoutGap.lg-down' });\n\n private readonly _gap = computed(() =>\n normalizeGap(resolveAll(\n { default: this.fxLayoutGap(), xs: this.xs(), sm: this.sm(), md: this.md(),\n lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? '0')\n );\n\n constructor() {\n super();\n effect(() => { this.safeSetStyle('gap', this._gap()); });\n }\n}\n","/**\n * @file fx-show-hide.directives.ts (Angular 21 — signals)\n *\n * [fxShow] / [fxHide] — responsive visibility via display:none.\n * Elements stay in the DOM (unlike *ifBp which removes them).\n *\n * IMPORTANT: fxShow and fxHide are implemented as a SINGLE directive class\n * (FxShowHideDirective) so that mixed patterns like\n * <div fxHide fxShow.xs> ← hidden everywhere, shown on xs\n * <div fxShow fxHide.lt-lg> ← shown everywhere, hidden below lg\n * work correctly.\n *\n * Resolution algorithm (no mobile-first cascade — semantics for show/hide\n * are point-in-time, not cumulative):\n * 1. Non-canonical (lt-*, gt-*, *-up, *-down) isActive checks — most specific first\n * 2. Exact canonical match for current bp\n * 3. Default values (fxShow / fxHide without suffix)\n * 4. Fallback: visible (true)\n *\n * When both show and hide match at the same priority level, show wins.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, effect, input, computed } from '@angular/core';\nimport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n/**\n * Pure visibility transition (exported for tests).\n * Captures the inline display before hiding and restores it when shown again,\n * so display:flex|grid written by FxLayout/FxGrid effects is never lost.\n * @returns the new \"previous display\" state to carry to the next transition\n */\nexport function applyVisibility(\n el: { style: { display: string } },\n setStyle: (prop: string, value: string) => void,\n removeStyle: (prop: string) => void,\n visible: boolean,\n prevDisplay: string | null\n): string | null {\n if (!visible) {\n const current = el.style.display;\n if (current !== 'none') prevDisplay = current || null;\n setStyle('display', 'none');\n return prevDisplay;\n }\n // Visible: touch the DOM only if we are the ones who hid it\n if (el.style.display === 'none') {\n if (prevDisplay) setStyle('display', prevDisplay);\n else removeStyle('display');\n }\n return prevDisplay;\n}\n\nfunction toBool(v: string | boolean | '' | undefined | null): boolean | undefined {\n if (v === undefined || v === null) return undefined;\n if (typeof v === 'boolean') return v;\n if (v === '') return true;\n if (v === 'false' || v === '0') return false;\n return true;\n}\n\n// ─── Unified fxShow + fxHide ─────────────────────────────────────────────────\n\n@Directive({\n selector: `\n [fxShow],\n [fxHide],\n [fxShow.xs],\n [fxShow.sm],\n [fxShow.md],\n [fxShow.lg],\n [fxShow.xl],\n [fxShow.lt-sm],\n [fxShow.lt-md],\n [fxShow.lt-lg],\n [fxShow.lt-xl],\n [fxShow.gt-xs],\n [fxShow.gt-sm],\n [fxShow.gt-md],\n [fxShow.gt-lg],\n [fxShow.sm-up],\n [fxShow.md-up],\n [fxShow.lg-up],\n [fxShow.xl-up],\n [fxShow.sm-down],\n [fxShow.md-down],\n [fxShow.lg-down],\n [fxHide.xs],\n [fxHide.sm],\n [fxHide.md],\n [fxHide.lg],\n [fxHide.xl],\n [fxHide.lt-sm],\n [fxHide.lt-md],\n [fxHide.lt-lg],\n [fxHide.lt-xl],\n [fxHide.gt-xs],\n [fxHide.gt-sm],\n [fxHide.gt-md],\n [fxHide.gt-lg],\n [fxHide.sm-up],\n [fxHide.md-up],\n [fxHide.lg-up],\n [fxHide.xl-up],\n [fxHide.sm-down],\n [fxHide.md-down],\n [fxHide.lg-down]\n `,\n standalone: true\n})\nexport class FxShowHideDirective extends ResponsiveBaseDirective {\n // ── fxShow inputs ─────────────────────────────────────────────────────────\n readonly fxShow = input<boolean, string | boolean>(undefined, { alias: 'fxShow', transform: toBool });\n readonly showXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xs', transform: toBool });\n readonly showSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm', transform: toBool });\n readonly showMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md', transform: toBool });\n readonly showLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg', transform: toBool });\n readonly showXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl', transform: toBool });\n readonly showLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-sm', transform: toBool });\n readonly showLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-md', transform: toBool });\n readonly showLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-lg', transform: toBool });\n readonly showLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lt-xl', transform: toBool });\n readonly showGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-xs', transform: toBool });\n readonly showGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-sm', transform: toBool });\n readonly showGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-md', transform: toBool });\n readonly showGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxShow.gt-lg', transform: toBool });\n readonly showSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-up', transform: toBool });\n readonly showMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-up', transform: toBool });\n readonly showLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-up', transform: toBool });\n readonly showXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxShow.xl-up', transform: toBool });\n readonly showSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.sm-down', transform: toBool });\n readonly showMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.md-down', transform: toBool });\n readonly showLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxShow.lg-down', transform: toBool });\n\n // ── fxHide inputs ─────────────────────────────────────────────────────────\n readonly fxHide = input<boolean, string | boolean>(undefined, { alias: 'fxHide', transform: toBool });\n readonly hideXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xs', transform: toBool });\n readonly hideSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm', transform: toBool });\n readonly hideMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md', transform: toBool });\n readonly hideLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg', transform: toBool });\n readonly hideXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl', transform: toBool });\n readonly hideLtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-sm', transform: toBool });\n readonly hideLtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-md', transform: toBool });\n readonly hideLtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-lg', transform: toBool });\n readonly hideLtXl = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lt-xl', transform: toBool });\n readonly hideGtXs = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-xs', transform: toBool });\n readonly hideGtSm = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-sm', transform: toBool });\n readonly hideGtMd = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-md', transform: toBool });\n readonly hideGtLg = input<boolean, string | boolean>(undefined, { alias: 'fxHide.gt-lg', transform: toBool });\n readonly hideSmUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-up', transform: toBool });\n readonly hideMdUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-up', transform: toBool });\n readonly hideLgUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-up', transform: toBool });\n readonly hideXlUp = input<boolean, string | boolean>(undefined, { alias: 'fxHide.xl-up', transform: toBool });\n readonly hideSmDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.sm-down', transform: toBool });\n readonly hideMdDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.md-down', transform: toBool });\n readonly hideLgDown = input<boolean, string | boolean>(undefined, { alias: 'fxHide.lg-down', transform: toBool });\n\n private readonly _visible = computed((): boolean => {\n const bp = this.media.currentBp();\n const isActive = (a: string) => this.media.isActive(a);\n\n // Non-canonical maps (alias → show value / hide value)\n const showNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.showLtSm(), 'lt-md': this.showLtMd(), 'lt-lg': this.showLtLg(),\n 'lt-xl': this.showLtXl(), 'gt-xs': this.showGtXs(), 'gt-sm': this.showGtSm(), 'gt-md': this.showGtMd(),\n 'gt-lg': this.showGtLg(), 'sm-up': this.showSmUp(), 'md-up': this.showMdUp(), 'lg-up': this.showLgUp(),\n 'xl-up': this.showXlUp(), 'sm-down': this.showSmDown(), 'md-down': this.showMdDown(),\n 'lg-down': this.showLgDown() };\n const hideNc: Record<string, boolean | undefined> = {\n 'lt-sm': this.hideLtSm(), 'lt-md': this.hideLtMd(), 'lt-lg': this.hideLtLg(),\n 'lt-xl': this.hideLtXl(), 'gt-xs': this.hideGtXs(), 'gt-sm': this.hideGtSm(), 'gt-md': this.hideGtMd(),\n 'gt-lg': this.hideGtLg(), 'sm-up': this.hideSmUp(), 'md-up': this.hideMdUp(), 'lg-up': this.hideLgUp(),\n 'xl-up': this.hideXlUp(), 'sm-down': this.hideSmDown(), 'md-down': this.hideMdDown(),\n 'lg-down': this.hideLgDown() };\n\n // 1. Non-canonical (lt-*, gt-*, *-up, *-down) — most specific first\n for (const alias of NON_CANONICAL_PRIORITY) {\n const sv = showNc[alias];\n const hv = hideNc[alias];\n if ((sv !== undefined || hv !== undefined) && isActive(alias)) {\n if (sv !== undefined) return sv; // show beats hide at same priority\n return !hv!;\n }\n }\n\n // Canonical maps (bp → value) — exact only, NO cascade\n const showV: Record<string, boolean | undefined> = {\n xs: this.showXs(), sm: this.showSm(), md: this.showMd(),\n lg: this.showLg(), xl: this.showXl() };\n const hideV: Record<string, boolean | undefined> = {\n xs: this.hideXs(), sm: this.hideSm(), md: this.hideMd(),\n lg: this.hideLg(), xl: this.hideXl() };\n\n // 2. Exact canonical match for current bp\n const showExact = showV[bp];\n const hideExact = hideV[bp];\n if (showExact !== undefined) return showExact;\n if (hideExact !== undefined) return !hideExact;\n\n // 3. Default values (fxShow / fxHide without suffix)\n const showDef = this.fxShow();\n const hideDef = this.fxHide();\n if (showDef !== undefined) return showDef;\n if (hideDef !== undefined) return !hideDef;\n\n // 4. Neither directive active → visible\n return true;\n });\n\n /** Inline display captured before the last hide — restored on show. */\n private _prevDisplay: string | null = null;\n\n constructor() {\n super();\n effect(() => {\n this._prevDisplay = applyVisibility(\n this.el.nativeElement,\n (p, v) => this.r2.setStyle(this.el.nativeElement, p, v),\n p => this.r2.removeStyle(this.el.nativeElement, p),\n this._visible(),\n this._prevDisplay\n );\n });\n }\n}\n\n\n","/**\n * @file fx-style-class.directives.ts (Angular 21 — signals)\n *\n * [fxStyle] — responsive inline style binding (Record<string,string>)\n * [fxClass] — responsive CSS class binding (string | string[] | Record<string,boolean>)\n *\n * Angular 21 changes:\n * • All @Input setters replaced by input() signals\n * • computed() derives resolved StyleMap / ClassInput value\n * • effect() in constructor handles DOM writes with diff\n *\n * Style/class leak prevention:\n * _appliedProps / _appliedClasses are regular Set<string> fields\n * (NOT signals) — they track what was actively applied so the\n * effect can remove stale properties/classes on the next run.\n *\n * Breakpoint suffixes: canonical + lt-* + gt-* + *-up + *-down\n */\n\nimport { Directive, computed, effect, input } from '@angular/core';\nimport { ResponsiveBaseDirective, resolveAll } from './responsive-base.directive';\n\n// ─── fxStyle ─────────────────────────────────────────────────────────────────\n\ntype StyleMap = Record<string, string>;\n\n@Directive({\n selector: `\n [fxStyle],\n [fxStyle.xs],\n [fxStyle.sm],\n [fxStyle.md],\n [fxStyle.lg],\n [fxStyle.xl],\n [fxStyle.lt-sm],\n [fxStyle.lt-md],\n [fxStyle.lt-lg],\n [fxStyle.lt-xl],\n [fxStyle.gt-xs],\n [fxStyle.gt-sm],\n [fxStyle.gt-md],\n [fxStyle.gt-lg],\n [fxStyle.sm-up],\n [fxStyle.md-up],\n [fxStyle.lg-up],\n [fxStyle.xl-up],\n [fxStyle.sm-down],\n [fxStyle.md-down],\n [fxStyle.lg-down]\n `,\n standalone: true\n})\nexport class FxStyleDirective extends ResponsiveBaseDirective {\n readonly fxStyle = input<StyleMap>(undefined, { alias: 'fxStyle' });\n readonly xs = input<StyleMap>(undefined, { alias: 'fxStyle.xs' });\n readonly sm = input<StyleMap>(undefined, { alias: 'fxStyle.sm' });\n readonly md = input<StyleMap>(undefined, { alias: 'fxStyle.md' });\n readonly lg = input<StyleMap>(undefined, { alias: 'fxStyle.lg' });\n readonly xl = input<StyleMap>(undefined, { alias: 'fxStyle.xl' });\n readonly ltSm = input<StyleMap>(undefined, { alias: 'fxStyle.lt-sm' });\n readonly ltMd = input<StyleMap>(undefined, { alias: 'fxStyle.lt-md' });\n readonly ltLg = input<StyleMap>(undefined, { alias: 'fxStyle.lt-lg' });\n readonly ltXl = input<StyleMap>(undefined, { alias: 'fxStyle.lt-xl' });\n readonly gtXs = input<StyleMap>(undefined, { alias: 'fxStyle.gt-xs' });\n readonly gtSm = input<StyleMap>(undefined, { alias: 'fxStyle.gt-sm' });\n readonly gtMd = input<StyleMap>(undefined, { alias: 'fxStyle.gt-md' });\n readonly gtLg = input<StyleMap>(undefined, { alias: 'fxStyle.gt-lg' });\n readonly smUp = input<StyleMap>(undefined, { alias: 'fxStyle.sm-up' });\n readonly mdUp = input<StyleMap>(undefined, { alias: 'fxStyle.md-up' });\n readonly lgUp = input<StyleMap>(undefined, { alias: 'fxStyle.lg-up' });\n readonly xlUp = input<StyleMap>(undefined, { alias: 'fxStyle.xl-up' });\n readonly smDown = input<StyleMap>(undefined, { alias: 'fxStyle.sm-down' });\n readonly mdDown = input<StyleMap>(undefined, { alias: 'fxStyle.md-down' });\n readonly lgDown = input<StyleMap>(undefined, { alias: 'fxStyle.lg-down' });\n\n private readonly _resolved = computed(() =>\n (resolveAll<StyleMap>(\n { default: this.fxStyle(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ) ?? {})\n );\n\n /** Tracks which CSS properties were last applied — plain field, not a signal. */\n private _appliedProps = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n const nextKeys = new Set(Object.keys(next));\n for (const prop of this._appliedProps) {\n if (!nextKeys.has(prop)) this.r2.removeStyle(this.el.nativeElement, prop);\n }\n for (const [prop, value] of Object.entries(next)) {\n this.r2.setStyle(this.el.nativeElement, prop, value);\n }\n this._appliedProps = nextKeys;\n });\n }\n}\n\n// ─── fxClass ─────────────────────────────────────────────────────────────────\n\ntype ClassInput = string | string[] | Record<string, boolean>;\n\nfunction toClassSet(v: ClassInput | undefined): Set<string> {\n if (!v) return new Set();\n if (typeof v === 'string') return new Set(v.split(/\\s+/).filter(Boolean));\n if (Array.isArray(v)) return new Set(v.filter(Boolean));\n return new Set(Object.entries(v).filter(([, on]) => on).map(([cls]) => cls));\n}\n\n@Directive({\n selector: `\n [fxClass],\n [fxClass.xs],\n [fxClass.sm],\n [fxClass.md],\n [fxClass.lg],\n [fxClass.xl],\n [fxClass.lt-sm],\n [fxClass.lt-md],\n [fxClass.lt-lg],\n [fxClass.lt-xl],\n [fxClass.gt-xs],\n [fxClass.gt-sm],\n [fxClass.gt-md],\n [fxClass.gt-lg],\n [fxClass.sm-up],\n [fxClass.md-up],\n [fxClass.lg-up],\n [fxClass.xl-up],\n [fxClass.sm-down],\n [fxClass.md-down],\n [fxClass.lg-down]\n `,\n standalone: true\n})\nexport class FxClassDirective extends ResponsiveBaseDirective {\n readonly fxClass = input<ClassInput>(undefined, { alias: 'fxClass' });\n readonly xs = input<ClassInput>(undefined, { alias: 'fxClass.xs' });\n readonly sm = input<ClassInput>(undefined, { alias: 'fxClass.sm' });\n readonly md = input<ClassInput>(undefined, { alias: 'fxClass.md' });\n readonly lg = input<ClassInput>(undefined, { alias: 'fxClass.lg' });\n readonly xl = input<ClassInput>(undefined, { alias: 'fxClass.xl' });\n readonly ltSm = input<ClassInput>(undefined, { alias: 'fxClass.lt-sm' });\n readonly ltMd = input<ClassInput>(undefined, { alias: 'fxClass.lt-md' });\n readonly ltLg = input<ClassInput>(undefined, { alias: 'fxClass.lt-lg' });\n readonly ltXl = input<ClassInput>(undefined, { alias: 'fxClass.lt-xl' });\n readonly gtXs = input<ClassInput>(undefined, { alias: 'fxClass.gt-xs' });\n readonly gtSm = input<ClassInput>(undefined, { alias: 'fxClass.gt-sm' });\n readonly gtMd = input<ClassInput>(undefined, { alias: 'fxClass.gt-md' });\n readonly gtLg = input<ClassInput>(undefined, { alias: 'fxClass.gt-lg' });\n readonly smUp = input<ClassInput>(undefined, { alias: 'fxClass.sm-up' });\n readonly mdUp = input<ClassInput>(undefined, { alias: 'fxClass.md-up' });\n readonly lgUp = input<ClassInput>(undefined, { alias: 'fxClass.lg-up' });\n readonly xlUp = input<ClassInput>(undefined, { alias: 'fxClass.xl-up' });\n readonly smDown = input<ClassInput>(undefined, { alias: 'fxClass.sm-down' });\n readonly mdDown = input<ClassInput>(undefined, { alias: 'fxClass.md-down' });\n readonly lgDown = input<ClassInput>(undefined, { alias: 'fxClass.lg-down' });\n\n private readonly _resolved = computed(() =>\n toClassSet(resolveAll<ClassInput>(\n { default: this.fxClass(), xs: this.xs(), sm: this.sm(),\n md: this.md(), lg: this.lg(), xl: this.xl() },\n { 'lt-sm': this.ltSm(), 'lt-md': this.ltMd(), 'lt-lg': this.ltLg(),\n 'lt-xl': this.ltXl(), 'gt-xs': this.gtXs(), 'gt-sm': this.gtSm(), 'gt-md': this.gtMd(),\n 'gt-lg': this.gtLg(), 'sm-up': this.smUp(), 'md-up': this.mdUp(), 'lg-up': this.lgUp(),\n 'xl-up': this.xlUp(), 'sm-down': this.smDown(), 'md-down': this.mdDown(),\n 'lg-down': this.lgDown() },\n this.media.currentBp(), a => this.media.isActive(a)\n ))\n );\n\n /** Tracks which CSS classes were last applied — plain field, not a signal. */\n private _appliedClasses = new Set<string>();\n\n constructor() {\n super();\n effect(() => {\n if (!this.isBrowser) return;\n const next = this._resolved();\n for (const cls of this._appliedClasses) {\n if (!next.has(cls)) this.r2.removeClass(this.el.nativeElement, cls);\n }\n for (const cls of next) {\n this.r2.addClass(this.el.nativeElement, cls);\n }\n this._appliedClasses = next;\n });\n }\n}\n","import { NgModule } from \"@angular/core\";\n// ── Tokens ───────────────────────────────────────────────────────────────────\nexport { BS5_BREAKPOINTS, LAYOUT_BREAKPOINTS, CANONICAL_ALIASES } from './breakpoints';\nexport type { BreakpointAlias } from './breakpoints';\nexport { ALIAS_FAMILIES } from './breakpoints';\n\n// ── Input type helpers (useful for custom directive extensions) ──────────────\nexport type { CanonicalKey, NonCanonicalKey, BpValues, NcValues } from './responsive-inputs.mixin';\n\n// ── Service ──────────────────────────────────────────────────────────────────\nexport { MediaObserver } from './media-observer.service';\n\n// ── Base (re-export for extension) ───────────────────────────────────────────\nexport { ResponsiveBaseDirective, NON_CANONICAL_PRIORITY } from './responsive-base.directive';\n\n// ── Flex directives ──────────────────────────────────────────────────────────\nexport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nexport { FxFlexDirective } from './fx-flex.directive';\nexport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nexport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nexport {\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n} from './fx-flex-extras.directives';\n\n// ── Visibility directives ─────────────────────────────────────────────────────\nexport { FxShowHideDirective } from './fx-show-hide.directives';\n\n// ── Style / Class directives ─────────────────────────────────────────────────\nexport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\n\n// ── Grid directives (bonus — not in original ngx-layout) ─────────────────────\nexport {\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n} from './fx-grid.directives';\n\n// ── Structural directives ─────────────────────────────────────────────────────\nexport { IfBpDirective } from './if-bp.directive';\n\n// ── Convenience module (for non-standalone NgModule apps) ────────────────────\nimport { FxLayoutDirective, FxLayoutWrapDirective } from './fx-layout.directive';\nimport { FxFlexDirective } from './fx-flex.directive';\nimport { FxLayoutAlignDirective } from './fx-layout-align.directive';\nimport { FxLayoutGapDirective } from './fx-layout-gap.directive';\nimport {\n FxFlexOrderDirective, FxFlexOffsetDirective,\n FxFlexAlignDirective, FxFlexFillDirective,\n} from './fx-flex-extras.directives';\nimport { FxStyleDirective, FxClassDirective } from './fx-style-class.directives';\nimport {\n FxGridDirective, FxGridColumnDirective, FxGridAreaDirective,\n} from './fx-grid.directives';\nimport { IfBpDirective } from './if-bp.directive';\nimport { FxShowHideDirective } from \"./fx-show-hide.directives\";\n\n\n@NgModule({\n imports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n exports: [\n FxLayoutDirective,\n FxLayoutWrapDirective,\n FxFlexDirective,\n FxShowHideDirective,\n FxLayoutAlignDirective,\n FxLayoutGapDirective,\n FxFlexOrderDirective,\n FxFlexOffsetDirective,\n FxFlexAlignDirective,\n FxFlexFillDirective,\n FxStyleDirective,\n FxClassDirective,\n FxGridDirective,\n FxGridColumnDirective,\n FxGridAreaDirective,\n IfBpDirective,\n ],\n\n})\nexport class FlexModule { }\n\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { FlexModule } from '../../directives/flex';\nimport { MatIcon } from '@angular/material/icon';\n\n/**\n * Overlay dialog that blocks interaction while a background operation is in progress.\n * Supports four visual styles: progress bar, spinner, hourglass, and wait icon.\n */\n@Component({\n templateUrl: './busy-dialog.component.html',\n styleUrl: './busy-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexModule, MatProgressBarModule, MatProgressSpinnerModule, MatIcon, SafeHtmlPipe]\n})\nexport class BusyDialogComponent {\n /** Visual style of the busy indicator. */\n readonly type = signal<'bar' | 'spinner' | 'wait' | 'hourglass'>('bar');\n\n /** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */\n readonly progress = signal<number>(0);\n\n /** Progress mode passed to the Material progress components. */\n readonly progressMode = signal<'determinate' | 'indeterminate'>('indeterminate');\n\n /** Message displayed above the progress indicator. */\n readonly message = signal<string>('');\n\n /**\n * Updates the busy dialog state.\n * @param message - New message to display. Ignored when empty, preserving the previous text.\n * @param progress - Current progress value (0–100). A value > 0 forces `'determinate'` mode.\n * @param progressMode - Progress bar/spinner mode (default: `'indeterminate'`).\n * @param type - Visual style to use (default: `'bar'`).\n */\n set(\n message: string,\n progress: number,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar'\n ): void {\n if (message) {\n this.message.set(message);\n }\n if (type) {\n this.type.set(type);\n }\n this.progress.set(progress);\n this.progressMode.set(progress > 0 ? 'determinate' : progressMode);\n }\n}\n","@if(type() === 'hourglass') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n</div>\r\n} @else if (type() === 'wait') {\r\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFill>\r\n <div><mat-icon class=\"mat-icon-spinner\">hourglass</mat-icon></div>\r\n</div>\r\n} @else {\r\n<div class=\"busy-panel\">\r\n <div fxLayout=\"column\" fxFill>\r\n @if (message()) {\r\n <div [innerHTML]=\"message() | safeHtml\" class=\"busy-message\"></div>\r\n }\r\n @if (type() === 'bar') {\r\n <div>\r\n <mat-progress-bar [mode]=\"progressMode()\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto; max-width: 350px;\"></mat-progress-bar>\r\n </div>\r\n } @else if (type() === 'spinner') {\r\n <div>\r\n <mat-progress-spinner [mode]=\"progressMode()\" diameter=\"70\" [value]=\"progress()\"\r\n style=\"margin:15px auto 0 auto;\"></mat-progress-spinner>\r\n </div>\r\n }\r\n @if (progress() > 0) {\r\n <div>\r\n <span style=\"font-size: smaller;\"><b>{{progress()}}%</b></span>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n}","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { DialogOption, DialogResult } from '../../definitions';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FlexModule } from '../../directives/flex';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface ConfirmDialogOption extends DialogOption {}\n\nexport interface ConfirmDialogData {\n title?: string;\n message: string;\n okCaption?: string;\n cancelCaption?: string;\n otherCaption?: string;\n options?: ConfirmDialogOption[];\n details?: string;\n}\n\n@Component({\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\n MatDialogActions, MatButtonModule, SafeHtmlPipe]\n})\nexport class ConfirmDialogComponent {\n /** Emitted when the user makes a choice. Carries the selected result and any option state. */\n readonly choosen = output<DialogResult>();\n\n private readonly dialogRef = inject(MatDialogRef<ConfirmDialogComponent>);\n\n /** Dialog configuration, with sensible defaults applied at construction time. */\n protected readonly dialogData = signal<ConfirmDialogData>({\n title: 'Conferma',\n okCaption: 'Si',\n cancelCaption: 'No',\n message: '',\n ...((inject(MAT_DIALOG_DATA) as ConfirmDialogData | null) ?? {}),\n });\n\n constructor() {\n // Ensure optional captions always have a value even when the caller omits them\n this.dialogData.update(d => ({\n ...d,\n title: d.title ?? 'Conferma',\n okCaption: d.okCaption ?? 'Si',\n cancelCaption: d.cancelCaption ?? 'No',\n }));\n }\n\n /**\n * Confirms the dialog, emitting `'ok'` together with the current option selections.\n */\n ok(): void {\n this.choosen.emit({ result: 'ok', options: this.dialogData().options });\n this.dialogRef.close();\n }\n\n /**\n * Cancels the dialog, emitting `'cancel'`.\n */\n cancel(): void {\n this.choosen.emit({ result: 'cancel' });\n this.dialogRef.close();\n }\n\n /**\n * Triggers the tertiary action, emitting `'other'`.\n */\n other(): void {\n this.choosen.emit({ result: 'other' });\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().options) {\r\n <div>\r\n @for (o of dialogData().options; track o; let i = $index) {\r\n <div>\r\n <mat-checkbox (change)=\"o.selected = $event.checked\" [checked]=\"o.selected === true\" name=\"opt_{{i}}\" >\r\n {{o.description}}\r\n </mat-checkbox>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <br>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().otherCaption) {\r\n <button mat-flat-button (click)=\"other()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().otherCaption}}</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button (click)=\"ok()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, DestroyRef, inject, signal } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { FlexModule } from '../../directives/flex';\nimport { DialogService } from '../../services/dialog.service';\n\nexport interface InfoDialogData {\n title?: string;\n message: string;\n details?: string;\n okCaption?: string;\n dismissAfter?: number;\n onNavigate?: (url: string) => void;\n}\n\n@Component({\n templateUrl: './info-dialog.component.html',\n styleUrl: './info-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogActions, FlexModule,\n MatButtonModule, MatIconModule, MatDialogClose, MatTooltipModule, SafeHtmlPipe]\n})\nexport class InfoDialogComponent {\n private readonly dialogService = inject(DialogService);\n private readonly dialogRef = inject(MatDialogRef<InfoDialogComponent>);\n private dismissTimer?: ReturnType<typeof setTimeout>;\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<InfoDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as InfoDialogData | null) ?? { message: '' };\n return { title: 'Informazioni', ...raw };\n })());\n\n constructor() {\n // Schedule auto-dismiss if configured; cancel it when the dialog is destroyed\n this.scheduleDismiss(this.dialogData().dismissAfter);\n inject(DestroyRef).onDestroy(() => clearTimeout(this.dismissTimer));\n }\n\n /**\n * (Re)schedules the auto-dismiss timer, cancelling any pending one so that\n * an earlier (shorter) timer can never close a newer message.\n * @param dismissAfter - Delay in milliseconds; no-op when falsy.\n */\n private scheduleDismiss(dismissAfter?: number): void {\n clearTimeout(this.dismissTimer);\n this.dismissTimer = undefined;\n if (dismissAfter) {\n this.dismissTimer = setTimeout(() => this.dialogRef.close(), dismissAfter);\n }\n }\n\n /**\n * Replaces the dialog data at runtime (e.g. after an async operation resolves).\n * Also re-schedules the auto-dismiss timer if `dismissAfter` is set.\n * @param data - The new dialog data to display.\n */\n public setData(data: InfoDialogData): void {\n this.dialogData.set({ title: 'Informazioni', ...data });\n this.scheduleDismiss(data.dismissAfter);\n }\n\n /**\n * Invokes the optional navigation callback provided by the caller.\n * @param url - The URL to navigate to.\n */\n protected navigate(url: string): void {\n this.dialogData().onNavigate?.(url);\n }\n\n /**\n * Copy to clipboard\n */\n protected async copy(): Promise<void> {\n const elem = document.getElementById('info-dialog-content');\n if (!elem) return;\n const htmlBlob = new Blob([elem.innerHTML], { type: 'text/html' });\n const textBlob = new Blob([elem.innerText], { type: 'text/plain' });\n try {\n const data = [\n new ClipboardItem({\n 'text/html': htmlBlob,\n 'text/plain': textBlob\n })\n ];\n window.focus(); // the Clipboard API requires the document to be focused\n await navigator.clipboard.write(data);\n this.dialogService.toast('Copiato negli appunti.');\n } catch (err) {\n this.dialogService.toast(`Errore copiando negli appunti: ${err}`);\n }\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill id=\"info-dialog-content\">\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <br>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxFill>\r\n <button mat-icon-button (click)=\"copy()\" matTooltip=\"Copia negli appunti\"><mat-icon>content_copy</mat-icon></button>\r\n <button mat-flat-button [mat-dialog-close]=\"true\" cdkFocusInitial>{{dialogData().okCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Component, ChangeDetectionStrategy, inject, output, signal } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FlexModule } from '../../directives/flex';\n\nexport interface ToastData {\n message: string;\n icon?: string;\n actionCaption?: string;\n}\n\n@Component({\n templateUrl: './toast.component.html',\n styleUrl: './toast.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FlexModule, MatIconModule, MatButtonModule, SafeHtmlPipe]\n})\nexport class ToastComponent {\n /** Emitted when the user clicks the optional action button. */\n readonly action = output<void>();\n\n /** Snack-bar payload with a safe fallback to an empty message when no data is injected. */\n protected readonly dialogData = signal<ToastData>(\n (inject(MAT_SNACK_BAR_DATA) as ToastData | null) ?? { message: '' }\n );\n\n /**\n * Emits the `action` event to notify the caller that the action button was clicked.\n */\n protected do(): void {\n this.action.emit();\n }\n}\n","<div fxLayout=\"row\" fxLayoutGap=\"10px\">\r\n @if (dialogData().icon) {\r\n <div fxFlex='30px' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n <mat-icon>{{dialogData().icon}}</mat-icon>\r\n </div>\r\n }\r\n <div fxFlex='*' fxLayoutAlign=\"start\" fxFlexAlign=\"center\">\r\n @if (dialogData().message) {\r\n <span [innerHTML]=\"dialogData().message | safeHtml\"></span>\r\n }\r\n </div>\r\n @if (dialogData().actionCaption) {\r\n <div fxLayoutAlign=\"end\" fxFlexAlign=\"center\">\r\n <div style=\"padding-left: 20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"do()\"\r\n [innerHTML]=\"dialogData().actionCaption\"></button>\r\n </div>\r\n </div>\r\n }\r\n</div>","import { Service, signal } from '@angular/core';\r\n\r\n\r\n@Service()\r\nexport class UIService {\r\n\r\n /**\r\n * The default Material form-field appearance used across dialogs and forms.\r\n * Defaults to `'fill'`.\r\n */\r\n readonly appearance = signal<'fill' | 'outline'>('fill');\r\n\r\n /**\r\n * Updates the global form-field appearance.\r\n * @param value - The new appearance value. Falls back to `'fill'` when `undefined` is passed.\r\n */\r\n setAppearance(value: 'fill' | 'outline' | undefined): void {\r\n this.appearance.set(value ?? 'fill');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { DialogResult } from '../../definitions';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { FlexModule } from '../../directives/flex';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\n\nexport enum DeleteDialogConfirmMode {\n None = 0,\n Simple = 1,\n Strong = 2\n}\n\nexport interface DeleteDialogData {\n title?: string;\n message: string;\n confirmMode: DeleteDialogConfirmMode;\n okCaption?: string;\n cancelCaption?: string;\n details?: string;\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './delete-dialog.component.html',\n styleUrl: './delete-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatDialogTitle, MatDialogContent, MatDialogClose, FlexModule, MatCheckboxModule, FormsModule,\n MatDialogActions, MatButtonModule, MatFormFieldModule, MatInputModule, SafeHtmlPipe]\n})\nexport class DeleteDialogComponent {\n /** Emitted when the user makes a choice. Carries the selected result. */\n readonly choosen = output<DialogResult>();\n\n private readonly dialogRef = inject(MatDialogRef<DeleteDialogComponent>);\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<DeleteDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as DeleteDialogData | null) ?? {};\n return {\n title: 'Attenzione',\n okCaption: 'Si',\n cancelCaption: 'No',\n confirmMode: DeleteDialogConfirmMode.None,\n message: '',\n ...raw,\n };\n })());\n\n /**\n * Whether the user has confirmed the deletion.\n * Starts as `true` for all modes except `Simple`, which requires explicit checkbox confirmation.\n */\n protected readonly confirmed = signal<boolean>(\n this.dialogData().confirmMode !== DeleteDialogConfirmMode.Simple\n );\n\n /** Current value typed into the strong-confirmation text field. */\n protected confirmValue?: string;\n\n /**\n * Confirms the deletion, emitting `'ok'` and closing the dialog.\n */\n ok(): void {\n this.choosen.emit({ result: 'ok' });\n this.dialogRef.close();\n }\n\n /**\n * Cancels the operation, emitting `'cancel'` and closing the dialog.\n */\n cancel(): void {\n this.choosen.emit({ result: 'cancel' });\n this.dialogRef.close();\n }\n}\n","<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content class=\"dialog-content\">\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n <div fxLayout=\"column\" fxLayoutGap=\"24px\" fxFill>\r\n <div fxFlex=\"*\">\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\"></div>\r\n }\r\n </div>\r\n @if (dialogData().details) {\r\n <div class=\"details-box\">\r\n <p class=\"x-small uppercase secondary\">Dettaglio:</p>\r\n <div class=\"small details\">\r\n <div [innerHtml]=\"dialogData().details | safeHtml\"></div>\r\n </div>\r\n </div>\r\n }\r\n @if (dialogData().confirmMode === 1) {\r\n <div>\r\n <mat-checkbox (change)=\"confirmed.set($event.checked)\" [checked]=\"confirmed()\">\r\n Confermo la cancellazione\r\n </mat-checkbox>\r\n </div>\r\n } @else if (dialogData().confirmMode === 2) {\r\n <p>Per confermare la cancellazione digita la parola <i><b>elimina</b></i>.</p>\r\n <mat-form-field style=\"width: 200px\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma</mat-label>\r\n <input matInput #field_confirm=\"ngModel\" [(ngModel)]=\"confirmValue\" name=\"field_confirm\" required\r\n [attr.aria-label]=\"'Digita la parola -elimina-'\">\r\n @if (field_confirm.invalid) {\r\n <mat-error>Digita la parola \"elimina\"</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <br>\r\n </div>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"end center\" fxFill>\r\n <button mat-flat-button (click)=\"ok()\"\r\n [disabled]=\"f.form.invalid || (confirmValue && confirmValue.toLowerCase() !== 'elimina') || !confirmed()\"\r\n [mat-dialog-close]=\"true\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\"\r\n (click)=\"cancel()\">{{dialogData().cancelCaption}}</button>\r\n </div>\r\n</mat-dialog-actions>","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { PlatformLocation } from '@angular/common';\nimport { ComponentRef, inject, Service } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\nimport { SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { Observable, Subscription, timer } from 'rxjs';\nimport { first, tap } from 'rxjs/operators';\nimport { BusyDialogComponent } from '../dialogs/busy/busy-dialog.component';\nimport {\n ConfirmDialogComponent,\n ConfirmDialogData,\n ConfirmDialogOption\n} from '../dialogs/confirm/confirm-dialog.component';\nimport {\n InfoDialogComponent,\n InfoDialogData\n} from '../dialogs/info/info-dialog.component';\nimport { ToastComponent, ToastData } from '../dialogs/toast/toast.component';\nimport { UIService } from './ui.service';\nimport { DeleteDialogComponent, DeleteDialogConfirmMode, DeleteDialogData } from '../dialogs/delete/delete-dialog.component';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IDialogService {}\n\ninterface PopHistoryEntry {\n id: string;\n value: number;\n}\n\nexport class BusyTimer {\n private readonly subscription: Subscription;\n\n constructor(\n private readonly dialogService: DialogService,\n due: number = 100,\n message: string = 'Operazione in corso...'\n ) {\n this.subscription = timer(due).pipe(tap(() => this.dialogService.busy(message))).subscribe();\n }\n\n /** Dispose object */\n clear(): void {\n this.subscription.unsubscribe();\n this.dialogService.clearBusy();\n }\n}\n\n@Service()\nexport class DialogService extends UIService {\n\n /**\n * Shares the SAME `appearance` signal instance as the root `UIService`:\n * `uiService.setAppearance('outline')` is immediately visible here and in\n * every dialog opened by this service.\n */\n override readonly appearance = inject(UIService).appearance;\n\n private readonly dialog = inject(MatDialog);\n private readonly overlay = inject(Overlay);\n private readonly snackBar = inject(MatSnackBar);\n private readonly location = inject(PlatformLocation);\n\n private busyDialogRef?: OverlayRef;\n private busyComponentRef?: ComponentRef<BusyDialogComponent>;\n private clearBusyTimer?: ReturnType<typeof setTimeout>;\n private errorDialogRef?: MatDialogRef<InfoDialogComponent>;\n private readonly popHistory: PopHistoryEntry[] = [];\n private popState = true;\n private poppingState = false;\n\n constructor() {\n super();\n\n // Handle dialog close when back button is clicked\n this.location.onPopState(() => {\n if (!this.poppingState) {\n const count = this.dialog.openDialogs.length;\n if (count > 0) {\n // Disable pop state if needed\n this.popState = false;\n // Close dialog\n this.dialog.openDialogs[count - 1].close();\n }\n } else {\n this.poppingState = false;\n }\n });\n }\n\n /**\n * Removes trailing `#` characters from the current URL (e.g. after a page reload).\n * @param resetPoppingState - When `true`, resets the internal popping-state flag.\n */\n clearUrl(resetPoppingState: boolean = false): void {\n const url = location.href;\n let l = url.length;\n while (l >= 0 && url[l - 1] === '#') l--;\n if (l < url.length)\n history.replaceState({}, '', url.substring(0, l));\n if (resetPoppingState)\n this.poppingState = false;\n }\n\n /**\n * Close all dialogs\n */\n closeAll(): void {\n this.dialog.closeAll();\n }\n\n\n /**\n * Opens a Material dialog. Returns `null` when not running in a browser.\n * @param component - The component to open as a dialog.\n * @param config - The dialog configuration.\n * @returns The dialog reference, or `null` outside the browser.\n */\n open<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> | null {\n if (!SystemUtils.isBrowser()) return null;\n this.clearBusy();\n return this.openDialog(component, config);\n }\n\n\n /**\n * Internal helper that wraps `MatDialog.open`, subscribes to lifecycle hooks\n * and manages browser-history push/pop entries.\n * @param component - The component to open.\n * @param config - The dialog configuration.\n * @returns The dialog reference.\n */\n private openDialog<T>(component: ComponentType<T>, config: MatDialogConfig<unknown>): MatDialogRef<T> {\n // We will take care of navigation\n config.closeOnNavigation = false;\n const d = this.dialog.open(component, config);\n d.afterOpened().pipe(first()).subscribe(() => this.pushDialog(d.id));\n d.beforeClosed().pipe(first()).subscribe(() => this.popDialog(d.id));\n d.afterClosed().pipe(first()).subscribe(() => {\n // Final cleanup of middle objects\n this.errorDialogRef = undefined;\n });\n return d;\n }\n\n /**\n * Returns the element height including margins\n * @param element - element\n * @returns the height\n */\n private outerHeight(element: HTMLElement): number {\n if (!SystemUtils.isBrowser()) return 0;\n const height = element.offsetHeight;\n const style = window.getComputedStyle(element);\n return (['top', 'bottom'] as const)\n .map(side => parseInt(style.getPropertyValue(`margin-${side}`), 10))\n .reduce((total, margin) => total + margin, height);\n }\n\n /**\n * Return current dialog height\n */\n getCurrentDialogHeight(): number {\n if (!SystemUtils.isBrowser()) return 0;\n const count = this.popHistory.length;\n if (count > 0) {\n let id = this.popHistory[count - 1].id;\n let elem = document.getElementById(id);\n if (elem && elem.clientHeight > 0) return elem.clientHeight;\n }\n return 0;\n }\n\n /**\n * Returns the scrollable content area height for the topmost open dialog.\n * @param fixedPartsClassName - CSS class names of fixed (non-scrollable) elements whose heights are subtracted.\n * @param minimalHeight - Minimum height floor to use when the dialog height is smaller.\n * @returns The computed scrollable height in pixels.\n */\n getCurrentDialogScrollableHeight(\n fixedPartsClassName: string[],\n minimalHeight: number\n ): number {\n if (!SystemUtils.isBrowser()) return 0;\n let h = Math.max(this.getCurrentDialogHeight(), minimalHeight);\n if (fixedPartsClassName) {\n fixedPartsClassName.forEach(n => {\n const elems = document.getElementsByClassName(n);\n if (elems) {\n for (let i = 0; i < elems.length; i++) {\n h -= this.outerHeight(elems[i] as HTMLElement);\n }\n }\n });\n }\n return h;\n }\n\n /**\n * Push a dialog into the browser history\n */\n private pushDialog(id: string): void {\n if (!SystemUtils.isBrowser()) return;\n const index = history.length;\n history.pushState({ index }, '', location.href + '#');\n this.popHistory.push({ id, value: index });\n }\n\n /**\n * Pop a dialog from the history\n */\n private popDialog(id?: string): void {\n if (!SystemUtils.isBrowser()) return;\n if (this.popState) {\n this.poppingState = true;\n let popped = 1;\n if (id) {\n const p = this.popHistory.findIndex(n => n.id === id);\n if (p !== -1) {\n popped = this.popHistory[p].value - (history.state?.index ?? 0);\n popped = popped ? popped + 1 : 1;\n this.popHistory.splice(p, 1);\n }\n const url = location.href;\n let l = url.length;\n while (l >= 0 && url[l - 1] === '#' && popped > 0) {\n l--;\n popped--;\n }\n if (l < url.length)\n history.replaceState({}, '', url.substring(0, l));\n }\n }\n this.popState = true;\n }\n\n /**\n * Creates the CDK overlay used to host the busy indicator.\n * @returns The new `OverlayRef`.\n */\n private createBusy(): OverlayRef {\n return this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'busy-backdrop',\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n }\n\n /**\n * Clears the busy overlay after a short grace delay (lets very fast\n * operations avoid a visible flicker). The pending detach is cancelled by\n * any new `setBusy()` call, so it can never kill a freshly opened overlay.\n */\n clearBusy(): void {\n clearTimeout(this.clearBusyTimer);\n this.clearBusyTimer = setTimeout(() => {\n this.clearBusyTimer = undefined;\n this.busyDialogRef?.detach();\n this.busyComponentRef?.destroy();\n this.busyComponentRef = undefined;\n }, 500);\n }\n\n /**\n * Shows or updates the busy overlay.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\n * @param type - Visual style of the overlay. Defaults to `'bar'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created, `false` if an existing one was updated.\n */\n setBusy(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n type: 'bar' | 'spinner' | 'wait' | 'hourglass' = 'bar',\n action?: Observable<unknown>\n ): boolean {\n // Cancel any pending clearBusy() detach: it must never kill this overlay\n clearTimeout(this.clearBusyTimer);\n this.clearBusyTimer = undefined;\n const exists = this.busyDialogRef?.hasAttached();\n if (exists) {\n this.busyComponentRef?.instance.set(message, progress, progressMode, type); // update existing\n } else {\n // Open new\n if (!this.busyDialogRef) {\n this.busyDialogRef = this.createBusy();\n }\n this.busyComponentRef = this.busyDialogRef.attach(new ComponentPortal(BusyDialogComponent));\n this.busyComponentRef.instance.set(message, progress, progressMode, type);\n if (action) {\n action\n .pipe(first())\n .subscribe(() => {\n this.clearBusy();\n });\n }\n }\n return !exists;\n }\n\n /**\n * Shows or updates the busy overlay using the progress-bar style.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress bar mode. Defaults to `'indeterminate'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busy(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, progress, progressMode, 'bar', action);\n }\n\n \n /**\n * Returns a `BusyTimer` that shows the busy overlay after a debounce delay.\n * @param message - Text to display. Defaults to `'Operazione in corso...'`.\n * @param due - Delay in milliseconds before the overlay appears. Defaults to `100`.\n * @returns A `BusyTimer` that must be disposed with `clear()` when the operation ends.\n */\n busyTimer(message: string = \"Operazione in corso...\", due: number = 100): BusyTimer {\n return new BusyTimer(this, due, message);\n }\n\n\n /**\n * Shows or updates the busy overlay using the hourglass style.\n * @param message - Text to display inside the overlay.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busyHourglass(\n message: string,\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, -1, 'indeterminate', 'hourglass', action);\n }\n\n /**\n * Shows or updates the busy overlay using the spinner style.\n * @param message - Text to display inside the overlay.\n * @param progress - Progress value (`-1` = indeterminate). Defaults to `-1`.\n * @param progressMode - Progress mode. Defaults to `'indeterminate'`.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n busySpinner(\n message: string,\n progress: number = -1,\n progressMode: 'determinate' | 'indeterminate' = 'indeterminate',\n action?: Observable<unknown>\n ): boolean {\n return this.setBusy(message, progress, progressMode, 'spinner', action);\n }\n\n /**\n * Shows a minimal wait spinner overlay.\n * @param action - Optional observable; the overlay is dismissed when it emits.\n * @returns `true` if a new overlay was created.\n */\n wait(action?: Observable<unknown>): boolean {\n return this.setBusy('', -1, 'indeterminate', 'wait', action);\n }\n\n\n /**\n * Opens an informational dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Informazioni'`.\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\n * @param details - Optional secondary details text.\n * @param onNavigate - Optional navigation callback invoked when the user clicks a link.\n * @returns The dialog reference, or `null` outside the browser.\n */\n info(\n message: string,\n title: string = 'Informazioni',\n okCaption: string = 'Ok',\n width: number = 500,\n dismissAfter?: number,\n details?: string,\n onNavigate?: (url: string) => void\n ): MatDialogRef<InfoDialogComponent> | null {\n this.clearBusy();\n return this.open(InfoDialogComponent, {\n ariaLabel: 'informazioni',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n okCaption,\n dismissAfter,\n details,\n onNavigate,\n appearance: this.appearance()\n } as InfoDialogData,\n closeOnNavigation: false,\n \n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n /**\n * Opens an error dialog. If one is already open, its content is updated in place.\n * @param message - HTML error message to display.\n * @param log - Optional technical log / stack trace shown in the details panel.\n * @param title - Dialog title. Defaults to `'Errore'`.\n * @param okCaption - Confirmation button label. Defaults to `'Ok'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param dismissAfter - Auto-close delay in milliseconds (optional).\n * @returns The dialog reference, or `null` outside the browser.\n */\n error(\n message: string,\n log?: string,\n title: string = 'Errore',\n okCaption: string = 'Ok',\n width: number = 500,\n dismissAfter?: number,\n ): MatDialogRef<InfoDialogComponent> | null {\n this.clearBusy();\n if (this.errorDialogRef) {\n // Just change current error\n this.errorDialogRef.componentInstance.setData({\n message,\n title,\n details: log,\n okCaption,\n dismissAfter\n });\n return this.errorDialogRef;\n }\n const ref = this.open(InfoDialogComponent, {\n ariaLabel: 'errore',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n details: log,\n okCaption,\n dismissAfter,\n appearance: this.appearance()\n } as InfoDialogData,\n closeOnNavigation: false,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n this.errorDialogRef = ref ?? undefined;\n return ref;\n }\n\n /**\n * Shows a snack-bar toast notification.\n * @param message - HTML message to display.\n * @param duration - Visible duration in milliseconds. Defaults to `2000`.\n * @param icon - Material icon name shown beside the message. Defaults to `'check'`.\n * @param actionCaption - Optional label for the action button.\n * @returns The snack-bar reference.\n */\n toast(\n message: string,\n duration: number = 2000,\n icon: string = 'check',\n actionCaption?: string\n ): MatSnackBarRef<ToastComponent> {\n this.clearBusy();\n if (duration === -1) duration = 2000; // default\n const toastRef = this.snackBar.openFromComponent(ToastComponent, {\n duration,\n data: { message, icon, actionCaption } as ToastData\n });\n toastRef.instance.action.subscribe(() => toastRef.dismiss());\n return toastRef;\n }\n\n /**\n * Opens a confirmation dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Conferma'`.\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\n * @param otherCaption - Optional tertiary action button label.\n * @param options - Optional list of checkbox options shown to the user.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param details - Optional secondary details text.\n * @returns The dialog reference, or `null` outside the browser.\n */\n confirm(\n message: string,\n title: string = 'Conferma',\n okCaption: string = 'Si',\n cancelCaption: string = 'No',\n otherCaption?: string,\n options?: ConfirmDialogOption[],\n width: number = 500,\n details?: string\n ): MatDialogRef<ConfirmDialogComponent> | null {\n return this.open(ConfirmDialogComponent, {\n ariaLabel: 'conferma',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n okCaption,\n cancelCaption,\n otherCaption,\n options,\n details,\n appearance: this.appearance()\n } as ConfirmDialogData,\n closeOnNavigation: false,\n disableClose: true,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n /**\n * Opens a deletion-confirmation dialog.\n * @param message - HTML message to display.\n * @param title - Dialog title. Defaults to `'Attenzione'`.\n * @param confirmMode - Confirmation mode (none / checkbox / type-to-confirm). Defaults to `None`.\n * @param okCaption - Primary action button label. Defaults to `'Si'`.\n * @param cancelCaption - Cancel button label. Defaults to `'No'`.\n * @param width - Maximum dialog width in pixels. Defaults to `500`.\n * @param details - Optional secondary details text.\n * @returns The dialog reference, or `null` outside the browser.\n */\n delete(\n message: string,\n title: string = 'Attenzione',\n confirmMode: DeleteDialogConfirmMode = DeleteDialogConfirmMode.None,\n okCaption: string = 'Si',\n cancelCaption: string = 'No',\n width: number = 500,\n details?: string\n ): MatDialogRef<DeleteDialogComponent> | null {\n return this.open(DeleteDialogComponent, {\n ariaLabel: 'attenzione',\n autoFocus: 'dialog',\n restoreFocus: false,\n data: {\n message,\n title,\n confirmMode,\n okCaption,\n cancelCaption,\n details,\n appearance: this.appearance()\n } as DeleteDialogData,\n closeOnNavigation: false,\n disableClose: true,\n minWidth: '375px',\n maxWidth: `${width}px`,\n width: '100%'\n });\n }\n\n}\n\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { PasswordStrength, SystemUtils } from '@arsedizioni/ars-utils/core';\r\n\r\nconst DEFAULT_STRENGTH: PasswordStrength = { score: 0, label: '', color: '', suggestions: [], isValid: false };\r\n\r\n/**\r\n * Displays a password-strength indicator for the provided password string.\r\n * Uses `SystemUtils.calculatePasswordStrength` to derive the score and label.\r\n */\r\n@Component({\r\n selector: 'password-strength',\r\n templateUrl: './password-strength.component.html',\r\n styleUrl: './password-strength.component.scss',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatTooltipModule]\r\n})\r\nexport class PasswordStrengthComponent {\r\n /** The password to evaluate. An empty string renders the default (score 0) state. */\r\n readonly password = input<string>('');\r\n\r\n /**\r\n * Computed strength result for the current password.\r\n * Falls back to `DEFAULT_STRENGTH` when the password is empty.\r\n */\r\n protected readonly strength = computed<PasswordStrength>(() => {\r\n const pwd = this.password();\r\n return pwd ? SystemUtils.calculatePasswordStrength(pwd) : DEFAULT_STRENGTH;\r\n });\r\n\r\n /**\r\n * CSS class applied to the label element based on the numeric score (1–6 bands).\r\n * Scores ≤ 2 → `'score-2'`, ≤ 3 → `'score-3'`, etc.\r\n */\r\n protected readonly scoreClass = computed<string>(() => {\r\n const score = this.strength().score;\r\n if (score <= 2) return 'score-2';\r\n if (score <= 3) return 'score-3';\r\n if (score <= 4) return 'score-4';\r\n if (score <= 5) return 'score-5';\r\n return 'score-6';\r\n });\r\n}\r\n","<div class=\"wide x-small bold\" style=\"white-space: nowrap; padding-top:4px\" [matTooltip]=\"strength().suggestions?.join('\\n ')\">\r\n <span [class]=\"scoreClass()\">{{strength().label}}</span>\r\n</div>","import { Component, ElementRef, computed, forwardRef, signal, viewChildren, ChangeDetectionStrategy } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, FormsModule, ValidationErrors, Validator } from '@angular/forms';\n\n\n@Component({\n selector: 'otp-input',\n standalone: true,\n imports: [FormsModule],\n templateUrl: './otp-input.component.html',\n styleUrl: './otp-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OtpInputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OtpInputComponent),\n multi: true,\n },\n ],\n})\nexport class OtpInputComponent implements ControlValueAccessor, Validator {\n /** Signal-based query for all individual OTP digit input elements. */\n readonly otpFields = viewChildren<ElementRef<HTMLInputElement>>('otpField');\n\n /** `true` when every digit slot contains a valid single decimal digit. */\n readonly isValid = computed(() => this.otpArray().every(d => /^\\d$/.test(d)));\n\n /** Array of per-digit values backing the OTP display. */\n readonly otpArray = signal<string[]>(Array(6).fill(''));\n\n /** Whether the control is currently disabled. */\n readonly disabled = signal<boolean>(false);\n\n private onChange: (val: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n // ── ControlValueAccessor ───────────────────────────────────────────────────\n\n /**\n * Writes a new value into the control from the model.\n * @param value - A string of up to 6 digits to pre-fill the OTP fields.\n */\n writeValue(value: string): void {\n const arr = Array(6).fill('');\n if (value) {\n value.split('').forEach((c, i) => {\n if (i < 6) arr[i] = c;\n });\n }\n this.otpArray.set(arr);\n }\n\n /**\n * Registers the callback invoked when the control value changes.\n * @param fn - The callback function.\n */\n registerOnChange(fn: (val: string) => void): void {\n this.onChange = fn;\n }\n\n /**\n * Registers the callback invoked when the control is touched.\n * @param fn - The callback function.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * Enables or disables the control.\n * @param isDisabled - `true` to disable all OTP inputs.\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled.set(isDisabled);\n }\n\n // ── Validator ──────────────────────────────────────────────────────────────\n\n /**\n * Validates the OTP value: an empty code is left to `required`, while a\n * PARTIAL code (e.g. \"12\") is reported as invalid. Without this, the joined\n * value \"12\" was a non-empty string and `required` let the form submit\n * with an incomplete OTP.\n * @param control - The form control bound to this component.\n * @returns `null` when empty or complete (6 digits), `{ otp: true }` otherwise.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n const value: string = control.value ?? '';\n if (value.length === 0) return null; // let `required` handle emptiness\n return /^\\d{6}$/.test(value) ? null : { otp: true };\n }\n\n /**\n * Marks the control as touched when an OTP field loses focus.\n */\n onBlur(): void {\n this.onTouched();\n }\n\n // ── Event handlers ─────────────────────────────────────────────────────────\n\n /**\n * Blocks non-digit characters before they are inserted.\n * @param event - The `beforeinput` event from the input element.\n */\n onBeforeInput(event: InputEvent): void {\n if (event.data && !/^\\d$/.test(event.data)) {\n event.preventDefault();\n }\n }\n\n /**\n * Handles digit input, updates the OTP array, and advances focus.\n * @param event - The `input` event from the digit field.\n * @param index - Zero-based index of the field that received input.\n */\n onInput(event: Event, index: number): void {\n let val = (event.target as HTMLInputElement).value;\n val = val.replace(/\\D/g, '').slice(-1);\n\n const arr = [...this.otpArray()];\n arr[index] = val;\n this.otpArray.set(arr);\n\n this.updateModel();\n\n if (val && index < 5) {\n this.focusField(index + 1);\n }\n }\n\n /**\n * Handles the Backspace key by moving focus to the previous field when the current one is empty.\n * @param event - The `keydown` event.\n * @param index - Zero-based index of the field that received the keydown.\n */\n onKeyDown(event: KeyboardEvent, index: number): void {\n if (event.key === 'Backspace' && !this.otpArray()[index] && index > 0) {\n this.focusField(index - 1);\n }\n }\n\n /**\n * Handles paste events by extracting up to 6 digits and distributing them across the OTP fields.\n * @param event - The `ClipboardEvent` from the paste action.\n */\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const pasted = event.clipboardData?.getData('text') ?? '';\n const digits = pasted.replace(/\\D/g, '').slice(0, 6).split('');\n\n if (digits.length > 0) {\n const arr = Array(6).fill('');\n digits.forEach((d, i) => (arr[i] = d));\n this.otpArray.set(arr);\n this.updateModel();\n this.focusField(Math.min(digits.length, 5));\n }\n }\n\n /**\n * Moves focus to the OTP field at the given index.\n * @param index - Zero-based index of the target field.\n */\n private focusField(index: number): void {\n const field = this.otpFields()[index];\n field?.nativeElement.focus();\n field?.nativeElement.select();\n }\n\n /**\n * Notifies the form model of the current OTP value and marks the control as touched.\n */\n private updateModel(): void {\n const code = this.otpArray().join('');\n this.onChange(code);\n this.onTouched();\n }\n}\n","<div class=\"otp-container\">\n @for (digit of otpArray(); track $index) {\n <input\n #otpField\n type=\"text\"\n maxlength=\"1\"\n inputmode=\"numeric\"\n pattern=\"[0-9]*\"\n class=\"otp-box\"\n [value]=\"digit\"\n (beforeinput)=\"onBeforeInput($event)\"\n (input)=\"onInput($event, $index)\"\n (keydown)=\"onKeyDown($event, $index)\"\n (blur)=\"onBlur()\"\n (paste)=\"onPaste($event)\"\n [disabled]=\"disabled()\"\n required\n />\n }\n</div>\n\n","import { Component, inject, output, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { CredentialsDialogResult } from '../../definitions';\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexModule } from '../../directives/flex';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule } from '@angular/forms';\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { OtpInputComponent } from '../../components/otp/otp-input.component';\n\nexport interface CredentialsDialogData {\n title?: string;\n message?: string;\n remember?: boolean;\n recoverPassword?: boolean;\n recoverPasswordUrl?: string;\n user?: string;\n okCaption?: string;\n mode?: 'email' | 'user' | 'otp';\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './credentials-dialog.component.html',\n styleUrl: './credentials-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatCheckboxModule,\n MatDialogActions,\n FlexModule,\n MatButtonModule,\n MatDialogClose,\n PasswordStrengthComponent,\n OtpInputComponent,\n SafeHtmlPipe,\n ],\n})\nexport class CredentialsDialogComponent {\n /** Emitted when the user submits the form. Carries the entered credentials. */\n readonly done = output<CredentialsDialogResult>();\n\n /** Emitted when the user requests a password-recovery flow. */\n readonly recoveringPassword = output<CredentialsDialogResult>();\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<CredentialsDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null) ?? {};\n const data: CredentialsDialogData = {\n appearance: 'fill',\n title: 'Informazioni',\n okCaption: 'Salva',\n mode: 'email',\n ...raw,\n };\n data.appearance ??= 'fill';\n data.title ??= 'Informazioni';\n data.okCaption ??= 'Salva';\n data.mode ??= 'email';\n if (data.mode === 'otp' && !data.message) {\n data.message = '<div class=\"small\">Inserisci il codice di verifica di 6 cifre che ti abbiamo inviato ora per email<br><span class=\"x-small\">(controlla anche la posta indesiderata)</span>.</div>';\n }\n return data;\n })());\n\n /** Current form model, pre-filled with the user name from dialog data when provided. */\n protected item: CredentialsDialogResult = {\n user: (inject(MAT_DIALOG_DATA) as CredentialsDialogData | null)?.user,\n };\n\n /** Whether the password field is currently shown as plain text. */\n protected readonly showPassword = signal<boolean>(false);\n\n /**\n * Switches the input mode of the dialog at runtime (e.g. from login to OTP).\n * Intended to be called from outside via the dialog component reference.\n * @param mode - The new input mode (`'email'`, `'user'`, or `'otp'`).\n * @param message - Optional new message to display above the form.\n */\n public changeMode(mode: 'email' | 'user' | 'otp', message?: string): void {\n this.dialogData.update(d => ({\n ...d,\n mode,\n message: message ?? d.message,\n }));\n }\n\n /**\n * Emits the current form result and closes the dialog.\n */\n protected ok(): void {\n this.done.emit(this.item);\n }\n\n /**\n * Emits the current form result for the password-recovery flow and optionally\n * opens the recovery URL in a new tab.\n */\n protected recoverPassword(): void {\n this.recoveringPassword.emit(this.item);\n const url = this.dialogData().recoverPasswordUrl;\n if (url) {\n window.open(url, '_blank');\n }\n }\n}\n\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<div mat-dialog-title [innerHTML]=\"dialogData().title | safeHtml\"></div>\r\n<mat-dialog-content>\r\n @if (dialogData().message) {\r\n <div [innerHtml]=\"dialogData().message | safeHtml\" style=\"padding-bottom: 20px;\"></div>\r\n }\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n @if(dialogData().mode !== 'otp') {\r\n @if (dialogData().mode === 'email') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.user\" name=\"email\" #email=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email'\">\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n } @else if (dialogData().mode === 'user') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Utente</mat-label>\r\n <input matInput [(ngModel)]=\"item.user\" name=\"user\" #user=\"ngModel\" required [attr.aria-label]=\"'user'\">\r\n @if (user.invalid) {\r\n <mat-error>Obbligatorio.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>La tua password abilitata</mat-label>\r\n <input matInput name=\"password\" #password=\"ngModel\" [type]=\"!showPassword() ? 'password' : 'text'\"\r\n [(ngModel)]=\"item.password\" required [attr.aria-label]=\"'La tua password abilitata'\" autocomplete=\"on\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint>Attento a maiuscole e minuscole</mat-hint>\r\n @if (password.invalid) {\r\n <mat-error>Password non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n @if (dialogData().remember || dialogData().recoverPassword) {\r\n <div fxLayout=\"row\" fxLayoutGap=\"20px\" fxFill style=\"margin-top: 20px;\">\r\n <div>\r\n @if (dialogData().remember) {\r\n <mat-checkbox fxFlexAlign=\"center\" [(ngModel)]=\"item.rememberMe\" name=\"rememberMe\"> Ricordami</mat-checkbox>\r\n }\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n @if (dialogData().recoverPassword) {\r\n <button fxFlexAlign=\"center\" mat-button (click)=\"recoverPassword()\" title=\"Recupero password\"\r\n >Non riesco ad accedere</button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n } @else {\r\n <otp-input name=\"otp\" [(ngModel)]=\"item.code\" required></otp-input>\r\n }\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">{{dialogData().okCaption}}</button>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n </div>\r\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component, inject, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle } from '@angular/material/dialog';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FlexModule } from '../../directives/flex';\nimport { RecoverPasswordDialogResult } from '../../definitions';\n\nexport interface RecoverPasswordDialogData {\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './recover-password-dialog.component.html',\n styleUrl: './recover-password-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatDialogActions,\n FlexModule,\n MatDialogClose,\n ],\n})\nexport class RecoverPasswordDialogComponent {\n\n /** Emitted when the user submits the recovery request. Carries the entered email and recaptcha state. */\n readonly done = output<RecoverPasswordDialogResult>();\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<RecoverPasswordDialogData>({\n appearance: 'fill',\n ...((inject(MAT_DIALOG_DATA) as RecoverPasswordDialogData | null) ?? {}),\n });\n\n /** Current form model bound to the template inputs. */\n protected item: RecoverPasswordDialogResult = {\n email: '',\n recaptcha: false,\n };\n\n /**\n * Emits the current form result to trigger the password-recovery flow.\n */\n protected ok(): void {\n this.done.emit(this.item);\n }\n}\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<div mat-dialog-title>Per quale ragione non sei in grado di effettuare l'accesso?</div>\r\n<mat-dialog-content>\r\n\r\n <b>1. Ho dimenticato la password</b>\r\n <p>\r\n Puoi recuperarla facilmente inserendo l'email a cui la password è collegata. Non è possibile recuperare password\r\n aziendali (non collegate ad un email).</p>\r\n <form name=\"form\" #f=\"ngForm\" (keyup.Enter)=\"!f.form.invalid ? ok() : null\" novalidate>\r\n\r\n <mat-form-field style=\"width:100%\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email con cui ti sei registrato</mat-label>\r\n <input type=\"email\" matInput name=\"email\" #email=\"ngModel\" [(ngModel)]=\"item.email\" required email\r\n maxlength=\"200\" />\r\n @if (email.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <div style=\"margin-top:20px; margin-bottom:20px;\">\r\n <button type=\"button\" mat-flat-button (click)=\"ok()\" [disabled]=\"f.form.invalid\"\r\n aria-label=\"Recupera password\">Recupera password</button>\r\n </div>\r\n </form>\r\n <p></p>\r\n <b>2. Il sistema mi dice che la password non è corretta.</b>\r\n <p>\r\n E' molto probabile che ci sia stato un difetto di digitazione. Per favore controlla bene che non vi siano spazi non\r\n richiesti e che la password rispetti perfettamente le maiuscole e minuscole. Nel caso in cui la digitazione fosse\r\n corretta, verifica che la data del tuo abbonamento non sia scaduta.\r\n </p>\r\n <p></p>\r\n <b>3. Il sistema mi dice che non può accettare connessioni dal mio indirizzo IP</b>\r\n <p>\r\n Il tuo abbonamento è stato vincolato ad un indirizzo IP (indirizzo dal quale ti colleghi). Capita sovente che\r\n questi indirizzi siano cambiati da parte del reparto IT per questioni di sicurezza informatica.\r\n Per risolvere il problema, contattate il reparto IT e fatevi dire qual'è il nuovo indirizzo IP e comunicatelo ad\r\n ARS Edizioni Informatiche.\r\n </p>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutAlign=\"end\" fxFill>\r\n <button mat-stroked-button [mat-dialog-close]=\"true\" >Chiudi</button>\r\n </div>\r\n</mat-dialog-actions>","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n output,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatFormFieldAppearance, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { EqualsValidatorDirective, PasswordValidatorDirective, SystemUtils } from '@arsedizioni/ars-utils/core';\nimport { FlexModule } from '../../directives/flex';\nimport { ResetPasswordDialogResult } from '../../definitions';\nimport { DialogService } from '../../services/dialog.service';\nimport { PasswordStrengthComponent } from '../../components/password-strength/password-strength.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n\nexport type ResetPasswordDialogMode = 'admin' | 'change' | 'forgot';\n\nexport interface ResetPasswordDialogData {\n mode: ResetPasswordDialogMode;\n userId?: number;\n userEmail?: string;\n appearance?: MatFormFieldAppearance;\n}\n\n@Component({\n templateUrl: './reset-password-dialog.component.html',\n styleUrl: './reset-password-dialog.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n FormsModule,\n FlexModule,\n MatFormFieldModule,\n MatInputModule,\n PasswordValidatorDirective,\n PasswordStrengthComponent,\n EqualsValidatorDirective,\n MatIconModule,\n MatDialogActions,\n MatButtonModule,\n MatDialogClose,\n ],\n})\nexport class ResetPasswordDialogComponent {\n /** Emitted when the user submits the new password. Carries the entered password data. */\n readonly done = output<ResetPasswordDialogResult>();\n\n private readonly dialogService = inject(DialogService);\n private readonly dialogRef = inject(MatDialogRef<ResetPasswordDialogComponent>);\n\n /** Dialog configuration with defaults applied at construction time. */\n protected readonly dialogData = signal<ResetPasswordDialogData>((() => {\n const raw = (inject(MAT_DIALOG_DATA) as ResetPasswordDialogData | null);\n return { mode: 'admin' as ResetPasswordDialogMode, appearance: 'fill' as MatFormFieldAppearance, ...raw };\n })());\n\n /** Current form model bound to the template inputs. */\n protected item: ResetPasswordDialogResult = {};\n\n /** Whether the old-password field is currently shown as plain text. */\n protected readonly showOldPassword = signal<boolean>(false);\n\n /** Whether the new-password field is currently shown as plain text. */\n protected readonly showPassword = signal<boolean>(false);\n\n /** Whether the confirm-password field is currently shown as plain text. */\n protected readonly showPassword2 = signal<boolean>(false);\n\n constructor() {\n const data = this.dialogData();\n if (data.mode !== 'forgot' && !data.userId) {\n this.dialogRef.close();\n this.dialogService.error('Utente non specificato.');\n return;\n }\n if (data.mode === 'forgot' && !data.userEmail) {\n this.dialogRef.close();\n this.dialogService.error('Email utente non specificata.');\n return;\n }\n this.item.userEmail = data.userEmail;\n this.item.userId = data.userId;\n }\n\n /**\n * Emits the current form result to trigger the password-reset flow.\n */\n protected ok(): void {\n this.done.emit(this.item);\n }\n\n /**\n * Generates a random password and populates both password fields with it.\n */\n protected generatePassword(): void {\n const password = SystemUtils.generatePassword();\n this.item.password = password;\n this.item.password2 = password;\n }\n}\n\n\n","<div class=\"dialog-info\">\r\n @if (f.form.invalid) {\r\n <span class=\"dialog-info-error\">Ci sono ancora dei campi obbligatori (*) non compilati.</span>\r\n } @else {\r\n <span class=\"dialog-info-ok\">Tutti i campi obbligatori (*) sono compilati.</span>\r\n }\r\n</div>\r\n<div mat-dialog-title>Reimposta password</div>\r\n<mat-dialog-content>\r\n <form name=\"form\" #f=\"ngForm\" novalidate>\r\n @if (dialogData().mode === 'forgot') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Email che hai scelto quando ti sei registrato</mat-label>\r\n <input type=\"email\" matInput [(ngModel)]=\"item.userEmail\" name=\"userEmail\" #userEmail=\"ngModel\" email required\r\n [attr.aria-label]=\"'Email con cui ti sei registrato'\">\r\n @if (userEmail.invalid) {\r\n <mat-error>Email non valida.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n @if (dialogData().mode !== 'admin') {\r\n <mat-form-field style=\"width: 100%;\" [appearance]=\"dialogData().appearance\">\r\n <mat-label>Vecchia password</mat-label>\r\n <input [type]=\"!showOldPassword() ? 'password' : 'text'\" matInput name=\"oldPwd\" autocomplete=\"on\"\r\n [(ngModel)]=\"item.oldPassword\" required maxlength=\"30\" #oldPwd=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix\r\n (click)=\"showOldPassword.set(!showOldPassword())\">\r\n <mat-icon>{{showOldPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.oldPassword) {\r\n <password-strength [password]=\"item.oldPassword\"></password-strength>\r\n }\r\n @if (oldPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Nuova password</mat-label>\r\n <input [type]=\"!showPassword() ? 'password' : 'text'\" matInput name=\"newPwd\" [(ngModel)]=\"item.password\" required\r\n password minlength=\"10\" maxlength=\"30\" #newPwd=\"ngModel\">\r\n @if(item.password) {\r\n <password-strength [password]=\"item.password\"></password-strength>\r\n }\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword.set(!showPassword())\">\r\n <mat-icon>{{showPassword() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n <mat-hint align=\"end\">{{newPwd.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n <mat-form-field style=\"width: 100%;\" hintLabel=\"Minimo 10 car. con 1 simbolo e 1 maiuscola\"\r\n [appearance]=\"dialogData().appearance\">\r\n <mat-label>Conferma nuova password</mat-label>\r\n <input [type]=\"!showPassword2() ? 'password' : 'text'\" matInput name=\"newPwd2\" [(ngModel)]=\"item.password2\"\r\n [required]=\"dialogData().mode !== 'admin'\" password minlength=\"10\" maxlength=\"30\" [equals]=\"newPwd.control\" #newPwd2=\"ngModel\">\r\n <button type=\"button\" mat-icon-button class=\"toolbar-suffix\" matSuffix (click)=\"showPassword2.set(!showPassword2())\">\r\n <mat-icon>{{showPassword2() ? 'visibility' : 'visibility_off'}}</mat-icon>\r\n </button>\r\n @if(item.password2) {\r\n <password-strength [password]=\"item.password2\"></password-strength>\r\n }\r\n <mat-hint align=\"end\">{{newPwd2.value?.length || 0}}/30</mat-hint>\r\n @if (newPwd2.invalid) {\r\n <mat-error>Non valido.</mat-error>\r\n }\r\n </mat-form-field>\r\n </form>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill>\r\n <div fxFlex=\"30\">\r\n @if (dialogData().mode === 'admin') {\r\n <button mat-stroked-button (click)=\"generatePassword()\">Genera</button>\r\n }\r\n </div>\r\n <div fxFlex=\"70\" fxLayoutAlign=\"end\">\r\n <button mat-flat-button [disabled]=\"f.form.invalid\" (click)=\"ok()\">Salva</button>\r\n @if (dialogData().mode !== 'forgot') {\r\n <button mat-stroked-button [mat-dialog-close]=\"true\">Annulla</button>\r\n }\r\n </div>\r\n </div>\r\n</mat-dialog-actions>","/*\r\n * Public API Surface of scm-utils\r\n */\r\nexport * from './ui/definitions';\r\nexport * from './ui/paginatorIntl';\r\nexport * from './ui/services/index';\r\nexport * from './ui/dialogs/index';\r\nexport * from './ui/components/index';\r\nexport * from './ui/directives/flex/index';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["toBool","normalizeGap","i1.FxLayoutDirective","i2.FxLayoutAlignDirective","i3.FxFlexFillDirective","i2.FxFlexDirective","i3.FxLayoutAlignDirective","i4.FxLayoutGapDirective","i5.FxFlexFillDirective","i6","i7","i9","i10","i1","i4","i5","i6.FxLayoutDirective","i7.FxLayoutAlignDirective","i8.FxLayoutGapDirective","i9.FxFlexAlignDirective","i9.FxFlexFillDirective","i2.FxLayoutDirective","i3.FxFlexDirective","i4.FxLayoutAlignDirective","i5.FxLayoutGapDirective","i6.FxFlexFillDirective","i8"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;AAEM,MAAO,aAAc,SAAQ,gBAAgB,CAAA;AADnD,IAAA,WAAA,GAAA;;QAEW,IAAA,CAAA,iBAAiB,GAAG,qBAAqB;QACzC,IAAA,CAAA,aAAa,GAAO,iBAAiB;QACrC,IAAA,CAAA,iBAAiB,GAAG,mBAAmB;QACvC,IAAA,CAAA,aAAa,GAAO,eAAe;QACnC,IAAA,CAAA,cAAc,GAAM,cAAc;AAE3C;;;;;;AAMG;QACM,IAAA,CAAA,aAAa,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc,KAAY;AAClF,YAAA,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;AACjB,gBAAA,OAAO,iBAAiB;YAC1B;YACA,IAAI,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAClC,OAAO,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE;YACzB;YACA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ;;AAElC,YAAA,MAAM,QAAQ,GACZ,UAAU,GAAG;kBACT,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE,WAAW;AAC7C,kBAAE,UAAU,GAAG,QAAQ;YAC3B,OAAO,CAAA,EAAG,UAAU,GAAG,CAAC,MAAM,QAAQ,CAAA,IAAA,EAAO,WAAW,CAAA,CAAE;AAC5D,QAAA,CAAC;AACF,IAAA;8GA9BY,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACJD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AAKI,MAAM,sBAAsB,GAA2B;;IAE5D,IAAI,EAAQ,WAAW,CAAC,MAAM;IAC9B,IAAI,EAAQ,WAAW,CAAC,KAAK;IAC7B,IAAI,EAAQ,WAAW,CAAC,MAAM;IAC9B,IAAI,EAAQ,WAAW,CAAC,KAAK;IAC7B,IAAI,EAAQ,WAAW,CAAC,MAAM;;AAG9B,IAAA,OAAO,EAAK,oBAAoB;AAChC,IAAA,OAAO,EAAK,oBAAoB;AAChC,IAAA,OAAO,EAAK,qBAAqB;AACjC,IAAA,OAAO,EAAK,qBAAqB;;AAGjC,IAAA,OAAO,EAAK,oBAAoB;AAChC,IAAA,OAAO,EAAK,oBAAoB;AAChC,IAAA,OAAO,EAAK,qBAAqB;AACjC,IAAA,OAAO,EAAK,qBAAqB;;AAGjC,IAAA,SAAS,EAAG,uBAAuB;AACnC,IAAA,SAAS,EAAG,wBAAwB;AACpC,IAAA,SAAS,EAAG,wBAAwB;;;AAIpC,IAAA,OAAO,EAAK,uBAAuB;;AAEnC,IAAA,OAAO,EAAK,uBAAuB;;AAEnC,IAAA,OAAO,EAAK,wBAAwB;;AAEpC,IAAA,OAAO,EAAK,wBAAwB;;IAGpC,SAAS,EAAa,WAAW,CAAC,OAAO;IACzC,QAAQ,EAAc,WAAW,CAAC,MAAM;IACxC,KAAK,EAAiB,WAAW,CAAC,GAAG;IACrC,kBAAkB,EAAI,WAAW,CAAC,eAAe;IACjD,iBAAiB,EAAK,WAAW,CAAC,cAAc;IAChD,cAAc,EAAQ,WAAW,CAAC,WAAW;IAC7C,mBAAmB,EAAG,WAAW,CAAC,gBAAgB;IAClD,kBAAkB,EAAI,WAAW,CAAC,eAAe;IACjD,eAAe,EAAO,WAAW,CAAC,YAAY;CAC/C;AAED;;;;AAIG;AACI,MAAM,eAAe,GAA2B;AAEvD;MACa,kBAAkB,GAAG,IAAI,cAAc,CAClD,oBAAoB,EACpB,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,EAAE;AAG/D;AACO,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAG9D;;;;;;AAMG;AACI,MAAM,cAAc,GAAG;IAC5B,EAAE,EAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAC1C,IAAA,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IACvC,EAAE,EAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;IAC1C,EAAE,EAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;;;AC/G5C;;;;;;;;;;;;;;;;;;;AAmBG;MASU,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/B,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEhD;;;;;;AAMG;QACM,IAAA,CAAA,UAAU,GAAgC,IAAI,CAAC;AACrD,aAAA,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,aAAA,IAAI,CACH,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,EAC1B,oBAAoB,EAAE;AACtB,QAAA,WAAW,CAAC,CAAC,CAAC;SACf;AAEH;;;;AAIG;AACM,QAAA,IAAA,CAAA,SAAS,GAA4B,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE;AACtE,YAAA,YAAY,EAAE,IAAI,CAAC,QAAQ;AAC5B,SAAA,CAAC;AAqCH,IAAA;AAnCC;;;;;;;;AAQG;AACH,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;IACjC;AAEA;;;;AAIG;AACH,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAC/B,oBAAoB,EAAE,CACvB;IACH;;IAGQ,QAAQ,GAAA;AACd,QAAA,KAAK,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,gBAAA,OAAO,iBAAiB,CAAC,CAAC,CAAC;YAC7B;QACF;AACA,QAAA,OAAO,IAAI;IACb;8GA9DW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;AC3BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;MAYU,aAAa,CAAA;AAqBxB,IAAA,WAAA,GAAA;AApBiB,QAAA,IAAA,CAAA,GAAG,GAAK,MAAM,EAAC,WAAoB,EAAC;AACpC,QAAA,IAAA,CAAA,GAAG,GAAK,MAAM,CAAC,gBAAgB,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;;QAGrC,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAC,QAAQ;iFAAU;;AAEpC,QAAA,IAAA,CAAA,QAAQ,GAAI,KAAK;gGAAwB;AAEjC,QAAA,IAAA,CAAA,QAAQ,GAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;qFAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;sFAAC;;QAKM,IAAA,CAAA,YAAY,GAAgC,IAAI;QAGtD,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAI,IAAI,CAAC,SAAS,EAAE;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,MAAM,IAAI,GAA6B,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM;YAClF,MAAM,OAAO,GACX,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,MAAM,GAAG,OAAQ,GAAG,IAAI;;;YAIhE,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY;gBAAE;AAE9D,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;YAChB,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACtC;AACA,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO;AAC7B,QAAA,CAAC,CAAC;IACJ;8GAxCW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACvCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAWH;AACO,MAAM,WAAW,GAAG,IAAI,GAAG,CAChC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAGzC;;;;AAIG;AACI,MAAM,sBAAsB,GAAG;;AAEpC,IAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;;AAElC,IAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;;IAElC,SAAS,EAAE,SAAS,EAAE,SAAS;;AAE/B,IAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;;AAGpC;AACA;AACA;AAEA;;;;;;;;;AASG;AACG,SAAU,OAAO,CACrB,MAAmB,EACnB,SAA0B,EAAA;;AAG1B,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,SAA8B,CAAC;IACpD,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;;AAGrC,IAAA,MAAM,GAAG,GAAI,MAAwC,CAAC,SAAS,CAAC;IAChE,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,GAAG;;IAGjC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AAC3C,IAAA,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAsB,CAAC;QAC3D,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,CAAC;IAC/B;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;;;AAGG;AACG,SAAU,mBAAmB,CACjC,EAAe,EACf,QAAoC,EAAA;AAEpC,IAAA,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE;AAC1C,QAAA,MAAM,CAAC,GAAI,EAAoC,CAAC,KAAK,CAAC;AACtD,QAAA,IAAI,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC;IAClD;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;;;;;;;AAOG;AACG,SAAU,UAAU,CACxB,SAAsB,EACtB,YAAyB,EACzB,SAA0B,EAC1B,QAAoC,EAAA;AAEpC,IAAA,OAAO,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;AACrF;AAEA;MAGsB,uBAAuB,CAAA;AAD7C,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,EAAE,GAAQ,MAAM,EAAC,UAAuB,EAAC;AACzC,QAAA,IAAA,CAAA,EAAE,GAAQ,MAAM,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAK,MAAM,CAAC,aAAa,CAAC;;QAG/B,IAAA,CAAA,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAUtE,IAAA;;IAPW,YAAY,CAAC,IAAY,EAAE,KAAoB,EAAA;QACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC;QAClD;aAAO;AACL,YAAA,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;QACtD;IACF;8GAfoB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAD5C;;;ACrID;;;;;;;;;;;;;;;;AAgBG;AAKI,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB;AAC9E,MAAM,MAAM,GAAG,QAAQ;AAEvB;AACM,SAAU,iBAAiB,CAAC,KAAa,EAAA;IAC7C,IAAI,KAAK,EAAE;AACT,QAAA,QAAQ,KAAK,CAAC,WAAW,EAAE;AACzB,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,cAAc;AACnB,YAAA,KAAK,cAAc;AACjB,gBAAA,OAAO,cAAc;AACvB,YAAA,KAAK,IAAI;AACT,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;AACA,IAAA,OAAO,KAAK;AACd;AAEA;AACM,SAAU,mBAAmB,CAAC,KAAa,EAAA;AAC/C,IAAA,KAAK,GAAG,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;AAClC,IAAA,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1D,IAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AAAE,QAAA,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC;AAC3E,IAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,QAAA,IAAI,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE;QACtC,MAAM,GAAG,MAAM;IACjB;;;AAGA,IAAA,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;AAC7D;AAEA;AACM,SAAU,cAAc,CAAC,KAAa,EAAA;AAC1C,IAAA,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC;IAC5D,OAAO;QACL,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;AAC1C,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,IAAI,IAAI;KACtB;AACH;AAEA;;;;;AAKG;SACa,iBAAiB,CAC/B,IAAiB,EACjB,YAAsC,EACtC,SAAkB,EAAA;IAElB,IAAI,YAAY,IAAI,YAAY,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,EAAE;QACnE,OAAO;AACL,YAAA,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE;AACnC,YAAA,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK;SAChE;IACH;AACA,IAAA,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;QACnC,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;QAC/C,OAAO;AACL,YAAA,SAAS,EAAE,EAAE,CAAC,aAAa,IAAI,KAAK;YACpC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK;SAC3C;IACH;IACA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AAC7C;AA4BM,MAAO,iBAAkB,SAAQ,uBAAuB,CAAA;;IA0C5D,IAAI,WAAW,GAAA,EAAkB,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAE/D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QA5CA,IAAA,CAAA,QAAQ,GAAI,KAAK,CAAS,KAAK,gFAAQ,KAAK,EAAE,UAAU,EAAA,CAAG;QAC3D,IAAA,CAAA,EAAE,GAAU,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,aAAa,EAAA,CAAG;QAC9D,IAAA,CAAA,EAAE,GAAU,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,aAAa,EAAA,CAAG;QAC9D,IAAA,CAAA,EAAE,GAAU,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,aAAa,EAAA,CAAG;QAC9D,IAAA,CAAA,EAAE,GAAU,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,aAAa,EAAA,CAAG;QAC9D,IAAA,CAAA,EAAE,GAAU,KAAK,CAAS,SAAS,0EAAI,KAAK,EAAE,aAAa,EAAA,CAAG;QAC9D,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,IAAI,GAAQ,KAAK,CAAS,SAAS,4EAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACjE,IAAA,CAAA,MAAM,GAAM,KAAK,CAAS,SAAS,8EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;QACnE,IAAA,CAAA,MAAM,GAAM,KAAK,CAAS,SAAS,8EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;QACnE,IAAA,CAAA,MAAM,GAAM,KAAK,CAAS,SAAS,8EAAI,KAAK,EAAE,kBAAkB,EAAA,CAAG;AAE3D,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAClC,mBAAmB,CAAC,UAAU,CAC5B,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;AACrE,YAAA,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAChC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YAChE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YACtF,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;AACtF,YAAA,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;AACxE,YAAA,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpD,IAAI,KAAK,CAAC;oFACZ;;AAGQ,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;sFAAC;AAC7C,QAAA,IAAA,CAAA,IAAI,GAAQ,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iFAAC;AAC7C,QAAA,IAAA,CAAA,MAAM,GAAM,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;mFAAC;QAOpD,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;;;AAG1C,YAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AAClD,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;YAC/D;AACA,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;AAC7C,YAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;AAC9C,QAAA,CAAC,CAAC;IACJ;8GAzDW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,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,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAA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,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA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AA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EA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A,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAA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AAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IA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A,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,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EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,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,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAA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EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,E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AA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA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EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,E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,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA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AAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,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,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA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,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QA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A,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA1B5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MC7CY,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,YArCf,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;AACnB,YAAA,aAAa,aAGb,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,qBAAqB;YACrB,mBAAmB;YACnB,aAAa,CAAA,EAAA,CAAA,CAAA;+GAIR,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAvCtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,sBAAsB;wBACtB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,mBAAmB;wBACnB,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,aAAa;AAChB,qBAAA;AAEJ,iBAAA;;;AC3FD;;;AAGG;MAQU,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;;QASW,IAAA,CAAA,IAAI,GAAG,MAAM,CAA2C,KAAK;iFAAC;;QAG9D,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,CAAC;qFAAC;;QAG5B,IAAA,CAAA,YAAY,GAAG,MAAM,CAAkC,eAAe;yFAAC;;QAGvE,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,EAAE;oFAAC;AAwBtC,IAAA;AAtBC;;;;;;AAMG;IACH,GAAG,CACD,OAAe,EACf,QAAgB,EAChB,YAAA,GAAgD,eAAe,EAC/D,IAAA,GAAiD,KAAK,EAAA;QAEtD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QAC3B;QACA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,aAAa,GAAG,YAAY,CAAC;IACpE;8GAlCW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBhC,wxCAmCC,EAAA,MAAA,EAAA,CAAA,+4JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnBa,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kkBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAElF,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAGM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,WACtC,CAAC,UAAU,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,wxCAAA,EAAA,MAAA,EAAA,CAAA,+4JAAA,CAAA,EAAA;;;MEcnF,sBAAsB,CAAA;AAejC,IAAA,WAAA,GAAA;;QAbS,IAAA,CAAA,OAAO,GAAG,MAAM,EAAgB;AAExB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,EAAC,YAAoC,EAAC;;QAGtD,IAAA,CAAA,UAAU,GAAG,MAAM,CAAoB;AACxD,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,IAAK,MAAM,CAAC,eAAe,CAA8B,IAAI,EAAE,CAAC;AACjE,SAAA;uFAAC;;QAIA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK;AAC3B,YAAA,GAAG,CAAC;AACJ,YAAA,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,UAAU;AAC5B,YAAA,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;AAC9B,YAAA,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;AACvC,SAAA,CAAC,CAAC;IACL;AAEA;;AAEG;IACH,EAAE,GAAA;QACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC;AACvE,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEA;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;8GA/CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,yGC9BnC,isDA4CqB,EAAA,MAAA,EAAA,CAAA,mgJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBT,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,yGAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,iBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,eAAA,EAAA,QAAA,EAAA,+aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kkBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,whBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,mbAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpG,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,gXAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEtC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,mBACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW;AACpG,wBAAA,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,isDAAA,EAAA,MAAA,EAAA,CAAA,mgJAAA,CAAA,EAAA;;;MEFvC,mBAAmB,CAAA;AAW9B,IAAA,WAAA,GAAA;AAViB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,EAAC,YAAiC,EAAC;;AAInD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAiB,CAAC,MAAK;AAC3D,YAAA,MAAM,GAAG,GAAI,MAAM,CAAC,eAAe,CAA2B,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;YACjF,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,EAAE;AAC1C,QAAA,CAAC,GAAG;uFAAC;;QAIH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC;AACpD,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrE;AAEA;;;;AAIG;AACK,IAAA,eAAe,CAAC,YAAqB,EAAA;AAC3C,QAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAC7B,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,YAAY,CAAC;QAC5E;IACF;AAEA;;;;AAIG;AACI,IAAA,OAAO,CAAC,IAAoB,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;IACzC;AAEA;;;AAGG;AACO,IAAA,QAAQ,CAAC,GAAW,EAAA;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC;IACrC;AAEA;;AAEG;AACO,IAAA,MAAM,IAAI,GAAA;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC;AAC3D,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAClE,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACnE,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG;AACX,gBAAA,IAAI,aAAa,CAAC;AAChB,oBAAA,WAAW,EAAE,QAAQ;AACrB,oBAAA,YAAY,EAAE;iBACf;aACF;AACD,YAAA,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,wBAAwB,CAAC;QACpD;QAAE,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA,+BAAA,EAAkC,GAAG,CAAA,CAAE,CAAC;QACnE;IACF;8GArEW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wEC1BhC,mjCAwBqB,EAAA,MAAA,EAAA,CAAA,mgJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDT,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,yGAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,iBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,eAAA,EAAA,QAAA,EAAA,+aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kkBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,whBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtE,eAAe,4iBAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,wTAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAErE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU;wBACtE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,mjCAAA,EAAA,MAAA,EAAA,CAAA,mgJAAA,CAAA,EAAA;;;MEJtE,cAAc,CAAA;AAP3B,IAAA,WAAA,GAAA;;QASW,IAAA,CAAA,MAAM,GAAG,MAAM,EAAQ;;AAGb,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CACnC,MAAM,CAAC,kBAAkB,CAAsB,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;uFACpE;AAQF,IAAA;AANC;;AAEG;IACO,EAAE,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;8GAdW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB3B,otBAmBM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDQ,UAAU,m1JAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEzD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAGM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,otBAAA,EAAA;;;MEd1D,SAAS,CAAA;AADtB,IAAA,WAAA,GAAA;AAGE;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAG,MAAM,CAAqB,MAAM;uFAAC;AASzD,IAAA;AAPC;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAqC,EAAA;QACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC;IACtC;8GAdW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA,CAAA;+GAAT,SAAS,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB;;;ICSW;AAAZ,CAAA,UAAY,uBAAuB,EAAA;AACjC,IAAA,uBAAA,CAAA,uBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,uBAAA,CAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,uBAAA,CAAA,uBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACZ,CAAC,EAJW,uBAAuB,KAAvB,uBAAuB,GAAA,EAAA,CAAA,CAAA;MAwBtB,qBAAqB,CAAA;AARlC,IAAA,WAAA,GAAA;;QAUW,IAAA,CAAA,OAAO,GAAG,MAAM,EAAgB;AAExB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,EAAC,YAAmC,EAAC;;AAGrD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAmB,CAAC,MAAK;YAC7D,MAAM,GAAG,GAAI,MAAM,CAAC,eAAe,CAA6B,IAAI,EAAE;YACtE,OAAO;AACL,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,uBAAuB,CAAC,IAAI;AACzC,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,GAAG,GAAG;aACP;AACH,QAAA,CAAC,GAAG;uFAAC;AAEL;;;AAGG;AACgB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CACnC,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,KAAK,uBAAuB,CAAC,MAAM;sFACjE;AAoBF,IAAA;AAfC;;AAEG;IACH,EAAE,GAAA;QACA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;8GA5CW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpClC,2lEA8CqB,EAAA,MAAA,EAAA,CAAA,mgJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbT,cAAc,+HAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,iBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,eAAA,EAAA,QAAA,EAAA,+aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kkBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,whBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpG,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,oXAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE1E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,mBACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,WAAW;wBACpG,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,2lEAAA,EAAA,MAAA,EAAA,CAAA,mgJAAA,CAAA,EAAA;;;MEH3E,SAAS,CAAA;AAGpB,IAAA,WAAA,CACmB,aAA4B,EAC7C,GAAA,GAAc,GAAG,EACjB,UAAkB,wBAAwB,EAAA;QAFzB,IAAA,CAAA,aAAa,GAAb,aAAa;AAI9B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;IAC9F;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;IAChC;AACD;AAGK,MAAO,aAAc,SAAQ,SAAS,CAAA;AAsB1C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AArBT;;;;AAIG;AACe,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU;AAE1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAMnC,IAAA,CAAA,UAAU,GAAsB,EAAE;QAC3C,IAAA,CAAA,QAAQ,GAAG,IAAI;QACf,IAAA,CAAA,YAAY,GAAG,KAAK;;AAM1B,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAK;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM;AAC5C,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;;AAEb,oBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAErB,oBAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC5C;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;IACH,QAAQ,CAAC,oBAA6B,KAAK,EAAA;AACzC,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM;QAClB,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;AAAE,YAAA,CAAC,EAAE;AACxC,QAAA,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM;AAChB,YAAA,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,iBAAiB;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC7B;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IACxB;AAGA;;;;;AAKG;IACH,IAAI,CAAI,SAA2B,EAAE,MAAgC,EAAA;AACnE,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,IAAI;QACzC,IAAI,CAAC,SAAS,EAAE;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3C;AAGA;;;;;;AAMG;IACK,UAAU,CAAI,SAA2B,EAAE,MAAgC,EAAA;;AAEjF,QAAA,MAAM,CAAC,iBAAiB,GAAG,KAAK;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7C,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpE,QAAA,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;;AAE3C,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,CAAC;IACV;AAEA;;;;AAIG;AACK,IAAA,WAAW,CAAC,OAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC9C,QAAA,OAAQ,CAAC,KAAK,EAAE,QAAQ;AACrB,aAAA,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,IAAI,CAAA,CAAE,CAAC,EAAE,EAAE,CAAC;AAClE,aAAA,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC;IACtD;AAEA;;AAEG;IACH,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,CAAC;AACtC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AACpC,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;YACtC,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;AACtC,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,YAAY;QAC7D;AACA,QAAA,OAAO,CAAC;IACV;AAEA;;;;;AAKG;IACH,gCAAgC,CAC9B,mBAA6B,EAC7B,aAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,CAAC;AACtC,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,aAAa,CAAC;QAC9D,IAAI,mBAAmB,EAAE;AACvB,YAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAChD,IAAI,KAAK,EAAE;AACT,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACrC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAgB,CAAC;oBAChD;gBACF;AACF,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,OAAO,CAAC;IACV;AAEA;;AAEG;AACK,IAAA,UAAU,CAAC,EAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;AAC5B,QAAA,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AACrD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC5C;AAEA;;AAEG;AACK,IAAA,SAAS,CAAC,EAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxB,IAAI,MAAM,GAAG,CAAC;YACd,IAAI,EAAE,EAAE;AACN,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AACrD,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACZ,oBAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;AAC/D,oBAAA,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;oBAChC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9B;AACA,gBAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI;AACzB,gBAAA,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM;AAClB,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,GAAG,CAAC,EAAE;AACjD,oBAAA,CAAC,EAAE;AACH,oBAAA,MAAM,EAAE;gBACV;AACA,gBAAA,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM;AAChB,oBAAA,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;AAEA;;;AAGG;IACK,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,eAAe;AAC9B,YAAA,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AACpC,iBAAA,MAAM;AACN,iBAAA,kBAAkB;AAClB,iBAAA,gBAAgB;AACpB,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACH,SAAS,GAAA;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QACnC,CAAC,EAAE,GAAG,CAAC;IACT;AAEA;;;;;;;;AAQG;AACH,IAAA,OAAO,CACL,OAAe,EACf,QAAA,GAAmB,CAAC,CAAC,EACrB,YAAA,GAAgD,eAAe,EAC/D,IAAA,GAAiD,KAAK,EACtD,MAA4B,EAAA;;AAG5B,QAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;QAChD,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAC7E;aAAO;;AAEL,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE;YACxC;AACA,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAC3F,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;YACzE,IAAI,MAAM,EAAE;gBACV;qBACG,IAAI,CAAC,KAAK,EAAE;qBACZ,SAAS,CAAC,MAAK;oBACd,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,CAAC,CAAC;YACN;QACF;QACA,OAAO,CAAC,MAAM;IAChB;AAEA;;;;;;;AAOG;IACH,IAAI,CACF,OAAe,EACf,QAAA,GAAmB,CAAC,CAAC,EACrB,YAAA,GAAgD,eAAe,EAC/D,MAA4B,EAAA;AAE5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC;IACrE;AAGA;;;;;AAKG;AACH,IAAA,SAAS,CAAC,OAAA,GAAkB,wBAAwB,EAAE,MAAc,GAAG,EAAA;QACrE,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;IAC1C;AAGA;;;;;AAKG;IACH,aAAa,CACX,OAAe,EACf,MAA4B,EAAA;AAE5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC;IACxE;AAEA;;;;;;;AAOG;IACH,WAAW,CACT,OAAe,EACf,QAAA,GAAmB,CAAC,CAAC,EACrB,YAAA,GAAgD,eAAe,EAC/D,MAA4B,EAAA;AAE5B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;IACzE;AAEA;;;;AAIG;AACH,IAAA,IAAI,CAAC,MAA4B,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC;IAC9D;AAGA;;;;;;;;;;AAUG;AACH,IAAA,IAAI,CACF,OAAe,EACf,KAAA,GAAgB,cAAc,EAC9B,SAAA,GAAoB,IAAI,EACxB,KAAA,GAAgB,GAAG,EACnB,YAAqB,EACrB,OAAgB,EAChB,UAAkC,EAAA;QAElC,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACpC,YAAA,SAAS,EAAE,cAAc;AACzB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,IAAI,EAAE;gBACJ,OAAO;gBACP,KAAK;gBACL,SAAS;gBACT,YAAY;gBACZ,OAAO;gBACP,UAAU;AACV,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU;AACV,aAAA;AACnB,YAAA,iBAAiB,EAAE,KAAK;AAExB,YAAA,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;AACtB,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;AAEA;;;;;;;;;AASG;AACH,IAAA,KAAK,CACH,OAAe,EACf,GAAY,EACZ,KAAA,GAAgB,QAAQ,EACxB,SAAA,GAAoB,IAAI,EACxB,KAAA,GAAgB,GAAG,EACnB,YAAqB,EAAA;QAErB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;;AAEvB,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC5C,OAAO;gBACP,KAAK;AACL,gBAAA,OAAO,EAAE,GAAG;gBACZ,SAAS;gBACT;AACD,aAAA,CAAC;YACF,OAAO,IAAI,CAAC,cAAc;QAC5B;AACA,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACzC,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,IAAI,EAAE;gBACJ,OAAO;gBACP,KAAK;AACL,gBAAA,OAAO,EAAE,GAAG;gBACZ,SAAS;gBACT,YAAY;AACZ,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU;AACV,aAAA;AACnB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;AACtB,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,IAAI,SAAS;AACtC,QAAA,OAAO,GAAG;IACZ;AAEA;;;;;;;AAOG;IACH,KAAK,CACH,OAAe,EACf,QAAA,GAAmB,IAAI,EACvB,IAAA,GAAe,OAAO,EACtB,aAAsB,EAAA;QAEtB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,QAAQ,KAAK,CAAC,CAAC;AAAE,YAAA,QAAQ,GAAG,IAAI,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE;YAC/D,QAAQ;AACR,YAAA,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa;AACrC,SAAA,CAAC;AACF,QAAA,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC5D,QAAA,OAAO,QAAQ;IACjB;AAEA;;;;;;;;;;;AAWG;AACH,IAAA,OAAO,CACL,OAAe,EACf,QAAgB,UAAU,EAC1B,YAAoB,IAAI,EACxB,gBAAwB,IAAI,EAC5B,YAAqB,EACrB,OAA+B,EAC/B,KAAA,GAAgB,GAAG,EACnB,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACvC,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,IAAI,EAAE;gBACJ,OAAO;gBACP,KAAK;gBACL,SAAS;gBACT,aAAa;gBACb,YAAY;gBACZ,OAAO;gBACP,OAAO;AACP,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU;AACP,aAAA;AACtB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;AACtB,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;AAEA;;;;;;;;;;AAUG;IACH,MAAM,CACJ,OAAe,EACf,KAAA,GAAgB,YAAY,EAC5B,WAAA,GAAuC,uBAAuB,CAAC,IAAI,EACnE,SAAA,GAAoB,IAAI,EACxB,aAAA,GAAwB,IAAI,EAC5B,KAAA,GAAgB,GAAG,EACnB,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACtC,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,IAAI,EAAE;gBACJ,OAAO;gBACP,KAAK;gBACL,WAAW;gBACX,SAAS;gBACT,aAAa;gBACb,OAAO;AACP,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU;AACR,aAAA;AACrB,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI;AACtB,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;IACJ;8GA9gBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA,CAAA;+GAAb,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;AC7CD,MAAM,gBAAgB,GAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AAE9G;;;AAGG;MASU,yBAAyB,CAAA;AARtC,IAAA,WAAA,GAAA;;QAUa,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE;qFAAC;AAErC;;;AAGG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAmB,MAAK;AAC1D,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,OAAO,GAAG,GAAG,WAAW,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,gBAAgB;QAC9E,CAAC;qFAAC;AAEF;;;AAGG;AACgB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAK;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK;YACnC,IAAI,KAAK,IAAI,CAAC;AAAE,gBAAA,OAAO,SAAS;YAChC,IAAI,KAAK,IAAI,CAAC;AAAE,gBAAA,OAAO,SAAS;YAChC,IAAI,KAAK,IAAI,CAAC;AAAE,gBAAA,OAAO,SAAS;YAChC,IAAI,KAAK,IAAI,CAAC;AAAE,gBAAA,OAAO,SAAS;AAChC,YAAA,OAAO,SAAS;QACpB,CAAC;uFAAC;AACL,IAAA;8GAzBY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,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,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBtC,oNAEM,EAAA,MAAA,EAAA,CAAA,oRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDcQ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEjB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;+BACI,mBAAmB,EAAA,UAAA,EAGjB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,oNAAA,EAAA,MAAA,EAAA,CAAA,oRAAA,CAAA,EAAA;;;MEQlB,iBAAiB,CAAA;AApB9B,IAAA,WAAA,GAAA;;QAsBW,IAAA,CAAA,SAAS,GAAG,YAAY,CAA+B,UAAU;sFAAC;;QAGlE,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oFAAC;;QAGpE,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;qFAAC;;QAG9C,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK;qFAAC;AAElC,QAAA,IAAA,CAAA,QAAQ,GAA0B,MAAK,EAAE,CAAC;AAC1C,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAgJzC,IAAA;;AA5IC;;;AAGG;AACH,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBAC/B,IAAI,CAAC,GAAG,CAAC;AAAE,oBAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IACxB;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,EAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA;;;AAGG;AACH,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA;;;AAGG;AACH,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;IAC/B;;AAIA;;;;;;;AAOG;AACH,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,MAAM,KAAK,GAAW,OAAO,CAAC,KAAK,IAAI,EAAE;AACzC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;AACpC,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE;IACrD;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;;AAIA;;;AAGG;AACH,IAAA,aAAa,CAAC,KAAiB,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AAEA;;;;AAIG;IACH,OAAO,CAAC,KAAY,EAAE,KAAa,EAAA;AACjC,QAAA,IAAI,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AAClD,QAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChC,QAAA,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAEtB,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5B;IACF;AAEA;;;;AAIG;IACH,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AACrE,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5B;IACF;AAEA;;;AAGG;AACH,IAAA,OAAO,CAAC,KAAqB,EAAA;QAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAE9D,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7C;IACF;AAEA;;;AAGG;AACK,IAAA,UAAU,CAAC,KAAa,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;AACrC,QAAA,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;AAC5B,QAAA,KAAK,EAAE,aAAa,CAAC,MAAM,EAAE;IAC/B;AAEA;;AAEG;IACK,WAAW,GAAA;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;IAClB;8GA7JW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,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,WAAA,EAAA,SAAA,EAbjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBH,ghBAqBA,giBDdY,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAiBV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApB7B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,WAAW,CAAC,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,ghBAAA,EAAA,MAAA,EAAA,CAAA,yeAAA,CAAA,EAAA;0EAI+D,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEsB/D,0BAA0B,CAAA;AAtBvC,IAAA,WAAA,GAAA;;QAwBW,IAAA,CAAA,IAAI,GAAG,MAAM,EAA2B;;QAGxC,IAAA,CAAA,kBAAkB,GAAG,MAAM,EAA2B;;AAG5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAwB,CAAC,MAAK;YAClE,MAAM,GAAG,GAAI,MAAM,CAAC,eAAe,CAAkC,IAAI,EAAE;AAC3E,YAAA,MAAM,IAAI,GAA0B;AAClC,gBAAA,UAAU,EAAE,MAAM;AAClB,gBAAA,KAAK,EAAE,cAAc;AACrB,gBAAA,SAAS,EAAE,OAAO;AAClB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,GAAG,GAAG;aACP;AACD,YAAA,IAAI,CAAC,UAAU,KAAK,MAAM;AAC1B,YAAA,IAAI,CAAC,KAAK,KAAS,cAAc;AACjC,YAAA,IAAI,CAAC,SAAS,KAAK,OAAO;AAC1B,YAAA,IAAI,CAAC,IAAI,KAAU,OAAO;YAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACxC,gBAAA,IAAI,CAAC,OAAO,GAAG,mLAAmL;YACpM;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,GAAG;uFAAC;;AAGK,QAAA,IAAA,CAAA,IAAI,GAA4B;AACxC,YAAA,IAAI,EAAG,MAAM,CAAC,eAAe,CAAkC,EAAE,IAAI;SACtE;;QAGkB,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,KAAK;yFAAC;AAkCzD,IAAA;AAhCC;;;;;AAKG;IACI,UAAU,CAAC,IAA8B,EAAE,OAAgB,EAAA;QAChE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK;AAC3B,YAAA,GAAG,CAAC;YACJ,IAAI;AACJ,YAAA,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;AAC9B,SAAA,CAAC,CAAC;IACL;AAEA;;AAEG;IACO,EAAE,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEA;;;AAGG;IACO,eAAe,GAAA;QACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB;QAChD,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC5B;IACF;8GAlEW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDvC,y+GAwEqB,EAAA,MAAA,EAAA,CAAA,u5IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxCjB,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,gEAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kkBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,whBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,whBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,yBAAyB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,iBAAiB,iDACjB,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGH,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAtBtC,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,cAAc;wBACd,gBAAgB;wBAChB,WAAW;wBACX,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,iBAAiB;wBACjB,gBAAgB;wBAChB,UAAU;wBACV,eAAe;wBACf,cAAc;wBACd,yBAAyB;wBACzB,iBAAiB;wBACjB,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,y+GAAA,EAAA,MAAA,EAAA,CAAA,u5IAAA,CAAA,EAAA;;;MEhBU,8BAA8B,CAAA;AAjB3C,IAAA,WAAA,GAAA;;QAoBW,IAAA,CAAA,IAAI,GAAG,MAAM,EAA+B;;QAGlC,IAAA,CAAA,UAAU,GAAG,MAAM,CAA4B;AAChE,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,IAAK,MAAM,CAAC,eAAe,CAAsC,IAAI,EAAE,CAAC;AACzE,SAAA;uFAAC;;AAGQ,QAAA,IAAA,CAAA,IAAI,GAAgC;AAC5C,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,KAAK;SACjB;AAQF,IAAA;AANC;;AAEG;IACO,EAAE,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;8GAtBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,mGC9B3C,igFAkDqB,EAAA,MAAA,EAAA,CAAA,qwIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/Bb,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,wGAChB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,gEAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,iYACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,UAAU,mgGACV,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGT,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAjB1C,SAAS;AAGW,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP;wBACL,cAAc;wBACd,gBAAgB;wBAChB,WAAW;wBACX,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,UAAU;wBACV,cAAc;AACjB,qBAAA,EAAA,QAAA,EAAA,igFAAA,EAAA,MAAA,EAAA,CAAA,qwIAAA,CAAA,EAAA;;;MEsBQ,4BAA4B,CAAA;AAyBvC,IAAA,WAAA,GAAA;;QAvBS,IAAA,CAAA,IAAI,GAAG,MAAM,EAA6B;AAElC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,EAAC,YAA0C,EAAC;;AAG5D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,CAAC,MAAK;AACpE,YAAA,MAAM,GAAG,GAAI,MAAM,CAAC,eAAe,CAAoC;AACvE,YAAA,OAAO,EAAE,IAAI,EAAE,OAAkC,EAAE,UAAU,EAAE,MAAgC,EAAE,GAAG,GAAG,EAAE;AAC3G,QAAA,CAAC,GAAG;uFAAC;;QAGK,IAAA,CAAA,IAAI,GAA8B,EAAE;;QAG3B,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,KAAK;4FAAC;;QAGxC,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,KAAK;yFAAC;;QAGrC,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK;0FAAC;AAGvD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,yBAAyB,CAAC;YACnD;QACF;QACA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,+BAA+B,CAAC;YACzD;QACF;QACA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;IAChC;AAEA;;AAEG;IACO,EAAE,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEA;;AAEG;IACO,gBAAgB,GAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,gBAAgB,EAAE;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ;IAChC;8GAvDW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDzC,61IAqFqB,EAAA,MAAA,EAAA,CAAA,u5IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlDjB,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,gEAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,iBAAA,EAAA,QAAA,EAAA,ydAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,+aAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,kkBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,whBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,khBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,0BAA0B,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,yBAAyB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,wBAAwB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGL,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBArBxC,SAAS;AAGI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,cAAc;wBACd,gBAAgB;wBAChB,WAAW;wBACX,UAAU;wBACV,kBAAkB;wBAClB,cAAc;wBACd,0BAA0B;wBAC1B,yBAAyB;wBACzB,wBAAwB;wBACxB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,61IAAA,EAAA,MAAA,EAAA,CAAA,u5IAAA,CAAA,EAAA;;;AEhDH;;AAEG;;ACFH;;AAEG;;;;"}