@ethlete/core 5.0.0-next.2 → 5.0.0-next.3
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":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/animations/animatable.directive.ts","../../../../libs/core/src/lib/utils/angular/component-id.ts","../../../../libs/core/src/lib/utils/angular/destroy.ts","../../../../libs/core/src/lib/utils/angular/di.ts","../../../../libs/core/src/lib/utils/angular/form.ts","../../../../libs/core/src/lib/utils/angular/host-listener.ts","../../../../libs/core/src/lib/utils/angular/query-list-changes.ts","../../../../libs/core/src/lib/utils/angular/set-input-signal.ts","../../../../libs/core/src/lib/utils/angular/validators.ts","../../../../libs/core/src/lib/utils/comparison.ts","../../../../libs/core/src/lib/utils/cookie.ts","../../../../libs/core/src/lib/utils/key-press-manager.ts","../../../../libs/core/src/lib/signals/animated-number.ts","../../../../libs/core/src/lib/signals/control-value.ts","../../../../libs/core/src/lib/signals/element.ts","../../../../libs/core/src/lib/signals/render-utils.ts","../../../../libs/core/src/lib/signals/element-mutations.ts","../../../../libs/core/src/lib/signals/element-children.ts","../../../../libs/core/src/lib/signals/element-data-binding.ts","../../../../libs/core/src/lib/signals/element-dimensions.ts","../../../../libs/core/src/lib/signals/element-intersection.ts","../../../../libs/core/src/lib/signals/element-scroll-direction.ts","../../../../libs/core/src/lib/signals/element-scroll-state.ts","../../../../libs/core/src/lib/signals/signal-data-utils.ts","../../../../libs/core/src/lib/signals/media-queries.ts","../../../../libs/core/src/lib/signals/recipes/css-vars.ts","../../../../libs/core/src/lib/signals/recipes/cursor-drag-scroll.ts","../../../../libs/core/src/lib/signals/router.ts","../../../../libs/core/src/lib/signals/recipes/scroll-restoration.ts","../../../../libs/core/src/lib/utils/logger.ts","../../../../libs/core/src/lib/utils/math.ts","../../../../libs/core/src/lib/utils/object.ts","../../../../libs/core/src/lib/utils/runtime-error.ts","../../../../libs/core/src/lib/utils/scrollable.ts","../../../../libs/core/src/lib/providers/angular-root-element.ts","../../../../libs/core/src/lib/providers/boundary-element.ts","../../../../libs/core/src/lib/providers/breakpoint-observer.ts","../../../../libs/core/src/lib/providers/focus-visible-tracker.ts","../../../../libs/core/src/lib/providers/locale.ts","../../../../libs/core/src/lib/providers/renderer.ts","../../../../libs/core/src/lib/animations/animation-utils.ts","../../../../libs/core/src/lib/animations/animated-lifecycle.directive.ts","../../../../libs/core/src/lib/animations/animated-if.directive.ts","../../../../libs/core/src/lib/animations/animated-overlay.directive.ts","../../../../libs/core/src/lib/animations/flip-animation.ts","../../../../libs/core/src/lib/directives/click-outside.directive.ts","../../../../libs/core/src/lib/directives/repeat.directive.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-game-result-type.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-state.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-participants.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-score.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-type.pipe.ts","../../../../libs/core/src/lib/pipes/infer-mime-type.pipe.ts","../../../../libs/core/src/lib/pipes/to-array.pipe.ts","../../../../libs/core/src/lib/props/create-prop-handlers.ts","../../../../libs/core/src/lib/props/element-dictionary.ts","../../../../libs/core/src/lib/props/props-binding.ts","../../../../libs/core/src/lib/props/create-props.ts","../../../../libs/core/src/lib/props/create-setup.ts","../../../../libs/core/src/lib/props/dependency-stash.ts","../../../../libs/core/src/lib/props/props.directive.ts","../../../../libs/core/src/lib/props/template-input.ts","../../../../libs/core/src/lib/seo/head-binding.ts","../../../../libs/core/src/lib/seo/link-binding.ts","../../../../libs/core/src/lib/seo/title-binding.ts","../../../../libs/core/src/lib/seo/meta-binding.ts","../../../../libs/core/src/lib/seo/seo.directive.ts","../../../../libs/core/src/lib/seo/structured-data-binding.ts","../../../../libs/core/src/lib/seo/structured-data.component.ts","../../../../libs/core/src/lib/theming/theme.util.ts","../../../../libs/core/src/lib/theming/legacy-theming.ts","../../../../libs/core/src/lib/theming/provide-theme.directive.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["import { Directive, ElementRef, inject, InjectionToken } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n Subject,\n tap,\n} from 'rxjs';\n\nexport const ANIMATABLE_TOKEN = new InjectionToken<AnimatableDirective>('ANIMATABLE_DIRECTIVE_TOKEN');\n\nexport type AnimationEndEvent = {\n cancelled: boolean;\n transitionId?: string;\n};\n\n@Directive({\n selector: '[etAnimatable]',\n exportAs: 'etAnimatable',\n providers: [\n {\n provide: ANIMATABLE_TOKEN,\n useExisting: AnimatableDirective,\n },\n ],\n})\nexport class AnimatableDirective {\n private parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private animationStartSubject$ = new Subject<void>();\n private animationEndSubject$ = new Subject<AnimationEndEvent>();\n\n private activeAnimationCount = 0;\n private hostActiveAnimationCount$ = new BehaviorSubject<number>(0);\n\n private pendingTransitionIds: string[] = [];\n private activeBatchTransitionId: string | undefined;\n\n animationStart$ = this.animationStartSubject$.asObservable().pipe(debounceTime(0));\n animationEnd$ = this.animationEndSubject$.asObservable().pipe(debounceTime(0));\n\n totalActiveAnimationCount$: Observable<number> = this.parent\n ? combineLatest([this.parent.totalActiveAnimationCount$, this.hostActiveAnimationCount$]).pipe(\n map(([parentCount, hostCount]) => Math.max(0, parentCount + hostCount)),\n )\n : this.hostActiveAnimationCount$.pipe(map((count) => Math.max(0, count)));\n\n isAnimating$ = this.totalActiveAnimationCount$.pipe(map((count) => count > 0));\n\n constructor() {\n let didEmitStart = false;\n const el = this.elementRef.nativeElement;\n\n merge(\n merge(fromEvent<AnimationEvent>(el, 'animationstart'), fromEvent<TransitionEvent>(el, 'transitionstart')).pipe(\n filter((e) => e.target === el && !e.pseudoElement),\n map(() => 'start' as const),\n ),\n merge(fromEvent<AnimationEvent>(el, 'animationend'), fromEvent<TransitionEvent>(el, 'transitionend')).pipe(\n filter((e) => e.target === el && !e.pseudoElement),\n map(() => 'end' as const),\n ),\n merge(fromEvent<AnimationEvent>(el, 'animationcancel'), fromEvent<TransitionEvent>(el, 'transitioncancel')).pipe(\n filter((e) => e.target === el && !e.pseudoElement),\n map(() => 'cancel' as const),\n ),\n )\n .pipe(\n tap((eventType) => {\n switch (eventType) {\n case 'start': {\n const startingNewBatch = this.activeAnimationCount === 0;\n this.updateActiveAnimationCount(1);\n\n if (startingNewBatch) {\n this.activeBatchTransitionId = this.pendingTransitionIds.shift();\n }\n\n if (!didEmitStart) {\n didEmitStart = true;\n this.animationStartSubject$.next();\n }\n\n break;\n }\n case 'end':\n case 'cancel': {\n if (this.activeAnimationCount > 0) {\n this.updateActiveAnimationCount(-1);\n\n if (this.activeAnimationCount === 0 && didEmitStart) {\n didEmitStart = false;\n this.animationEndSubject$.next({\n cancelled: eventType === 'cancel',\n transitionId: this.activeBatchTransitionId,\n });\n this.activeBatchTransitionId = undefined;\n }\n } else {\n console.warn(\n `${el.tagName} received animation end/cancel event but activeAnimationCount is already 0. Start was ${didEmitStart ? '' : 'not '}emitted.`,\n );\n }\n break;\n }\n }\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n setTransitionId(id: string) {\n this.pendingTransitionIds.push(id);\n }\n\n private updateActiveAnimationCount(delta: number) {\n const newVal = this.activeAnimationCount + delta;\n const clampedVal = Math.max(0, newVal);\n\n this.activeAnimationCount = clampedVal;\n this.hostActiveAnimationCount$.next(clampedVal);\n }\n}\n","const componentIds = new Map<string, number>();\n\nexport const createComponentId = (prefix: string) => {\n const id = componentIds.get(prefix) ?? 0;\n componentIds.set(prefix, id + 1);\n\n return `${prefix}-${id}`;\n};\n","import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport const createDestroy = () => {\n assertInInjectionContext(createDestroy);\n\n const destroy$ = new Subject<boolean>();\n\n const ref = inject(DestroyRef);\n\n ref.onDestroy(() => {\n destroy$.next(true);\n destroy$.complete();\n });\n\n return destroy$.asObservable();\n};\n","import { ElementRef, inject, InjectionToken, InjectOptions, Provider, TemplateRef } from '@angular/core';\nimport { createComponentId } from './component-id';\n\nexport const injectHostElement = <T = HTMLElement>() => inject<ElementRef<T>>(ElementRef).nativeElement;\n\nexport const injectTemplateRef = <C = unknown>() => inject<TemplateRef<C>>(TemplateRef);\n\nexport type CreateProviderOptions = {\n /**\n * Optional name for the provider, useful for debugging.\n * If not provided, the name will be a generated string.\n */\n name?: string;\n\n /**\n * Optional existing InjectionToken to also provide the created provider under.\n */\n extraInjectionToken?: InjectionToken<unknown>;\n};\n\nexport type ProviderResult<T> = readonly [\n provide: () => Provider[],\n inject: {\n (): T;\n (options: InjectOptions & { optional?: false }): T;\n (options: InjectOptions): T | null;\n },\n token: InjectionToken<T>,\n];\n\nexport type StaticProviderResult<T> = readonly [\n provide: (valueOverride?: Partial<T>) => Provider[],\n inject: {\n (): T;\n (options: InjectOptions & { optional?: false }): T;\n (options: InjectOptions): T | null;\n },\n token: InjectionToken<T>,\n];\n\nexport type RootProviderResult<T> = readonly [\n inject: {\n (): T;\n (options: InjectOptions & { optional?: false }): T;\n (options: InjectOptions): T | null;\n },\n token: InjectionToken<T>,\n];\n\nconst createInjectFunction = <T>(token: InjectionToken<T>) => {\n function injectFn(): T;\n function injectFn(options: InjectOptions & { optional?: false }): T;\n function injectFn(options: InjectOptions): T | null;\n function injectFn(options?: InjectOptions): T | null {\n return options ? inject(token, options) : inject(token);\n }\n return injectFn;\n};\n\nconst createProviders = <T>(\n token: InjectionToken<T>,\n factory: () => T,\n extraToken?: InjectionToken<unknown>,\n): Provider[] => [\n { provide: token, useFactory: factory },\n ...(extraToken ? [{ provide: extraToken, useExisting: token }] : []),\n];\n\nexport const createProvider = <T>(factory: () => T, options?: CreateProviderOptions): ProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('provider'));\n const provide = () => createProviders(token, factory, options?.extraInjectionToken);\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nexport const createRootProvider = <T>(factory: () => T, options?: CreateProviderOptions): ProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('provider'), {\n providedIn: 'root',\n factory,\n });\n\n const provide = () => createProviders(token, factory, options?.extraInjectionToken);\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nexport const createStaticProvider = <T>(defaultValue?: T, options?: CreateProviderOptions): StaticProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('static-provider'));\n\n const provide = (valueOverride?: Partial<T>) => [\n { provide: token, useValue: maybeMergeValues(defaultValue, valueOverride) },\n ...(options?.extraInjectionToken ? [{ provide: options.extraInjectionToken, useExisting: token }] : []),\n ];\n\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nexport const createStaticRootProvider = <T>(\n defaultValue?: T,\n options?: CreateProviderOptions,\n): StaticProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('static-provider'), {\n providedIn: 'root',\n factory: () => defaultValue as T,\n });\n\n const provide = (valueOverride?: Partial<T>) => [\n { provide: token, useValue: maybeMergeValues(defaultValue, valueOverride) },\n ...(options?.extraInjectionToken ? [{ provide: options.extraInjectionToken, useExisting: token }] : []),\n ];\n\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nconst maybeMergeValues = <T>(defaultValue: T | undefined, valueOverride?: Partial<T>) => {\n if (valueOverride && defaultValue && typeof defaultValue === 'object') {\n return { ...defaultValue, ...valueOverride };\n }\n\n return valueOverride ?? defaultValue;\n};\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const cloneFormGroup = <T extends FormGroup<any>>(formGroup: T) => {\n const cloneLevel = (group: FormGroup, cloneGroup: FormGroup) => {\n Object.keys(group.controls).forEach((key) => {\n const control = group.controls[key]!;\n\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n\n cloneGroup.addControl(key, cloneControl);\n\n cloneLevel(control, cloneControl);\n } else if (control instanceof FormArray) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cloneArrayControl = new FormArray<any>([], control.validator, control.asyncValidator);\n\n control.controls.forEach((control) => {\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n const innerClone = cloneLevel(control, cloneControl);\n cloneArrayControl.push(innerClone);\n } else {\n const cloneControlItem = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n cloneArrayControl.push(cloneControlItem);\n }\n });\n\n cloneGroup.addControl(key, cloneArrayControl);\n } else {\n const cloneControl = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n\n cloneGroup.addControl(key, cloneControl);\n }\n });\n\n return cloneGroup;\n };\n\n const clonedForm = cloneLevel(formGroup, new FormGroup({}));\n clonedForm.setValue(formGroup.value);\n clonedForm.updateValueAndValidity();\n\n return clonedForm as T;\n};\n\nexport const getFormGroupValue = <T extends FormGroup>(formGroup: T) => {\n const value: Record<string, unknown> = {};\n\n Object.keys(formGroup.controls).forEach((key) => {\n const control = formGroup.controls[key]!;\n\n if (control instanceof FormGroup) {\n value[key] = getFormGroupValue(control);\n } else if (control instanceof FormArray) {\n value[key] = control.controls.map((control) => {\n if (control instanceof FormGroup) {\n return getFormGroupValue(control);\n } else {\n return control.value ?? null;\n }\n });\n } else {\n value[key] = control.value ?? null;\n }\n });\n\n return value;\n};\n","import { ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\n\nexport const createRxHostListener = <K extends keyof HTMLElementEventMap>(\n eventName: K,\n options?: EventListenerOptions,\n) => {\n const element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement as EventTarget;\n\n const observable = options\n ? fromEvent<HTMLElementEventMap[K]>(element, eventName, options)\n : fromEvent<HTMLElementEventMap[K]>(element, eventName);\n\n return observable.pipe(takeUntilDestroyed());\n};\n\nexport const applyHostListener = <K extends keyof HTMLElementEventMap>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n options?: EventListenerOptions,\n) => createRxHostListener(eventName, options).subscribe(handler);\n\nexport const applyHostListeners = (\n listeners: Partial<{\n [K in keyof HTMLElementEventMap]: (event: HTMLElementEventMap[K]) => void;\n }>,\n options?: EventListenerOptions,\n) => {\n for (const eventName in listeners) {\n const handler = listeners[eventName as keyof HTMLElementEventMap];\n\n if (handler) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n applyHostListener(eventName as keyof HTMLElementEventMap, handler as any, options);\n }\n }\n};\n","import { QueryList } from '@angular/core';\nimport { Observable, of, startWith, switchMap } from 'rxjs';\n\nexport class TypedQueryList<T> extends QueryList<T> {\n override get changes(): Observable<TypedQueryList<T>> {\n return super.changes as Observable<TypedQueryList<T>>;\n }\n}\n\nexport function switchQueryListChanges() {\n return function <T extends TypedQueryList<unknown> | null | undefined>(source: Observable<T>) {\n return source.pipe(switchMap((value) => value?.changes.pipe(startWith(value)) ?? of(null))) as Observable<T>;\n };\n}\n","import { InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';\n\n/**\n * Sets the value of an input signal.\n * See issue: https://github.com/angular/angular/issues/54782\n */\nexport const setInputSignal = <T>(input: InputSignal<T> | InputSignalWithTransform<T, unknown>, value: T) => {\n const node = input[SIGNAL];\n\n signalSetFn(node, value);\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const AT_LEAST_ONE_REQUIRED = 'atLeastOneRequired';\n\nexport type ValidateAtLeastOneRequiredConfig = {\n /**\n * Keys of form controls to validate in the supplied form group\n */\n keys: string[];\n\n /**\n * If true, the value `false` will result in a validation error\n * @default false\n */\n checkFalse?: boolean;\n};\n\nexport const ValidateAtLeastOneRequired = (config: ValidateAtLeastOneRequiredConfig): ValidatorFn => {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const { keys, checkFalse } = config;\n\n if (!formGroup) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n const controlValues = keys.map((key) => formGroup.get(key)?.value);\n\n const areAllFalsy = controlValues.every(\n (value) =>\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (checkFalse && value === false),\n );\n\n if (areAllFalsy) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n return null;\n };\n};\n\nexport const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';\n\nexport const IsArrayNotEmpty = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };\n};\n\nexport const IS_EMAIL = 'isEmail';\n\nexport const IsEmail = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: AbstractControl) => {\n const control = formGroup.get(controlName);\n const matchingControl = formGroup.get(matchingControlName);\n\n if (matchingControl?.errors && !matchingControl.errors[MUST_MATCH]) {\n return null;\n }\n\n if (control?.value !== matchingControl?.value) {\n matchingControl?.setErrors({ [MUST_MATCH]: true });\n return { [MUST_MATCH]: true };\n } else {\n matchingControl?.setErrors(null);\n return null;\n }\n };\n};\n\nexport const Validators = {\n MustMatch,\n IsEmail,\n IsArrayNotEmpty,\n ValidateAtLeastOneRequired,\n} as const;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n\n/**\n * Stolen from klona to avoid adding a dependency\n * https://github.com/lukeed/klona\n *\n * MIT License\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst set = (obj: any, key: any, val: any) => {\n if (typeof val.value === 'object') val.value = clone(val.value);\n if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n Object.defineProperty(obj, key, val);\n } else obj[key] = val.value;\n};\n\nexport const clone = <T>(original: T): T => {\n if (typeof original !== 'object') return original;\n\n var _og = original as any;\n\n var i = 0,\n k,\n list,\n tmp: any,\n str = Object.prototype.toString.call(_og);\n\n if (str === '[object Object]') {\n tmp = Object.create(_og.__proto__ || null);\n } else if (str === '[object Array]') {\n tmp = Array(_og.length);\n } else if (str === '[object Set]') {\n tmp = new Set();\n _og.forEach(function (val: any) {\n tmp.add(clone(val));\n });\n } else if (str === '[object Map]') {\n tmp = new Map();\n _og.forEach(function (val: any, key: any) {\n tmp.set(clone(key), clone(val));\n });\n } else if (str === '[object Date]') {\n tmp = new Date(+_og);\n } else if (str === '[object RegExp]') {\n tmp = new RegExp(_og.source, _og.flags);\n } else if (str === '[object DataView]') {\n tmp = new _og.constructor(clone(_og.buffer));\n } else if (str === '[object ArrayBuffer]') {\n tmp = _og.slice(0);\n } else if (str.slice(-6) === 'Array]') {\n // ArrayBuffer.isView(x)\n // ~> `new` bcuz `Buffer.slice` => ref\n tmp = new _og.constructor(_og);\n }\n\n if (tmp) {\n for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {\n set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]!));\n }\n\n for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {\n if (Object.hasOwnProperty.call(tmp, (k = list[i]!)) && tmp[k] === _og[k]) continue;\n set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));\n }\n }\n\n return tmp || _og;\n};\n\n/**\n * Stolen from dequal to avoid adding a dependency\n * https://github.com/lukeed/dequal\n *\n * The MIT License (MIT)\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (equal(key, tar)) return key;\n }\n}\n\nexport const equal = (foo: any, bar: any) => {\n var ctor: any, len: any, tmp: any;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && equal(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!equal(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !equal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n};\n","export const hasCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return false;\n }\n\n return document.cookie.split(';').some((c) => {\n return c.trim().startsWith(name + '=');\n });\n};\n\nexport const getCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n // From https://stackoverflow.com/questions/10730362/get-cookie-by-name\n return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];\n};\n\nexport const setCookie = (\n name: string,\n data: string,\n expiresInDays?: number | null,\n domain = getDomain(),\n path = '/',\n sameSite: 'strict' | 'none' | 'lax' = 'lax',\n) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const sameSiteUpper = sameSite.toUpperCase();\n\n const expires = expiresInDays ?? 30;\n\n let cookieString = `${name}=${data}; path=${path}`;\n\n if (expiresInDays !== null) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n cookieString += `; expires=${date.toUTCString()}`;\n }\n\n cookieString += `; domain=${domain}; SameSite=${sameSiteUpper};`;\n document.cookie = cookieString;\n};\n\nexport const deleteCookie = (name: string, path = '/', domain = getDomain()) => {\n if (hasCookie(name)) {\n document.cookie =\n name +\n '=' +\n (path ? ';path=' + path : '') +\n (domain ? ';domain=' + domain : '') +\n ';expires=Thu, 01 Jan 1970 00:00:01 GMT';\n }\n};\n\nexport const getDomain = () => {\n if (typeof navigator === 'undefined') {\n return null;\n }\n\n const hostname = window.location.hostname;\n\n if (hostname.includes('localhost')) {\n return 'localhost';\n }\n\n const hostIsIP = hostname.match(/^(\\d{1,3}\\.){3}\\d{1,3}$/);\n\n if (hostIsIP) {\n return hostname;\n }\n\n const splitHost = hostname.split('.');\n\n if (splitHost.length > 2) {\n return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;\n }\n\n return hostname;\n};\n","import { BehaviorSubject, Subject, takeUntil, timer } from 'rxjs';\n\nexport class KeyPressManager {\n private readonly _isKeyPressed$ = new BehaviorSubject(false);\n private readonly _keyPressCount$ = new BehaviorSubject(0);\n\n private readonly _stopTimeout$ = new Subject<void>();\n\n constructor(public readonly key: number) {}\n\n isPressed(event: KeyboardEvent) {\n const key = event.keyCode;\n\n if (key === this.key) {\n this._isKeyPressed$.next(this._keyPressCount$.value > 1);\n this._keyPressCount$.next(this._keyPressCount$.value + 1);\n\n this._stopTimeout$.next();\n\n timer(100)\n .pipe(takeUntil(this._stopTimeout$))\n .subscribe(() => this.clear());\n } else {\n this.clear();\n }\n\n return this._isKeyPressed$.value;\n }\n\n clear() {\n this._isKeyPressed$.next(false);\n this._keyPressCount$.next(0);\n this._stopTimeout$.next();\n }\n}\n","import { inject, isSignal, NgZone, signal, Signal, untracked } from '@angular/core';\nimport { MaybeSignal } from './signal-data-utils';\n\nexport type SignalAnimatedNumberOptions = {\n /**\n * The initial value to start animating from.\n * If not provided, the animation will start from 0\n */\n initialValue?: number;\n\n /**\n * Duration of the animation in milliseconds.\n * @default 1000\n */\n duration?: number;\n\n /**\n * Easing function that takes a progress value (0 to 1) and returns an eased value (0 to 1).\n * Options:\n * - `easeLinear()`\n * - `easeIn()`\n * - `easeOut()`\n * - `easeInOut()`\n * - `easeElastic()`\n * - `easeOutBack()`\n * - `easeOutBackStrong()`\n * @default easeOut()\n */\n easing?: (t: number) => number;\n\n /**\n * Function to round the animated value.\n * @default (v: number) => Math.round(v)\n */\n round?: (value: number) => number;\n\n /**\n * Callback invoked when the animation starts.\n */\n onAnimationStart?: () => void;\n\n /**\n * Callback invoked when the animation ends.\n */\n onAnimationEnd?: () => void;\n};\n\nexport type AnimatedNumberSignal = Signal<number> & {\n /**\n * Starts the animation from the current value to the target value.\n * @returns The animated signal for chaining\n */\n play: () => AnimatedNumberSignal;\n\n /**\n * Resets the animation to the initial value and stops any ongoing animation.\n * @returns The animated signal for chaining\n */\n reset: () => AnimatedNumberSignal;\n\n /**\n * Stops the current animation at its current position.\n * @returns The animated signal for chaining\n */\n stop: () => AnimatedNumberSignal;\n};\n\n/**\n * Creates a signal that animates the transition of a numeric signal's value over time.\n */\nexport const signalAnimatedNumber = (\n source: MaybeSignal<number>,\n options: SignalAnimatedNumberOptions = {},\n): AnimatedNumberSignal => {\n const ngZone = inject(NgZone);\n const duration = options.duration ?? 1000;\n const easing = options.easing ?? easeOut;\n const round = options.round ?? ((v: number) => Math.round(v));\n\n const initialValue = options.initialValue ?? 0;\n const animatedValue = signal(initialValue);\n\n let rafId: number | null = null;\n let currentAnimatedValue = initialValue;\n\n const cancelAnimation = () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n };\n\n const readonlySignal = animatedValue.asReadonly() as AnimatedNumberSignal;\n\n const play = () => {\n const targetValue = isSignal(source) ? source() : source;\n\n cancelAnimation();\n\n const startValue = currentAnimatedValue;\n const startTime = performance.now();\n const delta = targetValue - startValue;\n\n // Skip animation if no change\n if (delta === 0) {\n options.onAnimationEnd?.();\n return readonlySignal;\n }\n\n options.onAnimationStart?.();\n\n ngZone.runOutsideAngular(() => {\n const animate = (timestamp: number) => {\n const elapsed = timestamp - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const easedProgress = easing(progress);\n\n const value = startValue + delta * easedProgress;\n currentAnimatedValue = value;\n\n untracked(() => {\n animatedValue.set(round(value));\n });\n\n if (progress < 1) {\n rafId = requestAnimationFrame(animate);\n } else {\n rafId = null;\n\n ngZone.run(() => {\n options.onAnimationEnd?.();\n });\n }\n };\n\n rafId = requestAnimationFrame(animate);\n });\n\n return readonlySignal;\n };\n\n const reset = () => {\n cancelAnimation();\n currentAnimatedValue = initialValue;\n animatedValue.set(initialValue);\n return readonlySignal;\n };\n\n const stop = () => {\n cancelAnimation();\n return readonlySignal;\n };\n\n readonlySignal.play = play;\n readonlySignal.reset = reset;\n readonlySignal.stop = stop;\n\n return readonlySignal;\n};\n\n/* Linear easing function */\nexport const easeLinear = (t: number) => t;\n\n/* Ease in (slow start) */\nexport const easeIn = (t: number) => t * t;\n\n/* Ease out (slow end) */\nexport const easeOut = (t: number) => t * (2 - t);\n\n/* Ease in-out (slow start and end) */\nexport const easeInOut = (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);\n\n/** Elastic easing function (overshoots) */\nexport const easeElastic = (t: number) => {\n const c4 = (2 * Math.PI) / 3;\n return t === 0 ? 0 : t === 1 ? 1 : Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;\n};\n\n/** Back easing function (overshoots slightly then settles) */\nexport const easeOutBack = (t: number) => {\n const c1 = 1.70158;\n const c3 = c1 + 1;\n return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);\n};\n\n/** Back easing function with more overshoot */\nexport const easeOutBackStrong = (t: number) => {\n const c1 = 2.5;\n const c3 = c1 + 1;\n return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);\n};\n","import { Signal, isSignal, linkedSignal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { AbstractControl } from '@angular/forms';\nimport { Observable, debounceTime, distinctUntilChanged, map, merge, of, startWith, switchMap } from 'rxjs';\nimport { equal } from '../utils';\n\nexport type ControlValueSignalOptions = {\n debounceTime?: number;\n\n /**\n * @default false\n */\n debounceFirst?: boolean;\n};\n\nexport const controlValueSignal = <\n TControlInput extends Signal<AbstractControl | null> | AbstractControl,\n TControl extends TControlInput extends Signal<infer TSignalControl> ? TSignalControl : TControlInput,\n>(\n control: TControlInput,\n options?: ControlValueSignalOptions,\n) => {\n type TValue = ReturnType<NonNullable<TControl>['getRawValue']>;\n\n const getRawValueSafe = (ctrl: Signal<AbstractControl | null> | AbstractControl | null): TValue | null => {\n try {\n return isSignal(ctrl) ? (ctrl()?.getRawValue() ?? null) : (ctrl?.getRawValue() ?? null);\n } catch {\n // Ignore errors. This can happen if the passed control is a required input and is not yet initialized.\n return null;\n }\n };\n\n const initialValue = getRawValueSafe(control);\n\n const controlStream = isSignal(control)\n ? toObservable<AbstractControl | null>(control)\n : of<AbstractControl | null>(control);\n\n const controlObs = controlStream.pipe(\n switchMap((ctrl) => {\n if (!ctrl) return of(null);\n\n const vcsObs = options?.debounceTime\n ? ctrl.valueChanges.pipe(debounceTime(options.debounceTime))\n : ctrl.valueChanges;\n\n return vcsObs.pipe(\n startWith(ctrl.getRawValue()),\n map(() => ctrl.getRawValue()),\n );\n }),\n );\n\n const obs: Observable<TValue | null> = !options?.debounceFirst ? merge(of(initialValue), controlObs) : controlObs;\n\n return toSignal(obs.pipe(distinctUntilChanged((a, b) => equal(a, b))), {\n initialValue,\n });\n};\n\n/**\n * The first item in the pair is the previous value and the second item is the current value.\n */\nexport const controlValueSignalWithPrevious = <T extends AbstractControl>(\n control: T,\n options?: ControlValueSignalOptions,\n) => {\n type TValue = ReturnType<NonNullable<T extends Signal<infer TSignalControl> ? TSignalControl : T>['getRawValue']>;\n\n const data = linkedSignal<TValue | null, [TValue | null, TValue | null]>({\n source: controlValueSignal(control, options),\n computation: (curr, prev) => [prev?.source ?? null, curr],\n });\n\n return data.asReadonly();\n};\n","import { coerceElement } from '@angular/cdk/coercion';\nimport {\n DOCUMENT,\n ElementRef,\n QueryList,\n Signal,\n computed,\n inject,\n isDevMode,\n isSignal,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Observable, map, pairwise, startWith } from 'rxjs';\n\nexport type SignalElementBindingComplexType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | Array<ElementRef<HTMLElement> | HTMLElement>\n | null\n | undefined;\n\nexport type SignalElementBindingType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | Observable<SignalElementBindingComplexType>\n | Signal<SignalElementBindingComplexType>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | ElementSignal;\n\nexport type ElementSignal = Signal<{\n currentElements: HTMLElement[];\n previousElements: HTMLElement[];\n}>;\n\nexport type ElementSignalValue = ReturnType<ElementSignal>;\n\nexport const isElementSignal = (el: unknown): el is ElementSignal => {\n if (!isSignal(el)) return false;\n\n const val = el();\n return typeof val === 'object' && val !== null && 'currentElements' in val && 'previousElements' in val;\n};\n\nexport const createDocumentElementSignal = (): ElementSignal => {\n const documentElement = inject(DOCUMENT).documentElement;\n return signal({\n currentElements: [documentElement],\n previousElements: [],\n });\n};\n\nexport const createEmptyElementSignal = (): ElementSignal =>\n signal({\n currentElements: [],\n previousElements: [],\n });\n\nconst areElementArraysEqual = (a: HTMLElement[], b: HTMLElement[]): boolean => {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\nconst areElementSignalValuesEqual = (a: ElementSignalValue, b: ElementSignalValue): boolean =>\n areElementArraysEqual(a.currentElements, b.currentElements) &&\n areElementArraysEqual(a.previousElements, b.previousElements);\n\nexport const buildElementSignal = (el: SignalElementBindingType | null | undefined): ElementSignal => {\n if (el === null || el === undefined) return createEmptyElementSignal();\n if (isElementSignal(el)) return el;\n\n if (el instanceof HTMLElement || el instanceof ElementRef) {\n const element = coerceElement(el);\n if (!element) return createEmptyElementSignal();\n\n return signal({\n currentElements: [element],\n previousElements: [],\n });\n }\n\n if (isSignal(el)) return createElementSignalFromSignal(el);\n\n return createElementSignalFromObservable(createElementsObservable(el));\n};\n\nconst createElementSignalFromSignal = (input: Signal<SignalElementBindingComplexType>): ElementSignal => {\n return linkedSignal({\n source: input,\n computation: (source, previous) => {\n const currentElements = coerceValueToElementArray(source);\n const previousElements = previous?.value.currentElements ?? [];\n\n return {\n currentElements,\n previousElements,\n };\n },\n equal: areElementSignalValuesEqual,\n });\n};\n\nconst createElementSignalFromObservable = (elements$: Observable<HTMLElement[]>): ElementSignal => {\n return toSignal(\n elements$.pipe(\n startWith([]),\n pairwise(),\n map(([previousElements, currentElements]) => {\n if (isDevMode()) {\n const invalidElement = currentElements.find((el) => el && !(el instanceof HTMLElement));\n if (invalidElement) {\n console.error(\n 'Received an element that is not an HTMLElement. You are probably using viewChild or contentChild on a component without the read option set to ElementRef.',\n invalidElement,\n );\n }\n }\n\n return {\n previousElements,\n currentElements,\n };\n }),\n ),\n {\n initialValue: {\n previousElements: [],\n currentElements: [],\n },\n equal: areElementSignalValuesEqual,\n },\n ) as ElementSignal;\n};\n\nconst coerceValueToElementArray = (value: SignalElementBindingComplexType): HTMLElement[] => {\n if (value === null || value === undefined) return [];\n\n const items = value instanceof QueryList ? value.toArray() : Array.isArray(value) ? value : [value];\n\n const result: HTMLElement[] = [];\n for (const item of items) {\n const el = coerceElement(item);\n if (el) result.push(el);\n }\n return result;\n};\n\nconst createElementsObservable = (\n input: Observable<SignalElementBindingComplexType> | QueryList<ElementRef<HTMLElement> | HTMLElement>,\n): Observable<HTMLElement[]> => {\n if (input instanceof QueryList) {\n return input.changes.pipe(\n startWith(input),\n map(() => coerceValueToElementArray(input)),\n );\n }\n\n return input.pipe(map(coerceValueToElementArray));\n};\n\nexport const firstElementSignal = (el: ElementSignal) =>\n computed(\n () => {\n const { currentElements, previousElements } = el();\n\n if (isDevMode() && currentElements.length > 1) {\n console.warn(\n 'More than one element is bound to the signal. Only the first element will be used.',\n currentElements,\n );\n }\n\n return {\n currentElement: currentElements[0] ?? null,\n previousElement: previousElements[0] ?? null,\n };\n },\n {\n equal: (a, b) => a.currentElement === b.currentElement && a.previousElement === b.previousElement,\n },\n );\n","import { afterNextRender, effect, signal } from '@angular/core';\nimport { nextFrame } from '../animations';\n\nexport const signalIsRendered = () => {\n const isRendered = signal(false);\n\n afterNextRender(() => isRendered.set(true));\n\n return isRendered.asReadonly();\n};\n\nexport const createIsRenderedSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n if (!value()) {\n console.error(\n 'Render signal was not set to true. This can cause unexpected behavior. Make sure to .bind() the render signal at the end of the constructor.',\n );\n }\n });\n\n return {\n state: value,\n bind: () => effect(() => value.set(true)),\n };\n};\n\nexport const createCanAnimateSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n value.set(true);\n });\n\n return {\n state: value.asReadonly(),\n };\n};\n","import { DestroyRef, effect, ElementRef, inject, NgZone, signal } from '@angular/core';\nimport { buildElementSignal, firstElementSignal, SignalElementBindingType } from './element';\nimport { signalIsRendered } from './render-utils';\n\nexport const signalElementMutations = (el: SignalElementBindingType, options?: MutationObserverInit) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const firstEl = firstElementSignal(elements);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const elementMutationsSignal = signal<MutationRecord | null>(null);\n\n const observer = new MutationObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n zone.run(() => elementMutationsSignal.set(entry));\n }\n });\n\n effect(() => {\n const els = firstEl();\n\n elementMutationsSignal.set(null);\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n observer.observe(els.currentElement, options);\n }\n });\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return elementMutationsSignal.asReadonly();\n};\n\nexport const signalHostElementMutations = (options?: MutationObserverInit) =>\n signalElementMutations(inject(ElementRef), options);\n","import { computed } from '@angular/core';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from './element';\nimport { signalElementMutations } from './element-mutations';\nimport { signalIsRendered } from './render-utils';\n\nexport const signalElementChildren = (el: SignalElementBindingType) => {\n const elements = buildElementSignal(el);\n const firstEl = firstElementSignal(elements);\n const isRendered = signalIsRendered();\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n\n return computed(\n () => {\n if (!isRendered()) return [];\n\n const els = firstEl();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM may affect the children of the element.\n elementMutations();\n\n if (!els.currentElement) return [];\n\n const children: HTMLElement[] = [];\n\n for (let index = 0; index < els.currentElement.children.length; index++) {\n const element = els.currentElement.children[index];\n\n if (element instanceof HTMLElement) {\n children.push(element);\n }\n }\n\n return children;\n },\n { equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) },\n );\n};\n","import {\n effect,\n EffectRef,\n ElementRef,\n inject,\n Injector,\n RendererStyleFlags2,\n runInInjectionContext,\n Signal,\n untracked,\n} from '@angular/core';\nimport { injectRenderer } from '../providers';\nimport { buildElementSignal, SignalElementBindingType } from './element';\n\nexport type BuildSignalEffectsConfig<T extends Record<string, Signal<unknown>>> = {\n /** The tokens to apply and their signal value */\n tokenMap: T;\n\n /** This function will be invoked for elements that were removed from the signal effects */\n cleanupFn: (el: HTMLElement, tokens: string[]) => void;\n\n /** This function will be invoked for elements that were added to the signal effects or when their signal value changes */\n updateFn: (el: HTMLElement, tokens: string[], conditionResult: unknown) => void;\n};\n\nexport const buildSignalEffects = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n config: BuildSignalEffectsConfig<T>,\n) => {\n const elements = buildElementSignal(el);\n const injector = inject(Injector);\n\n effect(() => {\n const { currentElements, previousElements } = elements();\n\n for (const previousEl of previousElements) {\n if (currentElements.includes(previousEl)) continue;\n\n const tokens = Object.keys(config.tokenMap)\n .map((key) => key.split(' '))\n .flat();\n\n if (!tokens.length) continue;\n\n config.cleanupFn(previousEl, tokens);\n }\n\n for (const currentEl of currentElements) {\n if (previousElements.includes(currentEl)) continue;\n\n for (const [tokens, condition] of Object.entries(config.tokenMap)) {\n untracked(() => {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) return;\n\n config.updateFn(currentEl, tokenArray, condition());\n });\n }\n }\n });\n\n const effects: Record<string, EffectRef> = {};\n\n const has = (tokens: string) => tokens in effects;\n\n const push = (tokens: string, signal: Signal<unknown>) => {\n if (has(tokens)) return;\n\n runInInjectionContext(injector, () => {\n effects[tokens] = effect(() => {\n const { currentElements } = untracked(() => elements());\n const value = signal();\n\n for (const el of currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.updateFn(el, tokenArray, value);\n }\n });\n });\n };\n\n const pushMany = (map: Record<string, Signal<unknown>>) => {\n for (const [tokens, signal] of Object.entries(map)) {\n push(tokens, signal);\n }\n };\n\n const remove = (tokens: string) => {\n effects[tokens]?.destroy();\n\n delete effects[tokens];\n\n for (const el of elements().currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.cleanupFn(el, tokenArray);\n }\n };\n\n const removeMany = (tokens: string[]) => {\n for (const token of tokens) {\n remove(token);\n }\n };\n\n pushMany(config.tokenMap);\n\n return { remove, removeMany, has, push, pushMany };\n};\n\nexport const signalClasses = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, classMap: T) => {\n const renderer = injectRenderer();\n\n return buildSignalEffects(el, {\n tokenMap: classMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => renderer.removeClass(el, token)),\n updateFn: (el, tokens, condition) => {\n if (!condition) {\n tokens.forEach((token) => renderer.removeClass(el, token));\n } else {\n tokens.forEach((token) => renderer.addClass(el, token));\n }\n },\n });\n};\n\nexport const signalHostClasses = <T extends Record<string, Signal<unknown>>>(classMap: T) =>\n signalClasses(inject(ElementRef), classMap);\n\nconst ALWAYS_TRUE_ATTRIBUTE_KEYS = ['disabled', 'readonly', 'required', 'checked', 'selected', 'hidden', 'inert'];\n\nexport const signalAttributes = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n attributeMap: T,\n) => {\n const renderer = injectRenderer();\n\n return buildSignalEffects(el, {\n tokenMap: attributeMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => el.removeAttribute(token)),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (ALWAYS_TRUE_ATTRIBUTE_KEYS.includes(token)) {\n if (condition) {\n renderer.setAttribute(el, token, '');\n } else {\n renderer.removeAttribute(el, token);\n }\n continue;\n }\n\n if (condition === null || condition === undefined) {\n renderer.removeAttribute(el, token);\n } else {\n renderer.setAttribute(el, token, `${condition}`);\n }\n }\n },\n });\n};\n\nexport const signalHostAttributes = <T extends Record<string, Signal<unknown>>>(attributeMap: T) =>\n signalAttributes(inject(ElementRef), attributeMap);\n\nexport const signalStyles = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, styleMap: T) => {\n const renderer = injectRenderer();\n\n return buildSignalEffects(el, {\n tokenMap: styleMap,\n cleanupFn: (el, tokens) =>\n tokens.forEach((token) =>\n renderer.removeStyle(el, token as keyof CSSStyleDeclaration, RendererStyleFlags2.DashCase),\n ),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (condition === null || condition === undefined) {\n renderer.removeStyle(el, token as keyof CSSStyleDeclaration, RendererStyleFlags2.DashCase);\n } else {\n renderer.setStyle(\n el,\n {\n [token]: `${condition}`,\n },\n RendererStyleFlags2.DashCase,\n );\n }\n }\n },\n });\n};\n\nexport const signalHostStyles = <T extends Record<string, Signal<unknown>>>(styleMap: T) =>\n signalStyles(inject(ElementRef), styleMap);\n","import { computed, DestroyRef, effect, ElementRef, inject, isDevMode, NgZone, signal, untracked } from '@angular/core';\nimport { equal } from '../utils';\nimport { buildElementSignal, firstElementSignal, SignalElementBindingType } from './element';\nimport { signalIsRendered } from './render-utils';\n\nexport type LogicalSize = {\n inlineSize: number;\n blockSize: number;\n};\n\nexport type ElementRect = {\n bottom: number;\n height: number;\n left: number;\n right: number;\n top: number;\n width: number;\n x: number;\n y: number;\n};\n\nexport type ElementSize = {\n width: number;\n height: number;\n};\n\nexport const boundingClientRectToElementRect = (rect: DOMRectReadOnly): ElementRect => ({\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width,\n x: rect.x,\n y: rect.y,\n});\n\nexport const createElementDimensions = (el: HTMLElement | null, rect?: DOMRect): NullableElementDimensions => {\n if (!el) {\n return {\n rect: null,\n client: null,\n scroll: null,\n offset: null,\n };\n }\n\n const cachedNormalizedRect = rect ? boundingClientRectToElementRect(rect) : null;\n const rectFn = () =>\n cachedNormalizedRect ? cachedNormalizedRect : boundingClientRectToElementRect(el.getBoundingClientRect());\n\n return {\n rect: rectFn,\n client: { width: el.clientWidth, height: el.clientHeight },\n scroll: { width: el.scrollWidth, height: el.scrollHeight },\n offset: { width: el.offsetWidth, height: el.offsetHeight },\n };\n};\n\nexport type ElementDimensions = {\n rect: () => ElementRect;\n client: ElementSize;\n scroll: ElementSize;\n offset: ElementSize;\n};\n\nexport type NullableElementDimensions = {\n [K in keyof ElementDimensions]: ElementDimensions[K] | null;\n};\n\nexport const signalElementDimensions = (el: SignalElementBindingType) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const firstEl = firstElementSignal(elements);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const initialValue = () => createElementDimensions(firstEl().currentElement);\n\n const elementDimensionsSignal = signal<NullableElementDimensions>(initialValue());\n\n const observer = new ResizeObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n const target = entry.target as HTMLElement;\n const newDimensions = createElementDimensions(target);\n\n zone.run(() => elementDimensionsSignal.set(newDimensions));\n }\n });\n\n effect(() => {\n const els = firstEl();\n\n untracked(() => {\n elementDimensionsSignal.set(initialValue());\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n const computedDisplay = getComputedStyle(els.currentElement).display;\n const currentElIsAngularComponent = els.currentElement?.tagName.toLowerCase().includes('-');\n\n if (computedDisplay === 'inline' && isDevMode() && currentElIsAngularComponent) {\n console.error(\n `Element <${els.currentElement?.tagName.toLowerCase()}> is an Angular component and has a display of 'inline'. Inline elements cannot be observed for dimensions. Please change it to 'block' or something else.`,\n );\n }\n\n observer.observe(els.currentElement);\n }\n });\n });\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return computed(() => elementDimensionsSignal(), {\n equal: (a, b) => equal(a, b),\n });\n};\n\nexport const signalHostElementDimensions = () => signalElementDimensions(inject(ElementRef));\n","import { DestroyRef, ElementRef, NgZone, Signal, effect, inject, signal, untracked } from '@angular/core';\nimport { isElementVisible } from '../utils';\nimport {\n ElementSignalValue,\n SignalElementBindingType,\n buildElementSignal,\n createEmptyElementSignal,\n firstElementSignal,\n} from './element';\nimport { signalIsRendered } from './render-utils';\n\nexport type SignalElementIntersectionOptions = Omit<IntersectionObserverInit, 'root'> & {\n root?: SignalElementBindingType;\n enabled?: Signal<boolean>;\n};\n\nexport type IntersectionObserverEntryWithDetails = IntersectionObserverEntry & {\n isAbove: boolean;\n isBelow: boolean;\n isLeft: boolean;\n isRight: boolean;\n isVisible: boolean;\n};\n\nconst createPositionObject = (entry: IntersectionObserverEntry) => {\n const boundingRect = entry.boundingClientRect;\n const rootBounds = entry.rootBounds;\n\n let isAbove = false;\n let isBelow = false;\n let isLeft = false;\n let isRight = false;\n\n if (rootBounds) {\n isAbove = boundingRect.bottom < rootBounds.top;\n isBelow = boundingRect.top > rootBounds.bottom;\n isLeft = boundingRect.right < rootBounds.left;\n isRight = boundingRect.left > rootBounds.right;\n }\n\n // We cant use entry.isIntersecting to determine actual visibility since we are using a big threshold array to get more intersection events.\n const isVisible = !isAbove && !isBelow && !isLeft && !isRight && entry.intersectionRatio > 0;\n\n return {\n isAbove,\n isBelow,\n isLeft,\n isRight,\n isVisible,\n };\n};\n\nexport const signalElementIntersection = (el: SignalElementBindingType, options?: SignalElementIntersectionOptions) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const root = firstElementSignal(options?.root ? buildElementSignal(options?.root) : createEmptyElementSignal());\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n const isEnabled = options?.enabled ?? signal(true);\n\n const elementIntersectionSignal = signal<IntersectionObserverEntryWithDetails[]>([]);\n const observer = signal<IntersectionObserver | null>(null);\n\n const currentlyObservedElements = new Set<HTMLElement>();\n\n const updateIntersections = (entries: IntersectionObserverEntry[]) => {\n let currentValues = [...elementIntersectionSignal()];\n\n for (const entry of entries) {\n const existingEntryIndex = currentValues.findIndex((v) => v.target === entry.target);\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n const roundedIntersectionRatio = Math.round(entry.intersectionRatio * 100) / 100;\n\n const intersectionEntry: IntersectionObserverEntryWithDetails = {\n boundingClientRect: entry.boundingClientRect,\n intersectionRatio: roundedIntersectionRatio,\n intersectionRect: entry.intersectionRect,\n isIntersecting: entry.isIntersecting,\n rootBounds: entry.rootBounds,\n target: entry.target,\n time: entry.time,\n ...createPositionObject(entry),\n };\n\n if (existingEntryIndex !== -1) {\n currentValues = [\n ...currentValues.slice(0, existingEntryIndex),\n intersectionEntry,\n ...currentValues.slice(existingEntryIndex + 1),\n ];\n } else {\n currentValues = [...currentValues, intersectionEntry];\n }\n }\n\n zone.run(() => elementIntersectionSignal.set(currentValues));\n };\n\n const updateIntersectionObserver = (rendered: boolean, enabled: boolean, rootEl: HTMLElement | null) => {\n observer()?.disconnect();\n currentlyObservedElements.clear();\n\n if (!rendered || !enabled) {\n observer.set(null);\n return;\n }\n\n const newObserver = new IntersectionObserver((entries) => updateIntersections(entries), {\n ...options,\n root: rootEl,\n });\n\n observer.set(newObserver);\n };\n\n const updateObservedElements = (observer: IntersectionObserver | null, elements: ElementSignalValue) => {\n const rootEl = root().currentElement;\n\n if (!observer) return;\n\n const currIntersectionValue = elementIntersectionSignal();\n const newIntersectionValue: IntersectionObserverEntryWithDetails[] = [];\n\n for (const el of elements.currentElements) {\n if (currentlyObservedElements.has(el)) {\n const existingEntryIndex = currIntersectionValue.findIndex((v) => v.target === el);\n const existingEntry = currIntersectionValue[existingEntryIndex];\n\n if (!existingEntry) {\n console.warn('Could not find existing entry for element. The intersection observer might be broken now.', el);\n continue;\n }\n\n newIntersectionValue.push(existingEntry);\n continue;\n }\n\n const initialElementVisibility = isElementVisible({\n container: rootEl,\n element: el,\n });\n\n if (!initialElementVisibility) {\n console.error('No visibility data found for element.', {\n element: el,\n container: rootEl,\n });\n\n continue;\n }\n\n const intersectionEntry: IntersectionObserverEntry = {\n boundingClientRect: initialElementVisibility.elementRect,\n intersectionRatio: initialElementVisibility.intersectionRatio,\n intersectionRect: initialElementVisibility.elementRect,\n isIntersecting: initialElementVisibility.isIntersecting,\n rootBounds: initialElementVisibility.containerRect,\n target: el,\n time: performance.now(),\n };\n\n newIntersectionValue.push({\n ...intersectionEntry,\n ...createPositionObject(intersectionEntry),\n });\n\n currentlyObservedElements.add(el);\n observer.observe(el);\n }\n\n for (const el of elements.previousElements) {\n if (elements.currentElements.includes(el)) continue;\n\n observer.unobserve(el);\n currentlyObservedElements.delete(el);\n }\n\n elementIntersectionSignal.set(newIntersectionValue);\n };\n\n effect(() => {\n const rootEl = root().currentElement;\n const rendered = isRendered();\n const enabled = isEnabled();\n\n untracked(() => updateIntersectionObserver(rendered, enabled, rootEl));\n });\n\n effect(() => {\n const els = elements();\n const obs = observer();\n\n untracked(() => updateObservedElements(obs, els));\n });\n\n destroyRef.onDestroy(() => observer()?.disconnect());\n\n return elementIntersectionSignal.asReadonly();\n};\n\nexport const signalHostElementIntersection = (options?: SignalElementIntersectionOptions) =>\n signalElementIntersection(inject(ElementRef), options);\n","import { DestroyRef, ElementRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { fromEvent, of, switchMap, tap } from 'rxjs';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from './element';\n\nexport type ElementLastScrollDirectionType = 'up' | 'down' | 'left' | 'right';\n\nexport type ElementLastScrollDirection = {\n type: ElementLastScrollDirectionType;\n time: number;\n};\n\nexport const signalElementLastScrollDirection = (el: SignalElementBindingType) => {\n const elements = buildElementSignal(el);\n const element = firstElementSignal(elements);\n const destroyRef = inject(DestroyRef);\n const lastScrollDirection = signal<ElementLastScrollDirection | null>(null);\n\n let lastScrollTop = 0;\n let lastScrollLeft = 0;\n\n toObservable(element)\n .pipe(\n switchMap(({ currentElement }) => {\n if (!currentElement) {\n lastScrollDirection.set(null);\n lastScrollTop = 0;\n lastScrollLeft = 0;\n\n return of(null);\n }\n\n return fromEvent(currentElement, 'scroll').pipe(\n tap(() => {\n const { scrollTop, scrollLeft } = currentElement;\n const time = Date.now();\n\n if (scrollTop > lastScrollTop) {\n lastScrollDirection.set({ type: 'down', time });\n } else if (scrollTop < lastScrollTop) {\n lastScrollDirection.set({ type: 'up', time });\n } else if (scrollLeft > lastScrollLeft) {\n lastScrollDirection.set({ type: 'right', time });\n } else if (scrollLeft < lastScrollLeft) {\n lastScrollDirection.set({ type: 'left', time });\n }\n\n lastScrollTop = scrollTop;\n lastScrollLeft = scrollLeft;\n }),\n );\n }),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe();\n\n return lastScrollDirection.asReadonly();\n};\n\nexport const signalHostElementLastScrollDirection = () => signalElementLastScrollDirection(inject(ElementRef));\n","import { ElementRef, Signal, computed, effect, inject } from '@angular/core';\nimport { equal } from '../utils';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from './element';\nimport { NullableElementDimensions, signalElementDimensions } from './element-dimensions';\nimport { signalElementMutations } from './element-mutations';\nimport { signalIsRendered } from './render-utils';\n\nexport type SignalElementScrollStateOptions = {\n /** The initial scroll position to scroll to. Once a truthy value get's emitted, all further values will be ignored. */\n initialScrollPosition?: Signal<ScrollToOptions | null>;\n};\n\nexport type ElementScrollState = {\n canScroll: boolean;\n canScrollHorizontally: boolean;\n canScrollVertically: boolean;\n elementDimensions: NullableElementDimensions;\n};\n\nexport const areScrollStatesEqual = (a: ElementScrollState, b: ElementScrollState) => {\n return (\n a.canScroll === b.canScroll &&\n a.canScrollHorizontally === b.canScrollHorizontally &&\n a.canScrollVertically === b.canScrollVertically &&\n equal(a.elementDimensions, b.elementDimensions)\n );\n};\n\nexport const signalElementScrollState = (el: SignalElementBindingType, options?: SignalElementScrollStateOptions) => {\n const elements = buildElementSignal(el);\n const observedEl = firstElementSignal(elements);\n const elementDimensions = signalElementDimensions(elements);\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n const isRendered = signalIsRendered();\n\n const initialScrollPosition = options?.initialScrollPosition;\n\n if (initialScrollPosition) {\n const ref = effect(() => {\n if (!isRendered()) return;\n\n const scrollPosition = initialScrollPosition();\n const element = observedEl().currentElement;\n\n if (scrollPosition && element) {\n if (scrollPosition.left !== undefined) element.scrollLeft = scrollPosition.left;\n if (scrollPosition.top !== undefined) element.scrollTop = scrollPosition.top;\n ref.destroy();\n }\n });\n }\n\n const notScrollable = (dimensions: NullableElementDimensions) => ({\n canScroll: false,\n canScrollHorizontally: false,\n canScrollVertically: false,\n elementDimensions: dimensions,\n });\n\n return computed<ElementScrollState>(\n () => {\n const element = observedEl().currentElement;\n const dimensions = elementDimensions();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM can affect the scroll state of the element.\n elementMutations();\n\n if (!element || !isRendered()) return notScrollable(dimensions);\n\n const { scrollWidth, scrollHeight, clientHeight, clientWidth } = element;\n\n const canScrollHorizontally = scrollWidth > clientWidth;\n const canScrollVertically = scrollHeight > clientHeight;\n\n return {\n canScroll: canScrollHorizontally || canScrollVertically,\n canScrollHorizontally,\n canScrollVertically,\n elementDimensions: dimensions,\n };\n },\n { equal: (a, b) => areScrollStatesEqual(a, b) },\n );\n};\n\nexport const signalHostElementScrollState = () => signalElementScrollState(inject(ElementRef));\n","import { Signal, WritableSignal, afterNextRender, effect, isDevMode, isSignal, signal, untracked } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { map, pairwise } from 'rxjs';\n\nexport const previousSignalValue = <T>(signal: Signal<T>) => {\n const obs = toObservable(signal).pipe(\n pairwise(),\n map(([prev]) => prev),\n );\n\n return toSignal(obs);\n};\n\nexport type SyncSignalOptions = {\n /**\n * If true, the target signal will not be updated with the source signal's value in a sync operation.\n * This should be set to true for signals that need to be initialized first before syncing (eg. required inputs)\n * @default false\n */\n skipSyncRead?: boolean;\n\n /**\n * If true, the first time the effect will be triggered will be skipped.\n * @default false\n */\n skipFirstRun?: boolean;\n};\n\nexport const syncSignal = <T>(from: Signal<T>, to: WritableSignal<T>, options?: SyncSignalOptions) => {\n let isFirstRun = options?.skipSyncRead ? false : true;\n\n if (!options?.skipSyncRead) {\n try {\n // this might throw if the signal is not yet initialized (eg. a required signal input inside the constructor)\n // in that case we just skip the initial sync\n to.set(from());\n } catch {\n isFirstRun = false;\n\n if (isDevMode()) {\n console.warn('Failed to sync signals. The target signal is not yet initialized.', { from, to });\n }\n }\n }\n\n const ref = effect(() => {\n const formVal = from();\n\n if (options?.skipFirstRun && isFirstRun) {\n isFirstRun = false;\n return;\n }\n\n untracked(() => {\n to.set(formVal);\n });\n });\n\n return ref;\n};\n\nexport type MaybeSignal<T> = T | Signal<T>;\n\nexport const maybeSignalValue = <T>(value: MaybeSignal<T>) => {\n if (isSignal(value)) {\n return value();\n }\n\n return value;\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a truthy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillTruthy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(() => {\n const val = source();\n\n if (val) {\n value.set(val);\n ref.destroy();\n }\n });\n\n return value.asReadonly();\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a falsy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillFalsy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(() => {\n const val = source();\n\n if (!val) {\n value.set(val);\n ref.destroy();\n }\n });\n\n return value.asReadonly();\n};\n\n/**\n * A writeable signal that will be set to the provided value once all inputs are set.\n * During that time, the signal will be set to `null`.\n */\nexport const deferredSignal = <T extends () => unknown>(valueFn: T) => {\n const valueSignal = signal<ReturnType<T> | null>(null);\n\n afterNextRender(() => {\n valueSignal.set(valueFn() as ReturnType<T>);\n });\n\n return valueSignal;\n};\n\nexport const memoizeSignal = <T>(factory: () => Signal<T>) => {\n let cached: Signal<T> | null = null;\n return () => {\n if (!cached) cached = factory();\n return cached;\n };\n};\n","import { computed, DOCUMENT, inject } from '@angular/core';\nimport { BuildMediaQueryOptions, injectBreakpointObserver, injectRenderer } from '../providers';\nimport { createDocumentElementSignal } from './element';\nimport { signalElementDimensions } from './element-dimensions';\nimport { memoizeSignal } from './signal-data-utils';\n\n/** Inject a signal containing a boolean value indicating if the viewport is xs */\nexport const injectIsXs = memoizeSignal(() => injectObserveBreakpoint({ max: 'xs' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is sm */\nexport const injectIsSm = memoizeSignal(() => injectObserveBreakpoint({ min: 'sm', max: 'sm' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is md */\nexport const injectIsMd = memoizeSignal(() => injectObserveBreakpoint({ min: 'md', max: 'md' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is lg */\nexport const injectIsLg = memoizeSignal(() => injectObserveBreakpoint({ min: 'lg', max: 'lg' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is xl */\nexport const injectIsXl = memoizeSignal(() => injectObserveBreakpoint({ min: 'xl', max: 'xl' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is 2xl */\nexport const injectIs2Xl = memoizeSignal(() => injectObserveBreakpoint({ min: '2xl' }));\n\n/**\n * Inject a boolean value indicating if the viewport is matching the provided options.\n * This value is not reactive. If you want to react to changes, use the {@link injectObserveBreakpoint} function instead.\n */\nexport const injectBreakpointIsMatched = (options: BuildMediaQueryOptions) =>\n injectBreakpointObserver().isBreakpointMatched(options);\n\n/**\n * Inject a boolean value indicating if the media query is matched.\n * This value is not reactive. If you want to react to changes, use the {@link injectObserveMediaQuery} function instead.\n */\nexport const injectMediaQueryIsMatched = (mediaQuery: string) =>\n injectBreakpointObserver().isMediaQueryMatched(mediaQuery);\n\n/**\n * Inject a signal containing a boolean value indicating if the viewport is matching the provided options.\n */\nexport const injectObserveBreakpoint = (options: BuildMediaQueryOptions) =>\n injectBreakpointObserver().observeBreakpoint(options);\n\n/**\n * Inject a signal containing a boolean value indicating if the media query is matched.\n */\nexport const injectObserveMediaQuery = (mediaQuery: string) => injectBreakpointObserver().observeMediaQuery(mediaQuery);\n\n/** Inject a signal containing the current breakpoint. */\nexport const injectCurrentBreakpoint = memoizeSignal(() => {\n const isXs = injectIsXs();\n const isSm = injectIsSm();\n const isMd = injectIsMd();\n const isLg = injectIsLg();\n const isXl = injectIsXl();\n const is2Xl = injectIs2Xl();\n\n return computed(() => {\n switch (true) {\n case is2Xl():\n return '2xl';\n case isXl():\n return 'xl';\n case isLg():\n return 'lg';\n case isMd():\n return 'md';\n case isSm():\n return 'sm';\n case isXs():\n default:\n return 'xs';\n }\n });\n});\n\n/** Inject a signal that indicates if the user is using a portrait display */\nexport const injectIsPortrait = memoizeSignal(() => injectObserveMediaQuery('(orientation: portrait)'));\n\n/** Inject a signal that indicates if the user is using a landscape display */\nexport const injectIsLandscape = memoizeSignal(() => injectObserveMediaQuery('(orientation: landscape)'));\n\n/** Inject a signal containing the current display orientation */\nexport const injectDisplayOrientation = memoizeSignal(() => {\n const isPortrait = injectIsPortrait();\n\n return computed(() => {\n if (isPortrait()) return 'portrait';\n return 'landscape';\n });\n});\n\n/** Inject a signal that indicates if the device has a touch input */\nexport const injectHasTouchInput = memoizeSignal(() => injectObserveMediaQuery('(pointer: coarse)'));\n\n/** Inject a signal that indicates if the device has a fine input (mouse or stylus) */\nexport const injectHasPrecisionInput = memoizeSignal(() => injectObserveMediaQuery('(pointer: fine)'));\n\n/** Inject a signal containing the current device input type */\nexport const injectDeviceInputType = memoizeSignal(() => {\n const isTouch = injectHasTouchInput();\n\n return computed(() => {\n if (isTouch()) return 'touch';\n return 'mouse';\n });\n});\n\n/** Inject a signal containing a boolean value indicating if the user can hover (eg. using a mouse) */\nexport const injectCanHover = memoizeSignal(() => injectObserveMediaQuery('(hover: hover)'));\n\n/** Inject a signal containing the viewport dimensions */\nexport const injectViewportDimensions = memoizeSignal(() => signalElementDimensions(createDocumentElementSignal()));\n\n/** Inject a signal containing the scrollbar dimensions. Dimensions will be 0 if scrollbars overlap the page contents (like on mobile). */\nexport const injectScrollbarDimensions = memoizeSignal(() => {\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n\n const scrollbarRuler = renderer.createElement('div');\n scrollbarRuler.style.width = '100px';\n scrollbarRuler.style.height = '100px';\n scrollbarRuler.style.overflow = 'scroll';\n scrollbarRuler.style.position = 'absolute';\n scrollbarRuler.style.top = '-9999px';\n scrollbarRuler.style.scrollbarWidth = getComputedStyle(document.documentElement).scrollbarWidth;\n renderer.appendChild(document.body, scrollbarRuler);\n\n const scrollContainerDimensions = signalElementDimensions(scrollbarRuler);\n\n return computed(() => {\n const client = scrollContainerDimensions().client;\n if (!client) return null;\n return {\n width: Math.max(0, 100 - client.width),\n height: Math.max(0, 100 - client.height),\n };\n });\n});\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, effect, inject, PLATFORM_ID } from '@angular/core';\nimport { injectRenderer } from '../../providers';\nimport { injectScrollbarDimensions, injectViewportDimensions } from '../media-queries';\n\nlet hasWrittenScrollbarSizes = false;\n\n/**\n * Applies scrollbar size CSS variables to the documentElement (html tag) in pixels.\n * - `--et-sw`: scrollbar width\n * - `--et-sh`: scrollbar height\n */\nexport const writeScrollbarSizeToCssVariables = () => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n if (hasWrittenScrollbarSizes) {\n return;\n }\n hasWrittenScrollbarSizes = true;\n\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const scrollbarDimensions = injectScrollbarDimensions();\n\n effect(() => {\n const dimensions = scrollbarDimensions();\n\n if (!dimensions) return;\n\n renderer.setCssProperties(document.documentElement, {\n '--et-sw': `${dimensions.width}px`,\n '--et-sh': `${dimensions.height}px`,\n });\n });\n};\n\nlet hasWrittenViewportSizes = false;\n\n/**\n * Applies viewport size CSS variables to the documentElement (html tag) in pixels.\n * - `--et-vw`: viewport width excluding scrollbar width\n * - `--et-vh`: viewport height excluding scrollbar height\n */\nexport const writeViewportSizeToCssVariables = () => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n if (hasWrittenViewportSizes) {\n return;\n }\n hasWrittenViewportSizes = true;\n\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const htmlElementDimensions = injectViewportDimensions();\n\n effect(() => {\n const dimensions = htmlElementDimensions().rect?.();\n\n if (!dimensions) return;\n\n renderer.setCssProperties(document.documentElement, {\n '--et-vw': `${dimensions.width}px`,\n '--et-vh': `${dimensions.height}px`,\n });\n });\n};\n","import { DOCUMENT, DestroyRef, Signal, computed, effect, inject, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, fromEvent, map, of, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { injectRenderer } from '../../providers';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from '../element';\nimport { signalElementScrollState } from '../element-scroll-state';\nimport { MaybeSignal, maybeSignalValue } from '../signal-data-utils';\n\nexport type CursorDragScrollDirection = 'horizontal' | 'vertical' | 'both';\n\nexport type CursorDragScrollOptions = {\n /** If true, cursor drag scrolling will be enabled. */\n enabled?: Signal<boolean>;\n\n /** The allowed scroll direction. */\n allowedDirection?: MaybeSignal<CursorDragScrollDirection>;\n};\n\n/** The deadzone in pixels after which the cursor drag scroll will take effect. */\nconst CURSOR_DRAG_SCROLL_DEADZONE = 5;\n\n/** The class that is added to the element when the cursor is being dragged. */\nconst CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nconst CURSOR_DRAG_INIT_CLASS = 'et-cursor-drag-scroll--init';\n\n/** A function to apply cursor drag scroll behavior to an element. */\nexport const useCursorDragScroll = (el: SignalElementBindingType, options?: CursorDragScrollOptions) => {\n const elements = buildElementSignal(el);\n const element = firstElementSignal(elements);\n const destroyRef = inject(DestroyRef);\n const { enabled = signal(true), allowedDirection = 'both' } = options ?? {};\n const scrollState = signalElementScrollState(elements);\n const renderer = injectRenderer();\n const isDragging = signal(false);\n const isInitDragging = signal(false);\n const initialDragPosition = signal({ x: 0, y: 0 });\n const initialScrollPosition = signal({ x: 0, y: 0 });\n const dragAmount = signal({ x: 0, y: 0 });\n const document = inject(DOCUMENT);\n\n const canScroll = computed(() => {\n const currentScrollState = scrollState();\n const direction = maybeSignalValue(allowedDirection);\n\n switch (direction) {\n case 'both':\n return currentScrollState.canScrollHorizontally || currentScrollState.canScrollVertically;\n case 'horizontal':\n return currentScrollState.canScrollHorizontally;\n case 'vertical':\n return currentScrollState.canScrollVertically;\n }\n });\n\n // Cleanup if the element the cursor drag scroll is bound to gets changed\n effect(() => {\n const { previousElement } = element();\n\n if (previousElement) {\n renderer.removeStyle(previousElement, 'cursor');\n }\n });\n\n // Conditionally apply styles/classes to the element and the document\n effect(() => {\n const currCanScroll = canScroll();\n const isEnabled = enabled();\n const currIsDragging = isDragging();\n const currIsInitDragging = isInitDragging();\n\n untracked(() => {\n const el = element().currentElement;\n\n if (!el) return;\n\n if (!currCanScroll || !isEnabled) {\n renderer.removeStyles(el, 'cursor', 'scrollSnapType', 'scrollBehavior');\n renderer.removeStyle(document.documentElement, 'cursor');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_INIT_CLASS);\n return;\n }\n\n if (currIsInitDragging) {\n renderer.addClass(el, CURSOR_DRAG_INIT_CLASS);\n }\n\n if (currIsDragging) {\n renderer.addClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.setStyle(el, {\n cursor: 'grabbing',\n scrollSnapType: 'none',\n scrollBehavior: 'unset',\n });\n\n renderer.setStyle(document.documentElement, {\n cursor: 'grabbing',\n });\n }\n\n if (!currIsInitDragging && !currIsDragging) {\n renderer.setStyle(el, {\n cursor: 'grab',\n });\n renderer.removeStyles(el, 'scrollSnapType', 'scrollBehavior');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_INIT_CLASS);\n renderer.removeStyle(document.documentElement, 'cursor');\n }\n });\n });\n\n // Update the element's scroll position when the user drags\n effect(() => {\n const currDragAmount = dragAmount();\n\n untracked(() => {\n const currIsDragging = isDragging();\n const el = element().currentElement;\n const { x: dragX, y: dragY } = currDragAmount;\n const { x: scrollX, y: scrollY } = initialScrollPosition();\n const currAllowedDirection = maybeSignalValue(allowedDirection);\n\n if (!el || !currIsDragging) return;\n\n switch (currAllowedDirection) {\n case 'both':\n el.scroll({\n top: dragY + scrollY,\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'horizontal':\n el.scroll({\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'vertical':\n el.scroll({\n top: dragY + scrollY,\n behavior: 'instant',\n });\n break;\n }\n });\n });\n\n const updateDragging = (e: MouseEvent) => {\n const el = element().currentElement;\n\n if (!el) return;\n\n const dx = (e.clientX - initialDragPosition().x) * -1;\n const dy = (e.clientY - initialDragPosition().y) * -1;\n\n dragAmount.set({ x: dx, y: dy });\n\n if (Math.abs(dx) > CURSOR_DRAG_SCROLL_DEADZONE || Math.abs(dy) > CURSOR_DRAG_SCROLL_DEADZONE) {\n isDragging.set(true);\n }\n };\n\n const updateDraggingEnd = () => {\n isDragging.set(false);\n isInitDragging.set(false);\n initialDragPosition.set({ x: 0, y: 0 });\n initialScrollPosition.set({ x: 0, y: 0 });\n dragAmount.set({ x: 0, y: 0 });\n };\n\n const setupDragging = (e: MouseEvent) => {\n const mouseUp = fromEvent<MouseEvent>(document, 'mouseup');\n const mouseMove = fromEvent<MouseEvent>(document, 'mousemove');\n const el = element().currentElement;\n\n if (!el) return;\n\n mouseMove\n .pipe(\n takeUntilDestroyed(destroyRef),\n takeUntil(mouseUp),\n tap((e) => updateDragging(e)),\n )\n .subscribe();\n\n mouseUp\n .pipe(\n take(1),\n takeUntilDestroyed(destroyRef),\n tap(() => updateDraggingEnd()),\n )\n .subscribe();\n\n initialDragPosition.set({ x: e.clientX, y: e.clientY });\n initialScrollPosition.set({ x: el.scrollLeft, y: el.scrollTop });\n isInitDragging.set(true);\n };\n\n toObservable(element)\n .pipe(\n map((e) => e?.currentElement),\n switchMap((el) => (el ? fromEvent<MouseEvent>(el, 'mousedown') : of(null))),\n filter((e): e is MouseEvent => !!e),\n filter(() => enabled()),\n tap((e) => setupDragging(e)),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return {\n isDragging: isDragging.asReadonly(),\n currentDragAmount: dragAmount.asReadonly(),\n };\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Injector,\n PLATFORM_ID,\n Signal,\n computed,\n effect,\n inject,\n linkedSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Data, Event, NavigationEnd, NavigationSkipped, Params, Router } from '@angular/router';\nimport { equal } from '../utils';\nimport { memoizeSignal, previousSignalValue } from './signal-data-utils';\n\nexport type RouterState = {\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n};\n\nexport const ET_PROPERTY_REMOVED = Symbol('ET_PROPERTY_REMOVED');\n\nexport type InjectUtilConfig = {\n /** The injector to use for the injection. Must be provided if the function is not called from within a injection context. */\n injector?: Injector;\n};\n\nexport type InjectUtilTransformConfig<In, Out> = {\n /**\n * A transform function similar to the `transform` function in Angular input bindings.\n * Can be used to transform the value before it is returned.\n * E.g. transforming `\"true\"` to `true` for a boolean attribute.\n */\n transform?: (value: In) => Out;\n};\n\nexport const transformOrReturn = <In, Out>(src: Signal<In>, config?: InjectUtilTransformConfig<In, Out>) => {\n const transformer = config?.transform;\n\n if (transformer) {\n return computed(() => transformer(src()));\n }\n\n return src as unknown as Signal<Out>;\n};\n\nconst createInitialRoute = () => {\n const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n const router = inject(Router);\n\n if (!isBrowser) {\n return router.url;\n }\n\n return window.location.pathname + window.location.search + window.location.hash;\n};\n\n/** Inject the current router event */\nexport const injectRouterEvent = memoizeSignal(() => {\n const router = inject(Router);\n\n const initialRoute = createInitialRoute();\n\n return toSignal(router.events, {\n initialValue: new NavigationEnd(-1, initialRoute, initialRoute),\n });\n});\n\n/**\n * Signal that indicates whether the router has been initialized.\n * The router is considered initialized once the first NavigationEnd event with an id different than -1 has been emitted.\n */\nexport const injectIsRouterInitialized = memoizeSignal(() => {\n const event = injectRouterEvent();\n\n return computed(() => {\n const e = event();\n\n return (e instanceof NavigationEnd && e.id !== -1) || e instanceof NavigationSkipped;\n });\n});\n\n/**\n * Inject the current url.\n * The url includes query params as well as the fragment. Use `injectRoute` instead if you are not intrusted in those.\n * @example \"/my-page?query=1¶m=true#fragment\"\n */\nexport const injectUrl = memoizeSignal(() => {\n const event = injectRouterEvent();\n\n return linkedSignal<Event | null, string>({\n source: event,\n computation: (curr, prev) => {\n if (curr instanceof NavigationEnd) {\n return curr.urlAfterRedirects;\n } else if (curr instanceof NavigationSkipped) {\n return curr.url;\n } else if (prev?.value) {\n return prev.value;\n }\n\n return createInitialRoute();\n },\n }).asReadonly();\n});\n\n/**\n * Inject the current route\n * @example \"/my-page\"\n */\nexport const injectRoute = memoizeSignal(() => {\n const url = injectUrl();\n\n return computed(() => {\n const fullUrl = url();\n const urlWithoutQueryParams = fullUrl.split('?')[0] ?? '';\n const withoutFragment = urlWithoutQueryParams.split('#')[0] ?? '';\n\n return withoutFragment;\n });\n});\n\nconst createRouterState = (router: Router) => {\n let route = router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n};\n\n/**\n * Inject the complete router state. This includes the current route data, path params, query params, title and fragment.\n */\nexport const injectRouterState = memoizeSignal(() => {\n const event = injectRouterEvent();\n const router = inject(Router);\n\n const routerState = signal<RouterState>(createRouterState(router));\n\n effect(() => {\n const e = event();\n\n untracked(() => {\n if (e instanceof NavigationEnd && e.id === -1) {\n return;\n } else {\n routerState.set(createRouterState(router));\n }\n });\n });\n\n return computed(() => routerState(), { equal });\n});\n\n/** Inject a signal containing the current route fragment (the part after the # inside the url if present) */\nexport const injectFragment = <T = string | null>(\n config?: InjectUtilConfig & InjectUtilTransformConfig<string | null, T>,\n) => {\n const routerState = injectRouterState();\n const fragment = computed(() => routerState().fragment);\n\n return transformOrReturn(fragment, config);\n};\n\n/** Inject all currently available query parameters as a signal */\nexport const injectQueryParams = () => {\n const routerState = injectRouterState();\n\n const queryParams = computed(() => routerState().queryParams);\n\n return queryParams;\n};\n\n/** Inject all currently available route data as a signal */\nexport const injectRouteData = () => {\n const routerState = injectRouterState();\n\n const data = computed(() => routerState().data);\n\n return data;\n};\n\n/** Inject the current route title as a signal */\nexport const injectRouteTitle = <T = string | null>(config?: InjectUtilTransformConfig<string | null, T>) => {\n const routerState = injectRouterState();\n const title = computed(() => routerState().title);\n\n return transformOrReturn(title, config);\n};\n\n/** Inject all currently available path parameters as a signal */\nexport const injectPathParams = () => {\n const routerState = injectRouterState();\n\n const pathParams = computed(() => routerState().pathParams);\n\n return pathParams;\n};\n\nexport type InjectQueryParamConfig<T> = InjectUtilTransformConfig<string | null, T> & {\n /**\n * If true, the initial value will be read from the browser's url.\n * Note that this will not work with arrays or complex objects.\n */\n requireSync?: boolean;\n};\n\nconst getQueryParamFromUrl = (key: string): string | null => {\n if (typeof window === 'undefined') return null;\n\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(key);\n};\n\n/** Inject a specific query parameter as a signal */\nexport const injectQueryParam = <T = string | null>(key: string, config?: InjectQueryParamConfig<T>) => {\n const queryParams = injectQueryParams();\n const src = computed(() => queryParams()[key] ?? (config?.requireSync ? getQueryParamFromUrl(key) : null)) as Signal<\n string | null\n >;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific route data item as a signal */\nexport const injectRouteDataItem = <T = unknown>(key: string, config?: InjectUtilTransformConfig<unknown, T>) => {\n const data = injectRouteData();\n const src = computed(() => data()[key] ?? null) as Signal<T>;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific path parameter as a signal */\nexport const injectPathParam = <T = string | null>(\n key: string,\n config?: InjectUtilTransformConfig<string | null, T>,\n) => {\n const pathParams = injectPathParams();\n const src = computed(() => pathParams()[key] ?? null) as Signal<string | null>;\n\n return transformOrReturn(src, config);\n};\n\n/**\n * Inject query params that changed during navigation. Unchanged query params will be ignored.\n * Removed query params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectQueryParamChanges = memoizeSignal(() => {\n const queryParams = injectQueryParams();\n const prevQueryParams = previousSignalValue(queryParams);\n\n return computed(() => {\n const current = queryParams();\n const previous = prevQueryParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n});\n\n/**\n * Inject path params that changed during navigation. Unchanged path params will be ignored.\n * Removed path params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectPathParamChanges = memoizeSignal(() => {\n const pathParams = injectPathParams();\n const prevPathParams = previousSignalValue(pathParams);\n\n return computed(() => {\n const current = pathParams();\n const previous = prevPathParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n});\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, inject, PLATFORM_ID } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { combineLatest, debounceTime, pairwise } from 'rxjs';\nimport { injectRoute, injectRouterState } from '../router';\n\nexport type SetupScrollRestorationConfig = {\n /**\n * The scrollable container.\n * @default document.documentElement\n */\n scrollElement?: HTMLElement;\n /**\n * A list of query params that should trigger a scroll to top.\n * @default []\n * @example ['page'] // will scroll to top when the page query param changes\n */\n queryParamTriggerList?: string[];\n /**\n * Config for fragment scrolling.\n */\n fragment?: {\n /**\n * Enable fragment scrolling (scroll to element with id)\n * @default false\n */\n enabled?: boolean;\n /**\n * Whether to use smooth scrolling or not.\n * @default false\n */\n smooth?: boolean;\n };\n};\n\nexport const ET_DISABLE_SCROLL_TOP = Symbol('ET_DISABLE_SCROLL_TOP');\nexport const ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE = Symbol('ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE');\nexport const ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE = Symbol('ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE');\n\nexport type RouterDisableScrollTopConfig = {\n /**\n * Whether to disable scroll to top ONLY when navigating back to this route.\n * @default false\n */\n asReturnRoute?: boolean;\n\n /**\n * Whether to disable scroll to top when a path param changes.\n * @default false\n */\n onPathParamChange?: boolean;\n};\n\nexport const routerDisableScrollTop = (config: RouterDisableScrollTopConfig = {}) => {\n return {\n ...(!config.asReturnRoute ? { [ET_DISABLE_SCROLL_TOP]: true } : { [ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE]: true }),\n ...(config.onPathParamChange ? { [ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE]: true } : {}),\n };\n};\n\nexport const setupScrollRestoration = (config: SetupScrollRestorationConfig = {}) => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n const state = injectRouterState();\n const route = injectRoute();\n const document = inject(DOCUMENT);\n\n combineLatest([toObservable(state).pipe(pairwise()), toObservable(route).pipe(pairwise())])\n .pipe(debounceTime(1))\n .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {\n const sameUrlNavigation = prevRoute === currRoute;\n const didFragmentChange = prevState.fragment !== currState.fragment;\n\n if (sameUrlNavigation) {\n const allQueryParams = [\n ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),\n ];\n\n const changedQueryParams = allQueryParams.filter(\n (key) => currState.queryParams[key] !== prevState.queryParams[key],\n );\n\n if (!config.queryParamTriggerList?.length && !didFragmentChange) {\n return;\n }\n\n const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));\n const caseFragment = didFragmentChange && config.fragment?.enabled;\n\n if (caseQueryParams) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n } else if (caseFragment) {\n const fragmentElement = document.getElementById(currState.fragment ?? '');\n\n if (fragmentElement) {\n fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });\n }\n }\n } else {\n const viaReturnRoute =\n currState.data[ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE] && prevState.data[ET_DISABLE_SCROLL_TOP];\n const explicitly = currState.data[ET_DISABLE_SCROLL_TOP];\n const pathParamsChange = currState.data[ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE];\n\n if (viaReturnRoute || explicitly || pathParamsChange) {\n return;\n }\n\n const el = config.scrollElement ?? document.documentElement;\n el.scrollTop = 0;\n }\n });\n};\n","import { injectQueryParam } from '../signals';\n\nexport const DISABLE_LOGGER_PARAM = 'et-logger-quiet';\n\nexport type CreateLoggerConfig = {\n scope: string;\n feature: string;\n};\n\nexport const createLogger = (config: CreateLoggerConfig) => {\n const { scope, feature } = config;\n const disableLogging = injectQueryParam(DISABLE_LOGGER_PARAM);\n\n const writeLog = (...args: unknown[]) => {\n if (disableLogging()) {\n return;\n }\n console.log(...args);\n };\n\n return {\n log: (...args: unknown[]) => writeLog(`\\x1B[32;40;24m[${scope} ${feature}]\\x1B[m`, ...args),\n warn: (...args: unknown[]) => writeLog(`\\x1B[93;40;24m[${scope} ${feature}]\\x1B[m`, ...args),\n error: (...args: unknown[]) => writeLog(`\\x1B[31;40;24m[${scope} ${feature}]\\x1B[m`, ...args),\n };\n};\n","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n\nexport const round = (value: number, precision = 0) => {\n const multiplier = Math.pow(10, precision);\n return Math.round(value * multiplier) / multiplier;\n};\n","export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\nexport const isArray = (value: unknown): value is unknown[] => {\n return Array.isArray(value);\n};\n\nexport const getObjectProperty = (obj: Record<string, unknown>, prop: string) => {\n const hasDotNotation = prop.includes('.');\n const hasBracketNotation = prop.includes('[');\n\n if (!hasDotNotation && !hasBracketNotation) return obj[prop];\n\n const props = prop.split('.');\n\n let value: unknown = obj;\n\n for (const prop of props) {\n if (!isObject(value)) return undefined;\n\n if (prop.includes('[')) {\n const [key, index] = prop.split('[').map((part) => part.replace(']', '')) as [string, string];\n const arr = value[key];\n if (!Array.isArray(arr)) return undefined;\n\n value = arr[+index];\n } else {\n value = value[prop];\n }\n }\n\n return value;\n};\n","import { clone } from './comparison';\n\nexport const RUNTIME_ERROR_NO_DATA = '__ET_NO_DATA__';\n\nexport class RuntimeError<T extends number> extends Error {\n constructor(\n public code: T,\n message: null | false | string,\n public devOnly = false,\n public data: unknown = RUNTIME_ERROR_NO_DATA,\n ) {\n super(formatRuntimeError<T>(code, message, devOnly));\n\n if (data !== RUNTIME_ERROR_NO_DATA) {\n try {\n const _data = clone(data);\n\n setTimeout(() => {\n console.error(_data);\n }, 1);\n } catch {\n setTimeout(() => {\n console.error(data);\n }, 1);\n }\n }\n }\n}\n\nexport function formatRuntimeError<T extends number>(\n code: T,\n message: null | false | string,\n devOnly: boolean,\n): string {\n // prefix code with zeros if it's less than 100\n const codeWithZeros = code < 10 ? `00${code}` : code < 100 ? `0${code}` : code;\n\n const fullCode = `ET${codeWithZeros}`;\n const devOnlyText = devOnly ? ' [DEV ONLY] ' : '';\n return `${devOnlyText}${fullCode}${message ? ': ' + message : ''}`;\n}\n","import { clamp } from './math';\n\n/**\n * Checks if an element or the viewport can scroll in a given direction.\n * @param element The element to check. If null/undefined, checks if the viewport can scroll.\n * @param direction The direction to check. If not provided, checks both directions.\n * @returns true if the element or viewport can scroll in the given direction.\n */\nexport const elementCanScroll = (element?: HTMLElement | null, direction?: 'x' | 'y') => {\n const el = element || document.documentElement;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = el;\n\n if (direction === 'x') {\n return scrollWidth > clientWidth;\n } else if (direction === 'y') {\n return scrollHeight > clientHeight;\n }\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\nconst createViewportRect = (): DOMRect =>\n ({\n left: 0,\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n width: window.innerWidth,\n height: window.innerHeight,\n x: 0,\n y: 0,\n toJSON: () => ({}),\n }) as DOMRect;\n\nexport type IsElementVisibleOptions = {\n /**\n * The element to check if it is visible inside a container.\n */\n element?: HTMLElement | null;\n\n /**\n * The container to check if the element is visible inside.\n * If null or undefined, uses the viewport as the container.\n * @default null (viewport)\n */\n container?: HTMLElement | null;\n\n /**\n * The container's rect to check if the element is visible inside. Can be supplied to reduce the amount of DOM reads.\n * Only used when container is provided and not null.\n * @default container.getBoundingClientRect()\n */\n containerRect?: DOMRect | null;\n\n /**\n * The element's rect. Can be supplied to reduce the amount of DOM reads.\n * @default element.getBoundingClientRect()\n */\n elementRect?: DOMRect | null;\n};\n\nexport type CurrentElementVisibility = {\n /**\n * Whether the element is visible in the inline direction.\n */\n inline: boolean;\n\n /**\n * Whether the element is visible in the block direction.\n */\n block: boolean;\n\n /**\n * The percentage of the element that is visible in the inline direction.\n */\n inlineIntersection: number;\n\n /**\n * The percentage of the element that is visible in the block direction.\n */\n blockIntersection: number;\n\n /**\n * Whether the element is intersecting the container.\n */\n isIntersecting: boolean;\n\n /**\n * The ratio of the element that is intersecting the container.\n */\n intersectionRatio: number;\n\n /**\n * The element that is being checked for visibility.\n */\n element: HTMLElement;\n\n /**\n * The container's rect used for the calculation.\n */\n containerRect: DOMRect;\n\n /**\n * The element's rect used for the calculation.\n */\n elementRect: DOMRect;\n};\n\nexport const isElementVisible = (options: IsElementVisibleOptions): CurrentElementVisibility | null => {\n const { container, element } = options;\n\n if (!element) {\n return null;\n }\n\n const elementRect = options.elementRect || element.getBoundingClientRect();\n const containerRect = container ? options.containerRect || container.getBoundingClientRect() : createViewportRect();\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return {\n inline: true,\n block: true,\n blockIntersection: 1,\n inlineIntersection: 1,\n intersectionRatio: 1,\n isIntersecting: true,\n element,\n containerRect,\n elementRect,\n };\n }\n\n const elLeft = elementRect.left;\n const elTop = elementRect.top;\n const elWidth = elementRect.width || 1;\n const elHeight = elementRect.height || 1;\n const elRight = elLeft + elWidth;\n const elBottom = elTop + elHeight;\n\n const conLeft = containerRect.left;\n const conTop = containerRect.top;\n const conRight = conLeft + containerRect.width;\n const conBottom = conTop + containerRect.height;\n\n const isElementInlineVisible = elLeft >= conLeft && elRight <= conRight;\n const isElementBlockVisible = elTop >= conTop && elBottom <= conBottom;\n\n const inlineIntersection = Math.min(elRight, conRight) - Math.max(elLeft, conLeft);\n const blockIntersection = Math.min(elBottom, conBottom) - Math.max(elTop, conTop);\n\n const inlineIntersectionPercentage = clamp(inlineIntersection / elWidth, 0, 1);\n const blockIntersectionPercentage = clamp(blockIntersection / elHeight, 0, 1);\n\n return {\n inline: isElementInlineVisible,\n block: isElementBlockVisible,\n inlineIntersection: inlineIntersectionPercentage,\n blockIntersection: blockIntersectionPercentage,\n isIntersecting: isElementInlineVisible && isElementBlockVisible,\n element,\n containerRect,\n elementRect,\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n intersectionRatio: Math.round(Math.min(inlineIntersectionPercentage, blockIntersectionPercentage) * 100) / 100,\n };\n};\n\nexport const getElementScrollCoordinates = (options: ScrollToElementOptions): ScrollToOptions => {\n const {\n container,\n element,\n direction,\n behavior = 'smooth',\n origin = 'nearest',\n scrollBlockMargin = 0,\n scrollInlineMargin = 0,\n } = options;\n\n if (!element || !container || !elementCanScroll(container)) {\n return {\n behavior,\n left: undefined,\n top: undefined,\n };\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const { scrollLeft, scrollTop } = container;\n const elWidth = elementRect.width;\n const elHeight = elementRect.height;\n const elLeft = elementRect.left;\n const elTop = elementRect.top;\n const elRight = elementRect.right;\n const elBottom = elementRect.bottom;\n\n const conWidth = containerRect.width;\n const conHeight = containerRect.height;\n const conLeft = containerRect.left;\n const conTop = containerRect.top;\n const conRight = containerRect.right;\n const conBottom = containerRect.bottom;\n\n const shouldScrollLeft = direction === 'inline' || direction === 'both' || !direction;\n const shouldScrollTop = direction === 'block' || direction === 'both' || !direction;\n\n let scrollLeftTo = scrollLeft;\n let scrollTopTo = scrollTop;\n\n const relativeTop = elTop - conTop;\n const relativeLeft = elLeft - conLeft;\n\n const calculateScrollToStart = () => {\n scrollLeftTo = scrollLeft + relativeLeft - scrollInlineMargin;\n scrollTopTo = scrollTop + relativeTop - scrollBlockMargin;\n };\n\n const calculateScrollToEnd = () => {\n scrollLeftTo = scrollLeft + relativeLeft - conWidth + elWidth + scrollInlineMargin;\n scrollTopTo = scrollTop + relativeTop - conHeight + elHeight + scrollBlockMargin;\n };\n\n const calculateScrollToCenter = () => {\n scrollLeftTo = scrollLeft + relativeLeft - conWidth / 2 + elWidth / 2;\n scrollTopTo = scrollTop + relativeTop - conHeight / 2 + elHeight / 2;\n };\n\n const calculateScrollToNearest = () => {\n const isAbove = elBottom < conTop;\n const isPartialAbove = elTop < conTop && elBottom > conTop;\n const isBelow = elTop > conBottom;\n const isPartialBelow = elTop < conBottom && elBottom > conBottom;\n\n const isLeft = elRight < conLeft;\n const isPartialLeft = elLeft < conLeft && elRight > conLeft;\n const isRight = elLeft > conRight;\n const isPartialRight = elLeft < conRight && elRight > conRight;\n\n if (isAbove || isPartialAbove || isLeft || isPartialLeft) {\n calculateScrollToStart();\n } else if (isBelow || isPartialBelow || isRight || isPartialRight) {\n calculateScrollToEnd();\n }\n };\n\n switch (origin) {\n case 'start':\n calculateScrollToStart();\n break;\n case 'end':\n calculateScrollToEnd();\n break;\n case 'center':\n calculateScrollToCenter();\n break;\n case 'nearest':\n calculateScrollToNearest();\n break;\n }\n\n return {\n behavior,\n left: shouldScrollLeft ? scrollLeftTo : undefined,\n top: shouldScrollTop ? scrollTopTo : undefined,\n };\n};\n\nexport type ScrollToElementOptions = {\n /**\n * The element to scroll to.\n */\n element?: HTMLElement | null;\n\n /**\n * The scroll container to scroll to the element in.\n * Must be provided - cannot scroll the viewport programmatically with this function.\n */\n container?: HTMLElement | null;\n\n /**\n * The direction to scroll in.\n * @default 'both'\n */\n direction?: 'inline' | 'block' | 'both';\n\n /**\n * The origin of the element to scroll to.\n * @default 'nearest'\n */\n origin?: 'start' | 'end' | 'center' | 'nearest';\n\n /**\n * The scroll behavior.\n * @default 'smooth'\n */\n behavior?: ScrollBehavior;\n\n /**\n * The scroll inline-margin\n * @default 0\n */\n scrollInlineMargin?: number;\n\n /**\n * The scroll block-margin\n * @default 0\n */\n scrollBlockMargin?: number;\n};\n\nexport const scrollToElement = (options: ScrollToElementOptions) => {\n options.container?.scrollTo(getElementScrollCoordinates(options));\n};\n","import { ApplicationRef, inject, signal } from '@angular/core';\nimport { createRootProvider } from '../utils';\n\nexport const [, injectAngularRootElement] = createRootProvider(() => {\n const appRef = inject(ApplicationRef);\n\n const rootElement = signal<HTMLElement | null>(null);\n\n const poll = () => {\n const appComponents = appRef.components;\n if (appComponents.length > 0) {\n rootElement.set(appComponents[0]?.location.nativeElement);\n } else {\n setTimeout(poll, 25);\n }\n };\n\n setTimeout(poll);\n\n return rootElement;\n});\n","import { computed, DOCUMENT, ElementRef, inject, signal } from '@angular/core';\nimport { createProvider } from '../utils';\n\nexport const [provideBoundaryElement, injectBoundaryElement, BOUNDARY_ELEMENT_TOKEN] = createProvider(\n () => {\n const hostElement = inject<ElementRef<HTMLElement>>(ElementRef, { optional: true });\n const document = inject(DOCUMENT);\n\n const override = signal<HTMLElement | null>(null);\n\n const value = computed(() => override() ?? hostElement?.nativeElement ?? document.documentElement);\n\n return {\n value,\n override,\n };\n },\n { name: 'Boundary Element' },\n);\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\n\nexport type Vec2 = [number, number];\n\nexport type ViewportConfig = {\n breakpoints: {\n xs: Vec2;\n sm: Vec2;\n md: Vec2;\n lg: Vec2;\n xl: Vec2;\n '2xl': Vec2;\n };\n};\n\nexport type Breakpoint = keyof ViewportConfig['breakpoints'];\n\n/**\n * Default viewport config based on Tailwind CSS.\n * @see https://tailwindcss.com/docs/screens\n */\nexport const DEFAULT_VIEWPORT_CONFIG: ViewportConfig = {\n breakpoints: {\n xs: [0, 639],\n sm: [640, 767],\n md: [768, 1023],\n lg: [1024, 1279],\n xl: [1280, 1535],\n '2xl': [1536, Infinity],\n },\n};\n\nexport const [provideViewportConfig, injectViewportConfig] = createStaticRootProvider<ViewportConfig>(\n DEFAULT_VIEWPORT_CONFIG,\n {\n name: 'Viewport Config',\n },\n);\n\nexport type BuildMediaQueryOptions = {\n min?: number | Breakpoint;\n max?: number | Breakpoint;\n};\n\nexport const [provideBreakpointObserver, injectBreakpointObserver] = createRootProvider(\n () => {\n const breakpointObserver = inject(BreakpointObserver);\n const viewportConfig = injectViewportConfig();\n\n const isMediaQueryMatched = (mediaQuery: string) => breakpointObserver.isMatched(mediaQuery);\n\n const observeMediaQuery = (mediaQuery: string) => {\n return toSignal(\n breakpointObserver.observe(mediaQuery).pipe(\n map((x) => x.matches),\n startWith(isMediaQueryMatched(mediaQuery)),\n ),\n { requireSync: true },\n );\n };\n\n const observeBreakpoint = (options: BuildMediaQueryOptions) => observeMediaQuery(buildMediaQueryString(options));\n\n const isBreakpointMatched = (options: BuildMediaQueryOptions) =>\n isMediaQueryMatched(buildMediaQueryString(options));\n\n const getBreakpointSize = (type: Breakpoint, option: 'min' | 'max') => {\n const index = option === 'min' ? 0 : 1;\n const size = viewportConfig.breakpoints[type][index];\n\n if (size === Infinity || size === 0) {\n return size;\n }\n\n if (option === 'min') {\n return size;\n }\n\n // Due to scaling, the actual size of the viewport may be a decimal number.\n // Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px\n // and thus not matching any of the default breakpoints.\n return size + 0.9;\n };\n\n const buildMediaQueryString = (options: BuildMediaQueryOptions) => {\n if (!options.min && !options.max) {\n throw new Error('At least one of min or max must be defined');\n }\n\n const mediaQueryParts: string[] = [];\n\n if (options.min) {\n if (typeof options.min === 'number') {\n mediaQueryParts.push(`(min-width: ${options.min}px)`);\n } else {\n mediaQueryParts.push(`(min-width: ${getBreakpointSize(options.min, 'min')}px)`);\n }\n }\n\n if (options.min && options.max) {\n mediaQueryParts.push('and');\n }\n\n if (options.max) {\n if (typeof options.max === 'number') {\n mediaQueryParts.push(`(max-width: ${options.max}px)`);\n } else {\n mediaQueryParts.push(`(max-width: ${getBreakpointSize(options.max, 'max')}px)`);\n }\n }\n\n return mediaQueryParts.join(' ');\n };\n\n return {\n observeBreakpoint,\n isBreakpointMatched,\n getBreakpointSize,\n buildMediaQueryString,\n observeMediaQuery,\n isMediaQueryMatched,\n };\n },\n { name: 'Breakpoint Observer' },\n);\n","import { DestroyRef, DOCUMENT, inject, signal } from '@angular/core';\nimport { createRootProvider } from '../utils/angular/di';\n\nexport const [provideFocusVisibleTracker, injectFocusVisibleTracker, FOCUS_VISIBLE_TRACKER_TOKEN] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const destroyRef = inject(DestroyRef);\n\n const isFocusVisible = signal(false);\n let hadKeyboardEvent = false;\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Tab' || e.key === 'Shift' || e.key === 'Meta' || e.key === 'Alt' || e.key === 'Control') {\n hadKeyboardEvent = true;\n isFocusVisible.set(true);\n }\n };\n\n const onPointerDown = () => {\n hadKeyboardEvent = false;\n isFocusVisible.set(false);\n };\n\n const onFocus = () => {\n if (hadKeyboardEvent) {\n isFocusVisible.set(true);\n }\n };\n\n const onBlur = () => {\n isFocusVisible.set(false);\n };\n\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('focus', onFocus, true);\n document.addEventListener('blur', onBlur, true);\n\n destroyRef.onDestroy(() => {\n document.removeEventListener('keydown', onKeyDown, true);\n document.removeEventListener('mousedown', onPointerDown, true);\n document.removeEventListener('pointerdown', onPointerDown, true);\n document.removeEventListener('touchstart', onPointerDown, true);\n document.removeEventListener('focus', onFocus, true);\n document.removeEventListener('blur', onBlur, true);\n });\n\n return {\n isFocusVisible: isFocusVisible.asReadonly(),\n };\n },\n { name: 'Focus Visible Tracker' },\n);\n","import { signal } from '@angular/core';\nimport { createRootProvider } from '../utils';\n\nexport const [provideLocale, injectLocale] = createRootProvider(\n () => {\n const currentLocale = signal('en');\n\n return {\n currentLocale,\n };\n },\n {\n name: 'Locale',\n },\n);\n","import { inject, RendererFactory2, RendererStyleFlags2 } from '@angular/core';\nimport { createRootProvider } from '../utils';\n\nexport const [provideRenderer, injectRenderer] = createRootProvider(\n () => {\n const rendererFactory = inject(RendererFactory2);\n const renderer = rendererFactory.createRenderer(null, null);\n\n const addClass = (element: HTMLElement, ...classes: string[]) => {\n classes.forEach((cls) => renderer.addClass(element, cls));\n };\n\n const removeClass = (element: HTMLElement, ...classes: string[]) => {\n classes.forEach((cls) => renderer.removeClass(element, cls));\n };\n\n const toggleClass = (element: HTMLElement, className: string, force?: boolean) => {\n const shouldAdd = force ?? !element.classList.contains(className);\n if (shouldAdd) {\n renderer.addClass(element, className);\n } else {\n renderer.removeClass(element, className);\n }\n return shouldAdd;\n };\n\n const setStyle = (\n element: HTMLElement,\n style: Partial<Record<keyof CSSStyleDeclaration, string | null>>,\n flags?: RendererStyleFlags2,\n ) => {\n Object.entries(style).forEach(([key, value]) => {\n if (!Number.isNaN(Number(key))) return;\n if (value !== null && value !== undefined) {\n renderer.setStyle(element, key, value, flags);\n } else {\n renderer.removeStyle(element, key, flags);\n }\n });\n };\n\n const removeStyle = (\n element: HTMLElement,\n style: keyof CSSStyleDeclaration | string,\n flags?: RendererStyleFlags2,\n ) => {\n if (!Number.isNaN(Number(style))) return;\n renderer.removeStyle(element, style as string, flags);\n };\n\n const removeStyles = (element: HTMLElement, ...styles: (keyof CSSStyleDeclaration | string)[]) => {\n styles.forEach((style) => removeStyle(element, style));\n };\n\n const setCssProperty = (element: HTMLElement, name: string, value: string | null) => {\n if (value !== null && value !== undefined) {\n renderer.setStyle(element, name, value, RendererStyleFlags2.DashCase);\n } else {\n renderer.removeStyle(element, name, RendererStyleFlags2.DashCase);\n }\n };\n\n const setCssProperties = (element: HTMLElement, properties: Record<string, string | null>) => {\n Object.entries(properties).forEach(([name, value]) => {\n setCssProperty(element, name, value);\n });\n };\n\n const setAttribute = (element: HTMLElement, name: string, value: string | null, namespace?: string | null) => {\n if (value !== null && value !== undefined) {\n renderer.setAttribute(element, name, value, namespace);\n } else {\n renderer.removeAttribute(element, name, namespace);\n }\n };\n\n const removeAttribute = (element: HTMLElement, ...names: string[]) => {\n names.forEach((name) => renderer.removeAttribute(element, name));\n };\n\n const setProperty = (element: HTMLElement, name: string, value: unknown) => {\n renderer.setProperty(element, name, value);\n };\n\n const setProperties = (element: HTMLElement, properties: Record<string, unknown>) => {\n Object.entries(properties).forEach(([name, value]) => {\n renderer.setProperty(element, name, value);\n });\n };\n\n const createElement = <K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n namespace?: string | null,\n ): HTMLElementTagNameMap[K] => {\n return renderer.createElement(tagName, namespace);\n };\n\n const createText = (value: string): Text => {\n return renderer.createText(value);\n };\n\n const createComment = (value: string): Comment => {\n return renderer.createComment(value);\n };\n\n const appendChild = (parent: HTMLElement, newChild: Node) => {\n renderer.appendChild(parent, newChild);\n };\n\n const insertBefore = (parent: Node, newChild: Node, refChild: Node | null) => {\n renderer.insertBefore(parent, newChild, refChild);\n };\n\n const removeChild = (parent: Node, oldChild: Node, isHostElement?: boolean) => {\n renderer.removeChild(parent, oldChild, isHostElement);\n };\n\n const selectRootElement = (selectorOrNode: string | HTMLElement, preserveContent?: boolean): HTMLElement => {\n return renderer.selectRootElement(selectorOrNode, preserveContent);\n };\n\n const parentNode = (node: Node): Node | null => {\n return renderer.parentNode(node);\n };\n\n const nextSibling = (node: Node): Node | null => {\n return renderer.nextSibling(node);\n };\n\n const setValue = (node: Node, value: string) => {\n renderer.setValue(node, value);\n };\n\n const listen = (\n target: HTMLElement | Window | Document | 'window' | 'document' | 'body',\n eventName: string,\n callback: (event: Event) => boolean | void,\n ): (() => void) => {\n return renderer.listen(target, eventName, callback);\n };\n\n const destroyNode = (node: Node) => {\n if (renderer.destroyNode) {\n renderer.destroyNode(node);\n }\n };\n\n const replaceChild = (parent: Node, newChild: Node, oldChild: Node) => {\n renderer.insertBefore(parent, newChild, oldChild);\n renderer.removeChild(parent, oldChild);\n };\n\n const empty = (element: HTMLElement) => {\n while (element.firstChild) {\n renderer.removeChild(element, element.firstChild);\n }\n };\n\n const setTextContent = (element: HTMLElement, text: string) => {\n renderer.setProperty(element, 'textContent', text);\n };\n\n const setInnerHTML = (element: HTMLElement, html: string) => {\n renderer.setProperty(element, 'innerHTML', html);\n };\n\n const setAttributes = (\n element: HTMLElement,\n attributes: Record<string, string | null>,\n namespace?: string | null,\n ) => {\n Object.entries(attributes).forEach(([name, value]) => {\n setAttribute(element, name, value, namespace);\n });\n };\n\n const setDataAttributes = (element: HTMLElement, data: Record<string, string | null>) => {\n Object.entries(data).forEach(([key, value]) => {\n setAttribute(element, `data-${key}`, value);\n });\n };\n\n return {\n addClass,\n removeClass,\n toggleClass,\n setStyle,\n removeStyle,\n removeStyles,\n setAttribute,\n removeAttribute,\n setProperty,\n setProperties,\n createElement,\n createText,\n createComment,\n appendChild,\n insertBefore,\n removeChild,\n selectRootElement,\n parentNode,\n nextSibling,\n setValue,\n listen,\n destroyNode,\n\n replaceChild,\n empty,\n setTextContent,\n setInnerHTML,\n setAttributes,\n setDataAttributes,\n setCssProperty,\n setCssProperties,\n\n renderer,\n };\n },\n { name: 'Angular Renderer' },\n);\n\nexport type AngularRenderer = NonNullable<ReturnType<typeof injectRenderer>>;\n","import { Observable } from 'rxjs';\n\nexport const nextFrame = (cb: () => void) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n};\n\nexport const fromNextFrame = () => {\n return new Observable<void>((observer) => {\n nextFrame(() => {\n observer.next();\n observer.complete();\n });\n });\n};\n\nexport const forceReflow = (element: HTMLElement = document.body) => {\n return element.offsetHeight;\n};\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, InjectionToken, model } from '@angular/core';\nimport { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, of, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { injectRenderer } from '../providers';\nimport { ANIMATABLE_TOKEN, AnimatableDirective, AnimationEndEvent } from './animatable.directive';\nimport { forceReflow, fromNextFrame } from './animation-utils';\n\nexport const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken<AnimatedLifecycleDirective>(\n 'ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN',\n);\n\nconst ANIMATION_CLASSES = {\n enterFrom: 'et-animation-enter-from',\n enterActive: 'et-animation-enter-active',\n enterTo: 'et-animation-enter-to',\n enterDone: 'et-animation-enter-done',\n enterInterrupt: 'et-animation-enter-interrupt',\n leaveFrom: 'et-animation-leave-from',\n leaveActive: 'et-animation-leave-active',\n leaveTo: 'et-animation-leave-to',\n leaveDone: 'et-animation-leave-done',\n leaveInterrupt: 'et-animation-leave-interrupt',\n} as const;\n\nconst FORCE_INVISIBLE_CLASS = 'et-force-invisible';\n\nexport type AnimatedLifecycleState = 'entering' | 'entered' | 'leaving' | 'left' | 'init';\n\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n ],\n hostDirectives: [AnimatableDirective],\n host: {\n class: FORCE_INVISIBLE_CLASS,\n },\n})\nexport class AnimatedLifecycleDirective implements AfterViewInit {\n private destroyRef = inject(DestroyRef);\n private cancelCurrentAnimation$ = new Subject<void>();\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private animatable = inject(ANIMATABLE_TOKEN);\n private renderer = injectRenderer();\n private element = this.elementRef.nativeElement;\n\n private isConstructed = false;\n private transitionIdCounter = 0;\n\n private forcedAtFrameId: number | null = null;\n private currentFrameId = 0;\n\n state$ = new BehaviorSubject<AnimatedLifecycleState>('init');\n\n stateChange = outputFromObservable(this.state$);\n\n skipNextEnter = model(false);\n\n constructor() {\n this.state$\n .pipe(\n tap((state) => {\n if (state !== 'init') {\n this.removeClass(FORCE_INVISIBLE_CLASS);\n } else {\n this.addClass(FORCE_INVISIBLE_CLASS);\n }\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n this.trackFrameId();\n }\n\n private trackFrameId() {\n const updateFrameId = () => {\n this.currentFrameId = requestAnimationFrame(updateFrameId);\n };\n this.currentFrameId = requestAnimationFrame(updateFrameId);\n\n this.destroyRef.onDestroy(() => {\n cancelAnimationFrame(this.currentFrameId);\n });\n }\n\n ngAfterViewInit(): void {\n this.isConstructed = true;\n }\n\n enter() {\n const currentState = this.state$.value;\n\n if (currentState === 'entering') return;\n\n if ((currentState === 'init' && !this.isConstructed) || this.skipNextEnter()) {\n this.updateState('entered');\n this.skipNextEnter.set(false);\n this.addClass(ANIMATION_CLASSES.enterDone);\n this.forcedAtFrameId = null;\n return;\n }\n\n const isInterrupting = currentState === 'leaving';\n\n this.updateState('entering');\n this.removeClass(ANIMATION_CLASSES.leaveDone);\n\n const previousCancel$ = this.cancelCurrentAnimation$;\n this.cancelCurrentAnimation$ = new Subject<void>();\n\n const transitionId = `enter-${++this.transitionIdCounter}`;\n this.animatable.setTransitionId(transitionId);\n\n const skipAnimation = this.forcedAtFrameId !== null && this.forcedAtFrameId === this.currentFrameId;\n this.forcedAtFrameId = null;\n\n if (skipAnimation) {\n this.removeClasses(\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n ANIMATION_CLASSES.leaveInterrupt,\n );\n this.updateState('entered');\n this.addClass(ANIMATION_CLASSES.enterDone);\n previousCancel$.next();\n previousCancel$.complete();\n return;\n }\n\n if (isInterrupting) {\n this.handleInterruptedTransition({\n removeClasses: [\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n ANIMATION_CLASSES.leaveInterrupt,\n ],\n addClasses: [ANIMATION_CLASSES.enterActive, ANIMATION_CLASSES.enterTo, ANIMATION_CLASSES.enterInterrupt],\n expectedState: 'entering',\n transitionId,\n onComplete: () => {\n this.updateState('entered');\n this.removeClasses(ANIMATION_CLASSES.enterActive, ANIMATION_CLASSES.enterTo);\n this.addClass(ANIMATION_CLASSES.enterDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n } else {\n this.handleNormalTransition({\n fromClass: ANIMATION_CLASSES.enterFrom,\n activeClass: ANIMATION_CLASSES.enterActive,\n toClass: ANIMATION_CLASSES.enterTo,\n expectedState: 'entering',\n transitionId,\n onComplete: () => {\n this.updateState('entered');\n this.removeClasses(ANIMATION_CLASSES.enterActive, ANIMATION_CLASSES.enterTo);\n this.addClass(ANIMATION_CLASSES.enterDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n }\n\n previousCancel$.next();\n previousCancel$.complete();\n }\n\n leave() {\n const currentState = this.state$.value;\n\n if (currentState === 'leaving') return;\n\n if (currentState === 'init') {\n this.updateState('left');\n this.addClass(ANIMATION_CLASSES.leaveDone);\n this.forcedAtFrameId = null;\n return;\n }\n\n const isInterrupting = currentState === 'entering';\n\n this.updateState('leaving');\n this.removeClass(ANIMATION_CLASSES.enterDone);\n\n const previousCancel$ = this.cancelCurrentAnimation$;\n this.cancelCurrentAnimation$ = new Subject<void>();\n\n const transitionId = `leave-${++this.transitionIdCounter}`;\n this.animatable.setTransitionId(transitionId);\n\n const skipAnimation = this.forcedAtFrameId !== null && this.forcedAtFrameId === this.currentFrameId;\n this.forcedAtFrameId = null;\n\n if (skipAnimation) {\n this.removeClasses(\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.enterInterrupt,\n );\n this.updateState('left');\n this.addClass(ANIMATION_CLASSES.leaveDone);\n previousCancel$.next();\n previousCancel$.complete();\n return;\n }\n\n if (isInterrupting) {\n this.handleInterruptedTransition({\n removeClasses: [\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.enterInterrupt,\n ],\n addClasses: [ANIMATION_CLASSES.leaveActive, ANIMATION_CLASSES.leaveTo, ANIMATION_CLASSES.leaveInterrupt],\n expectedState: 'leaving',\n transitionId,\n onComplete: () => {\n this.updateState('left');\n this.removeClasses(ANIMATION_CLASSES.leaveActive, ANIMATION_CLASSES.leaveTo);\n this.addClass(ANIMATION_CLASSES.leaveDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n } else {\n this.handleNormalTransition({\n fromClass: ANIMATION_CLASSES.leaveFrom,\n activeClass: ANIMATION_CLASSES.leaveActive,\n toClass: ANIMATION_CLASSES.leaveTo,\n expectedState: 'leaving',\n transitionId,\n onComplete: () => {\n this.updateState('left');\n this.removeClasses(ANIMATION_CLASSES.leaveActive, ANIMATION_CLASSES.leaveTo);\n this.addClass(ANIMATION_CLASSES.leaveDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n }\n\n previousCancel$.next();\n previousCancel$.complete();\n }\n\n forceEnteredState() {\n this.cancelCurrentAnimation$.next();\n\n this.updateState('entered');\n this.removeClasses(\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n );\n this.addClass(ANIMATION_CLASSES.enterDone);\n this.forcedAtFrameId = this.currentFrameId;\n }\n\n forceLeftState() {\n this.cancelCurrentAnimation$.next();\n\n this.updateState('left');\n this.removeClasses(\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n );\n this.addClass(ANIMATION_CLASSES.leaveDone);\n this.forcedAtFrameId = this.currentFrameId;\n }\n\n private handleNormalTransition(config: {\n fromClass: string;\n activeClass: string;\n toClass: string;\n expectedState: 'entering' | 'leaving';\n transitionId: string;\n onComplete: () => void;\n cancelSignal: Subject<void>;\n }) {\n const { fromClass, activeClass, toClass, expectedState, transitionId, onComplete, cancelSignal } = config;\n\n this.removeClasses(ANIMATION_CLASSES.enterInterrupt, ANIMATION_CLASSES.leaveInterrupt);\n\n this.addClass(fromClass);\n forceReflow();\n this.addClass(activeClass);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (this.state$.value === expectedState) {\n this.removeClass(fromClass);\n this.addClass(toClass);\n }\n }),\n switchMap(() => this.animatable.animationEnd$),\n filter((e) => this.state$.value === expectedState && !e.cancelled && e.transitionId === transitionId),\n tap(onComplete),\n take(1),\n takeUntil(cancelSignal),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private handleInterruptedTransition(config: {\n removeClasses: string[];\n addClasses: string[];\n expectedState: 'entering' | 'leaving';\n transitionId: string;\n onComplete: () => void;\n cancelSignal: Subject<void>;\n }) {\n const { removeClasses, addClasses, expectedState, transitionId, onComplete, cancelSignal } = config;\n\n this.removeClasses(...removeClasses);\n addClasses.forEach((cls) => this.addClass(cls));\n\n fromNextFrame()\n .pipe(\n switchMap(() => this.animatable.isAnimating$),\n take(1),\n switchMap((isAnimating) => {\n if (!isAnimating && this.state$.value === expectedState) {\n return of({ cancelled: false, transitionId } as AnimationEndEvent);\n }\n\n return this.animatable.animationEnd$.pipe(\n switchMap((e) => {\n if (e.transitionId === transitionId) {\n return of(e);\n }\n\n return this.animatable.isAnimating$.pipe(\n take(1),\n switchMap((stillAnimating) => {\n if (!stillAnimating && this.state$.value === expectedState) {\n return of({ cancelled: false, transitionId } as AnimationEndEvent);\n }\n\n return of(null);\n }),\n );\n }),\n filter((e): e is AnimationEndEvent => e !== null && e.transitionId === transitionId),\n );\n }),\n filter((e) => this.state$.value === expectedState && !e.cancelled),\n tap(() => onComplete()),\n take(1),\n takeUntil(cancelSignal),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private addClass(className: string) {\n this.renderer.addClass(this.element, className);\n }\n\n private removeClass(className: string) {\n this.renderer.removeClass(this.element, className);\n }\n\n private removeClasses(...classNames: string[]) {\n this.renderer.removeClass(this.element, ...classNames);\n }\n\n private updateState(newState: AnimatedLifecycleState) {\n this.state$.next(newState);\n }\n}\n","import { Directive, InjectionToken, TemplateRef, ViewContainerRef, inject, input } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, of, switchMap, tap } from 'rxjs';\nimport { ANIMATED_LIFECYCLE_TOKEN } from './animated-lifecycle.directive';\n\nexport const ANIMATED_IF_TOKEN = new InjectionToken<AnimatedIfDirective>('ANIMATED_IF_TOKEN');\n\n@Directive({\n selector: '[etAnimatedIf]',\n providers: [\n {\n provide: ANIMATED_IF_TOKEN,\n useExisting: AnimatedIfDirective,\n },\n ],\n})\nexport class AnimatedIfDirective {\n private templateRef = inject(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n private animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN);\n\n private hasView = false;\n\n ifValue = input<unknown>(null, { alias: 'etAnimatedIf' });\n\n constructor() {\n toObservable(this.ifValue)\n .pipe(\n switchMap((value) => {\n if (value) {\n if (!this.hasView) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n this.hasView = true;\n }\n\n this.animatedLifecycle.enter();\n\n return of(null);\n }\n\n if (!this.hasView) {\n return of(null);\n }\n\n this.animatedLifecycle.leave();\n\n return this.animatedLifecycle.state$.pipe(\n filter((state) => state === 'left'),\n tap(() => {\n this.viewContainerRef.clear();\n this.hasView = false;\n }),\n );\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n Injector,\n NgZone,\n Signal,\n StaticProvider,\n ViewContainerRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n isDevMode,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n MiddlewareData,\n OffsetOptions,\n Padding,\n Placement,\n arrow,\n autoUpdate,\n computePosition,\n flip,\n hide,\n limitShift,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\nimport { Subject, Subscription, filter, take, tap } from 'rxjs';\nimport { injectBoundaryElement } from '../providers';\nimport { signalElementDimensions } from '../signals';\nimport { ProvideThemeDirective } from '../theming';\nimport { AnimatedLifecycleDirective } from './animated-lifecycle.directive';\nimport { nextFrame } from './animation-utils';\n\nexport type AnimatedOverlayComponentBase = {\n animatedLifecycle: Signal<AnimatedLifecycleDirective | undefined>;\n setThemeFromProvider: (provider: ProvideThemeDirective) => void;\n};\n\nexport type AnimatedOverlayMountConfig<T> = {\n component: ComponentType<T>;\n providers?: StaticProvider[];\n data?: Partial<T>;\n themeProvider?: ProvideThemeDirective | null;\n};\n\nexport type AnimatedOverlayState = 'init' | 'mounting' | 'mounted' | 'unmounting' | 'unmounted';\n\n@Directive({\n selector: '[etAnimatedOverlay]',\n exportAs: 'etAnimatedOverlay',\n host: {\n class: 'et-animated-overlay',\n },\n standalone: true,\n})\nexport class AnimatedOverlayDirective<T extends AnimatedOverlayComponentBase> {\n private overlayService = inject(Overlay);\n private injector = inject(Injector);\n private viewContainerRef = inject(ViewContainerRef);\n private zone = inject(NgZone);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private rootBoundary = injectBoundaryElement({ optional: true });\n private destroyRef = inject(DestroyRef);\n\n private floatingElCleanupFn: (() => void) | null = null;\n private unmountSubscription: Subscription | null = null;\n\n placement = input<Placement | undefined>('bottom');\n fallbackPlacements = input<Placement[]>();\n offset = input<OffsetOptions | null>(null);\n arrowPadding = input<Padding | null>(4);\n viewportPadding = input<Padding | null>(8);\n autoResize = input(false, { transform: booleanAttribute });\n shift = input(true, { transform: booleanAttribute });\n autoHide = input(false, { transform: booleanAttribute });\n autoCloseIfReferenceHidden = input(false, { transform: booleanAttribute });\n referenceElement = input(this.elementRef.nativeElement);\n mirrorWidth = input(false, { transform: booleanAttribute });\n\n portal: ComponentPortal<T> | null = null;\n overlayRef: OverlayRef | null = null;\n componentRef: ComponentRef<T> | null = null;\n\n beforeOpened$ = new Subject<void>();\n afterOpened$ = new Subject<void>();\n beforeClosed$ = new Subject<void>();\n afterClosed$ = new Subject<void>();\n\n state = signal<AnimatedOverlayState>('init');\n\n isMounted = computed(() => this.state() === 'mounted');\n isMounting = computed(() => this.state() === 'mounting');\n isUnmounted = computed(() => this.state() === 'unmounted');\n isUnmounting = computed(() => this.state() === 'unmounting');\n\n canMount = computed(() => !this.isMounted() && !this.isMounting());\n canUnmount = computed(() => (this.isMounted() || this.isMounting()) && !this.isUnmounting());\n\n isHidden = signal(false);\n\n isMounted$ = toObservable(this.isMounted);\n isMounting$ = toObservable(this.isMounting);\n isUnmounted$ = toObservable(this.isUnmounted);\n isUnmounting$ = toObservable(this.isUnmounting);\n\n canMount$ = toObservable(this.canMount);\n canUnmount$ = toObservable(this.canUnmount);\n\n isHidden$ = toObservable(this.isHidden);\n\n referenceElementDimensions = signalElementDimensions(\n computed(() => (this.mirrorWidth() ? this.referenceElement() : null)),\n );\n\n constructor() {\n effect(() => {\n const dimensions = this.referenceElementDimensions();\n\n if (!dimensions || !this.mirrorWidth()) return;\n\n this.overlayRef?.updateSize({\n width: this.elementRef.nativeElement.offsetWidth,\n });\n });\n\n this.destroyRef.onDestroy(() => this.destroy());\n }\n\n mount(config: AnimatedOverlayMountConfig<T>): T | undefined {\n if (this.isUnmounting()) {\n if (!this.componentRef) {\n if (isDevMode()) {\n console.warn('AnimatedOverlayDirective: Cannot remount. Component ref is not available.');\n }\n return;\n }\n\n this.unmountSubscription?.unsubscribe();\n this.unmountSubscription = null;\n\n this.applyComponentData(config.data);\n this.applyThemeProvider(config.themeProvider);\n\n const lifecycle = this.componentRef.instance.animatedLifecycle();\n if (lifecycle) {\n this.state.set('mounting');\n this.beforeOpened$.next();\n\n lifecycle.enter();\n\n lifecycle.state$\n .pipe(\n filter((s) => s === 'entered'),\n tap(() => {\n if (this.state() === 'mounting') {\n this.state.set('mounted');\n this.afterOpened$.next();\n }\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n return this.componentRef.instance;\n }\n\n if (!this.canMount()) {\n if (isDevMode()) {\n console.warn('AnimatedOverlayDirective: Cannot mount. Component is already mounted or currently mounting.');\n }\n return;\n }\n\n const { component, providers, data, themeProvider } = config;\n\n this.state.set('mounting');\n this.beforeOpened$.next();\n\n const injector = Injector.create({\n parent: this.injector,\n providers: providers ?? [],\n });\n\n this.overlayRef = this.overlayService.create();\n this.portal = new ComponentPortal(component, this.viewContainerRef, injector);\n this.componentRef = this.overlayRef.attach(this.portal);\n\n this.applyComponentData(data);\n this.applyThemeProvider(themeProvider);\n this.updateOverlaySize();\n this.setupFloatingUI();\n\n return this.componentRef.instance;\n }\n\n unmount() {\n if (!this.isMounted() && !this.isMounting() && !this.isUnmounting()) {\n if (isDevMode()) {\n console.warn(`AnimatedOverlayDirective: Cannot unmount. Component is currently ${this.state()}`);\n }\n return;\n }\n\n if (this.isUnmounting()) {\n return;\n }\n\n if (!this.componentRef) {\n if (isDevMode()) {\n console.warn('AnimatedOverlayDirective: Cannot unmount. Component ref is not available.');\n }\n return;\n }\n\n this.state.set('unmounting');\n this.beforeClosed$.next();\n\n if (this.isHidden()) {\n this.destroy();\n return;\n }\n\n const lifecycle = this.componentRef.instance.animatedLifecycle();\n\n if (!lifecycle) {\n this.destroy();\n return;\n }\n\n lifecycle.leave();\n this.unmountSubscription = lifecycle.state$\n .pipe(\n filter((s) => s === 'left'),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.unmountSubscription = null;\n this.destroy();\n });\n }\n\n private applyComponentData(data?: Partial<T>) {\n if (!this.componentRef || !data) return;\n\n Object.assign(this.componentRef.instance, data);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n private applyThemeProvider(themeProvider?: ProvideThemeDirective | null) {\n if (!this.componentRef || !themeProvider) return;\n\n this.componentRef.instance.setThemeFromProvider(themeProvider);\n }\n\n private updateOverlaySize() {\n if (!this.overlayRef || !this.mirrorWidth()) return;\n\n this.overlayRef.updateSize({\n width: this.elementRef.nativeElement.offsetWidth,\n });\n }\n\n private setupFloatingUI() {\n this.zone.runOutsideAngular(() => {\n if (!this.componentRef) return;\n\n const floatingEl = this.componentRef.location.nativeElement as HTMLElement;\n const floatingElArrow = this.getFloatingArrow();\n\n floatingEl.classList.add('et-floating-element');\n\n const refEl = this.referenceElement();\n const boundary = this.rootBoundary?.value();\n\n this.floatingElCleanupFn = autoUpdate(refEl, floatingEl, () => {\n this.updateFloatingPosition(floatingEl, refEl, boundary, floatingElArrow);\n });\n\n this.waitForRenderAndAnimate();\n });\n }\n\n private getFloatingArrow(): HTMLElement | null {\n if (!this.componentRef) return null;\n\n return this.componentRef.location.nativeElement.querySelector('[et-floating-arrow]') as HTMLElement | null;\n }\n\n private updateFloatingPosition(\n floatingEl: HTMLElement,\n refEl: HTMLElement,\n boundary: HTMLElement | undefined,\n floatingElArrow: HTMLElement | null,\n ) {\n if (!this.componentRef) return;\n\n const middleware = this.buildFloatingMiddleware(floatingEl, boundary, floatingElArrow);\n\n computePosition(refEl, floatingEl, {\n placement: this.placement(),\n middleware,\n }).then(({ x, y, placement, middlewareData }) => {\n this.applyFloatingStyles(floatingEl, x, y, placement);\n this.applyArrowStyles(floatingEl, middlewareData, floatingElArrow);\n this.handleReferenceHidden(floatingEl, middlewareData);\n });\n }\n\n private buildFloatingMiddleware(\n floatingEl: HTMLElement,\n boundary: HTMLElement | undefined,\n floatingElArrow: HTMLElement | null,\n ) {\n const middleware = [];\n\n const offsetValue = this.offset();\n if (offsetValue !== null) {\n middleware.push(offset(offsetValue));\n }\n\n middleware.push(\n flip({\n fallbackPlacements: this.fallbackPlacements() ?? undefined,\n fallbackAxisSideDirection: 'start',\n boundary,\n }),\n );\n\n if (this.autoResize()) {\n middleware.push(\n size({\n padding: this.viewportPadding() ?? undefined,\n apply({ availableHeight, availableWidth }) {\n floatingEl.style.setProperty('--et-floating-max-width', `${availableWidth}px`);\n floatingEl.style.setProperty('--et-floating-max-height', `${availableHeight}px`);\n },\n }),\n );\n }\n\n if (this.shift()) {\n middleware.push(\n shift({\n limiter: limitShift(),\n padding: this.viewportPadding() ?? undefined,\n boundary,\n }),\n );\n }\n\n if (floatingElArrow) {\n middleware.push(arrow({ element: floatingElArrow, padding: this.arrowPadding() ?? undefined }));\n }\n\n if (this.autoHide() || this.autoCloseIfReferenceHidden()) {\n middleware.push(hide({ strategy: 'referenceHidden', boundary }));\n }\n\n return middleware;\n }\n\n private applyFloatingStyles(floatingEl: HTMLElement, x: number, y: number, placement: Placement) {\n floatingEl.style.setProperty('--et-floating-translate', `translate3d(${x}px, ${y}px, 0)`);\n floatingEl.setAttribute('et-floating-placement', placement);\n }\n\n private applyArrowStyles(\n floatingEl: HTMLElement,\n middlewareData: MiddlewareData,\n floatingElArrow: HTMLElement | null,\n ) {\n if (!middlewareData.arrow || !floatingElArrow) return;\n\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n floatingEl.style.setProperty('--et-floating-arrow-translate', `translate3d(${arrowX ?? 0}px, ${arrowY ?? 0}px, 0)`);\n }\n\n private handleReferenceHidden(floatingEl: HTMLElement, middlewareData: MiddlewareData) {\n if (middlewareData.hide?.referenceHidden) {\n if (this.autoCloseIfReferenceHidden()) {\n this.unmount();\n } else {\n floatingEl.classList.add('et-floating-element--hidden');\n this.isHidden.set(true);\n }\n } else if (this.autoHide()) {\n floatingEl.classList.remove('et-floating-element--hidden');\n this.isHidden.set(false);\n }\n }\n\n private waitForRenderAndAnimate() {\n nextFrame(() => {\n if (!this.componentRef || this.state() !== 'mounting') {\n return;\n }\n\n const lifecycle = this.componentRef.instance.animatedLifecycle?.();\n\n if (!lifecycle) {\n console.error(\n 'AnimatedOverlayDirective: The component does not have an AnimatedLifecycleDirective. Please add one to the component.',\n );\n return;\n }\n\n lifecycle.enter();\n\n lifecycle.state$\n .pipe(\n filter((s) => s === 'entered'),\n tap(() => {\n if (this.state() === 'mounting') {\n this.state.set('mounted');\n this.afterOpened$.next();\n }\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n });\n }\n\n private destroy() {\n this.zone.runOutsideAngular(() => {\n this.floatingElCleanupFn?.();\n });\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n\n this.state.set('unmounted');\n this.afterClosed$.next();\n }\n}\n","import { combineLatest, Subject } from 'rxjs';\n\ntype FlipAnimationGroupConfig = {\n /**\n * The elements to animate\n */\n elements: Array<HTMLElement | { element: HTMLElement; originElement?: HTMLElement }>;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n};\n\nexport const createFlipAnimationGroup = (config: FlipAnimationGroupConfig) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => {\n const element = 'element' in el ? el.element : el;\n const originElement = 'originElement' in el ? el.originElement : undefined;\n\n return createFlipAnimation({ element, originElement, duration, easing });\n });\n\n const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));\n const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));\n const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));\n\n const updateInit = () => {\n flips.forEach((animation) => animation.updateInit());\n };\n\n const play = () => {\n flips.forEach((animation) => animation.play());\n };\n\n const cancel = () => {\n flips.forEach((animation) => animation.cancel());\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$,\n onFinish$,\n onCancel$,\n };\n};\n\nexport type FlipAnimationConfig = {\n /**\n * The element to animate\n */\n element: HTMLElement;\n\n /**\n * The element to use as the origin for the animation\n * @default element\n */\n originElement?: HTMLElement;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n};\n\nexport const createFlipAnimation = (config: FlipAnimationConfig) => {\n const { element: el, originElement = el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = originElement.getBoundingClientRect();\n let animation: Animation | null = null;\n\n const onStart$ = new Subject<void>();\n const onFinish$ = new Subject<void>();\n const onCancel$ = new Subject<void>();\n\n const onAnimationFinish = () => {\n cleanup();\n onFinish$.next();\n };\n\n const onAnimationCancel = () => {\n cleanup();\n onCancel$.next();\n };\n\n const cleanup = () => {\n if (!animation) {\n return;\n }\n\n animation.removeEventListener('finish', onAnimationFinish);\n animation.removeEventListener('cancel', onAnimationCancel);\n };\n\n const updateInit = () => {\n initialRect = originElement.getBoundingClientRect();\n };\n\n const play = () => {\n const lastRect = el.getBoundingClientRect();\n\n const delta = {\n x: initialRect.left - lastRect.left,\n y: initialRect.top - lastRect.top,\n scaleX: initialRect.width / lastRect.width,\n scaleY: initialRect.height / lastRect.height,\n };\n\n animation = el.animate(\n [\n {\n transformOrigin: 'top left',\n transform: `\n translate(${delta.x}px, ${delta.y}px)\n scale(${delta.scaleX}, ${delta.scaleY})\n `,\n },\n {\n transformOrigin: 'top left',\n transform: 'none',\n },\n ],\n {\n duration,\n easing,\n fill: 'both',\n },\n );\n\n animation.addEventListener('finish', onAnimationFinish);\n animation.addEventListener('cancel', onAnimationCancel);\n\n onStart$.next();\n };\n\n const cancel = () => {\n animation?.cancel();\n\n cleanup();\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$: onStart$.asObservable(),\n onFinish$: onFinish$.asObservable(),\n onCancel$: onCancel$.asObservable(),\n };\n};\n","import { Directive, DOCUMENT, ElementRef, inject, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, tap } from 'rxjs';\n\n@Directive({\n selector: '[etClickOutside]',\n})\nexport class ClickOutsideDirective {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n\n didClickOutside = output<MouseEvent>({ alias: 'etClickOutside' });\n\n constructor() {\n fromEvent<MouseEvent>(this.document.documentElement, 'click')\n .pipe(\n tap((event) => {\n const activeElement = event.target as HTMLElement;\n const isInside = this.elementRef.nativeElement.contains(activeElement);\n\n if (isInside) return;\n\n this.didClickOutside.emit(event);\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n}\n","import {\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n})\nexport class RepeatDirective {\n private mainTemplateRef = inject<TemplateRef<unknown>>(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n\n repeatCount = input(2, { alias: 'etRepeat', transform: numberAttribute });\n\n views = linkedSignal<number, EmbeddedViewRef<unknown>[]>({\n source: this.repeatCount,\n computation: (count, previous) => {\n const prevCount = previous?.source ?? 0;\n const views: EmbeddedViewRef<unknown>[] = previous?.value ?? [];\n\n if (count === prevCount && previous?.value) {\n return previous.value;\n }\n\n const viewsToCreate = count - prevCount;\n\n if (viewsToCreate > 0) {\n for (let i = 0; i < viewsToCreate; i++) {\n views.push(this.viewContainerRef.createEmbeddedView(this.mainTemplateRef));\n }\n } else if (viewsToCreate < 0) {\n for (let i = 0; i < -viewsToCreate; i++) {\n this.viewContainerRef.remove(this.viewContainerRef.length - 1);\n }\n\n views.splice(viewsToCreate);\n }\n\n return views;\n },\n });\n\n constructor() {\n // Ugly but needed to trigger the linked signal.\n // Otherwise it has no consumers and won't run.\n effect(() => this.views());\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Translatable } from '../../utils';\n\n@Pipe({ name: 'etNormalizeGameResultType' })\nexport class NormalizeGameResultTypePipe implements PipeTransform {\n transform = normalizeGameResultType;\n}\n\nexport type NormalizedGameResultType = Translatable & {\n shortCode: string;\n};\n\n// TODO(TRB): Add correct type once provided by API\nexport const normalizeGameResultType = (type: string | null): NormalizedGameResultType | null => {\n if (!type) {\n return null;\n }\n\n switch (type) {\n case 'extra_time':\n return {\n i18n: 'game-result-type.extra-time',\n shortCode: 'AET',\n text: 'After Extra Time',\n };\n\n case 'penalty':\n return {\n i18n: 'game-result-type.penalty',\n shortCode: 'PSO',\n text: 'Penalty shootout',\n };\n\n case 'golden_goal':\n return {\n i18n: 'game-result-type.golden-goal',\n shortCode: 'GG',\n text: 'Golden Goal',\n };\n\n case 'default':\n default:\n return {\n i18n: 'game-result-type.full-time',\n shortCode: 'FT',\n text: 'Full Time',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatchListView } from '@ethlete/types';\nimport { MatchStateType } from './normalize-match-score.pipe';\n\n@Pipe({ name: 'etNormalizeMatchState' })\nexport class NormalizeMatchStatePipe implements PipeTransform {\n transform = normalizeMatchState;\n}\n\nexport const normalizeMatchState = (match: MatchListView | null | undefined) => {\n if (match?.isCompletedByReferee) {\n return MatchStateType.AUTO_WIN;\n } else if (match?.status === 'preparing') {\n return MatchStateType.PRE_MATCH;\n } else if (match?.status === 'started') {\n return MatchStateType.LIVE;\n } else if (match?.status === 'published' || match?.status === 'finished') {\n return MatchStateType.POST_MATCH;\n } else if (match?.round.state !== 'preparing') {\n return MatchStateType.PREPARING_ROUND;\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatchListView, ParticipantViewUnion } from '@ethlete/types';\nimport { Translatable } from '../../utils';\nimport { MatchStateType } from './normalize-match-score.pipe';\nimport { normalizeMatchState } from './normalize-match-state.pipe';\n\n@Pipe({ name: 'etNormalizeMatchParticipants' })\nexport class NormalizeMatchParticipantsPipe implements PipeTransform {\n transform = normalizeMatchParticipants;\n}\n\nexport type NormalizedMatchParticipants = {\n home: NormalizedMatchParticipant | null;\n away: NormalizedMatchParticipant | null;\n};\n\ntype NormalizedParticipantType = 'team' | 'player' | 'unknown';\n\nexport type NormalizedMatchParticipant =\n | ({\n type: 'tbd';\n participantType: NormalizedParticipantType;\n data: ParticipantViewUnion | null;\n } & Translatable)\n | {\n type: 'participant';\n participantType: NormalizedParticipantType;\n data: ParticipantViewUnion;\n }\n | ({\n type: 'none';\n participantType: NormalizedParticipantType;\n data: ParticipantViewUnion | null;\n } & Translatable);\n\nexport const normalizeMatchParticipants = (match: MatchListView | null): NormalizedMatchParticipants | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n return {\n home: normalizeMatchParticipant(match, 'home'),\n away: normalizeMatchParticipant(match, 'away'),\n };\n};\n\nexport const normalizeMatchParticipant = (\n match: MatchListView | null,\n side: 'home' | 'away',\n): NormalizedMatchParticipant | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n const participant = match[side];\n const participantType = match.home?.type ?? match.away?.type ?? 'unknown';\n\n if (!participant) {\n if (matchState === MatchStateType.POST_MATCH || matchState === MatchStateType.AUTO_WIN) {\n return {\n participantType,\n type: 'none',\n i18n: 'match-participant.none',\n text: 'No opponent',\n data: participant,\n };\n } else {\n return {\n participantType,\n type: 'tbd',\n i18n: 'match-participant.tbd',\n text: 'TBD',\n data: participant,\n };\n }\n } else {\n return {\n participantType,\n type: 'participant',\n data: participant,\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatchListView, MatchRankingView } from '@ethlete/types';\nimport { normalizeMatchState } from './normalize-match-state.pipe';\n\n@Pipe({ name: 'etNormalizeMatchScore' })\nexport class NormalizeMatchScorePipe implements PipeTransform {\n transform = normalizeMatchScore;\n}\n\nexport const enum MatchStateType {\n PREPARING_ROUND = 'preparingRound',\n PRE_MATCH = 'preMatch',\n LIVE = 'live',\n POST_MATCH = 'postMatch',\n AUTO_WIN = 'autoWin',\n}\n\nexport type NormalizedMatchScore = {\n home: {\n score: string | number | null;\n isWinner: boolean;\n };\n away: {\n score: string | number | null;\n isWinner: boolean;\n };\n subLine: string | null;\n isNumeric: boolean;\n};\n\nconst EMPTY_SCORE: NormalizedMatchScore = {\n home: { score: 'match-score.placeholder', isWinner: false },\n away: { score: 'match-score.placeholder', isWinner: false },\n isNumeric: false,\n subLine: null,\n};\n\nexport const normalizeMatchScore = (match: MatchListView | null | undefined): NormalizedMatchScore | null => {\n if (!match) {\n return null;\n }\n\n const matchState = normalizeMatchState(match);\n const subLine = getMatchScoreSubLine(match);\n\n if (!match.homeScore && !match.awayScore) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n if (isKnockoutMatch(match)) {\n if (matchState === MatchStateType.PRE_MATCH || matchState === MatchStateType.LIVE) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n return {\n home: {\n score: getKnockoutMatchScore(match.homeScore),\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: getKnockoutMatchScore(match.awayScore),\n isWinner: match.awayScore?.status === 'won',\n },\n subLine,\n isNumeric: false,\n };\n } else if (isGroupMatch(match)) {\n if (match.games.length === 1) {\n // Return the score if only one game has been played\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n } else {\n return {\n ...getGroupMatchPoints(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n } else {\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n};\n\nexport const isKnockoutMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return (\n match.matchType === 'single_elimination' ||\n match.matchType === 'double_elimination' ||\n match.matchType === 'fifa_swiss'\n );\n};\n\nexport const isGroupMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return match.matchType === 'groups' || match.matchType === 'league';\n};\n\nexport const getKnockoutMatchScore = (score: MatchRankingView | null | undefined) => {\n if (score?.status === 'won') {\n return 'match-score.knockout.won';\n } else if (score?.status === 'lost') {\n return 'match-score.knockout.lost';\n } else if (score?.status === 'tie') {\n return 'match-score.knockout.tie';\n }\n\n return null;\n};\n\nexport const getMatchScoreSubLine = (match: MatchListView | null | undefined) => {\n if (isKnockoutMatch(match)) {\n return null;\n } else if (isGroupMatch(match)) {\n return 'match-score.groups.sub-line';\n } else {\n return null;\n }\n};\n\nexport const getGroupMatchScore = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.ownPoints || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.ownPoints || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n\nexport const getGroupMatchPoints = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.score || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.score || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { StageType } from '@ethlete/types';\nimport { Translatable } from '../../utils';\n\n@Pipe({ name: 'etNormalizeMatchType' })\nexport class NormalizeMatchTypePipe implements PipeTransform {\n transform = normalizeMatchType;\n}\n\nexport const normalizeMatchType = (matchType: StageType | null | undefined): Translatable | null => {\n if (!matchType) {\n return null;\n }\n\n switch (matchType) {\n case 'double_elimination':\n return {\n i18n: 'match-type.double-elimination',\n text: 'Double Elimination',\n };\n case 'single_elimination':\n return {\n i18n: 'match-type.single-elimination',\n text: 'Single Elimination',\n };\n case 'fifa_swiss':\n return {\n i18n: 'match-type.fifa-swiss',\n text: 'FIFA Swiss',\n };\n case 'groups':\n return {\n i18n: 'match-type.groups',\n text: 'Groups',\n };\n case 'league':\n return {\n i18n: 'match-type.league',\n text: 'League',\n };\n case 'pools':\n return {\n i18n: 'match-type.pools',\n text: 'Pools',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'inferMimeType',\n})\nexport class InferMimeTypePipe implements PipeTransform {\n transform = inferMimeType;\n}\n\n/**\n * Infers the mime type of a given url or srcset.\n * If a srcset is provided, it will infer the mime type of the first url in the srcset.\n * If the srcset contains a query parameter `?fm=`, it will use the value of that parameter, since it is often used to specify the file format in image api's like contentful.\n */\nexport const inferMimeType = (srcset: string) => {\n if (!srcset) return null;\n\n const urls = srcset.split(',');\n const firstUrl = urls[0];\n\n if (!firstUrl) return null;\n\n // make sure the url does not end with something like x1, x2 or 400w, 800w... We need to remove these parts to get the correct file extension\n const urlParts = firstUrl.split(' ');\n const lastPart = urlParts[urlParts.length - 1];\n\n if (urlParts.length > 1 && !lastPart?.includes('/')) {\n urlParts.pop();\n }\n\n const cleanedUrl = urlParts.join(' ');\n\n const queryPart = cleanedUrl.split('?')[1] ?? '';\n const containsFm = queryPart.startsWith('fm=') || queryPart.includes('&fm=');\n let fileExtension: string | null = null;\n\n if (containsFm) {\n const fmIndex = queryPart.indexOf('fm=');\n const fmValue = queryPart\n .substring(fmIndex + 3)\n .split('&')[0]\n ?.toLowerCase();\n\n if (fmValue) {\n fileExtension = fmValue;\n }\n }\n\n if (!fileExtension) {\n const noQueryUrl = cleanedUrl.split('?')[0] || cleanedUrl;\n\n const lastDotIndex = noQueryUrl.lastIndexOf('.');\n\n if (lastDotIndex === -1) return null;\n\n fileExtension = noQueryUrl.substring(lastDotIndex + 1).toLowerCase();\n }\n\n if (fileExtension) {\n switch (fileExtension) {\n case 'avif':\n return 'image/avif';\n case 'bmp':\n return 'image/bmp';\n case 'gif':\n return 'image/gif';\n case 'ico':\n return 'image/vdn.microsoft.icon';\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n case 'svg':\n return 'image/svg+xml';\n case 'tif':\n case 'tiff':\n return 'image/tiff';\n case 'webp':\n return 'image/webp';\n case 'aac':\n return 'audio/aac';\n case 'abw':\n return 'application/x-abiword';\n case 'arc':\n return 'application/x-freearc';\n case 'avi':\n return 'video/x-msvideo';\n case 'azw':\n return 'application/vnd.amazon.ebook';\n case 'bin':\n return 'application/octet-stream';\n case 'bz':\n return 'application/x-bzip';\n case 'bz2':\n return 'application/x-bzip2';\n case 'cda':\n return 'application/x-cdf';\n case 'csh':\n return 'application/x-csh';\n case 'css':\n return 'text/css';\n case 'csv':\n return 'text/csv';\n case 'doc':\n return 'application/msword';\n case 'docx':\n return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n case 'eot':\n return 'application/vnd.ms-fontobject';\n case 'epub':\n return 'application/epub+zip';\n case 'gz':\n return 'application/gzip';\n case 'htm':\n case 'html':\n return 'text/html';\n case 'ics':\n return 'text/calendar';\n case 'jar':\n return 'application/java-archive';\n case 'js':\n return 'text/javascript';\n case 'json':\n return 'application/json';\n case 'jsonld':\n return 'application/ld+json';\n case 'mid':\n case 'midi':\n return 'audio/midi';\n case 'mjs':\n return 'text/javascript';\n case 'mp3':\n return 'audio/mpeg';\n case 'mp4':\n return 'video/mp4';\n case 'mpeg':\n return 'video/mpeg';\n case 'mpkg':\n return 'tapplication/vnd.apple.installer+xml';\n case 'odp':\n return 'application/vnd.oasis.opendocument.presentation';\n case 'ods':\n return 'application/vnd.oasis.opendocument.spreadsheet';\n case 'odt':\n return 'application/vnd.oasis.opendocument.text';\n case 'oga':\n return 'audio/ogg';\n case 'ogv':\n return 'video/ogg';\n case 'ogx':\n return 'application/ogg';\n case 'opus':\n return 'audio/opus';\n case 'otf':\n return 'font/otf';\n case 'pdf':\n return 'application/pdf';\n case 'php':\n return 'application/x-httpd-php';\n case 'ppt':\n return 'application/vnd.ms-powerpoint';\n case 'pptx':\n return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n case 'rar':\n return 'application/vnd.rar';\n case 'rtf':\n return 'application/rtf';\n case 'sh':\n return 'application/x-sh';\n case 'tar':\n return 'application/x-tar';\n case 'ts':\n return 'video/mp2t';\n case 'ttf':\n return 'font/ttf';\n case 'txt':\n return 'text/plain';\n case 'vsd':\n return 'application/vnd.visio';\n case 'wav':\n return 'audio/wav';\n case 'weba':\n return 'audio/webm';\n case 'webm':\n return 'video/webm';\n case 'woff':\n return 'font/woff';\n case 'woff2':\n return 'font/woff2';\n case 'xhtml':\n return 'application/xhtml+xml';\n case 'xls':\n return 'application/vnd.ms-excel';\n case 'xlsx':\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n case 'xml':\n return 'application/xml';\n case 'xul':\n return 'application/vnd.mozilla.xul+xml';\n case 'zip':\n return 'application/zip';\n case '3gp':\n return 'video/3gpp';\n case '3g2':\n return 'video/3gpp2';\n case '7z':\n return 'application/x-7z-compressed';\n\n default:\n return null;\n }\n }\n\n return null;\n};\n","import { Pipe, PipeTransform, TrackByFunction } from '@angular/core';\n\n@Pipe({ name: 'toArray' })\nexport class ToArrayPipe implements PipeTransform {\n transform = toArray;\n}\n\nexport const toArray = (value: number) => {\n return Array.from({ length: value }, (_, i) => i);\n};\n\nexport const toArrayTrackByFn: TrackByFunction<number> = (_, item) => item;\n","import { ElementRef, inject } from '@angular/core';\nimport { signalHostAttributes, signalHostClasses, signalHostStyles } from '../signals';\nimport { createComponentId } from '../utils';\n\nexport const createPropHandlers = () => {\n const id = createComponentId('et-props');\n\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n const classes = signalHostClasses({});\n const attributes = signalHostAttributes({});\n const styles = signalHostStyles({});\n\n return {\n classes,\n attributes,\n styles,\n id,\n elementRef,\n };\n};\n\nexport type PropHandlers = ReturnType<typeof createPropHandlers>;\n","import { computed, signal } from '@angular/core';\n\nexport const createElementDictionary = () => {\n const dictionary = {\n ids: signal<string[]>([]),\n elements: signal<Record<string, HTMLElement>>({}),\n };\n\n const firstElement = computed(() => {\n const id = dictionary.ids()[0];\n return id ? (dictionary.elements()[id] ?? null) : null;\n });\n\n const firstId = computed(() => {\n const id = dictionary.ids()[0];\n return id ?? null;\n });\n\n const ids = computed(() => dictionary.ids());\n const elements = computed(() => ids().map((id) => dictionary.elements()[id]!));\n\n const isEmpty = computed(() => dictionary.ids().length === 0);\n\n const has = (id: string) => {\n return dictionary.ids().includes(id);\n };\n\n const push = (id: string, element: HTMLElement) => {\n dictionary.ids.set([...dictionary.ids(), id]);\n dictionary.elements.set({ ...dictionary.elements(), [id]: element });\n };\n\n const remove = (id: string) => {\n dictionary.ids.set(dictionary.ids().filter((i) => i !== id));\n dictionary.elements.set(Object.fromEntries(Object.entries(dictionary.elements()).filter(([k]) => k !== id)));\n };\n\n const get = (id: string) => {\n return dictionary.elements()[id] ?? null;\n };\n\n return {\n ids,\n elements,\n has,\n get,\n push,\n remove,\n isEmpty,\n firstElement,\n firstId,\n };\n};\n","import { PropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\n\nexport type BindPropsOptions = {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n};\n\nexport const bindProps = (config: BindPropsOptions) => {\n const props = config.props as PropsInternal;\n const {\n attachEventListeners,\n classBindings,\n attributeBindings,\n styleBindings,\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n attached,\n single,\n name,\n bindId,\n attachedElements,\n } = props;\n\n const { attributes, classes, elementRef, id, styles } = config.handlers;\n const el = elementRef.nativeElement;\n\n if (attached()) {\n if (attachedElements.has(id)) {\n return;\n } else if (single) {\n const firstAttachedRefElement = attachedElements.first();\n\n console.error(\n `[${name}] These props can only be attached to a single element at a time.\\n\\n Already attached to \\n`,\n firstAttachedRefElement,\n '\\n Trying to attach to \\n',\n el,\n );\n\n return;\n }\n }\n\n attachedElements.push(id, el);\n\n if (bindId) {\n el.id = id;\n }\n\n if (classBindings) {\n classes.pushMany(classBindings);\n }\n\n if (attributeBindings) {\n attributes.pushMany(attributeBindings);\n }\n\n if (styleBindings) {\n styles.pushMany(styleBindings);\n }\n\n if (staticAttributeBindings) {\n for (const key in staticAttributeBindings) {\n el.setAttribute(key, `${staticAttributeBindings[key]}`);\n }\n }\n\n if (staticClassBindings) {\n el.classList.add(...staticClassBindings);\n }\n\n if (staticStyleBindings) {\n for (const key in staticStyleBindings) {\n el.style.setProperty(key, `${staticStyleBindings[key]}`);\n }\n }\n\n if (attachEventListeners) {\n attachEventListeners({\n on: el.addEventListener.bind(el),\n element: el,\n });\n }\n};\n\nexport type UnbindPropsOptions = {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n};\n\nexport const unbindProps = (config: UnbindPropsOptions) => {\n const props = config.props as PropsInternal;\n\n props.attachedElements.remove(config.handlers.id);\n};\n","import { DestroyRef, Signal, afterNextRender, computed, inject } from '@angular/core';\nimport { PropHandlers, createPropHandlers } from './create-prop-handlers';\nimport { createElementDictionary } from './element-dictionary';\nimport { bindProps, unbindProps } from './props-binding';\n\nexport type Props = Readonly<{\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElements;\n}>;\n\nexport type PropsAttachedElements = {\n first: Signal<HTMLElement | null>;\n firstId: Signal<string | null>;\n get(id: string): HTMLElement | null;\n};\n\nexport type PropsAttachedElementsInternal = PropsAttachedElements & {\n has: (id: string) => boolean;\n push: (id: string, element: HTMLElement) => void;\n remove: (id: string) => void;\n};\n\nexport type PropsInternal = {\n single: boolean;\n name: string;\n bindId: boolean;\n\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElementsInternal;\n\n classBindings: Record<string, Signal<unknown>> | null;\n attributeBindings: Record<string, Signal<unknown>> | null;\n styleBindings: Record<string, Signal<unknown>> | null;\n\n staticClassBindings: string[] | null;\n staticAttributeBindings: Record<string, unknown> | null;\n staticStyleBindings: Record<string, unknown> | null;\n\n attachEventListeners: ((context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void) | null;\n};\n\nexport type CreatePropsOptions = {\n name: string;\n bindId?: boolean;\n single?: boolean;\n classes?: Record<string, Signal<unknown>>;\n attributes?: Record<string, Signal<unknown>>;\n styles?: Record<string, Signal<unknown>>;\n staticClasses?: string[];\n staticAttributes?: Record<string, unknown>;\n staticStyles?: Record<string, unknown>;\n listeners?: (context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void;\n};\n\nexport const createProps = (props: CreatePropsOptions): Props => {\n const {\n bindId = false,\n single = true,\n classes: classBindings,\n attributes: attributeBindings,\n styles: styleBindings,\n staticAttributes: staticAttributeBindings = null,\n staticClasses: staticClassBindings = null,\n staticStyles: staticStyleBindings = null,\n listeners,\n name,\n } = props;\n\n const dictionary = createElementDictionary();\n const attached = computed(() => !dictionary.isEmpty());\n\n const attachedElements: PropsAttachedElementsInternal = {\n first: dictionary.firstElement,\n firstId: dictionary.firstId,\n\n has: dictionary.has,\n push: dictionary.push,\n remove: dictionary.remove,\n get: dictionary.get,\n };\n\n const data: PropsInternal = {\n name,\n single,\n bindId,\n\n attached,\n attachedElements,\n\n classBindings: classBindings ?? null,\n attributeBindings: attributeBindings ?? null,\n styleBindings: styleBindings ?? null,\n\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n\n attachEventListeners: listeners ?? null,\n };\n\n return data as Props;\n};\n\nexport type HostProps = {\n props: Props;\n handlers: PropHandlers;\n};\n\nexport const createHostProps = (props: CreatePropsOptions): HostProps => {\n const data = createProps(props);\n const handlers = createPropHandlers();\n\n afterNextRender({\n write: () => {\n bindProps({\n handlers,\n props: data,\n });\n },\n });\n\n const destroyRef = inject(DestroyRef);\n\n destroyRef.onDestroy(() => {\n unbindProps({\n handlers,\n props: data,\n });\n });\n\n return { props: data, handlers };\n};\n","import { afterNextRender } from '@angular/core';\n\nexport const createSetup = <T extends Record<string, unknown>>(config: {\n setupFn: (params: T) => void;\n this: ThisType<unknown>;\n}) => {\n let didCallSetup = false;\n\n afterNextRender(() => {\n if (!didCallSetup) {\n console.error('The setup() function was not called. Please call it inside your constructor.', config.this);\n return;\n }\n });\n\n return (params: T) => {\n if (didCallSetup) {\n console.error(\n 'The setup() function was already called. Please call it only once. \\n\\n',\n 'Instance containing the setup() call \\n',\n config.this,\n '\\n\\n Setup was called with\\n',\n params,\n );\n return;\n }\n\n didCallSetup = true;\n config.setupFn(params);\n };\n};\n","import { Injector, Signal, WritableSignal, effect, inject, runInInjectionContext } from '@angular/core';\n\nexport const createDependencyStash = <T extends Record<string, WritableSignal<unknown>>>(stash: T) => {\n const injector = inject(Injector);\n\n const provideSignal = <K extends keyof T>(data: { signal: Signal<ReturnType<T[K]>>; for: K }) => {\n runInInjectionContext(injector, () => {\n effect(() => {\n stash[data.for]!.set(data.signal());\n });\n });\n };\n\n const provideValue = <K extends keyof T>(data: { value: ReturnType<T[K]>; for: K }) => {\n stash[data.for]!.set(data.value);\n };\n\n return {\n ...stash,\n provideSignal,\n provideValue,\n };\n};\n","import { DestroyRef, Directive, afterNextRender, inject, input } from '@angular/core';\nimport { createPropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\nimport { bindProps, unbindProps } from './props-binding';\n\n@Directive({\n selector: '[etProps]',\n})\nexport class PropsDirective {\n destroyRef = inject(DestroyRef);\n\n props = input.required<PropsInternal, Props>({ alias: 'etProps', transform: (d) => d as PropsInternal });\n\n propHandlers = createPropHandlers();\n\n constructor() {\n afterNextRender({\n write: () => {\n bindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n },\n });\n\n this.destroyRef.onDestroy(() => {\n unbindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injector, Signal, TemplateRef, computed } from '@angular/core';\n\nexport type AnyTemplateType =\n | string\n | TemplateRef<unknown>\n | ComponentType<unknown>\n | TemplateRefWithContext\n | ComponentTypeWithInputs;\n\nexport type TemplateRefWithContext<T = Record<string, unknown> | undefined, J = unknown> = {\n template: TemplateRef<J>;\n context?: T;\n injector?: Injector;\n};\n\nexport type ComponentTypeWithInputs<T = Record<string, unknown> | undefined, J = unknown> = {\n component: ComponentType<J>;\n inputs?: T;\n injector?: Injector;\n};\n\nexport type StringTemplate = {\n type: 'string';\n value: string;\n};\n\nexport type NgTemplateTemplate = {\n type: 'template';\n value: TemplateRef<unknown>;\n context?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport type ComponentTemplate = {\n type: 'component';\n value: ComponentType<unknown>;\n inputs?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport const templateComputed = (templateSignal: Signal<AnyTemplateType | null>) =>\n computed((): StringTemplate | NgTemplateTemplate | ComponentTemplate | null => {\n const content = templateSignal();\n\n if (!content) return null;\n\n if (typeof content === 'string') {\n return {\n type: 'string',\n value: content,\n };\n }\n\n if (content instanceof TemplateRef) {\n return {\n type: 'template',\n value: content,\n injector: null,\n };\n }\n\n if ('component' in content) {\n return {\n type: 'component',\n value: content.component,\n inputs: content.inputs,\n injector: content.injector ?? null,\n };\n }\n\n if ('template' in content) {\n return {\n type: 'template',\n value: content.template,\n context: content.context,\n injector: content.injector ?? null,\n };\n }\n\n return {\n type: 'component',\n value: content,\n injector: null,\n };\n });\n","import { computed, DestroyRef, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport { MaybeSignal } from '../signals';\n\nexport type HeadBinding<T> = {\n id: symbol;\n value: T;\n priority?: number;\n};\n\nexport const applyHeadBinding = <T>(\n binding: MaybeSignal<T | null | undefined>,\n applyFn: (value: T) => void,\n removeFn: () => void,\n isValid?: (value: T | null | undefined) => value is T,\n) => {\n const destroyRef = inject(DestroyRef);\n const signalBinding = isSignal(binding) ? binding : signal(binding);\n\n const defaultIsValid = (value: T | null | undefined): value is T => value !== null && value !== undefined;\n\n const validator = isValid ?? defaultIsValid;\n\n const initialValue = untracked(() => signalBinding());\n if (validator(initialValue)) {\n applyFn(initialValue);\n }\n\n effect(() => {\n const value = signalBinding();\n if (validator(value)) {\n applyFn(value);\n } else {\n removeFn();\n }\n });\n\n destroyRef.onDestroy(() => {\n removeFn();\n });\n};\n\nexport const createPropertyBinding = <TConfig>(\n configBuilder: (value: string) => TConfig,\n applyConfigFn: (config: MaybeSignal<TConfig | null | undefined>) => void,\n) => {\n return (binding: MaybeSignal<string | null | undefined>) => {\n applyConfigFn(\n computed(() => {\n const value = untracked(() => (isSignal(binding) ? binding() : binding));\n return value ? configBuilder(value) : null;\n }),\n );\n };\n};\n\nexport const createArrayPropertyBinding = <TConfig>(\n configBuilder: (value: string, index: number) => TConfig,\n applyConfigFn: (config: MaybeSignal<TConfig | null | undefined>) => void,\n) => {\n return (binding: MaybeSignal<string[] | null | undefined>) => {\n const valuesSignal = isSignal(binding) ? binding : signal(binding);\n const valuesList = computed(() => untracked(() => valuesSignal()) ?? []);\n\n valuesList().forEach((value, index) => {\n applyConfigFn(computed(() => configBuilder(value, index)));\n });\n };\n};\n\nexport const toStringBinding = (\n binding: MaybeSignal<string | number | null | undefined>,\n): MaybeSignal<string | null | undefined> => {\n return computed(() => {\n const value = untracked(() => (isSignal(binding) ? binding() : binding));\n return value !== null && value !== undefined ? String(value) : null;\n });\n};\n\nexport const createBulkPropertyBinding = <TConfig extends Record<string, unknown>>(\n propertyPrefix: string,\n applyConfigFn: (property: string, binding: MaybeSignal<string | null | undefined>) => void,\n) => {\n return (config: TConfig) => {\n Object.entries(config).forEach(([key, value]) => {\n if (value !== undefined) {\n applyConfigFn(key, value as MaybeSignal<string | null | undefined>);\n }\n });\n };\n};\n","import { DOCUMENT } from '@angular/common';\nimport { computed, inject, isSignal, signal, untracked } from '@angular/core';\nimport { MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding, createArrayPropertyBinding, createPropertyBinding } from './head-binding';\n\nexport type LinkConfig = {\n rel: string;\n href: string;\n hreflang?: string;\n type?: string;\n sizes?: string;\n media?: string;\n as?: string;\n crossorigin?: string;\n integrity?: string;\n referrerpolicy?: string;\n\n /** Unique identifier for the link */\n key?: string;\n\n /** Whether multiple instances of this link are allowed */\n allowMultiple?: boolean;\n};\n\ntype LinkBinding = {\n config: LinkConfig;\n element: HTMLLinkElement;\n priority: number;\n};\n\nexport type LinkStoreConfig = {\n /**\n * Link rels that are allowed to have multiple instances\n * If you want to override the default set, extend your set from {@link DEFAULT_MULTI_INSTANCE_RELS}.\n * Otherwise, common multiple instance links may be removed unintentionally.\n * @example\n * ```ts\n * import { DEFAULT_MULTI_INSTANCE_RELS, provideLinkStoreConfig } from '@ethlete/core';\n *\n * provideLinkStoreConfig({\n * multiInstanceRels: new Set([\n * ...DEFAULT_MULTI_INSTANCE_RELS,\n * 'custom-rel',\n * ]),\n * });\n * ```\n */\n multiInstanceRels: Set<string>;\n};\n\nexport const DEFAULT_MULTI_INSTANCE_RELS = new Set([\n 'alternate',\n 'icon',\n 'apple-touch-icon',\n 'apple-touch-icon-precomposed',\n 'preconnect',\n 'dns-prefetch',\n 'preload',\n 'prefetch',\n 'prerender',\n 'stylesheet',\n 'modulepreload',\n]);\n\nexport const [provideLinkStoreConfig, injectLinkStoreConfig] = createStaticRootProvider<LinkStoreConfig>(\n {\n multiInstanceRels: DEFAULT_MULTI_INSTANCE_RELS,\n },\n { name: 'Link Store Config' },\n);\n\nexport const [provideLinkStore, injectLinkStore] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const config = injectLinkStoreConfig();\n const linksByKey = signal<Map<string, Map<symbol, LinkBinding>>>(new Map());\n let priorityCounter = 0;\n\n const getLinkKey = (linkConfig: LinkConfig): string => {\n const isMultiInstance = config.multiInstanceRels.has(linkConfig.rel) || linkConfig.allowMultiple;\n\n if (isMultiInstance) {\n const keyParts = [linkConfig.rel];\n\n if (linkConfig.hreflang) keyParts.push(`hreflang:${linkConfig.hreflang}`);\n if (linkConfig.media) keyParts.push(`media:${linkConfig.media}`);\n if (linkConfig.sizes) keyParts.push(`sizes:${linkConfig.sizes}`);\n if (linkConfig.type) keyParts.push(`type:${linkConfig.type}`);\n if (linkConfig.as) keyParts.push(`as:${linkConfig.as}`);\n\n // For resource hints, include href to make them unique per origin/resource\n if (['preconnect', 'dns-prefetch', 'preload', 'prefetch', 'modulepreload'].includes(linkConfig.rel)) {\n keyParts.push(`href:${linkConfig.href}`);\n }\n\n return keyParts.join('|');\n }\n\n return linkConfig.rel;\n };\n\n const isMultiInstanceLink = (key: string): boolean => {\n const rel = key.split('|')[0];\n\n if (!rel) return false;\n\n return config.multiInstanceRels.has(rel);\n };\n\n const createLinkElement = (linkConfig: LinkConfig): HTMLLinkElement => {\n const link = document.createElement('link');\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, allowMultiple, ...attributes } = linkConfig;\n\n Object.entries(attributes).forEach(([attrKey, value]) => {\n if (value !== undefined && value !== null) {\n link.setAttribute(attrKey, String(value));\n }\n });\n\n return link;\n };\n\n const applyActiveLinks = (key: string) => {\n const bindings = untracked(() => linksByKey().get(key));\n\n document.head.querySelectorAll(`link[data-link-key=\"${key}\"]`).forEach((el) => el.remove());\n\n if (!bindings || bindings.size === 0) {\n return;\n }\n\n const allowMultiple =\n isMultiInstanceLink(key) || Array.from(bindings.values()).some((b) => b.config.allowMultiple);\n\n if (allowMultiple) {\n const sortedBindings = Array.from(bindings.values()).sort((a, b) => a.priority - b.priority);\n\n sortedBindings.forEach((binding) => {\n binding.element.setAttribute('data-link-key', key);\n document.head.appendChild(binding.element);\n });\n } else {\n const activeBinding = Array.from(bindings.values()).reduce((highest, current) =>\n current.priority > highest.priority ? current : highest,\n );\n\n activeBinding.element.setAttribute('data-link-key', key);\n document.head.appendChild(activeBinding.element);\n }\n };\n\n const addLink = (id: symbol, linkConfig: LinkConfig) => {\n const key = getLinkKey(linkConfig);\n const priority = priorityCounter++;\n const element = createLinkElement(linkConfig);\n\n linksByKey.update((linkMap) => {\n const newLinkMap = new Map(linkMap);\n const keyBindings = newLinkMap.get(key) || new Map();\n\n keyBindings.set(id, { config: linkConfig, element, priority });\n newLinkMap.set(key, new Map(keyBindings));\n\n return newLinkMap;\n });\n\n applyActiveLinks(key);\n };\n\n const removeLink = (id: symbol, key?: string) => {\n if (key) {\n linksByKey.update((linkMap) => {\n const newLinkMap = new Map(linkMap);\n const keyBindings = newLinkMap.get(key);\n\n if (keyBindings) {\n keyBindings.delete(id);\n\n if (keyBindings.size === 0) {\n newLinkMap.delete(key);\n } else {\n newLinkMap.set(key, new Map(keyBindings));\n }\n }\n\n return newLinkMap;\n });\n\n applyActiveLinks(key);\n return;\n }\n\n linksByKey.update((linkMap) => {\n const newLinkMap = new Map(linkMap);\n let affectedKey: string | undefined;\n\n for (const [k, bindings] of newLinkMap) {\n if (bindings.has(id)) {\n bindings.delete(id);\n affectedKey = k;\n\n if (bindings.size === 0) {\n newLinkMap.delete(k);\n } else {\n newLinkMap.set(k, new Map(bindings));\n }\n break;\n }\n }\n\n if (affectedKey) {\n queueMicrotask(() => applyActiveLinks(affectedKey));\n }\n\n return newLinkMap;\n });\n };\n\n return { addLink, removeLink, getLinkKey };\n },\n { name: 'Link Store' },\n);\n\nexport const applyLinkBinding = (binding: MaybeSignal<LinkConfig | null | undefined>) => {\n const linkStore = injectLinkStore();\n const linkId = Symbol('link-tag');\n let currentKey: string | undefined;\n\n applyHeadBinding(\n binding,\n (config) => {\n currentKey = linkStore.getLinkKey(config);\n linkStore.addLink(linkId, config);\n },\n () => linkStore.removeLink(linkId, currentKey),\n );\n};\n\nexport const applyCanonicalBinding = createPropertyBinding((href) => ({ rel: 'canonical', href }), applyLinkBinding);\n\nexport const applyAlternateBinding = (hreflang: string, binding: MaybeSignal<string | null | undefined>) => {\n applyLinkBinding(\n computed(() => {\n const url = untracked(() => (isSignal(binding) ? binding() : binding));\n return url ? { rel: 'alternate', hreflang, href: url } : null;\n }),\n );\n};\n\nexport type AlternateLanguagesConfig = {\n [hreflang: string]: MaybeSignal<string | null | undefined>;\n};\n\nexport const applyAlternateLanguagesBindings = (config: AlternateLanguagesConfig) => {\n Object.entries(config).forEach(([hreflang, binding]) => {\n applyAlternateBinding(hreflang, binding);\n });\n};\n\nexport const applyPrevBinding = createPropertyBinding((href) => ({ rel: 'prev', href }), applyLinkBinding);\n\nexport const applyNextBinding = createPropertyBinding((href) => ({ rel: 'next', href }), applyLinkBinding);\n\nexport type ResourceHintsConfig = {\n preconnect?: MaybeSignal<string[] | null | undefined>;\n dnsPrefetch?: MaybeSignal<string[] | null | undefined>;\n prefetch?: MaybeSignal<string[] | null | undefined>;\n prerender?: MaybeSignal<string[] | null | undefined>;\n};\n\nexport const applyResourceHintsBindings = (config: ResourceHintsConfig) => {\n if (config.preconnect) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'preconnect', href, key: `preconnect:${index}` }),\n applyLinkBinding,\n )(config.preconnect);\n }\n\n if (config.dnsPrefetch) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'dns-prefetch', href, key: `dns-prefetch:${index}` }),\n applyLinkBinding,\n )(config.dnsPrefetch);\n }\n\n if (config.prefetch) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'prefetch', href, key: `prefetch:${index}` }),\n applyLinkBinding,\n )(config.prefetch);\n }\n\n if (config.prerender) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'prerender', href, key: `prerender:${index}` }),\n applyLinkBinding,\n )(config.prerender);\n }\n};\n","import { computed, effect, inject, signal } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { injectLocale } from '../providers';\nimport { injectIsRouterInitialized, MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding } from './head-binding';\n\nexport type TitlePart = {\n /** The text to be displayed as the title */\n text: string;\n\n /** Whether this part should be used as the starting point for the title construction */\n useAsStart?: boolean;\n};\n\nexport type TitleConfig = {\n /**\n * The divider string used between title parts\n * @default '|'\n */\n divider: string;\n\n /** The default title to use when no parts are available */\n defaultTitle: string;\n\n /**\n * A function to transform the title text based on locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (title: string, locale: string) => string;\n\n /**\n * A title part to be prefixed to all titles\n */\n suffixPart?: TitlePart;\n\n /**\n * A title part to be suffixed to all titles\n */\n prefixPart?: TitlePart;\n};\n\nexport const [provideTitleConfig, injectTitleConfig] = createStaticRootProvider<TitleConfig>(\n {\n divider: '|',\n defaultTitle: '',\n transformer: (title: string) => title,\n },\n { name: 'Title Config' },\n);\n\nexport const [provideTitleStore, injectTitleStore] = createRootProvider(\n () => {\n const config = injectTitleConfig();\n const titleParts = signal<Map<symbol, TitlePart>>(new Map());\n const { currentLocale } = injectLocale();\n const titleService = inject(Title);\n const isRouterInitialized = injectIsRouterInitialized();\n\n const defaultTitle = config.defaultTitle ?? titleService.getTitle();\n\n const title = computed(() => {\n const partsMap = titleParts();\n\n if (!partsMap.size || !isRouterInitialized()) {\n return config.transformer(defaultTitle, currentLocale());\n }\n\n const parts = Array.from(partsMap.values());\n const finalTextParts: string[] = [];\n\n for (let index = parts.length - 1; index > -1; index--) {\n const part = parts[index];\n if (!part) continue;\n\n const text = config.transformer(part.text, currentLocale());\n finalTextParts.unshift(text);\n\n if (part.useAsStart) break;\n }\n\n if (config.prefixPart?.text) {\n finalTextParts.unshift(config.transformer(config.prefixPart.text, currentLocale()));\n }\n\n if (config.suffixPart?.text) {\n finalTextParts.push(config.transformer(config.suffixPart.text, currentLocale()));\n }\n\n return finalTextParts.join(` ${config.divider} `);\n });\n\n const addPart = (id: symbol, part: TitlePart) => {\n titleParts.update((parts) => new Map(parts).set(id, part));\n };\n\n const removePart = (id: symbol) => {\n titleParts.update((parts) => {\n const newParts = new Map(parts);\n newParts.delete(id);\n return newParts;\n });\n };\n\n effect(() => {\n const titleText = title();\n titleService.setTitle(titleText);\n });\n\n return { title, addPart, removePart };\n },\n { name: 'Title Store' },\n);\n\nexport const applyHeadTitleBinding = (\n binding: MaybeSignal<string | number | null | undefined>,\n options?: Omit<TitlePart, 'text'>,\n) => {\n const titleStore = injectTitleStore();\n const partId = Symbol('title-part');\n\n applyHeadBinding(\n binding,\n (value) => titleStore.addPart(partId, { text: `${value}`, ...options }),\n () => titleStore.removePart(partId),\n (value): value is string | number => value !== null && value !== undefined && value !== '',\n );\n};\n","import { computed, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\nimport { injectLocale } from '../providers';\nimport { MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding, createArrayPropertyBinding, createPropertyBinding, toStringBinding } from './head-binding';\nimport { applyHeadTitleBinding } from './title-binding';\n\nexport type MetaTagConfig = {\n /** Unique identifier for the tag */\n key?: string;\n\n /** Whether multiple instances of this tag are allowed */\n allowMultiple?: boolean;\n\n charset?: string;\n content?: string;\n httpEquiv?: string;\n id?: string;\n itemprop?: string;\n name?: string;\n property?: string;\n scheme?: string;\n url?: string;\n};\n\ntype MetaTagBinding = {\n config: MetaTagConfig;\n priority: number;\n};\n\nexport type MetaConfig = {\n /**\n * A function to transform meta tag content based on locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (content: string, locale: string) => string;\n\n /**\n * Tags that are allowed to have multiple instances\n * If you want to override the default set, extend your set from {@link DEFAULT_MULTI_INSTANCE_TAGS}.\n * Otherwise, common multiple instance tags may be removed unintentionally.\n * @example\n * ```ts\n * import { DEFAULT_MULTI_INSTANCE_TAGS, provideMetaConfig } from '@ethlete/core';\n *\n * provideMetaConfig({\n * multiInstanceTags: new Set([\n * ...DEFAULT_MULTI_INSTANCE_TAGS,\n * 'name=\"custom-multiple-tag\"',\n * ]),\n * });\n * ```\n */\n multiInstanceTags: Set<string>;\n};\n\nexport const DEFAULT_MULTI_INSTANCE_TAGS = new Set([\n // Open Graph - Media\n 'property=\"og:image\"',\n 'property=\"og:image:url\"',\n 'property=\"og:image:secure_url\"',\n 'property=\"og:video\"',\n 'property=\"og:video:url\"',\n 'property=\"og:video:secure_url\"',\n 'property=\"og:audio\"',\n 'property=\"og:audio:url\"',\n 'property=\"og:audio:secure_url\"',\n\n // Open Graph - Locale alternatives\n 'property=\"og:locale:alternate\"',\n\n // Twitter Card\n 'name=\"twitter:image\"',\n 'name=\"twitter:player\"',\n\n // Article tags (arrays)\n 'property=\"article:author\"',\n 'property=\"article:tag\"',\n\n // Music tags (arrays)\n 'property=\"music:song\"',\n 'property=\"music:musician\"',\n 'property=\"music:album\"',\n\n // Video tags (arrays)\n 'property=\"video:actor\"',\n 'property=\"video:director\"',\n 'property=\"video:writer\"',\n 'property=\"video:tag\"',\n\n // Book tags (arrays)\n 'property=\"book:author\"',\n 'property=\"book:tag\"',\n\n // Profile (arrays)\n 'property=\"profile:username\"',\n\n // Product tags (arrays)\n 'property=\"product:category\"',\n 'property=\"product:retailer_item_id\"',\n\n // App Links (multiple platforms)\n 'property=\"al:ios:url\"',\n 'property=\"al:ios:app_store_id\"',\n 'property=\"al:ios:app_name\"',\n 'property=\"al:android:url\"',\n 'property=\"al:android:app_name\"',\n 'property=\"al:android:package\"',\n 'property=\"al:web:url\"',\n 'property=\"al:windows_phone:url\"',\n 'property=\"al:windows_phone:app_id\"',\n 'property=\"al:windows_phone:app_name\"',\n 'property=\"al:windows:url\"',\n 'property=\"al:windows:app_id\"',\n 'property=\"al:windows:app_name\"',\n 'property=\"al:windows_universal:url\"',\n 'property=\"al:windows_universal:app_id\"',\n 'property=\"al:windows_universal:app_name\"',\n\n // Dublin Core (can have multiple)\n 'name=\"DC.creator\"',\n 'name=\"DC.contributor\"',\n 'name=\"DC.subject\"',\n\n // Schema.org (via meta tags - though JSON-LD is preferred)\n 'itemprop=\"image\"',\n 'itemprop=\"author\"',\n\n // Apple iOS\n 'name=\"apple-itunes-app\"', // Can have multiple app arguments\n\n // Verification tags (multiple services)\n 'name=\"google-site-verification\"',\n 'name=\"msvalidate.01\"',\n 'name=\"yandex-verification\"',\n 'name=\"p:domain_verify\"', // Pinterest\n 'name=\"facebook-domain-verification\"',\n]);\n\nexport const [provideMetaConfig, injectMetaConfig] = createStaticRootProvider<MetaConfig>(\n {\n transformer: (content: string) => content,\n multiInstanceTags: DEFAULT_MULTI_INSTANCE_TAGS,\n },\n { name: 'Meta Config' },\n);\n\nexport const [provideMetaStore, injectMetaStore] = createRootProvider(\n () => {\n const metaService = inject(Meta);\n const config = injectMetaConfig();\n const { currentLocale } = injectLocale();\n\n const metaTagsBySelector = signal<Map<string, Map<symbol, MetaTagBinding>>>(new Map());\n let priorityCounter = 0;\n\n const getSelector = (config: MetaTagConfig): string => {\n if (config.name) return `name=\"${config.name}\"`;\n if (config.property) return `property=\"${config.property}\"`;\n if (config.httpEquiv) return `http-equiv=\"${config.httpEquiv}\"`;\n if (config.itemprop) return `itemprop=\"${config.itemprop}\"`;\n return config.key ?? '';\n };\n\n const isMultiInstanceTag = (selector: string): boolean => {\n return config.multiInstanceTags.has(selector);\n };\n\n const applyTag = (rawConfig: MetaTagConfig, locale: string): HTMLMetaElement => {\n const transformedConfig = { ...rawConfig };\n\n if (transformedConfig.content) {\n transformedConfig.content = config.transformer(transformedConfig.content, locale);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, allowMultiple, ...metaConfig } = transformedConfig;\n\n return metaService.addTag(metaConfig) as HTMLMetaElement;\n };\n\n const applyActiveTag = (selector: string) => {\n const locale = currentLocale();\n const bindings = untracked(() => metaTagsBySelector().get(selector));\n\n if (!bindings || bindings.size === 0) {\n metaService.removeTag(selector);\n return;\n }\n\n const allowMultiple =\n isMultiInstanceTag(selector) || Array.from(bindings.values()).some((b) => b.config.allowMultiple);\n\n const existingTags = metaService.getTags(selector);\n existingTags.forEach((tag) => metaService.removeTagElement(tag));\n\n if (allowMultiple) {\n const sortedBindings = Array.from(bindings.values()).sort((a, b) => a.priority - b.priority);\n\n sortedBindings.forEach((binding) => {\n applyTag(binding.config, locale);\n });\n } else {\n const activeBinding = Array.from(bindings.values()).reduce((highest, current) =>\n current.priority > highest.priority ? current : highest,\n );\n\n applyTag(activeBinding.config, locale);\n }\n };\n\n const addTag = (id: symbol, rawConfig: MetaTagConfig) => {\n const selector = getSelector(rawConfig);\n const priority = priorityCounter++;\n\n metaTagsBySelector.update((tagsBySelector) => {\n const newTagsBySelector = new Map(tagsBySelector);\n const selectorBindings = newTagsBySelector.get(selector) || new Map();\n\n selectorBindings.set(id, { config: rawConfig, priority });\n newTagsBySelector.set(selector, new Map(selectorBindings));\n\n return newTagsBySelector;\n });\n\n applyActiveTag(selector);\n };\n\n const removeTag = (id: symbol, selector?: string) => {\n if (selector) {\n metaTagsBySelector.update((tagsBySelector) => {\n const newTagsBySelector = new Map(tagsBySelector);\n const selectorBindings = newTagsBySelector.get(selector);\n\n if (selectorBindings) {\n selectorBindings.delete(id);\n\n if (selectorBindings.size === 0) {\n newTagsBySelector.delete(selector);\n } else {\n newTagsBySelector.set(selector, new Map(selectorBindings));\n }\n }\n\n return newTagsBySelector;\n });\n\n applyActiveTag(selector);\n return;\n }\n\n metaTagsBySelector.update((tagsBySelector) => {\n const newTagsBySelector = new Map(tagsBySelector);\n let affectedSelector: string | undefined;\n\n for (const [sel, bindings] of newTagsBySelector) {\n if (bindings.has(id)) {\n bindings.delete(id);\n affectedSelector = sel;\n\n if (bindings.size === 0) {\n newTagsBySelector.delete(sel);\n } else {\n newTagsBySelector.set(sel, new Map(bindings));\n }\n break;\n }\n }\n\n if (affectedSelector) {\n queueMicrotask(() => applyActiveTag(affectedSelector));\n }\n\n return newTagsBySelector;\n });\n };\n\n effect(() => {\n currentLocale();\n const tagsBySelector = untracked(() => metaTagsBySelector());\n\n tagsBySelector.forEach((_, selector) => {\n applyActiveTag(selector);\n });\n });\n\n return { addTag, removeTag, getSelector };\n },\n { name: 'Meta Store' },\n);\n\nexport const applyMetaBinding = (binding: MaybeSignal<MetaTagConfig | null | undefined>) => {\n const metaStore = injectMetaStore();\n const tagId = Symbol('meta-tag');\n let currentSelector: string | undefined;\n\n applyHeadBinding(\n binding,\n (config) => {\n currentSelector = metaStore.getSelector(config);\n metaStore.addTag(tagId, config);\n },\n () => metaStore.removeTag(tagId, currentSelector),\n );\n};\n\nexport const applyDescriptionBinding = createPropertyBinding(\n (content) => ({ name: 'description', content }),\n applyMetaBinding,\n);\n\nexport const applyKeywordsBinding = (binding: MaybeSignal<string[] | null | undefined>) => {\n applyMetaBinding(\n computed(() => {\n const keywords = untracked(() => (isSignal(binding) ? binding() : binding));\n return keywords && keywords.length > 0 ? { name: 'keywords', content: keywords.join(', ') } : null;\n }),\n );\n};\n\nexport const applyAuthorBinding = createPropertyBinding((content) => ({ name: 'author', content }), applyMetaBinding);\n\nexport type RobotsConfig = {\n index?: boolean;\n follow?: boolean;\n noarchive?: boolean;\n nosnippet?: boolean;\n noimageindex?: boolean;\n maxSnippet?: number;\n maxImagePreview?: 'none' | 'standard' | 'large';\n maxVideoPreview?: number;\n};\n\nexport const applyRobotsBinding = (binding: MaybeSignal<RobotsConfig | null | undefined>) => {\n applyMetaBinding(\n computed(() => {\n const config = untracked(() => (isSignal(binding) ? binding() : binding));\n if (!config) return null;\n\n const directives: string[] = [];\n\n if (config.index === false) directives.push('noindex');\n if (config.follow === false) directives.push('nofollow');\n if (config.noarchive) directives.push('noarchive');\n if (config.nosnippet) directives.push('nosnippet');\n if (config.noimageindex) directives.push('noimageindex');\n if (config.maxSnippet !== undefined) directives.push(`max-snippet:${config.maxSnippet}`);\n if (config.maxImagePreview) directives.push(`max-image-preview:${config.maxImagePreview}`);\n if (config.maxVideoPreview !== undefined) directives.push(`max-video-preview:${config.maxVideoPreview}`);\n\n return directives.length > 0 ? { name: 'robots', content: directives.join(', ') } : null;\n }),\n );\n};\n\nexport const applyOgBinding = (property: string, binding: MaybeSignal<string | null | undefined>) => {\n createPropertyBinding((content) => ({ property: `og:${property}`, content }), applyMetaBinding)(binding);\n};\n\nconst createOgArrayBinding = (property: string) =>\n createArrayPropertyBinding(\n (value, index) => ({\n property: `og:${property}`,\n content: value,\n allowMultiple: true,\n key: `og:${property}:${index}`,\n }),\n applyMetaBinding,\n );\n\nexport type OpenGraphConfig = {\n title?: MaybeSignal<string | null | undefined>;\n description?: MaybeSignal<string | null | undefined>;\n url?: MaybeSignal<string | null | undefined>;\n type?: MaybeSignal<string | null | undefined>;\n siteName?: MaybeSignal<string | null | undefined>;\n locale?: MaybeSignal<string | null | undefined>;\n image?: MaybeSignal<string | null | undefined>;\n images?: MaybeSignal<string[] | null | undefined>;\n imageUrl?: MaybeSignal<string | null | undefined>;\n imageSecureUrl?: MaybeSignal<string | null | undefined>;\n imageType?: MaybeSignal<string | null | undefined>;\n imageWidth?: MaybeSignal<string | number | null | undefined>;\n imageHeight?: MaybeSignal<string | number | null | undefined>;\n imageAlt?: MaybeSignal<string | null | undefined>;\n video?: MaybeSignal<string | null | undefined>;\n videos?: MaybeSignal<string[] | null | undefined>;\n videoUrl?: MaybeSignal<string | null | undefined>;\n videoSecureUrl?: MaybeSignal<string | null | undefined>;\n videoType?: MaybeSignal<string | null | undefined>;\n videoWidth?: MaybeSignal<string | number | null | undefined>;\n videoHeight?: MaybeSignal<string | number | null | undefined>;\n audio?: MaybeSignal<string | null | undefined>;\n audios?: MaybeSignal<string[] | null | undefined>;\n};\n\nexport const applyOpenGraphBindings = (config: OpenGraphConfig) => {\n const applyOg = (property: string, binding?: MaybeSignal<string | null | undefined>) => {\n if (binding) applyOgBinding(property, binding);\n };\n\n applyOg('title', config.title);\n applyOg('description', config.description);\n applyOg('url', config.url);\n applyOg('type', config.type);\n applyOg('site_name', config.siteName);\n applyOg('locale', config.locale);\n applyOg('image', config.image);\n applyOg('image:url', config.imageUrl);\n applyOg('image:secure_url', config.imageSecureUrl);\n applyOg('image:type', config.imageType);\n applyOg('image:alt', config.imageAlt);\n applyOg('video', config.video);\n applyOg('video:url', config.videoUrl);\n applyOg('video:secure_url', config.videoSecureUrl);\n applyOg('video:type', config.videoType);\n applyOg('audio', config.audio);\n\n if (config.imageWidth) applyOg('image:width', toStringBinding(config.imageWidth));\n if (config.imageHeight) applyOg('image:height', toStringBinding(config.imageHeight));\n if (config.videoWidth) applyOg('video:width', toStringBinding(config.videoWidth));\n if (config.videoHeight) applyOg('video:height', toStringBinding(config.videoHeight));\n\n if (config.images) createOgArrayBinding('image')(config.images);\n if (config.videos) createOgArrayBinding('video')(config.videos);\n if (config.audios) createOgArrayBinding('audio')(config.audios);\n};\n\nexport type TwitterCardConfig = {\n card?: MaybeSignal<'summary' | 'summary_large_image' | 'app' | 'player' | null | undefined>;\n site?: MaybeSignal<string | null | undefined>;\n siteId?: MaybeSignal<string | null | undefined>;\n creator?: MaybeSignal<string | null | undefined>;\n creatorId?: MaybeSignal<string | null | undefined>;\n title?: MaybeSignal<string | null | undefined>;\n description?: MaybeSignal<string | null | undefined>;\n image?: MaybeSignal<string | null | undefined>;\n images?: MaybeSignal<string[] | null | undefined>;\n imageAlt?: MaybeSignal<string | null | undefined>;\n player?: MaybeSignal<string | null | undefined>;\n playerWidth?: MaybeSignal<string | number | null | undefined>;\n playerHeight?: MaybeSignal<string | number | null | undefined>;\n playerStream?: MaybeSignal<string | null | undefined>;\n};\n\nconst createTwitterArrayBinding = (property: string) =>\n createArrayPropertyBinding(\n (value, index) => ({\n name: `twitter:${property}`,\n content: value,\n allowMultiple: true,\n key: `twitter:${property}:${index}`,\n }),\n applyMetaBinding,\n );\n\nexport const applyTwitterCardBindings = (config: TwitterCardConfig) => {\n const applyTwitter = (property: string, binding?: MaybeSignal<string | null | undefined>) => {\n if (!binding) return;\n createPropertyBinding((content) => ({ name: `twitter:${property}`, content }), applyMetaBinding)(binding);\n };\n\n applyTwitter('card', config.card);\n applyTwitter('site', config.site);\n applyTwitter('site:id', config.siteId);\n applyTwitter('creator', config.creator);\n applyTwitter('creator:id', config.creatorId);\n applyTwitter('title', config.title);\n applyTwitter('description', config.description);\n applyTwitter('image', config.image);\n applyTwitter('image:alt', config.imageAlt);\n applyTwitter('player', config.player);\n applyTwitter('player:stream', config.playerStream);\n\n if (config.playerWidth) applyTwitter('player:width', toStringBinding(config.playerWidth));\n if (config.playerHeight) applyTwitter('player:height', toStringBinding(config.playerHeight));\n\n if (config.images) createTwitterArrayBinding('image')(config.images);\n};\n\nexport type ArticleConfig = {\n publishedTime?: MaybeSignal<string | null | undefined>;\n modifiedTime?: MaybeSignal<string | null | undefined>;\n expirationTime?: MaybeSignal<string | null | undefined>;\n author?: MaybeSignal<string | null | undefined>;\n authors?: MaybeSignal<string[] | null | undefined>;\n section?: MaybeSignal<string | null | undefined>;\n tag?: MaybeSignal<string | null | undefined>;\n tags?: MaybeSignal<string[] | null | undefined>;\n};\n\nconst createArticleArrayBinding = (property: string) =>\n createArrayPropertyBinding(\n (value, index) => ({\n property: `article:${property}`,\n content: value,\n allowMultiple: true,\n key: `article:${property}:${index}`,\n }),\n applyMetaBinding,\n );\n\nexport const applyArticleBindings = (config: ArticleConfig) => {\n const applyArticle = (property: string, binding?: MaybeSignal<string | null | undefined>) => {\n if (!binding) return;\n createPropertyBinding((content) => ({ property: `article:${property}`, content }), applyMetaBinding)(binding);\n };\n\n applyArticle('published_time', config.publishedTime);\n applyArticle('modified_time', config.modifiedTime);\n applyArticle('expiration_time', config.expirationTime);\n applyArticle('author', config.author);\n applyArticle('section', config.section);\n applyArticle('tag', config.tag);\n\n if (config.authors) createArticleArrayBinding('author')(config.authors);\n if (config.tags) createArticleArrayBinding('tag')(config.tags);\n};\n\nexport type SocialMediaConfig = {\n title?: MaybeSignal<string | null | undefined>;\n description?: MaybeSignal<string | null | undefined>;\n image?: MaybeSignal<string | null | undefined>;\n url?: MaybeSignal<string | null | undefined>;\n openGraph?: Partial<OpenGraphConfig>;\n twitter?: Partial<TwitterCardConfig>;\n article?: Partial<ArticleConfig>;\n};\n\nexport const applySocialMediaBindings = (config: SocialMediaConfig) => {\n if (config.title) applyHeadTitleBinding(config.title);\n if (config.description) applyDescriptionBinding(config.description);\n\n if (config.openGraph || config.title || config.description || config.image || config.url) {\n applyOpenGraphBindings({\n title: config.openGraph?.title ?? config.title,\n description: config.openGraph?.description ?? config.description,\n image: config.openGraph?.image ?? config.image,\n url: config.openGraph?.url ?? config.url,\n ...config.openGraph,\n });\n }\n\n if (config.twitter || config.title || config.description || config.image) {\n applyTwitterCardBindings({\n title: config.twitter?.title ?? config.title,\n description: config.twitter?.description ?? config.description,\n image: config.twitter?.image ?? config.image,\n ...config.twitter,\n });\n }\n\n if (config.article) applyArticleBindings(config.article);\n};\n","import { Directive, inject, InjectionToken, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { AlternateLink, SeoConfig } from './seo.directive.types';\n\nconst mergeSeoConfig = (config: SeoConfig, parentConfig: SeoConfig): SeoConfig => {\n return {\n ...parentConfig,\n ...config,\n };\n};\n\nexport const SEO_DIRECTIVE_TOKEN = new InjectionToken<SeoDirective>('SEO_DIRECTIVE_TOKEN');\n\n/** @deprecated use binding utils instead */\n@Directive({\n providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],\n})\nexport class SeoDirective implements OnInit, OnDestroy {\n private readonly _metaService = inject(Meta);\n private readonly _titleService = inject(Title);\n private readonly _onDeactivate$ = new Subject<boolean>();\n\n private _isDeactivated = false;\n\n readonly parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });\n\n get config(): SeoConfig {\n return this._config;\n }\n private _config: SeoConfig = {};\n\n ngOnInit(): void {\n this.parent?._deactivate();\n }\n\n ngOnDestroy(): void {\n this._deactivate();\n this._cleanUp();\n this.parent?._activate();\n }\n\n updateConfig(config: SeoConfig) {\n this._config = mergeSeoConfig(config, this.parent?.config || {});\n\n if (this._isDeactivated) {\n return;\n }\n\n this._deactivate();\n this._activate();\n }\n\n _activate() {\n this._onDeactivate$.next(false);\n this._isDeactivated = false;\n\n for (const [key, value] of Object.entries(this._config)) {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else if (Array.isArray(value)) {\n value.forEach((value) => {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else {\n this._update(key, value);\n }\n });\n } else if (typeof value === 'object' && value !== null) {\n for (const [subKey, subValue] of Object.entries(value)) {\n if (subValue instanceof Observable) {\n subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));\n } else {\n this._update(`${key}:${subKey}`, subValue);\n }\n }\n } else {\n this._update(key, value);\n }\n }\n }\n\n _deactivate() {\n this._onDeactivate$.next(true);\n this._isDeactivated = true;\n }\n\n private _update(key: string, value: unknown) {\n switch (key) {\n case 'title':\n if (value && typeof value === 'string') {\n this._titleService.setTitle(value);\n }\n break;\n\n case 'canonical':\n {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.setAttribute('href', value as string);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('href', value as string);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n case 'alternate':\n {\n const link = document.querySelector(`link[rel=\"${key}\"][hreflang=\"${(value as AlternateLink).hreflang}\"]`);\n\n if (link) {\n link.setAttribute('href', (value as AlternateLink).href);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('hreflang', (value as AlternateLink).hreflang);\n newLink.setAttribute('href', (value as AlternateLink).href);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n default:\n if (value !== undefined && value !== null) {\n const val = Array.isArray(value) ? value.join(', ') : (value as string);\n\n this._metaService.updateTag({ name: key, content: val });\n } else {\n this._metaService.removeTag(`name=\"${key}\"`);\n }\n break;\n }\n }\n\n private _cleanUp() {\n for (const key in this._config) {\n if (key === 'alternate') {\n const links = document.querySelectorAll(`link[rel=\"${key}\"]`);\n\n links.forEach((link) => {\n link.remove();\n });\n\n continue;\n }\n\n if (key === 'canonical') {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.remove();\n }\n\n continue;\n }\n\n if (\n typeof this._config[key] === 'object' &&\n this._config[key] !== null &&\n !(this._config[key] instanceof Observable)\n ) {\n for (const subKey in this._config[key] as Record<string, unknown>) {\n const parentValue =\n this.parent?.config?.[key as keyof SeoConfig]?.[subKey as keyof SeoConfig[keyof SeoConfig]];\n\n if (parentValue === undefined) {\n this._update(`${key}:${subKey}`, undefined);\n }\n }\n } else {\n const parentValue = this.parent?.config?.[key as keyof SeoConfig];\n\n if (parentValue === undefined) {\n this._update(key, null);\n }\n }\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, signal } from '@angular/core';\nimport { injectRenderer } from '../providers';\nimport { MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding } from './head-binding';\nimport * as JsonLD from './json-ld';\n\nexport type StructuredDataConfig = {\n /**\n * Where to place the JSON-LD script tag.\n * - 'head': Traditional placement, loaded before body content\n * - 'body': Google recommended, better for performance\n *\n * Note: You can also use the `StructuredDataComponent` to place structured data\n * directly within your component templates.\n *\n * @default 'body'\n */\n placement: 'head' | 'body';\n};\n\nexport const [provideStructuredDataConfig, injectStructuredDataConfig] = createStaticRootProvider<StructuredDataConfig>(\n {\n placement: 'body',\n },\n { name: 'Structured Data Config' },\n);\n\nexport const [provideStructuredDataStore, injectStructuredDataStore] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const config = injectStructuredDataConfig();\n const scripts = signal<Map<symbol, HTMLScriptElement>>(new Map());\n\n const getTargetElement = (): HTMLElement => {\n return config.placement === 'head' ? document.head : document.body;\n };\n\n const addStructuredData = (id: symbol, data: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph) => {\n scripts.update((scriptMap) => {\n const newScripts = new Map(scriptMap);\n\n const oldScript = newScripts.get(id);\n if (oldScript && oldScript.parentNode) {\n renderer.removeChild(oldScript.parentNode, oldScript);\n }\n\n const script = renderer.createElement('script');\n\n renderer.setAttributes(script, { type: 'application/ld+json', text: JSON.stringify(data) });\n\n const target = getTargetElement();\n renderer.appendChild(target, script);\n\n newScripts.set(id, script);\n return newScripts;\n });\n };\n\n const removeStructuredData = (id: symbol) => {\n scripts.update((scriptMap) => {\n const newScripts = new Map(scriptMap);\n const script = newScripts.get(id);\n\n if (script && script.parentNode) {\n renderer.removeChild(script.parentNode, script);\n\n newScripts.delete(id);\n }\n\n return newScripts;\n });\n };\n\n return { addStructuredData, removeStructuredData };\n },\n { name: 'Structured Data Store' },\n);\n\nexport const applyStructuredDataBinding = (\n binding: MaybeSignal<JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined>,\n) => {\n const store = injectStructuredDataStore();\n const scriptId = Symbol('structured-data');\n\n applyHeadBinding(\n binding,\n (data) => store.addStructuredData(scriptId, data),\n () => store.removeStructuredData(scriptId),\n );\n};\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as JsonLD from './json-ld';\n\n@Component({\n selector: 'et-structured-data',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: none',\n '[innerHTML]': 'jsonLD()',\n },\n})\nexport class StructuredDataComponent {\n private sanitizer = inject(DomSanitizer);\n\n data = input<JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined>(null);\n\n jsonLD = computed(() => {\n const data = this.data();\n\n if (!data) {\n return null;\n }\n\n const json = data ? JSON.stringify(data, null, 2).replace(/<\\/script>/g, '<\\\\/script>') : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n return this.sanitizer.bypassSecurityTrustHtml(html);\n });\n}\n","import { createStaticProvider } from '../utils';\n\nexport type ThemeRGBColor = `${number} ${number} ${number}`;\nexport type ThemeHSLColor = `${number} ${number}% ${number}%`;\n\nexport type ThemeColor = ThemeRGBColor | ThemeHSLColor;\n\nexport type ThemeColorMap = {\n default: ThemeColor;\n hover: ThemeColor;\n focus?: ThemeColor;\n active: ThemeColor;\n disabled: ThemeColor;\n};\n\nexport type OnThemeColorMap = {\n default: ThemeColor;\n hover?: ThemeColor;\n focus?: ThemeColor;\n active?: ThemeColor;\n disabled?: ThemeColor;\n};\n\nexport type ThemeSwatch = {\n color: ThemeColorMap;\n onColor: OnThemeColorMap;\n};\n\nexport type Theme = {\n name: string;\n isDefault?: boolean;\n isDefaultAlt?: boolean;\n primary: ThemeSwatch;\n secondary?: ThemeSwatch;\n tertiary?: ThemeSwatch;\n};\n\nexport const createCssThemeName = (name: string) => name.replace(/([A-Z])/g, (g) => `-${g[0]!.toLowerCase()}`);\n\nexport const [ɵProvideColorThemes, injectColorThemes] = createStaticProvider<string[]>(undefined, {\n name: 'Color Themes',\n});\nexport const [ɵProvideThemesPrefix, injectThemesPrefix] = createStaticProvider('et', { name: 'Themes Prefix' });\n\nexport const provideColorThemesWithTailwind4 = (themes: Theme[], prefix = 'et') => [\n ɵProvideColorThemes(themes.map((theme) => theme.name)),\n ɵProvideThemesPrefix(prefix),\n];\n","import { isDevMode } from '@angular/core';\nimport { createCssThemeName, Theme, ThemeSwatch, ɵProvideColorThemes, ɵProvideThemesPrefix } from './theme.util';\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createSwatchCss = (swatch: string, isAlt: boolean, data: ThemeSwatch) => {\n const varSuffix = isAlt ? 'alt-' + swatch : swatch;\n const varOnSuffix = isAlt ? 'alt-' : '';\n\n return `\n --et-color-${varSuffix}: ${data.color.default};\n --et-color-${varSuffix}-hover: ${data.color.hover};\n --et-color-${varSuffix}-focus: ${data.color.focus || data.color.hover};\n --et-color-${varSuffix}-active: ${data.color.active};\n --et-color-${varSuffix}-disabled: ${data.color.disabled};\n \n --et-color-${varOnSuffix}on-${swatch}: ${data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-hover: ${data.onColor.hover || data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-focus: ${data.onColor.focus || data.onColor.hover || data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-active: ${data.onColor.active || data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-disabled: ${data.onColor.disabled || data.onColor.default};\n `;\n};\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createRootThemeCss = (themes: Theme[]) => {\n const createVars = (name: string, swatch: ThemeSwatch) => {\n return `\n --et-color-${name}: ${swatch.color.default};\n --et-color-${name}-hover: ${swatch.color.hover};\n --et-color-${name}-focus: ${swatch.color.focus || swatch.color.hover};\n --et-color-${name}-active: ${swatch.color.active};\n --et-color-${name}-disabled: ${swatch.color.disabled};\n \n --et-color-on-${name}: ${swatch.onColor.default};\n --et-color-on-${name}-hover: ${swatch.onColor.hover || swatch.onColor.default};\n --et-color-on-${name}-focus: ${swatch.onColor.focus || swatch.onColor.hover || swatch.onColor.default};\n --et-color-on-${name}-active: ${swatch.onColor.active || swatch.onColor.default};\n --et-color-on-${name}-disabled: ${swatch.onColor.disabled || swatch.onColor.default};\n `;\n };\n\n const vars: string[] = [];\n\n for (const theme of themes) {\n const name = createCssThemeName(theme.name);\n\n if (theme.secondary || theme.tertiary) {\n vars.push(createVars(`${name}-primary`, theme.primary));\n\n if (theme.secondary) {\n vars.push(createVars(`${name}-secondary`, theme.secondary));\n }\n\n if (theme.tertiary) {\n vars.push(createVars(`${name}-tertiary`, theme.tertiary));\n }\n } else {\n vars.push(createVars(name, theme.primary));\n }\n }\n\n const css = `\n :root {\n ${vars.join('\\n')}\n }\n `;\n\n const style = document.createElement('style');\n style.id = `et-root-themes`;\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n};\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createThemeStyle = (theme: Theme, isAlt: boolean) => {\n const cssThemeName = createCssThemeName(theme.name);\n const stringSuffix = isAlt ? '-alt' : '';\n\n const selectors = [\n ...((theme.isDefault && !isAlt) || (theme.isDefaultAlt && isAlt)\n ? [':root', `.et-theme${stringSuffix}--default`]\n : []),\n `.et-theme${stringSuffix}--${cssThemeName}`,\n ];\n\n const css = `\n ${selectors.join(', ')} {\n ${createSwatchCss('primary', isAlt, theme.primary)}\n ${theme.secondary ? createSwatchCss('secondary', isAlt, theme.secondary) : ''}\n ${theme.tertiary ? createSwatchCss('tertiary', isAlt, theme.tertiary) : ''}\n }\n `;\n\n const style = document.createElement('style');\n style.id = `et-theme${stringSuffix}--${cssThemeName}`;\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n};\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createTailwindCssVar = (name: string | undefined) => (name ? `rgb(var(--${name}) / <alpha-value>)` : null);\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createTailwindRgbVar = (val: string | undefined) => (val ? `rgb(${val} / <alpha-value>)` : null);\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createTailwindColorThemes = (themes: Theme[], prefix = 'et') => {\n const twThemes: Record<\n string,\n {\n DEFAULT: string;\n hover: string;\n focus: string;\n active: string;\n disabled: string;\n }\n > = {};\n\n for (const theme of themes) {\n const key = `${prefix}-${theme.name}`;\n\n twThemes[key] = {\n DEFAULT: createTailwindRgbVar(theme.primary.color.default)!,\n hover: createTailwindRgbVar(theme.primary.color.hover)!,\n focus: createTailwindRgbVar(theme.primary.color.focus) || createTailwindRgbVar(theme.primary.color.hover)!,\n active: createTailwindRgbVar(theme.primary.color.active)!,\n disabled: createTailwindRgbVar(theme.primary.color.disabled)!,\n };\n\n const keyOn = `${prefix}-on-${theme.name}`;\n\n twThemes[keyOn] = {\n DEFAULT: createTailwindRgbVar(theme.primary.onColor.default)!,\n hover: createTailwindRgbVar(theme.primary.onColor.hover) || createTailwindRgbVar(theme.primary.onColor.default)!,\n focus:\n createTailwindRgbVar(theme.primary.onColor.focus) ||\n createTailwindRgbVar(theme.primary.onColor.hover) ||\n createTailwindRgbVar(theme.primary.onColor.default)!,\n active:\n createTailwindRgbVar(theme.primary.onColor.active) || createTailwindRgbVar(theme.primary.onColor.default)!,\n disabled:\n createTailwindRgbVar(theme.primary.onColor.disabled) || createTailwindRgbVar(theme.primary.onColor.default)!,\n };\n }\n\n return twThemes;\n};\n\n/**\n * @deprecated Use provideColorThemesWithTailwind4 instead after migrating to Tailwind CSS v4. Intent to remove in v6.\n */\nexport const provideColorThemes = (themes: Theme[]) => {\n if (isDevMode()) {\n const defaultCount = themes.filter((theme) => theme.isDefault).length;\n const defaultAltCount = themes.filter((theme) => theme.isDefaultAlt).length;\n\n if (defaultCount === 0) {\n console.warn(\n 'No default theme provided. Please provide a default theme by setting the isDefault property to true on a theme.',\n );\n } else if (defaultCount > 1) {\n console.warn(\n 'More than one default theme provided. Please provide only one default theme by setting the isDefault property to true on a theme.',\n );\n }\n\n if (defaultAltCount > 1) {\n console.warn(\n 'More than one default alt theme provided. Please provide only one default alt theme by setting the isDefaultAlt property to true on a theme.',\n );\n }\n }\n\n for (const theme of themes) {\n createThemeStyle(theme, false);\n createThemeStyle(theme, true);\n }\n\n createRootThemeCss(themes);\n\n return [ɵProvideColorThemes(themes.map((theme) => theme.name)), ɵProvideThemesPrefix('et')];\n};\n","import {\n computed,\n Directive,\n effect,\n EffectRef,\n inject,\n InjectionToken,\n Injector,\n input,\n isDevMode,\n runInInjectionContext,\n untracked,\n} from '@angular/core';\nimport { setInputSignal } from '../utils';\nimport { createCssThemeName, injectColorThemes, injectThemesPrefix } from './theme.util';\n\nexport const THEME_PROVIDER = new InjectionToken<ProvideThemeDirective>('ThemeProvider');\n\n@Directive({\n selector: '[etProvideTheme]',\n providers: [{ provide: THEME_PROVIDER, useExisting: ProvideThemeDirective }],\n host: {\n '[class]': 'themeClass()',\n },\n})\nexport class ProvideThemeDirective {\n private themes = injectColorThemes({ optional: true });\n private prefix = injectThemesPrefix({ optional: true });\n private injector = inject(Injector);\n\n private currentProviderSync: EffectRef | null = null;\n\n mainTheme = input<string | null>(undefined, { alias: 'etProvideTheme' });\n altTheme = input<string | null>(undefined, { alias: 'etProvideAltTheme' });\n\n mainThemeName = computed(() => {\n const value = this.mainTheme();\n\n if (!this.themes || !value) return;\n\n if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {\n console.error(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);\n }\n\n return createCssThemeName(value);\n });\n\n altThemeName = computed(() => {\n const value = this.altTheme();\n\n if (!this.themes || !value) return;\n\n if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {\n console.warn(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);\n }\n\n return createCssThemeName(value);\n });\n\n protected themeClass = computed(() => {\n const themes: string[] = [];\n const prefix = this.prefix || 'et';\n\n if (this.mainThemeName()) {\n themes.push(`${prefix}-theme--${this.mainThemeName()}`);\n }\n\n if (this.altThemeName()) {\n themes.push(`${prefix}-theme-alt--${this.altThemeName()}`);\n }\n\n return themes.join(' ');\n });\n\n syncWithProvider(provider: ProvideThemeDirective) {\n this.currentProviderSync?.destroy();\n\n runInInjectionContext(this.injector, () => {\n this.currentProviderSync = effect(() => {\n const provideMainTheme = provider.mainTheme();\n const provideAltTheme = provider.altTheme();\n\n untracked(() => {\n setInputSignal(this.mainTheme, provideMainTheme);\n setInputSignal(this.altTheme, provideAltTheme);\n });\n });\n });\n }\n\n stopSyncWithProvider() {\n this.currentProviderSync?.destroy();\n this.currentProviderSync = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AnimatableDirective","DOCUMENT"],"mappings":";;;;;;;;;;;;;;;MAea,gBAAgB,GAAG,IAAI,cAAc,CAAsB,4BAA4B;MAiBvF,mBAAmB,CAAA;AAwB9B,IAAA,WAAA,GAAA;AAvBQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAExD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAQ;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAqB;QAEvD,IAAA,CAAA,oBAAoB,GAAG,CAAC;AACxB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAE1D,IAAA,CAAA,oBAAoB,GAAa,EAAE;AAG3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAA,CAAA,0BAA0B,GAAuB,IAAI,CAAC;AACpD,cAAE,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAC1F,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;cAEzE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QAG5E,IAAI,YAAY,GAAG,KAAK;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAExC,QAAA,KAAK,CACH,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC5G,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClD,GAAG,CAAC,MAAM,OAAgB,CAAC,CAC5B,EACD,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,cAAc,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CACxG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClD,GAAG,CAAC,MAAM,KAAc,CAAC,CAC1B,EACD,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,iBAAiB,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAC9G,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClD,GAAG,CAAC,MAAM,QAAiB,CAAC,CAC7B;AAEA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,SAAS,KAAI;YAChB,QAAQ,SAAS;gBACf,KAAK,OAAO,EAAE;AACZ,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,KAAK,CAAC;AACxD,oBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;oBAElC,IAAI,gBAAgB,EAAE;wBACpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;oBAClE;oBAEA,IAAI,CAAC,YAAY,EAAE;wBACjB,YAAY,GAAG,IAAI;AACnB,wBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE;oBACpC;oBAEA;gBACF;AACA,gBAAA,KAAK,KAAK;gBACV,KAAK,QAAQ,EAAE;AACb,oBAAA,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE;AACjC,wBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;wBAEnC,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,IAAI,YAAY,EAAE;4BACnD,YAAY,GAAG,KAAK;AACpB,4BAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gCAC7B,SAAS,EAAE,SAAS,KAAK,QAAQ;gCACjC,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,6BAAA,CAAC;AACF,4BAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS;wBAC1C;oBACF;yBAAO;AACL,wBAAA,OAAO,CAAC,IAAI,CACV,GAAG,EAAE,CAAC,OAAO,CAAA,sFAAA,EAAyF,YAAY,GAAG,EAAE,GAAG,MAAM,CAAA,QAAA,CAAU,CAC3I;oBACH;oBACA;gBACF;;AAEJ,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;AAEA,IAAA,eAAe,CAAC,EAAU,EAAA;AACxB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IACpC;AAEQ,IAAA,0BAA0B,CAAC,KAAa,EAAA;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,KAAK;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AAEtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU;AACtC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC;IACjD;8GAjGW,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAPnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,WAAW,EAAE,mBAAmB;AACjC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,WAAW,EAAA,mBAAqB;AACjC,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC/BD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB;AAEvC,MAAM,iBAAiB,GAAG,CAAC,MAAc,KAAI;IAClD,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;AAEhC,IAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,EAAE,EAAE;AAC1B;;ACJO,MAAM,aAAa,GAAG,MAAK;IAChC,wBAAwB,CAAC,aAAa,CAAC;AAEvC,IAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAW;AAEvC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAE9B,IAAA,GAAG,CAAC,SAAS,CAAC,MAAK;AACjB,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,QAAQ,CAAC,QAAQ,EAAE;AACrB,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC,YAAY,EAAE;AAChC;;ACbO,MAAM,iBAAiB,GAAG,MAAuB,MAAM,CAAgB,UAAU,CAAC,CAAC;AAEnF,MAAM,iBAAiB,GAAG,MAAmB,MAAM,CAAiB,WAAW;AA4CtF,MAAM,oBAAoB,GAAG,CAAI,KAAwB,KAAI;IAI3D,SAAS,QAAQ,CAAC,OAAuB,EAAA;AACvC,QAAA,OAAO,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACzD;AACA,IAAA,OAAO,QAAQ;AACjB,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,KAAwB,EACxB,OAAgB,EAChB,UAAoC,KACrB;AACf,IAAA,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;IACvC,IAAI,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;CACrE;MAEY,cAAc,GAAG,CAAI,OAAgB,EAAE,OAA+B,KAAuB;AACxG,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnF,IAAA,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;MAEa,kBAAkB,GAAG,CAAI,OAAgB,EAAE,OAA+B,KAAuB;AAC5G,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;AAClF,QAAA,UAAU,EAAE,MAAM;QAClB,OAAO;AACR,KAAA,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;MAEa,oBAAoB,GAAG,CAAI,YAAgB,EAAE,OAA+B,KAA6B;AACpH,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAE1F,IAAA,MAAM,OAAO,GAAG,CAAC,aAA0B,KAAK;AAC9C,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;QAC3E,IAAI,OAAO,EAAE,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;KACxG;AAED,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;MAEa,wBAAwB,GAAG,CACtC,YAAgB,EAChB,OAA+B,KACJ;AAC3B,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,EAAE;AACzF,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,OAAO,EAAE,MAAM,YAAiB;AACjC,KAAA,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,CAAC,aAA0B,KAAK;AAC9C,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;QAC3E,IAAI,OAAO,EAAE,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;KACxG;AAED,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;AAEA,MAAM,gBAAgB,GAAG,CAAI,YAA2B,EAAE,aAA0B,KAAI;IACtF,IAAI,aAAa,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACrE,QAAA,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,EAAE;IAC9C;IAEA,OAAO,aAAa,IAAI,YAAY;AACtC,CAAC;;AC5HD;AACO,MAAM,cAAc,GAAG,CAA2B,SAAY,KAAI;AACvE,IAAA,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAE,UAAqB,KAAI;AAC7D,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAE;AAEpC,YAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAChC,gBAAA,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;AAEjF,gBAAA,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;AAExC,gBAAA,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;YACnC;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;;AAEvC,gBAAA,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAM,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;gBAE3F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACnC,oBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAChC,wBAAA,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;wBACjF,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;AACpD,wBAAA,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;oBACpC;yBAAO;wBACL,MAAM,gBAAgB,GAAG,IAAI,WAAW,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACpD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,CACvB;AACD,wBAAA,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBAC1C;AACF,gBAAA,CAAC,CAAC;AAEF,gBAAA,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAC/C;iBAAO;gBACL,MAAM,YAAY,GAAG,IAAI,WAAW,CAClC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACpD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,CACvB;AAED,gBAAA,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,UAAU;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3D,IAAA,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC,UAAU,CAAC,sBAAsB,EAAE;AAEnC,IAAA,OAAO,UAAe;AACxB;AAEO,MAAM,iBAAiB,GAAG,CAAsB,SAAY,KAAI;IACrE,MAAM,KAAK,GAA4B,EAAE;AAEzC,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAE;AAExC,QAAA,IAAI,OAAO,YAAY,SAAS,EAAE;YAChC,KAAK,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACzC;AAAO,aAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC5C,gBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAChC,oBAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC;gBACnC;qBAAO;AACL,oBAAA,OAAO,OAAO,CAAC,KAAK,IAAI,IAAI;gBAC9B;AACF,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI;QACpC;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AACd;;MCzEa,oBAAoB,GAAG,CAClC,SAAY,EACZ,OAA8B,KAC5B;IACF,MAAM,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAA4B;IAExF,MAAM,UAAU,GAAG;UACf,SAAS,CAAyB,OAAO,EAAE,SAAS,EAAE,OAAO;AAC/D,UAAE,SAAS,CAAyB,OAAO,EAAE,SAAS,CAAC;AAEzD,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9C;AAEO,MAAM,iBAAiB,GAAG,CAC/B,SAAY,EACZ,OAAgD,EAChD,OAA8B,KAC3B,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO;MAElD,kBAAkB,GAAG,CAChC,SAEE,EACF,OAA8B,KAC5B;AACF,IAAA,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,SAAsC,CAAC;QAEjE,IAAI,OAAO,EAAE;;AAEX,YAAA,iBAAiB,CAAC,SAAsC,EAAE,OAAc,EAAE,OAAO,CAAC;QACpF;IACF;AACF;;AClCM,MAAO,cAAkB,SAAQ,SAAY,CAAA;AACjD,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,KAAK,CAAC,OAAwC;IACvD;AACD;SAEe,sBAAsB,GAAA;AACpC,IAAA,OAAO,UAAgE,MAAqB,EAAA;AAC1F,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAkB;AAC9G,IAAA,CAAC;AACH;;ACVA;;;AAGG;MACU,cAAc,GAAG,CAAI,KAA4D,EAAE,KAAQ,KAAI;AAC1G,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;AAE1B,IAAA,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1B;;ACTO,MAAM,qBAAqB,GAAG;AAe9B,MAAM,0BAA0B,GAAG,CAAC,MAAwC,KAAiB;IAClG,OAAO,CAAC,SAA0B,KAA6B;AAC7D,QAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM;QAEnC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,CAAC,qBAAqB,GAAG,IAAI,EAAE;QAC1C;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AAElE,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CACrC,CAAC,KAAK,KACJ,KAAK,KAAK,IAAI;AACd,YAAA,KAAK,KAAK,SAAS;AACnB,YAAA,KAAK,KAAK,EAAE;AACZ,aAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5C,aAAC,UAAU,IAAI,KAAK,KAAK,KAAK,CAAC,CAClC;QAED,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,EAAE,CAAC,qBAAqB,GAAG,IAAI,EAAE;QAC1C;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AACH;AAEO,MAAM,kBAAkB,GAAG;AAE3B,MAAM,eAAe,GAAG,CAAC,OAAwB,KAA6B;AACnF,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAC3B,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,kBAAkB,GAAG,IAAI,EAAE;AACjE;AAEO,MAAM,QAAQ,GAAG;AAEjB,MAAM,OAAO,GAAG,CAAC,OAAwB,KAA6B;AAC3E,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAC3B,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,KAAK,GAAG,yCAAyC;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE;AACxD;AAEO,MAAM,UAAU,GAAG;MAEb,SAAS,GAAG,CAAC,WAAmB,EAAE,mBAA2B,KAAI;IAC5E,OAAO,CAAC,SAA0B,KAAI;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1C,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAE1D,QAAA,IAAI,eAAe,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AAClE,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,OAAO,EAAE,KAAK,KAAK,eAAe,EAAE,KAAK,EAAE;YAC7C,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;AAClD,YAAA,OAAO,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE;QAC/B;aAAO;AACL,YAAA,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC;AAChC,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;AAEO,MAAM,UAAU,GAAG;IACxB,SAAS;IACT,OAAO;IACP,eAAe;IACf,0BAA0B;;;AC5F5B;AACA;AAEA;;;;;;;;;;;;;AAaG;AAEH,MAAM,GAAG,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,GAAQ,KAAI;AAC3C,IAAA,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;QACtG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACtC;;AAAO,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK;AAC7B,CAAC;AAEM,MAAM,KAAK,GAAG,CAAI,QAAW,KAAO;IACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,QAAA,OAAO,QAAQ;IAEjD,IAAI,GAAG,GAAG,QAAe;IAEzB,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,EACD,IAAI,EACJ,GAAQ,EACR,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3C,IAAA,IAAI,GAAG,KAAK,iBAAiB,EAAE;QAC7B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C;AAAO,SAAA,IAAI,GAAG,KAAK,gBAAgB,EAAE;AACnC,QAAA,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB;AAAO,SAAA,IAAI,GAAG,KAAK,cAAc,EAAE;AACjC,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE;AACf,QAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAQ,EAAA;YAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrB,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IAAI,GAAG,KAAK,cAAc,EAAE;AACjC,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE;AACf,QAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAQ,EAAE,GAAQ,EAAA;AACtC,YAAA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IAAI,GAAG,KAAK,eAAe,EAAE;AAClC,QAAA,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;IACtB;AAAO,SAAA,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACpC,QAAA,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACzC;AAAO,SAAA,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACtC,QAAA,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C;AAAO,SAAA,IAAI,GAAG,KAAK,sBAAsB,EAAE;AACzC,QAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACpB;SAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;;;QAGrC,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;IAChC;IAEA,IAAI,GAAG,EAAE;AACP,QAAA,KAAK,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QACnE;QAEA,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAAE;AAC1E,YAAA,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD;IACF;IAEA,OAAO,GAAG,IAAI,GAAG;AACnB;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AAEH,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAE3C,SAAS,IAAI,CAAC,IAAS,EAAE,GAAQ,EAAE,GAAS,EAAA;AAC1C,IAAA,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACvB,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AAAE,YAAA,OAAO,GAAG;IACjC;AACF;MAEa,KAAK,GAAG,CAAC,GAAQ,EAAE,GAAQ,KAAI;AAC1C,IAAA,IAAI,IAAS,EAAE,GAAQ,EAAE,GAAQ;IACjC,IAAI,GAAG,KAAK,GAAG;AAAE,QAAA,OAAO,IAAI;AAE5B,IAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,WAAW,EAAE;QAC9D,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;QACzD,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;AAE7D,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE;AACrC,gBAAA,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBAAC;YAC5C;AACA,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC;QACnB;AAEA,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;AACzB,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,KAAK,GAAG,IAAI,GAAG,EAAE;gBACf,GAAG,GAAG,GAAG;AACT,gBAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACpB,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK;gBACxB;AACA,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,KAAK;YACjC;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;AACzB,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,KAAK,GAAG,IAAI,GAAG,EAAE;AACf,gBAAA,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACZ,gBAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACpB,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK;gBACxB;AACA,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChC,oBAAA,OAAO,KAAK;gBACd;YACF;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACzB,YAAA,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;QAC3B;AAAO,aAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,UAAU,EAAE;AAC7C,gBAAA,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAC;YACxD;AACA,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC;QACnB;AAEA,QAAA,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,UAAU,EAAE;;;gBAG7C,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;oBAAC;YACxC;AACA,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC;QACnB;QAEA,IAAI,CAAC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACpC,GAAG,GAAG,CAAC;AACP,YAAA,KAAK,IAAI,IAAI,GAAG,EAAE;gBAChB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAAE,oBAAA,OAAO,KAAK;AACtE,gBAAA,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,KAAK;YAClE;YACA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG;QACxC;IACF;AAEA,IAAA,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG;AACnC;;AC9LO,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;AACxC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;QAC3C,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;AACxC,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;AACxC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;;IAGA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,EAAA,EAAK,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E;MAEa,SAAS,GAAG,CACvB,IAAY,EACZ,IAAY,EACZ,aAA6B,EAC7B,MAAM,GAAG,SAAS,EAAE,EACpB,IAAI,GAAG,GAAG,EACV,QAAA,GAAsC,KAAK,KACzC;AACF,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC;IACF;AAEA,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE;AAE5C,IAAA,MAAM,OAAO,GAAG,aAAa,IAAI,EAAE;IAEnC,IAAI,YAAY,GAAG,CAAA,EAAG,IAAI,IAAI,IAAI,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE;AAElD,IAAA,IAAI,aAAa,KAAK,IAAI,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5D,QAAA,YAAY,IAAI,CAAA,UAAA,EAAa,IAAI,CAAC,WAAW,EAAE,EAAE;IACnD;AAEA,IAAA,YAAY,IAAI,CAAA,SAAA,EAAY,MAAM,CAAA,WAAA,EAAc,aAAa,GAAG;AAChE,IAAA,QAAQ,CAAC,MAAM,GAAG,YAAY;AAChC;AAEO,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,KAAI;AAC7E,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM;YACb,IAAI;gBACJ,GAAG;iBACF,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;iBAC5B,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;AACnC,gBAAA,wCAAwC;IAC5C;AACF;AAEO,MAAM,SAAS,GAAG,MAAK;AAC5B,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ;AAEzC,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAClC,QAAA,OAAO,WAAW;IACpB;IAEA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAE1D,IAAI,QAAQ,EAAE;AACZ,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAErC,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,QAAA,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAChF;AAEA,IAAA,OAAO,QAAQ;AACjB;;MChFa,eAAe,CAAA;AAM1B,IAAA,WAAA,CAA4B,GAAW,EAAA;QAAX,IAAA,CAAA,GAAG,GAAH,GAAG;AALd,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AAExC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;IAEV;AAE1C,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO;AAEzB,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAEzB,KAAK,CAAC,GAAG;AACN,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;iBAClC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC;aAAO;YACL,IAAI,CAAC,KAAK,EAAE;QACd;AAEA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK;IAClC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AACD;;ACiCD;;AAEG;AACI,MAAM,oBAAoB,GAAG,CAClC,MAA2B,EAC3B,OAAA,GAAuC,EAAE,KACjB;AACxB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI;AACzC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO;AACxC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,CAAC,CAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7D,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;AAC9C,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,yDAAC;IAE1C,IAAI,KAAK,GAAkB,IAAI;IAC/B,IAAI,oBAAoB,GAAG,YAAY;IAEvC,MAAM,eAAe,GAAG,MAAK;AAC3B,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,oBAAoB,CAAC,KAAK,CAAC;YAC3B,KAAK,GAAG,IAAI;QACd;AACF,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,EAA0B;IAEzE,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM;AAExD,QAAA,eAAe,EAAE;QAEjB,MAAM,UAAU,GAAG,oBAAoB;AACvC,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;AACnC,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU;;AAGtC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,OAAO,CAAC,cAAc,IAAI;AAC1B,YAAA,OAAO,cAAc;QACvB;AAEA,QAAA,OAAO,CAAC,gBAAgB,IAAI;AAE5B,QAAA,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC5B,YAAA,MAAM,OAAO,GAAG,CAAC,SAAiB,KAAI;AACpC,gBAAA,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS;AACrC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;AAChD,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEtC,gBAAA,MAAM,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa;gBAChD,oBAAoB,GAAG,KAAK;gBAE5B,SAAS,CAAC,MAAK;oBACb,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,oBAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC;gBACxC;qBAAO;oBACL,KAAK,GAAG,IAAI;AAEZ,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;AACd,wBAAA,OAAO,CAAC,cAAc,IAAI;AAC5B,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC;AAED,YAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;IAED,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,eAAe,EAAE;QACjB,oBAAoB,GAAG,YAAY;AACnC,QAAA,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;AAC/B,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,eAAe,EAAE;AACjB,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;AAED,IAAA,cAAc,CAAC,IAAI,GAAG,IAAI;AAC1B,IAAA,cAAc,CAAC,KAAK,GAAG,KAAK;AAC5B,IAAA,cAAc,CAAC,IAAI,GAAG,IAAI;AAE1B,IAAA,OAAO,cAAc;AACvB;AAEA;AACO,MAAM,UAAU,GAAG,CAAC,CAAS,KAAK;AAEzC;AACO,MAAM,MAAM,GAAG,CAAC,CAAS,KAAK,CAAC,GAAG;AAEzC;AACO,MAAM,OAAO,GAAG,CAAC,CAAS,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAEhD;AACO,MAAM,SAAS,GAAG,CAAC,CAAS,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAEnF;AACO,MAAM,WAAW,GAAG,CAAC,CAAS,KAAI;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC;AAC9F;AAEA;AACO,MAAM,WAAW,GAAG,CAAC,CAAS,KAAI;IACvC,MAAM,EAAE,GAAG,OAAO;AAClB,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9D;AAEA;AACO,MAAM,iBAAiB,GAAG,CAAC,CAAS,KAAI;IAC7C,MAAM,EAAE,GAAG,GAAG;AACd,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9D;;MC/Ka,kBAAkB,GAAG,CAIhC,OAAsB,EACtB,OAAmC,KACjC;AAGF,IAAA,MAAM,eAAe,GAAG,CAAC,IAA6D,KAAmB;AACvG,QAAA,IAAI;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;QACzF;AAAE,QAAA,MAAM;;AAEN,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;AAE7C,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO;AACpC,UAAE,YAAY,CAAyB,OAAO;AAC9C,UAAE,EAAE,CAAyB,OAAO,CAAC;IAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CACnC,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AAE1B,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE;AACtB,cAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3D,cAAE,IAAI,CAAC,YAAY;QAErB,OAAO,MAAM,CAAC,IAAI,CAChB,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAC9B;IACH,CAAC,CAAC,CACH;IAED,MAAM,GAAG,GAA8B,CAAC,OAAO,EAAE,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,UAAU;IAEjH,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACrE,YAAY;AACb,KAAA,CAAC;AACJ;AAEA;;AAEG;MACU,8BAA8B,GAAG,CAC5C,OAAU,EACV,OAAmC,KACjC;IAGF,MAAM,IAAI,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,EACvB,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5C,QAAA,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,GACzD;AAEF,IAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AAC1B;;ACrCO,MAAM,eAAe,GAAG,CAAC,EAAW,KAAyB;AAClE,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,KAAK;AAE/B,IAAA,MAAM,GAAG,GAAG,EAAE,EAAE;AAChB,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,iBAAiB,IAAI,GAAG,IAAI,kBAAkB,IAAI,GAAG;AACzG;AAEO,MAAM,2BAA2B,GAAG,MAAoB;IAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe;AACxD,IAAA,OAAO,MAAM,CAAC;QACZ,eAAe,EAAE,CAAC,eAAe,CAAC;AAClC,QAAA,gBAAgB,EAAE,EAAE;AACrB,KAAA,CAAC;AACJ;MAEa,wBAAwB,GAAG,MACtC,MAAM,CAAC;AACL,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,gBAAgB,EAAE,EAAE;AACrB,CAAA;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAgB,EAAE,CAAgB,KAAa;IAC5E,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AAEvC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;IACjC;AACA,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,2BAA2B,GAAG,CAAC,CAAqB,EAAE,CAAqB,KAC/E,qBAAqB,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC;IAC3D,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC;AAExD,MAAM,kBAAkB,GAAG,CAAC,EAA+C,KAAmB;AACnG,IAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,wBAAwB,EAAE;IACtE,IAAI,eAAe,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,EAAE;IAElC,IAAI,EAAE,YAAY,WAAW,IAAI,EAAE,YAAY,UAAU,EAAE;AACzD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO,wBAAwB,EAAE;AAE/C,QAAA,OAAO,MAAM,CAAC;YACZ,eAAe,EAAE,CAAC,OAAO,CAAC;AAC1B,YAAA,gBAAgB,EAAE,EAAE;AACrB,SAAA,CAAC;IACJ;IAEA,IAAI,QAAQ,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,6BAA6B,CAAC,EAAE,CAAC;AAE1D,IAAA,OAAO,iCAAiC,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AACxE;AAEA,MAAM,6BAA6B,GAAG,CAAC,KAA8C,KAAmB;AACtG,IAAA,OAAO,YAAY,CAAC;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAI;AAChC,YAAA,MAAM,eAAe,GAAG,yBAAyB,CAAC,MAAM,CAAC;YACzD,MAAM,gBAAgB,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;YAE9D,OAAO;gBACL,eAAe;gBACf,gBAAgB;aACjB;QACH,CAAC;AACD,QAAA,KAAK,EAAE,2BAA2B;AACnC,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,iCAAiC,GAAG,CAAC,SAAoC,KAAmB;IAChG,OAAO,QAAQ,CACb,SAAS,CAAC,IAAI,CACZ,SAAS,CAAC,EAAE,CAAC,EACb,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,CAAC,KAAI;QAC1C,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,YAAY,WAAW,CAAC,CAAC;YACvF,IAAI,cAAc,EAAE;AAClB,gBAAA,OAAO,CAAC,KAAK,CACX,4JAA4J,EAC5J,cAAc,CACf;YACH;QACF;QAEA,OAAO;YACL,gBAAgB;YAChB,eAAe;SAChB;IACH,CAAC,CAAC,CACH,EACD;AACE,QAAA,YAAY,EAAE;AACZ,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,eAAe,EAAE,EAAE;AACpB,SAAA;AACD,QAAA,KAAK,EAAE,2BAA2B;AACnC,KAAA,CACe;AACpB,CAAC;AAED,MAAM,yBAAyB,GAAG,CAAC,KAAsC,KAAmB;AAC1F,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,EAAE;AAEpD,IAAA,MAAM,KAAK,GAAG,KAAK,YAAY,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;IAEnG,MAAM,MAAM,GAAkB,EAAE;AAChC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,EAAE;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACzB;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAED,MAAM,wBAAwB,GAAG,CAC/B,KAAqG,KACxE;AAC7B,IAAA,IAAI,KAAK,YAAY,SAAS,EAAE;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CACvB,SAAS,CAAC,KAAK,CAAC,EAChB,GAAG,CAAC,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAC5C;IACH;IAEA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACnD,CAAC;AAEM,MAAM,kBAAkB,GAAG,CAAC,EAAiB,KAClD,QAAQ,CACN,MAAK;IACH,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE;IAElD,IAAI,SAAS,EAAE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,QAAA,OAAO,CAAC,IAAI,CACV,oFAAoF,EACpF,eAAe,CAChB;IACH;IAEA,OAAO;AACL,QAAA,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI;AAC1C,QAAA,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI;KAC7C;AACH,CAAC,EACD;IACE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,eAAe;AAClG,CAAA;;ACvLE,MAAM,gBAAgB,GAAG,MAAK;AACnC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;IAEhC,eAAe,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE3C,IAAA,OAAO,UAAU,CAAC,UAAU,EAAE;AAChC;AAEO,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,iDAAC;IAE3B,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CACX,8IAA8I,CAC/I;QACH;AACF,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC1C;AACH;AAEO,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,iDAAC;IAE3B,SAAS,CAAC,MAAK;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE;KAC1B;AACH;;MClCa,sBAAsB,GAAG,CAAC,EAA4B,EAAE,OAA8B,KAAI;AACrG,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAwB,IAAI,kEAAC;IAElE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,UAAU,EAAE;YAAE;AAEnB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAElB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE;AAErB,QAAA,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AAEhC,QAAA,IAAI,GAAG,CAAC,eAAe,EAAE;YACvB,QAAQ,CAAC,UAAU,EAAE;QACvB;AAEA,QAAA,IAAI,GAAG,CAAC,cAAc,EAAE;YACtB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC;QAC/C;AACF,IAAA,CAAC,CAAC;IAEF,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAEjD,IAAA,OAAO,sBAAsB,CAAC,UAAU,EAAE;AAC5C;AAEO,MAAM,0BAA0B,GAAG,CAAC,OAA8B,KACvE,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO;;ACtC7C,MAAM,qBAAqB,GAAG,CAAC,EAA4B,KAAI;AACpE,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;IACrC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAE/G,OAAO,QAAQ,CACb,MAAK;QACH,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,EAAE;AAE5B,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE;;;AAIrB,QAAA,gBAAgB,EAAE;QAElB,IAAI,CAAC,GAAG,CAAC,cAAc;AAAE,YAAA,OAAO,EAAE;QAElC,MAAM,QAAQ,GAAkB,EAAE;AAElC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACvE,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAElD,YAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACxB;QACF;AAEA,QAAA,OAAO,QAAQ;AACjB,IAAA,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5E;AACH;;MCZa,kBAAkB,GAAG,CAChC,EAA4B,EAC5B,MAAmC,KACjC;AACF,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,MAAM,CAAC,MAAK;QACV,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,QAAQ,EAAE;AAExD,QAAA,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE;AACzC,YAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE;YAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;AACvC,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3B,iBAAA,IAAI,EAAE;YAET,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE;AAEpB,YAAA,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;QACtC;AAEA,QAAA,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE;AACvC,YAAA,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE;AAE1C,YAAA,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACjE,SAAS,CAAC,MAAK;oBACb,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE;oBAExB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACrD,gBAAA,CAAC,CAAC;YACJ;QACF;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,OAAO,GAA8B,EAAE;IAE7C,MAAM,GAAG,GAAG,CAAC,MAAc,KAAK,MAAM,IAAI,OAAO;AAEjD,IAAA,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,MAAuB,KAAI;QACvD,IAAI,GAAG,CAAC,MAAM,CAAC;YAAE;AAEjB,QAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AACnC,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAK;AAC5B,gBAAA,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;AACvD,gBAAA,MAAM,KAAK,GAAG,MAAM,EAAE;AAEtB,gBAAA,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE;oBAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE;oBAExB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC;gBACxC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,GAAoC,KAAI;AACxD,QAAA,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;QACtB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,MAAc,KAAI;AAChC,QAAA,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;AAE1B,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC;QAEtB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC,eAAe,EAAE;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE;AAExB,YAAA,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC;QAClC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,MAAgB,KAAI;AACtC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf;AACF,IAAA,CAAC;AAED,IAAA,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpD;MAEa,aAAa,GAAG,CAA4C,EAA4B,EAAE,QAAW,KAAI;AACpH,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,OAAO,kBAAkB,CAAC,EAAE,EAAE;AAC5B,QAAA,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrF,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAI;YAClC,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D;iBAAO;AACL,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD;QACF,CAAC;AACF,KAAA,CAAC;AACJ;AAEO,MAAM,iBAAiB,GAAG,CAA4C,QAAW,KACtF,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ;AAE5C,MAAM,0BAA0B,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;MAEpG,gBAAgB,GAAG,CAC9B,EAA4B,EAC5B,YAAe,KACb;AACF,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,OAAO,kBAAkB,CAAC,EAAE,EAAE;AAC5B,QAAA,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/E,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAI;AAClC,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,gBAAA,IAAI,0BAA0B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAC9C,IAAI,SAAS,EAAE;wBACb,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;oBACtC;yBAAO;AACL,wBAAA,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC;oBACrC;oBACA;gBACF;gBAEA,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjD,oBAAA,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC;gBACrC;qBAAO;oBACL,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,SAAS,CAAA,CAAE,CAAC;gBAClD;YACF;QACF,CAAC;AACF,KAAA,CAAC;AACJ;AAEO,MAAM,oBAAoB,GAAG,CAA4C,YAAe,KAC7F,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY;MAEtC,YAAY,GAAG,CAA4C,EAA4B,EAAE,QAAW,KAAI;AACnH,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,OAAO,kBAAkB,CAAC,EAAE,EAAE;AAC5B,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KACpB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAkC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAC3F;QACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAI;AAClC,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;oBACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAkC,EAAE,mBAAmB,CAAC,QAAQ,CAAC;gBAC5F;qBAAO;AACL,oBAAA,QAAQ,CAAC,QAAQ,CACf,EAAE,EACF;AACE,wBAAA,CAAC,KAAK,GAAG,CAAA,EAAG,SAAS,CAAA,CAAE;AACxB,qBAAA,EACD,mBAAmB,CAAC,QAAQ,CAC7B;gBACH;YACF;QACF,CAAC;AACF,KAAA,CAAC;AACJ;AAEO,MAAM,gBAAgB,GAAG,CAA4C,QAAW,KACrF,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ;;MCzK9B,+BAA+B,GAAG,CAAC,IAAqB,MAAmB;IACtF,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,CAAC,EAAE,IAAI,CAAC,CAAC;AACV,CAAA;MAEY,uBAAuB,GAAG,CAAC,EAAsB,EAAE,IAAc,KAA+B;IAC3G,IAAI,CAAC,EAAE,EAAE;QACP,OAAO;AACL,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;SACb;IACH;AAEA,IAAA,MAAM,oBAAoB,GAAG,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,IAAI;IAChF,MAAM,MAAM,GAAG,MACb,oBAAoB,GAAG,oBAAoB,GAAG,+BAA+B,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;IAE3G,OAAO;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE;AAC1D,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE;AAC1D,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE;KAC3D;AACH;AAaO,MAAM,uBAAuB,GAAG,CAAC,EAA4B,KAAI;AACtE,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC;AAE5E,IAAA,MAAM,uBAAuB,GAAG,MAAM,CAA4B,YAAY,EAAE,mEAAC;IAEjF,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,KAAI;QACxC,IAAI,CAAC,UAAU,EAAE;YAAE;AAEnB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAElB,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,YAAA,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC;AAErD,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5D;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE;QAErB,SAAS,CAAC,MAAK;AACb,YAAA,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAE3C,YAAA,IAAI,GAAG,CAAC,eAAe,EAAE;gBACvB,QAAQ,CAAC,UAAU,EAAE;YACvB;AAEA,YAAA,IAAI,GAAG,CAAC,cAAc,EAAE;gBACtB,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO;AACpE,gBAAA,MAAM,2BAA2B,GAAG,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAE3F,IAAI,eAAe,KAAK,QAAQ,IAAI,SAAS,EAAE,IAAI,2BAA2B,EAAE;AAC9E,oBAAA,OAAO,CAAC,KAAK,CACX,CAAA,SAAA,EAAY,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,CAAA,0JAAA,CAA4J,CAClN;gBACH;AAEA,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;IAEF,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAEjD,IAAA,OAAO,QAAQ,CAAC,MAAM,uBAAuB,EAAE,EAAE;AAC/C,QAAA,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,KAAA,CAAC;AACJ;AAEO,MAAM,2BAA2B,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC;;ACtG3F,MAAM,oBAAoB,GAAG,CAAC,KAAgC,KAAI;AAChE,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,kBAAkB;AAC7C,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;IAEnC,IAAI,OAAO,GAAG,KAAK;IACnB,IAAI,OAAO,GAAG,KAAK;IACnB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,OAAO,GAAG,KAAK;IAEnB,IAAI,UAAU,EAAE;QACd,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG;QAC9C,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM;QAC9C,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI;QAC7C,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK;IAChD;;AAGA,IAAA,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC;IAE5F,OAAO;QACL,OAAO;QACP,OAAO;QACP,MAAM;QACN,OAAO;QACP,SAAS;KACV;AACH,CAAC;MAEY,yBAAyB,GAAG,CAAC,EAA4B,EAAE,OAA0C,KAAI;AACpH,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,wBAAwB,EAAE,CAAC;AAC/G,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;IACrC,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;AAElD,IAAA,MAAM,yBAAyB,GAAG,MAAM,CAAyC,EAAE,qEAAC;AACpF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA8B,IAAI,oDAAC;AAE1D,IAAA,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAe;AAExD,IAAA,MAAM,mBAAmB,GAAG,CAAC,OAAoC,KAAI;AACnE,QAAA,IAAI,aAAa,GAAG,CAAC,GAAG,yBAAyB,EAAE,CAAC;AAEpD,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;;AAGpF,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,GAAG,GAAG;AAEhF,YAAA,MAAM,iBAAiB,GAAyC;gBAC9D,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;AAC5C,gBAAA,iBAAiB,EAAE,wBAAwB;gBAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,oBAAoB,CAAC,KAAK,CAAC;aAC/B;AAED,YAAA,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;AAC7B,gBAAA,aAAa,GAAG;AACd,oBAAA,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;oBAC7C,iBAAiB;AACjB,oBAAA,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;iBAC/C;YACH;iBAAO;AACL,gBAAA,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,iBAAiB,CAAC;YACvD;QACF;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,yBAAyB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9D,IAAA,CAAC;IAED,MAAM,0BAA0B,GAAG,CAAC,QAAiB,EAAE,OAAgB,EAAE,MAA0B,KAAI;AACrG,QAAA,QAAQ,EAAE,EAAE,UAAU,EAAE;QACxB,yBAAyB,CAAC,KAAK,EAAE;AAEjC,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACzB,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAClB;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAK,mBAAmB,CAAC,OAAO,CAAC,EAAE;AACtF,YAAA,GAAG,OAAO;AACV,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,IAAA,CAAC;AAED,IAAA,MAAM,sBAAsB,GAAG,CAAC,QAAqC,EAAE,QAA4B,KAAI;AACrG,QAAA,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,cAAc;AAEpC,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,MAAM,qBAAqB,GAAG,yBAAyB,EAAE;QACzD,MAAM,oBAAoB,GAA2C,EAAE;AAEvE,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,eAAe,EAAE;AACzC,YAAA,IAAI,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,gBAAA,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;AAClF,gBAAA,MAAM,aAAa,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;gBAE/D,IAAI,CAAC,aAAa,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,CAAC,2FAA2F,EAAE,EAAE,CAAC;oBAC7G;gBACF;AAEA,gBAAA,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;gBACxC;YACF;YAEA,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAChD,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA,CAAC;YAEF,IAAI,CAAC,wBAAwB,EAAE;AAC7B,gBAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE;AACrD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE,MAAM;AAClB,iBAAA,CAAC;gBAEF;YACF;AAEA,YAAA,MAAM,iBAAiB,GAA8B;gBACnD,kBAAkB,EAAE,wBAAwB,CAAC,WAAW;gBACxD,iBAAiB,EAAE,wBAAwB,CAAC,iBAAiB;gBAC7D,gBAAgB,EAAE,wBAAwB,CAAC,WAAW;gBACtD,cAAc,EAAE,wBAAwB,CAAC,cAAc;gBACvD,UAAU,EAAE,wBAAwB,CAAC,aAAa;AAClD,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE;aACxB;YAED,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,GAAG,iBAAiB;gBACpB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AAC3C,aAAA,CAAC;AAEF,YAAA,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;AACjC,YAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB;AAEA,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC1C,YAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE;AAE3C,YAAA,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;AACtB,YAAA,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC;AAEA,QAAA,yBAAyB,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACrD,IAAA,CAAC;IAED,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,cAAc;AACpC,QAAA,MAAM,QAAQ,GAAG,UAAU,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,SAAS,EAAE;AAE3B,QAAA,SAAS,CAAC,MAAM,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACxE,IAAA,CAAC,CAAC;IAEF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,GAAG,GAAG,QAAQ,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,QAAQ,EAAE;QAEtB,SAAS,CAAC,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,IAAA,CAAC,CAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC;AAEpD,IAAA,OAAO,yBAAyB,CAAC,UAAU,EAAE;AAC/C;AAEO,MAAM,6BAA6B,GAAG,CAAC,OAA0C,KACtF,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO;;AC9LhD,MAAM,gCAAgC,GAAG,CAAC,EAA4B,KAAI;AAC/E,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAoC,IAAI,+DAAC;IAE3E,IAAI,aAAa,GAAG,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC;IAEtB,YAAY,CAAC,OAAO;SACjB,IAAI,CACH,SAAS,CAAC,CAAC,EAAE,cAAc,EAAE,KAAI;QAC/B,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7B,aAAa,GAAG,CAAC;YACjB,cAAc,GAAG,CAAC;AAElB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,OAAO,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,MAAK;AACP,YAAA,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc;AAChD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AAEvB,YAAA,IAAI,SAAS,GAAG,aAAa,EAAE;gBAC7B,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjD;AAAO,iBAAA,IAAI,SAAS,GAAG,aAAa,EAAE;gBACpC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC/C;AAAO,iBAAA,IAAI,UAAU,GAAG,cAAc,EAAE;gBACtC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAClD;AAAO,iBAAA,IAAI,UAAU,GAAG,cAAc,EAAE;gBACtC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjD;YAEA,aAAa,GAAG,SAAS;YACzB,cAAc,GAAG,UAAU;QAC7B,CAAC,CAAC,CACH;AACH,IAAA,CAAC,CAAC,EACF,kBAAkB,CAAC,UAAU,CAAC;AAE/B,SAAA,SAAS,EAAE;AAEd,IAAA,OAAO,mBAAmB,CAAC,UAAU,EAAE;AACzC;AAEO,MAAM,oCAAoC,GAAG,MAAM,gCAAgC,CAAC,MAAM,CAAC,UAAU,CAAC;;MCxChG,oBAAoB,GAAG,CAAC,CAAqB,EAAE,CAAqB,KAAI;AACnF,IAAA,QACE,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AAC3B,QAAA,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,qBAAqB;AACnD,QAAA,CAAC,CAAC,mBAAmB,KAAK,CAAC,CAAC,mBAAmB;QAC/C,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAEnD;MAEa,wBAAwB,GAAG,CAAC,EAA4B,EAAE,OAAyC,KAAI;AAClH,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC/C,IAAA,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,QAAQ,CAAC;IAC3D,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/G,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,qBAAqB,GAAG,OAAO,EAAE,qBAAqB;IAE5D,IAAI,qBAAqB,EAAE;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;YACtB,IAAI,CAAC,UAAU,EAAE;gBAAE;AAEnB,YAAA,MAAM,cAAc,GAAG,qBAAqB,EAAE;AAC9C,YAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,cAAc;AAE3C,YAAA,IAAI,cAAc,IAAI,OAAO,EAAE;AAC7B,gBAAA,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS;AAAE,oBAAA,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI;AAC/E,gBAAA,IAAI,cAAc,CAAC,GAAG,KAAK,SAAS;AAAE,oBAAA,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG;gBAC5E,GAAG,CAAC,OAAO,EAAE;YACf;AACF,QAAA,CAAC,+CAAC;IACJ;AAEA,IAAA,MAAM,aAAa,GAAG,CAAC,UAAqC,MAAM;AAChE,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,qBAAqB,EAAE,KAAK;AAC5B,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,iBAAiB,EAAE,UAAU;AAC9B,KAAA,CAAC;IAEF,OAAO,QAAQ,CACb,MAAK;AACH,QAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,cAAc;AAC3C,QAAA,MAAM,UAAU,GAAG,iBAAiB,EAAE;;;AAItC,QAAA,gBAAgB,EAAE;AAElB,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,aAAa,CAAC,UAAU,CAAC;QAE/D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO;AAExE,QAAA,MAAM,qBAAqB,GAAG,WAAW,GAAG,WAAW;AACvD,QAAA,MAAM,mBAAmB,GAAG,YAAY,GAAG,YAAY;QAEvD,OAAO;YACL,SAAS,EAAE,qBAAqB,IAAI,mBAAmB;YACvD,qBAAqB;YACrB,mBAAmB;AACnB,YAAA,iBAAiB,EAAE,UAAU;SAC9B;AACH,IAAA,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAChD;AACH;AAEO,MAAM,4BAA4B,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC;;AClFtF,MAAM,mBAAmB,GAAG,CAAI,MAAiB,KAAI;IAC1D,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CACnC,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CACtB;AAED,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC;AACtB;AAiBO,MAAM,UAAU,GAAG,CAAI,IAAe,EAAE,EAAqB,EAAE,OAA2B,KAAI;AACnG,IAAA,IAAI,UAAU,GAAG,OAAO,EAAE,YAAY,GAAG,KAAK,GAAG,IAAI;AAErD,IAAA,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;AAC1B,QAAA,IAAI;;;AAGF,YAAA,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChB;AAAE,QAAA,MAAM;YACN,UAAU,GAAG,KAAK;YAElB,IAAI,SAAS,EAAE,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACjG;QACF;IACF;AAEA,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,EAAE;AAEtB,QAAA,IAAI,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE;YACvC,UAAU,GAAG,KAAK;YAClB;QACF;QAEA,SAAS,CAAC,MAAK;AACb,YAAA,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AACjB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,+CAAC;AAEF,IAAA,OAAO,GAAG;AACZ;AAIO,MAAM,gBAAgB,GAAG,CAAI,KAAqB,KAAI;AAC3D,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,OAAO,KAAK,EAAE;IAChB;AAEA,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACI,MAAM,kBAAkB,GAAG,CAAI,MAAiB,KAAI;AACzD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAW,IAAI,iDAAC;AAEpC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;AACtB,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE;QAEpB,IAAI,GAAG,EAAE;AACP,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACd,GAAG,CAAC,OAAO,EAAE;QACf;AACF,IAAA,CAAC,+CAAC;AAEF,IAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AAC3B;AAEA;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAI,MAAiB,KAAI;AACxD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAW,IAAI,iDAAC;AAEpC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;AACtB,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE;QAEpB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACd,GAAG,CAAC,OAAO,EAAE;QACf;AACF,IAAA,CAAC,+CAAC;AAEF,IAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AAC3B;AAEA;;;AAGG;AACI,MAAM,cAAc,GAAG,CAA0B,OAAU,KAAI;AACpE,IAAA,MAAM,WAAW,GAAG,MAAM,CAAuB,IAAI,uDAAC;IAEtD,eAAe,CAAC,MAAK;AACnB,QAAA,WAAW,CAAC,GAAG,CAAC,OAAO,EAAmB,CAAC;AAC7C,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,WAAW;AACpB;AAEO,MAAM,aAAa,GAAG,CAAI,OAAwB,KAAI;IAC3D,IAAI,MAAM,GAAqB,IAAI;AACnC,IAAA,OAAO,MAAK;AACV,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,OAAO,EAAE;AAC/B,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AACH;;AC3HA;AACO,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAEpF;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;AACO,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAEtF;;;AAGG;AACI,MAAM,yBAAyB,GAAG,CAAC,OAA+B,KACvE,wBAAwB,EAAE,CAAC,mBAAmB,CAAC,OAAO;AAExD;;;AAGG;AACI,MAAM,yBAAyB,GAAG,CAAC,UAAkB,KAC1D,wBAAwB,EAAE,CAAC,mBAAmB,CAAC,UAAU;AAE3D;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,OAA+B,KACrE,wBAAwB,EAAE,CAAC,iBAAiB,CAAC,OAAO;AAEtD;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,UAAkB,KAAK,wBAAwB,EAAE,CAAC,iBAAiB,CAAC,UAAU;AAEtH;AACO,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAK;AACxD,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,KAAK,GAAG,WAAW,EAAE;IAE3B,OAAO,QAAQ,CAAC,MAAK;QACnB,QAAQ,IAAI;AACV,YAAA,KAAK,KAAK,EAAE;AACV,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;YACb,KAAK,IAAI,EAAE;AACX,YAAA;AACE,gBAAA,OAAO,IAAI;;AAEjB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;AACO,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,yBAAyB,CAAC;AAEtG;AACO,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,0BAA0B,CAAC;AAExG;AACO,MAAM,wBAAwB,GAAG,aAAa,CAAC,MAAK;AACzD,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;IAErC,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,IAAI,UAAU,EAAE;AAAE,YAAA,OAAO,UAAU;AACnC,QAAA,OAAO,WAAW;AACpB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;AACO,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,mBAAmB,CAAC;AAEnG;AACO,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,iBAAiB,CAAC;AAErG;AACO,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAK;AACtD,IAAA,MAAM,OAAO,GAAG,mBAAmB,EAAE;IAErC,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,IAAI,OAAO,EAAE;AAAE,YAAA,OAAO,OAAO;AAC7B,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;AACO,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,gBAAgB,CAAC;AAE3F;AACO,MAAM,wBAAwB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,2BAA2B,EAAE,CAAC;AAElH;AACO,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAK;AAC1D,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACpD,IAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AACpC,IAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AACrC,IAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACxC,IAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC1C,IAAA,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS;AACpC,IAAA,cAAc,CAAC,KAAK,CAAC,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,cAAc;IAC/F,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;AAEnD,IAAA,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,cAAc,CAAC;IAEzE,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC,MAAM;AACjD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QACxB,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;SACzC;AACH,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtID,IAAI,wBAAwB,GAAG,KAAK;AAEpC;;;;AAIG;AACI,MAAM,gCAAgC,GAAG,MAAK;IACnD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3C;IACF;IAEA,IAAI,wBAAwB,EAAE;QAC5B;IACF;IACA,wBAAwB,GAAG,IAAI;AAE/B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,mBAAmB,GAAG,yBAAyB,EAAE;IAEvD,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,UAAU,GAAG,mBAAmB,EAAE;AAExC,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE;AAClD,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,KAAK,CAAA,EAAA,CAAI;AAClC,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAA,EAAA,CAAI;AACpC,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEA,IAAI,uBAAuB,GAAG,KAAK;AAEnC;;;;AAIG;AACI,MAAM,+BAA+B,GAAG,MAAK;IAClD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3C;IACF;IAEA,IAAI,uBAAuB,EAAE;QAC3B;IACF;IACA,uBAAuB,GAAG,IAAI;AAE9B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,qBAAqB,GAAG,wBAAwB,EAAE;IAExD,MAAM,CAAC,MAAK;QACV,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC,IAAI,IAAI;AAEnD,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE;AAClD,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,KAAK,CAAA,EAAA,CAAI;AAClC,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAA,EAAA,CAAI;AACpC,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACnDA;AACA,MAAM,2BAA2B,GAAG,CAAC;AAErC;AACA,MAAM,2BAA2B,GAAG,kCAAkC;AACtE,MAAM,sBAAsB,GAAG,6BAA6B;AAE5D;MACa,mBAAmB,GAAG,CAAC,EAA4B,EAAE,OAAiC,KAAI;AACrG,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE;AAC3E,IAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AACtD,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAChC,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;AACpC,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,+DAAC;AAClD,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,iEAAC;AACpD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,sDAAC;AACzC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,kBAAkB,GAAG,WAAW,EAAE;AACxC,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QAEpD,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,kBAAkB,CAAC,qBAAqB,IAAI,kBAAkB,CAAC,mBAAmB;AAC3F,YAAA,KAAK,YAAY;gBACf,OAAO,kBAAkB,CAAC,qBAAqB;AACjD,YAAA,KAAK,UAAU;gBACb,OAAO,kBAAkB,CAAC,mBAAmB;;AAEnD,IAAA,CAAC,qDAAC;;IAGF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE;QAErC,IAAI,eAAe,EAAE;AACnB,YAAA,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;QACjD;AACF,IAAA,CAAC,CAAC;;IAGF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,aAAa,GAAG,SAAS,EAAE;AACjC,QAAA,MAAM,SAAS,GAAG,OAAO,EAAE;AAC3B,QAAA,MAAM,cAAc,GAAG,UAAU,EAAE;AACnC,QAAA,MAAM,kBAAkB,GAAG,cAAc,EAAE;QAE3C,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;AAEnC,YAAA,IAAI,CAAC,EAAE;gBAAE;AAET,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE;gBAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;gBACvE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;gBACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,sBAAsB,CAAC;gBAC7E;YACF;YAEA,IAAI,kBAAkB,EAAE;AACtB,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;YAC/C;YAEA,IAAI,cAAc,EAAE;AAClB,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,2BAA2B,CAAC;AAClD,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,cAAc,EAAE,MAAM;AACtB,oBAAA,cAAc,EAAE,OAAO;AACxB,iBAAA,CAAC;AAEF,gBAAA,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC1C,oBAAA,MAAM,EAAE,UAAU;AACnB,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,cAAc,EAAE;AAC1C,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,CAAC;gBACF,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;gBAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,sBAAsB,CAAC;gBAC7E,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;YAC1D;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;;IAGF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,cAAc,GAAG,UAAU,EAAE;QAEnC,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,cAAc,GAAG,UAAU,EAAE;AACnC,YAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;YACnC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,cAAc;AAC7C,YAAA,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE;AAC1D,YAAA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;AAE/D,YAAA,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc;gBAAE;YAE5B,QAAQ,oBAAoB;AAC1B,gBAAA,KAAK,MAAM;oBACT,EAAE,CAAC,MAAM,CAAC;wBACR,GAAG,EAAE,KAAK,GAAG,OAAO;wBACpB,IAAI,EAAE,KAAK,GAAG,OAAO;AACrB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,YAAY;oBACf,EAAE,CAAC,MAAM,CAAC;wBACR,IAAI,EAAE,KAAK,GAAG,OAAO;AACrB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,UAAU;oBACb,EAAE,CAAC,MAAM,CAAC;wBACR,GAAG,EAAE,KAAK,GAAG,OAAO;AACpB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF;;AAEN,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,CAAC,CAAa,KAAI;AACvC,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAErD,QAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,EAAE;AAC5F,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB;AACF,IAAA,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvC,QAAA,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACzC,QAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChC,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAa,KAAI;QACtC,MAAM,OAAO,GAAG,SAAS,CAAa,QAAQ,EAAE,SAAS,CAAC;QAC1D,MAAM,SAAS,GAAG,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC;AAC9D,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,EAAE;YAAE;QAET;aACG,IAAI,CACH,kBAAkB,CAAC,UAAU,CAAC,EAC9B,SAAS,CAAC,OAAO,CAAC,EAClB,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;AAE9B,aAAA,SAAS,EAAE;QAEd;AACG,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,UAAU,CAAC,EAC9B,GAAG,CAAC,MAAM,iBAAiB,EAAE,CAAC;AAE/B,aAAA,SAAS,EAAE;AAEd,QAAA,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AACvD,QAAA,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;AAChE,QAAA,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,IAAA,CAAC;IAED,YAAY,CAAC,OAAO;AACjB,SAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAC7B,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAa,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAC3E,MAAM,CAAC,CAAC,CAAC,KAAsB,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,MAAM,OAAO,EAAE,CAAC,EACvB,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,EAC5B,kBAAkB,EAAE;AAErB,SAAA,SAAS,EAAE;IAEd,OAAO;AACL,QAAA,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE;AACnC,QAAA,iBAAiB,EAAE,UAAU,CAAC,UAAU,EAAE;KAC3C;AACH;;MC5La,mBAAmB,GAAG,MAAM,CAAC,qBAAqB;MAgBlD,iBAAiB,GAAG,CAAU,GAAe,EAAE,MAA2C,KAAI;AACzG,IAAA,MAAM,WAAW,GAAG,MAAM,EAAE,SAAS;IAErC,IAAI,WAAW,EAAE;QACf,OAAO,QAAQ,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C;AAEA,IAAA,OAAO,GAA6B;AACtC;AAEA,MAAM,kBAAkB,GAAG,MAAK;IAC9B,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACxD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,MAAM,CAAC,GAAG;IACnB;AAEA,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;AACjF,CAAC;AAED;AACO,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAK;AAClD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE7B,IAAA,MAAM,YAAY,GAAG,kBAAkB,EAAE;AAEzC,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAC7B,YAAY,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC;AAChE,KAAA,CAAC;AACJ,CAAC;AAED;;;AAGG;AACI,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAK;AAC1D,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;IAEjC,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,CAAC,GAAG,KAAK,EAAE;AAEjB,QAAA,OAAO,CAAC,CAAC,YAAY,aAAa,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,iBAAiB;AACtF,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;;;;AAIG;AACI,MAAM,SAAS,GAAG,aAAa,CAAC,MAAK;AAC1C,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;AAEjC,IAAA,OAAO,YAAY,CAAuB;AACxC,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAI;AAC1B,YAAA,IAAI,IAAI,YAAY,aAAa,EAAE;gBACjC,OAAO,IAAI,CAAC,iBAAiB;YAC/B;AAAO,iBAAA,IAAI,IAAI,YAAY,iBAAiB,EAAE;gBAC5C,OAAO,IAAI,CAAC,GAAG;YACjB;AAAO,iBAAA,IAAI,IAAI,EAAE,KAAK,EAAE;gBACtB,OAAO,IAAI,CAAC,KAAK;YACnB;YAEA,OAAO,kBAAkB,EAAE;QAC7B,CAAC;KACF,CAAC,CAAC,UAAU,EAAE;AACjB,CAAC;AAED;;;AAGG;AACI,MAAM,WAAW,GAAG,aAAa,CAAC,MAAK;AAC5C,IAAA,MAAM,GAAG,GAAG,SAAS,EAAE;IAEvB,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,GAAG,EAAE;AACrB,QAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACzD,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAEjE,QAAA,OAAO,eAAe;AACxB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,MAAc,KAAI;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI;AAE5C,IAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,QAAA,KAAK,GAAG,KAAK,CAAC,UAAU;IAC1B;AAEA,IAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK;IAE5D,OAAO;QACL,IAAI;AACJ,QAAA,UAAU,EAAE,MAAM;QAClB,WAAW;QACX,KAAK,EAAE,KAAK,IAAI,IAAI;QACpB,QAAQ;KACT;AACH,CAAC;AAED;;AAEG;AACI,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAK;AAClD,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;AACjC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,MAAM,WAAW,GAAG,MAAM,CAAc,iBAAiB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAElE,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,CAAC,GAAG,KAAK,EAAE;QAEjB,SAAS,CAAC,MAAK;YACb,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;gBAC7C;YACF;iBAAO;gBACL,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC,MAAM,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED;AACO,MAAM,cAAc,GAAG,CAC5B,MAAuE,KACrE;AACF,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvD,IAAA,OAAO,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC5C;AAEA;AACO,MAAM,iBAAiB,GAAG,MAAK;AACpC,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AAEvC,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,WAAW,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7D,IAAA,OAAO,WAAW;AACpB;AAEA;AACO,MAAM,eAAe,GAAG,MAAK;AAClC,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AAEvC,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE/C,IAAA,OAAO,IAAI;AACb;AAEA;AACO,MAAM,gBAAgB,GAAG,CAAoB,MAAoD,KAAI;AAC1G,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEjD,IAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;AACzC;AAEA;AACO,MAAM,gBAAgB,GAAG,MAAK;AACnC,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AAEvC,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,UAAU,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3D,IAAA,OAAO,UAAU;AACnB;AAUA,MAAM,oBAAoB,GAAG,CAAC,GAAW,KAAmB;IAC1D,IAAI,OAAO,MAAM,KAAK,WAAW;AAAE,QAAA,OAAO,IAAI;IAE9C,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7D,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,CAAC;AAED;MACa,gBAAgB,GAAG,CAAoB,GAAW,EAAE,MAAkC,KAAI;AACrG,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAExG;AAED,IAAA,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACvC;AAEA;MACa,mBAAmB,GAAG,CAAc,GAAW,EAAE,MAA8C,KAAI;AAC9G,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE;AAC9B,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAc;AAE5D,IAAA,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACvC;AAEA;MACa,eAAe,GAAG,CAC7B,GAAW,EACX,MAAoD,KAClD;AACF,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AACrC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAA0B;AAE9E,IAAA,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACvC;AAEA;;;AAGG;AACI,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAK;AACxD,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAC;IAExD,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,WAAW,EAAE;AAC7B,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE,IAAI,EAAE;QAExC,MAAM,OAAO,GAA4B,EAAE;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAA+C;AACpE,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,SAAA,CAAC;AAEF,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3E,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;YACpB;QACF;AAEA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;;;AAGG;AACI,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAK;AACvD,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AACrC,IAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAEtD,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,cAAc,EAAE,IAAI,EAAE;QAEvC,MAAM,OAAO,GAA4B,EAAE;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAA+C;AACpE,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,SAAA,CAAC;AAEF,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3E,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;YACpB;QACF;AAEA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,CAAC;AACJ,CAAC;;MC3RY,qBAAqB,GAAG,MAAM,CAAC,uBAAuB;MACtD,qCAAqC,GAAG,MAAM,CAAC,uCAAuC;MACtF,0CAA0C,GAAG,MAAM,CAAC,4CAA4C;MAgBhG,sBAAsB,GAAG,CAAC,MAAA,GAAuC,EAAE,KAAI;IAClF,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC,qBAAqB,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,qCAAqC,GAAG,IAAI,EAAE,CAAC;AAClH,QAAA,IAAI,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC,0CAA0C,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;KAC5F;AACH;MAEa,sBAAsB,GAAG,CAAC,MAAA,GAAuC,EAAE,KAAI;IAClF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3C;IACF;AAEA,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;AACjC,IAAA,MAAM,KAAK,GAAG,WAAW,EAAE;AAC3B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,aAAa,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvF,SAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpB,SAAA,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,KAAI;AAC9D,QAAA,MAAM,iBAAiB,GAAG,SAAS,KAAK,SAAS;QACjD,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;QAEnE,IAAI,iBAAiB,EAAE;AACrB,YAAA,MAAM,cAAc,GAAG;gBACrB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;aAC1F;YAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,GAAG,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CACnE;YAED,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBAC/D;YACF;YAEA,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrG,MAAM,YAAY,GAAG,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO;YAElE,IAAI,eAAe,EAAE;AACnB,gBAAA,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe,EAAE,SAAS,GAAG,CAAC;YAClE;iBAAO,IAAI,YAAY,EAAE;AACvB,gBAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAEzE,IAAI,eAAe,EAAE;oBACnB,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;gBAC3F;YACF;QACF;aAAO;AACL,YAAA,MAAM,cAAc,GAClB,SAAS,CAAC,IAAI,CAAC,qCAAqC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAChG,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACxD,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,0CAA0C,CAAC;AAEnF,YAAA,IAAI,cAAc,IAAI,UAAU,IAAI,gBAAgB,EAAE;gBACpD;YACF;YAEA,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe;AAC3D,YAAA,EAAE,CAAC,SAAS,GAAG,CAAC;QAClB;AACF,IAAA,CAAC,CAAC;AACN;;AChHO,MAAM,oBAAoB,GAAG;AAO7B,MAAM,YAAY,GAAG,CAAC,MAA0B,KAAI;AACzD,IAAA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM;AACjC,IAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;AAE7D,IAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,KAAI;QACtC,IAAI,cAAc,EAAE,EAAE;YACpB;QACF;AACA,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACtB,IAAA,CAAC;IAED,OAAO;AACL,QAAA,GAAG,EAAE,CAAC,GAAG,IAAe,KAAK,QAAQ,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAA,EAAI,OAAO,SAAS,EAAE,GAAG,IAAI,CAAC;AAC3F,QAAA,IAAI,EAAE,CAAC,GAAG,IAAe,KAAK,QAAQ,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAA,EAAI,OAAO,SAAS,EAAE,GAAG,IAAI,CAAC;AAC5F,QAAA,KAAK,EAAE,CAAC,GAAG,IAAe,KAAK,QAAQ,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAA,EAAI,OAAO,SAAS,EAAE,GAAG,IAAI,CAAC;KAC9F;AACH;;ACzBO,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,KAAI;AACzD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C;AAEO,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,KAAI;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU;AACpD;;ACPO,MAAM,QAAQ,GAAG,CAAC,KAAc,KAAsC;AAC3E,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E;AAEO,MAAM,OAAO,GAAG,CAAC,KAAc,KAAwB;AAC5D,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B;MAEa,iBAAiB,GAAG,CAAC,GAA4B,EAAE,IAAY,KAAI;IAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAE7C,IAAA,IAAI,CAAC,cAAc,IAAI,CAAC,kBAAkB;AAAE,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC;IAE5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAE7B,IAAI,KAAK,GAAY,GAAG;AAExB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS;AAEtC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAqB;AAC7F,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,SAAS;AAEzC,YAAA,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB;aAAO;AACL,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;AC/BO,MAAM,qBAAqB,GAAG;AAE/B,MAAO,YAA+B,SAAQ,KAAK,CAAA;IACvD,WAAA,CACS,IAAO,EACd,OAA8B,EACvB,UAAU,KAAK,EACf,OAAgB,qBAAqB,EAAA;QAE5C,KAAK,CAAC,kBAAkB,CAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAL7C,IAAA,CAAA,IAAI,GAAJ,IAAI;QAEJ,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,IAAI,GAAJ,IAAI;AAIX,QAAA,IAAI,IAAI,KAAK,qBAAqB,EAAE;AAClC,YAAA,IAAI;AACF,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;gBAEzB,UAAU,CAAC,MAAK;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtB,CAAC,EAAE,CAAC,CAAC;YACP;AAAE,YAAA,MAAM;gBACN,UAAU,CAAC,MAAK;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrB,CAAC,EAAE,CAAC,CAAC;YACP;QACF;IACF;AACD;SAEe,kBAAkB,CAChC,IAAO,EACP,OAA8B,EAC9B,OAAgB,EAAA;;IAGhB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;AAE9E,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,EAAK,aAAa,EAAE;IACrC,MAAM,WAAW,GAAG,OAAO,GAAG,cAAc,GAAG,EAAE;AACjD,IAAA,OAAO,GAAG,WAAW,CAAA,EAAG,QAAQ,CAAA,EAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,EAAE;AACpE;;ACtCA;;;;;AAKG;MACU,gBAAgB,GAAG,CAAC,OAA4B,EAAE,SAAqB,KAAI;AACtF,IAAA,MAAM,EAAE,GAAG,OAAO,IAAI,QAAQ,CAAC,eAAe;IAC9C,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE;AAEnE,IAAA,IAAI,SAAS,KAAK,GAAG,EAAE;QACrB,OAAO,WAAW,GAAG,WAAW;IAClC;AAAO,SAAA,IAAI,SAAS,KAAK,GAAG,EAAE;QAC5B,OAAO,YAAY,GAAG,YAAY;IACpC;AAEA,IAAA,OAAO,YAAY,GAAG,YAAY,IAAI,WAAW,GAAG,WAAW;AACjE;AAEA,MAAM,kBAAkB,GAAG,OACxB;AACC,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,MAAM,CAAC,UAAU;IACxB,MAAM,EAAE,MAAM,CAAC,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,UAAU;IACxB,MAAM,EAAE,MAAM,CAAC,WAAW;AAC1B,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,MAAM,EAAE,OAAO,EAAE,CAAC;AACnB,CAAA,CAAY;AA4ER,MAAM,gBAAgB,GAAG,CAAC,OAAgC,KAAqC;AACpG,IAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO;IAEtC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC1E,IAAA,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,qBAAqB,EAAE,GAAG,kBAAkB,EAAE;AAEnH,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;IAE7C,IAAI,CAAC,SAAS,EAAE;QACd,OAAO;AACL,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,kBAAkB,EAAE,CAAC;AACrB,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,cAAc,EAAE,IAAI;YACpB,OAAO;YACP,aAAa;YACb,WAAW;SACZ;IACH;AAEA,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI;AAC/B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG;AAC7B,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;AACtC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AACxC,IAAA,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO;AAChC,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ;AAEjC,IAAA,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI;AAClC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG;AAChC,IAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC,KAAK;AAC9C,IAAA,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM;IAE/C,MAAM,sBAAsB,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ;IACvE,MAAM,qBAAqB,GAAG,KAAK,IAAI,MAAM,IAAI,QAAQ,IAAI,SAAS;AAEtE,IAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAClF,IAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAEjF,IAAA,MAAM,4BAA4B,GAAG,KAAK,CAAC,kBAAkB,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9E,IAAA,MAAM,2BAA2B,GAAG,KAAK,CAAC,iBAAiB,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7E,OAAO;AACL,QAAA,MAAM,EAAE,sBAAsB;AAC9B,QAAA,KAAK,EAAE,qBAAqB;AAC5B,QAAA,kBAAkB,EAAE,4BAA4B;AAChD,QAAA,iBAAiB,EAAE,2BAA2B;QAC9C,cAAc,EAAE,sBAAsB,IAAI,qBAAqB;QAC/D,OAAO;QACP,aAAa;QACb,WAAW;;AAGX,QAAA,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,2BAA2B,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;KAC/G;AACH;AAEO,MAAM,2BAA2B,GAAG,CAAC,OAA+B,KAAqB;IAC9F,MAAM,EACJ,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,GAAG,QAAQ,EACnB,MAAM,GAAG,SAAS,EAClB,iBAAiB,GAAG,CAAC,EACrB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO;AAEX,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;QAC1D,OAAO;YACL,QAAQ;AACR,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;SACf;IACH;AAEA,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACnD,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE;AAEvD,IAAA,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS;AAC3C,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK;AACjC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AACnC,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI;AAC/B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG;AAC7B,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK;AACjC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AAEnC,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK;AACpC,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM;AACtC,IAAA,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI;AAClC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG;AAChC,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK;AACpC,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM;AAEtC,IAAA,MAAM,gBAAgB,GAAG,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,SAAS;AACrF,IAAA,MAAM,eAAe,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,SAAS;IAEnF,IAAI,YAAY,GAAG,UAAU;IAC7B,IAAI,WAAW,GAAG,SAAS;AAE3B,IAAA,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM;AAClC,IAAA,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO;IAErC,MAAM,sBAAsB,GAAG,MAAK;AAClC,QAAA,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB;AAC7D,QAAA,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB;AAC3D,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;QAChC,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,kBAAkB;QAClF,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB;AAClF,IAAA,CAAC;IAED,MAAM,uBAAuB,GAAG,MAAK;AACnC,QAAA,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACrE,QAAA,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;AACtE,IAAA,CAAC;IAED,MAAM,wBAAwB,GAAG,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM;QACjC,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,IAAI,QAAQ,GAAG,MAAM;AAC1D,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS;QACjC,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,IAAI,QAAQ,GAAG,SAAS;AAEhE,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;QAChC,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,IAAI,OAAO,GAAG,OAAO;AAC3D,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ;QACjC,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,QAAQ;QAE9D,IAAI,OAAO,IAAI,cAAc,IAAI,MAAM,IAAI,aAAa,EAAE;AACxD,YAAA,sBAAsB,EAAE;QAC1B;aAAO,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,IAAI,cAAc,EAAE;AACjE,YAAA,oBAAoB,EAAE;QACxB;AACF,IAAA,CAAC;IAED,QAAQ,MAAM;AACZ,QAAA,KAAK,OAAO;AACV,YAAA,sBAAsB,EAAE;YACxB;AACF,QAAA,KAAK,KAAK;AACR,YAAA,oBAAoB,EAAE;YACtB;AACF,QAAA,KAAK,QAAQ;AACX,YAAA,uBAAuB,EAAE;YACzB;AACF,QAAA,KAAK,SAAS;AACZ,YAAA,wBAAwB,EAAE;YAC1B;;IAGJ,OAAO;QACL,QAAQ;QACR,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,SAAS;QACjD,GAAG,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;KAC/C;AACH;AA6CO,MAAM,eAAe,GAAG,CAAC,OAA+B,KAAI;IACjE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACnE;;ACzTO,MAAM,GAAG,wBAAwB,CAAC,GAAG,kBAAkB,CAAC,MAAK;AAClE,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAErC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAqB,IAAI,uDAAC;IAEpD,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;QAC3D;aAAO;AACL,YAAA,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB;AACF,IAAA,CAAC;IAED,UAAU,CAAC,IAAI,CAAC;AAEhB,IAAA,OAAO,WAAW;AACpB,CAAC;;ACjBM,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,GAAG,cAAc,CACnG,MAAK;AACH,IAAA,MAAM,WAAW,GAAG,MAAM,CAA0B,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAqB,IAAI,oDAAC;AAEjD,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,QAAQ,EAAE,IAAI,WAAW,EAAE,aAAa,IAAI,QAAQ,CAAC,eAAe,iDAAC;IAElG,OAAO;QACL,KAAK;QACL,QAAQ;KACT;AACH,CAAC,EACD,EAAE,IAAI,EAAE,kBAAkB,EAAE;;ACI9B;;;AAGG;AACI,MAAM,uBAAuB,GAAmB;AACrD,IAAA,WAAW,EAAE;AACX,QAAA,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACZ,QAAA,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACd,QAAA,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;AACf,QAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;AACxB,KAAA;;AAGI,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,GAAG,wBAAwB,CACnF,uBAAuB,EACvB;AACE,IAAA,IAAI,EAAE,iBAAiB;AACxB,CAAA;AAQI,MAAM,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,GAAG,kBAAkB,CACrF,MAAK;AACH,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrD,IAAA,MAAM,cAAc,GAAG,oBAAoB,EAAE;AAE7C,IAAA,MAAM,mBAAmB,GAAG,CAAC,UAAkB,KAAK,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC;AAE5F,IAAA,MAAM,iBAAiB,GAAG,CAAC,UAAkB,KAAI;AAC/C,QAAA,OAAO,QAAQ,CACb,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EACrB,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAC3C,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB;AACH,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAA+B,KAAK,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAEhH,IAAA,MAAM,mBAAmB,GAAG,CAAC,OAA+B,KAC1D,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAErD,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAgB,EAAE,MAAqB,KAAI;AACpE,QAAA,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAEpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;;;;QAKA,OAAO,IAAI,GAAG,GAAG;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,qBAAqB,GAAG,CAAC,OAA+B,KAAI;QAChE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;QAEA,MAAM,eAAe,GAAa,EAAE;AAEpC,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,GAAG,CAAA,GAAA,CAAK,CAAC;YACvD;iBAAO;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,GAAA,CAAK,CAAC;YACjF;QACF;QAEA,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;AAC9B,YAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;AAEA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,GAAG,CAAA,GAAA,CAAK,CAAC;YACvD;iBAAO;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,GAAA,CAAK,CAAC;YACjF;QACF;AAEA,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAA,CAAC;IAED,OAAO;QACL,iBAAiB;QACjB,mBAAmB;QACnB,iBAAiB;QACjB,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;KACpB;AACH,CAAC,EACD,EAAE,IAAI,EAAE,qBAAqB,EAAE;;AC5H1B,MAAM,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,CAAC,GAAG,kBAAkB,CACpH,MAAK;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;IACpC,IAAI,gBAAgB,GAAG,KAAK;AAE5B,IAAA,MAAM,SAAS,GAAG,CAAC,CAAgB,KAAI;AACrC,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;YACtG,gBAAgB,GAAG,IAAI;AACvB,YAAA,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B;AACF,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,MAAK;QACzB,gBAAgB,GAAG,KAAK;AACxB,QAAA,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,IAAA,CAAC;IAED,MAAM,OAAO,GAAG,MAAK;QACnB,IAAI,gBAAgB,EAAE;AACpB,YAAA,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B;AACF,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,IAAA,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;IAC3D,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IACjD,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAE/C,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC;QACxD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;QAC9D,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;QAChE,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC;QAC/D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QACpD,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACpD,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,cAAc,EAAE,cAAc,CAAC,UAAU,EAAE;KAC5C;AACH,CAAC,EACD,EAAE,IAAI,EAAE,uBAAuB,EAAE;;AClD5B,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,kBAAkB,CAC7D,MAAK;AACH,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,yDAAC;IAElC,OAAO;QACL,aAAa;KACd;AACH,CAAC,EACD;AACE,IAAA,IAAI,EAAE,QAAQ;AACf,CAAA;;ACVI,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,kBAAkB,CACjE,MAAK;AACH,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3D,MAAM,QAAQ,GAAG,CAAC,OAAoB,EAAE,GAAG,OAAiB,KAAI;AAC9D,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC3D,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,GAAG,OAAiB,KAAI;AACjE,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9D,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,SAAiB,EAAE,KAAe,KAAI;AAC/E,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjE,IAAI,SAAS,EAAE;AACb,YAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QACvC;aAAO;AACL,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;QAC1C;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;IAED,MAAM,QAAQ,GAAG,CACf,OAAoB,EACpB,KAAgE,EAChE,KAA2B,KACzB;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAE;YAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACzC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;YAC/C;iBAAO;gBACL,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAClB,OAAoB,EACpB,KAAyC,EACzC,KAA2B,KACzB;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE;QAClC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAe,EAAE,KAAK,CAAC;AACvD,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,GAAG,MAA8C,KAAI;AAC/F,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACxD,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAoB,KAAI;QAClF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QACvE;aAAO;YACL,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QACnE;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAAoB,EAAE,UAAyC,KAAI;AAC3F,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;AACnD,YAAA,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AACtC,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAoB,EAAE,SAAyB,KAAI;QAC3G,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YACzC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;QACxD;aAAO;YACL,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;QACpD;AACF,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAE,GAAG,KAAe,KAAI;AACnE,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClE,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAc,KAAI;QACzE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5C,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,OAAoB,EAAE,UAAmC,KAAI;AAClF,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;YACnD,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CACpB,OAAU,EACV,SAAyB,KACG;QAC5B,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC;AACnD,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,KAAa,KAAU;AACzC,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAAa,KAAa;AAC/C,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,QAAc,KAAI;AAC1D,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxC,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAY,EAAE,QAAc,EAAE,QAAqB,KAAI;QAC3E,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACnD,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAY,EAAE,QAAc,EAAE,aAAuB,KAAI;QAC5E,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;AACvD,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,cAAoC,EAAE,eAAyB,KAAiB;QACzG,OAAO,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,eAAe,CAAC;AACpE,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAAU,KAAiB;AAC7C,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AAClC,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,IAAU,KAAiB;AAC9C,QAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,KAAa,KAAI;AAC7C,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,CACb,MAAwE,EACxE,SAAiB,EACjB,QAA0C,KAC1B;QAChB,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;AACrD,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,IAAU,KAAI;AACjC,QAAA,IAAI,QAAQ,CAAC,WAAW,EAAE;AACxB,YAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC5B;AACF,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAY,EAAE,QAAc,EAAE,QAAc,KAAI;QACpE,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACjD,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxC,IAAA,CAAC;AAED,IAAA,MAAM,KAAK,GAAG,CAAC,OAAoB,KAAI;AACrC,QAAA,OAAO,OAAO,CAAC,UAAU,EAAE;YACzB,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;QACnD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAE,IAAY,KAAI;QAC5D,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC;AACpD,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,IAAY,KAAI;QAC1D,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,CACpB,OAAoB,EACpB,UAAyC,EACzC,SAAyB,KACvB;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;YACnD,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;AAC/C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAAoB,EAAE,IAAmC,KAAI;AACtF,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC5C,YAAY,CAAC,OAAO,EAAE,CAAA,KAAA,EAAQ,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AAC7C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW;QACX,WAAW;QACX,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,eAAe;QACf,WAAW;QACX,aAAa;QACb,aAAa;QACb,UAAU;QACV,aAAa;QACb,WAAW;QACX,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,UAAU;QACV,WAAW;QACX,QAAQ;QACR,MAAM;QACN,WAAW;QAEX,YAAY;QACZ,KAAK;QACL,cAAc;QACd,YAAY;QACZ,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAEhB,QAAQ;KACT;AACH,CAAC,EACD,EAAE,IAAI,EAAE,kBAAkB,EAAE;;ACxNvB,MAAM,SAAS,GAAG,CAAC,EAAc,KAAI;IAC1C,qBAAqB,CAAC,MAAK;QACzB,qBAAqB,CAAC,EAAE,CAAC;AAC3B,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,aAAa,GAAG,MAAK;AAChC,IAAA,OAAO,IAAI,UAAU,CAAO,CAAC,QAAQ,KAAI;QACvC,SAAS,CAAC,MAAK;YACb,QAAQ,CAAC,IAAI,EAAE;YACf,QAAQ,CAAC,QAAQ,EAAE;AACrB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,WAAW,GAAG,CAAC,UAAuB,QAAQ,CAAC,IAAI,KAAI;IAClE,OAAO,OAAO,CAAC,YAAY;AAC7B;;MCZa,wBAAwB,GAAG,IAAI,cAAc,CACxD,oCAAoC;AAGtC,MAAM,iBAAiB,GAAG;AACxB,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,cAAc,EAAE,8BAA8B;AAC9C,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,cAAc,EAAE,8BAA8B;CACtC;AAEV,MAAM,qBAAqB,GAAG,oBAAoB;MAkBrC,0BAA0B,CAAA;AAoBrC,IAAA,WAAA,GAAA;AAnBQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,OAAO,EAAQ;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACrC,IAAA,CAAA,QAAQ,GAAG,cAAc,EAAE;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAEvC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,mBAAmB,GAAG,CAAC;QAEvB,IAAA,CAAA,eAAe,GAAkB,IAAI;QACrC,IAAA,CAAA,cAAc,GAAG,CAAC;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAyB,MAAM,CAAC;AAE5D,QAAA,IAAA,CAAA,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AAE/C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,yDAAC;AAG1B,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;YACzC;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACtC;AACF,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;QAEd,IAAI,CAAC,YAAY,EAAE;IACrB;IAEQ,YAAY,GAAA;QAClB,MAAM,aAAa,GAAG,MAAK;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;AAC5D,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;AAE1D,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAEtC,IAAI,YAAY,KAAK,UAAU;YAAE;AAEjC,QAAA,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AAC5E,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,YAAY,KAAK,SAAS;AAEjD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAE7C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAQ;QAElD,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC;AAE7C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc;AACnG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAE3B,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,cAAc,CACjC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC1C,eAAe,CAAC,IAAI,EAAE;YACtB,eAAe,CAAC,QAAQ,EAAE;YAC1B;QACF;QAEA,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,2BAA2B,CAAC;AAC/B,gBAAA,aAAa,EAAE;AACb,oBAAA,iBAAiB,CAAC,SAAS;AAC3B,oBAAA,iBAAiB,CAAC,WAAW;AAC7B,oBAAA,iBAAiB,CAAC,OAAO;AACzB,oBAAA,iBAAiB,CAAC,cAAc;AACjC,iBAAA;AACD,gBAAA,UAAU,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC;AACxG,gBAAA,aAAa,EAAE,UAAU;gBACzB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,sBAAsB,CAAC;gBAC1B,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,WAAW,EAAE,iBAAiB,CAAC,WAAW;gBAC1C,OAAO,EAAE,iBAAiB,CAAC,OAAO;AAClC,gBAAA,aAAa,EAAE,UAAU;gBACzB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;QAEA,eAAe,CAAC,IAAI,EAAE;QACtB,eAAe,CAAC,QAAQ,EAAE;IAC5B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAEtC,IAAI,YAAY,KAAK,SAAS;YAAE;AAEhC,QAAA,IAAI,YAAY,KAAK,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,YAAY,KAAK,UAAU;AAElD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAE7C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAQ;QAElD,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC;AAE7C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc;AACnG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAE3B,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,cAAc,CACjC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC1C,eAAe,CAAC,IAAI,EAAE;YACtB,eAAe,CAAC,QAAQ,EAAE;YAC1B;QACF;QAEA,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,2BAA2B,CAAC;AAC/B,gBAAA,aAAa,EAAE;AACb,oBAAA,iBAAiB,CAAC,SAAS;AAC3B,oBAAA,iBAAiB,CAAC,WAAW;AAC7B,oBAAA,iBAAiB,CAAC,OAAO;AACzB,oBAAA,iBAAiB,CAAC,cAAc;AACjC,iBAAA;AACD,gBAAA,UAAU,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC;AACxG,gBAAA,aAAa,EAAE,SAAS;gBACxB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,sBAAsB,CAAC;gBAC1B,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,WAAW,EAAE,iBAAiB,CAAC,WAAW;gBAC1C,OAAO,EAAE,iBAAiB,CAAC,OAAO;AAClC,gBAAA,aAAa,EAAE,SAAS;gBACxB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;QAEA,eAAe,CAAC,IAAI,EAAE;QACtB,eAAe,CAAC,QAAQ,EAAE;IAC5B;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,CAC1B;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc;IAC5C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,CAC1B;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc;IAC5C;AAEQ,IAAA,sBAAsB,CAAC,MAQ9B,EAAA;AACC,QAAA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM;QAEzG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,cAAc,CAAC;AAEtF,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,WAAW,EAAE;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAE1B,QAAA,aAAa;AACV,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;AACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACxB;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAC9C,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,EACrG,GAAG,CAAC,UAAU,CAAC,EACf,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,YAAY,CAAC,EACvB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,EAAE;IAChB;AAEQ,IAAA,2BAA2B,CAAC,MAOnC,EAAA;AACC,QAAA,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM;AAEnG,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AACpC,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAE/C,QAAA,aAAa;aACV,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAC7C,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,WAAW,KAAI;YACxB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;gBACvD,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAuB,CAAC;YACpE;AAEA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CACvC,SAAS,CAAC,CAAC,CAAC,KAAI;AACd,gBAAA,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,EAAE;AACnC,oBAAA,OAAO,EAAE,CAAC,CAAC,CAAC;gBACd;AAEA,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CACtC,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,cAAc,KAAI;oBAC3B,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;wBAC1D,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAuB,CAAC;oBACpE;AAEA,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,CACH;YACH,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,CAAC,KAA6B,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CACrF;QACH,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAClE,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,EACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,YAAY,CAAC,EACvB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,EAAE;IAChB;AAEQ,IAAA,QAAQ,CAAC,SAAiB,EAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IACjD;AAEQ,IAAA,WAAW,CAAC,SAAiB,EAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IACpD;IAEQ,aAAa,CAAC,GAAG,UAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;IACxD;AAEQ,IAAA,WAAW,CAAC,QAAgC,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B;8GArVW,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,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAX1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,WAAW,EAAE,0BAA0B;AACxC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAMU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,WAAW,EAAA,0BAA4B;AACxC,yBAAA;AACF,qBAAA;oBACD,cAAc,EAAE,CAAC,mBAAmB,CAAC;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;;MCpCY,iBAAiB,GAAG,IAAI,cAAc,CAAsB,mBAAmB;MAW/E,mBAAmB,CAAA;AAS9B,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QAEpD,IAAA,CAAA,OAAO,GAAG,KAAK;QAEvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,oDAAI,KAAK,EAAE,cAAc,EAAA,CAAG;AAGvD,QAAA,YAAY,CAAC,IAAI,CAAC,OAAO;AACtB,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,KAAK,KAAI;YAClB,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;gBACrB;AAEA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAE9B,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAE9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CACvC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,EACnC,GAAG,CAAC,MAAK;AACP,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;8GAzCW,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAPnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,mBAAmB;AACjC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,mBAAqB;AACjC,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCkDY,wBAAwB,CAAA;AA2DnC,IAAA,WAAA,GAAA;AA1DQ,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QACxD,IAAA,CAAA,YAAY,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAE/B,IAAA,CAAA,mBAAmB,GAAwB,IAAI;QAC/C,IAAA,CAAA,mBAAmB,GAAwB,IAAI;AAEvD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAwB,QAAQ,qDAAC;QAClD,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAuB,IAAI,kDAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAiB,CAAC,wDAAC;AACvC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiB,CAAC,2DAAC;QAC1C,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC1D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,kDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACpD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACxD,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAC,KAAK,uEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC1E,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAE3D,IAAA,CAAA,MAAM,GAA8B,IAAI;QACxC,IAAA,CAAA,UAAU,GAAsB,IAAI;QACpC,IAAA,CAAA,YAAY,GAA2B,IAAI;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAuB,MAAM,iDAAC;AAE5C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,qDAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,sDAAC;AACxD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,uDAAC;AAC1D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,YAAY,wDAAC;AAE5D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oDAAC;QAClE,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5F,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AAExB,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAE/C,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEvC,IAAA,CAAA,0BAA0B,GAAG,uBAAuB,CAClD,QAAQ,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC,CACtE;QAGC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAEpD,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE;AAExC,YAAA,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AACjD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACjD;AAEA,IAAA,KAAK,CAAC,MAAqC,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,SAAS,EAAE,EAAE;AACf,oBAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;gBAC3F;gBACA;YACF;AAEA,YAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAE/B,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC;YAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAChE,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1B,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBAEzB,SAAS,CAAC,KAAK,EAAE;AAEjB,gBAAA,SAAS,CAAC;AACP,qBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAC9B,GAAG,CAAC,MAAK;AACP,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;AAC/B,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;oBAC1B;AACF,gBAAA,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,qBAAA,SAAS,EAAE;YAChB;AAEA,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ;QACnC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC;YAC7G;YACA;QACF;QAEA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM;AAE5D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAEzB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,SAAS,EAAE,SAAS,IAAI,EAAE;AAC3B,SAAA,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9C,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AAC7E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAEvD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QACtC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ;IACnC;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACnE,IAAI,SAAS,EAAE,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,CAAA,iEAAA,EAAoE,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;YAClG;YACA;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;YAC3F;YACA;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAEzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE;YACd;QACF;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAEhE,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,OAAO,EAAE;YACd;QACF;QAEA,SAAS,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;aAClC,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,EAC3B,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEpC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,OAAO,EAAE;AAChB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,kBAAkB,CAAC,IAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI;YAAE;QAEjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACpD;AAEQ,IAAA,kBAAkB,CAAC,aAA4C,EAAA;AACrE,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa;YAAE;QAE1C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC;IAChE;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AAE7C,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AACjD,SAAA,CAAC;IACJ;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE;YAExB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAA4B;AAC1E,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAE/C,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAE/C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE;YAE3C,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAK;gBAC5D,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC;AAC3E,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,uBAAuB,EAAE;AAChC,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI;AAEnC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAuB;IAC5G;AAEQ,IAAA,sBAAsB,CAC5B,UAAuB,EACvB,KAAkB,EAClB,QAAiC,EACjC,eAAmC,EAAA;QAEnC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;AAExB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;AAEtF,QAAA,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3B,UAAU;AACX,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,KAAI;YAC9C,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,CAAC;AAClE,YAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,cAAc,CAAC;AACxD,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,uBAAuB,CAC7B,UAAuB,EACvB,QAAiC,EACjC,eAAmC,EAAA;QAEnC,MAAM,UAAU,GAAG,EAAE;AAErB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC;AAEA,QAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC;AACH,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,SAAS;AAC1D,YAAA,yBAAyB,EAAE,OAAO;YAClC,QAAQ;AACT,SAAA,CAAC,CACH;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC;AACH,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,SAAS;AAC5C,gBAAA,KAAK,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA;oBACvC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CAAC;oBAC9E,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAA,EAAG,eAAe,CAAA,EAAA,CAAI,CAAC;gBAClF,CAAC;AACF,aAAA,CAAC,CACH;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,UAAU,CAAC,IAAI,CACb,KAAK,CAAC;gBACJ,OAAO,EAAE,UAAU,EAAE;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,SAAS;gBAC5C,QAAQ;AACT,aAAA,CAAC,CACH;QACH;QAEA,IAAI,eAAe,EAAE;YACnB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;QACjG;QAEA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;AACxD,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE;AAEA,QAAA,OAAO,UAAU;IACnB;AAEQ,IAAA,mBAAmB,CAAC,UAAuB,EAAE,CAAS,EAAE,CAAS,EAAE,SAAoB,EAAA;AAC7F,QAAA,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,MAAA,CAAQ,CAAC;AACzF,QAAA,UAAU,CAAC,YAAY,CAAC,uBAAuB,EAAE,SAAS,CAAC;IAC7D;AAEQ,IAAA,gBAAgB,CACtB,UAAuB,EACvB,cAA8B,EAC9B,eAAmC,EAAA;AAEnC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,eAAe;YAAE;AAE/C,QAAA,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK;AAErD,QAAA,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,CAAA,YAAA,EAAe,MAAM,IAAI,CAAC,CAAA,IAAA,EAAO,MAAM,IAAI,CAAC,CAAA,MAAA,CAAQ,CAAC;IACrH;IAEQ,qBAAqB,CAAC,UAAuB,EAAE,cAA8B,EAAA;AACnF,QAAA,IAAI,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACxC,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;gBACrC,IAAI,CAAC,OAAO,EAAE;YAChB;iBAAO;AACL,gBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACvD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;QACF;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1B,YAAA,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,6BAA6B,CAAC;AAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;IAEQ,uBAAuB,GAAA;QAC7B,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;gBACrD;YACF;YAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,IAAI;YAElE,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CACX,uHAAuH,CACxH;gBACD;YACF;YAEA,SAAS,CAAC,KAAK,EAAE;AAEjB,YAAA,SAAS,CAAC;AACP,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAC9B,GAAG,CAAC,MAAK;AACP,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;AAC/B,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;gBAC1B;AACF,YAAA,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,iBAAA,SAAS,EAAE;AAChB,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,mBAAmB,IAAI;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAtYW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,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,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC3CM,MAAM,wBAAwB,GAAG,CAAC,MAAgC,KAAI;AAC3E,IAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,8BAA8B,EAAE,GAAG,MAAM;IAEpF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;AAChC,QAAA,MAAM,OAAO,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE;AACjD,QAAA,MAAM,aAAa,GAAG,eAAe,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,GAAG,SAAS;AAE1E,QAAA,OAAO,mBAAmB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC1E,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5E,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9E,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;AACtD,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;AAChD,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;AAClD,IAAA,CAAC;IAED,OAAO;QACL,UAAU;QACV,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,SAAS;KACV;AACH;AA2BO,MAAM,mBAAmB,GAAG,CAAC,MAA2B,KAAI;AACjE,IAAA,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,8BAA8B,EAAE,GAAG,MAAM;AAE3G,IAAA,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE;IACvD,IAAI,SAAS,GAAqB,IAAI;AAEtC,IAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAQ;AACpC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAQ;AACrC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAQ;IAErC,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,OAAO,EAAE;QACT,SAAS,CAAC,IAAI,EAAE;AAClB,IAAA,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,OAAO,EAAE;QACT,SAAS,CAAC,IAAI,EAAE;AAClB,IAAA,CAAC;IAED,MAAM,OAAO,GAAG,MAAK;QACnB,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC1D,QAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC5D,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE;AACrD,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,qBAAqB,EAAE;AAE3C,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,CAAC,EAAE,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACnC,YAAA,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AACjC,YAAA,MAAM,EAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAC1C,YAAA,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;SAC7C;AAED,QAAA,SAAS,GAAG,EAAE,CAAC,OAAO,CACpB;AACE,YAAA;AACE,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,SAAS,EAAE;AACC,oBAAA,EAAA,KAAK,CAAC,CAAC,CAAA,IAAA,EAAO,KAAK,CAAC,CAAC,CAAA;AACzB,gBAAA,EAAA,KAAK,CAAC,MAAM,CAAA,EAAA,EAAK,KAAK,CAAC,MAAM,CAAA;AACtC,QAAA,CAAA;AACA,aAAA;AACD,YAAA;AACE,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,SAAS,EAAE,MAAM;AAClB,aAAA;SACF,EACD;YACE,QAAQ;YACR,MAAM;AACN,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;AAED,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACvD,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAEvD,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;QAClB,SAAS,EAAE,MAAM,EAAE;AAEnB,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;IAED,OAAO;QACL,UAAU;QACV,IAAI;QACJ,MAAM;AACN,QAAA,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE;AACjC,QAAA,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;AACnC,QAAA,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;KACpC;AACH;;MC/Ja,qBAAqB,CAAA;AAMhC,IAAA,WAAA,GAAA;AALQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnC,IAAA,CAAA,eAAe,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAG/D,SAAS,CAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO;AACzD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB;AACjD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEtE,YAAA,IAAI,QAAQ;gBAAE;AAEd,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;8GApBW,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,kBAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;;MCSY,eAAe,CAAA;AAkC1B,IAAA,WAAA,GAAA;AAjCQ,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAuB,WAAW,CAAC;AAC3D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,GAAA,EAAA,CAAA,EAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,GAAG;AAEzE,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,GAAA,EAAA,CAAA,EAClB,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC/B,gBAAA,MAAM,SAAS,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvC,gBAAA,MAAM,KAAK,GAA+B,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAE/D,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAK,EAAE;oBAC1C,OAAO,QAAQ,CAAC,KAAK;gBACvB;AAEA,gBAAA,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS;AAEvC,gBAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACtC,wBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC5E;gBACF;AAAO,qBAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AAC5B,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE;AACvC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChE;AAEA,oBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC7B;AAEA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;;;QAKA,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5B;8GAtCW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,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;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA;;;MCVY,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,uBAAuB;AACpC,IAAA;8GAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,IAAI;mBAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;;AAS3C;AACO,MAAM,uBAAuB,GAAG,CAAC,IAAmB,KAAqC;IAC9F,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,IAAI;AACV,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,kBAAkB;aACzB;AAEH,QAAA,KAAK,SAAS;YACZ,OAAO;AACL,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,kBAAkB;aACzB;AAEH,QAAA,KAAK,aAAa;YAChB,OAAO;AACL,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,aAAa;aACpB;AAEH,QAAA,KAAK,SAAS;AACd,QAAA;YACE,OAAO;AACL,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,WAAW;aAClB;;AAEP;;MC3Ca,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,mBAAmB;AAChC,IAAA;8GAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,IAAI;mBAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE;;AAKhC,MAAM,mBAAmB,GAAG,CAAC,KAAuC,KAAI;AAC7E,IAAA,IAAI,KAAK,EAAE,oBAAoB,EAAE;QAC/B,OAAA,SAAA;IACF;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE;QACxC,OAAA,UAAA;IACF;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE;QACtC,OAAA,MAAA;IACF;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,IAAI,KAAK,EAAE,MAAM,KAAK,UAAU,EAAE;QACxE,OAAA,WAAA;IACF;SAAO,IAAI,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE;QAC7C,OAAA,gBAAA;IACF;AAEA,IAAA,OAAO,IAAI;AACb;;MChBa,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,0BAA0B;AACvC,IAAA;8GAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,IAAI;mBAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE;;AA6BvC,MAAM,0BAA0B,GAAG,CAAC,KAA2B,KAAwC;AAC5G,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAE7C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;AAC9C,QAAA,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;KAC/C;AACH;MAEa,yBAAyB,GAAG,CACvC,KAA2B,EAC3B,IAAqB,KACgB;AACrC,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAE7C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS;IAEzE,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI,UAAU,KAAA,WAAA,oCAAkC,UAAU,KAAA,SAAA,gCAA8B;YACtF,OAAO;gBACL,eAAe;AACf,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,IAAI,EAAE,WAAW;aAClB;QACH;aAAO;YACL,OAAO;gBACL,eAAe;AACf,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,WAAW;aAClB;QACH;IACF;SAAO;QACL,OAAO;YACL,eAAe;AACf,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,WAAW;SAClB;IACH;AACF;;MCjFa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,mBAAmB;AAChC,IAAA;8GAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,IAAI;mBAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE;;AA0BvC,MAAM,WAAW,GAAyB;IACxC,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3D,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3D,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,OAAO,EAAE,IAAI;CACd;AAEM,MAAM,mBAAmB,GAAG,CAAC,KAAuC,KAAiC;IAC1G,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC7C,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACxC,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;IACtD;AAEA,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,IAAI,UAAU,KAAA,UAAA,mCAAiC,UAAU,KAAA,MAAA,4BAA0B;YACjF,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;QACtD;QAEA,OAAO;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,aAAA;YACD,OAAO;AACP,YAAA,SAAS,EAAE,KAAK;SACjB;IACH;AAAO,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;QAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;YAE5B,OAAO;gBACL,GAAG,kBAAkB,CAAC,KAAK,CAAC;gBAC5B,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI;aACQ;QAC3B;aAAO;YACL,OAAO;gBACL,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBAC7B,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI;aACQ;QAC3B;IACF;SAAO;QACL,OAAO;YACL,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAC5B,OAAO;AACP,YAAA,SAAS,EAAE,IAAI;SACQ;IAC3B;AACF;AAEO,MAAM,eAAe,GAAG,CAAC,KAAuC,KAAI;IACzE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,QACE,KAAK,CAAC,SAAS,KAAK,oBAAoB;QACxC,KAAK,CAAC,SAAS,KAAK,oBAAoB;AACxC,QAAA,KAAK,CAAC,SAAS,KAAK,YAAY;AAEpC;AAEO,MAAM,YAAY,GAAG,CAAC,KAAuC,KAAI;IACtE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;AACrE;AAEO,MAAM,qBAAqB,GAAG,CAAC,KAA0C,KAAI;AAClF,IAAA,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE;AAC3B,QAAA,OAAO,0BAA0B;IACnC;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE;AACnC,QAAA,OAAO,2BAA2B;IACpC;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE;AAClC,QAAA,OAAO,0BAA0B;IACnC;AAEA,IAAA,OAAO,IAAI;AACb;AAEO,MAAM,oBAAoB,GAAG,CAAC,KAAuC,KAAI;AAC9E,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;AAAO,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAA,OAAO,6BAA6B;IACtC;SAAO;AACL,QAAA,OAAO,IAAI;IACb;AACF;AAEO,MAAM,kBAAkB,GAAG,CAAC,KAAuC,KAAI;IAC5E,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;AACtC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;AACtC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;KACF;AACH;AAEO,MAAM,mBAAmB,GAAG,CAAC,KAAuC,KAAI;IAC7E,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;KACF;AACH;;MC/Ja,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,kBAAkB;AAC/B,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,IAAI;mBAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;;AAK/B,MAAM,kBAAkB,GAAG,CAAC,SAAuC,KAAyB;IACjG,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,SAAS;AACf,QAAA,KAAK,oBAAoB;YACvB,OAAO;AACL,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,IAAI,EAAE,oBAAoB;aAC3B;AACH,QAAA,KAAK,oBAAoB;YACvB,OAAO;AACL,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,IAAI,EAAE,oBAAoB;aAC3B;AACH,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,YAAY;aACnB;AACH,QAAA,KAAK,QAAQ;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;aACf;AACH,QAAA,KAAK,QAAQ;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;aACf;AACH,QAAA,KAAK,OAAO;YACV,OAAO;AACL,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,IAAI,EAAE,OAAO;aACd;;AAEP;;MCzCa,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,SAAS,GAAG,aAAa;AAC1B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACtB,iBAAA;;AAKD;;;;AAIG;AACI,MAAM,aAAa,GAAG,CAAC,MAAc,KAAI;AAC9C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AAExB,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI;;IAG1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;IACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9C,IAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;QACnD,QAAQ,CAAC,GAAG,EAAE;IAChB;IAEA,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAErC,IAAA,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAChD,IAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5E,IAAI,aAAa,GAAkB,IAAI;IAEvC,IAAI,UAAU,EAAE;QACd,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,MAAM,OAAO,GAAG;AACb,aAAA,SAAS,CAAC,OAAO,GAAG,CAAC;AACrB,aAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;cACX,WAAW,EAAE;QAEjB,IAAI,OAAO,EAAE;YACX,aAAa,GAAG,OAAO;QACzB;IACF;IAEA,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU;QAEzD,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC;QAEhD,IAAI,YAAY,KAAK,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;AAEpC,QAAA,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;IACtE;IAEA,IAAI,aAAa,EAAE;QACjB,QAAQ,aAAa;AACnB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,eAAe;AACxB,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,8BAA8B;AACvC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,oBAAoB;AAC7B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,oBAAoB;AAC7B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,yEAAyE;AAClF,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,+BAA+B;AACxC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sBAAsB;AAC/B,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,eAAe;AACxB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sCAAsC;AAC/C,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iDAAiD;AAC1D,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,gDAAgD;AACzD,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,yCAAyC;AAClD,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,yBAAyB;AAClC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,+BAA+B;AACxC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,2EAA2E;AACpF,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,mEAAmE;AAC5E,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iCAAiC;AAC1C,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,6BAA6B;AAEtC,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;AAEA,IAAA,OAAO,IAAI;AACb;;MCpNa,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,OAAO;AACpB,IAAA;8GAFY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAE,IAAI,EAAE,SAAS,EAAE;;AAKlB,MAAM,OAAO,GAAG,CAAC,KAAa,KAAI;AACvC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACnD;AAEO,MAAM,gBAAgB,GAA4B,CAAC,CAAC,EAAE,IAAI,KAAK;;ACP/D,MAAM,kBAAkB,GAAG,MAAK;AACrC,IAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAExC,IAAA,MAAM,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAE9D,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC;AAC3C,IAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO;QACP,UAAU;QACV,MAAM;QACN,EAAE;QACF,UAAU;KACX;AACH;;AClBO,MAAM,uBAAuB,GAAG,MAAK;AAC1C,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,GAAG,EAAE,MAAM,CAAW,EAAE,CAAC;AACzB,QAAA,QAAQ,EAAE,MAAM,CAA8B,EAAE,CAAC;KAClD;AAED,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAA,OAAO,EAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI;AACxD,IAAA,CAAC,wDAAC;AAEF,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC5B,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,EAAE,IAAI,IAAI;AACnB,IAAA,CAAC,mDAAC;AAEF,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9E,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC,mDAAC;AAE7D,IAAA,MAAM,GAAG,GAAG,CAAC,EAAU,KAAI;QACzB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,OAAoB,KAAI;AAChD,QAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;AACtE,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,EAAU,KAAI;QAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,QAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9G,IAAA,CAAC;AAED,IAAA,MAAM,GAAG,GAAG,CAAC,EAAU,KAAI;QACzB,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI;AAC1C,IAAA,CAAC;IAED,OAAO;QACL,GAAG;QACH,QAAQ;QACR,GAAG;QACH,GAAG;QACH,IAAI;QACJ,MAAM;QACN,OAAO;QACP,YAAY;QACZ,OAAO;KACR;AACH;;AC5CO,MAAM,SAAS,GAAG,CAAC,MAAwB,KAAI;AACpD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAsB;IAC3C,MAAM,EACJ,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,MAAM,EACN,gBAAgB,GACjB,GAAG,KAAK;AAET,IAAA,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ;AACvE,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,aAAa;IAEnC,IAAI,QAAQ,EAAE,EAAE;AACd,QAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC5B;QACF;aAAO,IAAI,MAAM,EAAE;AACjB,YAAA,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,KAAK,EAAE;AAExD,YAAA,OAAO,CAAC,KAAK,CACX,CAAA,CAAA,EAAI,IAAI,CAAA,4FAAA,CAA8F,EACtG,uBAAuB,EACvB,2BAA2B,EAC3B,EAAE,CACH;YAED;QACF;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAE7B,IAAI,MAAM,EAAE;AACV,QAAA,EAAE,CAAC,EAAE,GAAG,EAAE;IACZ;IAEA,IAAI,aAAa,EAAE;AACjB,QAAA,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IACjC;IAEA,IAAI,iBAAiB,EAAE;AACrB,QAAA,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAI,aAAa,EAAE;AACjB,QAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;IAChC;IAEA,IAAI,uBAAuB,EAAE;AAC3B,QAAA,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE;AACzC,YAAA,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAG,uBAAuB,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QACzD;IACF;IAEA,IAAI,mBAAmB,EAAE;QACvB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC;IAC1C;IAEA,IAAI,mBAAmB,EAAE;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE;AACrC,YAAA,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA,EAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QAC1D;IACF;IAEA,IAAI,oBAAoB,EAAE;AACxB,QAAA,oBAAoB,CAAC;YACnB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AAChC,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC;IACJ;AACF;AAOO,MAAM,WAAW,GAAG,CAAC,MAA0B,KAAI;AACxD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAsB;IAE3C,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnD;;AC1CO,MAAM,WAAW,GAAG,CAAC,KAAyB,KAAW;IAC9D,MAAM,EACJ,MAAM,GAAG,KAAK,EACd,MAAM,GAAG,IAAI,EACb,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,aAAa,EACrB,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,EAChD,aAAa,EAAE,mBAAmB,GAAG,IAAI,EACzC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,SAAS,EACT,IAAI,GACL,GAAG,KAAK;AAET,IAAA,MAAM,UAAU,GAAG,uBAAuB,EAAE;AAC5C,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,oDAAC;AAEtD,IAAA,MAAM,gBAAgB,GAAkC;QACtD,KAAK,EAAE,UAAU,CAAC,YAAY;QAC9B,OAAO,EAAE,UAAU,CAAC,OAAO;QAE3B,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,GAAG,EAAE,UAAU,CAAC,GAAG;KACpB;AAED,IAAA,MAAM,IAAI,GAAkB;QAC1B,IAAI;QACJ,MAAM;QACN,MAAM;QAEN,QAAQ;QACR,gBAAgB;QAEhB,aAAa,EAAE,aAAa,IAAI,IAAI;QACpC,iBAAiB,EAAE,iBAAiB,IAAI,IAAI;QAC5C,aAAa,EAAE,aAAa,IAAI,IAAI;QAEpC,uBAAuB;QACvB,mBAAmB;QACnB,mBAAmB;QAEnB,oBAAoB,EAAE,SAAS,IAAI,IAAI;KACxC;AAED,IAAA,OAAO,IAAa;AACtB;AAOO,MAAM,eAAe,GAAG,CAAC,KAAyB,KAAe;AACtE,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;AAC/B,IAAA,MAAM,QAAQ,GAAG,kBAAkB,EAAE;AAErC,IAAA,eAAe,CAAC;QACd,KAAK,EAAE,MAAK;AACV,YAAA,SAAS,CAAC;gBACR,QAAQ;AACR,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA,CAAC;QACJ,CAAC;AACF,KAAA,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;AACxB,QAAA,WAAW,CAAC;YACV,QAAQ;AACR,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC;;ACjIO,MAAM,WAAW,GAAG,CAAoC,MAG9D,KAAI;IACH,IAAI,YAAY,GAAG,KAAK;IAExB,eAAe,CAAC,MAAK;QACnB,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,8EAA8E,EAAE,MAAM,CAAC,IAAI,CAAC;YAC1G;QACF;AACF,IAAA,CAAC,CAAC;IAEF,OAAO,CAAC,MAAS,KAAI;QACnB,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,CAAC,KAAK,CACX,yEAAyE,EACzE,yCAAyC,EACzC,MAAM,CAAC,IAAI,EACX,8BAA8B,EAC9B,MAAM,CACP;YACD;QACF;QAEA,YAAY,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACxB,IAAA,CAAC;AACH;;AC5BO,MAAM,qBAAqB,GAAG,CAAoD,KAAQ,KAAI;AACnG,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,IAAA,MAAM,aAAa,GAAG,CAAoB,IAAkD,KAAI;AAC9F,QAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAK;YACnC,MAAM,CAAC,MAAK;AACV,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAoB,IAAyC,KAAI;AACpF,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,IAAA,CAAC;IAED,OAAO;AACL,QAAA,GAAG,KAAK;QACR,aAAa;QACb,YAAY;KACb;AACH;;MCda,cAAc,CAAA;AAOzB,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,GAAA,EAAA,CAAA,EAAyB,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAkB,GAAG;QAExG,IAAA,CAAA,YAAY,GAAG,kBAAkB,EAAE;AAGjC,QAAA,eAAe,CAAC;YACd,KAAK,EAAE,MAAK;AACV,gBAAA,SAAS,CAAC;oBACR,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,WAAW,CAAC;gBACV,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;8GAvBW,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,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA;;;ACkCM,MAAM,gBAAgB,GAAG,CAAC,cAA8C,KAC7E,QAAQ,CAAC,MAAqE;AAC5E,IAAA,MAAM,OAAO,GAAG,cAAc,EAAE;AAEhC,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,IAAI;AAEzB,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;SACf;IACH;AAEA,IAAA,IAAI,OAAO,YAAY,WAAW,EAAE;QAClC,OAAO;AACL,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,IAAI;SACf;IACH;AAEA,IAAA,IAAI,WAAW,IAAI,OAAO,EAAE;QAC1B,OAAO;AACL,YAAA,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC;IACH;AAEA,IAAA,IAAI,UAAU,IAAI,OAAO,EAAE;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC;IACH;IAEA,OAAO;AACL,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,IAAI;KACf;AACH,CAAC;;AC5EI,MAAM,gBAAgB,GAAG,CAC9B,OAA0C,EAC1C,OAA2B,EAC3B,QAAoB,EACpB,OAAqD,KACnD;AACF,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAEnE,IAAA,MAAM,cAAc,GAAG,CAAC,KAA2B,KAAiB,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAEzG,IAAA,MAAM,SAAS,GAAG,OAAO,IAAI,cAAc;IAE3C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,aAAa,EAAE,CAAC;AACrD,IAAA,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;QAC3B,OAAO,CAAC,YAAY,CAAC;IACvB;IAEA,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,KAAK,GAAG,aAAa,EAAE;AAC7B,QAAA,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC;QAChB;aAAO;AACL,YAAA,QAAQ,EAAE;QACZ;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;AACxB,QAAA,QAAQ,EAAE;AACZ,IAAA,CAAC,CAAC;AACJ;MAEa,qBAAqB,GAAG,CACnC,aAAyC,EACzC,aAAwE,KACtE;IACF,OAAO,CAAC,OAA+C,KAAI;AACzD,QAAA,aAAa,CACX,QAAQ,CAAC,MAAK;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACxE,YAAA,OAAO,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;QAC5C,CAAC,CAAC,CACH;AACH,IAAA,CAAC;AACH;MAEa,0BAA0B,GAAG,CACxC,aAAwD,EACxD,aAAwE,KACtE;IACF,OAAO,CAAC,OAAiD,KAAI;AAC3D,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAClE,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,SAAS,CAAC,MAAM,YAAY,EAAE,CAAC,IAAI,EAAE,sDAAC;QAExE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpC,YAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;AAEO,MAAM,eAAe,GAAG,CAC7B,OAAwD,KACd;IAC1C,OAAO,QAAQ,CAAC,MAAK;QACnB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACxE,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACrE,IAAA,CAAC,CAAC;AACJ;MAEa,yBAAyB,GAAG,CACvC,cAAsB,EACtB,aAA0F,KACxF;IACF,OAAO,CAAC,MAAe,KAAI;AACzB,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9C,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,aAAa,CAAC,GAAG,EAAE,KAA+C,CAAC;YACrE;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;;;;;;ACtCO,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IACjD,WAAW;IACX,MAAM;IACN,kBAAkB;IAClB,8BAA8B;IAC9B,YAAY;IACZ,cAAc;IACd,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,eAAe;AAChB,CAAA;MAEY,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,GAAG,wBAAwB,CACrF;AACE,IAAA,iBAAiB,EAAE,2BAA2B;AAC/C,CAAA,EACD,EAAE,IAAI,EAAE,mBAAmB,EAAE;AAGxB,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,kBAAkB,CACnE,MAAK;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAACC,UAAQ,CAAC;AACjC,IAAA,MAAM,MAAM,GAAG,qBAAqB,EAAE;IACtC,MAAM,UAAU,GAAG,MAAM,CAAwC,IAAI,GAAG,EAAE,sDAAC;IAC3E,IAAI,eAAe,GAAG,CAAC;AAEvB,IAAA,MAAM,UAAU,GAAG,CAAC,UAAsB,KAAY;AACpD,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,aAAa;QAEhG,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAEjC,IAAI,UAAU,CAAC,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,UAAU,CAAC,QAAQ,CAAA,CAAE,CAAC;YACzE,IAAI,UAAU,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,UAAU,CAAC,KAAK,CAAA,CAAE,CAAC;YAChE,IAAI,UAAU,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,UAAU,CAAC,KAAK,CAAA,CAAE,CAAC;YAChE,IAAI,UAAU,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,UAAU,CAAC,IAAI,CAAA,CAAE,CAAC;YAC7D,IAAI,UAAU,CAAC,EAAE;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,GAAA,EAAM,UAAU,CAAC,EAAE,CAAA,CAAE,CAAC;;AAGvD,YAAA,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACnG,QAAQ,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,UAAU,CAAC,IAAI,CAAA,CAAE,CAAC;YAC1C;AAEA,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3B;QAEA,OAAO,UAAU,CAAC,GAAG;AACvB,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,GAAW,KAAa;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK;QAEtB,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,UAAsB,KAAqB;QACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;;QAG3C,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU;AAExD,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAI;YACtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACzC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,GAAW,KAAI;AACvC,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;QAE3F,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YACpC;QACF;AAEA,QAAA,MAAM,aAAa,GACjB,mBAAmB,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAE/F,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAE5F,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBACjC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC;gBAClD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,KAC1E,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,CACxD;YAED,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;QAClD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,UAAsB,KAAI;AACrD,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;AAClC,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAE7C,QAAA,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AACnC,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAEpD,YAAA,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC9D,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAEzC,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;QAEF,gBAAgB,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,GAAY,KAAI;QAC9C,IAAI,GAAG,EAAE;AACP,YAAA,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC5B,gBAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBACnC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAEvC,IAAI,WAAW,EAAE;AACf,oBAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AAEtB,oBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;AAC1B,wBAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;oBACxB;yBAAO;wBACL,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;oBAC3C;gBACF;AAEA,gBAAA,OAAO,UAAU;AACnB,YAAA,CAAC,CAAC;YAEF,gBAAgB,CAAC,GAAG,CAAC;YACrB;QACF;AAEA,QAAA,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AACnC,YAAA,IAAI,WAA+B;YAEnC,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE;AACtC,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpB,oBAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,WAAW,GAAG,CAAC;AAEf,oBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACvB,wBAAA,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtB;yBAAO;wBACL,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtC;oBACA;gBACF;YACF;YAEA,IAAI,WAAW,EAAE;gBACf,cAAc,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACrD;AAEA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5C,CAAC,EACD,EAAE,IAAI,EAAE,YAAY,EAAE;AAGjB,MAAM,gBAAgB,GAAG,CAAC,OAAmD,KAAI;AACtF,IAAA,MAAM,SAAS,GAAG,eAAe,EAAE;AACnC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AACjC,IAAA,IAAI,UAA8B;AAElC,IAAA,gBAAgB,CACd,OAAO,EACP,CAAC,MAAM,KAAI;AACT,QAAA,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;AACzC,QAAA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AACnC,IAAA,CAAC,EACD,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAC/C;AACH;MAEa,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB;MAEtG,qBAAqB,GAAG,CAAC,QAAgB,EAAE,OAA+C,KAAI;AACzG,IAAA,gBAAgB,CACd,QAAQ,CAAC,MAAK;QACZ,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACtE,QAAA,OAAO,GAAG,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAC/D,CAAC,CAAC,CACH;AACH;AAMO,MAAM,+BAA+B,GAAG,CAAC,MAAgC,KAAI;AAClF,IAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAI;AACrD,QAAA,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC1C,IAAA,CAAC,CAAC;AACJ;MAEa,gBAAgB,GAAG,qBAAqB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB;MAE5F,gBAAgB,GAAG,qBAAqB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB;AASlG,MAAM,0BAA0B,GAAG,CAAC,MAA2B,KAAI;AACxE,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE,EAAE,CAAC,EAC1E,gBAAgB,CACjB,CAAC,MAAM,CAAC,UAAU,CAAC;IACtB;AAEA,IAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACtB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAE,EAAE,CAAC,EAC9E,gBAAgB,CACjB,CAAC,MAAM,CAAC,WAAW,CAAC;IACvB;AAEA,IAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE,EAAE,CAAC,EACtE,gBAAgB,CACjB,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpB;AAEA,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE,EAAE,CAAC,EACxE,gBAAgB,CACjB,CAAC,MAAM,CAAC,SAAS,CAAC;IACrB;AACF;;MCnQa,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,wBAAwB,CAC7E;AACE,IAAA,OAAO,EAAE,GAAG;AACZ,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,WAAW,EAAE,CAAC,KAAa,KAAK,KAAK;AACtC,CAAA,EACD,EAAE,IAAI,EAAE,cAAc,EAAE;AAGnB,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,kBAAkB,CACrE,MAAK;AACH,IAAA,MAAM,MAAM,GAAG,iBAAiB,EAAE;IAClC,MAAM,UAAU,GAAG,MAAM,CAAyB,IAAI,GAAG,EAAE,sDAAC;AAC5D,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE;AACxC,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,IAAA,MAAM,mBAAmB,GAAG,yBAAyB,EAAE;IAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,EAAE;AAEnE,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,QAAQ,GAAG,UAAU,EAAE;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC;QAC1D;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAa,EAAE;AAEnC,QAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;AACtD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AAC3D,YAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;YAE5B,IAAI,IAAI,CAAC,UAAU;gBAAE;QACvB;AAEA,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE;AAC3B,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACrF;AAEA,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE;AAC3B,YAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAClF;QAEA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC;AACnD,IAAA,CAAC,iDAAC;AAEF,IAAA,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,IAAe,KAAI;QAC9C,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,EAAU,KAAI;AAChC,QAAA,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AAC/B,YAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,SAAS,GAAG,KAAK,EAAE;AACzB,QAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE;AACvC,CAAC,EACD,EAAE,IAAI,EAAE,aAAa,EAAE;MAGZ,qBAAqB,GAAG,CACnC,OAAwD,EACxD,OAAiC,KAC/B;AACF,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AACrC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;IAEnC,gBAAgB,CACd,OAAO,EACP,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAA,EAAG,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,EACvE,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EACnC,CAAC,KAAK,KAA+B,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAC3F;AACH;;ACtEO,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;;IAEjD,qBAAqB;IACrB,yBAAyB;IACzB,gCAAgC;IAChC,qBAAqB;IACrB,yBAAyB;IACzB,gCAAgC;IAChC,qBAAqB;IACrB,yBAAyB;IACzB,gCAAgC;;IAGhC,gCAAgC;;IAGhC,sBAAsB;IACtB,uBAAuB;;IAGvB,2BAA2B;IAC3B,wBAAwB;;IAGxB,uBAAuB;IACvB,2BAA2B;IAC3B,wBAAwB;;IAGxB,wBAAwB;IACxB,2BAA2B;IAC3B,yBAAyB;IACzB,sBAAsB;;IAGtB,wBAAwB;IACxB,qBAAqB;;IAGrB,6BAA6B;;IAG7B,6BAA6B;IAC7B,qCAAqC;;IAGrC,uBAAuB;IACvB,gCAAgC;IAChC,4BAA4B;IAC5B,2BAA2B;IAC3B,gCAAgC;IAChC,+BAA+B;IAC/B,uBAAuB;IACvB,iCAAiC;IACjC,oCAAoC;IACpC,sCAAsC;IACtC,2BAA2B;IAC3B,8BAA8B;IAC9B,gCAAgC;IAChC,qCAAqC;IACrC,wCAAwC;IACxC,0CAA0C;;IAG1C,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;;IAGnB,kBAAkB;IAClB,mBAAmB;;AAGnB,IAAA,yBAAyB;;IAGzB,iCAAiC;IACjC,sBAAsB;IACtB,4BAA4B;AAC5B,IAAA,wBAAwB;IACxB,qCAAqC;AACtC,CAAA;MAEY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,wBAAwB,CAC3E;AACE,IAAA,WAAW,EAAE,CAAC,OAAe,KAAK,OAAO;AACzC,IAAA,iBAAiB,EAAE,2BAA2B;AAC/C,CAAA,EACD,EAAE,IAAI,EAAE,aAAa,EAAE;AAGlB,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,kBAAkB,CACnE,MAAK;AACH,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,gBAAgB,EAAE;AACjC,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE;IAExC,MAAM,kBAAkB,GAAG,MAAM,CAA2C,IAAI,GAAG,EAAE,8DAAC;IACtF,IAAI,eAAe,GAAG,CAAC;AAEvB,IAAA,MAAM,WAAW,GAAG,CAAC,MAAqB,KAAY;QACpD,IAAI,MAAM,CAAC,IAAI;AAAE,YAAA,OAAO,CAAA,MAAA,EAAS,MAAM,CAAC,IAAI,GAAG;QAC/C,IAAI,MAAM,CAAC,QAAQ;AAAE,YAAA,OAAO,CAAA,UAAA,EAAa,MAAM,CAAC,QAAQ,GAAG;QAC3D,IAAI,MAAM,CAAC,SAAS;AAAE,YAAA,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,SAAS,GAAG;QAC/D,IAAI,MAAM,CAAC,QAAQ;AAAE,YAAA,OAAO,CAAA,UAAA,EAAa,MAAM,CAAC,QAAQ,GAAG;AAC3D,QAAA,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,CAAC,QAAgB,KAAa;QACvD,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,SAAwB,EAAE,MAAc,KAAqB;AAC7E,QAAA,MAAM,iBAAiB,GAAG,EAAE,GAAG,SAAS,EAAE;AAE1C,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC7B,YAAA,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC;QACnF;;QAGA,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,iBAAiB;AAE/D,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAoB;AAC1D,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,QAAgB,KAAI;AAC1C,QAAA,MAAM,MAAM,GAAG,aAAa,EAAE;AAC9B,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACpC,YAAA,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC/B;QACF;AAEA,QAAA,MAAM,aAAa,GACjB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAEnG,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClD,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEhE,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAE5F,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACjC,gBAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,KAC1E,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,CACxD;AAED,YAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QACxC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,SAAwB,KAAI;AACtD,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACvC,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE;AAElC,QAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;AAC3C,YAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;AACjD,YAAA,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE;AAErE,YAAA,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YACzD,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE1D,YAAA,OAAO,iBAAiB;AAC1B,QAAA,CAAC,CAAC;QAEF,cAAc,CAAC,QAAQ,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,QAAiB,KAAI;QAClD,IAAI,QAAQ,EAAE;AACZ,YAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;AAC3C,gBAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;gBACjD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAExD,IAAI,gBAAgB,EAAE;AACpB,oBAAA,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAE3B,oBAAA,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/B,wBAAA,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACpC;yBAAO;wBACL,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAC5D;gBACF;AAEA,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,CAAC,CAAC;YAEF,cAAc,CAAC,QAAQ,CAAC;YACxB;QACF;AAEA,QAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;AAC3C,YAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;AACjD,YAAA,IAAI,gBAAoC;YAExC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,iBAAiB,EAAE;AAC/C,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpB,oBAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,gBAAgB,GAAG,GAAG;AAEtB,oBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACvB,wBAAA,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC/B;yBAAO;wBACL,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C;oBACA;gBACF;YACF;YAEA,IAAI,gBAAgB,EAAE;gBACpB,cAAc,CAAC,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACxD;AAEA,YAAA,OAAO,iBAAiB;AAC1B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,CAAC,MAAK;AACV,QAAA,aAAa,EAAE;QACf,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,kBAAkB,EAAE,CAAC;QAE5D,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAI;YACrC,cAAc,CAAC,QAAQ,CAAC;AAC1B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE;AAC3C,CAAC,EACD,EAAE,IAAI,EAAE,YAAY,EAAE;AAGjB,MAAM,gBAAgB,GAAG,CAAC,OAAsD,KAAI;AACzF,IAAA,MAAM,SAAS,GAAG,eAAe,EAAE;AACnC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,IAAI,eAAmC;AAEvC,IAAA,gBAAgB,CACd,OAAO,EACP,CAAC,MAAM,KAAI;AACT,QAAA,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;AAC/C,QAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AACjC,IAAA,CAAC,EACD,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAClD;AACH;MAEa,uBAAuB,GAAG,qBAAqB,CAC1D,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAC/C,gBAAgB;AAGX,MAAM,oBAAoB,GAAG,CAAC,OAAiD,KAAI;AACxF,IAAA,gBAAgB,CACd,QAAQ,CAAC,MAAK;QACZ,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AAC3E,QAAA,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;IACpG,CAAC,CAAC,CACH;AACH;MAEa,kBAAkB,GAAG,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB;AAa7G,MAAM,kBAAkB,GAAG,CAAC,OAAqD,KAAI;AAC1F,IAAA,gBAAgB,CACd,QAAQ,CAAC,MAAK;QACZ,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QAExB,MAAM,UAAU,GAAa,EAAE;AAE/B,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,MAAM,CAAC,SAAS;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAClD,IAAI,MAAM,CAAC,SAAS;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAClD,IAAI,MAAM,CAAC,YAAY;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,MAAM,CAAC,UAAU,CAAA,CAAE,CAAC;QACxF,IAAI,MAAM,CAAC,eAAe;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA,kBAAA,EAAqB,MAAM,CAAC,eAAe,CAAA,CAAE,CAAC;AAC1F,QAAA,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA,kBAAA,EAAqB,MAAM,CAAC,eAAe,CAAA,CAAE,CAAC;QAExG,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;IAC1F,CAAC,CAAC,CACH;AACH;MAEa,cAAc,GAAG,CAAC,QAAgB,EAAE,OAA+C,KAAI;IAClG,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,EAAE,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;AAC1G;AAEA,MAAM,oBAAoB,GAAG,CAAC,QAAgB,KAC5C,0BAA0B,CACxB,CAAC,KAAK,EAAE,KAAK,MAAM;IACjB,QAAQ,EAAE,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE;AAC1B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,GAAG,EAAE,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;CAC/B,CAAC,EACF,gBAAgB,CACjB;AA4BI,MAAM,sBAAsB,GAAG,CAAC,MAAuB,KAAI;AAChE,IAAA,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,OAAgD,KAAI;AACrF,QAAA,IAAI,OAAO;AAAE,YAAA,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;AAChD,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC;AAC1C,IAAA,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAC1B,IAAA,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AAC5B,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AAChC,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC;AAClD,IAAA,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AACvC,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC;AAClD,IAAA,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AACvC,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;IAE9B,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpF,IAAI,MAAM,CAAC,MAAM;QAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM;QAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM;QAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACjE;AAmBA,MAAM,yBAAyB,GAAG,CAAC,QAAgB,KACjD,0BAA0B,CACxB,CAAC,KAAK,EAAE,KAAK,MAAM;IACjB,IAAI,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE;AAC3B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,GAAG,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;CACpC,CAAC,EACF,gBAAgB,CACjB;AAEI,MAAM,wBAAwB,GAAG,CAAC,MAAyB,KAAI;AACpE,IAAA,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAgD,KAAI;AAC1F,QAAA,IAAI,CAAC,OAAO;YAAE;QACd,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;AAC3G,IAAA,CAAC;AAED,IAAA,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AACjC,IAAA,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AACjC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;AACtC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACvC,IAAA,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AAC5C,IAAA,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AACnC,IAAA,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC;AAC/C,IAAA,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AACnC,IAAA,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC1C,IAAA,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AACrC,IAAA,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC;IAElD,IAAI,MAAM,CAAC,WAAW;QAAE,YAAY,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,YAAY;QAAE,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE5F,IAAI,MAAM,CAAC,MAAM;QAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACtE;AAaA,MAAM,yBAAyB,GAAG,CAAC,QAAgB,KACjD,0BAA0B,CACxB,CAAC,KAAK,EAAE,KAAK,MAAM;IACjB,QAAQ,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE;AAC/B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,GAAG,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;CACpC,CAAC,EACF,gBAAgB,CACjB;AAEI,MAAM,oBAAoB,GAAG,CAAC,MAAqB,KAAI;AAC5D,IAAA,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAgD,KAAI;AAC1F,QAAA,IAAI,CAAC,OAAO;YAAE;QACd,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;AAC/G,IAAA,CAAC;AAED,IAAA,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC;AACpD,IAAA,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC;AAClD,IAAA,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC;AACtD,IAAA,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AACrC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACvC,IAAA,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;IAE/B,IAAI,MAAM,CAAC,OAAO;QAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACvE,IAAI,MAAM,CAAC,IAAI;QAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAChE;AAYO,MAAM,wBAAwB,GAAG,CAAC,MAAyB,KAAI;IACpE,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC;IACrD,IAAI,MAAM,CAAC,WAAW;AAAE,QAAA,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC;IAEnE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE;AACxF,QAAA,sBAAsB,CAAC;YACrB,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC9C,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW;YAChE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC9C,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG;YACxC,GAAG,MAAM,CAAC,SAAS;AACpB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE;AACxE,QAAA,wBAAwB,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC5C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW;YAC9D,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC5C,GAAG,MAAM,CAAC,OAAO;AAClB,SAAA,CAAC;IACJ;IAEA,IAAI,MAAM,CAAC,OAAO;AAAE,QAAA,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1D;;ACriBA,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAE,YAAuB,KAAe;IAC/E,OAAO;AACL,QAAA,GAAG,YAAY;AACf,QAAA,GAAG,MAAM;KACV;AACH,CAAC;MAEY,mBAAmB,GAAG,IAAI,cAAc,CAAe,qBAAqB;AAEzF;MAIa,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAW;QAEhD,IAAA,CAAA,cAAc,GAAG,KAAK;AAErB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAKzE,IAAA,CAAA,OAAO,GAAc,EAAE;AA0JhC,IAAA;AA7JC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;IAGA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE;IAC1B;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB;QACF;QAEA,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAE3B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACvD,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3F;AAAO,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,oBAAA,IAAI,KAAK,YAAY,UAAU,EAAE;wBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC3F;yBAAO;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;oBAC1B;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACtD,gBAAA,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtD,oBAAA,IAAI,QAAQ,YAAY,UAAU,EAAE;AAClC,wBAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC;oBAC7G;yBAAO;wBACL,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,QAAQ,CAAC;oBAC5C;gBACF;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1B;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;IAC5B;IAEQ,OAAO,CAAC,GAAW,EAAE,KAAc,EAAA;QACzC,QAAQ,GAAG;AACT,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC;gBACA;AAEF,YAAA,KAAK,WAAW;gBACd;oBACE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC;oBAEzD,IAAI,IAAI,EAAE;AACR,wBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAe,CAAC;oBAC5C;yBAAO;wBACL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,wBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;AAChC,wBAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAe,CAAC;AAC7C,wBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBACpC;gBACF;gBAEA;AAEF,YAAA,KAAK,WAAW;gBACd;AACE,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,aAAA,EAAiB,KAAuB,CAAC,QAAQ,CAAA,EAAA,CAAI,CAAC;oBAE1G,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,YAAY,CAAC,MAAM,EAAG,KAAuB,CAAC,IAAI,CAAC;oBAC1D;yBAAO;wBACL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,wBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;wBAChC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAG,KAAuB,CAAC,QAAQ,CAAC;wBACnE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAG,KAAuB,CAAC,IAAI,CAAC;AAC3D,wBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBACpC;gBACF;gBAEA;AAEF,YAAA;gBACE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,KAAgB;AAEvE,oBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC1D;qBAAO;oBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA,CAAG,CAAC;gBAC9C;gBACA;;IAEN;IAEQ,QAAQ,GAAA;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC;AAE7D,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBACrB,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,CAAC,CAAC;gBAEF;YACF;AAEA,YAAA,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC;gBAEzD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,EAAE;gBACf;gBAEA;YACF;YAEA,IACE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;AACrC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;gBAC1B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,CAAC,EAC1C;gBACA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAA4B,EAAE;AACjE,oBAAA,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAsB,CAAC,GAAG,MAA0C,CAAC;AAE7F,oBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;wBAC7B,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,SAAS,CAAC;oBAC7C;gBACF;YACF;iBAAO;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAsB,CAAC;AAEjE,gBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;gBACzB;YACF;QACF;IACF;8GArKW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EAFZ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE7D,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,YAAc,EAAE,CAAC;AACzE,iBAAA;;;MCKY,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,GAAG,wBAAwB,CAC/F;AACE,IAAA,SAAS,EAAE,MAAM;AAClB,CAAA,EACD,EAAE,IAAI,EAAE,wBAAwB,EAAE;AAG7B,MAAM,CAAC,0BAA0B,EAAE,yBAAyB,CAAC,GAAG,kBAAkB,CACvF,MAAK;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAACA,UAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,MAAM,GAAG,0BAA0B,EAAE;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAiC,IAAI,GAAG,EAAE,mDAAC;IAEjE,MAAM,gBAAgB,GAAG,MAAkB;AACzC,QAAA,OAAO,MAAM,CAAC,SAAS,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACpE,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,IAAqD,KAAI;AAC9F,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;YAErC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,YAAA,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE;gBACrC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;YACvD;YAEA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YAE/C,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAE3F,YAAA,MAAM,MAAM,GAAG,gBAAgB,EAAE;AACjC,YAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;AAEpC,YAAA,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;AAC1B,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,EAAU,KAAI;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;YACrC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAEjC,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC/B,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;AAE/C,gBAAA,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB;AAEA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE;AACpD,CAAC,EACD,EAAE,IAAI,EAAE,uBAAuB,EAAE;AAG5B,MAAM,0BAA0B,GAAG,CACxC,OAAwF,KACtF;AACF,IAAA,MAAM,KAAK,GAAG,yBAAyB,EAAE;AACzC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE1C,gBAAgB,CACd,OAAO,EACP,CAAC,IAAI,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjD,MAAM,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAC3C;AACH;;MC9Ea,uBAAuB,CAAA;AAVpC,IAAA,WAAA,GAAA;AAWU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAExC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqE,IAAI,gDAAC;AAEtF,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YAExB,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;YACb;YAEA,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE;AAC5F,YAAA,MAAM,IAAI,GAAG,CAAA,mCAAA,EAAsC,IAAI,WAAW;YAClE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACrD,QAAA,CAAC,kDAAC;AACH,IAAA;8GAhBY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,mSARxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,aAAa,EAAE,UAAU;AAC1B,qBAAA;AACF,iBAAA;;;ACwBM,MAAM,kBAAkB,GAAG,CAAC,IAAY,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAA,CAAE;AAEtG,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,GAAG,oBAAoB,CAAW,SAAS,EAAE;AAChG,IAAA,IAAI,EAAE,cAAc;AACrB,CAAA;AACM,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;AAEvG,MAAM,+BAA+B,GAAG,CAAC,MAAe,EAAE,MAAM,GAAG,IAAI,KAAK;AACjF,IAAA,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,oBAAoB,CAAC,MAAM,CAAC;;;AC3C9B;;AAEG;AACI,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,KAAc,EAAE,IAAiB,KAAI;AACnF,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAClD,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE;IAEvC,OAAO;AACM,aAAA,EAAA,SAAS,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;AAChC,aAAA,EAAA,SAAS,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;eACpC,SAAS,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;AACxD,aAAA,EAAA,SAAS,CAAA,SAAA,EAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;AACtC,aAAA,EAAA,SAAS,CAAA,WAAA,EAAc,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;;AAE1C,aAAA,EAAA,WAAW,MAAM,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAChD,aAAA,EAAA,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAC5E,aAAA,EAAA,WAAW,MAAM,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAClG,aAAA,EAAA,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,SAAA,EAAY,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAC9E,aAAA,EAAA,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;GAC9F;AACH;AAEA;;AAEG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAe,KAAI;AACpD,IAAA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAmB,KAAI;QACvD,OAAO;AACM,eAAA,EAAA,IAAI,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAA;AAC7B,eAAA,EAAA,IAAI,CAAA,QAAA,EAAW,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;iBACjC,IAAI,CAAA,QAAA,EAAW,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;AACvD,eAAA,EAAA,IAAI,CAAA,SAAA,EAAY,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;AACnC,eAAA,EAAA,IAAI,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAA;;AAEpC,kBAAA,EAAA,IAAI,CAAA,EAAA,EAAK,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC/B,IAAI,CAAA,QAAA,EAAW,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;AAC7D,kBAAA,EAAA,IAAI,WAAW,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;oBACrF,IAAI,CAAA,SAAA,EAAY,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC/D,IAAI,CAAA,WAAA,EAAc,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;KAClF;AACH,IAAA,CAAC;IAED,MAAM,IAAI,GAAa,EAAE;AAEzB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;QAE3C,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAEvD,YAAA,IAAI,KAAK,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,UAAA,CAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7D;AAEA,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,SAAA,CAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3D;QACF;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,GAAG,GAAG;;AAER,IAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;GAElB;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,IAAA,KAAK,CAAC,EAAE,GAAG,CAAA,cAAA,CAAgB;IAC3B,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC;AAEA;;AAEG;MACU,gBAAgB,GAAG,CAAC,KAAY,EAAE,KAAc,KAAI;IAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE;AAExC,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,MAAM,KAAK,CAAC,YAAY,IAAI,KAAK;AAC7D,cAAE,CAAC,OAAO,EAAE,CAAA,SAAA,EAAY,YAAY,WAAW;cAC7C,EAAE,CAAC;QACP,CAAA,SAAA,EAAY,YAAY,CAAA,EAAA,EAAK,YAAY,CAAA,CAAE;KAC5C;AAED,IAAA,MAAM,GAAG,GAAG;AACV,EAAA,EAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;MAClB,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;AAChD,IAAA,EAAA,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;AAC3E,IAAA,EAAA,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;;GAE3E;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IAC7C,KAAK,CAAC,EAAE,GAAG,CAAA,QAAA,EAAW,YAAY,CAAA,EAAA,EAAK,YAAY,EAAE;IACrD,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC;AAEA;;AAEG;MACU,oBAAoB,GAAG,CAAC,IAAwB,MAAM,IAAI,GAAG,aAAa,IAAI,CAAA,kBAAA,CAAoB,GAAG,IAAI;AAEtH;;AAEG;MACU,oBAAoB,GAAG,CAAC,GAAuB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAA,iBAAA,CAAmB,GAAG,IAAI;AAE5G;;AAEG;AACI,MAAM,yBAAyB,GAAG,CAAC,MAAe,EAAE,MAAM,GAAG,IAAI,KAAI;IAC1E,MAAM,QAAQ,GASV,EAAE;AAEN,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,IAAI,KAAK,CAAC,IAAI,CAAA,CAAE;QAErC,QAAQ,CAAC,GAAG,CAAC,GAAG;YACd,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAE;YAC3D,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAE;YACvD,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAE;YAC1G,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAE;YACzD,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAE;SAC9D;QAED,MAAM,KAAK,GAAG,CAAA,EAAG,MAAM,OAAO,KAAK,CAAC,IAAI,CAAA,CAAE;QAE1C,QAAQ,CAAC,KAAK,CAAC,GAAG;YAChB,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YAC7D,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YAChH,KAAK,EACH,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjD,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjD,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YACtD,MAAM,EACJ,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YAC5G,QAAQ,EACN,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;SAC/G;IACH;AAEA,IAAA,OAAO,QAAQ;AACjB;AAEA;;AAEG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAe,KAAI;IACpD,IAAI,SAAS,EAAE,EAAE;AACf,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM;AACrE,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM;AAE3E,QAAA,IAAI,YAAY,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC,IAAI,CACV,iHAAiH,CAClH;QACH;AAAO,aAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CACV,mIAAmI,CACpI;QACH;AAEA,QAAA,IAAI,eAAe,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,CACV,8IAA8I,CAC/I;QACH;IACF;AAEA,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,QAAA,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;AAC9B,QAAA,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;IAC/B;IAEA,kBAAkB,CAAC,MAAM,CAAC;IAE1B,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7F;;MCjLa,cAAc,GAAG,IAAI,cAAc,CAAwB,eAAe;MAS1E,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;QAQU,IAAA,CAAA,MAAM,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9C,IAAA,CAAA,MAAM,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE3B,IAAA,CAAA,mBAAmB,GAAqB,IAAI;QAEpD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,SAAS,sDAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACxE,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAgB,SAAS,qDAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;AAE1E,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAE9B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;gBAAE;YAE5B,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;AACnF,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,CAAA,mEAAA,CAAqE,CAAC;YACpG;AAEA,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE7B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;gBAAE;YAE5B,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;AACnF,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,CAAA,mEAAA,CAAqE,CAAC;YACnG;AAEA,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,wDAAC;AAEQ,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YACnC,MAAM,MAAM,GAAa,EAAE;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI;AAElC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,aAAa,EAAE,CAAA,CAAE,CAAC;YACzD;AAEA,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,YAAA,EAAe,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,CAAC;YAC5D;AAEA,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACzB,QAAA,CAAC,sDAAC;AAsBH,IAAA;AApBC,IAAA,gBAAgB,CAAC,QAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE;AAEnC,QAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACxC,YAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAK;AACrC,gBAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,EAAE;AAC7C,gBAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,EAAE;gBAE3C,SAAS,CAAC,MAAK;AACb,oBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAChD,oBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAChD,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,+DAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE;AACnC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACjC;8GApEW,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,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,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,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EALrB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAKjE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAA,qBAAuB,EAAE,CAAC;AAC5E,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,cAAc;AAC1B,qBAAA;AACF,iBAAA;;;ACxBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ethlete-core.mjs","sources":["../../../../libs/core/src/lib/animations/animatable.directive.ts","../../../../libs/core/src/lib/utils/angular/component-id.ts","../../../../libs/core/src/lib/utils/angular/destroy.ts","../../../../libs/core/src/lib/utils/angular/di.ts","../../../../libs/core/src/lib/utils/angular/form.ts","../../../../libs/core/src/lib/utils/angular/host-listener.ts","../../../../libs/core/src/lib/utils/angular/query-list-changes.ts","../../../../libs/core/src/lib/utils/angular/set-input-signal.ts","../../../../libs/core/src/lib/utils/angular/validators.ts","../../../../libs/core/src/lib/utils/comparison.ts","../../../../libs/core/src/lib/utils/cookie.ts","../../../../libs/core/src/lib/utils/key-press-manager.ts","../../../../libs/core/src/lib/signals/animated-number.ts","../../../../libs/core/src/lib/signals/control-value.ts","../../../../libs/core/src/lib/signals/element.ts","../../../../libs/core/src/lib/signals/render-utils.ts","../../../../libs/core/src/lib/signals/element-mutations.ts","../../../../libs/core/src/lib/signals/element-children.ts","../../../../libs/core/src/lib/signals/element-data-binding.ts","../../../../libs/core/src/lib/signals/element-dimensions.ts","../../../../libs/core/src/lib/signals/element-intersection.ts","../../../../libs/core/src/lib/signals/element-scroll-direction.ts","../../../../libs/core/src/lib/signals/element-scroll-state.ts","../../../../libs/core/src/lib/signals/signal-data-utils.ts","../../../../libs/core/src/lib/signals/media-queries.ts","../../../../libs/core/src/lib/signals/recipes/css-vars.ts","../../../../libs/core/src/lib/signals/recipes/cursor-drag-scroll.ts","../../../../libs/core/src/lib/signals/router.ts","../../../../libs/core/src/lib/signals/recipes/scroll-restoration.ts","../../../../libs/core/src/lib/utils/logger.ts","../../../../libs/core/src/lib/utils/math.ts","../../../../libs/core/src/lib/utils/object.ts","../../../../libs/core/src/lib/utils/runtime-error.ts","../../../../libs/core/src/lib/utils/scrollable.ts","../../../../libs/core/src/lib/providers/angular-root-element.ts","../../../../libs/core/src/lib/providers/boundary-element.ts","../../../../libs/core/src/lib/providers/breakpoint-observer.ts","../../../../libs/core/src/lib/providers/focus-visible-tracker.ts","../../../../libs/core/src/lib/providers/locale.ts","../../../../libs/core/src/lib/providers/renderer.ts","../../../../libs/core/src/lib/animations/animation-utils.ts","../../../../libs/core/src/lib/animations/animated-lifecycle.directive.ts","../../../../libs/core/src/lib/animations/animated-if.directive.ts","../../../../libs/core/src/lib/animations/animated-overlay.directive.ts","../../../../libs/core/src/lib/animations/flip-animation.ts","../../../../libs/core/src/lib/directives/click-outside.directive.ts","../../../../libs/core/src/lib/directives/repeat.directive.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-game-result-type.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-state.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-participants.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-score.pipe.ts","../../../../libs/core/src/lib/pipes/ethlete/normalize-match-type.pipe.ts","../../../../libs/core/src/lib/pipes/infer-mime-type.pipe.ts","../../../../libs/core/src/lib/pipes/to-array.pipe.ts","../../../../libs/core/src/lib/props/create-prop-handlers.ts","../../../../libs/core/src/lib/props/element-dictionary.ts","../../../../libs/core/src/lib/props/props-binding.ts","../../../../libs/core/src/lib/props/create-props.ts","../../../../libs/core/src/lib/props/create-setup.ts","../../../../libs/core/src/lib/props/dependency-stash.ts","../../../../libs/core/src/lib/props/props.directive.ts","../../../../libs/core/src/lib/props/template-input.ts","../../../../libs/core/src/lib/seo/head-binding.ts","../../../../libs/core/src/lib/seo/link-binding.ts","../../../../libs/core/src/lib/seo/title-binding.ts","../../../../libs/core/src/lib/seo/meta-binding.ts","../../../../libs/core/src/lib/seo/seo.directive.ts","../../../../libs/core/src/lib/seo/structured-data-binding.ts","../../../../libs/core/src/lib/seo/structured-data.component.ts","../../../../libs/core/src/lib/theming/theme.util.ts","../../../../libs/core/src/lib/theming/legacy-theming.ts","../../../../libs/core/src/lib/theming/provide-theme.directive.ts","../../../../libs/core/src/ethlete-core.ts"],"sourcesContent":["import { Directive, ElementRef, inject, InjectionToken } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n fromEvent,\n map,\n merge,\n Observable,\n Subject,\n tap,\n} from 'rxjs';\n\nexport const ANIMATABLE_TOKEN = new InjectionToken<AnimatableDirective>('ANIMATABLE_DIRECTIVE_TOKEN');\n\nexport type AnimationEndEvent = {\n cancelled: boolean;\n transitionId?: string;\n};\n\n@Directive({\n selector: '[etAnimatable]',\n exportAs: 'etAnimatable',\n providers: [\n {\n provide: ANIMATABLE_TOKEN,\n useExisting: AnimatableDirective,\n },\n ],\n})\nexport class AnimatableDirective {\n private parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n private animationStartSubject$ = new Subject<void>();\n private animationEndSubject$ = new Subject<AnimationEndEvent>();\n\n private activeAnimationCount = 0;\n private hostActiveAnimationCount$ = new BehaviorSubject<number>(0);\n\n private pendingTransitionIds: string[] = [];\n private activeBatchTransitionId: string | undefined;\n\n animationStart$ = this.animationStartSubject$.asObservable().pipe(debounceTime(0));\n animationEnd$ = this.animationEndSubject$.asObservable().pipe(debounceTime(0));\n\n totalActiveAnimationCount$: Observable<number> = this.parent\n ? combineLatest([this.parent.totalActiveAnimationCount$, this.hostActiveAnimationCount$]).pipe(\n map(([parentCount, hostCount]) => Math.max(0, parentCount + hostCount)),\n )\n : this.hostActiveAnimationCount$.pipe(map((count) => Math.max(0, count)));\n\n isAnimating$ = this.totalActiveAnimationCount$.pipe(map((count) => count > 0));\n\n constructor() {\n let didEmitStart = false;\n const el = this.elementRef.nativeElement;\n\n merge(\n merge(fromEvent<AnimationEvent>(el, 'animationstart'), fromEvent<TransitionEvent>(el, 'transitionstart')).pipe(\n filter((e) => e.target === el && !e.pseudoElement),\n map(() => 'start' as const),\n ),\n merge(fromEvent<AnimationEvent>(el, 'animationend'), fromEvent<TransitionEvent>(el, 'transitionend')).pipe(\n filter((e) => e.target === el && !e.pseudoElement),\n map(() => 'end' as const),\n ),\n merge(fromEvent<AnimationEvent>(el, 'animationcancel'), fromEvent<TransitionEvent>(el, 'transitioncancel')).pipe(\n filter((e) => e.target === el && !e.pseudoElement),\n map(() => 'cancel' as const),\n ),\n )\n .pipe(\n tap((eventType) => {\n switch (eventType) {\n case 'start': {\n const startingNewBatch = this.activeAnimationCount === 0;\n this.updateActiveAnimationCount(1);\n\n if (startingNewBatch) {\n this.activeBatchTransitionId = this.pendingTransitionIds.shift();\n }\n\n if (!didEmitStart) {\n didEmitStart = true;\n this.animationStartSubject$.next();\n }\n\n break;\n }\n case 'end':\n case 'cancel': {\n if (this.activeAnimationCount > 0) {\n this.updateActiveAnimationCount(-1);\n\n if (this.activeAnimationCount === 0 && didEmitStart) {\n didEmitStart = false;\n this.animationEndSubject$.next({\n cancelled: eventType === 'cancel',\n transitionId: this.activeBatchTransitionId,\n });\n this.activeBatchTransitionId = undefined;\n }\n } else {\n console.warn(\n `${el.tagName} received animation end/cancel event but activeAnimationCount is already 0. Start was ${didEmitStart ? '' : 'not '}emitted.`,\n );\n }\n break;\n }\n }\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n setTransitionId(id: string) {\n this.pendingTransitionIds.push(id);\n }\n\n private updateActiveAnimationCount(delta: number) {\n const newVal = this.activeAnimationCount + delta;\n const clampedVal = Math.max(0, newVal);\n\n this.activeAnimationCount = clampedVal;\n this.hostActiveAnimationCount$.next(clampedVal);\n }\n}\n","const componentIds = new Map<string, number>();\n\nexport const createComponentId = (prefix: string) => {\n const id = componentIds.get(prefix) ?? 0;\n componentIds.set(prefix, id + 1);\n\n return `${prefix}-${id}`;\n};\n","import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport const createDestroy = () => {\n assertInInjectionContext(createDestroy);\n\n const destroy$ = new Subject<boolean>();\n\n const ref = inject(DestroyRef);\n\n ref.onDestroy(() => {\n destroy$.next(true);\n destroy$.complete();\n });\n\n return destroy$.asObservable();\n};\n","import { ElementRef, inject, InjectionToken, InjectOptions, Provider, TemplateRef } from '@angular/core';\nimport { createComponentId } from './component-id';\n\nexport const injectHostElement = <T = HTMLElement>() => inject<ElementRef<T>>(ElementRef).nativeElement;\n\nexport const injectTemplateRef = <C = unknown>() => inject<TemplateRef<C>>(TemplateRef);\n\nexport type CreateProviderOptions = {\n /**\n * Optional name for the provider, useful for debugging.\n * If not provided, the name will be a generated string.\n */\n name?: string;\n\n /**\n * Optional existing InjectionToken to also provide the created provider under.\n */\n extraInjectionToken?: InjectionToken<unknown>;\n};\n\nexport type ProviderResult<T> = readonly [\n provide: () => Provider[],\n inject: {\n (): T;\n (options: InjectOptions & { optional?: false }): T;\n (options: InjectOptions): T | null;\n },\n token: InjectionToken<T>,\n];\n\nexport type StaticProviderResult<T> = readonly [\n provide: (valueOverride?: Partial<T>) => Provider[],\n inject: {\n (): T;\n (options: InjectOptions & { optional?: false }): T;\n (options: InjectOptions): T | null;\n },\n token: InjectionToken<T>,\n];\n\nexport type RootProviderResult<T> = readonly [\n inject: {\n (): T;\n (options: InjectOptions & { optional?: false }): T;\n (options: InjectOptions): T | null;\n },\n token: InjectionToken<T>,\n];\n\nconst createInjectFunction = <T>(token: InjectionToken<T>) => {\n function injectFn(): T;\n function injectFn(options: InjectOptions & { optional?: false }): T;\n function injectFn(options: InjectOptions): T | null;\n function injectFn(options?: InjectOptions): T | null {\n return options ? inject(token, options) : inject(token);\n }\n return injectFn;\n};\n\nconst createProviders = <T>(\n token: InjectionToken<T>,\n factory: () => T,\n extraToken?: InjectionToken<unknown>,\n): Provider[] => [\n { provide: token, useFactory: factory },\n ...(extraToken ? [{ provide: extraToken, useExisting: token }] : []),\n];\n\nexport const createProvider = <T>(factory: () => T, options?: CreateProviderOptions): ProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('provider'));\n const provide = () => createProviders(token, factory, options?.extraInjectionToken);\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nexport const createRootProvider = <T>(factory: () => T, options?: CreateProviderOptions): ProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('provider'), {\n providedIn: 'root',\n factory,\n });\n\n const provide = () => createProviders(token, factory, options?.extraInjectionToken);\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nexport const createStaticProvider = <T>(defaultValue?: T, options?: CreateProviderOptions): StaticProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('static-provider'));\n\n const provide = (valueOverride?: Partial<T>) => [\n { provide: token, useValue: maybeMergeValues(defaultValue, valueOverride) },\n ...(options?.extraInjectionToken ? [{ provide: options.extraInjectionToken, useExisting: token }] : []),\n ];\n\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nexport const createStaticRootProvider = <T>(\n defaultValue?: T,\n options?: CreateProviderOptions,\n): StaticProviderResult<T> => {\n const token = new InjectionToken<T>(options?.name ?? createComponentId('static-provider'), {\n providedIn: 'root',\n factory: () => defaultValue as T,\n });\n\n const provide = (valueOverride?: Partial<T>) => [\n { provide: token, useValue: maybeMergeValues(defaultValue, valueOverride) },\n ...(options?.extraInjectionToken ? [{ provide: options.extraInjectionToken, useExisting: token }] : []),\n ];\n\n const injectFn = createInjectFunction(token);\n\n return [provide, injectFn, token] as const;\n};\n\nconst maybeMergeValues = <T>(defaultValue: T | undefined, valueOverride?: Partial<T>) => {\n if (valueOverride && defaultValue && typeof defaultValue === 'object') {\n return { ...defaultValue, ...valueOverride };\n }\n\n return valueOverride ?? defaultValue;\n};\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const cloneFormGroup = <T extends FormGroup<any>>(formGroup: T) => {\n const cloneLevel = (group: FormGroup, cloneGroup: FormGroup) => {\n Object.keys(group.controls).forEach((key) => {\n const control = group.controls[key]!;\n\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n\n cloneGroup.addControl(key, cloneControl);\n\n cloneLevel(control, cloneControl);\n } else if (control instanceof FormArray) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cloneArrayControl = new FormArray<any>([], control.validator, control.asyncValidator);\n\n control.controls.forEach((control) => {\n if (control instanceof FormGroup) {\n const cloneControl = new FormGroup({}, control.validator, control.asyncValidator);\n const innerClone = cloneLevel(control, cloneControl);\n cloneArrayControl.push(innerClone);\n } else {\n const cloneControlItem = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n cloneArrayControl.push(cloneControlItem);\n }\n });\n\n cloneGroup.addControl(key, cloneArrayControl);\n } else {\n const cloneControl = new FormControl(\n { value: control.value, disabled: control.disabled },\n control.validator,\n control.asyncValidator,\n );\n\n cloneGroup.addControl(key, cloneControl);\n }\n });\n\n return cloneGroup;\n };\n\n const clonedForm = cloneLevel(formGroup, new FormGroup({}));\n clonedForm.setValue(formGroup.value);\n clonedForm.updateValueAndValidity();\n\n return clonedForm as T;\n};\n\nexport const getFormGroupValue = <T extends FormGroup>(formGroup: T) => {\n const value: Record<string, unknown> = {};\n\n Object.keys(formGroup.controls).forEach((key) => {\n const control = formGroup.controls[key]!;\n\n if (control instanceof FormGroup) {\n value[key] = getFormGroupValue(control);\n } else if (control instanceof FormArray) {\n value[key] = control.controls.map((control) => {\n if (control instanceof FormGroup) {\n return getFormGroupValue(control);\n } else {\n return control.value ?? null;\n }\n });\n } else {\n value[key] = control.value ?? null;\n }\n });\n\n return value;\n};\n","import { ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\n\nexport const createRxHostListener = <K extends keyof HTMLElementEventMap>(\n eventName: K,\n options?: EventListenerOptions,\n) => {\n const element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement as EventTarget;\n\n const observable = options\n ? fromEvent<HTMLElementEventMap[K]>(element, eventName, options)\n : fromEvent<HTMLElementEventMap[K]>(element, eventName);\n\n return observable.pipe(takeUntilDestroyed());\n};\n\nexport const applyHostListener = <K extends keyof HTMLElementEventMap>(\n eventName: K,\n handler: (event: HTMLElementEventMap[K]) => void,\n options?: EventListenerOptions,\n) => createRxHostListener(eventName, options).subscribe(handler);\n\nexport const applyHostListeners = (\n listeners: Partial<{\n [K in keyof HTMLElementEventMap]: (event: HTMLElementEventMap[K]) => void;\n }>,\n options?: EventListenerOptions,\n) => {\n for (const eventName in listeners) {\n const handler = listeners[eventName as keyof HTMLElementEventMap];\n\n if (handler) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n applyHostListener(eventName as keyof HTMLElementEventMap, handler as any, options);\n }\n }\n};\n","import { QueryList } from '@angular/core';\nimport { Observable, of, startWith, switchMap } from 'rxjs';\n\nexport class TypedQueryList<T> extends QueryList<T> {\n override get changes(): Observable<TypedQueryList<T>> {\n return super.changes as Observable<TypedQueryList<T>>;\n }\n}\n\nexport function switchQueryListChanges() {\n return function <T extends TypedQueryList<unknown> | null | undefined>(source: Observable<T>) {\n return source.pipe(switchMap((value) => value?.changes.pipe(startWith(value)) ?? of(null))) as Observable<T>;\n };\n}\n","import { InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';\n\n/**\n * Sets the value of an input signal.\n * See issue: https://github.com/angular/angular/issues/54782\n */\nexport const setInputSignal = <T>(input: InputSignal<T> | InputSignalWithTransform<T, unknown>, value: T) => {\n const node = input[SIGNAL];\n\n signalSetFn(node, value);\n};\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const AT_LEAST_ONE_REQUIRED = 'atLeastOneRequired';\n\nexport type ValidateAtLeastOneRequiredConfig = {\n /**\n * Keys of form controls to validate in the supplied form group\n */\n keys: string[];\n\n /**\n * If true, the value `false` will result in a validation error\n * @default false\n */\n checkFalse?: boolean;\n};\n\nexport const ValidateAtLeastOneRequired = (config: ValidateAtLeastOneRequiredConfig): ValidatorFn => {\n return (formGroup: AbstractControl): ValidationErrors | null => {\n const { keys, checkFalse } = config;\n\n if (!formGroup) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n const controlValues = keys.map((key) => formGroup.get(key)?.value);\n\n const areAllFalsy = controlValues.every(\n (value) =>\n value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (checkFalse && value === false),\n );\n\n if (areAllFalsy) {\n return { [AT_LEAST_ONE_REQUIRED]: true };\n }\n\n return null;\n };\n};\n\nexport const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';\n\nexport const IsArrayNotEmpty = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };\n};\n\nexport const IS_EMAIL = 'isEmail';\n\nexport const IsEmail = (control: AbstractControl): ValidationErrors | null => {\n const value = control.value;\n if (!value) {\n return null;\n }\n\n const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$/;\n return regex.test(value) ? null : { [IS_EMAIL]: true };\n};\n\nexport const MUST_MATCH = 'mustMatch';\n\nexport const MustMatch = (controlName: string, matchingControlName: string) => {\n return (formGroup: AbstractControl) => {\n const control = formGroup.get(controlName);\n const matchingControl = formGroup.get(matchingControlName);\n\n if (matchingControl?.errors && !matchingControl.errors[MUST_MATCH]) {\n return null;\n }\n\n if (control?.value !== matchingControl?.value) {\n matchingControl?.setErrors({ [MUST_MATCH]: true });\n return { [MUST_MATCH]: true };\n } else {\n matchingControl?.setErrors(null);\n return null;\n }\n };\n};\n\nexport const Validators = {\n MustMatch,\n IsEmail,\n IsArrayNotEmpty,\n ValidateAtLeastOneRequired,\n} as const;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-var */\n\n/**\n * Stolen from klona to avoid adding a dependency\n * https://github.com/lukeed/klona\n *\n * MIT License\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nconst set = (obj: any, key: any, val: any) => {\n if (typeof val.value === 'object') val.value = clone(val.value);\n if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {\n Object.defineProperty(obj, key, val);\n } else obj[key] = val.value;\n};\n\nexport const clone = <T>(original: T): T => {\n if (typeof original !== 'object') return original;\n\n var _og = original as any;\n\n var i = 0,\n k,\n list,\n tmp: any,\n str = Object.prototype.toString.call(_og);\n\n if (str === '[object Object]') {\n tmp = Object.create(_og.__proto__ || null);\n } else if (str === '[object Array]') {\n tmp = Array(_og.length);\n } else if (str === '[object Set]') {\n tmp = new Set();\n _og.forEach(function (val: any) {\n tmp.add(clone(val));\n });\n } else if (str === '[object Map]') {\n tmp = new Map();\n _og.forEach(function (val: any, key: any) {\n tmp.set(clone(key), clone(val));\n });\n } else if (str === '[object Date]') {\n tmp = new Date(+_og);\n } else if (str === '[object RegExp]') {\n tmp = new RegExp(_og.source, _og.flags);\n } else if (str === '[object DataView]') {\n tmp = new _og.constructor(clone(_og.buffer));\n } else if (str === '[object ArrayBuffer]') {\n tmp = _og.slice(0);\n } else if (str.slice(-6) === 'Array]') {\n // ArrayBuffer.isView(x)\n // ~> `new` bcuz `Buffer.slice` => ref\n tmp = new _og.constructor(_og);\n }\n\n if (tmp) {\n for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {\n set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]!));\n }\n\n for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {\n if (Object.hasOwnProperty.call(tmp, (k = list[i]!)) && tmp[k] === _og[k]) continue;\n set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));\n }\n }\n\n return tmp || _og;\n};\n\n/**\n * Stolen from dequal to avoid adding a dependency\n * https://github.com/lukeed/dequal\n *\n * The MIT License (MIT)\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst has = Object.prototype.hasOwnProperty;\n\nfunction find(iter: any, tar: any, key?: any) {\n for (key of iter.keys()) {\n if (equal(key, tar)) return key;\n }\n}\n\nexport const equal = (foo: any, bar: any) => {\n var ctor: any, len: any, tmp: any;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && equal(foo[len], bar[len]));\n }\n return len === -1;\n }\n\n if (ctor === Set) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len;\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!bar.has(tmp)) return false;\n }\n return true;\n }\n\n if (ctor === Map) {\n if (foo.size !== bar.size) {\n return false;\n }\n for (len of foo) {\n tmp = len[0];\n if (tmp && typeof tmp === 'object') {\n tmp = find(bar, tmp);\n if (!tmp) return false;\n }\n if (!equal(len[1], bar.get(tmp))) {\n return false;\n }\n }\n return true;\n }\n\n if (ctor === ArrayBuffer) {\n foo = new Uint8Array(foo);\n bar = new Uint8Array(bar);\n } else if (ctor === DataView) {\n if ((len = foo.byteLength) === bar.byteLength) {\n while (len-- && foo.getInt8(len) === bar.getInt8(len));\n }\n return len === -1;\n }\n\n if (ArrayBuffer.isView(foo)) {\n if ((len = foo.byteLength) === bar.byteLength) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n while (len-- && foo[len] === bar[len]);\n }\n return len === -1;\n }\n\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !equal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n\n return foo !== foo && bar !== bar;\n};\n","export const hasCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return false;\n }\n\n return document.cookie.split(';').some((c) => {\n return c.trim().startsWith(name + '=');\n });\n};\n\nexport const getCookie = (name: string) => {\n if (typeof document === 'undefined') {\n return null;\n }\n\n // From https://stackoverflow.com/questions/10730362/get-cookie-by-name\n return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];\n};\n\nexport const setCookie = (\n name: string,\n data: string,\n expiresInDays?: number | null,\n domain = getDomain(),\n path = '/',\n sameSite: 'strict' | 'none' | 'lax' = 'lax',\n) => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const sameSiteUpper = sameSite.toUpperCase();\n\n const expires = expiresInDays ?? 30;\n\n let cookieString = `${name}=${data}; path=${path}`;\n\n if (expiresInDays !== null) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n cookieString += `; expires=${date.toUTCString()}`;\n }\n\n cookieString += `; domain=${domain}; SameSite=${sameSiteUpper};`;\n document.cookie = cookieString;\n};\n\nexport const deleteCookie = (name: string, path = '/', domain = getDomain()) => {\n if (hasCookie(name)) {\n document.cookie =\n name +\n '=' +\n (path ? ';path=' + path : '') +\n (domain ? ';domain=' + domain : '') +\n ';expires=Thu, 01 Jan 1970 00:00:01 GMT';\n }\n};\n\nexport const getDomain = () => {\n if (typeof navigator === 'undefined') {\n return null;\n }\n\n const hostname = window.location.hostname;\n\n if (hostname.includes('localhost')) {\n return 'localhost';\n }\n\n const hostIsIP = hostname.match(/^(\\d{1,3}\\.){3}\\d{1,3}$/);\n\n if (hostIsIP) {\n return hostname;\n }\n\n const splitHost = hostname.split('.');\n\n if (splitHost.length > 2) {\n return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;\n }\n\n return hostname;\n};\n","import { BehaviorSubject, Subject, takeUntil, timer } from 'rxjs';\n\nexport class KeyPressManager {\n private readonly _isKeyPressed$ = new BehaviorSubject(false);\n private readonly _keyPressCount$ = new BehaviorSubject(0);\n\n private readonly _stopTimeout$ = new Subject<void>();\n\n constructor(public readonly key: number) {}\n\n isPressed(event: KeyboardEvent) {\n const key = event.keyCode;\n\n if (key === this.key) {\n this._isKeyPressed$.next(this._keyPressCount$.value > 1);\n this._keyPressCount$.next(this._keyPressCount$.value + 1);\n\n this._stopTimeout$.next();\n\n timer(100)\n .pipe(takeUntil(this._stopTimeout$))\n .subscribe(() => this.clear());\n } else {\n this.clear();\n }\n\n return this._isKeyPressed$.value;\n }\n\n clear() {\n this._isKeyPressed$.next(false);\n this._keyPressCount$.next(0);\n this._stopTimeout$.next();\n }\n}\n","import { inject, isSignal, NgZone, signal, Signal, untracked } from '@angular/core';\nimport { MaybeSignal } from './signal-data-utils';\n\nexport type SignalAnimatedNumberOptions = {\n /**\n * The initial value to start animating from.\n * If not provided, the animation will start from 0\n */\n initialValue?: number;\n\n /**\n * Duration of the animation in milliseconds.\n * @default 1000\n */\n duration?: number;\n\n /**\n * Easing function that takes a progress value (0 to 1) and returns an eased value (0 to 1).\n * Options:\n * - `easeLinear()`\n * - `easeIn()`\n * - `easeOut()`\n * - `easeInOut()`\n * - `easeElastic()`\n * - `easeOutBack()`\n * - `easeOutBackStrong()`\n * @default easeOut()\n */\n easing?: (t: number) => number;\n\n /**\n * Function to round the animated value.\n * @default (v: number) => Math.round(v)\n */\n round?: (value: number) => number;\n\n /**\n * Callback invoked when the animation starts.\n */\n onAnimationStart?: () => void;\n\n /**\n * Callback invoked when the animation ends.\n */\n onAnimationEnd?: () => void;\n};\n\nexport type AnimatedNumberSignal = Signal<number> & {\n /**\n * Starts the animation from the current value to the target value.\n * @returns The animated signal for chaining\n */\n play: () => AnimatedNumberSignal;\n\n /**\n * Resets the animation to the initial value and stops any ongoing animation.\n * @returns The animated signal for chaining\n */\n reset: () => AnimatedNumberSignal;\n\n /**\n * Stops the current animation at its current position.\n * @returns The animated signal for chaining\n */\n stop: () => AnimatedNumberSignal;\n};\n\n/**\n * Creates a signal that animates the transition of a numeric signal's value over time.\n */\nexport const signalAnimatedNumber = (\n source: MaybeSignal<number>,\n options: SignalAnimatedNumberOptions = {},\n): AnimatedNumberSignal => {\n const ngZone = inject(NgZone);\n const duration = options.duration ?? 1000;\n const easing = options.easing ?? easeOut;\n const round = options.round ?? ((v: number) => Math.round(v));\n\n const initialValue = options.initialValue ?? 0;\n const animatedValue = signal(initialValue);\n\n let rafId: number | null = null;\n let currentAnimatedValue = initialValue;\n\n const cancelAnimation = () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n };\n\n const readonlySignal = animatedValue.asReadonly() as AnimatedNumberSignal;\n\n const play = () => {\n const targetValue = isSignal(source) ? source() : source;\n\n cancelAnimation();\n\n const startValue = currentAnimatedValue;\n const startTime = performance.now();\n const delta = targetValue - startValue;\n\n // Skip animation if no change\n if (delta === 0) {\n options.onAnimationEnd?.();\n return readonlySignal;\n }\n\n options.onAnimationStart?.();\n\n ngZone.runOutsideAngular(() => {\n const animate = (timestamp: number) => {\n const elapsed = timestamp - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const easedProgress = easing(progress);\n\n const value = startValue + delta * easedProgress;\n currentAnimatedValue = value;\n\n untracked(() => {\n animatedValue.set(round(value));\n });\n\n if (progress < 1) {\n rafId = requestAnimationFrame(animate);\n } else {\n rafId = null;\n\n ngZone.run(() => {\n options.onAnimationEnd?.();\n });\n }\n };\n\n rafId = requestAnimationFrame(animate);\n });\n\n return readonlySignal;\n };\n\n const reset = () => {\n cancelAnimation();\n currentAnimatedValue = initialValue;\n animatedValue.set(initialValue);\n return readonlySignal;\n };\n\n const stop = () => {\n cancelAnimation();\n return readonlySignal;\n };\n\n readonlySignal.play = play;\n readonlySignal.reset = reset;\n readonlySignal.stop = stop;\n\n return readonlySignal;\n};\n\n/* Linear easing function */\nexport const easeLinear = (t: number) => t;\n\n/* Ease in (slow start) */\nexport const easeIn = (t: number) => t * t;\n\n/* Ease out (slow end) */\nexport const easeOut = (t: number) => t * (2 - t);\n\n/* Ease in-out (slow start and end) */\nexport const easeInOut = (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);\n\n/** Elastic easing function (overshoots) */\nexport const easeElastic = (t: number) => {\n const c4 = (2 * Math.PI) / 3;\n return t === 0 ? 0 : t === 1 ? 1 : Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;\n};\n\n/** Back easing function (overshoots slightly then settles) */\nexport const easeOutBack = (t: number) => {\n const c1 = 1.70158;\n const c3 = c1 + 1;\n return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);\n};\n\n/** Back easing function with more overshoot */\nexport const easeOutBackStrong = (t: number) => {\n const c1 = 2.5;\n const c3 = c1 + 1;\n return 1 + c3 * Math.pow(t - 1, 3) + c1 * Math.pow(t - 1, 2);\n};\n","import { Signal, isSignal, linkedSignal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { AbstractControl } from '@angular/forms';\nimport { Observable, debounceTime, distinctUntilChanged, map, merge, of, startWith, switchMap } from 'rxjs';\nimport { equal } from '../utils';\n\nexport type ControlValueSignalOptions = {\n debounceTime?: number;\n\n /**\n * @default false\n */\n debounceFirst?: boolean;\n};\n\nexport const controlValueSignal = <\n TControlInput extends Signal<AbstractControl | null> | AbstractControl,\n TControl extends TControlInput extends Signal<infer TSignalControl> ? TSignalControl : TControlInput,\n>(\n control: TControlInput,\n options?: ControlValueSignalOptions,\n) => {\n type TValue = ReturnType<NonNullable<TControl>['getRawValue']>;\n\n const getRawValueSafe = (ctrl: Signal<AbstractControl | null> | AbstractControl | null): TValue | null => {\n try {\n return isSignal(ctrl) ? (ctrl()?.getRawValue() ?? null) : (ctrl?.getRawValue() ?? null);\n } catch {\n // Ignore errors. This can happen if the passed control is a required input and is not yet initialized.\n return null;\n }\n };\n\n const initialValue = getRawValueSafe(control);\n\n const controlStream = isSignal(control)\n ? toObservable<AbstractControl | null>(control)\n : of<AbstractControl | null>(control);\n\n const controlObs = controlStream.pipe(\n switchMap((ctrl) => {\n if (!ctrl) return of(null);\n\n const vcsObs = options?.debounceTime\n ? ctrl.valueChanges.pipe(debounceTime(options.debounceTime))\n : ctrl.valueChanges;\n\n return vcsObs.pipe(\n startWith(ctrl.getRawValue()),\n map(() => ctrl.getRawValue()),\n );\n }),\n );\n\n const obs: Observable<TValue | null> = !options?.debounceFirst ? merge(of(initialValue), controlObs) : controlObs;\n\n return toSignal(obs.pipe(distinctUntilChanged((a, b) => equal(a, b))), {\n initialValue,\n });\n};\n\n/**\n * The first item in the pair is the previous value and the second item is the current value.\n */\nexport const controlValueSignalWithPrevious = <T extends AbstractControl>(\n control: T,\n options?: ControlValueSignalOptions,\n) => {\n type TValue = ReturnType<NonNullable<T extends Signal<infer TSignalControl> ? TSignalControl : T>['getRawValue']>;\n\n const data = linkedSignal<TValue | null, [TValue | null, TValue | null]>({\n source: controlValueSignal(control, options),\n computation: (curr, prev) => [prev?.source ?? null, curr],\n });\n\n return data.asReadonly();\n};\n","import { coerceElement } from '@angular/cdk/coercion';\nimport {\n DOCUMENT,\n ElementRef,\n QueryList,\n Signal,\n computed,\n inject,\n isDevMode,\n isSignal,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Observable, map, pairwise, startWith } from 'rxjs';\n\nexport type SignalElementBindingComplexType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | Array<ElementRef<HTMLElement> | HTMLElement>\n | null\n | undefined;\n\nexport type SignalElementBindingType =\n | HTMLElement\n | ElementRef<HTMLElement>\n | Observable<SignalElementBindingComplexType>\n | Signal<SignalElementBindingComplexType>\n | QueryList<ElementRef<HTMLElement> | HTMLElement>\n | ElementSignal;\n\nexport type ElementSignal = Signal<{\n currentElements: HTMLElement[];\n previousElements: HTMLElement[];\n}>;\n\nexport type ElementSignalValue = ReturnType<ElementSignal>;\n\nexport const isElementSignal = (el: unknown): el is ElementSignal => {\n if (!isSignal(el)) return false;\n\n const val = el();\n return typeof val === 'object' && val !== null && 'currentElements' in val && 'previousElements' in val;\n};\n\nexport const createDocumentElementSignal = (): ElementSignal => {\n const documentElement = inject(DOCUMENT).documentElement;\n return signal({\n currentElements: [documentElement],\n previousElements: [],\n });\n};\n\nexport const createEmptyElementSignal = (): ElementSignal =>\n signal({\n currentElements: [],\n previousElements: [],\n });\n\nconst areElementArraysEqual = (a: HTMLElement[], b: HTMLElement[]): boolean => {\n if (a === b) return true;\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n};\n\nconst areElementSignalValuesEqual = (a: ElementSignalValue, b: ElementSignalValue): boolean =>\n areElementArraysEqual(a.currentElements, b.currentElements) &&\n areElementArraysEqual(a.previousElements, b.previousElements);\n\nexport const buildElementSignal = (el: SignalElementBindingType | null | undefined): ElementSignal => {\n if (el === null || el === undefined) return createEmptyElementSignal();\n if (isElementSignal(el)) return el;\n\n if (el instanceof HTMLElement || el instanceof ElementRef) {\n const element = coerceElement(el);\n if (!element) return createEmptyElementSignal();\n\n return signal({\n currentElements: [element],\n previousElements: [],\n });\n }\n\n if (isSignal(el)) return createElementSignalFromSignal(el);\n\n return createElementSignalFromObservable(createElementsObservable(el));\n};\n\nconst createElementSignalFromSignal = (input: Signal<SignalElementBindingComplexType>): ElementSignal => {\n return linkedSignal({\n source: input,\n computation: (source, previous) => {\n const currentElements = coerceValueToElementArray(source);\n const previousElements = previous?.value.currentElements ?? [];\n\n return {\n currentElements,\n previousElements,\n };\n },\n equal: areElementSignalValuesEqual,\n });\n};\n\nconst createElementSignalFromObservable = (elements$: Observable<HTMLElement[]>): ElementSignal => {\n return toSignal(\n elements$.pipe(\n startWith([]),\n pairwise(),\n map(([previousElements, currentElements]) => {\n if (isDevMode()) {\n const invalidElement = currentElements.find((el) => el && !(el instanceof HTMLElement));\n if (invalidElement) {\n console.error(\n 'Received an element that is not an HTMLElement. You are probably using viewChild or contentChild on a component without the read option set to ElementRef.',\n invalidElement,\n );\n }\n }\n\n return {\n previousElements,\n currentElements,\n };\n }),\n ),\n {\n initialValue: {\n previousElements: [],\n currentElements: [],\n },\n equal: areElementSignalValuesEqual,\n },\n ) as ElementSignal;\n};\n\nconst coerceValueToElementArray = (value: SignalElementBindingComplexType): HTMLElement[] => {\n if (value === null || value === undefined) return [];\n\n const items = value instanceof QueryList ? value.toArray() : Array.isArray(value) ? value : [value];\n\n const result: HTMLElement[] = [];\n for (const item of items) {\n const el = coerceElement(item);\n if (el) result.push(el);\n }\n return result;\n};\n\nconst createElementsObservable = (\n input: Observable<SignalElementBindingComplexType> | QueryList<ElementRef<HTMLElement> | HTMLElement>,\n): Observable<HTMLElement[]> => {\n if (input instanceof QueryList) {\n return input.changes.pipe(\n startWith(input),\n map(() => coerceValueToElementArray(input)),\n );\n }\n\n return input.pipe(map(coerceValueToElementArray));\n};\n\nexport const firstElementSignal = (el: ElementSignal) =>\n computed(\n () => {\n const { currentElements, previousElements } = el();\n\n if (isDevMode() && currentElements.length > 1) {\n console.warn(\n 'More than one element is bound to the signal. Only the first element will be used.',\n currentElements,\n );\n }\n\n return {\n currentElement: currentElements[0] ?? null,\n previousElement: previousElements[0] ?? null,\n };\n },\n {\n equal: (a, b) => a.currentElement === b.currentElement && a.previousElement === b.previousElement,\n },\n );\n","import { afterNextRender, effect, signal } from '@angular/core';\nimport { nextFrame } from '../animations';\n\nexport const signalIsRendered = () => {\n const isRendered = signal(false);\n\n afterNextRender(() => isRendered.set(true));\n\n return isRendered.asReadonly();\n};\n\nexport const createIsRenderedSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n if (!value()) {\n console.error(\n 'Render signal was not set to true. This can cause unexpected behavior. Make sure to .bind() the render signal at the end of the constructor.',\n );\n }\n });\n\n return {\n state: value,\n bind: () => effect(() => value.set(true)),\n };\n};\n\nexport const createCanAnimateSignal = () => {\n const value = signal(false);\n\n nextFrame(() => {\n value.set(true);\n });\n\n return {\n state: value.asReadonly(),\n };\n};\n","import { DestroyRef, effect, ElementRef, inject, NgZone, signal } from '@angular/core';\nimport { buildElementSignal, firstElementSignal, SignalElementBindingType } from './element';\nimport { signalIsRendered } from './render-utils';\n\nexport const signalElementMutations = (el: SignalElementBindingType, options?: MutationObserverInit) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const firstEl = firstElementSignal(elements);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const elementMutationsSignal = signal<MutationRecord | null>(null);\n\n const observer = new MutationObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n zone.run(() => elementMutationsSignal.set(entry));\n }\n });\n\n effect(() => {\n const els = firstEl();\n\n elementMutationsSignal.set(null);\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n observer.observe(els.currentElement, options);\n }\n });\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return elementMutationsSignal.asReadonly();\n};\n\nexport const signalHostElementMutations = (options?: MutationObserverInit) =>\n signalElementMutations(inject(ElementRef), options);\n","import { computed } from '@angular/core';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from './element';\nimport { signalElementMutations } from './element-mutations';\nimport { signalIsRendered } from './render-utils';\n\nexport const signalElementChildren = (el: SignalElementBindingType) => {\n const elements = buildElementSignal(el);\n const firstEl = firstElementSignal(elements);\n const isRendered = signalIsRendered();\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n\n return computed(\n () => {\n if (!isRendered()) return [];\n\n const els = firstEl();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM may affect the children of the element.\n elementMutations();\n\n if (!els.currentElement) return [];\n\n const children: HTMLElement[] = [];\n\n for (let index = 0; index < els.currentElement.children.length; index++) {\n const element = els.currentElement.children[index];\n\n if (element instanceof HTMLElement) {\n children.push(element);\n }\n }\n\n return children;\n },\n { equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) },\n );\n};\n","import {\n effect,\n EffectRef,\n ElementRef,\n inject,\n Injector,\n RendererStyleFlags2,\n runInInjectionContext,\n Signal,\n untracked,\n} from '@angular/core';\nimport { injectRenderer } from '../providers';\nimport { buildElementSignal, SignalElementBindingType } from './element';\n\nexport type BuildSignalEffectsConfig<T extends Record<string, Signal<unknown>>> = {\n /** The tokens to apply and their signal value */\n tokenMap: T;\n\n /** This function will be invoked for elements that were removed from the signal effects */\n cleanupFn: (el: HTMLElement, tokens: string[]) => void;\n\n /** This function will be invoked for elements that were added to the signal effects or when their signal value changes */\n updateFn: (el: HTMLElement, tokens: string[], conditionResult: unknown) => void;\n};\n\nexport const buildSignalEffects = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n config: BuildSignalEffectsConfig<T>,\n) => {\n const elements = buildElementSignal(el);\n const injector = inject(Injector);\n\n effect(() => {\n const { currentElements, previousElements } = elements();\n\n for (const previousEl of previousElements) {\n if (currentElements.includes(previousEl)) continue;\n\n const tokens = Object.keys(config.tokenMap)\n .map((key) => key.split(' '))\n .flat();\n\n if (!tokens.length) continue;\n\n config.cleanupFn(previousEl, tokens);\n }\n\n for (const currentEl of currentElements) {\n if (previousElements.includes(currentEl)) continue;\n\n for (const [tokens, condition] of Object.entries(config.tokenMap)) {\n untracked(() => {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) return;\n\n config.updateFn(currentEl, tokenArray, condition());\n });\n }\n }\n });\n\n const effects: Record<string, EffectRef> = {};\n\n const has = (tokens: string) => tokens in effects;\n\n const push = (tokens: string, signal: Signal<unknown>) => {\n if (has(tokens)) return;\n\n runInInjectionContext(injector, () => {\n effects[tokens] = effect(() => {\n const { currentElements } = untracked(() => elements());\n const value = signal();\n\n for (const el of currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.updateFn(el, tokenArray, value);\n }\n });\n });\n };\n\n const pushMany = (map: Record<string, Signal<unknown>>) => {\n for (const [tokens, signal] of Object.entries(map)) {\n push(tokens, signal);\n }\n };\n\n const remove = (tokens: string) => {\n effects[tokens]?.destroy();\n\n delete effects[tokens];\n\n for (const el of elements().currentElements) {\n const tokenArray = tokens.split(' ');\n if (!tokenArray.length) continue;\n\n config.cleanupFn(el, tokenArray);\n }\n };\n\n const removeMany = (tokens: string[]) => {\n for (const token of tokens) {\n remove(token);\n }\n };\n\n pushMany(config.tokenMap);\n\n return { remove, removeMany, has, push, pushMany };\n};\n\nexport const signalClasses = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, classMap: T) => {\n const renderer = injectRenderer();\n\n return buildSignalEffects(el, {\n tokenMap: classMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => renderer.removeClass(el, token)),\n updateFn: (el, tokens, condition) => {\n if (!condition) {\n tokens.forEach((token) => renderer.removeClass(el, token));\n } else {\n tokens.forEach((token) => renderer.addClass(el, token));\n }\n },\n });\n};\n\nexport const signalHostClasses = <T extends Record<string, Signal<unknown>>>(classMap: T) =>\n signalClasses(inject(ElementRef), classMap);\n\nconst ALWAYS_TRUE_ATTRIBUTE_KEYS = ['disabled', 'readonly', 'required', 'checked', 'selected', 'hidden', 'inert'];\n\nexport const signalAttributes = <T extends Record<string, Signal<unknown>>>(\n el: SignalElementBindingType,\n attributeMap: T,\n) => {\n const renderer = injectRenderer();\n\n return buildSignalEffects(el, {\n tokenMap: attributeMap,\n cleanupFn: (el, tokens) => tokens.forEach((token) => el.removeAttribute(token)),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (ALWAYS_TRUE_ATTRIBUTE_KEYS.includes(token)) {\n if (condition) {\n renderer.setAttribute(el, token, '');\n } else {\n renderer.removeAttribute(el, token);\n }\n continue;\n }\n\n if (condition === null || condition === undefined) {\n renderer.removeAttribute(el, token);\n } else {\n renderer.setAttribute(el, token, `${condition}`);\n }\n }\n },\n });\n};\n\nexport const signalHostAttributes = <T extends Record<string, Signal<unknown>>>(attributeMap: T) =>\n signalAttributes(inject(ElementRef), attributeMap);\n\nexport const signalStyles = <T extends Record<string, Signal<unknown>>>(el: SignalElementBindingType, styleMap: T) => {\n const renderer = injectRenderer();\n\n return buildSignalEffects(el, {\n tokenMap: styleMap,\n cleanupFn: (el, tokens) =>\n tokens.forEach((token) =>\n renderer.removeStyle(el, token as keyof CSSStyleDeclaration, RendererStyleFlags2.DashCase),\n ),\n updateFn: (el, tokens, condition) => {\n for (const token of tokens) {\n if (condition === null || condition === undefined) {\n renderer.removeStyle(el, token as keyof CSSStyleDeclaration, RendererStyleFlags2.DashCase);\n } else {\n renderer.setStyle(\n el,\n {\n [token]: `${condition}`,\n },\n RendererStyleFlags2.DashCase,\n );\n }\n }\n },\n });\n};\n\nexport const signalHostStyles = <T extends Record<string, Signal<unknown>>>(styleMap: T) =>\n signalStyles(inject(ElementRef), styleMap);\n","import { computed, DestroyRef, effect, ElementRef, inject, isDevMode, NgZone, signal, untracked } from '@angular/core';\nimport { equal } from '../utils';\nimport { buildElementSignal, firstElementSignal, SignalElementBindingType } from './element';\nimport { signalIsRendered } from './render-utils';\n\nexport type LogicalSize = {\n inlineSize: number;\n blockSize: number;\n};\n\nexport type ElementRect = {\n bottom: number;\n height: number;\n left: number;\n right: number;\n top: number;\n width: number;\n x: number;\n y: number;\n};\n\nexport type ElementSize = {\n width: number;\n height: number;\n};\n\nexport const boundingClientRectToElementRect = (rect: DOMRectReadOnly): ElementRect => ({\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width,\n x: rect.x,\n y: rect.y,\n});\n\nexport const createElementDimensions = (el: HTMLElement | null, rect?: DOMRect): NullableElementDimensions => {\n if (!el) {\n return {\n rect: null,\n client: null,\n scroll: null,\n offset: null,\n };\n }\n\n const cachedNormalizedRect = rect ? boundingClientRectToElementRect(rect) : null;\n const rectFn = () =>\n cachedNormalizedRect ? cachedNormalizedRect : boundingClientRectToElementRect(el.getBoundingClientRect());\n\n return {\n rect: rectFn,\n client: { width: el.clientWidth, height: el.clientHeight },\n scroll: { width: el.scrollWidth, height: el.scrollHeight },\n offset: { width: el.offsetWidth, height: el.offsetHeight },\n };\n};\n\nexport type ElementDimensions = {\n rect: () => ElementRect;\n client: ElementSize;\n scroll: ElementSize;\n offset: ElementSize;\n};\n\nexport type NullableElementDimensions = {\n [K in keyof ElementDimensions]: ElementDimensions[K] | null;\n};\n\nexport const signalElementDimensions = (el: SignalElementBindingType) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const firstEl = firstElementSignal(elements);\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n\n const initialValue = () => createElementDimensions(firstEl().currentElement);\n\n const elementDimensionsSignal = signal<NullableElementDimensions>(initialValue());\n\n const observer = new ResizeObserver((e) => {\n if (!isRendered()) return;\n\n const entry = e[0];\n\n if (entry) {\n const target = entry.target as HTMLElement;\n const newDimensions = createElementDimensions(target);\n\n zone.run(() => elementDimensionsSignal.set(newDimensions));\n }\n });\n\n effect(() => {\n const els = firstEl();\n\n untracked(() => {\n elementDimensionsSignal.set(initialValue());\n\n if (els.previousElement) {\n observer.disconnect();\n }\n\n if (els.currentElement) {\n const computedDisplay = getComputedStyle(els.currentElement).display;\n const currentElIsAngularComponent = els.currentElement?.tagName.toLowerCase().includes('-');\n\n if (computedDisplay === 'inline' && isDevMode() && currentElIsAngularComponent) {\n console.error(\n `Element <${els.currentElement?.tagName.toLowerCase()}> is an Angular component and has a display of 'inline'. Inline elements cannot be observed for dimensions. Please change it to 'block' or something else.`,\n );\n }\n\n observer.observe(els.currentElement);\n }\n });\n });\n\n destroyRef.onDestroy(() => observer.disconnect());\n\n return computed(() => elementDimensionsSignal(), {\n equal: (a, b) => equal(a, b),\n });\n};\n\nexport const signalHostElementDimensions = () => signalElementDimensions(inject(ElementRef));\n","import { DestroyRef, ElementRef, NgZone, Signal, effect, inject, signal, untracked } from '@angular/core';\nimport { isElementVisible } from '../utils';\nimport {\n ElementSignalValue,\n SignalElementBindingType,\n buildElementSignal,\n createEmptyElementSignal,\n firstElementSignal,\n} from './element';\nimport { signalIsRendered } from './render-utils';\n\nexport type SignalElementIntersectionOptions = Omit<IntersectionObserverInit, 'root'> & {\n root?: SignalElementBindingType;\n enabled?: Signal<boolean>;\n};\n\nexport type IntersectionObserverEntryWithDetails = IntersectionObserverEntry & {\n isAbove: boolean;\n isBelow: boolean;\n isLeft: boolean;\n isRight: boolean;\n isVisible: boolean;\n};\n\nconst createPositionObject = (entry: IntersectionObserverEntry) => {\n const boundingRect = entry.boundingClientRect;\n const rootBounds = entry.rootBounds;\n\n let isAbove = false;\n let isBelow = false;\n let isLeft = false;\n let isRight = false;\n\n if (rootBounds) {\n isAbove = boundingRect.bottom < rootBounds.top;\n isBelow = boundingRect.top > rootBounds.bottom;\n isLeft = boundingRect.right < rootBounds.left;\n isRight = boundingRect.left > rootBounds.right;\n }\n\n // We cant use entry.isIntersecting to determine actual visibility since we are using a big threshold array to get more intersection events.\n const isVisible = !isAbove && !isBelow && !isLeft && !isRight && entry.intersectionRatio > 0;\n\n return {\n isAbove,\n isBelow,\n isLeft,\n isRight,\n isVisible,\n };\n};\n\nexport const signalElementIntersection = (el: SignalElementBindingType, options?: SignalElementIntersectionOptions) => {\n const destroyRef = inject(DestroyRef);\n const elements = buildElementSignal(el);\n const root = firstElementSignal(options?.root ? buildElementSignal(options?.root) : createEmptyElementSignal());\n const zone = inject(NgZone);\n const isRendered = signalIsRendered();\n const isEnabled = options?.enabled ?? signal(true);\n\n const elementIntersectionSignal = signal<IntersectionObserverEntryWithDetails[]>([]);\n const observer = signal<IntersectionObserver | null>(null);\n\n const currentlyObservedElements = new Set<HTMLElement>();\n\n const updateIntersections = (entries: IntersectionObserverEntry[]) => {\n let currentValues = [...elementIntersectionSignal()];\n\n for (const entry of entries) {\n const existingEntryIndex = currentValues.findIndex((v) => v.target === entry.target);\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n const roundedIntersectionRatio = Math.round(entry.intersectionRatio * 100) / 100;\n\n const intersectionEntry: IntersectionObserverEntryWithDetails = {\n boundingClientRect: entry.boundingClientRect,\n intersectionRatio: roundedIntersectionRatio,\n intersectionRect: entry.intersectionRect,\n isIntersecting: entry.isIntersecting,\n rootBounds: entry.rootBounds,\n target: entry.target,\n time: entry.time,\n ...createPositionObject(entry),\n };\n\n if (existingEntryIndex !== -1) {\n currentValues = [\n ...currentValues.slice(0, existingEntryIndex),\n intersectionEntry,\n ...currentValues.slice(existingEntryIndex + 1),\n ];\n } else {\n currentValues = [...currentValues, intersectionEntry];\n }\n }\n\n zone.run(() => elementIntersectionSignal.set(currentValues));\n };\n\n const updateIntersectionObserver = (rendered: boolean, enabled: boolean, rootEl: HTMLElement | null) => {\n observer()?.disconnect();\n currentlyObservedElements.clear();\n\n if (!rendered || !enabled) {\n observer.set(null);\n return;\n }\n\n const newObserver = new IntersectionObserver((entries) => updateIntersections(entries), {\n ...options,\n root: rootEl,\n });\n\n observer.set(newObserver);\n };\n\n const updateObservedElements = (observer: IntersectionObserver | null, elements: ElementSignalValue) => {\n const rootEl = root().currentElement;\n\n if (!observer) return;\n\n const currIntersectionValue = elementIntersectionSignal();\n const newIntersectionValue: IntersectionObserverEntryWithDetails[] = [];\n\n for (const el of elements.currentElements) {\n if (currentlyObservedElements.has(el)) {\n const existingEntryIndex = currIntersectionValue.findIndex((v) => v.target === el);\n const existingEntry = currIntersectionValue[existingEntryIndex];\n\n if (!existingEntry) {\n console.warn('Could not find existing entry for element. The intersection observer might be broken now.', el);\n continue;\n }\n\n newIntersectionValue.push(existingEntry);\n continue;\n }\n\n const initialElementVisibility = isElementVisible({\n container: rootEl,\n element: el,\n });\n\n if (!initialElementVisibility) {\n console.error('No visibility data found for element.', {\n element: el,\n container: rootEl,\n });\n\n continue;\n }\n\n const intersectionEntry: IntersectionObserverEntry = {\n boundingClientRect: initialElementVisibility.elementRect,\n intersectionRatio: initialElementVisibility.intersectionRatio,\n intersectionRect: initialElementVisibility.elementRect,\n isIntersecting: initialElementVisibility.isIntersecting,\n rootBounds: initialElementVisibility.containerRect,\n target: el,\n time: performance.now(),\n };\n\n newIntersectionValue.push({\n ...intersectionEntry,\n ...createPositionObject(intersectionEntry),\n });\n\n currentlyObservedElements.add(el);\n observer.observe(el);\n }\n\n for (const el of elements.previousElements) {\n if (elements.currentElements.includes(el)) continue;\n\n observer.unobserve(el);\n currentlyObservedElements.delete(el);\n }\n\n elementIntersectionSignal.set(newIntersectionValue);\n };\n\n effect(() => {\n const rootEl = root().currentElement;\n const rendered = isRendered();\n const enabled = isEnabled();\n\n untracked(() => updateIntersectionObserver(rendered, enabled, rootEl));\n });\n\n effect(() => {\n const els = elements();\n const obs = observer();\n\n untracked(() => updateObservedElements(obs, els));\n });\n\n destroyRef.onDestroy(() => observer()?.disconnect());\n\n return elementIntersectionSignal.asReadonly();\n};\n\nexport const signalHostElementIntersection = (options?: SignalElementIntersectionOptions) =>\n signalElementIntersection(inject(ElementRef), options);\n","import { DestroyRef, ElementRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { fromEvent, of, switchMap, tap } from 'rxjs';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from './element';\n\nexport type ElementLastScrollDirectionType = 'up' | 'down' | 'left' | 'right';\n\nexport type ElementLastScrollDirection = {\n type: ElementLastScrollDirectionType;\n time: number;\n};\n\nexport const signalElementLastScrollDirection = (el: SignalElementBindingType) => {\n const elements = buildElementSignal(el);\n const element = firstElementSignal(elements);\n const destroyRef = inject(DestroyRef);\n const lastScrollDirection = signal<ElementLastScrollDirection | null>(null);\n\n let lastScrollTop = 0;\n let lastScrollLeft = 0;\n\n toObservable(element)\n .pipe(\n switchMap(({ currentElement }) => {\n if (!currentElement) {\n lastScrollDirection.set(null);\n lastScrollTop = 0;\n lastScrollLeft = 0;\n\n return of(null);\n }\n\n return fromEvent(currentElement, 'scroll').pipe(\n tap(() => {\n const { scrollTop, scrollLeft } = currentElement;\n const time = Date.now();\n\n if (scrollTop > lastScrollTop) {\n lastScrollDirection.set({ type: 'down', time });\n } else if (scrollTop < lastScrollTop) {\n lastScrollDirection.set({ type: 'up', time });\n } else if (scrollLeft > lastScrollLeft) {\n lastScrollDirection.set({ type: 'right', time });\n } else if (scrollLeft < lastScrollLeft) {\n lastScrollDirection.set({ type: 'left', time });\n }\n\n lastScrollTop = scrollTop;\n lastScrollLeft = scrollLeft;\n }),\n );\n }),\n takeUntilDestroyed(destroyRef),\n )\n .subscribe();\n\n return lastScrollDirection.asReadonly();\n};\n\nexport const signalHostElementLastScrollDirection = () => signalElementLastScrollDirection(inject(ElementRef));\n","import { ElementRef, Signal, computed, effect, inject } from '@angular/core';\nimport { equal } from '../utils';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from './element';\nimport { NullableElementDimensions, signalElementDimensions } from './element-dimensions';\nimport { signalElementMutations } from './element-mutations';\nimport { signalIsRendered } from './render-utils';\n\nexport type SignalElementScrollStateOptions = {\n /** The initial scroll position to scroll to. Once a truthy value get's emitted, all further values will be ignored. */\n initialScrollPosition?: Signal<ScrollToOptions | null>;\n};\n\nexport type ElementScrollState = {\n canScroll: boolean;\n canScrollHorizontally: boolean;\n canScrollVertically: boolean;\n elementDimensions: NullableElementDimensions;\n};\n\nexport const areScrollStatesEqual = (a: ElementScrollState, b: ElementScrollState) => {\n return (\n a.canScroll === b.canScroll &&\n a.canScrollHorizontally === b.canScrollHorizontally &&\n a.canScrollVertically === b.canScrollVertically &&\n equal(a.elementDimensions, b.elementDimensions)\n );\n};\n\nexport const signalElementScrollState = (el: SignalElementBindingType, options?: SignalElementScrollStateOptions) => {\n const elements = buildElementSignal(el);\n const observedEl = firstElementSignal(elements);\n const elementDimensions = signalElementDimensions(elements);\n const elementMutations = signalElementMutations(elements, { childList: true, subtree: true, attributes: true });\n const isRendered = signalIsRendered();\n\n const initialScrollPosition = options?.initialScrollPosition;\n\n if (initialScrollPosition) {\n const ref = effect(() => {\n if (!isRendered()) return;\n\n const scrollPosition = initialScrollPosition();\n const element = observedEl().currentElement;\n\n if (scrollPosition && element) {\n if (scrollPosition.left !== undefined) element.scrollLeft = scrollPosition.left;\n if (scrollPosition.top !== undefined) element.scrollTop = scrollPosition.top;\n ref.destroy();\n }\n });\n }\n\n const notScrollable = (dimensions: NullableElementDimensions) => ({\n canScroll: false,\n canScrollHorizontally: false,\n canScrollVertically: false,\n elementDimensions: dimensions,\n });\n\n return computed<ElementScrollState>(\n () => {\n const element = observedEl().currentElement;\n const dimensions = elementDimensions();\n\n // We are not interested what the mutation is, just that there is one.\n // Changes to the DOM can affect the scroll state of the element.\n elementMutations();\n\n if (!element || !isRendered()) return notScrollable(dimensions);\n\n const { scrollWidth, scrollHeight, clientHeight, clientWidth } = element;\n\n const canScrollHorizontally = scrollWidth > clientWidth;\n const canScrollVertically = scrollHeight > clientHeight;\n\n return {\n canScroll: canScrollHorizontally || canScrollVertically,\n canScrollHorizontally,\n canScrollVertically,\n elementDimensions: dimensions,\n };\n },\n { equal: (a, b) => areScrollStatesEqual(a, b) },\n );\n};\n\nexport const signalHostElementScrollState = () => signalElementScrollState(inject(ElementRef));\n","import { Signal, WritableSignal, afterNextRender, effect, isDevMode, isSignal, signal, untracked } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { map, pairwise } from 'rxjs';\n\nexport const previousSignalValue = <T>(signal: Signal<T>) => {\n const obs = toObservable(signal).pipe(\n pairwise(),\n map(([prev]) => prev),\n );\n\n return toSignal(obs);\n};\n\nexport type SyncSignalOptions = {\n /**\n * If true, the target signal will not be updated with the source signal's value in a sync operation.\n * This should be set to true for signals that need to be initialized first before syncing (eg. required inputs)\n * @default false\n */\n skipSyncRead?: boolean;\n\n /**\n * If true, the first time the effect will be triggered will be skipped.\n * @default false\n */\n skipFirstRun?: boolean;\n};\n\nexport const syncSignal = <T>(from: Signal<T>, to: WritableSignal<T>, options?: SyncSignalOptions) => {\n let isFirstRun = options?.skipSyncRead ? false : true;\n\n if (!options?.skipSyncRead) {\n try {\n // this might throw if the signal is not yet initialized (eg. a required signal input inside the constructor)\n // in that case we just skip the initial sync\n to.set(from());\n } catch {\n isFirstRun = false;\n\n if (isDevMode()) {\n console.warn('Failed to sync signals. The target signal is not yet initialized.', { from, to });\n }\n }\n }\n\n const ref = effect(() => {\n const formVal = from();\n\n if (options?.skipFirstRun && isFirstRun) {\n isFirstRun = false;\n return;\n }\n\n untracked(() => {\n to.set(formVal);\n });\n });\n\n return ref;\n};\n\nexport type MaybeSignal<T> = T | Signal<T>;\n\nexport const maybeSignalValue = <T>(value: MaybeSignal<T>) => {\n if (isSignal(value)) {\n return value();\n }\n\n return value;\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a truthy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillTruthy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(() => {\n const val = source();\n\n if (val) {\n value.set(val);\n ref.destroy();\n }\n });\n\n return value.asReadonly();\n};\n\n/**\n * A computed that will only be reactive until the source signal contains a falsy value.\n * All subsequent changes inside the computation will be ignored.\n */\nexport const computedTillFalsy = <T>(source: Signal<T>) => {\n const value = signal<T | null>(null);\n\n const ref = effect(() => {\n const val = source();\n\n if (!val) {\n value.set(val);\n ref.destroy();\n }\n });\n\n return value.asReadonly();\n};\n\n/**\n * A writeable signal that will be set to the provided value once all inputs are set.\n * During that time, the signal will be set to `null`.\n */\nexport const deferredSignal = <T extends () => unknown>(valueFn: T) => {\n const valueSignal = signal<ReturnType<T> | null>(null);\n\n afterNextRender(() => {\n valueSignal.set(valueFn() as ReturnType<T>);\n });\n\n return valueSignal;\n};\n\nexport const memoizeSignal = <T>(factory: () => Signal<T>) => {\n let cached: Signal<T> | null = null;\n return () => {\n if (!cached) cached = factory();\n return cached;\n };\n};\n","import { computed, DOCUMENT, inject } from '@angular/core';\nimport { BuildMediaQueryOptions, injectBreakpointObserver, injectRenderer } from '../providers';\nimport { createDocumentElementSignal } from './element';\nimport { signalElementDimensions } from './element-dimensions';\nimport { memoizeSignal } from './signal-data-utils';\n\n/** Inject a signal containing a boolean value indicating if the viewport is xs */\nexport const injectIsXs = memoizeSignal(() => injectObserveBreakpoint({ max: 'xs' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is sm */\nexport const injectIsSm = memoizeSignal(() => injectObserveBreakpoint({ min: 'sm', max: 'sm' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is md */\nexport const injectIsMd = memoizeSignal(() => injectObserveBreakpoint({ min: 'md', max: 'md' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is lg */\nexport const injectIsLg = memoizeSignal(() => injectObserveBreakpoint({ min: 'lg', max: 'lg' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is xl */\nexport const injectIsXl = memoizeSignal(() => injectObserveBreakpoint({ min: 'xl', max: 'xl' }));\n\n/** Inject a signal containing a boolean value indicating if the viewport is 2xl */\nexport const injectIs2Xl = memoizeSignal(() => injectObserveBreakpoint({ min: '2xl' }));\n\n/**\n * Inject a boolean value indicating if the viewport is matching the provided options.\n * This value is not reactive. If you want to react to changes, use the {@link injectObserveBreakpoint} function instead.\n */\nexport const injectBreakpointIsMatched = (options: BuildMediaQueryOptions) =>\n injectBreakpointObserver().isBreakpointMatched(options);\n\n/**\n * Inject a boolean value indicating if the media query is matched.\n * This value is not reactive. If you want to react to changes, use the {@link injectObserveMediaQuery} function instead.\n */\nexport const injectMediaQueryIsMatched = (mediaQuery: string) =>\n injectBreakpointObserver().isMediaQueryMatched(mediaQuery);\n\n/**\n * Inject a signal containing a boolean value indicating if the viewport is matching the provided options.\n */\nexport const injectObserveBreakpoint = (options: BuildMediaQueryOptions) =>\n injectBreakpointObserver().observeBreakpoint(options);\n\n/**\n * Inject a signal containing a boolean value indicating if the media query is matched.\n */\nexport const injectObserveMediaQuery = (mediaQuery: string) => injectBreakpointObserver().observeMediaQuery(mediaQuery);\n\n/** Inject a signal containing the current breakpoint. */\nexport const injectCurrentBreakpoint = memoizeSignal(() => {\n const isXs = injectIsXs();\n const isSm = injectIsSm();\n const isMd = injectIsMd();\n const isLg = injectIsLg();\n const isXl = injectIsXl();\n const is2Xl = injectIs2Xl();\n\n return computed(() => {\n switch (true) {\n case is2Xl():\n return '2xl';\n case isXl():\n return 'xl';\n case isLg():\n return 'lg';\n case isMd():\n return 'md';\n case isSm():\n return 'sm';\n case isXs():\n default:\n return 'xs';\n }\n });\n});\n\n/** Inject a signal that indicates if the user is using a portrait display */\nexport const injectIsPortrait = memoizeSignal(() => injectObserveMediaQuery('(orientation: portrait)'));\n\n/** Inject a signal that indicates if the user is using a landscape display */\nexport const injectIsLandscape = memoizeSignal(() => injectObserveMediaQuery('(orientation: landscape)'));\n\n/** Inject a signal containing the current display orientation */\nexport const injectDisplayOrientation = memoizeSignal(() => {\n const isPortrait = injectIsPortrait();\n\n return computed(() => {\n if (isPortrait()) return 'portrait';\n return 'landscape';\n });\n});\n\n/** Inject a signal that indicates if the device has a touch input */\nexport const injectHasTouchInput = memoizeSignal(() => injectObserveMediaQuery('(pointer: coarse)'));\n\n/** Inject a signal that indicates if the device has a fine input (mouse or stylus) */\nexport const injectHasPrecisionInput = memoizeSignal(() => injectObserveMediaQuery('(pointer: fine)'));\n\n/** Inject a signal containing the current device input type */\nexport const injectDeviceInputType = memoizeSignal(() => {\n const isTouch = injectHasTouchInput();\n\n return computed(() => {\n if (isTouch()) return 'touch';\n return 'mouse';\n });\n});\n\n/** Inject a signal containing a boolean value indicating if the user can hover (eg. using a mouse) */\nexport const injectCanHover = memoizeSignal(() => injectObserveMediaQuery('(hover: hover)'));\n\n/** Inject a signal containing the viewport dimensions */\nexport const injectViewportDimensions = memoizeSignal(() => signalElementDimensions(createDocumentElementSignal()));\n\n/** Inject a signal containing the scrollbar dimensions. Dimensions will be 0 if scrollbars overlap the page contents (like on mobile). */\nexport const injectScrollbarDimensions = memoizeSignal(() => {\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n\n const scrollbarRuler = renderer.createElement('div');\n scrollbarRuler.style.width = '100px';\n scrollbarRuler.style.height = '100px';\n scrollbarRuler.style.overflow = 'scroll';\n scrollbarRuler.style.position = 'absolute';\n scrollbarRuler.style.top = '-9999px';\n scrollbarRuler.style.scrollbarWidth = getComputedStyle(document.documentElement).scrollbarWidth;\n renderer.appendChild(document.body, scrollbarRuler);\n\n const scrollContainerDimensions = signalElementDimensions(scrollbarRuler);\n\n return computed(() => {\n const client = scrollContainerDimensions().client;\n if (!client) return null;\n return {\n width: Math.max(0, 100 - client.width),\n height: Math.max(0, 100 - client.height),\n };\n });\n});\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, effect, inject, PLATFORM_ID } from '@angular/core';\nimport { injectRenderer } from '../../providers';\nimport { injectScrollbarDimensions, injectViewportDimensions } from '../media-queries';\n\nlet hasWrittenScrollbarSizes = false;\n\n/**\n * Applies scrollbar size CSS variables to the documentElement (html tag) in pixels.\n * - `--et-sw`: scrollbar width\n * - `--et-sh`: scrollbar height\n */\nexport const writeScrollbarSizeToCssVariables = () => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n if (hasWrittenScrollbarSizes) {\n return;\n }\n hasWrittenScrollbarSizes = true;\n\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const scrollbarDimensions = injectScrollbarDimensions();\n\n effect(() => {\n const dimensions = scrollbarDimensions();\n\n if (!dimensions) return;\n\n renderer.setCssProperties(document.documentElement, {\n '--et-sw': `${dimensions.width}px`,\n '--et-sh': `${dimensions.height}px`,\n });\n });\n};\n\nlet hasWrittenViewportSizes = false;\n\n/**\n * Applies viewport size CSS variables to the documentElement (html tag) in pixels.\n * - `--et-vw`: viewport width excluding scrollbar width\n * - `--et-vh`: viewport height excluding scrollbar height\n */\nexport const writeViewportSizeToCssVariables = () => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n if (hasWrittenViewportSizes) {\n return;\n }\n hasWrittenViewportSizes = true;\n\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const htmlElementDimensions = injectViewportDimensions();\n\n effect(() => {\n const dimensions = htmlElementDimensions().rect?.();\n\n if (!dimensions) return;\n\n renderer.setCssProperties(document.documentElement, {\n '--et-vw': `${dimensions.width}px`,\n '--et-vh': `${dimensions.height}px`,\n });\n });\n};\n","import { DOCUMENT, DestroyRef, Signal, computed, effect, inject, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, fromEvent, map, of, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { injectRenderer } from '../../providers';\nimport { SignalElementBindingType, buildElementSignal, firstElementSignal } from '../element';\nimport { signalElementScrollState } from '../element-scroll-state';\nimport { MaybeSignal, maybeSignalValue } from '../signal-data-utils';\n\nexport type CursorDragScrollDirection = 'horizontal' | 'vertical' | 'both';\n\nexport type CursorDragScrollOptions = {\n /** If true, cursor drag scrolling will be enabled. */\n enabled?: Signal<boolean>;\n\n /** The allowed scroll direction. */\n allowedDirection?: MaybeSignal<CursorDragScrollDirection>;\n};\n\n/** The deadzone in pixels after which the cursor drag scroll will take effect. */\nconst CURSOR_DRAG_SCROLL_DEADZONE = 5;\n\n/** The class that is added to the element when the cursor is being dragged. */\nconst CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';\nconst CURSOR_DRAG_INIT_CLASS = 'et-cursor-drag-scroll--init';\n\n/** A function to apply cursor drag scroll behavior to an element. */\nexport const useCursorDragScroll = (el: SignalElementBindingType, options?: CursorDragScrollOptions) => {\n const elements = buildElementSignal(el);\n const element = firstElementSignal(elements);\n const destroyRef = inject(DestroyRef);\n const { enabled = signal(true), allowedDirection = 'both' } = options ?? {};\n const scrollState = signalElementScrollState(elements);\n const renderer = injectRenderer();\n const isDragging = signal(false);\n const isInitDragging = signal(false);\n const initialDragPosition = signal({ x: 0, y: 0 });\n const initialScrollPosition = signal({ x: 0, y: 0 });\n const dragAmount = signal({ x: 0, y: 0 });\n const document = inject(DOCUMENT);\n\n const canScroll = computed(() => {\n const currentScrollState = scrollState();\n const direction = maybeSignalValue(allowedDirection);\n\n switch (direction) {\n case 'both':\n return currentScrollState.canScrollHorizontally || currentScrollState.canScrollVertically;\n case 'horizontal':\n return currentScrollState.canScrollHorizontally;\n case 'vertical':\n return currentScrollState.canScrollVertically;\n }\n });\n\n // Cleanup if the element the cursor drag scroll is bound to gets changed\n effect(() => {\n const { previousElement } = element();\n\n if (previousElement) {\n renderer.removeStyle(previousElement, 'cursor');\n }\n });\n\n // Conditionally apply styles/classes to the element and the document\n effect(() => {\n const currCanScroll = canScroll();\n const isEnabled = enabled();\n const currIsDragging = isDragging();\n const currIsInitDragging = isInitDragging();\n\n untracked(() => {\n const el = element().currentElement;\n\n if (!el) return;\n\n if (!currCanScroll || !isEnabled) {\n renderer.removeStyles(el, 'cursor', 'scrollSnapType', 'scrollBehavior');\n renderer.removeStyle(document.documentElement, 'cursor');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_INIT_CLASS);\n return;\n }\n\n if (currIsInitDragging) {\n renderer.addClass(el, CURSOR_DRAG_INIT_CLASS);\n }\n\n if (currIsDragging) {\n renderer.addClass(el, CURSOR_DRAG_SCROLLING_CLASS);\n renderer.setStyle(el, {\n cursor: 'grabbing',\n scrollSnapType: 'none',\n scrollBehavior: 'unset',\n });\n\n renderer.setStyle(document.documentElement, {\n cursor: 'grabbing',\n });\n }\n\n if (!currIsInitDragging && !currIsDragging) {\n renderer.setStyle(el, {\n cursor: 'grab',\n });\n renderer.removeStyles(el, 'scrollSnapType', 'scrollBehavior');\n renderer.removeClass(el, CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_INIT_CLASS);\n renderer.removeStyle(document.documentElement, 'cursor');\n }\n });\n });\n\n // Update the element's scroll position when the user drags\n effect(() => {\n const currDragAmount = dragAmount();\n\n untracked(() => {\n const currIsDragging = isDragging();\n const el = element().currentElement;\n const { x: dragX, y: dragY } = currDragAmount;\n const { x: scrollX, y: scrollY } = initialScrollPosition();\n const currAllowedDirection = maybeSignalValue(allowedDirection);\n\n if (!el || !currIsDragging) return;\n\n switch (currAllowedDirection) {\n case 'both':\n el.scroll({\n top: dragY + scrollY,\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'horizontal':\n el.scroll({\n left: dragX + scrollX,\n behavior: 'instant',\n });\n break;\n case 'vertical':\n el.scroll({\n top: dragY + scrollY,\n behavior: 'instant',\n });\n break;\n }\n });\n });\n\n const updateDragging = (e: MouseEvent) => {\n const el = element().currentElement;\n\n if (!el) return;\n\n const dx = (e.clientX - initialDragPosition().x) * -1;\n const dy = (e.clientY - initialDragPosition().y) * -1;\n\n dragAmount.set({ x: dx, y: dy });\n\n if (Math.abs(dx) > CURSOR_DRAG_SCROLL_DEADZONE || Math.abs(dy) > CURSOR_DRAG_SCROLL_DEADZONE) {\n isDragging.set(true);\n }\n };\n\n const updateDraggingEnd = () => {\n isDragging.set(false);\n isInitDragging.set(false);\n initialDragPosition.set({ x: 0, y: 0 });\n initialScrollPosition.set({ x: 0, y: 0 });\n dragAmount.set({ x: 0, y: 0 });\n };\n\n const setupDragging = (e: MouseEvent) => {\n const mouseUp = fromEvent<MouseEvent>(document, 'mouseup');\n const mouseMove = fromEvent<MouseEvent>(document, 'mousemove');\n const el = element().currentElement;\n\n if (!el) return;\n\n mouseMove\n .pipe(\n takeUntilDestroyed(destroyRef),\n takeUntil(mouseUp),\n tap((e) => updateDragging(e)),\n )\n .subscribe();\n\n mouseUp\n .pipe(\n take(1),\n takeUntilDestroyed(destroyRef),\n tap(() => updateDraggingEnd()),\n )\n .subscribe();\n\n initialDragPosition.set({ x: e.clientX, y: e.clientY });\n initialScrollPosition.set({ x: el.scrollLeft, y: el.scrollTop });\n isInitDragging.set(true);\n };\n\n toObservable(element)\n .pipe(\n map((e) => e?.currentElement),\n switchMap((el) => (el ? fromEvent<MouseEvent>(el, 'mousedown') : of(null))),\n filter((e): e is MouseEvent => !!e),\n filter(() => enabled()),\n tap((e) => setupDragging(e)),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n return {\n isDragging: isDragging.asReadonly(),\n currentDragAmount: dragAmount.asReadonly(),\n };\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Injector,\n PLATFORM_ID,\n Signal,\n computed,\n effect,\n inject,\n linkedSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Data, Event, NavigationEnd, NavigationSkipped, Params, Router } from '@angular/router';\nimport { equal } from '../utils';\nimport { memoizeSignal, previousSignalValue } from './signal-data-utils';\n\nexport type RouterState = {\n data: Data;\n pathParams: Params;\n queryParams: Params;\n title: string | null;\n fragment: string | null;\n};\n\nexport const ET_PROPERTY_REMOVED = Symbol('ET_PROPERTY_REMOVED');\n\nexport type InjectUtilConfig = {\n /** The injector to use for the injection. Must be provided if the function is not called from within a injection context. */\n injector?: Injector;\n};\n\nexport type InjectUtilTransformConfig<In, Out> = {\n /**\n * A transform function similar to the `transform` function in Angular input bindings.\n * Can be used to transform the value before it is returned.\n * E.g. transforming `\"true\"` to `true` for a boolean attribute.\n */\n transform?: (value: In) => Out;\n};\n\nexport const transformOrReturn = <In, Out>(src: Signal<In>, config?: InjectUtilTransformConfig<In, Out>) => {\n const transformer = config?.transform;\n\n if (transformer) {\n return computed(() => transformer(src()));\n }\n\n return src as unknown as Signal<Out>;\n};\n\nconst createInitialRoute = () => {\n const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n const router = inject(Router);\n\n if (!isBrowser) {\n return router.url;\n }\n\n return window.location.pathname + window.location.search + window.location.hash;\n};\n\n/** Inject the current router event */\nexport const injectRouterEvent = memoizeSignal(() => {\n const router = inject(Router);\n\n const initialRoute = createInitialRoute();\n\n return toSignal(router.events, {\n initialValue: new NavigationEnd(-1, initialRoute, initialRoute),\n });\n});\n\n/**\n * Signal that indicates whether the router has been initialized.\n * The router is considered initialized once the first NavigationEnd event with an id different than -1 has been emitted.\n */\nexport const injectIsRouterInitialized = memoizeSignal(() => {\n const event = injectRouterEvent();\n\n return computed(() => {\n const e = event();\n\n return (e instanceof NavigationEnd && e.id !== -1) || e instanceof NavigationSkipped;\n });\n});\n\n/**\n * Inject the current url.\n * The url includes query params as well as the fragment. Use `injectRoute` instead if you are not intrusted in those.\n * @example \"/my-page?query=1¶m=true#fragment\"\n */\nexport const injectUrl = memoizeSignal(() => {\n const event = injectRouterEvent();\n\n return linkedSignal<Event | null, string>({\n source: event,\n computation: (curr, prev) => {\n if (curr instanceof NavigationEnd) {\n return curr.urlAfterRedirects;\n } else if (curr instanceof NavigationSkipped) {\n return curr.url;\n } else if (prev?.value) {\n return prev.value;\n }\n\n return createInitialRoute();\n },\n }).asReadonly();\n});\n\n/**\n * Inject the current route\n * @example \"/my-page\"\n */\nexport const injectRoute = memoizeSignal(() => {\n const url = injectUrl();\n\n return computed(() => {\n const fullUrl = url();\n const urlWithoutQueryParams = fullUrl.split('?')[0] ?? '';\n const withoutFragment = urlWithoutQueryParams.split('#')[0] ?? '';\n\n return withoutFragment;\n });\n});\n\nconst createRouterState = (router: Router) => {\n let route = router.routerState.snapshot.root;\n\n while (route.firstChild) {\n route = route.firstChild;\n }\n\n const { data, params, queryParams, title, fragment } = route;\n\n return {\n data,\n pathParams: params,\n queryParams,\n title: title ?? null,\n fragment,\n };\n};\n\n/**\n * Inject the complete router state. This includes the current route data, path params, query params, title and fragment.\n */\nexport const injectRouterState = memoizeSignal(() => {\n const event = injectRouterEvent();\n const router = inject(Router);\n\n const routerState = signal<RouterState>(createRouterState(router));\n\n effect(() => {\n const e = event();\n\n untracked(() => {\n if (e instanceof NavigationEnd && e.id === -1) {\n return;\n } else {\n routerState.set(createRouterState(router));\n }\n });\n });\n\n return computed(() => routerState(), { equal });\n});\n\n/** Inject a signal containing the current route fragment (the part after the # inside the url if present) */\nexport const injectFragment = <T = string | null>(\n config?: InjectUtilConfig & InjectUtilTransformConfig<string | null, T>,\n) => {\n const routerState = injectRouterState();\n const fragment = computed(() => routerState().fragment);\n\n return transformOrReturn(fragment, config);\n};\n\n/** Inject all currently available query parameters as a signal */\nexport const injectQueryParams = () => {\n const routerState = injectRouterState();\n\n const queryParams = computed(() => routerState().queryParams);\n\n return queryParams;\n};\n\n/** Inject all currently available route data as a signal */\nexport const injectRouteData = () => {\n const routerState = injectRouterState();\n\n const data = computed(() => routerState().data);\n\n return data;\n};\n\n/** Inject the current route title as a signal */\nexport const injectRouteTitle = <T = string | null>(config?: InjectUtilTransformConfig<string | null, T>) => {\n const routerState = injectRouterState();\n const title = computed(() => routerState().title);\n\n return transformOrReturn(title, config);\n};\n\n/** Inject all currently available path parameters as a signal */\nexport const injectPathParams = () => {\n const routerState = injectRouterState();\n\n const pathParams = computed(() => routerState().pathParams);\n\n return pathParams;\n};\n\nexport type InjectQueryParamConfig<T> = InjectUtilTransformConfig<string | null, T> & {\n /**\n * If true, the initial value will be read from the browser's url.\n * Note that this will not work with arrays or complex objects.\n */\n requireSync?: boolean;\n};\n\nconst getQueryParamFromUrl = (key: string): string | null => {\n if (typeof window === 'undefined') return null;\n\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get(key);\n};\n\n/** Inject a specific query parameter as a signal */\nexport const injectQueryParam = <T = string | null>(key: string, config?: InjectQueryParamConfig<T>) => {\n const queryParams = injectQueryParams();\n const src = computed(() => queryParams()[key] ?? (config?.requireSync ? getQueryParamFromUrl(key) : null)) as Signal<\n string | null\n >;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific route data item as a signal */\nexport const injectRouteDataItem = <T = unknown>(key: string, config?: InjectUtilTransformConfig<unknown, T>) => {\n const data = injectRouteData();\n const src = computed(() => data()[key] ?? null) as Signal<T>;\n\n return transformOrReturn(src, config);\n};\n\n/** Inject a specific path parameter as a signal */\nexport const injectPathParam = <T = string | null>(\n key: string,\n config?: InjectUtilTransformConfig<string | null, T>,\n) => {\n const pathParams = injectPathParams();\n const src = computed(() => pathParams()[key] ?? null) as Signal<string | null>;\n\n return transformOrReturn(src, config);\n};\n\n/**\n * Inject query params that changed during navigation. Unchanged query params will be ignored.\n * Removed query params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectQueryParamChanges = memoizeSignal(() => {\n const queryParams = injectQueryParams();\n const prevQueryParams = previousSignalValue(queryParams);\n\n return computed(() => {\n const current = queryParams();\n const previous = prevQueryParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n});\n\n/**\n * Inject path params that changed during navigation. Unchanged path params will be ignored.\n * Removed path params will be represented by the symbol `ET_PROPERTY_REMOVED`.\n */\nexport const injectPathParamChanges = memoizeSignal(() => {\n const pathParams = injectPathParams();\n const prevPathParams = previousSignalValue(pathParams);\n\n return computed(() => {\n const current = pathParams();\n const previous = prevPathParams() ?? {};\n\n const changes: Record<string, unknown> = {};\n\n const allKeys = new Set<keyof typeof previous & keyof typeof current>([\n ...Object.keys(previous),\n ...Object.keys(current),\n ]);\n\n for (const key of allKeys) {\n if (!equal(previous[key], current[key])) {\n const val = current[key] === undefined ? ET_PROPERTY_REMOVED : current[key];\n\n changes[key] = val;\n }\n }\n\n return changes;\n });\n});\n","import { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, inject, PLATFORM_ID } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { combineLatest, debounceTime, pairwise } from 'rxjs';\nimport { injectRoute, injectRouterState } from '../router';\n\nexport type SetupScrollRestorationConfig = {\n /**\n * The scrollable container.\n * @default document.documentElement\n */\n scrollElement?: HTMLElement;\n /**\n * A list of query params that should trigger a scroll to top.\n * @default []\n * @example ['page'] // will scroll to top when the page query param changes\n */\n queryParamTriggerList?: string[];\n /**\n * Config for fragment scrolling.\n */\n fragment?: {\n /**\n * Enable fragment scrolling (scroll to element with id)\n * @default false\n */\n enabled?: boolean;\n /**\n * Whether to use smooth scrolling or not.\n * @default false\n */\n smooth?: boolean;\n };\n};\n\nexport const ET_DISABLE_SCROLL_TOP = Symbol('ET_DISABLE_SCROLL_TOP');\nexport const ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE = Symbol('ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE');\nexport const ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE = Symbol('ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE');\n\nexport type RouterDisableScrollTopConfig = {\n /**\n * Whether to disable scroll to top ONLY when navigating back to this route.\n * @default false\n */\n asReturnRoute?: boolean;\n\n /**\n * Whether to disable scroll to top when a path param changes.\n * @default false\n */\n onPathParamChange?: boolean;\n};\n\nexport const routerDisableScrollTop = (config: RouterDisableScrollTopConfig = {}) => {\n return {\n ...(!config.asReturnRoute ? { [ET_DISABLE_SCROLL_TOP]: true } : { [ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE]: true }),\n ...(config.onPathParamChange ? { [ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE]: true } : {}),\n };\n};\n\nexport const setupScrollRestoration = (config: SetupScrollRestorationConfig = {}) => {\n if (!isPlatformBrowser(inject(PLATFORM_ID))) {\n return;\n }\n\n const state = injectRouterState();\n const route = injectRoute();\n const document = inject(DOCUMENT);\n\n combineLatest([toObservable(state).pipe(pairwise()), toObservable(route).pipe(pairwise())])\n .pipe(debounceTime(1))\n .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {\n const sameUrlNavigation = prevRoute === currRoute;\n const didFragmentChange = prevState.fragment !== currState.fragment;\n\n if (sameUrlNavigation) {\n const allQueryParams = [\n ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),\n ];\n\n const changedQueryParams = allQueryParams.filter(\n (key) => currState.queryParams[key] !== prevState.queryParams[key],\n );\n\n if (!config.queryParamTriggerList?.length && !didFragmentChange) {\n return;\n }\n\n const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));\n const caseFragment = didFragmentChange && config.fragment?.enabled;\n\n if (caseQueryParams) {\n (config.scrollElement ?? document.documentElement).scrollTop = 0;\n } else if (caseFragment) {\n const fragmentElement = document.getElementById(currState.fragment ?? '');\n\n if (fragmentElement) {\n fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });\n }\n }\n } else {\n const viaReturnRoute =\n currState.data[ET_DISABLE_SCROLL_TOP_AS_RETURN_ROUTE] && prevState.data[ET_DISABLE_SCROLL_TOP];\n const explicitly = currState.data[ET_DISABLE_SCROLL_TOP];\n const pathParamsChange = currState.data[ET_DISABLE_SCROLL_TOP_ON_PATH_PARAM_CHANGE];\n\n if (viaReturnRoute || explicitly || pathParamsChange) {\n return;\n }\n\n const el = config.scrollElement ?? document.documentElement;\n el.scrollTop = 0;\n }\n });\n};\n","import { injectQueryParam } from '../signals';\n\nexport const DISABLE_LOGGER_PARAM = 'et-logger-quiet';\n\nexport type CreateLoggerConfig = {\n scope: string;\n feature: string;\n};\n\nexport const createLogger = (config: CreateLoggerConfig) => {\n const { scope, feature } = config;\n const disableLogging = injectQueryParam(DISABLE_LOGGER_PARAM);\n\n const writeLog = (...args: unknown[]) => {\n if (disableLogging()) {\n return;\n }\n console.log(...args);\n };\n\n return {\n log: (...args: unknown[]) => writeLog(`\\x1B[32;40;24m[${scope} ${feature}]\\x1B[m`, ...args),\n warn: (...args: unknown[]) => writeLog(`\\x1B[93;40;24m[${scope} ${feature}]\\x1B[m`, ...args),\n error: (...args: unknown[]) => writeLog(`\\x1B[31;40;24m[${scope} ${feature}]\\x1B[m`, ...args),\n };\n};\n","export const clamp = (value: number, min = 0, max = 100) => {\n return Math.max(min, Math.min(max, value));\n};\n\nexport const round = (value: number, precision = 0) => {\n const multiplier = Math.pow(10, precision);\n return Math.round(value * multiplier) / multiplier;\n};\n","export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\nexport const isArray = (value: unknown): value is unknown[] => {\n return Array.isArray(value);\n};\n\nexport const getObjectProperty = (obj: Record<string, unknown>, prop: string) => {\n const hasDotNotation = prop.includes('.');\n const hasBracketNotation = prop.includes('[');\n\n if (!hasDotNotation && !hasBracketNotation) return obj[prop];\n\n const props = prop.split('.');\n\n let value: unknown = obj;\n\n for (const prop of props) {\n if (!isObject(value)) return undefined;\n\n if (prop.includes('[')) {\n const [key, index] = prop.split('[').map((part) => part.replace(']', '')) as [string, string];\n const arr = value[key];\n if (!Array.isArray(arr)) return undefined;\n\n value = arr[+index];\n } else {\n value = value[prop];\n }\n }\n\n return value;\n};\n","import { clone } from './comparison';\n\nexport const RUNTIME_ERROR_NO_DATA = '__ET_NO_DATA__';\n\nexport class RuntimeError<T extends number> extends Error {\n constructor(\n public code: T,\n message: null | false | string,\n public devOnly = false,\n public data: unknown = RUNTIME_ERROR_NO_DATA,\n ) {\n super(formatRuntimeError<T>(code, message, devOnly));\n\n if (data !== RUNTIME_ERROR_NO_DATA) {\n try {\n const _data = clone(data);\n\n setTimeout(() => {\n console.error(_data);\n }, 1);\n } catch {\n setTimeout(() => {\n console.error(data);\n }, 1);\n }\n }\n }\n}\n\nexport function formatRuntimeError<T extends number>(\n code: T,\n message: null | false | string,\n devOnly: boolean,\n): string {\n // prefix code with zeros if it's less than 100\n const codeWithZeros = code < 10 ? `00${code}` : code < 100 ? `0${code}` : code;\n\n const fullCode = `ET${codeWithZeros}`;\n const devOnlyText = devOnly ? ' [DEV ONLY] ' : '';\n return `${devOnlyText}${fullCode}${message ? ': ' + message : ''}`;\n}\n","import { clamp } from './math';\n\n/**\n * Checks if an element or the viewport can scroll in a given direction.\n * @param element The element to check. If null/undefined, checks if the viewport can scroll.\n * @param direction The direction to check. If not provided, checks both directions.\n * @returns true if the element or viewport can scroll in the given direction.\n */\nexport const elementCanScroll = (element?: HTMLElement | null, direction?: 'x' | 'y') => {\n const el = element || document.documentElement;\n const { scrollHeight, clientHeight, scrollWidth, clientWidth } = el;\n\n if (direction === 'x') {\n return scrollWidth > clientWidth;\n } else if (direction === 'y') {\n return scrollHeight > clientHeight;\n }\n\n return scrollHeight > clientHeight || scrollWidth > clientWidth;\n};\n\nconst createViewportRect = (): DOMRect =>\n ({\n left: 0,\n top: 0,\n right: window.innerWidth,\n bottom: window.innerHeight,\n width: window.innerWidth,\n height: window.innerHeight,\n x: 0,\n y: 0,\n toJSON: () => ({}),\n }) as DOMRect;\n\nexport type IsElementVisibleOptions = {\n /**\n * The element to check if it is visible inside a container.\n */\n element?: HTMLElement | null;\n\n /**\n * The container to check if the element is visible inside.\n * If null or undefined, uses the viewport as the container.\n * @default null (viewport)\n */\n container?: HTMLElement | null;\n\n /**\n * The container's rect to check if the element is visible inside. Can be supplied to reduce the amount of DOM reads.\n * Only used when container is provided and not null.\n * @default container.getBoundingClientRect()\n */\n containerRect?: DOMRect | null;\n\n /**\n * The element's rect. Can be supplied to reduce the amount of DOM reads.\n * @default element.getBoundingClientRect()\n */\n elementRect?: DOMRect | null;\n};\n\nexport type CurrentElementVisibility = {\n /**\n * Whether the element is visible in the inline direction.\n */\n inline: boolean;\n\n /**\n * Whether the element is visible in the block direction.\n */\n block: boolean;\n\n /**\n * The percentage of the element that is visible in the inline direction.\n */\n inlineIntersection: number;\n\n /**\n * The percentage of the element that is visible in the block direction.\n */\n blockIntersection: number;\n\n /**\n * Whether the element is intersecting the container.\n */\n isIntersecting: boolean;\n\n /**\n * The ratio of the element that is intersecting the container.\n */\n intersectionRatio: number;\n\n /**\n * The element that is being checked for visibility.\n */\n element: HTMLElement;\n\n /**\n * The container's rect used for the calculation.\n */\n containerRect: DOMRect;\n\n /**\n * The element's rect used for the calculation.\n */\n elementRect: DOMRect;\n};\n\nexport const isElementVisible = (options: IsElementVisibleOptions): CurrentElementVisibility | null => {\n const { container, element } = options;\n\n if (!element) {\n return null;\n }\n\n const elementRect = options.elementRect || element.getBoundingClientRect();\n const containerRect = container ? options.containerRect || container.getBoundingClientRect() : createViewportRect();\n\n const canScroll = elementCanScroll(container);\n\n if (!canScroll) {\n return {\n inline: true,\n block: true,\n blockIntersection: 1,\n inlineIntersection: 1,\n intersectionRatio: 1,\n isIntersecting: true,\n element,\n containerRect,\n elementRect,\n };\n }\n\n const elLeft = elementRect.left;\n const elTop = elementRect.top;\n const elWidth = elementRect.width || 1;\n const elHeight = elementRect.height || 1;\n const elRight = elLeft + elWidth;\n const elBottom = elTop + elHeight;\n\n const conLeft = containerRect.left;\n const conTop = containerRect.top;\n const conRight = conLeft + containerRect.width;\n const conBottom = conTop + containerRect.height;\n\n const isElementInlineVisible = elLeft >= conLeft && elRight <= conRight;\n const isElementBlockVisible = elTop >= conTop && elBottom <= conBottom;\n\n const inlineIntersection = Math.min(elRight, conRight) - Math.max(elLeft, conLeft);\n const blockIntersection = Math.min(elBottom, conBottom) - Math.max(elTop, conTop);\n\n const inlineIntersectionPercentage = clamp(inlineIntersection / elWidth, 0, 1);\n const blockIntersectionPercentage = clamp(blockIntersection / elHeight, 0, 1);\n\n return {\n inline: isElementInlineVisible,\n block: isElementBlockVisible,\n inlineIntersection: inlineIntersectionPercentage,\n blockIntersection: blockIntersectionPercentage,\n isIntersecting: isElementInlineVisible && isElementBlockVisible,\n element,\n containerRect,\n elementRect,\n\n // Round the intersection ratio to the nearest 0.01 to avoid floating point errors and system scaling issues.\n intersectionRatio: Math.round(Math.min(inlineIntersectionPercentage, blockIntersectionPercentage) * 100) / 100,\n };\n};\n\nexport const getElementScrollCoordinates = (options: ScrollToElementOptions): ScrollToOptions => {\n const {\n container,\n element,\n direction,\n behavior = 'smooth',\n origin = 'nearest',\n scrollBlockMargin = 0,\n scrollInlineMargin = 0,\n } = options;\n\n if (!element || !container || !elementCanScroll(container)) {\n return {\n behavior,\n left: undefined,\n top: undefined,\n };\n }\n\n const elementRect = element.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n\n const { scrollLeft, scrollTop } = container;\n const elWidth = elementRect.width;\n const elHeight = elementRect.height;\n const elLeft = elementRect.left;\n const elTop = elementRect.top;\n const elRight = elementRect.right;\n const elBottom = elementRect.bottom;\n\n const conWidth = containerRect.width;\n const conHeight = containerRect.height;\n const conLeft = containerRect.left;\n const conTop = containerRect.top;\n const conRight = containerRect.right;\n const conBottom = containerRect.bottom;\n\n const shouldScrollLeft = direction === 'inline' || direction === 'both' || !direction;\n const shouldScrollTop = direction === 'block' || direction === 'both' || !direction;\n\n let scrollLeftTo = scrollLeft;\n let scrollTopTo = scrollTop;\n\n const relativeTop = elTop - conTop;\n const relativeLeft = elLeft - conLeft;\n\n const calculateScrollToStart = () => {\n scrollLeftTo = scrollLeft + relativeLeft - scrollInlineMargin;\n scrollTopTo = scrollTop + relativeTop - scrollBlockMargin;\n };\n\n const calculateScrollToEnd = () => {\n scrollLeftTo = scrollLeft + relativeLeft - conWidth + elWidth + scrollInlineMargin;\n scrollTopTo = scrollTop + relativeTop - conHeight + elHeight + scrollBlockMargin;\n };\n\n const calculateScrollToCenter = () => {\n scrollLeftTo = scrollLeft + relativeLeft - conWidth / 2 + elWidth / 2;\n scrollTopTo = scrollTop + relativeTop - conHeight / 2 + elHeight / 2;\n };\n\n const calculateScrollToNearest = () => {\n const isAbove = elBottom < conTop;\n const isPartialAbove = elTop < conTop && elBottom > conTop;\n const isBelow = elTop > conBottom;\n const isPartialBelow = elTop < conBottom && elBottom > conBottom;\n\n const isLeft = elRight < conLeft;\n const isPartialLeft = elLeft < conLeft && elRight > conLeft;\n const isRight = elLeft > conRight;\n const isPartialRight = elLeft < conRight && elRight > conRight;\n\n if (isAbove || isPartialAbove || isLeft || isPartialLeft) {\n calculateScrollToStart();\n } else if (isBelow || isPartialBelow || isRight || isPartialRight) {\n calculateScrollToEnd();\n }\n };\n\n switch (origin) {\n case 'start':\n calculateScrollToStart();\n break;\n case 'end':\n calculateScrollToEnd();\n break;\n case 'center':\n calculateScrollToCenter();\n break;\n case 'nearest':\n calculateScrollToNearest();\n break;\n }\n\n return {\n behavior,\n left: shouldScrollLeft ? scrollLeftTo : undefined,\n top: shouldScrollTop ? scrollTopTo : undefined,\n };\n};\n\nexport type ScrollToElementOptions = {\n /**\n * The element to scroll to.\n */\n element?: HTMLElement | null;\n\n /**\n * The scroll container to scroll to the element in.\n * Must be provided - cannot scroll the viewport programmatically with this function.\n */\n container?: HTMLElement | null;\n\n /**\n * The direction to scroll in.\n * @default 'both'\n */\n direction?: 'inline' | 'block' | 'both';\n\n /**\n * The origin of the element to scroll to.\n * @default 'nearest'\n */\n origin?: 'start' | 'end' | 'center' | 'nearest';\n\n /**\n * The scroll behavior.\n * @default 'smooth'\n */\n behavior?: ScrollBehavior;\n\n /**\n * The scroll inline-margin\n * @default 0\n */\n scrollInlineMargin?: number;\n\n /**\n * The scroll block-margin\n * @default 0\n */\n scrollBlockMargin?: number;\n};\n\nexport const scrollToElement = (options: ScrollToElementOptions) => {\n options.container?.scrollTo(getElementScrollCoordinates(options));\n};\n","import { ApplicationRef, inject, signal } from '@angular/core';\nimport { createRootProvider } from '../utils';\n\nexport const [, injectAngularRootElement] = createRootProvider(() => {\n const appRef = inject(ApplicationRef);\n\n const rootElement = signal<HTMLElement | null>(null);\n\n const poll = () => {\n const appComponents = appRef.components;\n if (appComponents.length > 0) {\n rootElement.set(appComponents[0]?.location.nativeElement);\n } else {\n setTimeout(poll, 25);\n }\n };\n\n setTimeout(poll);\n\n return rootElement;\n});\n","import { computed, DOCUMENT, ElementRef, inject, signal } from '@angular/core';\nimport { createProvider } from '../utils';\n\nexport const [provideBoundaryElement, injectBoundaryElement, BOUNDARY_ELEMENT_TOKEN] = createProvider(\n () => {\n const hostElement = inject<ElementRef<HTMLElement>>(ElementRef, { optional: true });\n const document = inject(DOCUMENT);\n\n const override = signal<HTMLElement | null>(null);\n\n const value = computed(() => override() ?? hostElement?.nativeElement ?? document.documentElement);\n\n return {\n value,\n override,\n };\n },\n { name: 'Boundary Element' },\n);\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith } from 'rxjs';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\n\nexport type Vec2 = [number, number];\n\nexport type ViewportConfig = {\n breakpoints: {\n xs: Vec2;\n sm: Vec2;\n md: Vec2;\n lg: Vec2;\n xl: Vec2;\n '2xl': Vec2;\n };\n};\n\nexport type Breakpoint = keyof ViewportConfig['breakpoints'];\n\n/**\n * Default viewport config based on Tailwind CSS.\n * @see https://tailwindcss.com/docs/screens\n */\nexport const DEFAULT_VIEWPORT_CONFIG: ViewportConfig = {\n breakpoints: {\n xs: [0, 639],\n sm: [640, 767],\n md: [768, 1023],\n lg: [1024, 1279],\n xl: [1280, 1535],\n '2xl': [1536, Infinity],\n },\n};\n\nexport const [provideViewportConfig, injectViewportConfig] = createStaticRootProvider<ViewportConfig>(\n DEFAULT_VIEWPORT_CONFIG,\n {\n name: 'Viewport Config',\n },\n);\n\nexport type BuildMediaQueryOptions = {\n min?: number | Breakpoint;\n max?: number | Breakpoint;\n};\n\nexport const [provideBreakpointObserver, injectBreakpointObserver] = createRootProvider(\n () => {\n const breakpointObserver = inject(BreakpointObserver);\n const viewportConfig = injectViewportConfig();\n\n const isMediaQueryMatched = (mediaQuery: string) => breakpointObserver.isMatched(mediaQuery);\n\n const observeMediaQuery = (mediaQuery: string) => {\n return toSignal(\n breakpointObserver.observe(mediaQuery).pipe(\n map((x) => x.matches),\n startWith(isMediaQueryMatched(mediaQuery)),\n ),\n { requireSync: true },\n );\n };\n\n const observeBreakpoint = (options: BuildMediaQueryOptions) => observeMediaQuery(buildMediaQueryString(options));\n\n const isBreakpointMatched = (options: BuildMediaQueryOptions) =>\n isMediaQueryMatched(buildMediaQueryString(options));\n\n const getBreakpointSize = (type: Breakpoint, option: 'min' | 'max') => {\n const index = option === 'min' ? 0 : 1;\n const size = viewportConfig.breakpoints[type][index];\n\n if (size === Infinity || size === 0) {\n return size;\n }\n\n if (option === 'min') {\n return size;\n }\n\n // Due to scaling, the actual size of the viewport may be a decimal number.\n // Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px\n // and thus not matching any of the default breakpoints.\n return size + 0.9;\n };\n\n const buildMediaQueryString = (options: BuildMediaQueryOptions) => {\n if (!options.min && !options.max) {\n throw new Error('At least one of min or max must be defined');\n }\n\n const mediaQueryParts: string[] = [];\n\n if (options.min) {\n if (typeof options.min === 'number') {\n mediaQueryParts.push(`(min-width: ${options.min}px)`);\n } else {\n mediaQueryParts.push(`(min-width: ${getBreakpointSize(options.min, 'min')}px)`);\n }\n }\n\n if (options.min && options.max) {\n mediaQueryParts.push('and');\n }\n\n if (options.max) {\n if (typeof options.max === 'number') {\n mediaQueryParts.push(`(max-width: ${options.max}px)`);\n } else {\n mediaQueryParts.push(`(max-width: ${getBreakpointSize(options.max, 'max')}px)`);\n }\n }\n\n return mediaQueryParts.join(' ');\n };\n\n return {\n observeBreakpoint,\n isBreakpointMatched,\n getBreakpointSize,\n buildMediaQueryString,\n observeMediaQuery,\n isMediaQueryMatched,\n };\n },\n { name: 'Breakpoint Observer' },\n);\n","import { DestroyRef, DOCUMENT, inject, signal } from '@angular/core';\nimport { createRootProvider } from '../utils/angular/di';\n\nexport const [provideFocusVisibleTracker, injectFocusVisibleTracker, FOCUS_VISIBLE_TRACKER_TOKEN] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const destroyRef = inject(DestroyRef);\n\n const isFocusVisible = signal(false);\n let hadKeyboardEvent = false;\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Tab' || e.key === 'Shift' || e.key === 'Meta' || e.key === 'Alt' || e.key === 'Control') {\n hadKeyboardEvent = true;\n queueMicrotask(() => isFocusVisible.set(true));\n }\n };\n\n const onPointerDown = () => {\n hadKeyboardEvent = false;\n queueMicrotask(() => isFocusVisible.set(false));\n };\n\n const onFocus = () => {\n if (hadKeyboardEvent) {\n queueMicrotask(() => isFocusVisible.set(true));\n }\n };\n\n const onBlur = () => {\n queueMicrotask(() => isFocusVisible.set(false));\n };\n\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('focus', onFocus, true);\n document.addEventListener('blur', onBlur, true);\n\n destroyRef.onDestroy(() => {\n document.removeEventListener('keydown', onKeyDown, true);\n document.removeEventListener('mousedown', onPointerDown, true);\n document.removeEventListener('pointerdown', onPointerDown, true);\n document.removeEventListener('touchstart', onPointerDown, true);\n document.removeEventListener('focus', onFocus, true);\n document.removeEventListener('blur', onBlur, true);\n });\n\n return {\n isFocusVisible: isFocusVisible.asReadonly(),\n };\n },\n { name: 'Focus Visible Tracker' },\n);\n","import { signal } from '@angular/core';\nimport { createRootProvider } from '../utils';\n\nexport const [provideLocale, injectLocale] = createRootProvider(\n () => {\n const currentLocale = signal('en');\n\n return {\n currentLocale,\n };\n },\n {\n name: 'Locale',\n },\n);\n","import { inject, RendererFactory2, RendererStyleFlags2 } from '@angular/core';\nimport { createRootProvider } from '../utils';\n\nexport const [provideRenderer, injectRenderer] = createRootProvider(\n () => {\n const rendererFactory = inject(RendererFactory2);\n const renderer = rendererFactory.createRenderer(null, null);\n\n const addClass = (element: HTMLElement, ...classes: string[]) => {\n classes.forEach((cls) => renderer.addClass(element, cls));\n };\n\n const removeClass = (element: HTMLElement, ...classes: string[]) => {\n classes.forEach((cls) => renderer.removeClass(element, cls));\n };\n\n const toggleClass = (element: HTMLElement, className: string, force?: boolean) => {\n const shouldAdd = force ?? !element.classList.contains(className);\n if (shouldAdd) {\n renderer.addClass(element, className);\n } else {\n renderer.removeClass(element, className);\n }\n return shouldAdd;\n };\n\n const setStyle = (\n element: HTMLElement,\n style: Partial<Record<keyof CSSStyleDeclaration, string | null>>,\n flags?: RendererStyleFlags2,\n ) => {\n Object.entries(style).forEach(([key, value]) => {\n if (!Number.isNaN(Number(key))) return;\n if (value !== null && value !== undefined) {\n renderer.setStyle(element, key, value, flags);\n } else {\n renderer.removeStyle(element, key, flags);\n }\n });\n };\n\n const removeStyle = (\n element: HTMLElement,\n style: keyof CSSStyleDeclaration | string,\n flags?: RendererStyleFlags2,\n ) => {\n if (!Number.isNaN(Number(style))) return;\n renderer.removeStyle(element, style as string, flags);\n };\n\n const removeStyles = (element: HTMLElement, ...styles: (keyof CSSStyleDeclaration | string)[]) => {\n styles.forEach((style) => removeStyle(element, style));\n };\n\n const setCssProperty = (element: HTMLElement, name: string, value: string | null) => {\n if (value !== null && value !== undefined) {\n renderer.setStyle(element, name, value, RendererStyleFlags2.DashCase);\n } else {\n renderer.removeStyle(element, name, RendererStyleFlags2.DashCase);\n }\n };\n\n const setCssProperties = (element: HTMLElement, properties: Record<string, string | null>) => {\n Object.entries(properties).forEach(([name, value]) => {\n setCssProperty(element, name, value);\n });\n };\n\n const setAttribute = (element: HTMLElement, name: string, value: string | null, namespace?: string | null) => {\n if (value !== null && value !== undefined) {\n renderer.setAttribute(element, name, value, namespace);\n } else {\n renderer.removeAttribute(element, name, namespace);\n }\n };\n\n const removeAttribute = (element: HTMLElement, ...names: string[]) => {\n names.forEach((name) => renderer.removeAttribute(element, name));\n };\n\n const setProperty = (element: HTMLElement, name: string, value: unknown) => {\n renderer.setProperty(element, name, value);\n };\n\n const setProperties = (element: HTMLElement, properties: Record<string, unknown>) => {\n Object.entries(properties).forEach(([name, value]) => {\n renderer.setProperty(element, name, value);\n });\n };\n\n const createElement = <K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n namespace?: string | null,\n ): HTMLElementTagNameMap[K] => {\n return renderer.createElement(tagName, namespace);\n };\n\n const createText = (value: string): Text => {\n return renderer.createText(value);\n };\n\n const createComment = (value: string): Comment => {\n return renderer.createComment(value);\n };\n\n const appendChild = (parent: HTMLElement, newChild: Node) => {\n renderer.appendChild(parent, newChild);\n };\n\n const insertBefore = (parent: Node, newChild: Node, refChild: Node | null) => {\n renderer.insertBefore(parent, newChild, refChild);\n };\n\n const removeChild = (parent: Node, oldChild: Node, isHostElement?: boolean) => {\n renderer.removeChild(parent, oldChild, isHostElement);\n };\n\n const selectRootElement = (selectorOrNode: string | HTMLElement, preserveContent?: boolean): HTMLElement => {\n return renderer.selectRootElement(selectorOrNode, preserveContent);\n };\n\n const parentNode = (node: Node): Node | null => {\n return renderer.parentNode(node);\n };\n\n const nextSibling = (node: Node): Node | null => {\n return renderer.nextSibling(node);\n };\n\n const setValue = (node: Node, value: string) => {\n renderer.setValue(node, value);\n };\n\n const listen = (\n target: HTMLElement | Window | Document | 'window' | 'document' | 'body',\n eventName: string,\n callback: (event: Event) => boolean | void,\n ): (() => void) => {\n return renderer.listen(target, eventName, callback);\n };\n\n const destroyNode = (node: Node) => {\n if (renderer.destroyNode) {\n renderer.destroyNode(node);\n }\n };\n\n const replaceChild = (parent: Node, newChild: Node, oldChild: Node) => {\n renderer.insertBefore(parent, newChild, oldChild);\n renderer.removeChild(parent, oldChild);\n };\n\n const empty = (element: HTMLElement) => {\n while (element.firstChild) {\n renderer.removeChild(element, element.firstChild);\n }\n };\n\n const setTextContent = (element: HTMLElement, text: string) => {\n renderer.setProperty(element, 'textContent', text);\n };\n\n const setInnerHTML = (element: HTMLElement, html: string) => {\n renderer.setProperty(element, 'innerHTML', html);\n };\n\n const setAttributes = (\n element: HTMLElement,\n attributes: Record<string, string | null>,\n namespace?: string | null,\n ) => {\n Object.entries(attributes).forEach(([name, value]) => {\n setAttribute(element, name, value, namespace);\n });\n };\n\n const setDataAttributes = (element: HTMLElement, data: Record<string, string | null>) => {\n Object.entries(data).forEach(([key, value]) => {\n setAttribute(element, `data-${key}`, value);\n });\n };\n\n return {\n addClass,\n removeClass,\n toggleClass,\n setStyle,\n removeStyle,\n removeStyles,\n setAttribute,\n removeAttribute,\n setProperty,\n setProperties,\n createElement,\n createText,\n createComment,\n appendChild,\n insertBefore,\n removeChild,\n selectRootElement,\n parentNode,\n nextSibling,\n setValue,\n listen,\n destroyNode,\n\n replaceChild,\n empty,\n setTextContent,\n setInnerHTML,\n setAttributes,\n setDataAttributes,\n setCssProperty,\n setCssProperties,\n\n renderer,\n };\n },\n { name: 'Angular Renderer' },\n);\n\nexport type AngularRenderer = NonNullable<ReturnType<typeof injectRenderer>>;\n","import { Observable } from 'rxjs';\n\nexport const nextFrame = (cb: () => void) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n};\n\nexport const fromNextFrame = () => {\n return new Observable<void>((observer) => {\n nextFrame(() => {\n observer.next();\n observer.complete();\n });\n });\n};\n\nexport const forceReflow = (element: HTMLElement = document.body) => {\n return element.offsetHeight;\n};\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, inject, InjectionToken, model } from '@angular/core';\nimport { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, of, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { injectRenderer } from '../providers';\nimport { ANIMATABLE_TOKEN, AnimatableDirective, AnimationEndEvent } from './animatable.directive';\nimport { forceReflow, fromNextFrame } from './animation-utils';\n\nexport const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken<AnimatedLifecycleDirective>(\n 'ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN',\n);\n\nconst ANIMATION_CLASSES = {\n enterFrom: 'et-animation-enter-from',\n enterActive: 'et-animation-enter-active',\n enterTo: 'et-animation-enter-to',\n enterDone: 'et-animation-enter-done',\n enterInterrupt: 'et-animation-enter-interrupt',\n leaveFrom: 'et-animation-leave-from',\n leaveActive: 'et-animation-leave-active',\n leaveTo: 'et-animation-leave-to',\n leaveDone: 'et-animation-leave-done',\n leaveInterrupt: 'et-animation-leave-interrupt',\n} as const;\n\nconst FORCE_INVISIBLE_CLASS = 'et-force-invisible';\n\nexport type AnimatedLifecycleState = 'entering' | 'entered' | 'leaving' | 'left' | 'init';\n\n@Directive({\n selector: '[etAnimatedLifecycle]',\n exportAs: 'etAnimatedLifecycle',\n providers: [\n {\n provide: ANIMATED_LIFECYCLE_TOKEN,\n useExisting: AnimatedLifecycleDirective,\n },\n ],\n hostDirectives: [AnimatableDirective],\n host: {\n class: FORCE_INVISIBLE_CLASS,\n },\n})\nexport class AnimatedLifecycleDirective implements AfterViewInit {\n private destroyRef = inject(DestroyRef);\n private cancelCurrentAnimation$ = new Subject<void>();\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private animatable = inject(ANIMATABLE_TOKEN);\n private renderer = injectRenderer();\n private element = this.elementRef.nativeElement;\n\n private isConstructed = false;\n private transitionIdCounter = 0;\n\n private forcedAtFrameId: number | null = null;\n private currentFrameId = 0;\n\n state$ = new BehaviorSubject<AnimatedLifecycleState>('init');\n\n stateChange = outputFromObservable(this.state$);\n\n skipNextEnter = model(false);\n\n constructor() {\n this.state$\n .pipe(\n tap((state) => {\n if (state !== 'init') {\n this.removeClass(FORCE_INVISIBLE_CLASS);\n } else {\n this.addClass(FORCE_INVISIBLE_CLASS);\n }\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n\n this.trackFrameId();\n }\n\n private trackFrameId() {\n const updateFrameId = () => {\n this.currentFrameId = requestAnimationFrame(updateFrameId);\n };\n this.currentFrameId = requestAnimationFrame(updateFrameId);\n\n this.destroyRef.onDestroy(() => {\n cancelAnimationFrame(this.currentFrameId);\n });\n }\n\n ngAfterViewInit(): void {\n this.isConstructed = true;\n }\n\n enter() {\n const currentState = this.state$.value;\n\n if (currentState === 'entering') return;\n\n if ((currentState === 'init' && !this.isConstructed) || this.skipNextEnter()) {\n this.updateState('entered');\n this.skipNextEnter.set(false);\n this.addClass(ANIMATION_CLASSES.enterDone);\n this.forcedAtFrameId = null;\n return;\n }\n\n const isInterrupting = currentState === 'leaving';\n\n this.updateState('entering');\n this.removeClass(ANIMATION_CLASSES.leaveDone);\n\n const previousCancel$ = this.cancelCurrentAnimation$;\n this.cancelCurrentAnimation$ = new Subject<void>();\n\n const transitionId = `enter-${++this.transitionIdCounter}`;\n this.animatable.setTransitionId(transitionId);\n\n const skipAnimation = this.forcedAtFrameId !== null && this.forcedAtFrameId === this.currentFrameId;\n this.forcedAtFrameId = null;\n\n if (skipAnimation) {\n this.removeClasses(\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n ANIMATION_CLASSES.leaveInterrupt,\n );\n this.updateState('entered');\n this.addClass(ANIMATION_CLASSES.enterDone);\n previousCancel$.next();\n previousCancel$.complete();\n return;\n }\n\n if (isInterrupting) {\n this.handleInterruptedTransition({\n removeClasses: [\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n ANIMATION_CLASSES.leaveInterrupt,\n ],\n addClasses: [ANIMATION_CLASSES.enterActive, ANIMATION_CLASSES.enterTo, ANIMATION_CLASSES.enterInterrupt],\n expectedState: 'entering',\n transitionId,\n onComplete: () => {\n this.updateState('entered');\n this.removeClasses(ANIMATION_CLASSES.enterActive, ANIMATION_CLASSES.enterTo);\n this.addClass(ANIMATION_CLASSES.enterDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n } else {\n this.handleNormalTransition({\n fromClass: ANIMATION_CLASSES.enterFrom,\n activeClass: ANIMATION_CLASSES.enterActive,\n toClass: ANIMATION_CLASSES.enterTo,\n expectedState: 'entering',\n transitionId,\n onComplete: () => {\n this.updateState('entered');\n this.removeClasses(ANIMATION_CLASSES.enterActive, ANIMATION_CLASSES.enterTo);\n this.addClass(ANIMATION_CLASSES.enterDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n }\n\n previousCancel$.next();\n previousCancel$.complete();\n }\n\n leave() {\n const currentState = this.state$.value;\n\n if (currentState === 'leaving') return;\n\n if (currentState === 'init') {\n this.updateState('left');\n this.addClass(ANIMATION_CLASSES.leaveDone);\n this.forcedAtFrameId = null;\n return;\n }\n\n const isInterrupting = currentState === 'entering';\n\n this.updateState('leaving');\n this.removeClass(ANIMATION_CLASSES.enterDone);\n\n const previousCancel$ = this.cancelCurrentAnimation$;\n this.cancelCurrentAnimation$ = new Subject<void>();\n\n const transitionId = `leave-${++this.transitionIdCounter}`;\n this.animatable.setTransitionId(transitionId);\n\n const skipAnimation = this.forcedAtFrameId !== null && this.forcedAtFrameId === this.currentFrameId;\n this.forcedAtFrameId = null;\n\n if (skipAnimation) {\n this.removeClasses(\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.enterInterrupt,\n );\n this.updateState('left');\n this.addClass(ANIMATION_CLASSES.leaveDone);\n previousCancel$.next();\n previousCancel$.complete();\n return;\n }\n\n if (isInterrupting) {\n this.handleInterruptedTransition({\n removeClasses: [\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.enterInterrupt,\n ],\n addClasses: [ANIMATION_CLASSES.leaveActive, ANIMATION_CLASSES.leaveTo, ANIMATION_CLASSES.leaveInterrupt],\n expectedState: 'leaving',\n transitionId,\n onComplete: () => {\n this.updateState('left');\n this.removeClasses(ANIMATION_CLASSES.leaveActive, ANIMATION_CLASSES.leaveTo);\n this.addClass(ANIMATION_CLASSES.leaveDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n } else {\n this.handleNormalTransition({\n fromClass: ANIMATION_CLASSES.leaveFrom,\n activeClass: ANIMATION_CLASSES.leaveActive,\n toClass: ANIMATION_CLASSES.leaveTo,\n expectedState: 'leaving',\n transitionId,\n onComplete: () => {\n this.updateState('left');\n this.removeClasses(ANIMATION_CLASSES.leaveActive, ANIMATION_CLASSES.leaveTo);\n this.addClass(ANIMATION_CLASSES.leaveDone);\n },\n cancelSignal: this.cancelCurrentAnimation$,\n });\n }\n\n previousCancel$.next();\n previousCancel$.complete();\n }\n\n forceEnteredState() {\n this.cancelCurrentAnimation$.next();\n\n this.updateState('entered');\n this.removeClasses(\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n );\n this.addClass(ANIMATION_CLASSES.enterDone);\n this.forcedAtFrameId = this.currentFrameId;\n }\n\n forceLeftState() {\n this.cancelCurrentAnimation$.next();\n\n this.updateState('left');\n this.removeClasses(\n ANIMATION_CLASSES.enterFrom,\n ANIMATION_CLASSES.enterActive,\n ANIMATION_CLASSES.enterTo,\n ANIMATION_CLASSES.leaveFrom,\n ANIMATION_CLASSES.leaveActive,\n ANIMATION_CLASSES.leaveTo,\n );\n this.addClass(ANIMATION_CLASSES.leaveDone);\n this.forcedAtFrameId = this.currentFrameId;\n }\n\n private handleNormalTransition(config: {\n fromClass: string;\n activeClass: string;\n toClass: string;\n expectedState: 'entering' | 'leaving';\n transitionId: string;\n onComplete: () => void;\n cancelSignal: Subject<void>;\n }) {\n const { fromClass, activeClass, toClass, expectedState, transitionId, onComplete, cancelSignal } = config;\n\n this.removeClasses(ANIMATION_CLASSES.enterInterrupt, ANIMATION_CLASSES.leaveInterrupt);\n\n this.addClass(fromClass);\n forceReflow();\n this.addClass(activeClass);\n\n fromNextFrame()\n .pipe(\n tap(() => {\n if (this.state$.value === expectedState) {\n this.removeClass(fromClass);\n this.addClass(toClass);\n }\n }),\n switchMap(() => this.animatable.animationEnd$),\n filter((e) => this.state$.value === expectedState && !e.cancelled && e.transitionId === transitionId),\n tap(onComplete),\n take(1),\n takeUntil(cancelSignal),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private handleInterruptedTransition(config: {\n removeClasses: string[];\n addClasses: string[];\n expectedState: 'entering' | 'leaving';\n transitionId: string;\n onComplete: () => void;\n cancelSignal: Subject<void>;\n }) {\n const { removeClasses, addClasses, expectedState, transitionId, onComplete, cancelSignal } = config;\n\n this.removeClasses(...removeClasses);\n addClasses.forEach((cls) => this.addClass(cls));\n\n fromNextFrame()\n .pipe(\n switchMap(() => this.animatable.isAnimating$),\n take(1),\n switchMap((isAnimating) => {\n if (!isAnimating && this.state$.value === expectedState) {\n return of({ cancelled: false, transitionId } as AnimationEndEvent);\n }\n\n return this.animatable.animationEnd$.pipe(\n switchMap((e) => {\n if (e.transitionId === transitionId) {\n return of(e);\n }\n\n return this.animatable.isAnimating$.pipe(\n take(1),\n switchMap((stillAnimating) => {\n if (!stillAnimating && this.state$.value === expectedState) {\n return of({ cancelled: false, transitionId } as AnimationEndEvent);\n }\n\n return of(null);\n }),\n );\n }),\n filter((e): e is AnimationEndEvent => e !== null && e.transitionId === transitionId),\n );\n }),\n filter((e) => this.state$.value === expectedState && !e.cancelled),\n tap(() => onComplete()),\n take(1),\n takeUntil(cancelSignal),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private addClass(className: string) {\n this.renderer.addClass(this.element, className);\n }\n\n private removeClass(className: string) {\n this.renderer.removeClass(this.element, className);\n }\n\n private removeClasses(...classNames: string[]) {\n this.renderer.removeClass(this.element, ...classNames);\n }\n\n private updateState(newState: AnimatedLifecycleState) {\n this.state$.next(newState);\n }\n}\n","import { Directive, InjectionToken, TemplateRef, ViewContainerRef, inject, input } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { filter, of, switchMap, tap } from 'rxjs';\nimport { ANIMATED_LIFECYCLE_TOKEN } from './animated-lifecycle.directive';\n\nexport const ANIMATED_IF_TOKEN = new InjectionToken<AnimatedIfDirective>('ANIMATED_IF_TOKEN');\n\n@Directive({\n selector: '[etAnimatedIf]',\n providers: [\n {\n provide: ANIMATED_IF_TOKEN,\n useExisting: AnimatedIfDirective,\n },\n ],\n})\nexport class AnimatedIfDirective {\n private templateRef = inject(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n private animatedLifecycle = inject(ANIMATED_LIFECYCLE_TOKEN);\n\n private hasView = false;\n\n ifValue = input<unknown>(null, { alias: 'etAnimatedIf' });\n\n constructor() {\n toObservable(this.ifValue)\n .pipe(\n switchMap((value) => {\n if (value) {\n if (!this.hasView) {\n this.viewContainerRef.createEmbeddedView(this.templateRef);\n this.hasView = true;\n }\n\n this.animatedLifecycle.enter();\n\n return of(null);\n }\n\n if (!this.hasView) {\n return of(null);\n }\n\n this.animatedLifecycle.leave();\n\n return this.animatedLifecycle.state$.pipe(\n filter((state) => state === 'left'),\n tap(() => {\n this.viewContainerRef.clear();\n this.hasView = false;\n }),\n );\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n Injector,\n NgZone,\n Signal,\n StaticProvider,\n ViewContainerRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n isDevMode,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport {\n MiddlewareData,\n OffsetOptions,\n Padding,\n Placement,\n arrow,\n autoUpdate,\n computePosition,\n flip,\n hide,\n limitShift,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\nimport { Subject, Subscription, filter, take, tap } from 'rxjs';\nimport { injectBoundaryElement } from '../providers';\nimport { signalElementDimensions } from '../signals';\nimport { ProvideThemeDirective } from '../theming';\nimport { AnimatedLifecycleDirective } from './animated-lifecycle.directive';\nimport { nextFrame } from './animation-utils';\n\nexport type AnimatedOverlayComponentBase = {\n animatedLifecycle: Signal<AnimatedLifecycleDirective | undefined>;\n setThemeFromProvider: (provider: ProvideThemeDirective) => void;\n};\n\nexport type AnimatedOverlayMountConfig<T> = {\n component: ComponentType<T>;\n providers?: StaticProvider[];\n data?: Partial<T>;\n themeProvider?: ProvideThemeDirective | null;\n};\n\nexport type AnimatedOverlayState = 'init' | 'mounting' | 'mounted' | 'unmounting' | 'unmounted';\n\n@Directive({\n selector: '[etAnimatedOverlay]',\n exportAs: 'etAnimatedOverlay',\n host: {\n class: 'et-animated-overlay',\n },\n standalone: true,\n})\nexport class AnimatedOverlayDirective<T extends AnimatedOverlayComponentBase> {\n private overlayService = inject(Overlay);\n private injector = inject(Injector);\n private viewContainerRef = inject(ViewContainerRef);\n private zone = inject(NgZone);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private rootBoundary = injectBoundaryElement({ optional: true });\n private destroyRef = inject(DestroyRef);\n\n private floatingElCleanupFn: (() => void) | null = null;\n private unmountSubscription: Subscription | null = null;\n\n placement = input<Placement | undefined>('bottom');\n fallbackPlacements = input<Placement[]>();\n offset = input<OffsetOptions | null>(null);\n arrowPadding = input<Padding | null>(4);\n viewportPadding = input<Padding | null>(8);\n autoResize = input(false, { transform: booleanAttribute });\n shift = input(true, { transform: booleanAttribute });\n autoHide = input(false, { transform: booleanAttribute });\n autoCloseIfReferenceHidden = input(false, { transform: booleanAttribute });\n referenceElement = input(this.elementRef.nativeElement);\n mirrorWidth = input(false, { transform: booleanAttribute });\n\n portal: ComponentPortal<T> | null = null;\n overlayRef: OverlayRef | null = null;\n componentRef: ComponentRef<T> | null = null;\n\n beforeOpened$ = new Subject<void>();\n afterOpened$ = new Subject<void>();\n beforeClosed$ = new Subject<void>();\n afterClosed$ = new Subject<void>();\n\n state = signal<AnimatedOverlayState>('init');\n\n isMounted = computed(() => this.state() === 'mounted');\n isMounting = computed(() => this.state() === 'mounting');\n isUnmounted = computed(() => this.state() === 'unmounted');\n isUnmounting = computed(() => this.state() === 'unmounting');\n\n canMount = computed(() => !this.isMounted() && !this.isMounting());\n canUnmount = computed(() => (this.isMounted() || this.isMounting()) && !this.isUnmounting());\n\n isHidden = signal(false);\n\n isMounted$ = toObservable(this.isMounted);\n isMounting$ = toObservable(this.isMounting);\n isUnmounted$ = toObservable(this.isUnmounted);\n isUnmounting$ = toObservable(this.isUnmounting);\n\n canMount$ = toObservable(this.canMount);\n canUnmount$ = toObservable(this.canUnmount);\n\n isHidden$ = toObservable(this.isHidden);\n\n referenceElementDimensions = signalElementDimensions(\n computed(() => (this.mirrorWidth() ? this.referenceElement() : null)),\n );\n\n constructor() {\n effect(() => {\n const dimensions = this.referenceElementDimensions();\n\n if (!dimensions || !this.mirrorWidth()) return;\n\n this.overlayRef?.updateSize({\n width: this.elementRef.nativeElement.offsetWidth,\n });\n });\n\n this.destroyRef.onDestroy(() => this.destroy());\n }\n\n mount(config: AnimatedOverlayMountConfig<T>): T | undefined {\n if (this.isUnmounting()) {\n if (!this.componentRef) {\n if (isDevMode()) {\n console.warn('AnimatedOverlayDirective: Cannot remount. Component ref is not available.');\n }\n return;\n }\n\n this.unmountSubscription?.unsubscribe();\n this.unmountSubscription = null;\n\n this.applyComponentData(config.data);\n this.applyThemeProvider(config.themeProvider);\n\n const lifecycle = this.componentRef.instance.animatedLifecycle();\n if (lifecycle) {\n this.state.set('mounting');\n this.beforeOpened$.next();\n\n lifecycle.enter();\n\n lifecycle.state$\n .pipe(\n filter((s) => s === 'entered'),\n tap(() => {\n if (this.state() === 'mounting') {\n this.state.set('mounted');\n this.afterOpened$.next();\n }\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n return this.componentRef.instance;\n }\n\n if (!this.canMount()) {\n if (isDevMode()) {\n console.warn('AnimatedOverlayDirective: Cannot mount. Component is already mounted or currently mounting.');\n }\n return;\n }\n\n const { component, providers, data, themeProvider } = config;\n\n this.state.set('mounting');\n this.beforeOpened$.next();\n\n const injector = Injector.create({\n parent: this.injector,\n providers: providers ?? [],\n });\n\n this.overlayRef = this.overlayService.create();\n this.portal = new ComponentPortal(component, this.viewContainerRef, injector);\n this.componentRef = this.overlayRef.attach(this.portal);\n\n this.applyComponentData(data);\n this.applyThemeProvider(themeProvider);\n this.updateOverlaySize();\n this.setupFloatingUI();\n\n return this.componentRef.instance;\n }\n\n unmount() {\n if (!this.isMounted() && !this.isMounting() && !this.isUnmounting()) {\n if (isDevMode()) {\n console.warn(`AnimatedOverlayDirective: Cannot unmount. Component is currently ${this.state()}`);\n }\n return;\n }\n\n if (this.isUnmounting()) {\n return;\n }\n\n if (!this.componentRef) {\n if (isDevMode()) {\n console.warn('AnimatedOverlayDirective: Cannot unmount. Component ref is not available.');\n }\n return;\n }\n\n this.state.set('unmounting');\n this.beforeClosed$.next();\n\n if (this.isHidden()) {\n this.destroy();\n return;\n }\n\n const lifecycle = this.componentRef.instance.animatedLifecycle();\n\n if (!lifecycle) {\n this.destroy();\n return;\n }\n\n lifecycle.leave();\n this.unmountSubscription = lifecycle.state$\n .pipe(\n filter((s) => s === 'left'),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.unmountSubscription = null;\n this.destroy();\n });\n }\n\n private applyComponentData(data?: Partial<T>) {\n if (!this.componentRef || !data) return;\n\n Object.assign(this.componentRef.instance, data);\n this.componentRef.changeDetectorRef.markForCheck();\n }\n\n private applyThemeProvider(themeProvider?: ProvideThemeDirective | null) {\n if (!this.componentRef || !themeProvider) return;\n\n this.componentRef.instance.setThemeFromProvider(themeProvider);\n }\n\n private updateOverlaySize() {\n if (!this.overlayRef || !this.mirrorWidth()) return;\n\n this.overlayRef.updateSize({\n width: this.elementRef.nativeElement.offsetWidth,\n });\n }\n\n private setupFloatingUI() {\n this.zone.runOutsideAngular(() => {\n if (!this.componentRef) return;\n\n const floatingEl = this.componentRef.location.nativeElement as HTMLElement;\n const floatingElArrow = this.getFloatingArrow();\n\n floatingEl.classList.add('et-floating-element');\n\n const refEl = this.referenceElement();\n const boundary = this.rootBoundary?.value();\n\n this.floatingElCleanupFn = autoUpdate(refEl, floatingEl, () => {\n this.updateFloatingPosition(floatingEl, refEl, boundary, floatingElArrow);\n });\n\n this.waitForRenderAndAnimate();\n });\n }\n\n private getFloatingArrow(): HTMLElement | null {\n if (!this.componentRef) return null;\n\n return this.componentRef.location.nativeElement.querySelector('[et-floating-arrow]') as HTMLElement | null;\n }\n\n private updateFloatingPosition(\n floatingEl: HTMLElement,\n refEl: HTMLElement,\n boundary: HTMLElement | undefined,\n floatingElArrow: HTMLElement | null,\n ) {\n if (!this.componentRef) return;\n\n const middleware = this.buildFloatingMiddleware(floatingEl, boundary, floatingElArrow);\n\n computePosition(refEl, floatingEl, {\n placement: this.placement(),\n middleware,\n }).then(({ x, y, placement, middlewareData }) => {\n this.applyFloatingStyles(floatingEl, x, y, placement);\n this.applyArrowStyles(floatingEl, middlewareData, floatingElArrow);\n this.handleReferenceHidden(floatingEl, middlewareData);\n });\n }\n\n private buildFloatingMiddleware(\n floatingEl: HTMLElement,\n boundary: HTMLElement | undefined,\n floatingElArrow: HTMLElement | null,\n ) {\n const middleware = [];\n\n const offsetValue = this.offset();\n if (offsetValue !== null) {\n middleware.push(offset(offsetValue));\n }\n\n middleware.push(\n flip({\n fallbackPlacements: this.fallbackPlacements() ?? undefined,\n fallbackAxisSideDirection: 'start',\n boundary,\n }),\n );\n\n if (this.autoResize()) {\n middleware.push(\n size({\n padding: this.viewportPadding() ?? undefined,\n apply({ availableHeight, availableWidth }) {\n floatingEl.style.setProperty('--et-floating-max-width', `${availableWidth}px`);\n floatingEl.style.setProperty('--et-floating-max-height', `${availableHeight}px`);\n },\n }),\n );\n }\n\n if (this.shift()) {\n middleware.push(\n shift({\n limiter: limitShift(),\n padding: this.viewportPadding() ?? undefined,\n boundary,\n }),\n );\n }\n\n if (floatingElArrow) {\n middleware.push(arrow({ element: floatingElArrow, padding: this.arrowPadding() ?? undefined }));\n }\n\n if (this.autoHide() || this.autoCloseIfReferenceHidden()) {\n middleware.push(hide({ strategy: 'referenceHidden', boundary }));\n }\n\n return middleware;\n }\n\n private applyFloatingStyles(floatingEl: HTMLElement, x: number, y: number, placement: Placement) {\n floatingEl.style.setProperty('--et-floating-translate', `translate3d(${x}px, ${y}px, 0)`);\n floatingEl.setAttribute('et-floating-placement', placement);\n }\n\n private applyArrowStyles(\n floatingEl: HTMLElement,\n middlewareData: MiddlewareData,\n floatingElArrow: HTMLElement | null,\n ) {\n if (!middlewareData.arrow || !floatingElArrow) return;\n\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n floatingEl.style.setProperty('--et-floating-arrow-translate', `translate3d(${arrowX ?? 0}px, ${arrowY ?? 0}px, 0)`);\n }\n\n private handleReferenceHidden(floatingEl: HTMLElement, middlewareData: MiddlewareData) {\n if (middlewareData.hide?.referenceHidden) {\n if (this.autoCloseIfReferenceHidden()) {\n this.unmount();\n } else {\n floatingEl.classList.add('et-floating-element--hidden');\n this.isHidden.set(true);\n }\n } else if (this.autoHide()) {\n floatingEl.classList.remove('et-floating-element--hidden');\n this.isHidden.set(false);\n }\n }\n\n private waitForRenderAndAnimate() {\n nextFrame(() => {\n if (!this.componentRef || this.state() !== 'mounting') {\n return;\n }\n\n const lifecycle = this.componentRef.instance.animatedLifecycle?.();\n\n if (!lifecycle) {\n console.error(\n 'AnimatedOverlayDirective: The component does not have an AnimatedLifecycleDirective. Please add one to the component.',\n );\n return;\n }\n\n lifecycle.enter();\n\n lifecycle.state$\n .pipe(\n filter((s) => s === 'entered'),\n tap(() => {\n if (this.state() === 'mounting') {\n this.state.set('mounted');\n this.afterOpened$.next();\n }\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n });\n }\n\n private destroy() {\n this.zone.runOutsideAngular(() => {\n this.floatingElCleanupFn?.();\n });\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n\n this.state.set('unmounted');\n this.afterClosed$.next();\n }\n}\n","import { combineLatest, Subject } from 'rxjs';\n\ntype FlipAnimationGroupConfig = {\n /**\n * The elements to animate\n */\n elements: Array<HTMLElement | { element: HTMLElement; originElement?: HTMLElement }>;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n};\n\nexport const createFlipAnimationGroup = (config: FlipAnimationGroupConfig) => {\n const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n const flips = elements.map((el) => {\n const element = 'element' in el ? el.element : el;\n const originElement = 'originElement' in el ? el.originElement : undefined;\n\n return createFlipAnimation({ element, originElement, duration, easing });\n });\n\n const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));\n const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));\n const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));\n\n const updateInit = () => {\n flips.forEach((animation) => animation.updateInit());\n };\n\n const play = () => {\n flips.forEach((animation) => animation.play());\n };\n\n const cancel = () => {\n flips.forEach((animation) => animation.cancel());\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$,\n onFinish$,\n onCancel$,\n };\n};\n\nexport type FlipAnimationConfig = {\n /**\n * The element to animate\n */\n element: HTMLElement;\n\n /**\n * The element to use as the origin for the animation\n * @default element\n */\n originElement?: HTMLElement;\n\n /**\n * The duration of the animation in milliseconds\n * @default 250\n */\n duration?: number;\n\n /**\n * The easing function to use for the animation\n * @default 'cubic-bezier(0.4, 0, 0.2, 1)'\n */\n easing?: string;\n};\n\nexport const createFlipAnimation = (config: FlipAnimationConfig) => {\n const { element: el, originElement = el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;\n\n let initialRect = originElement.getBoundingClientRect();\n let animation: Animation | null = null;\n\n const onStart$ = new Subject<void>();\n const onFinish$ = new Subject<void>();\n const onCancel$ = new Subject<void>();\n\n const onAnimationFinish = () => {\n cleanup();\n onFinish$.next();\n };\n\n const onAnimationCancel = () => {\n cleanup();\n onCancel$.next();\n };\n\n const cleanup = () => {\n if (!animation) {\n return;\n }\n\n animation.removeEventListener('finish', onAnimationFinish);\n animation.removeEventListener('cancel', onAnimationCancel);\n };\n\n const updateInit = () => {\n initialRect = originElement.getBoundingClientRect();\n };\n\n const play = () => {\n const lastRect = el.getBoundingClientRect();\n\n const delta = {\n x: initialRect.left - lastRect.left,\n y: initialRect.top - lastRect.top,\n scaleX: initialRect.width / lastRect.width,\n scaleY: initialRect.height / lastRect.height,\n };\n\n animation = el.animate(\n [\n {\n transformOrigin: 'top left',\n transform: `\n translate(${delta.x}px, ${delta.y}px)\n scale(${delta.scaleX}, ${delta.scaleY})\n `,\n },\n {\n transformOrigin: 'top left',\n transform: 'none',\n },\n ],\n {\n duration,\n easing,\n fill: 'both',\n },\n );\n\n animation.addEventListener('finish', onAnimationFinish);\n animation.addEventListener('cancel', onAnimationCancel);\n\n onStart$.next();\n };\n\n const cancel = () => {\n animation?.cancel();\n\n cleanup();\n };\n\n return {\n updateInit,\n play,\n cancel,\n onStart$: onStart$.asObservable(),\n onFinish$: onFinish$.asObservable(),\n onCancel$: onCancel$.asObservable(),\n };\n};\n","import { Directive, DOCUMENT, ElementRef, inject, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, tap } from 'rxjs';\n\n@Directive({\n selector: '[etClickOutside]',\n})\nexport class ClickOutsideDirective {\n private elementRef = inject(ElementRef);\n private document = inject(DOCUMENT);\n\n didClickOutside = output<MouseEvent>({ alias: 'etClickOutside' });\n\n constructor() {\n fromEvent<MouseEvent>(this.document.documentElement, 'click')\n .pipe(\n tap((event) => {\n const activeElement = event.target as HTMLElement;\n const isInside = this.elementRef.nativeElement.contains(activeElement);\n\n if (isInside) return;\n\n this.didClickOutside.emit(event);\n }),\n takeUntilDestroyed(),\n )\n .subscribe();\n }\n}\n","import {\n Directive,\n effect,\n EmbeddedViewRef,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[etRepeat]',\n})\nexport class RepeatDirective {\n private mainTemplateRef = inject<TemplateRef<unknown>>(TemplateRef);\n private viewContainerRef = inject(ViewContainerRef);\n\n repeatCount = input(2, { alias: 'etRepeat', transform: numberAttribute });\n\n views = linkedSignal<number, EmbeddedViewRef<unknown>[]>({\n source: this.repeatCount,\n computation: (count, previous) => {\n const prevCount = previous?.source ?? 0;\n const views: EmbeddedViewRef<unknown>[] = previous?.value ?? [];\n\n if (count === prevCount && previous?.value) {\n return previous.value;\n }\n\n const viewsToCreate = count - prevCount;\n\n if (viewsToCreate > 0) {\n for (let i = 0; i < viewsToCreate; i++) {\n views.push(this.viewContainerRef.createEmbeddedView(this.mainTemplateRef));\n }\n } else if (viewsToCreate < 0) {\n for (let i = 0; i < -viewsToCreate; i++) {\n this.viewContainerRef.remove(this.viewContainerRef.length - 1);\n }\n\n views.splice(viewsToCreate);\n }\n\n return views;\n },\n });\n\n constructor() {\n // Ugly but needed to trigger the linked signal.\n // Otherwise it has no consumers and won't run.\n effect(() => this.views());\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Translatable } from '../../utils';\n\n@Pipe({ name: 'etNormalizeGameResultType' })\nexport class NormalizeGameResultTypePipe implements PipeTransform {\n transform = normalizeGameResultType;\n}\n\nexport type NormalizedGameResultType = Translatable & {\n shortCode: string;\n};\n\n// TODO(TRB): Add correct type once provided by API\nexport const normalizeGameResultType = (type: string | null): NormalizedGameResultType | null => {\n if (!type) {\n return null;\n }\n\n switch (type) {\n case 'extra_time':\n return {\n i18n: 'game-result-type.extra-time',\n shortCode: 'AET',\n text: 'After Extra Time',\n };\n\n case 'penalty':\n return {\n i18n: 'game-result-type.penalty',\n shortCode: 'PSO',\n text: 'Penalty shootout',\n };\n\n case 'golden_goal':\n return {\n i18n: 'game-result-type.golden-goal',\n shortCode: 'GG',\n text: 'Golden Goal',\n };\n\n case 'default':\n default:\n return {\n i18n: 'game-result-type.full-time',\n shortCode: 'FT',\n text: 'Full Time',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatchListView } from '@ethlete/types';\nimport { MatchStateType } from './normalize-match-score.pipe';\n\n@Pipe({ name: 'etNormalizeMatchState' })\nexport class NormalizeMatchStatePipe implements PipeTransform {\n transform = normalizeMatchState;\n}\n\nexport const normalizeMatchState = (match: MatchListView | null | undefined) => {\n if (match?.isCompletedByReferee) {\n return MatchStateType.AUTO_WIN;\n } else if (match?.status === 'preparing') {\n return MatchStateType.PRE_MATCH;\n } else if (match?.status === 'started') {\n return MatchStateType.LIVE;\n } else if (match?.status === 'published' || match?.status === 'finished') {\n return MatchStateType.POST_MATCH;\n } else if (match?.round.state !== 'preparing') {\n return MatchStateType.PREPARING_ROUND;\n }\n\n return null;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatchListView, ParticipantViewUnion } from '@ethlete/types';\nimport { Translatable } from '../../utils';\nimport { MatchStateType } from './normalize-match-score.pipe';\nimport { normalizeMatchState } from './normalize-match-state.pipe';\n\n@Pipe({ name: 'etNormalizeMatchParticipants' })\nexport class NormalizeMatchParticipantsPipe implements PipeTransform {\n transform = normalizeMatchParticipants;\n}\n\nexport type NormalizedMatchParticipants = {\n home: NormalizedMatchParticipant | null;\n away: NormalizedMatchParticipant | null;\n};\n\ntype NormalizedParticipantType = 'team' | 'player' | 'unknown';\n\nexport type NormalizedMatchParticipant =\n | ({\n type: 'tbd';\n participantType: NormalizedParticipantType;\n data: ParticipantViewUnion | null;\n } & Translatable)\n | {\n type: 'participant';\n participantType: NormalizedParticipantType;\n data: ParticipantViewUnion;\n }\n | ({\n type: 'none';\n participantType: NormalizedParticipantType;\n data: ParticipantViewUnion | null;\n } & Translatable);\n\nexport const normalizeMatchParticipants = (match: MatchListView | null): NormalizedMatchParticipants | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n return {\n home: normalizeMatchParticipant(match, 'home'),\n away: normalizeMatchParticipant(match, 'away'),\n };\n};\n\nexport const normalizeMatchParticipant = (\n match: MatchListView | null,\n side: 'home' | 'away',\n): NormalizedMatchParticipant | null => {\n const matchState = normalizeMatchState(match);\n\n if (!match || !matchState) {\n return null;\n }\n\n const participant = match[side];\n const participantType = match.home?.type ?? match.away?.type ?? 'unknown';\n\n if (!participant) {\n if (matchState === MatchStateType.POST_MATCH || matchState === MatchStateType.AUTO_WIN) {\n return {\n participantType,\n type: 'none',\n i18n: 'match-participant.none',\n text: 'No opponent',\n data: participant,\n };\n } else {\n return {\n participantType,\n type: 'tbd',\n i18n: 'match-participant.tbd',\n text: 'TBD',\n data: participant,\n };\n }\n } else {\n return {\n participantType,\n type: 'participant',\n data: participant,\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MatchListView, MatchRankingView } from '@ethlete/types';\nimport { normalizeMatchState } from './normalize-match-state.pipe';\n\n@Pipe({ name: 'etNormalizeMatchScore' })\nexport class NormalizeMatchScorePipe implements PipeTransform {\n transform = normalizeMatchScore;\n}\n\nexport const enum MatchStateType {\n PREPARING_ROUND = 'preparingRound',\n PRE_MATCH = 'preMatch',\n LIVE = 'live',\n POST_MATCH = 'postMatch',\n AUTO_WIN = 'autoWin',\n}\n\nexport type NormalizedMatchScore = {\n home: {\n score: string | number | null;\n isWinner: boolean;\n };\n away: {\n score: string | number | null;\n isWinner: boolean;\n };\n subLine: string | null;\n isNumeric: boolean;\n};\n\nconst EMPTY_SCORE: NormalizedMatchScore = {\n home: { score: 'match-score.placeholder', isWinner: false },\n away: { score: 'match-score.placeholder', isWinner: false },\n isNumeric: false,\n subLine: null,\n};\n\nexport const normalizeMatchScore = (match: MatchListView | null | undefined): NormalizedMatchScore | null => {\n if (!match) {\n return null;\n }\n\n const matchState = normalizeMatchState(match);\n const subLine = getMatchScoreSubLine(match);\n\n if (!match.homeScore && !match.awayScore) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n if (isKnockoutMatch(match)) {\n if (matchState === MatchStateType.PRE_MATCH || matchState === MatchStateType.LIVE) {\n return { ...EMPTY_SCORE, subLine, isNumeric: false };\n }\n\n return {\n home: {\n score: getKnockoutMatchScore(match.homeScore),\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: getKnockoutMatchScore(match.awayScore),\n isWinner: match.awayScore?.status === 'won',\n },\n subLine,\n isNumeric: false,\n };\n } else if (isGroupMatch(match)) {\n if (match.games.length === 1) {\n // Return the score if only one game has been played\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n } else {\n return {\n ...getGroupMatchPoints(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n } else {\n return {\n ...getGroupMatchScore(match),\n subLine,\n isNumeric: true,\n } as NormalizedMatchScore;\n }\n};\n\nexport const isKnockoutMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return (\n match.matchType === 'single_elimination' ||\n match.matchType === 'double_elimination' ||\n match.matchType === 'fifa_swiss'\n );\n};\n\nexport const isGroupMatch = (match: MatchListView | null | undefined) => {\n if (!match) {\n return false;\n }\n\n return match.matchType === 'groups' || match.matchType === 'league';\n};\n\nexport const getKnockoutMatchScore = (score: MatchRankingView | null | undefined) => {\n if (score?.status === 'won') {\n return 'match-score.knockout.won';\n } else if (score?.status === 'lost') {\n return 'match-score.knockout.lost';\n } else if (score?.status === 'tie') {\n return 'match-score.knockout.tie';\n }\n\n return null;\n};\n\nexport const getMatchScoreSubLine = (match: MatchListView | null | undefined) => {\n if (isKnockoutMatch(match)) {\n return null;\n } else if (isGroupMatch(match)) {\n return 'match-score.groups.sub-line';\n } else {\n return null;\n }\n};\n\nexport const getGroupMatchScore = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.ownPoints || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.ownPoints || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n\nexport const getGroupMatchPoints = (match: MatchListView | null | undefined) => {\n if (!match) {\n return null;\n }\n\n return {\n home: {\n score: match.homeScore?.score || 0,\n isWinner: match.homeScore?.status === 'won',\n },\n away: {\n score: match.awayScore?.score || 0,\n isWinner: match.awayScore?.status === 'won',\n },\n };\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { StageType } from '@ethlete/types';\nimport { Translatable } from '../../utils';\n\n@Pipe({ name: 'etNormalizeMatchType' })\nexport class NormalizeMatchTypePipe implements PipeTransform {\n transform = normalizeMatchType;\n}\n\nexport const normalizeMatchType = (matchType: StageType | null | undefined): Translatable | null => {\n if (!matchType) {\n return null;\n }\n\n switch (matchType) {\n case 'double_elimination':\n return {\n i18n: 'match-type.double-elimination',\n text: 'Double Elimination',\n };\n case 'single_elimination':\n return {\n i18n: 'match-type.single-elimination',\n text: 'Single Elimination',\n };\n case 'fifa_swiss':\n return {\n i18n: 'match-type.fifa-swiss',\n text: 'FIFA Swiss',\n };\n case 'groups':\n return {\n i18n: 'match-type.groups',\n text: 'Groups',\n };\n case 'league':\n return {\n i18n: 'match-type.league',\n text: 'League',\n };\n case 'pools':\n return {\n i18n: 'match-type.pools',\n text: 'Pools',\n };\n }\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'inferMimeType',\n})\nexport class InferMimeTypePipe implements PipeTransform {\n transform = inferMimeType;\n}\n\n/**\n * Infers the mime type of a given url or srcset.\n * If a srcset is provided, it will infer the mime type of the first url in the srcset.\n * If the srcset contains a query parameter `?fm=`, it will use the value of that parameter, since it is often used to specify the file format in image api's like contentful.\n */\nexport const inferMimeType = (srcset: string) => {\n if (!srcset) return null;\n\n const urls = srcset.split(',');\n const firstUrl = urls[0];\n\n if (!firstUrl) return null;\n\n // make sure the url does not end with something like x1, x2 or 400w, 800w... We need to remove these parts to get the correct file extension\n const urlParts = firstUrl.split(' ');\n const lastPart = urlParts[urlParts.length - 1];\n\n if (urlParts.length > 1 && !lastPart?.includes('/')) {\n urlParts.pop();\n }\n\n const cleanedUrl = urlParts.join(' ');\n\n const queryPart = cleanedUrl.split('?')[1] ?? '';\n const containsFm = queryPart.startsWith('fm=') || queryPart.includes('&fm=');\n let fileExtension: string | null = null;\n\n if (containsFm) {\n const fmIndex = queryPart.indexOf('fm=');\n const fmValue = queryPart\n .substring(fmIndex + 3)\n .split('&')[0]\n ?.toLowerCase();\n\n if (fmValue) {\n fileExtension = fmValue;\n }\n }\n\n if (!fileExtension) {\n const noQueryUrl = cleanedUrl.split('?')[0] || cleanedUrl;\n\n const lastDotIndex = noQueryUrl.lastIndexOf('.');\n\n if (lastDotIndex === -1) return null;\n\n fileExtension = noQueryUrl.substring(lastDotIndex + 1).toLowerCase();\n }\n\n if (fileExtension) {\n switch (fileExtension) {\n case 'avif':\n return 'image/avif';\n case 'bmp':\n return 'image/bmp';\n case 'gif':\n return 'image/gif';\n case 'ico':\n return 'image/vdn.microsoft.icon';\n case 'jpg':\n case 'jpeg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n case 'svg':\n return 'image/svg+xml';\n case 'tif':\n case 'tiff':\n return 'image/tiff';\n case 'webp':\n return 'image/webp';\n case 'aac':\n return 'audio/aac';\n case 'abw':\n return 'application/x-abiword';\n case 'arc':\n return 'application/x-freearc';\n case 'avi':\n return 'video/x-msvideo';\n case 'azw':\n return 'application/vnd.amazon.ebook';\n case 'bin':\n return 'application/octet-stream';\n case 'bz':\n return 'application/x-bzip';\n case 'bz2':\n return 'application/x-bzip2';\n case 'cda':\n return 'application/x-cdf';\n case 'csh':\n return 'application/x-csh';\n case 'css':\n return 'text/css';\n case 'csv':\n return 'text/csv';\n case 'doc':\n return 'application/msword';\n case 'docx':\n return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n case 'eot':\n return 'application/vnd.ms-fontobject';\n case 'epub':\n return 'application/epub+zip';\n case 'gz':\n return 'application/gzip';\n case 'htm':\n case 'html':\n return 'text/html';\n case 'ics':\n return 'text/calendar';\n case 'jar':\n return 'application/java-archive';\n case 'js':\n return 'text/javascript';\n case 'json':\n return 'application/json';\n case 'jsonld':\n return 'application/ld+json';\n case 'mid':\n case 'midi':\n return 'audio/midi';\n case 'mjs':\n return 'text/javascript';\n case 'mp3':\n return 'audio/mpeg';\n case 'mp4':\n return 'video/mp4';\n case 'mpeg':\n return 'video/mpeg';\n case 'mpkg':\n return 'tapplication/vnd.apple.installer+xml';\n case 'odp':\n return 'application/vnd.oasis.opendocument.presentation';\n case 'ods':\n return 'application/vnd.oasis.opendocument.spreadsheet';\n case 'odt':\n return 'application/vnd.oasis.opendocument.text';\n case 'oga':\n return 'audio/ogg';\n case 'ogv':\n return 'video/ogg';\n case 'ogx':\n return 'application/ogg';\n case 'opus':\n return 'audio/opus';\n case 'otf':\n return 'font/otf';\n case 'pdf':\n return 'application/pdf';\n case 'php':\n return 'application/x-httpd-php';\n case 'ppt':\n return 'application/vnd.ms-powerpoint';\n case 'pptx':\n return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n case 'rar':\n return 'application/vnd.rar';\n case 'rtf':\n return 'application/rtf';\n case 'sh':\n return 'application/x-sh';\n case 'tar':\n return 'application/x-tar';\n case 'ts':\n return 'video/mp2t';\n case 'ttf':\n return 'font/ttf';\n case 'txt':\n return 'text/plain';\n case 'vsd':\n return 'application/vnd.visio';\n case 'wav':\n return 'audio/wav';\n case 'weba':\n return 'audio/webm';\n case 'webm':\n return 'video/webm';\n case 'woff':\n return 'font/woff';\n case 'woff2':\n return 'font/woff2';\n case 'xhtml':\n return 'application/xhtml+xml';\n case 'xls':\n return 'application/vnd.ms-excel';\n case 'xlsx':\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n case 'xml':\n return 'application/xml';\n case 'xul':\n return 'application/vnd.mozilla.xul+xml';\n case 'zip':\n return 'application/zip';\n case '3gp':\n return 'video/3gpp';\n case '3g2':\n return 'video/3gpp2';\n case '7z':\n return 'application/x-7z-compressed';\n\n default:\n return null;\n }\n }\n\n return null;\n};\n","import { Pipe, PipeTransform, TrackByFunction } from '@angular/core';\n\n@Pipe({ name: 'toArray' })\nexport class ToArrayPipe implements PipeTransform {\n transform = toArray;\n}\n\nexport const toArray = (value: number) => {\n return Array.from({ length: value }, (_, i) => i);\n};\n\nexport const toArrayTrackByFn: TrackByFunction<number> = (_, item) => item;\n","import { ElementRef, inject } from '@angular/core';\nimport { signalHostAttributes, signalHostClasses, signalHostStyles } from '../signals';\nimport { createComponentId } from '../utils';\n\nexport const createPropHandlers = () => {\n const id = createComponentId('et-props');\n\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n const classes = signalHostClasses({});\n const attributes = signalHostAttributes({});\n const styles = signalHostStyles({});\n\n return {\n classes,\n attributes,\n styles,\n id,\n elementRef,\n };\n};\n\nexport type PropHandlers = ReturnType<typeof createPropHandlers>;\n","import { computed, signal } from '@angular/core';\n\nexport const createElementDictionary = () => {\n const dictionary = {\n ids: signal<string[]>([]),\n elements: signal<Record<string, HTMLElement>>({}),\n };\n\n const firstElement = computed(() => {\n const id = dictionary.ids()[0];\n return id ? (dictionary.elements()[id] ?? null) : null;\n });\n\n const firstId = computed(() => {\n const id = dictionary.ids()[0];\n return id ?? null;\n });\n\n const ids = computed(() => dictionary.ids());\n const elements = computed(() => ids().map((id) => dictionary.elements()[id]!));\n\n const isEmpty = computed(() => dictionary.ids().length === 0);\n\n const has = (id: string) => {\n return dictionary.ids().includes(id);\n };\n\n const push = (id: string, element: HTMLElement) => {\n dictionary.ids.set([...dictionary.ids(), id]);\n dictionary.elements.set({ ...dictionary.elements(), [id]: element });\n };\n\n const remove = (id: string) => {\n dictionary.ids.set(dictionary.ids().filter((i) => i !== id));\n dictionary.elements.set(Object.fromEntries(Object.entries(dictionary.elements()).filter(([k]) => k !== id)));\n };\n\n const get = (id: string) => {\n return dictionary.elements()[id] ?? null;\n };\n\n return {\n ids,\n elements,\n has,\n get,\n push,\n remove,\n isEmpty,\n firstElement,\n firstId,\n };\n};\n","import { PropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\n\nexport type BindPropsOptions = {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n};\n\nexport const bindProps = (config: BindPropsOptions) => {\n const props = config.props as PropsInternal;\n const {\n attachEventListeners,\n classBindings,\n attributeBindings,\n styleBindings,\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n attached,\n single,\n name,\n bindId,\n attachedElements,\n } = props;\n\n const { attributes, classes, elementRef, id, styles } = config.handlers;\n const el = elementRef.nativeElement;\n\n if (attached()) {\n if (attachedElements.has(id)) {\n return;\n } else if (single) {\n const firstAttachedRefElement = attachedElements.first();\n\n console.error(\n `[${name}] These props can only be attached to a single element at a time.\\n\\n Already attached to \\n`,\n firstAttachedRefElement,\n '\\n Trying to attach to \\n',\n el,\n );\n\n return;\n }\n }\n\n attachedElements.push(id, el);\n\n if (bindId) {\n el.id = id;\n }\n\n if (classBindings) {\n classes.pushMany(classBindings);\n }\n\n if (attributeBindings) {\n attributes.pushMany(attributeBindings);\n }\n\n if (styleBindings) {\n styles.pushMany(styleBindings);\n }\n\n if (staticAttributeBindings) {\n for (const key in staticAttributeBindings) {\n el.setAttribute(key, `${staticAttributeBindings[key]}`);\n }\n }\n\n if (staticClassBindings) {\n el.classList.add(...staticClassBindings);\n }\n\n if (staticStyleBindings) {\n for (const key in staticStyleBindings) {\n el.style.setProperty(key, `${staticStyleBindings[key]}`);\n }\n }\n\n if (attachEventListeners) {\n attachEventListeners({\n on: el.addEventListener.bind(el),\n element: el,\n });\n }\n};\n\nexport type UnbindPropsOptions = {\n props: Props | PropsInternal;\n handlers: PropHandlers;\n};\n\nexport const unbindProps = (config: UnbindPropsOptions) => {\n const props = config.props as PropsInternal;\n\n props.attachedElements.remove(config.handlers.id);\n};\n","import { DestroyRef, Signal, afterNextRender, computed, inject } from '@angular/core';\nimport { PropHandlers, createPropHandlers } from './create-prop-handlers';\nimport { createElementDictionary } from './element-dictionary';\nimport { bindProps, unbindProps } from './props-binding';\n\nexport type Props = Readonly<{\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElements;\n}>;\n\nexport type PropsAttachedElements = {\n first: Signal<HTMLElement | null>;\n firstId: Signal<string | null>;\n get(id: string): HTMLElement | null;\n};\n\nexport type PropsAttachedElementsInternal = PropsAttachedElements & {\n has: (id: string) => boolean;\n push: (id: string, element: HTMLElement) => void;\n remove: (id: string) => void;\n};\n\nexport type PropsInternal = {\n single: boolean;\n name: string;\n bindId: boolean;\n\n attached: Signal<boolean>;\n attachedElements: PropsAttachedElementsInternal;\n\n classBindings: Record<string, Signal<unknown>> | null;\n attributeBindings: Record<string, Signal<unknown>> | null;\n styleBindings: Record<string, Signal<unknown>> | null;\n\n staticClassBindings: string[] | null;\n staticAttributeBindings: Record<string, unknown> | null;\n staticStyleBindings: Record<string, unknown> | null;\n\n attachEventListeners: ((context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void) | null;\n};\n\nexport type CreatePropsOptions = {\n name: string;\n bindId?: boolean;\n single?: boolean;\n classes?: Record<string, Signal<unknown>>;\n attributes?: Record<string, Signal<unknown>>;\n styles?: Record<string, Signal<unknown>>;\n staticClasses?: string[];\n staticAttributes?: Record<string, unknown>;\n staticStyles?: Record<string, unknown>;\n listeners?: (context: { on: HTMLElement['addEventListener']; element: HTMLElement }) => void;\n};\n\nexport const createProps = (props: CreatePropsOptions): Props => {\n const {\n bindId = false,\n single = true,\n classes: classBindings,\n attributes: attributeBindings,\n styles: styleBindings,\n staticAttributes: staticAttributeBindings = null,\n staticClasses: staticClassBindings = null,\n staticStyles: staticStyleBindings = null,\n listeners,\n name,\n } = props;\n\n const dictionary = createElementDictionary();\n const attached = computed(() => !dictionary.isEmpty());\n\n const attachedElements: PropsAttachedElementsInternal = {\n first: dictionary.firstElement,\n firstId: dictionary.firstId,\n\n has: dictionary.has,\n push: dictionary.push,\n remove: dictionary.remove,\n get: dictionary.get,\n };\n\n const data: PropsInternal = {\n name,\n single,\n bindId,\n\n attached,\n attachedElements,\n\n classBindings: classBindings ?? null,\n attributeBindings: attributeBindings ?? null,\n styleBindings: styleBindings ?? null,\n\n staticAttributeBindings,\n staticClassBindings,\n staticStyleBindings,\n\n attachEventListeners: listeners ?? null,\n };\n\n return data as Props;\n};\n\nexport type HostProps = {\n props: Props;\n handlers: PropHandlers;\n};\n\nexport const createHostProps = (props: CreatePropsOptions): HostProps => {\n const data = createProps(props);\n const handlers = createPropHandlers();\n\n afterNextRender({\n write: () => {\n bindProps({\n handlers,\n props: data,\n });\n },\n });\n\n const destroyRef = inject(DestroyRef);\n\n destroyRef.onDestroy(() => {\n unbindProps({\n handlers,\n props: data,\n });\n });\n\n return { props: data, handlers };\n};\n","import { afterNextRender } from '@angular/core';\n\nexport const createSetup = <T extends Record<string, unknown>>(config: {\n setupFn: (params: T) => void;\n this: ThisType<unknown>;\n}) => {\n let didCallSetup = false;\n\n afterNextRender(() => {\n if (!didCallSetup) {\n console.error('The setup() function was not called. Please call it inside your constructor.', config.this);\n return;\n }\n });\n\n return (params: T) => {\n if (didCallSetup) {\n console.error(\n 'The setup() function was already called. Please call it only once. \\n\\n',\n 'Instance containing the setup() call \\n',\n config.this,\n '\\n\\n Setup was called with\\n',\n params,\n );\n return;\n }\n\n didCallSetup = true;\n config.setupFn(params);\n };\n};\n","import { Injector, Signal, WritableSignal, effect, inject, runInInjectionContext } from '@angular/core';\n\nexport const createDependencyStash = <T extends Record<string, WritableSignal<unknown>>>(stash: T) => {\n const injector = inject(Injector);\n\n const provideSignal = <K extends keyof T>(data: { signal: Signal<ReturnType<T[K]>>; for: K }) => {\n runInInjectionContext(injector, () => {\n effect(() => {\n stash[data.for]!.set(data.signal());\n });\n });\n };\n\n const provideValue = <K extends keyof T>(data: { value: ReturnType<T[K]>; for: K }) => {\n stash[data.for]!.set(data.value);\n };\n\n return {\n ...stash,\n provideSignal,\n provideValue,\n };\n};\n","import { DestroyRef, Directive, afterNextRender, inject, input } from '@angular/core';\nimport { createPropHandlers } from './create-prop-handlers';\nimport { Props, PropsInternal } from './create-props';\nimport { bindProps, unbindProps } from './props-binding';\n\n@Directive({\n selector: '[etProps]',\n})\nexport class PropsDirective {\n destroyRef = inject(DestroyRef);\n\n props = input.required<PropsInternal, Props>({ alias: 'etProps', transform: (d) => d as PropsInternal });\n\n propHandlers = createPropHandlers();\n\n constructor() {\n afterNextRender({\n write: () => {\n bindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n },\n });\n\n this.destroyRef.onDestroy(() => {\n unbindProps({\n handlers: this.propHandlers,\n props: this.props(),\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injector, Signal, TemplateRef, computed } from '@angular/core';\n\nexport type AnyTemplateType =\n | string\n | TemplateRef<unknown>\n | ComponentType<unknown>\n | TemplateRefWithContext\n | ComponentTypeWithInputs;\n\nexport type TemplateRefWithContext<T = Record<string, unknown> | undefined, J = unknown> = {\n template: TemplateRef<J>;\n context?: T;\n injector?: Injector;\n};\n\nexport type ComponentTypeWithInputs<T = Record<string, unknown> | undefined, J = unknown> = {\n component: ComponentType<J>;\n inputs?: T;\n injector?: Injector;\n};\n\nexport type StringTemplate = {\n type: 'string';\n value: string;\n};\n\nexport type NgTemplateTemplate = {\n type: 'template';\n value: TemplateRef<unknown>;\n context?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport type ComponentTemplate = {\n type: 'component';\n value: ComponentType<unknown>;\n inputs?: Record<string, unknown>;\n injector: Injector | null;\n};\n\nexport const templateComputed = (templateSignal: Signal<AnyTemplateType | null>) =>\n computed((): StringTemplate | NgTemplateTemplate | ComponentTemplate | null => {\n const content = templateSignal();\n\n if (!content) return null;\n\n if (typeof content === 'string') {\n return {\n type: 'string',\n value: content,\n };\n }\n\n if (content instanceof TemplateRef) {\n return {\n type: 'template',\n value: content,\n injector: null,\n };\n }\n\n if ('component' in content) {\n return {\n type: 'component',\n value: content.component,\n inputs: content.inputs,\n injector: content.injector ?? null,\n };\n }\n\n if ('template' in content) {\n return {\n type: 'template',\n value: content.template,\n context: content.context,\n injector: content.injector ?? null,\n };\n }\n\n return {\n type: 'component',\n value: content,\n injector: null,\n };\n });\n","import { computed, DestroyRef, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport { MaybeSignal } from '../signals';\n\nexport type HeadBinding<T> = {\n id: symbol;\n value: T;\n priority?: number;\n};\n\nexport const applyHeadBinding = <T>(\n binding: MaybeSignal<T | null | undefined>,\n applyFn: (value: T) => void,\n removeFn: () => void,\n isValid?: (value: T | null | undefined) => value is T,\n) => {\n const destroyRef = inject(DestroyRef);\n const signalBinding = isSignal(binding) ? binding : signal(binding);\n\n const defaultIsValid = (value: T | null | undefined): value is T => value !== null && value !== undefined;\n\n const validator = isValid ?? defaultIsValid;\n\n const initialValue = untracked(() => signalBinding());\n if (validator(initialValue)) {\n applyFn(initialValue);\n }\n\n effect(() => {\n const value = signalBinding();\n if (validator(value)) {\n applyFn(value);\n } else {\n removeFn();\n }\n });\n\n destroyRef.onDestroy(() => {\n removeFn();\n });\n};\n\nexport const createPropertyBinding = <TConfig>(\n configBuilder: (value: string) => TConfig,\n applyConfigFn: (config: MaybeSignal<TConfig | null | undefined>) => void,\n) => {\n return (binding: MaybeSignal<string | null | undefined>) => {\n applyConfigFn(\n computed(() => {\n const value = untracked(() => (isSignal(binding) ? binding() : binding));\n return value ? configBuilder(value) : null;\n }),\n );\n };\n};\n\nexport const createArrayPropertyBinding = <TConfig>(\n configBuilder: (value: string, index: number) => TConfig,\n applyConfigFn: (config: MaybeSignal<TConfig | null | undefined>) => void,\n) => {\n return (binding: MaybeSignal<string[] | null | undefined>) => {\n const valuesSignal = isSignal(binding) ? binding : signal(binding);\n const valuesList = computed(() => untracked(() => valuesSignal()) ?? []);\n\n valuesList().forEach((value, index) => {\n applyConfigFn(computed(() => configBuilder(value, index)));\n });\n };\n};\n\nexport const toStringBinding = (\n binding: MaybeSignal<string | number | null | undefined>,\n): MaybeSignal<string | null | undefined> => {\n return computed(() => {\n const value = untracked(() => (isSignal(binding) ? binding() : binding));\n return value !== null && value !== undefined ? String(value) : null;\n });\n};\n\nexport const createBulkPropertyBinding = <TConfig extends Record<string, unknown>>(\n propertyPrefix: string,\n applyConfigFn: (property: string, binding: MaybeSignal<string | null | undefined>) => void,\n) => {\n return (config: TConfig) => {\n Object.entries(config).forEach(([key, value]) => {\n if (value !== undefined) {\n applyConfigFn(key, value as MaybeSignal<string | null | undefined>);\n }\n });\n };\n};\n","import { DOCUMENT } from '@angular/common';\nimport { computed, inject, isSignal, signal, untracked } from '@angular/core';\nimport { MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding, createArrayPropertyBinding, createPropertyBinding } from './head-binding';\n\nexport type LinkConfig = {\n rel: string;\n href: string;\n hreflang?: string;\n type?: string;\n sizes?: string;\n media?: string;\n as?: string;\n crossorigin?: string;\n integrity?: string;\n referrerpolicy?: string;\n\n /** Unique identifier for the link */\n key?: string;\n\n /** Whether multiple instances of this link are allowed */\n allowMultiple?: boolean;\n};\n\ntype LinkBinding = {\n config: LinkConfig;\n element: HTMLLinkElement;\n priority: number;\n};\n\nexport type LinkStoreConfig = {\n /**\n * Link rels that are allowed to have multiple instances\n * If you want to override the default set, extend your set from {@link DEFAULT_MULTI_INSTANCE_RELS}.\n * Otherwise, common multiple instance links may be removed unintentionally.\n * @example\n * ```ts\n * import { DEFAULT_MULTI_INSTANCE_RELS, provideLinkStoreConfig } from '@ethlete/core';\n *\n * provideLinkStoreConfig({\n * multiInstanceRels: new Set([\n * ...DEFAULT_MULTI_INSTANCE_RELS,\n * 'custom-rel',\n * ]),\n * });\n * ```\n */\n multiInstanceRels: Set<string>;\n};\n\nexport const DEFAULT_MULTI_INSTANCE_RELS = new Set([\n 'alternate',\n 'icon',\n 'apple-touch-icon',\n 'apple-touch-icon-precomposed',\n 'preconnect',\n 'dns-prefetch',\n 'preload',\n 'prefetch',\n 'prerender',\n 'stylesheet',\n 'modulepreload',\n]);\n\nexport const [provideLinkStoreConfig, injectLinkStoreConfig] = createStaticRootProvider<LinkStoreConfig>(\n {\n multiInstanceRels: DEFAULT_MULTI_INSTANCE_RELS,\n },\n { name: 'Link Store Config' },\n);\n\nexport const [provideLinkStore, injectLinkStore] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const config = injectLinkStoreConfig();\n const linksByKey = signal<Map<string, Map<symbol, LinkBinding>>>(new Map());\n let priorityCounter = 0;\n\n const getLinkKey = (linkConfig: LinkConfig): string => {\n const isMultiInstance = config.multiInstanceRels.has(linkConfig.rel) || linkConfig.allowMultiple;\n\n if (isMultiInstance) {\n const keyParts = [linkConfig.rel];\n\n if (linkConfig.hreflang) keyParts.push(`hreflang:${linkConfig.hreflang}`);\n if (linkConfig.media) keyParts.push(`media:${linkConfig.media}`);\n if (linkConfig.sizes) keyParts.push(`sizes:${linkConfig.sizes}`);\n if (linkConfig.type) keyParts.push(`type:${linkConfig.type}`);\n if (linkConfig.as) keyParts.push(`as:${linkConfig.as}`);\n\n // For resource hints, include href to make them unique per origin/resource\n if (['preconnect', 'dns-prefetch', 'preload', 'prefetch', 'modulepreload'].includes(linkConfig.rel)) {\n keyParts.push(`href:${linkConfig.href}`);\n }\n\n return keyParts.join('|');\n }\n\n return linkConfig.rel;\n };\n\n const isMultiInstanceLink = (key: string): boolean => {\n const rel = key.split('|')[0];\n\n if (!rel) return false;\n\n return config.multiInstanceRels.has(rel);\n };\n\n const createLinkElement = (linkConfig: LinkConfig): HTMLLinkElement => {\n const link = document.createElement('link');\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, allowMultiple, ...attributes } = linkConfig;\n\n Object.entries(attributes).forEach(([attrKey, value]) => {\n if (value !== undefined && value !== null) {\n link.setAttribute(attrKey, String(value));\n }\n });\n\n return link;\n };\n\n const applyActiveLinks = (key: string) => {\n const bindings = untracked(() => linksByKey().get(key));\n\n document.head.querySelectorAll(`link[data-link-key=\"${key}\"]`).forEach((el) => el.remove());\n\n if (!bindings || bindings.size === 0) {\n return;\n }\n\n const allowMultiple =\n isMultiInstanceLink(key) || Array.from(bindings.values()).some((b) => b.config.allowMultiple);\n\n if (allowMultiple) {\n const sortedBindings = Array.from(bindings.values()).sort((a, b) => a.priority - b.priority);\n\n sortedBindings.forEach((binding) => {\n binding.element.setAttribute('data-link-key', key);\n document.head.appendChild(binding.element);\n });\n } else {\n const activeBinding = Array.from(bindings.values()).reduce((highest, current) =>\n current.priority > highest.priority ? current : highest,\n );\n\n activeBinding.element.setAttribute('data-link-key', key);\n document.head.appendChild(activeBinding.element);\n }\n };\n\n const addLink = (id: symbol, linkConfig: LinkConfig) => {\n const key = getLinkKey(linkConfig);\n const priority = priorityCounter++;\n const element = createLinkElement(linkConfig);\n\n linksByKey.update((linkMap) => {\n const newLinkMap = new Map(linkMap);\n const keyBindings = newLinkMap.get(key) || new Map();\n\n keyBindings.set(id, { config: linkConfig, element, priority });\n newLinkMap.set(key, new Map(keyBindings));\n\n return newLinkMap;\n });\n\n applyActiveLinks(key);\n };\n\n const removeLink = (id: symbol, key?: string) => {\n if (key) {\n linksByKey.update((linkMap) => {\n const newLinkMap = new Map(linkMap);\n const keyBindings = newLinkMap.get(key);\n\n if (keyBindings) {\n keyBindings.delete(id);\n\n if (keyBindings.size === 0) {\n newLinkMap.delete(key);\n } else {\n newLinkMap.set(key, new Map(keyBindings));\n }\n }\n\n return newLinkMap;\n });\n\n applyActiveLinks(key);\n return;\n }\n\n linksByKey.update((linkMap) => {\n const newLinkMap = new Map(linkMap);\n let affectedKey: string | undefined;\n\n for (const [k, bindings] of newLinkMap) {\n if (bindings.has(id)) {\n bindings.delete(id);\n affectedKey = k;\n\n if (bindings.size === 0) {\n newLinkMap.delete(k);\n } else {\n newLinkMap.set(k, new Map(bindings));\n }\n break;\n }\n }\n\n if (affectedKey) {\n queueMicrotask(() => applyActiveLinks(affectedKey));\n }\n\n return newLinkMap;\n });\n };\n\n return { addLink, removeLink, getLinkKey };\n },\n { name: 'Link Store' },\n);\n\nexport const applyLinkBinding = (binding: MaybeSignal<LinkConfig | null | undefined>) => {\n const linkStore = injectLinkStore();\n const linkId = Symbol('link-tag');\n let currentKey: string | undefined;\n\n applyHeadBinding(\n binding,\n (config) => {\n currentKey = linkStore.getLinkKey(config);\n linkStore.addLink(linkId, config);\n },\n () => linkStore.removeLink(linkId, currentKey),\n );\n};\n\nexport const applyCanonicalBinding = createPropertyBinding((href) => ({ rel: 'canonical', href }), applyLinkBinding);\n\nexport const applyAlternateBinding = (hreflang: string, binding: MaybeSignal<string | null | undefined>) => {\n applyLinkBinding(\n computed(() => {\n const url = untracked(() => (isSignal(binding) ? binding() : binding));\n return url ? { rel: 'alternate', hreflang, href: url } : null;\n }),\n );\n};\n\nexport type AlternateLanguagesConfig = {\n [hreflang: string]: MaybeSignal<string | null | undefined>;\n};\n\nexport const applyAlternateLanguagesBindings = (config: AlternateLanguagesConfig) => {\n Object.entries(config).forEach(([hreflang, binding]) => {\n applyAlternateBinding(hreflang, binding);\n });\n};\n\nexport const applyPrevBinding = createPropertyBinding((href) => ({ rel: 'prev', href }), applyLinkBinding);\n\nexport const applyNextBinding = createPropertyBinding((href) => ({ rel: 'next', href }), applyLinkBinding);\n\nexport type ResourceHintsConfig = {\n preconnect?: MaybeSignal<string[] | null | undefined>;\n dnsPrefetch?: MaybeSignal<string[] | null | undefined>;\n prefetch?: MaybeSignal<string[] | null | undefined>;\n prerender?: MaybeSignal<string[] | null | undefined>;\n};\n\nexport const applyResourceHintsBindings = (config: ResourceHintsConfig) => {\n if (config.preconnect) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'preconnect', href, key: `preconnect:${index}` }),\n applyLinkBinding,\n )(config.preconnect);\n }\n\n if (config.dnsPrefetch) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'dns-prefetch', href, key: `dns-prefetch:${index}` }),\n applyLinkBinding,\n )(config.dnsPrefetch);\n }\n\n if (config.prefetch) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'prefetch', href, key: `prefetch:${index}` }),\n applyLinkBinding,\n )(config.prefetch);\n }\n\n if (config.prerender) {\n createArrayPropertyBinding(\n (href, index) => ({ rel: 'prerender', href, key: `prerender:${index}` }),\n applyLinkBinding,\n )(config.prerender);\n }\n};\n","import { computed, effect, inject, signal } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { injectLocale } from '../providers';\nimport { injectIsRouterInitialized, MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding } from './head-binding';\n\nexport type TitlePart = {\n /** The text to be displayed as the title */\n text: string;\n\n /** Whether this part should be used as the starting point for the title construction */\n useAsStart?: boolean;\n};\n\nexport type TitleConfig = {\n /**\n * The divider string used between title parts\n * @default '|'\n */\n divider: string;\n\n /** The default title to use when no parts are available */\n defaultTitle: string;\n\n /**\n * A function to transform the title text based on locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (title: string, locale: string) => string;\n\n /**\n * A title part to be prefixed to all titles\n */\n suffixPart?: TitlePart;\n\n /**\n * A title part to be suffixed to all titles\n */\n prefixPart?: TitlePart;\n};\n\nexport const [provideTitleConfig, injectTitleConfig] = createStaticRootProvider<TitleConfig>(\n {\n divider: '|',\n defaultTitle: '',\n transformer: (title: string) => title,\n },\n { name: 'Title Config' },\n);\n\nexport const [provideTitleStore, injectTitleStore] = createRootProvider(\n () => {\n const config = injectTitleConfig();\n const titleParts = signal<Map<symbol, TitlePart>>(new Map());\n const { currentLocale } = injectLocale();\n const titleService = inject(Title);\n const isRouterInitialized = injectIsRouterInitialized();\n\n const defaultTitle = config.defaultTitle ?? titleService.getTitle();\n\n const title = computed(() => {\n const partsMap = titleParts();\n\n if (!partsMap.size || !isRouterInitialized()) {\n return config.transformer(defaultTitle, currentLocale());\n }\n\n const parts = Array.from(partsMap.values());\n const finalTextParts: string[] = [];\n\n for (let index = parts.length - 1; index > -1; index--) {\n const part = parts[index];\n if (!part) continue;\n\n const text = config.transformer(part.text, currentLocale());\n finalTextParts.unshift(text);\n\n if (part.useAsStart) break;\n }\n\n if (config.prefixPart?.text) {\n finalTextParts.unshift(config.transformer(config.prefixPart.text, currentLocale()));\n }\n\n if (config.suffixPart?.text) {\n finalTextParts.push(config.transformer(config.suffixPart.text, currentLocale()));\n }\n\n return finalTextParts.join(` ${config.divider} `);\n });\n\n const addPart = (id: symbol, part: TitlePart) => {\n titleParts.update((parts) => new Map(parts).set(id, part));\n };\n\n const removePart = (id: symbol) => {\n titleParts.update((parts) => {\n const newParts = new Map(parts);\n newParts.delete(id);\n return newParts;\n });\n };\n\n effect(() => {\n const titleText = title();\n titleService.setTitle(titleText);\n });\n\n return { title, addPart, removePart };\n },\n { name: 'Title Store' },\n);\n\nexport const applyHeadTitleBinding = (\n binding: MaybeSignal<string | number | null | undefined>,\n options?: Omit<TitlePart, 'text'>,\n) => {\n const titleStore = injectTitleStore();\n const partId = Symbol('title-part');\n\n applyHeadBinding(\n binding,\n (value) => titleStore.addPart(partId, { text: `${value}`, ...options }),\n () => titleStore.removePart(partId),\n (value): value is string | number => value !== null && value !== undefined && value !== '',\n );\n};\n","import { computed, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport { Meta } from '@angular/platform-browser';\nimport { injectLocale } from '../providers';\nimport { MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding, createArrayPropertyBinding, createPropertyBinding, toStringBinding } from './head-binding';\nimport { applyHeadTitleBinding } from './title-binding';\n\nexport type MetaTagConfig = {\n /** Unique identifier for the tag */\n key?: string;\n\n /** Whether multiple instances of this tag are allowed */\n allowMultiple?: boolean;\n\n charset?: string;\n content?: string;\n httpEquiv?: string;\n id?: string;\n itemprop?: string;\n name?: string;\n property?: string;\n scheme?: string;\n url?: string;\n};\n\ntype MetaTagBinding = {\n config: MetaTagConfig;\n priority: number;\n};\n\nexport type MetaConfig = {\n /**\n * A function to transform meta tag content based on locale.\n * Use `provideLocale()` to update the locale dynamically.\n */\n transformer: (content: string, locale: string) => string;\n\n /**\n * Tags that are allowed to have multiple instances\n * If you want to override the default set, extend your set from {@link DEFAULT_MULTI_INSTANCE_TAGS}.\n * Otherwise, common multiple instance tags may be removed unintentionally.\n * @example\n * ```ts\n * import { DEFAULT_MULTI_INSTANCE_TAGS, provideMetaConfig } from '@ethlete/core';\n *\n * provideMetaConfig({\n * multiInstanceTags: new Set([\n * ...DEFAULT_MULTI_INSTANCE_TAGS,\n * 'name=\"custom-multiple-tag\"',\n * ]),\n * });\n * ```\n */\n multiInstanceTags: Set<string>;\n};\n\nexport const DEFAULT_MULTI_INSTANCE_TAGS = new Set([\n // Open Graph - Media\n 'property=\"og:image\"',\n 'property=\"og:image:url\"',\n 'property=\"og:image:secure_url\"',\n 'property=\"og:video\"',\n 'property=\"og:video:url\"',\n 'property=\"og:video:secure_url\"',\n 'property=\"og:audio\"',\n 'property=\"og:audio:url\"',\n 'property=\"og:audio:secure_url\"',\n\n // Open Graph - Locale alternatives\n 'property=\"og:locale:alternate\"',\n\n // Twitter Card\n 'name=\"twitter:image\"',\n 'name=\"twitter:player\"',\n\n // Article tags (arrays)\n 'property=\"article:author\"',\n 'property=\"article:tag\"',\n\n // Music tags (arrays)\n 'property=\"music:song\"',\n 'property=\"music:musician\"',\n 'property=\"music:album\"',\n\n // Video tags (arrays)\n 'property=\"video:actor\"',\n 'property=\"video:director\"',\n 'property=\"video:writer\"',\n 'property=\"video:tag\"',\n\n // Book tags (arrays)\n 'property=\"book:author\"',\n 'property=\"book:tag\"',\n\n // Profile (arrays)\n 'property=\"profile:username\"',\n\n // Product tags (arrays)\n 'property=\"product:category\"',\n 'property=\"product:retailer_item_id\"',\n\n // App Links (multiple platforms)\n 'property=\"al:ios:url\"',\n 'property=\"al:ios:app_store_id\"',\n 'property=\"al:ios:app_name\"',\n 'property=\"al:android:url\"',\n 'property=\"al:android:app_name\"',\n 'property=\"al:android:package\"',\n 'property=\"al:web:url\"',\n 'property=\"al:windows_phone:url\"',\n 'property=\"al:windows_phone:app_id\"',\n 'property=\"al:windows_phone:app_name\"',\n 'property=\"al:windows:url\"',\n 'property=\"al:windows:app_id\"',\n 'property=\"al:windows:app_name\"',\n 'property=\"al:windows_universal:url\"',\n 'property=\"al:windows_universal:app_id\"',\n 'property=\"al:windows_universal:app_name\"',\n\n // Dublin Core (can have multiple)\n 'name=\"DC.creator\"',\n 'name=\"DC.contributor\"',\n 'name=\"DC.subject\"',\n\n // Schema.org (via meta tags - though JSON-LD is preferred)\n 'itemprop=\"image\"',\n 'itemprop=\"author\"',\n\n // Apple iOS\n 'name=\"apple-itunes-app\"', // Can have multiple app arguments\n\n // Verification tags (multiple services)\n 'name=\"google-site-verification\"',\n 'name=\"msvalidate.01\"',\n 'name=\"yandex-verification\"',\n 'name=\"p:domain_verify\"', // Pinterest\n 'name=\"facebook-domain-verification\"',\n]);\n\nexport const [provideMetaConfig, injectMetaConfig] = createStaticRootProvider<MetaConfig>(\n {\n transformer: (content: string) => content,\n multiInstanceTags: DEFAULT_MULTI_INSTANCE_TAGS,\n },\n { name: 'Meta Config' },\n);\n\nexport const [provideMetaStore, injectMetaStore] = createRootProvider(\n () => {\n const metaService = inject(Meta);\n const config = injectMetaConfig();\n const { currentLocale } = injectLocale();\n\n const metaTagsBySelector = signal<Map<string, Map<symbol, MetaTagBinding>>>(new Map());\n let priorityCounter = 0;\n\n const getSelector = (config: MetaTagConfig): string => {\n if (config.name) return `name=\"${config.name}\"`;\n if (config.property) return `property=\"${config.property}\"`;\n if (config.httpEquiv) return `http-equiv=\"${config.httpEquiv}\"`;\n if (config.itemprop) return `itemprop=\"${config.itemprop}\"`;\n return config.key ?? '';\n };\n\n const isMultiInstanceTag = (selector: string): boolean => {\n return config.multiInstanceTags.has(selector);\n };\n\n const applyTag = (rawConfig: MetaTagConfig, locale: string): HTMLMetaElement => {\n const transformedConfig = { ...rawConfig };\n\n if (transformedConfig.content) {\n transformedConfig.content = config.transformer(transformedConfig.content, locale);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { key, allowMultiple, ...metaConfig } = transformedConfig;\n\n return metaService.addTag(metaConfig) as HTMLMetaElement;\n };\n\n const applyActiveTag = (selector: string) => {\n const locale = currentLocale();\n const bindings = untracked(() => metaTagsBySelector().get(selector));\n\n if (!bindings || bindings.size === 0) {\n metaService.removeTag(selector);\n return;\n }\n\n const allowMultiple =\n isMultiInstanceTag(selector) || Array.from(bindings.values()).some((b) => b.config.allowMultiple);\n\n const existingTags = metaService.getTags(selector);\n existingTags.forEach((tag) => metaService.removeTagElement(tag));\n\n if (allowMultiple) {\n const sortedBindings = Array.from(bindings.values()).sort((a, b) => a.priority - b.priority);\n\n sortedBindings.forEach((binding) => {\n applyTag(binding.config, locale);\n });\n } else {\n const activeBinding = Array.from(bindings.values()).reduce((highest, current) =>\n current.priority > highest.priority ? current : highest,\n );\n\n applyTag(activeBinding.config, locale);\n }\n };\n\n const addTag = (id: symbol, rawConfig: MetaTagConfig) => {\n const selector = getSelector(rawConfig);\n const priority = priorityCounter++;\n\n metaTagsBySelector.update((tagsBySelector) => {\n const newTagsBySelector = new Map(tagsBySelector);\n const selectorBindings = newTagsBySelector.get(selector) || new Map();\n\n selectorBindings.set(id, { config: rawConfig, priority });\n newTagsBySelector.set(selector, new Map(selectorBindings));\n\n return newTagsBySelector;\n });\n\n applyActiveTag(selector);\n };\n\n const removeTag = (id: symbol, selector?: string) => {\n if (selector) {\n metaTagsBySelector.update((tagsBySelector) => {\n const newTagsBySelector = new Map(tagsBySelector);\n const selectorBindings = newTagsBySelector.get(selector);\n\n if (selectorBindings) {\n selectorBindings.delete(id);\n\n if (selectorBindings.size === 0) {\n newTagsBySelector.delete(selector);\n } else {\n newTagsBySelector.set(selector, new Map(selectorBindings));\n }\n }\n\n return newTagsBySelector;\n });\n\n applyActiveTag(selector);\n return;\n }\n\n metaTagsBySelector.update((tagsBySelector) => {\n const newTagsBySelector = new Map(tagsBySelector);\n let affectedSelector: string | undefined;\n\n for (const [sel, bindings] of newTagsBySelector) {\n if (bindings.has(id)) {\n bindings.delete(id);\n affectedSelector = sel;\n\n if (bindings.size === 0) {\n newTagsBySelector.delete(sel);\n } else {\n newTagsBySelector.set(sel, new Map(bindings));\n }\n break;\n }\n }\n\n if (affectedSelector) {\n queueMicrotask(() => applyActiveTag(affectedSelector));\n }\n\n return newTagsBySelector;\n });\n };\n\n effect(() => {\n currentLocale();\n const tagsBySelector = untracked(() => metaTagsBySelector());\n\n tagsBySelector.forEach((_, selector) => {\n applyActiveTag(selector);\n });\n });\n\n return { addTag, removeTag, getSelector };\n },\n { name: 'Meta Store' },\n);\n\nexport const applyMetaBinding = (binding: MaybeSignal<MetaTagConfig | null | undefined>) => {\n const metaStore = injectMetaStore();\n const tagId = Symbol('meta-tag');\n let currentSelector: string | undefined;\n\n applyHeadBinding(\n binding,\n (config) => {\n currentSelector = metaStore.getSelector(config);\n metaStore.addTag(tagId, config);\n },\n () => metaStore.removeTag(tagId, currentSelector),\n );\n};\n\nexport const applyDescriptionBinding = createPropertyBinding(\n (content) => ({ name: 'description', content }),\n applyMetaBinding,\n);\n\nexport const applyKeywordsBinding = (binding: MaybeSignal<string[] | null | undefined>) => {\n applyMetaBinding(\n computed(() => {\n const keywords = untracked(() => (isSignal(binding) ? binding() : binding));\n return keywords && keywords.length > 0 ? { name: 'keywords', content: keywords.join(', ') } : null;\n }),\n );\n};\n\nexport const applyAuthorBinding = createPropertyBinding((content) => ({ name: 'author', content }), applyMetaBinding);\n\nexport type RobotsConfig = {\n index?: boolean;\n follow?: boolean;\n noarchive?: boolean;\n nosnippet?: boolean;\n noimageindex?: boolean;\n maxSnippet?: number;\n maxImagePreview?: 'none' | 'standard' | 'large';\n maxVideoPreview?: number;\n};\n\nexport const applyRobotsBinding = (binding: MaybeSignal<RobotsConfig | null | undefined>) => {\n applyMetaBinding(\n computed(() => {\n const config = untracked(() => (isSignal(binding) ? binding() : binding));\n if (!config) return null;\n\n const directives: string[] = [];\n\n if (config.index === false) directives.push('noindex');\n if (config.follow === false) directives.push('nofollow');\n if (config.noarchive) directives.push('noarchive');\n if (config.nosnippet) directives.push('nosnippet');\n if (config.noimageindex) directives.push('noimageindex');\n if (config.maxSnippet !== undefined) directives.push(`max-snippet:${config.maxSnippet}`);\n if (config.maxImagePreview) directives.push(`max-image-preview:${config.maxImagePreview}`);\n if (config.maxVideoPreview !== undefined) directives.push(`max-video-preview:${config.maxVideoPreview}`);\n\n return directives.length > 0 ? { name: 'robots', content: directives.join(', ') } : null;\n }),\n );\n};\n\nexport const applyOgBinding = (property: string, binding: MaybeSignal<string | null | undefined>) => {\n createPropertyBinding((content) => ({ property: `og:${property}`, content }), applyMetaBinding)(binding);\n};\n\nconst createOgArrayBinding = (property: string) =>\n createArrayPropertyBinding(\n (value, index) => ({\n property: `og:${property}`,\n content: value,\n allowMultiple: true,\n key: `og:${property}:${index}`,\n }),\n applyMetaBinding,\n );\n\nexport type OpenGraphConfig = {\n title?: MaybeSignal<string | null | undefined>;\n description?: MaybeSignal<string | null | undefined>;\n url?: MaybeSignal<string | null | undefined>;\n type?: MaybeSignal<string | null | undefined>;\n siteName?: MaybeSignal<string | null | undefined>;\n locale?: MaybeSignal<string | null | undefined>;\n image?: MaybeSignal<string | null | undefined>;\n images?: MaybeSignal<string[] | null | undefined>;\n imageUrl?: MaybeSignal<string | null | undefined>;\n imageSecureUrl?: MaybeSignal<string | null | undefined>;\n imageType?: MaybeSignal<string | null | undefined>;\n imageWidth?: MaybeSignal<string | number | null | undefined>;\n imageHeight?: MaybeSignal<string | number | null | undefined>;\n imageAlt?: MaybeSignal<string | null | undefined>;\n video?: MaybeSignal<string | null | undefined>;\n videos?: MaybeSignal<string[] | null | undefined>;\n videoUrl?: MaybeSignal<string | null | undefined>;\n videoSecureUrl?: MaybeSignal<string | null | undefined>;\n videoType?: MaybeSignal<string | null | undefined>;\n videoWidth?: MaybeSignal<string | number | null | undefined>;\n videoHeight?: MaybeSignal<string | number | null | undefined>;\n audio?: MaybeSignal<string | null | undefined>;\n audios?: MaybeSignal<string[] | null | undefined>;\n};\n\nexport const applyOpenGraphBindings = (config: OpenGraphConfig) => {\n const applyOg = (property: string, binding?: MaybeSignal<string | null | undefined>) => {\n if (binding) applyOgBinding(property, binding);\n };\n\n applyOg('title', config.title);\n applyOg('description', config.description);\n applyOg('url', config.url);\n applyOg('type', config.type);\n applyOg('site_name', config.siteName);\n applyOg('locale', config.locale);\n applyOg('image', config.image);\n applyOg('image:url', config.imageUrl);\n applyOg('image:secure_url', config.imageSecureUrl);\n applyOg('image:type', config.imageType);\n applyOg('image:alt', config.imageAlt);\n applyOg('video', config.video);\n applyOg('video:url', config.videoUrl);\n applyOg('video:secure_url', config.videoSecureUrl);\n applyOg('video:type', config.videoType);\n applyOg('audio', config.audio);\n\n if (config.imageWidth) applyOg('image:width', toStringBinding(config.imageWidth));\n if (config.imageHeight) applyOg('image:height', toStringBinding(config.imageHeight));\n if (config.videoWidth) applyOg('video:width', toStringBinding(config.videoWidth));\n if (config.videoHeight) applyOg('video:height', toStringBinding(config.videoHeight));\n\n if (config.images) createOgArrayBinding('image')(config.images);\n if (config.videos) createOgArrayBinding('video')(config.videos);\n if (config.audios) createOgArrayBinding('audio')(config.audios);\n};\n\nexport type TwitterCardConfig = {\n card?: MaybeSignal<'summary' | 'summary_large_image' | 'app' | 'player' | null | undefined>;\n site?: MaybeSignal<string | null | undefined>;\n siteId?: MaybeSignal<string | null | undefined>;\n creator?: MaybeSignal<string | null | undefined>;\n creatorId?: MaybeSignal<string | null | undefined>;\n title?: MaybeSignal<string | null | undefined>;\n description?: MaybeSignal<string | null | undefined>;\n image?: MaybeSignal<string | null | undefined>;\n images?: MaybeSignal<string[] | null | undefined>;\n imageAlt?: MaybeSignal<string | null | undefined>;\n player?: MaybeSignal<string | null | undefined>;\n playerWidth?: MaybeSignal<string | number | null | undefined>;\n playerHeight?: MaybeSignal<string | number | null | undefined>;\n playerStream?: MaybeSignal<string | null | undefined>;\n};\n\nconst createTwitterArrayBinding = (property: string) =>\n createArrayPropertyBinding(\n (value, index) => ({\n name: `twitter:${property}`,\n content: value,\n allowMultiple: true,\n key: `twitter:${property}:${index}`,\n }),\n applyMetaBinding,\n );\n\nexport const applyTwitterCardBindings = (config: TwitterCardConfig) => {\n const applyTwitter = (property: string, binding?: MaybeSignal<string | null | undefined>) => {\n if (!binding) return;\n createPropertyBinding((content) => ({ name: `twitter:${property}`, content }), applyMetaBinding)(binding);\n };\n\n applyTwitter('card', config.card);\n applyTwitter('site', config.site);\n applyTwitter('site:id', config.siteId);\n applyTwitter('creator', config.creator);\n applyTwitter('creator:id', config.creatorId);\n applyTwitter('title', config.title);\n applyTwitter('description', config.description);\n applyTwitter('image', config.image);\n applyTwitter('image:alt', config.imageAlt);\n applyTwitter('player', config.player);\n applyTwitter('player:stream', config.playerStream);\n\n if (config.playerWidth) applyTwitter('player:width', toStringBinding(config.playerWidth));\n if (config.playerHeight) applyTwitter('player:height', toStringBinding(config.playerHeight));\n\n if (config.images) createTwitterArrayBinding('image')(config.images);\n};\n\nexport type ArticleConfig = {\n publishedTime?: MaybeSignal<string | null | undefined>;\n modifiedTime?: MaybeSignal<string | null | undefined>;\n expirationTime?: MaybeSignal<string | null | undefined>;\n author?: MaybeSignal<string | null | undefined>;\n authors?: MaybeSignal<string[] | null | undefined>;\n section?: MaybeSignal<string | null | undefined>;\n tag?: MaybeSignal<string | null | undefined>;\n tags?: MaybeSignal<string[] | null | undefined>;\n};\n\nconst createArticleArrayBinding = (property: string) =>\n createArrayPropertyBinding(\n (value, index) => ({\n property: `article:${property}`,\n content: value,\n allowMultiple: true,\n key: `article:${property}:${index}`,\n }),\n applyMetaBinding,\n );\n\nexport const applyArticleBindings = (config: ArticleConfig) => {\n const applyArticle = (property: string, binding?: MaybeSignal<string | null | undefined>) => {\n if (!binding) return;\n createPropertyBinding((content) => ({ property: `article:${property}`, content }), applyMetaBinding)(binding);\n };\n\n applyArticle('published_time', config.publishedTime);\n applyArticle('modified_time', config.modifiedTime);\n applyArticle('expiration_time', config.expirationTime);\n applyArticle('author', config.author);\n applyArticle('section', config.section);\n applyArticle('tag', config.tag);\n\n if (config.authors) createArticleArrayBinding('author')(config.authors);\n if (config.tags) createArticleArrayBinding('tag')(config.tags);\n};\n\nexport type SocialMediaConfig = {\n title?: MaybeSignal<string | null | undefined>;\n description?: MaybeSignal<string | null | undefined>;\n image?: MaybeSignal<string | null | undefined>;\n url?: MaybeSignal<string | null | undefined>;\n openGraph?: Partial<OpenGraphConfig>;\n twitter?: Partial<TwitterCardConfig>;\n article?: Partial<ArticleConfig>;\n};\n\nexport const applySocialMediaBindings = (config: SocialMediaConfig) => {\n if (config.title) applyHeadTitleBinding(config.title);\n if (config.description) applyDescriptionBinding(config.description);\n\n if (config.openGraph || config.title || config.description || config.image || config.url) {\n applyOpenGraphBindings({\n title: config.openGraph?.title ?? config.title,\n description: config.openGraph?.description ?? config.description,\n image: config.openGraph?.image ?? config.image,\n url: config.openGraph?.url ?? config.url,\n ...config.openGraph,\n });\n }\n\n if (config.twitter || config.title || config.description || config.image) {\n applyTwitterCardBindings({\n title: config.twitter?.title ?? config.title,\n description: config.twitter?.description ?? config.description,\n image: config.twitter?.image ?? config.image,\n ...config.twitter,\n });\n }\n\n if (config.article) applyArticleBindings(config.article);\n};\n","import { Directive, inject, InjectionToken, OnDestroy, OnInit } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { Observable, Subject, takeUntil } from 'rxjs';\nimport { AlternateLink, SeoConfig } from './seo.directive.types';\n\nconst mergeSeoConfig = (config: SeoConfig, parentConfig: SeoConfig): SeoConfig => {\n return {\n ...parentConfig,\n ...config,\n };\n};\n\nexport const SEO_DIRECTIVE_TOKEN = new InjectionToken<SeoDirective>('SEO_DIRECTIVE_TOKEN');\n\n/** @deprecated use binding utils instead */\n@Directive({\n providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }],\n})\nexport class SeoDirective implements OnInit, OnDestroy {\n private readonly _metaService = inject(Meta);\n private readonly _titleService = inject(Title);\n private readonly _onDeactivate$ = new Subject<boolean>();\n\n private _isDeactivated = false;\n\n readonly parent = inject(SEO_DIRECTIVE_TOKEN, { optional: true, skipSelf: true });\n\n get config(): SeoConfig {\n return this._config;\n }\n private _config: SeoConfig = {};\n\n ngOnInit(): void {\n this.parent?._deactivate();\n }\n\n ngOnDestroy(): void {\n this._deactivate();\n this._cleanUp();\n this.parent?._activate();\n }\n\n updateConfig(config: SeoConfig) {\n this._config = mergeSeoConfig(config, this.parent?.config || {});\n\n if (this._isDeactivated) {\n return;\n }\n\n this._deactivate();\n this._activate();\n }\n\n _activate() {\n this._onDeactivate$.next(false);\n this._isDeactivated = false;\n\n for (const [key, value] of Object.entries(this._config)) {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else if (Array.isArray(value)) {\n value.forEach((value) => {\n if (value instanceof Observable) {\n value.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(key, value));\n } else {\n this._update(key, value);\n }\n });\n } else if (typeof value === 'object' && value !== null) {\n for (const [subKey, subValue] of Object.entries(value)) {\n if (subValue instanceof Observable) {\n subValue.pipe(takeUntil(this._onDeactivate$)).subscribe((value) => this._update(`${key}:${subKey}`, value));\n } else {\n this._update(`${key}:${subKey}`, subValue);\n }\n }\n } else {\n this._update(key, value);\n }\n }\n }\n\n _deactivate() {\n this._onDeactivate$.next(true);\n this._isDeactivated = true;\n }\n\n private _update(key: string, value: unknown) {\n switch (key) {\n case 'title':\n if (value && typeof value === 'string') {\n this._titleService.setTitle(value);\n }\n break;\n\n case 'canonical':\n {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.setAttribute('href', value as string);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('href', value as string);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n case 'alternate':\n {\n const link = document.querySelector(`link[rel=\"${key}\"][hreflang=\"${(value as AlternateLink).hreflang}\"]`);\n\n if (link) {\n link.setAttribute('href', (value as AlternateLink).href);\n } else {\n const newLink = document.createElement('link');\n newLink.setAttribute('rel', key);\n newLink.setAttribute('hreflang', (value as AlternateLink).hreflang);\n newLink.setAttribute('href', (value as AlternateLink).href);\n document.head.appendChild(newLink);\n }\n }\n\n break;\n\n default:\n if (value !== undefined && value !== null) {\n const val = Array.isArray(value) ? value.join(', ') : (value as string);\n\n this._metaService.updateTag({ name: key, content: val });\n } else {\n this._metaService.removeTag(`name=\"${key}\"`);\n }\n break;\n }\n }\n\n private _cleanUp() {\n for (const key in this._config) {\n if (key === 'alternate') {\n const links = document.querySelectorAll(`link[rel=\"${key}\"]`);\n\n links.forEach((link) => {\n link.remove();\n });\n\n continue;\n }\n\n if (key === 'canonical') {\n const link = document.querySelector(`link[rel=\"${key}\"]`);\n\n if (link) {\n link.remove();\n }\n\n continue;\n }\n\n if (\n typeof this._config[key] === 'object' &&\n this._config[key] !== null &&\n !(this._config[key] instanceof Observable)\n ) {\n for (const subKey in this._config[key] as Record<string, unknown>) {\n const parentValue =\n this.parent?.config?.[key as keyof SeoConfig]?.[subKey as keyof SeoConfig[keyof SeoConfig]];\n\n if (parentValue === undefined) {\n this._update(`${key}:${subKey}`, undefined);\n }\n }\n } else {\n const parentValue = this.parent?.config?.[key as keyof SeoConfig];\n\n if (parentValue === undefined) {\n this._update(key, null);\n }\n }\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { inject, signal } from '@angular/core';\nimport { injectRenderer } from '../providers';\nimport { MaybeSignal } from '../signals';\nimport { createRootProvider, createStaticRootProvider } from '../utils';\nimport { applyHeadBinding } from './head-binding';\nimport * as JsonLD from './json-ld';\n\nexport type StructuredDataConfig = {\n /**\n * Where to place the JSON-LD script tag.\n * - 'head': Traditional placement, loaded before body content\n * - 'body': Google recommended, better for performance\n *\n * Note: You can also use the `StructuredDataComponent` to place structured data\n * directly within your component templates.\n *\n * @default 'body'\n */\n placement: 'head' | 'body';\n};\n\nexport const [provideStructuredDataConfig, injectStructuredDataConfig] = createStaticRootProvider<StructuredDataConfig>(\n {\n placement: 'body',\n },\n { name: 'Structured Data Config' },\n);\n\nexport const [provideStructuredDataStore, injectStructuredDataStore] = createRootProvider(\n () => {\n const document = inject(DOCUMENT);\n const renderer = injectRenderer();\n const config = injectStructuredDataConfig();\n const scripts = signal<Map<symbol, HTMLScriptElement>>(new Map());\n\n const getTargetElement = (): HTMLElement => {\n return config.placement === 'head' ? document.head : document.body;\n };\n\n const addStructuredData = (id: symbol, data: JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph) => {\n scripts.update((scriptMap) => {\n const newScripts = new Map(scriptMap);\n\n const oldScript = newScripts.get(id);\n if (oldScript && oldScript.parentNode) {\n renderer.removeChild(oldScript.parentNode, oldScript);\n }\n\n const script = renderer.createElement('script');\n\n renderer.setAttributes(script, { type: 'application/ld+json', text: JSON.stringify(data) });\n\n const target = getTargetElement();\n renderer.appendChild(target, script);\n\n newScripts.set(id, script);\n return newScripts;\n });\n };\n\n const removeStructuredData = (id: symbol) => {\n scripts.update((scriptMap) => {\n const newScripts = new Map(scriptMap);\n const script = newScripts.get(id);\n\n if (script && script.parentNode) {\n renderer.removeChild(script.parentNode, script);\n\n newScripts.delete(id);\n }\n\n return newScripts;\n });\n };\n\n return { addStructuredData, removeStructuredData };\n },\n { name: 'Structured Data Store' },\n);\n\nexport const applyStructuredDataBinding = (\n binding: MaybeSignal<JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined>,\n) => {\n const store = injectStructuredDataStore();\n const scriptId = Symbol('structured-data');\n\n applyHeadBinding(\n binding,\n (data) => store.addStructuredData(scriptId, data),\n () => store.removeStructuredData(scriptId),\n );\n};\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport * as JsonLD from './json-ld';\n\n@Component({\n selector: 'et-structured-data',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: none',\n '[innerHTML]': 'jsonLD()',\n },\n})\nexport class StructuredDataComponent {\n private sanitizer = inject(DomSanitizer);\n\n data = input<JsonLD.WithContext<JsonLD.Thing> | JsonLD.Graph | null | undefined>(null);\n\n jsonLD = computed(() => {\n const data = this.data();\n\n if (!data) {\n return null;\n }\n\n const json = data ? JSON.stringify(data, null, 2).replace(/<\\/script>/g, '<\\\\/script>') : '';\n const html = `<script type=\"application/ld+json\">${json}</script>`;\n return this.sanitizer.bypassSecurityTrustHtml(html);\n });\n}\n","import { createStaticProvider } from '../utils';\n\nexport type ThemeRGBColor = `${number} ${number} ${number}`;\nexport type ThemeHSLColor = `${number} ${number}% ${number}%`;\n\nexport type ThemeColor = ThemeRGBColor | ThemeHSLColor;\n\nexport type ThemeColorMap = {\n default: ThemeColor;\n hover: ThemeColor;\n focus?: ThemeColor;\n active: ThemeColor;\n disabled: ThemeColor;\n};\n\nexport type OnThemeColorMap = {\n default: ThemeColor;\n hover?: ThemeColor;\n focus?: ThemeColor;\n active?: ThemeColor;\n disabled?: ThemeColor;\n};\n\nexport type ThemeSwatch = {\n color: ThemeColorMap;\n onColor: OnThemeColorMap;\n};\n\nexport type Theme = {\n name: string;\n isDefault?: boolean;\n isDefaultAlt?: boolean;\n primary: ThemeSwatch;\n secondary?: ThemeSwatch;\n tertiary?: ThemeSwatch;\n};\n\nexport const createCssThemeName = (name: string) => name.replace(/([A-Z])/g, (g) => `-${g[0]!.toLowerCase()}`);\n\nexport const [ɵProvideColorThemes, injectColorThemes] = createStaticProvider<string[]>(undefined, {\n name: 'Color Themes',\n});\nexport const [ɵProvideThemesPrefix, injectThemesPrefix] = createStaticProvider('et', { name: 'Themes Prefix' });\n\nexport const provideColorThemesWithTailwind4 = (themes: Theme[], prefix = 'et') => [\n ɵProvideColorThemes(themes.map((theme) => theme.name)),\n ɵProvideThemesPrefix(prefix),\n];\n","import { isDevMode } from '@angular/core';\nimport { createCssThemeName, Theme, ThemeSwatch, ɵProvideColorThemes, ɵProvideThemesPrefix } from './theme.util';\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createSwatchCss = (swatch: string, isAlt: boolean, data: ThemeSwatch) => {\n const varSuffix = isAlt ? 'alt-' + swatch : swatch;\n const varOnSuffix = isAlt ? 'alt-' : '';\n\n return `\n --et-color-${varSuffix}: ${data.color.default};\n --et-color-${varSuffix}-hover: ${data.color.hover};\n --et-color-${varSuffix}-focus: ${data.color.focus || data.color.hover};\n --et-color-${varSuffix}-active: ${data.color.active};\n --et-color-${varSuffix}-disabled: ${data.color.disabled};\n \n --et-color-${varOnSuffix}on-${swatch}: ${data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-hover: ${data.onColor.hover || data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-focus: ${data.onColor.focus || data.onColor.hover || data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-active: ${data.onColor.active || data.onColor.default};\n --et-color-${varOnSuffix}on-${swatch}-disabled: ${data.onColor.disabled || data.onColor.default};\n `;\n};\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createRootThemeCss = (themes: Theme[]) => {\n const createVars = (name: string, swatch: ThemeSwatch) => {\n return `\n --et-color-${name}: ${swatch.color.default};\n --et-color-${name}-hover: ${swatch.color.hover};\n --et-color-${name}-focus: ${swatch.color.focus || swatch.color.hover};\n --et-color-${name}-active: ${swatch.color.active};\n --et-color-${name}-disabled: ${swatch.color.disabled};\n \n --et-color-on-${name}: ${swatch.onColor.default};\n --et-color-on-${name}-hover: ${swatch.onColor.hover || swatch.onColor.default};\n --et-color-on-${name}-focus: ${swatch.onColor.focus || swatch.onColor.hover || swatch.onColor.default};\n --et-color-on-${name}-active: ${swatch.onColor.active || swatch.onColor.default};\n --et-color-on-${name}-disabled: ${swatch.onColor.disabled || swatch.onColor.default};\n `;\n };\n\n const vars: string[] = [];\n\n for (const theme of themes) {\n const name = createCssThemeName(theme.name);\n\n if (theme.secondary || theme.tertiary) {\n vars.push(createVars(`${name}-primary`, theme.primary));\n\n if (theme.secondary) {\n vars.push(createVars(`${name}-secondary`, theme.secondary));\n }\n\n if (theme.tertiary) {\n vars.push(createVars(`${name}-tertiary`, theme.tertiary));\n }\n } else {\n vars.push(createVars(name, theme.primary));\n }\n }\n\n const css = `\n :root {\n ${vars.join('\\n')}\n }\n `;\n\n const style = document.createElement('style');\n style.id = `et-root-themes`;\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n};\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createThemeStyle = (theme: Theme, isAlt: boolean) => {\n const cssThemeName = createCssThemeName(theme.name);\n const stringSuffix = isAlt ? '-alt' : '';\n\n const selectors = [\n ...((theme.isDefault && !isAlt) || (theme.isDefaultAlt && isAlt)\n ? [':root', `.et-theme${stringSuffix}--default`]\n : []),\n `.et-theme${stringSuffix}--${cssThemeName}`,\n ];\n\n const css = `\n ${selectors.join(', ')} {\n ${createSwatchCss('primary', isAlt, theme.primary)}\n ${theme.secondary ? createSwatchCss('secondary', isAlt, theme.secondary) : ''}\n ${theme.tertiary ? createSwatchCss('tertiary', isAlt, theme.tertiary) : ''}\n }\n `;\n\n const style = document.createElement('style');\n style.id = `et-theme${stringSuffix}--${cssThemeName}`;\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n};\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createTailwindCssVar = (name: string | undefined) => (name ? `rgb(var(--${name}) / <alpha-value>)` : null);\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createTailwindRgbVar = (val: string | undefined) => (val ? `rgb(${val} / <alpha-value>)` : null);\n\n/**\n * @deprecated Migrate to Tailwind v4. Intent to remove in v6.\n */\nexport const createTailwindColorThemes = (themes: Theme[], prefix = 'et') => {\n const twThemes: Record<\n string,\n {\n DEFAULT: string;\n hover: string;\n focus: string;\n active: string;\n disabled: string;\n }\n > = {};\n\n for (const theme of themes) {\n const key = `${prefix}-${theme.name}`;\n\n twThemes[key] = {\n DEFAULT: createTailwindRgbVar(theme.primary.color.default)!,\n hover: createTailwindRgbVar(theme.primary.color.hover)!,\n focus: createTailwindRgbVar(theme.primary.color.focus) || createTailwindRgbVar(theme.primary.color.hover)!,\n active: createTailwindRgbVar(theme.primary.color.active)!,\n disabled: createTailwindRgbVar(theme.primary.color.disabled)!,\n };\n\n const keyOn = `${prefix}-on-${theme.name}`;\n\n twThemes[keyOn] = {\n DEFAULT: createTailwindRgbVar(theme.primary.onColor.default)!,\n hover: createTailwindRgbVar(theme.primary.onColor.hover) || createTailwindRgbVar(theme.primary.onColor.default)!,\n focus:\n createTailwindRgbVar(theme.primary.onColor.focus) ||\n createTailwindRgbVar(theme.primary.onColor.hover) ||\n createTailwindRgbVar(theme.primary.onColor.default)!,\n active:\n createTailwindRgbVar(theme.primary.onColor.active) || createTailwindRgbVar(theme.primary.onColor.default)!,\n disabled:\n createTailwindRgbVar(theme.primary.onColor.disabled) || createTailwindRgbVar(theme.primary.onColor.default)!,\n };\n }\n\n return twThemes;\n};\n\n/**\n * @deprecated Use provideColorThemesWithTailwind4 instead after migrating to Tailwind CSS v4. Intent to remove in v6.\n */\nexport const provideColorThemes = (themes: Theme[]) => {\n if (isDevMode()) {\n const defaultCount = themes.filter((theme) => theme.isDefault).length;\n const defaultAltCount = themes.filter((theme) => theme.isDefaultAlt).length;\n\n if (defaultCount === 0) {\n console.warn(\n 'No default theme provided. Please provide a default theme by setting the isDefault property to true on a theme.',\n );\n } else if (defaultCount > 1) {\n console.warn(\n 'More than one default theme provided. Please provide only one default theme by setting the isDefault property to true on a theme.',\n );\n }\n\n if (defaultAltCount > 1) {\n console.warn(\n 'More than one default alt theme provided. Please provide only one default alt theme by setting the isDefaultAlt property to true on a theme.',\n );\n }\n }\n\n for (const theme of themes) {\n createThemeStyle(theme, false);\n createThemeStyle(theme, true);\n }\n\n createRootThemeCss(themes);\n\n return [ɵProvideColorThemes(themes.map((theme) => theme.name)), ɵProvideThemesPrefix('et')];\n};\n","import {\n computed,\n Directive,\n effect,\n EffectRef,\n inject,\n InjectionToken,\n Injector,\n input,\n isDevMode,\n runInInjectionContext,\n untracked,\n} from '@angular/core';\nimport { setInputSignal } from '../utils';\nimport { createCssThemeName, injectColorThemes, injectThemesPrefix } from './theme.util';\n\nexport const THEME_PROVIDER = new InjectionToken<ProvideThemeDirective>('ThemeProvider');\n\n@Directive({\n selector: '[etProvideTheme]',\n providers: [{ provide: THEME_PROVIDER, useExisting: ProvideThemeDirective }],\n host: {\n '[class]': 'themeClass()',\n },\n})\nexport class ProvideThemeDirective {\n private themes = injectColorThemes({ optional: true });\n private prefix = injectThemesPrefix({ optional: true });\n private injector = inject(Injector);\n\n private currentProviderSync: EffectRef | null = null;\n\n mainTheme = input<string | null>(undefined, { alias: 'etProvideTheme' });\n altTheme = input<string | null>(undefined, { alias: 'etProvideAltTheme' });\n\n mainThemeName = computed(() => {\n const value = this.mainTheme();\n\n if (!this.themes || !value) return;\n\n if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {\n console.error(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);\n }\n\n return createCssThemeName(value);\n });\n\n altThemeName = computed(() => {\n const value = this.altTheme();\n\n if (!this.themes || !value) return;\n\n if (isDevMode() && !this.themes?.some((theme) => theme === value) && value !== null) {\n console.warn(`Theme ${value} does not exist. Please make sure to add it to provideColorThemes()`);\n }\n\n return createCssThemeName(value);\n });\n\n protected themeClass = computed(() => {\n const themes: string[] = [];\n const prefix = this.prefix || 'et';\n\n if (this.mainThemeName()) {\n themes.push(`${prefix}-theme--${this.mainThemeName()}`);\n }\n\n if (this.altThemeName()) {\n themes.push(`${prefix}-theme-alt--${this.altThemeName()}`);\n }\n\n return themes.join(' ');\n });\n\n syncWithProvider(provider: ProvideThemeDirective) {\n this.currentProviderSync?.destroy();\n\n runInInjectionContext(this.injector, () => {\n this.currentProviderSync = effect(() => {\n const provideMainTheme = provider.mainTheme();\n const provideAltTheme = provider.altTheme();\n\n untracked(() => {\n setInputSignal(this.mainTheme, provideMainTheme);\n setInputSignal(this.altTheme, provideAltTheme);\n });\n });\n });\n }\n\n stopSyncWithProvider() {\n this.currentProviderSync?.destroy();\n this.currentProviderSync = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.AnimatableDirective","DOCUMENT"],"mappings":";;;;;;;;;;;;;;;MAea,gBAAgB,GAAG,IAAI,cAAc,CAAsB,4BAA4B;MAiBvF,mBAAmB,CAAA;AAwB9B,IAAA,WAAA,GAAA;AAvBQ,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAExD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAQ;AAC5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAqB;QAEvD,IAAA,CAAA,oBAAoB,GAAG,CAAC;AACxB,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC;QAE1D,IAAA,CAAA,oBAAoB,GAAa,EAAE;AAG3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClF,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAA,CAAA,0BAA0B,GAAuB,IAAI,CAAC;AACpD,cAAE,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAC1F,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;cAEzE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;QAG5E,IAAI,YAAY,GAAG,KAAK;AACxB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAExC,QAAA,KAAK,CACH,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAC5G,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClD,GAAG,CAAC,MAAM,OAAgB,CAAC,CAC5B,EACD,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,cAAc,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CACxG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClD,GAAG,CAAC,MAAM,KAAc,CAAC,CAC1B,EACD,KAAK,CAAC,SAAS,CAAiB,EAAE,EAAE,iBAAiB,CAAC,EAAE,SAAS,CAAkB,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAC9G,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAClD,GAAG,CAAC,MAAM,QAAiB,CAAC,CAC7B;AAEA,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,SAAS,KAAI;YAChB,QAAQ,SAAS;gBACf,KAAK,OAAO,EAAE;AACZ,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,KAAK,CAAC;AACxD,oBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;oBAElC,IAAI,gBAAgB,EAAE;wBACpB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;oBAClE;oBAEA,IAAI,CAAC,YAAY,EAAE;wBACjB,YAAY,GAAG,IAAI;AACnB,wBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE;oBACpC;oBAEA;gBACF;AACA,gBAAA,KAAK,KAAK;gBACV,KAAK,QAAQ,EAAE;AACb,oBAAA,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE;AACjC,wBAAA,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;wBAEnC,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,IAAI,YAAY,EAAE;4BACnD,YAAY,GAAG,KAAK;AACpB,4BAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gCAC7B,SAAS,EAAE,SAAS,KAAK,QAAQ;gCACjC,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,6BAAA,CAAC;AACF,4BAAA,IAAI,CAAC,uBAAuB,GAAG,SAAS;wBAC1C;oBACF;yBAAO;AACL,wBAAA,OAAO,CAAC,IAAI,CACV,GAAG,EAAE,CAAC,OAAO,CAAA,sFAAA,EAAyF,YAAY,GAAG,EAAE,GAAG,MAAM,CAAA,QAAA,CAAU,CAC3I;oBACH;oBACA;gBACF;;AAEJ,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;AAEA,IAAA,eAAe,CAAC,EAAU,EAAA;AACxB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IACpC;AAEQ,IAAA,0BAA0B,CAAC,KAAa,EAAA;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,KAAK;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AAEtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU;AACtC,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC;IACjD;8GAjGW,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAPnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,gBAAgB;AACzB,gBAAA,WAAW,EAAE,mBAAmB;AACjC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,gBAAgB;AACzB,4BAAA,WAAW,EAAA,mBAAqB;AACjC,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AC/BD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB;AAEvC,MAAM,iBAAiB,GAAG,CAAC,MAAc,KAAI;IAClD,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;AAEhC,IAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,EAAE,EAAE;AAC1B;;ACJO,MAAM,aAAa,GAAG,MAAK;IAChC,wBAAwB,CAAC,aAAa,CAAC;AAEvC,IAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAW;AAEvC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAE9B,IAAA,GAAG,CAAC,SAAS,CAAC,MAAK;AACjB,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,QAAQ,CAAC,QAAQ,EAAE;AACrB,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC,YAAY,EAAE;AAChC;;ACbO,MAAM,iBAAiB,GAAG,MAAuB,MAAM,CAAgB,UAAU,CAAC,CAAC;AAEnF,MAAM,iBAAiB,GAAG,MAAmB,MAAM,CAAiB,WAAW;AA4CtF,MAAM,oBAAoB,GAAG,CAAI,KAAwB,KAAI;IAI3D,SAAS,QAAQ,CAAC,OAAuB,EAAA;AACvC,QAAA,OAAO,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACzD;AACA,IAAA,OAAO,QAAQ;AACjB,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,KAAwB,EACxB,OAAgB,EAChB,UAAoC,KACrB;AACf,IAAA,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;IACvC,IAAI,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;CACrE;MAEY,cAAc,GAAG,CAAI,OAAgB,EAAE,OAA+B,KAAuB;AACxG,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACnF,IAAA,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;MAEa,kBAAkB,GAAG,CAAI,OAAgB,EAAE,OAA+B,KAAuB;AAC5G,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;AAClF,QAAA,UAAU,EAAE,MAAM;QAClB,OAAO;AACR,KAAA,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;MAEa,oBAAoB,GAAG,CAAI,YAAgB,EAAE,OAA+B,KAA6B;AACpH,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAE1F,IAAA,MAAM,OAAO,GAAG,CAAC,aAA0B,KAAK;AAC9C,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;QAC3E,IAAI,OAAO,EAAE,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;KACxG;AAED,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;MAEa,wBAAwB,GAAG,CACtC,YAAgB,EAChB,OAA+B,KACJ;AAC3B,IAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAI,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,EAAE;AACzF,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,OAAO,EAAE,MAAM,YAAiB;AACjC,KAAA,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,CAAC,aAA0B,KAAK;AAC9C,QAAA,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE;QAC3E,IAAI,OAAO,EAAE,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;KACxG;AAED,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU;AAC5C;AAEA,MAAM,gBAAgB,GAAG,CAAI,YAA2B,EAAE,aAA0B,KAAI;IACtF,IAAI,aAAa,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACrE,QAAA,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,aAAa,EAAE;IAC9C;IAEA,OAAO,aAAa,IAAI,YAAY;AACtC,CAAC;;AC5HD;AACO,MAAM,cAAc,GAAG,CAA2B,SAAY,KAAI;AACvE,IAAA,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAE,UAAqB,KAAI;AAC7D,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAE;AAEpC,YAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAChC,gBAAA,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;AAEjF,gBAAA,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;AAExC,gBAAA,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;YACnC;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;;AAEvC,gBAAA,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAM,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;gBAE3F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACnC,oBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAChC,wBAAA,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;wBACjF,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC;AACpD,wBAAA,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;oBACpC;yBAAO;wBACL,MAAM,gBAAgB,GAAG,IAAI,WAAW,CACtC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACpD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,CACvB;AACD,wBAAA,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBAC1C;AACF,gBAAA,CAAC,CAAC;AAEF,gBAAA,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAC/C;iBAAO;gBACL,MAAM,YAAY,GAAG,IAAI,WAAW,CAClC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EACpD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,CACvB;AAED,gBAAA,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,UAAU;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3D,IAAA,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;IACpC,UAAU,CAAC,sBAAsB,EAAE;AAEnC,IAAA,OAAO,UAAe;AACxB;AAEO,MAAM,iBAAiB,GAAG,CAAsB,SAAY,KAAI;IACrE,MAAM,KAAK,GAA4B,EAAE;AAEzC,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAE;AAExC,QAAA,IAAI,OAAO,YAAY,SAAS,EAAE;YAChC,KAAK,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACzC;AAAO,aAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACvC,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;AAC5C,gBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AAChC,oBAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC;gBACnC;qBAAO;AACL,oBAAA,OAAO,OAAO,CAAC,KAAK,IAAI,IAAI;gBAC9B;AACF,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI;QACpC;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AACd;;MCzEa,oBAAoB,GAAG,CAClC,SAAY,EACZ,OAA8B,KAC5B;IACF,MAAM,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAA4B;IAExF,MAAM,UAAU,GAAG;UACf,SAAS,CAAyB,OAAO,EAAE,SAAS,EAAE,OAAO;AAC/D,UAAE,SAAS,CAAyB,OAAO,EAAE,SAAS,CAAC;AAEzD,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9C;AAEO,MAAM,iBAAiB,GAAG,CAC/B,SAAY,EACZ,OAAgD,EAChD,OAA8B,KAC3B,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO;MAElD,kBAAkB,GAAG,CAChC,SAEE,EACF,OAA8B,KAC5B;AACF,IAAA,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,SAAsC,CAAC;QAEjE,IAAI,OAAO,EAAE;;AAEX,YAAA,iBAAiB,CAAC,SAAsC,EAAE,OAAc,EAAE,OAAO,CAAC;QACpF;IACF;AACF;;AClCM,MAAO,cAAkB,SAAQ,SAAY,CAAA;AACjD,IAAA,IAAa,OAAO,GAAA;QAClB,OAAO,KAAK,CAAC,OAAwC;IACvD;AACD;SAEe,sBAAsB,GAAA;AACpC,IAAA,OAAO,UAAgE,MAAqB,EAAA;AAC1F,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAkB;AAC9G,IAAA,CAAC;AACH;;ACVA;;;AAGG;MACU,cAAc,GAAG,CAAI,KAA4D,EAAE,KAAQ,KAAI;AAC1G,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;AAE1B,IAAA,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AAC1B;;ACTO,MAAM,qBAAqB,GAAG;AAe9B,MAAM,0BAA0B,GAAG,CAAC,MAAwC,KAAiB;IAClG,OAAO,CAAC,SAA0B,KAA6B;AAC7D,QAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM;QAEnC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,CAAC,qBAAqB,GAAG,IAAI,EAAE;QAC1C;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AAElE,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CACrC,CAAC,KAAK,KACJ,KAAK,KAAK,IAAI;AACd,YAAA,KAAK,KAAK,SAAS;AACnB,YAAA,KAAK,KAAK,EAAE;AACZ,aAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5C,aAAC,UAAU,IAAI,KAAK,KAAK,KAAK,CAAC,CAClC;QAED,IAAI,WAAW,EAAE;AACf,YAAA,OAAO,EAAE,CAAC,qBAAqB,GAAG,IAAI,EAAE;QAC1C;AAEA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AACH;AAEO,MAAM,kBAAkB,GAAG;AAE3B,MAAM,eAAe,GAAG,CAAC,OAAwB,KAA6B;AACnF,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAC3B,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,kBAAkB,GAAG,IAAI,EAAE;AACjE;AAEO,MAAM,QAAQ,GAAG;AAEjB,MAAM,OAAO,GAAG,CAAC,OAAwB,KAA6B;AAC3E,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;IAC3B,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,KAAK,GAAG,yCAAyC;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE;AACxD;AAEO,MAAM,UAAU,GAAG;MAEb,SAAS,GAAG,CAAC,WAAmB,EAAE,mBAA2B,KAAI;IAC5E,OAAO,CAAC,SAA0B,KAAI;QACpC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1C,MAAM,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAE1D,QAAA,IAAI,eAAe,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AAClE,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,OAAO,EAAE,KAAK,KAAK,eAAe,EAAE,KAAK,EAAE;YAC7C,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;AAClD,YAAA,OAAO,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE;QAC/B;aAAO;AACL,YAAA,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC;AAChC,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AACH;AAEO,MAAM,UAAU,GAAG;IACxB,SAAS;IACT,OAAO;IACP,eAAe;IACf,0BAA0B;;;AC5F5B;AACA;AAEA;;;;;;;;;;;;;AAaG;AAEH,MAAM,GAAG,GAAG,CAAC,GAAQ,EAAE,GAAQ,EAAE,GAAQ,KAAI;AAC3C,IAAA,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,KAAK,WAAW,EAAE;QACtG,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACtC;;AAAO,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK;AAC7B,CAAC;AAEM,MAAM,KAAK,GAAG,CAAI,QAAW,KAAO;IACzC,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,QAAA,OAAO,QAAQ;IAEjD,IAAI,GAAG,GAAG,QAAe;IAEzB,IAAI,CAAC,GAAG,CAAC,EACP,CAAC,EACD,IAAI,EACJ,GAAQ,EACR,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3C,IAAA,IAAI,GAAG,KAAK,iBAAiB,EAAE;QAC7B,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C;AAAO,SAAA,IAAI,GAAG,KAAK,gBAAgB,EAAE;AACnC,QAAA,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB;AAAO,SAAA,IAAI,GAAG,KAAK,cAAc,EAAE;AACjC,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE;AACf,QAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAQ,EAAA;YAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrB,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IAAI,GAAG,KAAK,cAAc,EAAE;AACjC,QAAA,GAAG,GAAG,IAAI,GAAG,EAAE;AACf,QAAA,GAAG,CAAC,OAAO,CAAC,UAAU,GAAQ,EAAE,GAAQ,EAAA;AACtC,YAAA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;AAAO,SAAA,IAAI,GAAG,KAAK,eAAe,EAAE;AAClC,QAAA,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;IACtB;AAAO,SAAA,IAAI,GAAG,KAAK,iBAAiB,EAAE;AACpC,QAAA,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;IACzC;AAAO,SAAA,IAAI,GAAG,KAAK,mBAAmB,EAAE;AACtC,QAAA,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C;AAAO,SAAA,IAAI,GAAG,KAAK,sBAAsB,EAAE;AACzC,QAAA,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACpB;SAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;;;QAGrC,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC;IAChC;IAEA,IAAI,GAAG,EAAE;AACP,QAAA,KAAK,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QACnE;QAEA,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAAE;AAC1E,YAAA,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD;IACF;IAEA,OAAO,GAAG,IAAI,GAAG;AACnB;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AAEH,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc;AAE3C,SAAS,IAAI,CAAC,IAAS,EAAE,GAAQ,EAAE,GAAS,EAAA;AAC1C,IAAA,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACvB,QAAA,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;AAAE,YAAA,OAAO,GAAG;IACjC;AACF;MAEa,KAAK,GAAG,CAAC,GAAQ,EAAE,GAAQ,KAAI;AAC1C,IAAA,IAAI,IAAS,EAAE,GAAQ,EAAE,GAAQ;IACjC,IAAI,GAAG,KAAK,GAAG;AAAE,QAAA,OAAO,IAAI;AAE5B,IAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,WAAW,EAAE;QAC9D,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;QACzD,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;AAE7D,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE;AACrC,gBAAA,OAAO,GAAG,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBAAC;YAC5C;AACA,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC;QACnB;AAEA,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;AACzB,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,KAAK,GAAG,IAAI,GAAG,EAAE;gBACf,GAAG,GAAG,GAAG;AACT,gBAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACpB,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK;gBACxB;AACA,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,KAAK;YACjC;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE;AACzB,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,KAAK,GAAG,IAAI,GAAG,EAAE;AACf,gBAAA,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AACZ,gBAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,oBAAA,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACpB,oBAAA,IAAI,CAAC,GAAG;AAAE,wBAAA,OAAO,KAAK;gBACxB;AACA,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAChC,oBAAA,OAAO,KAAK;gBACd;YACF;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;AACzB,YAAA,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC;QAC3B;AAAO,aAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,UAAU,EAAE;AAC7C,gBAAA,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAC;YACxD;AACA,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC;QACnB;AAEA,QAAA,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,UAAU,EAAE;;;gBAG7C,OAAO,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;oBAAC;YACxC;AACA,YAAA,OAAO,GAAG,KAAK,CAAC,CAAC;QACnB;QAEA,IAAI,CAAC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACpC,GAAG,GAAG,CAAC;AACP,YAAA,KAAK,IAAI,IAAI,GAAG,EAAE;gBAChB,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;AAAE,oBAAA,OAAO,KAAK;AACtE,gBAAA,IAAI,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,KAAK;YAClE;YACA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,GAAG;QACxC;IACF;AAEA,IAAA,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG;AACnC;;AC9LO,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;AACxC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;QAC3C,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;AACxC,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,SAAS,GAAG,CAAC,IAAY,KAAI;AACxC,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;;IAGA,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA,EAAA,EAAK,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E;MAEa,SAAS,GAAG,CACvB,IAAY,EACZ,IAAY,EACZ,aAA6B,EAC7B,MAAM,GAAG,SAAS,EAAE,EACpB,IAAI,GAAG,GAAG,EACV,QAAA,GAAsC,KAAK,KACzC;AACF,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC;IACF;AAEA,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE;AAE5C,IAAA,MAAM,OAAO,GAAG,aAAa,IAAI,EAAE;IAEnC,IAAI,YAAY,GAAG,CAAA,EAAG,IAAI,IAAI,IAAI,CAAA,OAAA,EAAU,IAAI,CAAA,CAAE;AAElD,IAAA,IAAI,aAAa,KAAK,IAAI,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5D,QAAA,YAAY,IAAI,CAAA,UAAA,EAAa,IAAI,CAAC,WAAW,EAAE,EAAE;IACnD;AAEA,IAAA,YAAY,IAAI,CAAA,SAAA,EAAY,MAAM,CAAA,WAAA,EAAc,aAAa,GAAG;AAChE,IAAA,QAAQ,CAAC,MAAM,GAAG,YAAY;AAChC;AAEO,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,KAAI;AAC7E,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AACnB,QAAA,QAAQ,CAAC,MAAM;YACb,IAAI;gBACJ,GAAG;iBACF,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;iBAC5B,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;AACnC,gBAAA,wCAAwC;IAC5C;AACF;AAEO,MAAM,SAAS,GAAG,MAAK;AAC5B,IAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ;AAEzC,IAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;AAClC,QAAA,OAAO,WAAW;IACpB;IAEA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC;IAE1D,IAAI,QAAQ,EAAE;AACZ,QAAA,OAAO,QAAQ;IACjB;IAEA,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAErC,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,QAAA,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAChF;AAEA,IAAA,OAAO,QAAQ;AACjB;;MChFa,eAAe,CAAA;AAM1B,IAAA,WAAA,CAA4B,GAAW,EAAA;QAAX,IAAA,CAAA,GAAG,GAAH,GAAG;AALd,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AAExC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;IAEV;AAE1C,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO;AAEzB,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAEzB,KAAK,CAAC,GAAG;AACN,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;iBAClC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC;aAAO;YACL,IAAI,CAAC,KAAK,EAAE;QACd;AAEA,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK;IAClC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AACD;;ACiCD;;AAEG;AACI,MAAM,oBAAoB,GAAG,CAClC,MAA2B,EAC3B,OAAA,GAAuC,EAAE,KACjB;AACxB,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7B,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI;AACzC,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO;AACxC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,CAAC,CAAS,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7D,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC;AAC9C,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,yDAAC;IAE1C,IAAI,KAAK,GAAkB,IAAI;IAC/B,IAAI,oBAAoB,GAAG,YAAY;IAEvC,MAAM,eAAe,GAAG,MAAK;AAC3B,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,oBAAoB,CAAC,KAAK,CAAC;YAC3B,KAAK,GAAG,IAAI;QACd;AACF,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,EAA0B;IAEzE,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM;AAExD,QAAA,eAAe,EAAE;QAEjB,MAAM,UAAU,GAAG,oBAAoB;AACvC,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;AACnC,QAAA,MAAM,KAAK,GAAG,WAAW,GAAG,UAAU;;AAGtC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,OAAO,CAAC,cAAc,IAAI;AAC1B,YAAA,OAAO,cAAc;QACvB;AAEA,QAAA,OAAO,CAAC,gBAAgB,IAAI;AAE5B,QAAA,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC5B,YAAA,MAAM,OAAO,GAAG,CAAC,SAAiB,KAAI;AACpC,gBAAA,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS;AACrC,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;AAChD,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEtC,gBAAA,MAAM,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa;gBAChD,oBAAoB,GAAG,KAAK;gBAE5B,SAAS,CAAC,MAAK;oBACb,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjC,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AAChB,oBAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC;gBACxC;qBAAO;oBACL,KAAK,GAAG,IAAI;AAEZ,oBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;AACd,wBAAA,OAAO,CAAC,cAAc,IAAI;AAC5B,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC;AAED,YAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;IAED,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,eAAe,EAAE;QACjB,oBAAoB,GAAG,YAAY;AACnC,QAAA,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;AAC/B,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,eAAe,EAAE;AACjB,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;AAED,IAAA,cAAc,CAAC,IAAI,GAAG,IAAI;AAC1B,IAAA,cAAc,CAAC,KAAK,GAAG,KAAK;AAC5B,IAAA,cAAc,CAAC,IAAI,GAAG,IAAI;AAE1B,IAAA,OAAO,cAAc;AACvB;AAEA;AACO,MAAM,UAAU,GAAG,CAAC,CAAS,KAAK;AAEzC;AACO,MAAM,MAAM,GAAG,CAAC,CAAS,KAAK,CAAC,GAAG;AAEzC;AACO,MAAM,OAAO,GAAG,CAAC,CAAS,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAEhD;AACO,MAAM,SAAS,GAAG,CAAC,CAAS,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAEnF;AACO,MAAM,WAAW,GAAG,CAAC,CAAS,KAAI;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC;AAC9F;AAEA;AACO,MAAM,WAAW,GAAG,CAAC,CAAS,KAAI;IACvC,MAAM,EAAE,GAAG,OAAO;AAClB,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9D;AAEA;AACO,MAAM,iBAAiB,GAAG,CAAC,CAAS,KAAI;IAC7C,MAAM,EAAE,GAAG,GAAG;AACd,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC9D;;MC/Ka,kBAAkB,GAAG,CAIhC,OAAsB,EACtB,OAAmC,KACjC;AAGF,IAAA,MAAM,eAAe,GAAG,CAAC,IAA6D,KAAmB;AACvG,QAAA,IAAI;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;QACzF;AAAE,QAAA,MAAM;;AAEN,YAAA,OAAO,IAAI;QACb;AACF,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;AAE7C,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO;AACpC,UAAE,YAAY,CAAyB,OAAO;AAC9C,UAAE,EAAE,CAAyB,OAAO,CAAC;IAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CACnC,SAAS,CAAC,CAAC,IAAI,KAAI;AACjB,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AAE1B,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE;AACtB,cAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3D,cAAE,IAAI,CAAC,YAAY;QAErB,OAAO,MAAM,CAAC,IAAI,CAChB,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAC9B;IACH,CAAC,CAAC,CACH;IAED,MAAM,GAAG,GAA8B,CAAC,OAAO,EAAE,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,GAAG,UAAU;IAEjH,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QACrE,YAAY;AACb,KAAA,CAAC;AACJ;AAEA;;AAEG;MACU,8BAA8B,GAAG,CAC5C,OAAU,EACV,OAAmC,KACjC;IAGF,MAAM,IAAI,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,GAAA,EAAA,CAAA,EACvB,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC5C,QAAA,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,IAAI,CAAC,GACzD;AAEF,IAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AAC1B;;ACrCO,MAAM,eAAe,GAAG,CAAC,EAAW,KAAyB;AAClE,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,KAAK;AAE/B,IAAA,MAAM,GAAG,GAAG,EAAE,EAAE;AAChB,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,iBAAiB,IAAI,GAAG,IAAI,kBAAkB,IAAI,GAAG;AACzG;AAEO,MAAM,2BAA2B,GAAG,MAAoB;IAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,eAAe;AACxD,IAAA,OAAO,MAAM,CAAC;QACZ,eAAe,EAAE,CAAC,eAAe,CAAC;AAClC,QAAA,gBAAgB,EAAE,EAAE;AACrB,KAAA,CAAC;AACJ;MAEa,wBAAwB,GAAG,MACtC,MAAM,CAAC;AACL,IAAA,eAAe,EAAE,EAAE;AACnB,IAAA,gBAAgB,EAAE,EAAE;AACrB,CAAA;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAgB,EAAE,CAAgB,KAAa;IAC5E,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AACxB,IAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AAEvC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;IACjC;AACA,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,2BAA2B,GAAG,CAAC,CAAqB,EAAE,CAAqB,KAC/E,qBAAqB,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC;IAC3D,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC;AAExD,MAAM,kBAAkB,GAAG,CAAC,EAA+C,KAAmB;AACnG,IAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,wBAAwB,EAAE;IACtE,IAAI,eAAe,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,EAAE;IAElC,IAAI,EAAE,YAAY,WAAW,IAAI,EAAE,YAAY,UAAU,EAAE;AACzD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO,wBAAwB,EAAE;AAE/C,QAAA,OAAO,MAAM,CAAC;YACZ,eAAe,EAAE,CAAC,OAAO,CAAC;AAC1B,YAAA,gBAAgB,EAAE,EAAE;AACrB,SAAA,CAAC;IACJ;IAEA,IAAI,QAAQ,CAAC,EAAE,CAAC;AAAE,QAAA,OAAO,6BAA6B,CAAC,EAAE,CAAC;AAE1D,IAAA,OAAO,iCAAiC,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;AACxE;AAEA,MAAM,6BAA6B,GAAG,CAAC,KAA8C,KAAmB;AACtG,IAAA,OAAO,YAAY,CAAC;AAClB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAI;AAChC,YAAA,MAAM,eAAe,GAAG,yBAAyB,CAAC,MAAM,CAAC;YACzD,MAAM,gBAAgB,GAAG,QAAQ,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;YAE9D,OAAO;gBACL,eAAe;gBACf,gBAAgB;aACjB;QACH,CAAC;AACD,QAAA,KAAK,EAAE,2BAA2B;AACnC,KAAA,CAAC;AACJ,CAAC;AAED,MAAM,iCAAiC,GAAG,CAAC,SAAoC,KAAmB;IAChG,OAAO,QAAQ,CACb,SAAS,CAAC,IAAI,CACZ,SAAS,CAAC,EAAE,CAAC,EACb,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,gBAAgB,EAAE,eAAe,CAAC,KAAI;QAC1C,IAAI,SAAS,EAAE,EAAE;YACf,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,YAAY,WAAW,CAAC,CAAC;YACvF,IAAI,cAAc,EAAE;AAClB,gBAAA,OAAO,CAAC,KAAK,CACX,4JAA4J,EAC5J,cAAc,CACf;YACH;QACF;QAEA,OAAO;YACL,gBAAgB;YAChB,eAAe;SAChB;IACH,CAAC,CAAC,CACH,EACD;AACE,QAAA,YAAY,EAAE;AACZ,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,eAAe,EAAE,EAAE;AACpB,SAAA;AACD,QAAA,KAAK,EAAE,2BAA2B;AACnC,KAAA,CACe;AACpB,CAAC;AAED,MAAM,yBAAyB,GAAG,CAAC,KAAsC,KAAmB;AAC1F,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,EAAE;AAEpD,IAAA,MAAM,KAAK,GAAG,KAAK,YAAY,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;IAEnG,MAAM,MAAM,GAAkB,EAAE;AAChC,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,EAAE;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACzB;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAED,MAAM,wBAAwB,GAAG,CAC/B,KAAqG,KACxE;AAC7B,IAAA,IAAI,KAAK,YAAY,SAAS,EAAE;QAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CACvB,SAAS,CAAC,KAAK,CAAC,EAChB,GAAG,CAAC,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAC5C;IACH;IAEA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACnD,CAAC;AAEM,MAAM,kBAAkB,GAAG,CAAC,EAAiB,KAClD,QAAQ,CACN,MAAK;IACH,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE;IAElD,IAAI,SAAS,EAAE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,QAAA,OAAO,CAAC,IAAI,CACV,oFAAoF,EACpF,eAAe,CAChB;IACH;IAEA,OAAO;AACL,QAAA,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI;AAC1C,QAAA,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI;KAC7C;AACH,CAAC,EACD;IACE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,eAAe,KAAK,CAAC,CAAC,eAAe;AAClG,CAAA;;ACvLE,MAAM,gBAAgB,GAAG,MAAK;AACnC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;IAEhC,eAAe,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE3C,IAAA,OAAO,UAAU,CAAC,UAAU,EAAE;AAChC;AAEO,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,iDAAC;IAE3B,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CACX,8IAA8I,CAC/I;QACH;AACF,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC1C;AACH;AAEO,MAAM,sBAAsB,GAAG,MAAK;AACzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,iDAAC;IAE3B,SAAS,CAAC,MAAK;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE;KAC1B;AACH;;MClCa,sBAAsB,GAAG,CAAC,EAA4B,EAAE,OAA8B,KAAI;AACrG,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,sBAAsB,GAAG,MAAM,CAAwB,IAAI,kEAAC;IAElE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAI;QAC1C,IAAI,CAAC,UAAU,EAAE;YAAE;AAEnB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAElB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE;AAErB,QAAA,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;AAEhC,QAAA,IAAI,GAAG,CAAC,eAAe,EAAE;YACvB,QAAQ,CAAC,UAAU,EAAE;QACvB;AAEA,QAAA,IAAI,GAAG,CAAC,cAAc,EAAE;YACtB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC;QAC/C;AACF,IAAA,CAAC,CAAC;IAEF,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAEjD,IAAA,OAAO,sBAAsB,CAAC,UAAU,EAAE;AAC5C;AAEO,MAAM,0BAA0B,GAAG,CAAC,OAA8B,KACvE,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO;;ACtC7C,MAAM,qBAAqB,GAAG,CAAC,EAA4B,KAAI;AACpE,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;IACrC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAE/G,OAAO,QAAQ,CACb,MAAK;QACH,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,EAAE;AAE5B,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE;;;AAIrB,QAAA,gBAAgB,EAAE;QAElB,IAAI,CAAC,GAAG,CAAC,cAAc;AAAE,YAAA,OAAO,EAAE;QAElC,MAAM,QAAQ,GAAkB,EAAE;AAElC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACvE,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AAElD,YAAA,IAAI,OAAO,YAAY,WAAW,EAAE;AAClC,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACxB;QACF;AAEA,QAAA,OAAO,QAAQ;AACjB,IAAA,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5E;AACH;;MCZa,kBAAkB,GAAG,CAChC,EAA4B,EAC5B,MAAmC,KACjC;AACF,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,MAAM,CAAC,MAAK;QACV,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,QAAQ,EAAE;AAExD,QAAA,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE;AACzC,YAAA,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE;YAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;AACvC,iBAAA,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC3B,iBAAA,IAAI,EAAE;YAET,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE;AAEpB,YAAA,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;QACtC;AAEA,QAAA,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE;AACvC,YAAA,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE;AAE1C,YAAA,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACjE,SAAS,CAAC,MAAK;oBACb,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE;oBAExB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACrD,gBAAA,CAAC,CAAC;YACJ;QACF;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,OAAO,GAA8B,EAAE;IAE7C,MAAM,GAAG,GAAG,CAAC,MAAc,KAAK,MAAM,IAAI,OAAO;AAEjD,IAAA,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,MAAuB,KAAI;QACvD,IAAI,GAAG,CAAC,MAAM,CAAC;YAAE;AAEjB,QAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAK;AACnC,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAK;AAC5B,gBAAA,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;AACvD,gBAAA,MAAM,KAAK,GAAG,MAAM,EAAE;AAEtB,gBAAA,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE;oBAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;oBACpC,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE;oBAExB,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC;gBACxC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,GAAoC,KAAI;AACxD,QAAA,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAClD,YAAA,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;QACtB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,MAAc,KAAI;AAChC,QAAA,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;AAE1B,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC;QAEtB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC,eAAe,EAAE;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE;AAExB,YAAA,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC;QAClC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,MAAgB,KAAI;AACtC,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC;QACf;AACF,IAAA,CAAC;AAED,IAAA,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AACpD;MAEa,aAAa,GAAG,CAA4C,EAA4B,EAAE,QAAW,KAAI;AACpH,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,OAAO,kBAAkB,CAAC,EAAE,EAAE;AAC5B,QAAA,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrF,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAI;YAClC,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D;iBAAO;AACL,gBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD;QACF,CAAC;AACF,KAAA,CAAC;AACJ;AAEO,MAAM,iBAAiB,GAAG,CAA4C,QAAW,KACtF,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ;AAE5C,MAAM,0BAA0B,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;MAEpG,gBAAgB,GAAG,CAC9B,EAA4B,EAC5B,YAAe,KACb;AACF,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,OAAO,kBAAkB,CAAC,EAAE,EAAE;AAC5B,QAAA,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/E,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAI;AAClC,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,gBAAA,IAAI,0BAA0B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;oBAC9C,IAAI,SAAS,EAAE;wBACb,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;oBACtC;yBAAO;AACL,wBAAA,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC;oBACrC;oBACA;gBACF;gBAEA,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjD,oBAAA,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC;gBACrC;qBAAO;oBACL,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,SAAS,CAAA,CAAE,CAAC;gBAClD;YACF;QACF,CAAC;AACF,KAAA,CAAC;AACJ;AAEO,MAAM,oBAAoB,GAAG,CAA4C,YAAe,KAC7F,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,YAAY;MAEtC,YAAY,GAAG,CAA4C,EAA4B,EAAE,QAAW,KAAI;AACnH,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,OAAO,kBAAkB,CAAC,EAAE,EAAE;AAC5B,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KACpB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAkC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAC3F;QACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAI;AAClC,YAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBAC1B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;oBACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAkC,EAAE,mBAAmB,CAAC,QAAQ,CAAC;gBAC5F;qBAAO;AACL,oBAAA,QAAQ,CAAC,QAAQ,CACf,EAAE,EACF;AACE,wBAAA,CAAC,KAAK,GAAG,CAAA,EAAG,SAAS,CAAA,CAAE;AACxB,qBAAA,EACD,mBAAmB,CAAC,QAAQ,CAC7B;gBACH;YACF;QACF,CAAC;AACF,KAAA,CAAC;AACJ;AAEO,MAAM,gBAAgB,GAAG,CAA4C,QAAW,KACrF,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ;;MCzK9B,+BAA+B,GAAG,CAAC,IAAqB,MAAmB;IACtF,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,CAAC,EAAE,IAAI,CAAC,CAAC;AACV,CAAA;MAEY,uBAAuB,GAAG,CAAC,EAAsB,EAAE,IAAc,KAA+B;IAC3G,IAAI,CAAC,EAAE,EAAE;QACP,OAAO;AACL,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;SACb;IACH;AAEA,IAAA,MAAM,oBAAoB,GAAG,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,IAAI;IAChF,MAAM,MAAM,GAAG,MACb,oBAAoB,GAAG,oBAAoB,GAAG,+BAA+B,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;IAE3G,OAAO;AACL,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE;AAC1D,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE;AAC1D,QAAA,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,EAAE;KAC3D;AACH;AAaO,MAAM,uBAAuB,GAAG,CAAC,EAA4B,KAAI;AACtE,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC;AAE5E,IAAA,MAAM,uBAAuB,GAAG,MAAM,CAA4B,YAAY,EAAE,mEAAC;IAEjF,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,KAAI;QACxC,IAAI,CAAC,UAAU,EAAE;YAAE;AAEnB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAElB,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,YAAA,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC;AAErD,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,uBAAuB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5D;AACF,IAAA,CAAC,CAAC;IAEF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,GAAG,GAAG,OAAO,EAAE;QAErB,SAAS,CAAC,MAAK;AACb,YAAA,uBAAuB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAE3C,YAAA,IAAI,GAAG,CAAC,eAAe,EAAE;gBACvB,QAAQ,CAAC,UAAU,EAAE;YACvB;AAEA,YAAA,IAAI,GAAG,CAAC,cAAc,EAAE;gBACtB,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO;AACpE,gBAAA,MAAM,2BAA2B,GAAG,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAE3F,IAAI,eAAe,KAAK,QAAQ,IAAI,SAAS,EAAE,IAAI,2BAA2B,EAAE;AAC9E,oBAAA,OAAO,CAAC,KAAK,CACX,CAAA,SAAA,EAAY,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,CAAA,0JAAA,CAA4J,CAClN;gBACH;AAEA,gBAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;IAEF,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AAEjD,IAAA,OAAO,QAAQ,CAAC,MAAM,uBAAuB,EAAE,EAAE;AAC/C,QAAA,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,KAAA,CAAC;AACJ;AAEO,MAAM,2BAA2B,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC;;ACtG3F,MAAM,oBAAoB,GAAG,CAAC,KAAgC,KAAI;AAChE,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,kBAAkB;AAC7C,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU;IAEnC,IAAI,OAAO,GAAG,KAAK;IACnB,IAAI,OAAO,GAAG,KAAK;IACnB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,OAAO,GAAG,KAAK;IAEnB,IAAI,UAAU,EAAE;QACd,OAAO,GAAG,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG;QAC9C,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM;QAC9C,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI;QAC7C,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK;IAChD;;AAGA,IAAA,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC;IAE5F,OAAO;QACL,OAAO;QACP,OAAO;QACP,MAAM;QACN,OAAO;QACP,SAAS;KACV;AACH,CAAC;MAEY,yBAAyB,GAAG,CAAC,EAA4B,EAAE,OAA0C,KAAI;AACpH,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,wBAAwB,EAAE,CAAC;AAC/G,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;IACrC,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;AAElD,IAAA,MAAM,yBAAyB,GAAG,MAAM,CAAyC,EAAE,qEAAC;AACpF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA8B,IAAI,oDAAC;AAE1D,IAAA,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAe;AAExD,IAAA,MAAM,mBAAmB,GAAG,CAAC,OAAoC,KAAI;AACnE,QAAA,IAAI,aAAa,GAAG,CAAC,GAAG,yBAAyB,EAAE,CAAC;AAEpD,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,YAAA,MAAM,kBAAkB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;;AAGpF,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,GAAG,GAAG;AAEhF,YAAA,MAAM,iBAAiB,GAAyC;gBAC9D,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;AAC5C,gBAAA,iBAAiB,EAAE,wBAAwB;gBAC3C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,oBAAoB,CAAC,KAAK,CAAC;aAC/B;AAED,YAAA,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;AAC7B,gBAAA,aAAa,GAAG;AACd,oBAAA,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;oBAC7C,iBAAiB;AACjB,oBAAA,GAAG,aAAa,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;iBAC/C;YACH;iBAAO;AACL,gBAAA,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE,iBAAiB,CAAC;YACvD;QACF;AAEA,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,yBAAyB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC9D,IAAA,CAAC;IAED,MAAM,0BAA0B,GAAG,CAAC,QAAiB,EAAE,OAAgB,EAAE,MAA0B,KAAI;AACrG,QAAA,QAAQ,EAAE,EAAE,UAAU,EAAE;QACxB,yBAAyB,CAAC,KAAK,EAAE;AAEjC,QAAA,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACzB,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAClB;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAK,mBAAmB,CAAC,OAAO,CAAC,EAAE;AACtF,YAAA,GAAG,OAAO;AACV,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CAAC;AAEF,QAAA,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,IAAA,CAAC;AAED,IAAA,MAAM,sBAAsB,GAAG,CAAC,QAAqC,EAAE,QAA4B,KAAI;AACrG,QAAA,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,cAAc;AAEpC,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,MAAM,qBAAqB,GAAG,yBAAyB,EAAE;QACzD,MAAM,oBAAoB,GAA2C,EAAE;AAEvE,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,eAAe,EAAE;AACzC,YAAA,IAAI,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACrC,gBAAA,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC;AAClF,gBAAA,MAAM,aAAa,GAAG,qBAAqB,CAAC,kBAAkB,CAAC;gBAE/D,IAAI,CAAC,aAAa,EAAE;AAClB,oBAAA,OAAO,CAAC,IAAI,CAAC,2FAA2F,EAAE,EAAE,CAAC;oBAC7G;gBACF;AAEA,gBAAA,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;gBACxC;YACF;YAEA,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAChD,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,OAAO,EAAE,EAAE;AACZ,aAAA,CAAC;YAEF,IAAI,CAAC,wBAAwB,EAAE;AAC7B,gBAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE;AACrD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE,MAAM;AAClB,iBAAA,CAAC;gBAEF;YACF;AAEA,YAAA,MAAM,iBAAiB,GAA8B;gBACnD,kBAAkB,EAAE,wBAAwB,CAAC,WAAW;gBACxD,iBAAiB,EAAE,wBAAwB,CAAC,iBAAiB;gBAC7D,gBAAgB,EAAE,wBAAwB,CAAC,WAAW;gBACtD,cAAc,EAAE,wBAAwB,CAAC,cAAc;gBACvD,UAAU,EAAE,wBAAwB,CAAC,aAAa;AAClD,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE;aACxB;YAED,oBAAoB,CAAC,IAAI,CAAC;AACxB,gBAAA,GAAG,iBAAiB;gBACpB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AAC3C,aAAA,CAAC;AAEF,YAAA,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;AACjC,YAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB;AAEA,QAAA,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC1C,YAAA,IAAI,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE;AAE3C,YAAA,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;AACtB,YAAA,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC;AAEA,QAAA,yBAAyB,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACrD,IAAA,CAAC;IAED,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,cAAc;AACpC,QAAA,MAAM,QAAQ,GAAG,UAAU,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,SAAS,EAAE;AAE3B,QAAA,SAAS,CAAC,MAAM,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACxE,IAAA,CAAC,CAAC;IAEF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,GAAG,GAAG,QAAQ,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,QAAQ,EAAE;QAEtB,SAAS,CAAC,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,IAAA,CAAC,CAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC;AAEpD,IAAA,OAAO,yBAAyB,CAAC,UAAU,EAAE;AAC/C;AAEO,MAAM,6BAA6B,GAAG,CAAC,OAA0C,KACtF,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO;;AC9LhD,MAAM,gCAAgC,GAAG,CAAC,EAA4B,KAAI;AAC/E,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAoC,IAAI,+DAAC;IAE3E,IAAI,aAAa,GAAG,CAAC;IACrB,IAAI,cAAc,GAAG,CAAC;IAEtB,YAAY,CAAC,OAAO;SACjB,IAAI,CACH,SAAS,CAAC,CAAC,EAAE,cAAc,EAAE,KAAI;QAC/B,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7B,aAAa,GAAG,CAAC;YACjB,cAAc,GAAG,CAAC;AAElB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,OAAO,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC7C,GAAG,CAAC,MAAK;AACP,YAAA,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,cAAc;AAChD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AAEvB,YAAA,IAAI,SAAS,GAAG,aAAa,EAAE;gBAC7B,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjD;AAAO,iBAAA,IAAI,SAAS,GAAG,aAAa,EAAE;gBACpC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC/C;AAAO,iBAAA,IAAI,UAAU,GAAG,cAAc,EAAE;gBACtC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAClD;AAAO,iBAAA,IAAI,UAAU,GAAG,cAAc,EAAE;gBACtC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACjD;YAEA,aAAa,GAAG,SAAS;YACzB,cAAc,GAAG,UAAU;QAC7B,CAAC,CAAC,CACH;AACH,IAAA,CAAC,CAAC,EACF,kBAAkB,CAAC,UAAU,CAAC;AAE/B,SAAA,SAAS,EAAE;AAEd,IAAA,OAAO,mBAAmB,CAAC,UAAU,EAAE;AACzC;AAEO,MAAM,oCAAoC,GAAG,MAAM,gCAAgC,CAAC,MAAM,CAAC,UAAU,CAAC;;MCxChG,oBAAoB,GAAG,CAAC,CAAqB,EAAE,CAAqB,KAAI;AACnF,IAAA,QACE,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AAC3B,QAAA,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,qBAAqB;AACnD,QAAA,CAAC,CAAC,mBAAmB,KAAK,CAAC,CAAC,mBAAmB;QAC/C,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,CAAC;AAEnD;MAEa,wBAAwB,GAAG,CAAC,EAA4B,EAAE,OAAyC,KAAI;AAClH,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC/C,IAAA,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,QAAQ,CAAC;IAC3D,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC/G,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AAErC,IAAA,MAAM,qBAAqB,GAAG,OAAO,EAAE,qBAAqB;IAE5D,IAAI,qBAAqB,EAAE;AACzB,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;YACtB,IAAI,CAAC,UAAU,EAAE;gBAAE;AAEnB,YAAA,MAAM,cAAc,GAAG,qBAAqB,EAAE;AAC9C,YAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,cAAc;AAE3C,YAAA,IAAI,cAAc,IAAI,OAAO,EAAE;AAC7B,gBAAA,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS;AAAE,oBAAA,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI;AAC/E,gBAAA,IAAI,cAAc,CAAC,GAAG,KAAK,SAAS;AAAE,oBAAA,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG;gBAC5E,GAAG,CAAC,OAAO,EAAE;YACf;AACF,QAAA,CAAC,+CAAC;IACJ;AAEA,IAAA,MAAM,aAAa,GAAG,CAAC,UAAqC,MAAM;AAChE,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,qBAAqB,EAAE,KAAK;AAC5B,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,iBAAiB,EAAE,UAAU;AAC9B,KAAA,CAAC;IAEF,OAAO,QAAQ,CACb,MAAK;AACH,QAAA,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC,cAAc;AAC3C,QAAA,MAAM,UAAU,GAAG,iBAAiB,EAAE;;;AAItC,QAAA,gBAAgB,EAAE;AAElB,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,aAAa,CAAC,UAAU,CAAC;QAE/D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO;AAExE,QAAA,MAAM,qBAAqB,GAAG,WAAW,GAAG,WAAW;AACvD,QAAA,MAAM,mBAAmB,GAAG,YAAY,GAAG,YAAY;QAEvD,OAAO;YACL,SAAS,EAAE,qBAAqB,IAAI,mBAAmB;YACvD,qBAAqB;YACrB,mBAAmB;AACnB,YAAA,iBAAiB,EAAE,UAAU;SAC9B;AACH,IAAA,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAChD;AACH;AAEO,MAAM,4BAA4B,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC;;AClFtF,MAAM,mBAAmB,GAAG,CAAI,MAAiB,KAAI;IAC1D,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CACnC,QAAQ,EAAE,EACV,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CACtB;AAED,IAAA,OAAO,QAAQ,CAAC,GAAG,CAAC;AACtB;AAiBO,MAAM,UAAU,GAAG,CAAI,IAAe,EAAE,EAAqB,EAAE,OAA2B,KAAI;AACnG,IAAA,IAAI,UAAU,GAAG,OAAO,EAAE,YAAY,GAAG,KAAK,GAAG,IAAI;AAErD,IAAA,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE;AAC1B,QAAA,IAAI;;;AAGF,YAAA,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChB;AAAE,QAAA,MAAM;YACN,UAAU,GAAG,KAAK;YAElB,IAAI,SAAS,EAAE,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACjG;QACF;IACF;AAEA,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,EAAE;AAEtB,QAAA,IAAI,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE;YACvC,UAAU,GAAG,KAAK;YAClB;QACF;QAEA,SAAS,CAAC,MAAK;AACb,YAAA,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AACjB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,+CAAC;AAEF,IAAA,OAAO,GAAG;AACZ;AAIO,MAAM,gBAAgB,GAAG,CAAI,KAAqB,KAAI;AAC3D,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,OAAO,KAAK,EAAE;IAChB;AAEA,IAAA,OAAO,KAAK;AACd;AAEA;;;AAGG;AACI,MAAM,kBAAkB,GAAG,CAAI,MAAiB,KAAI;AACzD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAW,IAAI,iDAAC;AAEpC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;AACtB,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE;QAEpB,IAAI,GAAG,EAAE;AACP,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACd,GAAG,CAAC,OAAO,EAAE;QACf;AACF,IAAA,CAAC,+CAAC;AAEF,IAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AAC3B;AAEA;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAI,MAAiB,KAAI;AACxD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAW,IAAI,iDAAC;AAEpC,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAK;AACtB,QAAA,MAAM,GAAG,GAAG,MAAM,EAAE;QAEpB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACd,GAAG,CAAC,OAAO,EAAE;QACf;AACF,IAAA,CAAC,+CAAC;AAEF,IAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AAC3B;AAEA;;;AAGG;AACI,MAAM,cAAc,GAAG,CAA0B,OAAU,KAAI;AACpE,IAAA,MAAM,WAAW,GAAG,MAAM,CAAuB,IAAI,uDAAC;IAEtD,eAAe,CAAC,MAAK;AACnB,QAAA,WAAW,CAAC,GAAG,CAAC,OAAO,EAAmB,CAAC;AAC7C,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,WAAW;AACpB;AAEO,MAAM,aAAa,GAAG,CAAI,OAAwB,KAAI;IAC3D,IAAI,MAAM,GAAqB,IAAI;AACnC,IAAA,OAAO,MAAK;AACV,QAAA,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,OAAO,EAAE;AAC/B,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AACH;;AC3HA;AACO,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAEpF;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;MACa,UAAU,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAE/F;AACO,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAEtF;;;AAGG;AACI,MAAM,yBAAyB,GAAG,CAAC,OAA+B,KACvE,wBAAwB,EAAE,CAAC,mBAAmB,CAAC,OAAO;AAExD;;;AAGG;AACI,MAAM,yBAAyB,GAAG,CAAC,UAAkB,KAC1D,wBAAwB,EAAE,CAAC,mBAAmB,CAAC,UAAU;AAE3D;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,OAA+B,KACrE,wBAAwB,EAAE,CAAC,iBAAiB,CAAC,OAAO;AAEtD;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,UAAkB,KAAK,wBAAwB,EAAE,CAAC,iBAAiB,CAAC,UAAU;AAEtH;AACO,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAK;AACxD,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,IAAI,GAAG,UAAU,EAAE;AACzB,IAAA,MAAM,KAAK,GAAG,WAAW,EAAE;IAE3B,OAAO,QAAQ,CAAC,MAAK;QACnB,QAAQ,IAAI;AACV,YAAA,KAAK,KAAK,EAAE;AACV,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;AACb,YAAA,KAAK,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;YACb,KAAK,IAAI,EAAE;AACX,YAAA;AACE,gBAAA,OAAO,IAAI;;AAEjB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;AACO,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,yBAAyB,CAAC;AAEtG;AACO,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,0BAA0B,CAAC;AAExG;AACO,MAAM,wBAAwB,GAAG,aAAa,CAAC,MAAK;AACzD,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;IAErC,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,IAAI,UAAU,EAAE;AAAE,YAAA,OAAO,UAAU;AACnC,QAAA,OAAO,WAAW;AACpB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;AACO,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,mBAAmB,CAAC;AAEnG;AACO,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,iBAAiB,CAAC;AAErG;AACO,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAK;AACtD,IAAA,MAAM,OAAO,GAAG,mBAAmB,EAAE;IAErC,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,IAAI,OAAO,EAAE;AAAE,YAAA,OAAO,OAAO;AAC7B,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;AACO,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,gBAAgB,CAAC;AAE3F;AACO,MAAM,wBAAwB,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,2BAA2B,EAAE,CAAC;AAElH;AACO,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAK;AAC1D,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;IAEjC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACpD,IAAA,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;AACpC,IAAA,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO;AACrC,IAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACxC,IAAA,cAAc,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC1C,IAAA,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS;AACpC,IAAA,cAAc,CAAC,KAAK,CAAC,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,cAAc;IAC/F,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;AAEnD,IAAA,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,cAAc,CAAC;IAEzE,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC,MAAM;AACjD,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QACxB,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,YAAA,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;SACzC;AACH,IAAA,CAAC,CAAC;AACJ,CAAC;;ACtID,IAAI,wBAAwB,GAAG,KAAK;AAEpC;;;;AAIG;AACI,MAAM,gCAAgC,GAAG,MAAK;IACnD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3C;IACF;IAEA,IAAI,wBAAwB,EAAE;QAC5B;IACF;IACA,wBAAwB,GAAG,IAAI;AAE/B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,mBAAmB,GAAG,yBAAyB,EAAE;IAEvD,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,UAAU,GAAG,mBAAmB,EAAE;AAExC,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE;AAClD,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,KAAK,CAAA,EAAA,CAAI;AAClC,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAA,EAAA,CAAI;AACpC,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEA,IAAI,uBAAuB,GAAG,KAAK;AAEnC;;;;AAIG;AACI,MAAM,+BAA+B,GAAG,MAAK;IAClD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3C;IACF;IAEA,IAAI,uBAAuB,EAAE;QAC3B;IACF;IACA,uBAAuB,GAAG,IAAI;AAE9B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,qBAAqB,GAAG,wBAAwB,EAAE;IAExD,MAAM,CAAC,MAAK;QACV,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC,IAAI,IAAI;AAEnD,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE;AAClD,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,KAAK,CAAA,EAAA,CAAI;AAClC,YAAA,SAAS,EAAE,CAAA,EAAG,UAAU,CAAC,MAAM,CAAA,EAAA,CAAI;AACpC,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;ACnDA;AACA,MAAM,2BAA2B,GAAG,CAAC;AAErC;AACA,MAAM,2BAA2B,GAAG,kCAAkC;AACtE,MAAM,sBAAsB,GAAG,6BAA6B;AAE5D;MACa,mBAAmB,GAAG,CAAC,EAA4B,EAAE,OAAiC,KAAI;AACrG,IAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,CAAC;AACvC,IAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE;AAC3E,IAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AACtD,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAChC,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;AACpC,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,+DAAC;AAClD,IAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,iEAAC;AACpD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,sDAAC;AACzC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,kBAAkB,GAAG,WAAW,EAAE;AACxC,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QAEpD,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,kBAAkB,CAAC,qBAAqB,IAAI,kBAAkB,CAAC,mBAAmB;AAC3F,YAAA,KAAK,YAAY;gBACf,OAAO,kBAAkB,CAAC,qBAAqB;AACjD,YAAA,KAAK,UAAU;gBACb,OAAO,kBAAkB,CAAC,mBAAmB;;AAEnD,IAAA,CAAC,qDAAC;;IAGF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE;QAErC,IAAI,eAAe,EAAE;AACnB,YAAA,QAAQ,CAAC,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;QACjD;AACF,IAAA,CAAC,CAAC;;IAGF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,aAAa,GAAG,SAAS,EAAE;AACjC,QAAA,MAAM,SAAS,GAAG,OAAO,EAAE;AAC3B,QAAA,MAAM,cAAc,GAAG,UAAU,EAAE;AACnC,QAAA,MAAM,kBAAkB,GAAG,cAAc,EAAE;QAE3C,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;AAEnC,YAAA,IAAI,CAAC,EAAE;gBAAE;AAET,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE;gBAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;gBACvE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;gBACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,sBAAsB,CAAC;gBAC7E;YACF;YAEA,IAAI,kBAAkB,EAAE;AACtB,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;YAC/C;YAEA,IAAI,cAAc,EAAE;AAClB,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,2BAA2B,CAAC;AAClD,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,cAAc,EAAE,MAAM;AACtB,oBAAA,cAAc,EAAE,OAAO;AACxB,iBAAA,CAAC;AAEF,gBAAA,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC1C,oBAAA,MAAM,EAAE,UAAU;AACnB,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,kBAAkB,IAAI,CAAC,cAAc,EAAE;AAC1C,gBAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,oBAAA,MAAM,EAAE,MAAM;AACf,iBAAA,CAAC;gBACF,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;gBAC7D,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,2BAA2B,EAAE,sBAAsB,CAAC;gBAC7E,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;YAC1D;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;;IAGF,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,cAAc,GAAG,UAAU,EAAE;QAEnC,SAAS,CAAC,MAAK;AACb,YAAA,MAAM,cAAc,GAAG,UAAU,EAAE;AACnC,YAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;YACnC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,cAAc;AAC7C,YAAA,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,qBAAqB,EAAE;AAC1D,YAAA,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;AAE/D,YAAA,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc;gBAAE;YAE5B,QAAQ,oBAAoB;AAC1B,gBAAA,KAAK,MAAM;oBACT,EAAE,CAAC,MAAM,CAAC;wBACR,GAAG,EAAE,KAAK,GAAG,OAAO;wBACpB,IAAI,EAAE,KAAK,GAAG,OAAO;AACrB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,YAAY;oBACf,EAAE,CAAC,MAAM,CAAC;wBACR,IAAI,EAAE,KAAK,GAAG,OAAO;AACrB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF;AACF,gBAAA,KAAK,UAAU;oBACb,EAAE,CAAC,MAAM,CAAC;wBACR,GAAG,EAAE,KAAK,GAAG,OAAO;AACpB,wBAAA,QAAQ,EAAE,SAAS;AACpB,qBAAA,CAAC;oBACF;;AAEN,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG,CAAC,CAAa,KAAI;AACvC,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAErD,QAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,EAAE;AAC5F,YAAA,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB;AACF,IAAA,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACvC,QAAA,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACzC,QAAA,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChC,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAa,KAAI;QACtC,MAAM,OAAO,GAAG,SAAS,CAAa,QAAQ,EAAE,SAAS,CAAC;QAC1D,MAAM,SAAS,GAAG,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC;AAC9D,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,cAAc;AAEnC,QAAA,IAAI,CAAC,EAAE;YAAE;QAET;aACG,IAAI,CACH,kBAAkB,CAAC,UAAU,CAAC,EAC9B,SAAS,CAAC,OAAO,CAAC,EAClB,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;AAE9B,aAAA,SAAS,EAAE;QAEd;AACG,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,UAAU,CAAC,EAC9B,GAAG,CAAC,MAAM,iBAAiB,EAAE,CAAC;AAE/B,aAAA,SAAS,EAAE;AAEd,QAAA,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AACvD,QAAA,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;AAChE,QAAA,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,IAAA,CAAC;IAED,YAAY,CAAC,OAAO;AACjB,SAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAC7B,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAa,EAAE,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAC3E,MAAM,CAAC,CAAC,CAAC,KAAsB,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,MAAM,OAAO,EAAE,CAAC,EACvB,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,EAC5B,kBAAkB,EAAE;AAErB,SAAA,SAAS,EAAE;IAEd,OAAO;AACL,QAAA,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE;AACnC,QAAA,iBAAiB,EAAE,UAAU,CAAC,UAAU,EAAE;KAC3C;AACH;;MC5La,mBAAmB,GAAG,MAAM,CAAC,qBAAqB;MAgBlD,iBAAiB,GAAG,CAAU,GAAe,EAAE,MAA2C,KAAI;AACzG,IAAA,MAAM,WAAW,GAAG,MAAM,EAAE,SAAS;IAErC,IAAI,WAAW,EAAE;QACf,OAAO,QAAQ,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C;AAEA,IAAA,OAAO,GAA6B;AACtC;AAEA,MAAM,kBAAkB,GAAG,MAAK;IAC9B,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACxD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,MAAM,CAAC,GAAG;IACnB;AAEA,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI;AACjF,CAAC;AAED;AACO,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAK;AAClD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE7B,IAAA,MAAM,YAAY,GAAG,kBAAkB,EAAE;AAEzC,IAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QAC7B,YAAY,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC;AAChE,KAAA,CAAC;AACJ,CAAC;AAED;;;AAGG;AACI,MAAM,yBAAyB,GAAG,aAAa,CAAC,MAAK;AAC1D,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;IAEjC,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,CAAC,GAAG,KAAK,EAAE;AAEjB,QAAA,OAAO,CAAC,CAAC,YAAY,aAAa,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,iBAAiB;AACtF,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;;;;AAIG;AACI,MAAM,SAAS,GAAG,aAAa,CAAC,MAAK;AAC1C,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;AAEjC,IAAA,OAAO,YAAY,CAAuB;AACxC,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAI;AAC1B,YAAA,IAAI,IAAI,YAAY,aAAa,EAAE;gBACjC,OAAO,IAAI,CAAC,iBAAiB;YAC/B;AAAO,iBAAA,IAAI,IAAI,YAAY,iBAAiB,EAAE;gBAC5C,OAAO,IAAI,CAAC,GAAG;YACjB;AAAO,iBAAA,IAAI,IAAI,EAAE,KAAK,EAAE;gBACtB,OAAO,IAAI,CAAC,KAAK;YACnB;YAEA,OAAO,kBAAkB,EAAE;QAC7B,CAAC;KACF,CAAC,CAAC,UAAU,EAAE;AACjB,CAAC;AAED;;;AAGG;AACI,MAAM,WAAW,GAAG,aAAa,CAAC,MAAK;AAC5C,IAAA,MAAM,GAAG,GAAG,SAAS,EAAE;IAEvB,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,GAAG,EAAE;AACrB,QAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACzD,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAEjE,QAAA,OAAO,eAAe;AACxB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,MAAc,KAAI;IAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI;AAE5C,IAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,QAAA,KAAK,GAAG,KAAK,CAAC,UAAU;IAC1B;AAEA,IAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK;IAE5D,OAAO;QACL,IAAI;AACJ,QAAA,UAAU,EAAE,MAAM;QAClB,WAAW;QACX,KAAK,EAAE,KAAK,IAAI,IAAI;QACpB,QAAQ;KACT;AACH,CAAC;AAED;;AAEG;AACI,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAK;AAClD,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;AACjC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,MAAM,WAAW,GAAG,MAAM,CAAc,iBAAiB,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAElE,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,CAAC,GAAG,KAAK,EAAE;QAEjB,SAAS,CAAC,MAAK;YACb,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;gBAC7C;YACF;iBAAO;gBACL,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC5C;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ,CAAC,MAAM,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED;AACO,MAAM,cAAc,GAAG,CAC5B,MAAuE,KACrE;AACF,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvD,IAAA,OAAO,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC5C;AAEA;AACO,MAAM,iBAAiB,GAAG,MAAK;AACpC,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AAEvC,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,WAAW,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7D,IAAA,OAAO,WAAW;AACpB;AAEA;AACO,MAAM,eAAe,GAAG,MAAK;AAClC,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AAEvC,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE/C,IAAA,OAAO,IAAI;AACb;AAEA;AACO,MAAM,gBAAgB,GAAG,CAAoB,MAAoD,KAAI;AAC1G,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEjD,IAAA,OAAO,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC;AACzC;AAEA;AACO,MAAM,gBAAgB,GAAG,MAAK;AACnC,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AAEvC,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,UAAU,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3D,IAAA,OAAO,UAAU;AACnB;AAUA,MAAM,oBAAoB,GAAG,CAAC,GAAW,KAAmB;IAC1D,IAAI,OAAO,MAAM,KAAK,WAAW;AAAE,QAAA,OAAO,IAAI;IAE9C,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7D,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,CAAC;AAED;MACa,gBAAgB,GAAG,CAAoB,GAAW,EAAE,MAAkC,KAAI;AACrG,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAExG;AAED,IAAA,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACvC;AAEA;MACa,mBAAmB,GAAG,CAAc,GAAW,EAAE,MAA8C,KAAI;AAC9G,IAAA,MAAM,IAAI,GAAG,eAAe,EAAE;AAC9B,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAc;AAE5D,IAAA,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACvC;AAEA;MACa,eAAe,GAAG,CAC7B,GAAW,EACX,MAAoD,KAClD;AACF,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AACrC,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAA0B;AAE9E,IAAA,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;AACvC;AAEA;;;AAGG;AACI,MAAM,uBAAuB,GAAG,aAAa,CAAC,MAAK;AACxD,IAAA,MAAM,WAAW,GAAG,iBAAiB,EAAE;AACvC,IAAA,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,CAAC;IAExD,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,WAAW,EAAE;AAC7B,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE,IAAI,EAAE;QAExC,MAAM,OAAO,GAA4B,EAAE;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAA+C;AACpE,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,SAAA,CAAC;AAEF,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3E,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;YACpB;QACF;AAEA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,CAAC;AACJ,CAAC;AAED;;;AAGG;AACI,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAK;AACvD,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AACrC,IAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAEtD,OAAO,QAAQ,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,QAAA,MAAM,QAAQ,GAAG,cAAc,EAAE,IAAI,EAAE;QAEvC,MAAM,OAAO,GAA4B,EAAE;AAE3C,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAA+C;AACpE,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxB,YAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,SAAA,CAAC;AAEF,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;AAE3E,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;YACpB;QACF;AAEA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,CAAC;AACJ,CAAC;;MC3RY,qBAAqB,GAAG,MAAM,CAAC,uBAAuB;MACtD,qCAAqC,GAAG,MAAM,CAAC,uCAAuC;MACtF,0CAA0C,GAAG,MAAM,CAAC,4CAA4C;MAgBhG,sBAAsB,GAAG,CAAC,MAAA,GAAuC,EAAE,KAAI;IAClF,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC,qBAAqB,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,qCAAqC,GAAG,IAAI,EAAE,CAAC;AAClH,QAAA,IAAI,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC,0CAA0C,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;KAC5F;AACH;MAEa,sBAAsB,GAAG,CAAC,MAAA,GAAuC,EAAE,KAAI;IAClF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3C;IACF;AAEA,IAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE;AACjC,IAAA,MAAM,KAAK,GAAG,WAAW,EAAE;AAC3B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,aAAa,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvF,SAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACpB,SAAA,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,KAAI;AAC9D,QAAA,MAAM,iBAAiB,GAAG,SAAS,KAAK,SAAS;QACjD,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;QAEnE,IAAI,iBAAiB,EAAE;AACrB,YAAA,MAAM,cAAc,GAAG;gBACrB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;aAC1F;YAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAC9C,CAAC,GAAG,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CACnE;YAED,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;gBAC/D;YACF;YAEA,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,qBAAqB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrG,MAAM,YAAY,GAAG,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO;YAElE,IAAI,eAAe,EAAE;AACnB,gBAAA,CAAC,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe,EAAE,SAAS,GAAG,CAAC;YAClE;iBAAO,IAAI,YAAY,EAAE;AACvB,gBAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAEzE,IAAI,eAAe,EAAE;oBACnB,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;gBAC3F;YACF;QACF;aAAO;AACL,YAAA,MAAM,cAAc,GAClB,SAAS,CAAC,IAAI,CAAC,qCAAqC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;YAChG,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACxD,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,0CAA0C,CAAC;AAEnF,YAAA,IAAI,cAAc,IAAI,UAAU,IAAI,gBAAgB,EAAE;gBACpD;YACF;YAEA,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,eAAe;AAC3D,YAAA,EAAE,CAAC,SAAS,GAAG,CAAC;QAClB;AACF,IAAA,CAAC,CAAC;AACN;;AChHO,MAAM,oBAAoB,GAAG;AAO7B,MAAM,YAAY,GAAG,CAAC,MAA0B,KAAI;AACzD,IAAA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM;AACjC,IAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;AAE7D,IAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,KAAI;QACtC,IAAI,cAAc,EAAE,EAAE;YACpB;QACF;AACA,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACtB,IAAA,CAAC;IAED,OAAO;AACL,QAAA,GAAG,EAAE,CAAC,GAAG,IAAe,KAAK,QAAQ,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAA,EAAI,OAAO,SAAS,EAAE,GAAG,IAAI,CAAC;AAC3F,QAAA,IAAI,EAAE,CAAC,GAAG,IAAe,KAAK,QAAQ,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAA,EAAI,OAAO,SAAS,EAAE,GAAG,IAAI,CAAC;AAC5F,QAAA,KAAK,EAAE,CAAC,GAAG,IAAe,KAAK,QAAQ,CAAC,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAA,EAAI,OAAO,SAAS,EAAE,GAAG,IAAI,CAAC;KAC9F;AACH;;ACzBO,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,KAAI;AACzD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C;AAEO,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,SAAS,GAAG,CAAC,KAAI;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU;AACpD;;ACPO,MAAM,QAAQ,GAAG,CAAC,KAAc,KAAsC;AAC3E,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7E;AAEO,MAAM,OAAO,GAAG,CAAC,KAAc,KAAwB;AAC5D,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B;MAEa,iBAAiB,GAAG,CAAC,GAA4B,EAAE,IAAY,KAAI;IAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACzC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAE7C,IAAA,IAAI,CAAC,cAAc,IAAI,CAAC,kBAAkB;AAAE,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC;IAE5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAE7B,IAAI,KAAK,GAAY,GAAG;AAExB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,SAAS;AAEtC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAqB;AAC7F,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,SAAS;AAEzC,YAAA,KAAK,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB;aAAO;AACL,YAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;AC/BO,MAAM,qBAAqB,GAAG;AAE/B,MAAO,YAA+B,SAAQ,KAAK,CAAA;IACvD,WAAA,CACS,IAAO,EACd,OAA8B,EACvB,UAAU,KAAK,EACf,OAAgB,qBAAqB,EAAA;QAE5C,KAAK,CAAC,kBAAkB,CAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAL7C,IAAA,CAAA,IAAI,GAAJ,IAAI;QAEJ,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,IAAI,GAAJ,IAAI;AAIX,QAAA,IAAI,IAAI,KAAK,qBAAqB,EAAE;AAClC,YAAA,IAAI;AACF,gBAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;gBAEzB,UAAU,CAAC,MAAK;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtB,CAAC,EAAE,CAAC,CAAC;YACP;AAAE,YAAA,MAAM;gBACN,UAAU,CAAC,MAAK;AACd,oBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrB,CAAC,EAAE,CAAC,CAAC;YACP;QACF;IACF;AACD;SAEe,kBAAkB,CAChC,IAAO,EACP,OAA8B,EAC9B,OAAgB,EAAA;;IAGhB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,GAAG,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;AAE9E,IAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,EAAK,aAAa,EAAE;IACrC,MAAM,WAAW,GAAG,OAAO,GAAG,cAAc,GAAG,EAAE;AACjD,IAAA,OAAO,GAAG,WAAW,CAAA,EAAG,QAAQ,CAAA,EAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,EAAE;AACpE;;ACtCA;;;;;AAKG;MACU,gBAAgB,GAAG,CAAC,OAA4B,EAAE,SAAqB,KAAI;AACtF,IAAA,MAAM,EAAE,GAAG,OAAO,IAAI,QAAQ,CAAC,eAAe;IAC9C,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE;AAEnE,IAAA,IAAI,SAAS,KAAK,GAAG,EAAE;QACrB,OAAO,WAAW,GAAG,WAAW;IAClC;AAAO,SAAA,IAAI,SAAS,KAAK,GAAG,EAAE;QAC5B,OAAO,YAAY,GAAG,YAAY;IACpC;AAEA,IAAA,OAAO,YAAY,GAAG,YAAY,IAAI,WAAW,GAAG,WAAW;AACjE;AAEA,MAAM,kBAAkB,GAAG,OACxB;AACC,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,MAAM,CAAC,UAAU;IACxB,MAAM,EAAE,MAAM,CAAC,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC,UAAU;IACxB,MAAM,EAAE,MAAM,CAAC,WAAW;AAC1B,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,MAAM,EAAE,OAAO,EAAE,CAAC;AACnB,CAAA,CAAY;AA4ER,MAAM,gBAAgB,GAAG,CAAC,OAAgC,KAAqC;AACpG,IAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO;IAEtC,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC1E,IAAA,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,qBAAqB,EAAE,GAAG,kBAAkB,EAAE;AAEnH,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;IAE7C,IAAI,CAAC,SAAS,EAAE;QACd,OAAO;AACL,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,kBAAkB,EAAE,CAAC;AACrB,YAAA,iBAAiB,EAAE,CAAC;AACpB,YAAA,cAAc,EAAE,IAAI;YACpB,OAAO;YACP,aAAa;YACb,WAAW;SACZ;IACH;AAEA,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI;AAC/B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG;AAC7B,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;AACtC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AACxC,IAAA,MAAM,OAAO,GAAG,MAAM,GAAG,OAAO;AAChC,IAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ;AAEjC,IAAA,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI;AAClC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG;AAChC,IAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC,KAAK;AAC9C,IAAA,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM;IAE/C,MAAM,sBAAsB,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ;IACvE,MAAM,qBAAqB,GAAG,KAAK,IAAI,MAAM,IAAI,QAAQ,IAAI,SAAS;AAEtE,IAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AAClF,IAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;AAEjF,IAAA,MAAM,4BAA4B,GAAG,KAAK,CAAC,kBAAkB,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9E,IAAA,MAAM,2BAA2B,GAAG,KAAK,CAAC,iBAAiB,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7E,OAAO;AACL,QAAA,MAAM,EAAE,sBAAsB;AAC9B,QAAA,KAAK,EAAE,qBAAqB;AAC5B,QAAA,kBAAkB,EAAE,4BAA4B;AAChD,QAAA,iBAAiB,EAAE,2BAA2B;QAC9C,cAAc,EAAE,sBAAsB,IAAI,qBAAqB;QAC/D,OAAO;QACP,aAAa;QACb,WAAW;;AAGX,QAAA,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,2BAA2B,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;KAC/G;AACH;AAEO,MAAM,2BAA2B,GAAG,CAAC,OAA+B,KAAqB;IAC9F,MAAM,EACJ,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,GAAG,QAAQ,EACnB,MAAM,GAAG,SAAS,EAClB,iBAAiB,GAAG,CAAC,EACrB,kBAAkB,GAAG,CAAC,GACvB,GAAG,OAAO;AAEX,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;QAC1D,OAAO;YACL,QAAQ;AACR,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,GAAG,EAAE,SAAS;SACf;IACH;AAEA,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACnD,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE;AAEvD,IAAA,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS;AAC3C,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK;AACjC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AACnC,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI;AAC/B,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG;AAC7B,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK;AACjC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM;AAEnC,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK;AACpC,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM;AACtC,IAAA,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI;AAClC,IAAA,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG;AAChC,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK;AACpC,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM;AAEtC,IAAA,MAAM,gBAAgB,GAAG,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,SAAS;AACrF,IAAA,MAAM,eAAe,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,SAAS;IAEnF,IAAI,YAAY,GAAG,UAAU;IAC7B,IAAI,WAAW,GAAG,SAAS;AAE3B,IAAA,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM;AAClC,IAAA,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO;IAErC,MAAM,sBAAsB,GAAG,MAAK;AAClC,QAAA,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,kBAAkB;AAC7D,QAAA,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB;AAC3D,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;QAChC,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,kBAAkB;QAClF,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB;AAClF,IAAA,CAAC;IAED,MAAM,uBAAuB,GAAG,MAAK;AACnC,QAAA,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACrE,QAAA,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC;AACtE,IAAA,CAAC;IAED,MAAM,wBAAwB,GAAG,MAAK;AACpC,QAAA,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM;QACjC,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,IAAI,QAAQ,GAAG,MAAM;AAC1D,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS;QACjC,MAAM,cAAc,GAAG,KAAK,GAAG,SAAS,IAAI,QAAQ,GAAG,SAAS;AAEhE,QAAA,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;QAChC,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,IAAI,OAAO,GAAG,OAAO;AAC3D,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ;QACjC,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,QAAQ;QAE9D,IAAI,OAAO,IAAI,cAAc,IAAI,MAAM,IAAI,aAAa,EAAE;AACxD,YAAA,sBAAsB,EAAE;QAC1B;aAAO,IAAI,OAAO,IAAI,cAAc,IAAI,OAAO,IAAI,cAAc,EAAE;AACjE,YAAA,oBAAoB,EAAE;QACxB;AACF,IAAA,CAAC;IAED,QAAQ,MAAM;AACZ,QAAA,KAAK,OAAO;AACV,YAAA,sBAAsB,EAAE;YACxB;AACF,QAAA,KAAK,KAAK;AACR,YAAA,oBAAoB,EAAE;YACtB;AACF,QAAA,KAAK,QAAQ;AACX,YAAA,uBAAuB,EAAE;YACzB;AACF,QAAA,KAAK,SAAS;AACZ,YAAA,wBAAwB,EAAE;YAC1B;;IAGJ,OAAO;QACL,QAAQ;QACR,IAAI,EAAE,gBAAgB,GAAG,YAAY,GAAG,SAAS;QACjD,GAAG,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;KAC/C;AACH;AA6CO,MAAM,eAAe,GAAG,CAAC,OAA+B,KAAI;IACjE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACnE;;ACzTO,MAAM,GAAG,wBAAwB,CAAC,GAAG,kBAAkB,CAAC,MAAK;AAClE,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAErC,IAAA,MAAM,WAAW,GAAG,MAAM,CAAqB,IAAI,uDAAC;IAEpD,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC;QAC3D;aAAO;AACL,YAAA,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB;AACF,IAAA,CAAC;IAED,UAAU,CAAC,IAAI,CAAC;AAEhB,IAAA,OAAO,WAAW;AACpB,CAAC;;ACjBM,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,GAAG,cAAc,CACnG,MAAK;AACH,IAAA,MAAM,WAAW,GAAG,MAAM,CAA0B,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAqB,IAAI,oDAAC;AAEjD,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,QAAQ,EAAE,IAAI,WAAW,EAAE,aAAa,IAAI,QAAQ,CAAC,eAAe,iDAAC;IAElG,OAAO;QACL,KAAK;QACL,QAAQ;KACT;AACH,CAAC,EACD,EAAE,IAAI,EAAE,kBAAkB,EAAE;;ACI9B;;;AAGG;AACI,MAAM,uBAAuB,GAAmB;AACrD,IAAA,WAAW,EAAE;AACX,QAAA,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACZ,QAAA,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;AACd,QAAA,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;AACf,QAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AAChB,QAAA,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;AACxB,KAAA;;AAGI,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,GAAG,wBAAwB,CACnF,uBAAuB,EACvB;AACE,IAAA,IAAI,EAAE,iBAAiB;AACxB,CAAA;AAQI,MAAM,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,GAAG,kBAAkB,CACrF,MAAK;AACH,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrD,IAAA,MAAM,cAAc,GAAG,oBAAoB,EAAE;AAE7C,IAAA,MAAM,mBAAmB,GAAG,CAAC,UAAkB,KAAK,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC;AAE5F,IAAA,MAAM,iBAAiB,GAAG,CAAC,UAAkB,KAAI;AAC/C,QAAA,OAAO,QAAQ,CACb,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EACrB,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAC3C,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB;AACH,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAA+B,KAAK,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAEhH,IAAA,MAAM,mBAAmB,GAAG,CAAC,OAA+B,KAC1D,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAErD,IAAA,MAAM,iBAAiB,GAAG,CAAC,IAAgB,EAAE,MAAqB,KAAI;AACpE,QAAA,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC;QACtC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAEpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;;;;QAKA,OAAO,IAAI,GAAG,GAAG;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,qBAAqB,GAAG,CAAC,OAA+B,KAAI;QAChE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;QAEA,MAAM,eAAe,GAAa,EAAE;AAEpC,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,GAAG,CAAA,GAAA,CAAK,CAAC;YACvD;iBAAO;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,GAAA,CAAK,CAAC;YACjF;QACF;QAEA,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;AAC9B,YAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;AAEA,QAAA,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACnC,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,GAAG,CAAA,GAAA,CAAK,CAAC;YACvD;iBAAO;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,GAAA,CAAK,CAAC;YACjF;QACF;AAEA,QAAA,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAA,CAAC;IAED,OAAO;QACL,iBAAiB;QACjB,mBAAmB;QACnB,iBAAiB;QACjB,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;KACpB;AACH,CAAC,EACD,EAAE,IAAI,EAAE,qBAAqB,EAAE;;AC5H1B,MAAM,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,CAAC,GAAG,kBAAkB,CACpH,MAAK;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;IACpC,IAAI,gBAAgB,GAAG,KAAK;AAE5B,IAAA,MAAM,SAAS,GAAG,CAAC,CAAgB,KAAI;AACrC,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;YACtG,gBAAgB,GAAG,IAAI;YACvB,cAAc,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD;AACF,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,MAAK;QACzB,gBAAgB,GAAG,KAAK;QACxB,cAAc,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,IAAA,CAAC;IAED,MAAM,OAAO,GAAG,MAAK;QACnB,IAAI,gBAAgB,EAAE;YACpB,cAAc,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD;AACF,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;QAClB,cAAc,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjD,IAAA,CAAC;IAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;IAC3D,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IACjD,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAE/C,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;QACxB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC;QACxD,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,CAAC;QAC9D,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;QAChE,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC;QAC/D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QACpD,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACpD,IAAA,CAAC,CAAC;IAEF,OAAO;AACL,QAAA,cAAc,EAAE,cAAc,CAAC,UAAU,EAAE;KAC5C;AACH,CAAC,EACD,EAAE,IAAI,EAAE,uBAAuB,EAAE;;AClD5B,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,kBAAkB,CAC7D,MAAK;AACH,IAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,yDAAC;IAElC,OAAO;QACL,aAAa;KACd;AACH,CAAC,EACD;AACE,IAAA,IAAI,EAAE,QAAQ;AACf,CAAA;;ACVI,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,GAAG,kBAAkB,CACjE,MAAK;AACH,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAChD,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3D,MAAM,QAAQ,GAAG,CAAC,OAAoB,EAAE,GAAG,OAAiB,KAAI;AAC9D,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC3D,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,GAAG,OAAiB,KAAI;AACjE,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC9D,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,SAAiB,EAAE,KAAe,KAAI;AAC/E,QAAA,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjE,IAAI,SAAS,EAAE;AACb,YAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QACvC;aAAO;AACL,YAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;QAC1C;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;IAED,MAAM,QAAQ,GAAG,CACf,OAAoB,EACpB,KAAgE,EAChE,KAA2B,KACzB;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAE;YAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACzC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;YAC/C;iBAAO;gBACL,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAClB,OAAoB,EACpB,KAAyC,EACzC,KAA2B,KACzB;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE;QAClC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAe,EAAE,KAAK,CAAC;AACvD,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,GAAG,MAA8C,KAAI;AAC/F,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACxD,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAoB,KAAI;QAClF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,YAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QACvE;aAAO;YACL,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,QAAQ,CAAC;QACnE;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAAoB,EAAE,UAAyC,KAAI;AAC3F,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;AACnD,YAAA,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AACtC,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAoB,EAAE,SAAyB,KAAI;QAC3G,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YACzC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;QACxD;aAAO;YACL,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;QACpD;AACF,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAE,GAAG,KAAe,KAAI;AACnE,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClE,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAE,IAAY,EAAE,KAAc,KAAI;QACzE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5C,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,OAAoB,EAAE,UAAmC,KAAI;AAClF,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;YACnD,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAC5C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CACpB,OAAU,EACV,SAAyB,KACG;QAC5B,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC;AACnD,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,KAAa,KAAU;AACzC,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,KAAa,KAAa;AAC/C,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,QAAc,KAAI;AAC1D,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxC,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAY,EAAE,QAAc,EAAE,QAAqB,KAAI;QAC3E,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACnD,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAY,EAAE,QAAc,EAAE,aAAuB,KAAI;QAC5E,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;AACvD,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,cAAoC,EAAE,eAAyB,KAAiB;QACzG,OAAO,QAAQ,CAAC,iBAAiB,CAAC,cAAc,EAAE,eAAe,CAAC;AACpE,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAAU,KAAiB;AAC7C,QAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;AAClC,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,IAAU,KAAiB;AAC9C,QAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,KAAa,KAAI;AAC7C,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,CACb,MAAwE,EACxE,SAAiB,EACjB,QAA0C,KAC1B;QAChB,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;AACrD,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,IAAU,KAAI;AACjC,QAAA,IAAI,QAAQ,CAAC,WAAW,EAAE;AACxB,YAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC5B;AACF,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,MAAY,EAAE,QAAc,EAAE,QAAc,KAAI;QACpE,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACjD,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxC,IAAA,CAAC;AAED,IAAA,MAAM,KAAK,GAAG,CAAC,OAAoB,KAAI;AACrC,QAAA,OAAO,OAAO,CAAC,UAAU,EAAE;YACzB,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC;QACnD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,OAAoB,EAAE,IAAY,KAAI;QAC5D,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC;AACpD,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAE,IAAY,KAAI;QAC1D,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,CACpB,OAAoB,EACpB,UAAyC,EACzC,SAAyB,KACvB;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAI;YACnD,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC;AAC/C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,OAAoB,EAAE,IAAmC,KAAI;AACtF,QAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC5C,YAAY,CAAC,OAAO,EAAE,CAAA,KAAA,EAAQ,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AAC7C,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW;QACX,WAAW;QACX,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,YAAY;QACZ,eAAe;QACf,WAAW;QACX,aAAa;QACb,aAAa;QACb,UAAU;QACV,aAAa;QACb,WAAW;QACX,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,UAAU;QACV,WAAW;QACX,QAAQ;QACR,MAAM;QACN,WAAW;QAEX,YAAY;QACZ,KAAK;QACL,cAAc;QACd,YAAY;QACZ,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,gBAAgB;QAEhB,QAAQ;KACT;AACH,CAAC,EACD,EAAE,IAAI,EAAE,kBAAkB,EAAE;;ACxNvB,MAAM,SAAS,GAAG,CAAC,EAAc,KAAI;IAC1C,qBAAqB,CAAC,MAAK;QACzB,qBAAqB,CAAC,EAAE,CAAC;AAC3B,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,aAAa,GAAG,MAAK;AAChC,IAAA,OAAO,IAAI,UAAU,CAAO,CAAC,QAAQ,KAAI;QACvC,SAAS,CAAC,MAAK;YACb,QAAQ,CAAC,IAAI,EAAE;YACf,QAAQ,CAAC,QAAQ,EAAE;AACrB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEO,MAAM,WAAW,GAAG,CAAC,UAAuB,QAAQ,CAAC,IAAI,KAAI;IAClE,OAAO,OAAO,CAAC,YAAY;AAC7B;;MCZa,wBAAwB,GAAG,IAAI,cAAc,CACxD,oCAAoC;AAGtC,MAAM,iBAAiB,GAAG;AACxB,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,cAAc,EAAE,8BAA8B;AAC9C,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,WAAW,EAAE,2BAA2B;AACxC,IAAA,OAAO,EAAE,uBAAuB;AAChC,IAAA,SAAS,EAAE,yBAAyB;AACpC,IAAA,cAAc,EAAE,8BAA8B;CACtC;AAEV,MAAM,qBAAqB,GAAG,oBAAoB;MAkBrC,0BAA0B,CAAA;AAoBrC,IAAA,WAAA,GAAA;AAnBQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,OAAO,EAAQ;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACrC,IAAA,CAAA,QAAQ,GAAG,cAAc,EAAE;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;QAEvC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,mBAAmB,GAAG,CAAC;QAEvB,IAAA,CAAA,eAAe,GAAkB,IAAI;QACrC,IAAA,CAAA,cAAc,GAAG,CAAC;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAyB,MAAM,CAAC;AAE5D,QAAA,IAAA,CAAA,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AAE/C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,yDAAC;AAG1B,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC;YACzC;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACtC;AACF,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;QAEd,IAAI,CAAC,YAAY,EAAE;IACrB;IAEQ,YAAY,GAAA;QAClB,MAAM,aAAa,GAAG,MAAK;AACzB,YAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;AAC5D,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,aAAa,CAAC;AAE1D,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAEtC,IAAI,YAAY,KAAK,UAAU;YAAE;AAEjC,QAAA,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE;AAC5E,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,YAAY,KAAK,SAAS;AAEjD,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAE7C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAQ;QAElD,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC;AAE7C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc;AACnG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAE3B,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,cAAc,CACjC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC1C,eAAe,CAAC,IAAI,EAAE;YACtB,eAAe,CAAC,QAAQ,EAAE;YAC1B;QACF;QAEA,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,2BAA2B,CAAC;AAC/B,gBAAA,aAAa,EAAE;AACb,oBAAA,iBAAiB,CAAC,SAAS;AAC3B,oBAAA,iBAAiB,CAAC,WAAW;AAC7B,oBAAA,iBAAiB,CAAC,OAAO;AACzB,oBAAA,iBAAiB,CAAC,cAAc;AACjC,iBAAA;AACD,gBAAA,UAAU,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC;AACxG,gBAAA,aAAa,EAAE,UAAU;gBACzB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,sBAAsB,CAAC;gBAC1B,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,WAAW,EAAE,iBAAiB,CAAC,WAAW;gBAC1C,OAAO,EAAE,iBAAiB,CAAC,OAAO;AAClC,gBAAA,aAAa,EAAE,UAAU;gBACzB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;QAEA,eAAe,CAAC,IAAI,EAAE;QACtB,eAAe,CAAC,QAAQ,EAAE;IAC5B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;QAEtC,IAAI,YAAY,KAAK,SAAS;YAAE;AAEhC,QAAA,IAAI,YAAY,KAAK,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC3B;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,YAAY,KAAK,UAAU;AAElD,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAE7C,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,EAAQ;QAElD,MAAM,YAAY,GAAG,CAAA,MAAA,EAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC1D,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC;AAE7C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc;AACnG,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAE3B,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,cAAc,CACjC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC1C,eAAe,CAAC,IAAI,EAAE;YACtB,eAAe,CAAC,QAAQ,EAAE;YAC1B;QACF;QAEA,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,2BAA2B,CAAC;AAC/B,gBAAA,aAAa,EAAE;AACb,oBAAA,iBAAiB,CAAC,SAAS;AAC3B,oBAAA,iBAAiB,CAAC,WAAW;AAC7B,oBAAA,iBAAiB,CAAC,OAAO;AACzB,oBAAA,iBAAiB,CAAC,cAAc;AACjC,iBAAA;AACD,gBAAA,UAAU,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,cAAc,CAAC;AACxG,gBAAA,aAAa,EAAE,SAAS;gBACxB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,CAAC,sBAAsB,CAAC;gBAC1B,SAAS,EAAE,iBAAiB,CAAC,SAAS;gBACtC,WAAW,EAAE,iBAAiB,CAAC,WAAW;gBAC1C,OAAO,EAAE,iBAAiB,CAAC,OAAO;AAClC,gBAAA,aAAa,EAAE,SAAS;gBACxB,YAAY;gBACZ,UAAU,EAAE,MAAK;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;AAC5E,oBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBAC5C,CAAC;gBACD,YAAY,EAAE,IAAI,CAAC,uBAAuB;AAC3C,aAAA,CAAC;QACJ;QAEA,eAAe,CAAC,IAAI,EAAE;QACtB,eAAe,CAAC,QAAQ,EAAE;IAC5B;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,CAC1B;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc;IAC5C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,aAAa,CAChB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,SAAS,EAC3B,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,OAAO,CAC1B;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc;IAC5C;AAEQ,IAAA,sBAAsB,CAAC,MAQ9B,EAAA;AACC,QAAA,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM;QAEzG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,CAAC,cAAc,CAAC;AAEtF,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACxB,QAAA,WAAW,EAAE;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAE1B,QAAA,aAAa;AACV,aAAA,IAAI,CACH,GAAG,CAAC,MAAK;YACP,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;AACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACxB;AACF,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAC9C,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,EACrG,GAAG,CAAC,UAAU,CAAC,EACf,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,YAAY,CAAC,EACvB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,EAAE;IAChB;AAEQ,IAAA,2BAA2B,CAAC,MAOnC,EAAA;AACC,QAAA,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM;AAEnG,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AACpC,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAE/C,QAAA,aAAa;aACV,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAC7C,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,WAAW,KAAI;YACxB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;gBACvD,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAuB,CAAC;YACpE;AAEA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CACvC,SAAS,CAAC,CAAC,CAAC,KAAI;AACd,gBAAA,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,EAAE;AACnC,oBAAA,OAAO,EAAE,CAAC,CAAC,CAAC;gBACd;AAEA,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CACtC,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,CAAC,cAAc,KAAI;oBAC3B,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;wBAC1D,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAuB,CAAC;oBACpE;AAEA,oBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;gBACjB,CAAC,CAAC,CACH;YACH,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,CAAC,KAA6B,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CACrF;QACH,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAClE,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,EACvB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,YAAY,CAAC,EACvB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,aAAA,SAAS,EAAE;IAChB;AAEQ,IAAA,QAAQ,CAAC,SAAiB,EAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IACjD;AAEQ,IAAA,WAAW,CAAC,SAAiB,EAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;IACpD;IAEQ,aAAa,CAAC,GAAG,UAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;IACxD;AAEQ,IAAA,WAAW,CAAC,QAAgC,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B;8GArVW,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,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAX1B;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,WAAW,EAAE,0BAA0B;AACxC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAMU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,WAAW,EAAA,0BAA4B;AACxC,yBAAA;AACF,qBAAA;oBACD,cAAc,EAAE,CAAC,mBAAmB,CAAC;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;;MCpCY,iBAAiB,GAAG,IAAI,cAAc,CAAsB,mBAAmB;MAW/E,mBAAmB,CAAA;AAS9B,IAAA,WAAA,GAAA;AARQ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QAEpD,IAAA,CAAA,OAAO,GAAG,KAAK;QAEvB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,IAAI,oDAAI,KAAK,EAAE,cAAc,EAAA,CAAG;AAGvD,QAAA,YAAY,CAAC,IAAI,CAAC,OAAO;AACtB,aAAA,IAAI,CACH,SAAS,CAAC,CAAC,KAAK,KAAI;YAClB,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;gBACrB;AAEA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAE9B,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACjB;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;YAE9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CACvC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,EACnC,GAAG,CAAC,MAAK;AACP,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;8GAzCW,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAPnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,mBAAmB;AACjC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,mBAAqB;AACjC,yBAAA;AACF,qBAAA;AACF,iBAAA;;;MCkDY,wBAAwB,CAAA;AA2DnC,IAAA,WAAA,GAAA;AA1DQ,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QACxD,IAAA,CAAA,YAAY,GAAG,qBAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACxD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAE/B,IAAA,CAAA,mBAAmB,GAAwB,IAAI;QAC/C,IAAA,CAAA,mBAAmB,GAAwB,IAAI;AAEvD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAwB,QAAQ,qDAAC;QAClD,IAAA,CAAA,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAuB,IAAI,kDAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAiB,CAAC,wDAAC;AACvC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAiB,CAAC,2DAAC;QAC1C,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC1D,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,kDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACpD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QACxD,IAAA,CAAA,0BAA0B,GAAG,KAAK,CAAC,KAAK,uEAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC1E,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAE3D,IAAA,CAAA,MAAM,GAA8B,IAAI;QACxC,IAAA,CAAA,UAAU,GAAsB,IAAI;QACpC,IAAA,CAAA,YAAY,GAA2B,IAAI;AAE3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AACnC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAuB,MAAM,iDAAC;AAE5C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,qDAAC;AACtD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,sDAAC;AACxD,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,uDAAC;AAC1D,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,YAAY,wDAAC;AAE5D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oDAAC;QAClE,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5F,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AAExB,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAE/C,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;AAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEvC,IAAA,CAAA,0BAA0B,GAAG,uBAAuB,CAClD,QAAQ,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,CAAC,CACtE;QAGC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAEpD,YAAA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE;AAExC,YAAA,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AAC1B,gBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AACjD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACjD;AAEA,IAAA,KAAK,CAAC,MAAqC,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,SAAS,EAAE,EAAE;AACf,oBAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;gBAC3F;gBACA;YACF;AAEA,YAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;AACvC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAE/B,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC;YAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YAChE,IAAI,SAAS,EAAE;AACb,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1B,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBAEzB,SAAS,CAAC,KAAK,EAAE;AAEjB,gBAAA,SAAS,CAAC;AACP,qBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAC9B,GAAG,CAAC,MAAK;AACP,oBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;AAC/B,wBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;oBAC1B;AACF,gBAAA,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,qBAAA,SAAS,EAAE;YAChB;AAEA,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ;QACnC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC;YAC7G;YACA;QACF;QAEA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM;AAE5D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAEzB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,SAAS,EAAE,SAAS,IAAI,EAAE;AAC3B,SAAA,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9C,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AAC7E,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAEvD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QACtC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,eAAe,EAAE;AAEtB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ;IACnC;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACnE,IAAI,SAAS,EAAE,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,CAAA,iEAAA,EAAoE,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;YAClG;YACA;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,SAAS,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;YAC3F;YACA;QACF;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAEzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,OAAO,EAAE;YACd;QACF;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAEhE,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,OAAO,EAAE;YACd;QACF;QAEA,SAAS,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;aAClC,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,EAC3B,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEpC,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;YAC/B,IAAI,CAAC,OAAO,EAAE;AAChB,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,kBAAkB,CAAC,IAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI;YAAE;QAEjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACpD;AAEQ,IAAA,kBAAkB,CAAC,aAA4C,EAAA;AACrE,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa;YAAE;QAE1C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC;IAChE;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AAE7C,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AACjD,SAAA,CAAC;IACJ;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE;YAExB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAA4B;AAC1E,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAE/C,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAE/C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE;YAE3C,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAK;gBAC5D,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC;AAC3E,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,uBAAuB,EAAE;AAChC,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,IAAI;AAEnC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAuB;IAC5G;AAEQ,IAAA,sBAAsB,CAC5B,UAAuB,EACvB,KAAkB,EAClB,QAAiC,EACjC,eAAmC,EAAA;QAEnC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;AAExB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;AAEtF,QAAA,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;YAC3B,UAAU;AACX,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,KAAI;YAC9C,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,CAAC;AAClE,YAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,cAAc,CAAC;AACxD,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,uBAAuB,CAC7B,UAAuB,EACvB,QAAiC,EACjC,eAAmC,EAAA;QAEnC,MAAM,UAAU,GAAG,EAAE;AAErB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE;AACjC,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC;AAEA,QAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC;AACH,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,SAAS;AAC1D,YAAA,yBAAyB,EAAE,OAAO;YAClC,QAAQ;AACT,SAAA,CAAC,CACH;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,UAAU,CAAC,IAAI,CACb,IAAI,CAAC;AACH,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,SAAS;AAC5C,gBAAA,KAAK,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,EAAA;oBACvC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CAAC;oBAC9E,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAA,EAAG,eAAe,CAAA,EAAA,CAAI,CAAC;gBAClF,CAAC;AACF,aAAA,CAAC,CACH;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,UAAU,CAAC,IAAI,CACb,KAAK,CAAC;gBACJ,OAAO,EAAE,UAAU,EAAE;AACrB,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,SAAS;gBAC5C,QAAQ;AACT,aAAA,CAAC,CACH;QACH;QAEA,IAAI,eAAe,EAAE;YACnB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;QACjG;QAEA,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;AACxD,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClE;AAEA,QAAA,OAAO,UAAU;IACnB;AAEQ,IAAA,mBAAmB,CAAC,UAAuB,EAAE,CAAS,EAAE,CAAS,EAAE,SAAoB,EAAA;AAC7F,QAAA,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAA,YAAA,EAAe,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,MAAA,CAAQ,CAAC;AACzF,QAAA,UAAU,CAAC,YAAY,CAAC,uBAAuB,EAAE,SAAS,CAAC;IAC7D;AAEQ,IAAA,gBAAgB,CACtB,UAAuB,EACvB,cAA8B,EAC9B,eAAmC,EAAA;AAEnC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,eAAe;YAAE;AAE/C,QAAA,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK;AAErD,QAAA,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,+BAA+B,EAAE,CAAA,YAAA,EAAe,MAAM,IAAI,CAAC,CAAA,IAAA,EAAO,MAAM,IAAI,CAAC,CAAA,MAAA,CAAQ,CAAC;IACrH;IAEQ,qBAAqB,CAAC,UAAuB,EAAE,cAA8B,EAAA;AACnF,QAAA,IAAI,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE;AACxC,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;gBACrC,IAAI,CAAC,OAAO,EAAE;YAChB;iBAAO;AACL,gBAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACvD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;QACF;AAAO,aAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1B,YAAA,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,6BAA6B,CAAC;AAC1D,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;IAEQ,uBAAuB,GAAA;QAC7B,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;gBACrD;YACF;YAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,IAAI;YAElE,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CACX,uHAAuH,CACxH;gBACD;YACF;YAEA,SAAS,CAAC,KAAK,EAAE;AAEjB,YAAA,SAAS,CAAC;AACP,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAC9B,GAAG,CAAC,MAAK;AACP,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;AAC/B,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AACzB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;gBAC1B;AACF,YAAA,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEpC,iBAAA,SAAS,EAAE;AAChB,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,IAAI,CAAC,mBAAmB,IAAI;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GAtYW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,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,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC3CM,MAAM,wBAAwB,GAAG,CAAC,MAAgC,KAAI;AAC3E,IAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,8BAA8B,EAAE,GAAG,MAAM;IAEpF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAI;AAChC,QAAA,MAAM,OAAO,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE;AACjD,QAAA,MAAM,aAAa,GAAG,eAAe,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,GAAG,SAAS;AAE1E,QAAA,OAAO,mBAAmB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC1E,IAAA,CAAC,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5E,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;AAC9E,IAAA,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;AACtD,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;AAChD,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;AAClB,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;AAClD,IAAA,CAAC;IAED,OAAO;QACL,UAAU;QACV,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,SAAS;KACV;AACH;AA2BO,MAAM,mBAAmB,GAAG,CAAC,MAA2B,KAAI;AACjE,IAAA,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,8BAA8B,EAAE,GAAG,MAAM;AAE3G,IAAA,IAAI,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE;IACvD,IAAI,SAAS,GAAqB,IAAI;AAEtC,IAAA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAQ;AACpC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAQ;AACrC,IAAA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAQ;IAErC,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,OAAO,EAAE;QACT,SAAS,CAAC,IAAI,EAAE;AAClB,IAAA,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAK;AAC7B,QAAA,OAAO,EAAE;QACT,SAAS,CAAC,IAAI,EAAE;AAClB,IAAA,CAAC;IAED,MAAM,OAAO,GAAG,MAAK;QACnB,IAAI,CAAC,SAAS,EAAE;YACd;QACF;AAEA,QAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC1D,QAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC5D,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE;AACrD,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;AAChB,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,qBAAqB,EAAE;AAE3C,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,CAAC,EAAE,WAAW,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACnC,YAAA,CAAC,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG;AACjC,YAAA,MAAM,EAAE,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAC1C,YAAA,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;SAC7C;AAED,QAAA,SAAS,GAAG,EAAE,CAAC,OAAO,CACpB;AACE,YAAA;AACE,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,SAAS,EAAE;AACC,oBAAA,EAAA,KAAK,CAAC,CAAC,CAAA,IAAA,EAAO,KAAK,CAAC,CAAC,CAAA;AACzB,gBAAA,EAAA,KAAK,CAAC,MAAM,CAAA,EAAA,EAAK,KAAK,CAAC,MAAM,CAAA;AACtC,QAAA,CAAA;AACA,aAAA;AACD,YAAA;AACE,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,SAAS,EAAE,MAAM;AAClB,aAAA;SACF,EACD;YACE,QAAQ;YACR,MAAM;AACN,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;AAED,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACvD,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAEvD,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAA,CAAC;IAED,MAAM,MAAM,GAAG,MAAK;QAClB,SAAS,EAAE,MAAM,EAAE;AAEnB,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;IAED,OAAO;QACL,UAAU;QACV,IAAI;QACJ,MAAM;AACN,QAAA,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE;AACjC,QAAA,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;AACnC,QAAA,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE;KACpC;AACH;;MC/Ja,qBAAqB,CAAA;AAMhC,IAAA,WAAA,GAAA;AALQ,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEnC,IAAA,CAAA,eAAe,GAAG,MAAM,CAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAG/D,SAAS,CAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO;AACzD,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB;AACjD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;AAEtE,YAAA,IAAI,QAAQ;gBAAE;AAEd,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,CAAC,EACF,kBAAkB,EAAE;AAErB,aAAA,SAAS,EAAE;IAChB;8GApBW,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,kBAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;;MCSY,eAAe,CAAA;AAkC1B,IAAA,WAAA,GAAA;AAjCQ,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAuB,WAAW,CAAC;AAC3D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,aAAA,EAAA,GAAA,EAAA,CAAA,EAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,GAAG;AAEzE,QAAA,IAAA,CAAA,KAAK,GAAG,YAAY,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,GAAA,EAAA,CAAA,EAClB,MAAM,EAAE,IAAI,CAAC,WAAW;AACxB,YAAA,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAI;AAC/B,gBAAA,MAAM,SAAS,GAAG,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvC,gBAAA,MAAM,KAAK,GAA+B,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAE/D,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAK,EAAE;oBAC1C,OAAO,QAAQ,CAAC,KAAK;gBACvB;AAEA,gBAAA,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS;AAEvC,gBAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;AACtC,wBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC5E;gBACF;AAAO,qBAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AAC5B,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE;AACvC,wBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChE;AAEA,oBAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC7B;AAEA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,GACD;;;QAKA,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5B;8GAtCW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,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;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA;;;MCVY,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,uBAAuB;AACpC,IAAA;8GAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,IAAI;mBAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;;AAS3C;AACO,MAAM,uBAAuB,GAAG,CAAC,IAAmB,KAAqC;IAC9F,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,IAAI;AACV,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,kBAAkB;aACzB;AAEH,QAAA,KAAK,SAAS;YACZ,OAAO;AACL,gBAAA,IAAI,EAAE,0BAA0B;AAChC,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,kBAAkB;aACzB;AAEH,QAAA,KAAK,aAAa;YAChB,OAAO;AACL,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,aAAa;aACpB;AAEH,QAAA,KAAK,SAAS;AACd,QAAA;YACE,OAAO;AACL,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,IAAI,EAAE,WAAW;aAClB;;AAEP;;MC3Ca,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,mBAAmB;AAChC,IAAA;8GAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,IAAI;mBAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE;;AAKhC,MAAM,mBAAmB,GAAG,CAAC,KAAuC,KAAI;AAC7E,IAAA,IAAI,KAAK,EAAE,oBAAoB,EAAE;QAC/B,OAAA,SAAA;IACF;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE;QACxC,OAAA,UAAA;IACF;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE;QACtC,OAAA,MAAA;IACF;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,WAAW,IAAI,KAAK,EAAE,MAAM,KAAK,UAAU,EAAE;QACxE,OAAA,WAAA;IACF;SAAO,IAAI,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE;QAC7C,OAAA,gBAAA;IACF;AAEA,IAAA,OAAO,IAAI;AACb;;MChBa,8BAA8B,CAAA;AAD3C,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,0BAA0B;AACvC,IAAA;8GAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,8BAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAD1C,IAAI;mBAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE;;AA6BvC,MAAM,0BAA0B,GAAG,CAAC,KAA2B,KAAwC;AAC5G,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAE7C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;AAC9C,QAAA,IAAI,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;KAC/C;AACH;MAEa,yBAAyB,GAAG,CACvC,KAA2B,EAC3B,IAAqB,KACgB;AACrC,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAE7C,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS;IAEzE,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI,UAAU,KAAA,WAAA,oCAAkC,UAAU,KAAA,SAAA,gCAA8B;YACtF,OAAO;gBACL,eAAe;AACf,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,IAAI,EAAE,WAAW;aAClB;QACH;aAAO;YACL,OAAO;gBACL,eAAe;AACf,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,IAAI,EAAE,WAAW;aAClB;QACH;IACF;SAAO;QACL,OAAO;YACL,eAAe;AACf,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,WAAW;SAClB;IACH;AACF;;MCjFa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,mBAAmB;AAChC,IAAA;8GAFY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,IAAI;mBAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE;;AA0BvC,MAAM,WAAW,GAAyB;IACxC,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3D,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE;AAC3D,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,OAAO,EAAE,IAAI;CACd;AAEM,MAAM,mBAAmB,GAAG,CAAC,KAAuC,KAAiC;IAC1G,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC7C,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC;IAE3C,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;QACxC,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;IACtD;AAEA,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,IAAI,UAAU,KAAA,UAAA,mCAAiC,UAAU,KAAA,MAAA,4BAA0B;YACjF,OAAO,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;QACtD;QAEA,OAAO;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,aAAA;AACD,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;AAC7C,gBAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,aAAA;YACD,OAAO;AACP,YAAA,SAAS,EAAE,KAAK;SACjB;IACH;AAAO,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;QAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;YAE5B,OAAO;gBACL,GAAG,kBAAkB,CAAC,KAAK,CAAC;gBAC5B,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI;aACQ;QAC3B;aAAO;YACL,OAAO;gBACL,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBAC7B,OAAO;AACP,gBAAA,SAAS,EAAE,IAAI;aACQ;QAC3B;IACF;SAAO;QACL,OAAO;YACL,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAC5B,OAAO;AACP,YAAA,SAAS,EAAE,IAAI;SACQ;IAC3B;AACF;AAEO,MAAM,eAAe,GAAG,CAAC,KAAuC,KAAI;IACzE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,QACE,KAAK,CAAC,SAAS,KAAK,oBAAoB;QACxC,KAAK,CAAC,SAAS,KAAK,oBAAoB;AACxC,QAAA,KAAK,CAAC,SAAS,KAAK,YAAY;AAEpC;AAEO,MAAM,YAAY,GAAG,CAAC,KAAuC,KAAI;IACtE,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;AACrE;AAEO,MAAM,qBAAqB,GAAG,CAAC,KAA0C,KAAI;AAClF,IAAA,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE;AAC3B,QAAA,OAAO,0BAA0B;IACnC;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE;AACnC,QAAA,OAAO,2BAA2B;IACpC;AAAO,SAAA,IAAI,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE;AAClC,QAAA,OAAO,0BAA0B;IACnC;AAEA,IAAA,OAAO,IAAI;AACb;AAEO,MAAM,oBAAoB,GAAG,CAAC,KAAuC,KAAI;AAC9E,IAAA,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAA,OAAO,IAAI;IACb;AAAO,SAAA,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAC9B,QAAA,OAAO,6BAA6B;IACtC;SAAO;AACL,QAAA,OAAO,IAAI;IACb;AACF;AAEO,MAAM,kBAAkB,GAAG,CAAC,KAAuC,KAAI;IAC5E,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;AACtC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC;AACtC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;KACF;AACH;AAEO,MAAM,mBAAmB,GAAG,CAAC,KAAuC,KAAI;IAC7E,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;AAClC,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK;AAC5C,SAAA;KACF;AACH;;MC/Ja,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,kBAAkB;AAC/B,IAAA;8GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,IAAI;mBAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;;AAK/B,MAAM,kBAAkB,GAAG,CAAC,SAAuC,KAAyB;IACjG,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,SAAS;AACf,QAAA,KAAK,oBAAoB;YACvB,OAAO;AACL,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,IAAI,EAAE,oBAAoB;aAC3B;AACH,QAAA,KAAK,oBAAoB;YACvB,OAAO;AACL,gBAAA,IAAI,EAAE,+BAA+B;AACrC,gBAAA,IAAI,EAAE,oBAAoB;aAC3B;AACH,QAAA,KAAK,YAAY;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,YAAY;aACnB;AACH,QAAA,KAAK,QAAQ;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;aACf;AACH,QAAA,KAAK,QAAQ;YACX,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,IAAI,EAAE,QAAQ;aACf;AACH,QAAA,KAAK,OAAO;YACV,OAAO;AACL,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,IAAI,EAAE,OAAO;aACd;;AAEP;;MCzCa,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,SAAS,GAAG,aAAa;AAC1B,IAAA;8GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;AACtB,iBAAA;;AAKD;;;;AAIG;AACI,MAAM,aAAa,GAAG,CAAC,MAAc,KAAI;AAC9C,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IAExB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AAExB,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,IAAI;;IAG1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;IACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9C,IAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;QACnD,QAAQ,CAAC,GAAG,EAAE;IAChB;IAEA,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AAErC,IAAA,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAChD,IAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5E,IAAI,aAAa,GAAkB,IAAI;IAEvC,IAAI,UAAU,EAAE;QACd,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,MAAM,OAAO,GAAG;AACb,aAAA,SAAS,CAAC,OAAO,GAAG,CAAC;AACrB,aAAA,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;cACX,WAAW,EAAE;QAEjB,IAAI,OAAO,EAAE;YACX,aAAa,GAAG,OAAO;QACzB;IACF;IAEA,IAAI,CAAC,aAAa,EAAE;AAClB,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU;QAEzD,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC;QAEhD,IAAI,YAAY,KAAK,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;AAEpC,QAAA,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;IACtE;IAEA,IAAI,aAAa,EAAE;QACjB,QAAQ,aAAa;AACnB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,eAAe;AACxB,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,8BAA8B;AACvC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,oBAAoB;AAC7B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,oBAAoB;AAC7B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,yEAAyE;AAClF,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,+BAA+B;AACxC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sBAAsB;AAC/B,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,eAAe;AACxB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,KAAK;AACV,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sCAAsC;AAC/C,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iDAAiD;AAC1D,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,gDAAgD;AACzD,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,yCAAyC;AAClD,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,yBAAyB;AAClC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,+BAA+B;AACxC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,2EAA2E;AACpF,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,qBAAqB;AAC9B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,kBAAkB;AAC3B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,mBAAmB;AAC5B,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,uBAAuB;AAChC,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,0BAA0B;AACnC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,mEAAmE;AAC5E,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iCAAiC;AAC1C,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,YAAY;AACrB,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,6BAA6B;AAEtC,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;AAEA,IAAA,OAAO,IAAI;AACb;;MCpNa,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAG,OAAO;AACpB,IAAA;8GAFY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAE,IAAI,EAAE,SAAS,EAAE;;AAKlB,MAAM,OAAO,GAAG,CAAC,KAAa,KAAI;AACvC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACnD;AAEO,MAAM,gBAAgB,GAA4B,CAAC,CAAC,EAAE,IAAI,KAAK;;ACP/D,MAAM,kBAAkB,GAAG,MAAK;AACrC,IAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAExC,IAAA,MAAM,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAE9D,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,CAAC;AACrC,IAAA,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC;AAC3C,IAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAEnC,OAAO;QACL,OAAO;QACP,UAAU;QACV,MAAM;QACN,EAAE;QACF,UAAU;KACX;AACH;;AClBO,MAAM,uBAAuB,GAAG,MAAK;AAC1C,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,GAAG,EAAE,MAAM,CAAW,EAAE,CAAC;AACzB,QAAA,QAAQ,EAAE,MAAM,CAA8B,EAAE,CAAC;KAClD;AAED,IAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAK;QACjC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9B,QAAA,OAAO,EAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI;AACxD,IAAA,CAAC,wDAAC;AAEF,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAK;QAC5B,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9B,OAAO,EAAE,IAAI,IAAI;AACnB,IAAA,CAAC,mDAAC;AAEF,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9E,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,CAAC,mDAAC;AAE7D,IAAA,MAAM,GAAG,GAAG,CAAC,EAAU,KAAI;QACzB,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,OAAoB,KAAI;AAChD,QAAA,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7C,QAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;AACtE,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,EAAU,KAAI;QAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,QAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9G,IAAA,CAAC;AAED,IAAA,MAAM,GAAG,GAAG,CAAC,EAAU,KAAI;QACzB,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI;AAC1C,IAAA,CAAC;IAED,OAAO;QACL,GAAG;QACH,QAAQ;QACR,GAAG;QACH,GAAG;QACH,IAAI;QACJ,MAAM;QACN,OAAO;QACP,YAAY;QACZ,OAAO;KACR;AACH;;AC5CO,MAAM,SAAS,GAAG,CAAC,MAAwB,KAAI;AACpD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAsB;IAC3C,MAAM,EACJ,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,MAAM,EACN,gBAAgB,GACjB,GAAG,KAAK;AAET,IAAA,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ;AACvE,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,aAAa;IAEnC,IAAI,QAAQ,EAAE,EAAE;AACd,QAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC5B;QACF;aAAO,IAAI,MAAM,EAAE;AACjB,YAAA,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,KAAK,EAAE;AAExD,YAAA,OAAO,CAAC,KAAK,CACX,CAAA,CAAA,EAAI,IAAI,CAAA,4FAAA,CAA8F,EACtG,uBAAuB,EACvB,2BAA2B,EAC3B,EAAE,CACH;YAED;QACF;IACF;AAEA,IAAA,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAE7B,IAAI,MAAM,EAAE;AACV,QAAA,EAAE,CAAC,EAAE,GAAG,EAAE;IACZ;IAEA,IAAI,aAAa,EAAE;AACjB,QAAA,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IACjC;IAEA,IAAI,iBAAiB,EAAE;AACrB,QAAA,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACxC;IAEA,IAAI,aAAa,EAAE;AACjB,QAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;IAChC;IAEA,IAAI,uBAAuB,EAAE;AAC3B,QAAA,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE;AACzC,YAAA,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA,EAAG,uBAAuB,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QACzD;IACF;IAEA,IAAI,mBAAmB,EAAE;QACvB,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC;IAC1C;IAEA,IAAI,mBAAmB,EAAE;AACvB,QAAA,KAAK,MAAM,GAAG,IAAI,mBAAmB,EAAE;AACrC,YAAA,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAA,EAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;QAC1D;IACF;IAEA,IAAI,oBAAoB,EAAE;AACxB,QAAA,oBAAoB,CAAC;YACnB,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;AAChC,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC;IACJ;AACF;AAOO,MAAM,WAAW,GAAG,CAAC,MAA0B,KAAI;AACxD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAsB;IAE3C,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnD;;AC1CO,MAAM,WAAW,GAAG,CAAC,KAAyB,KAAW;IAC9D,MAAM,EACJ,MAAM,GAAG,KAAK,EACd,MAAM,GAAG,IAAI,EACb,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,aAAa,EACrB,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,EAChD,aAAa,EAAE,mBAAmB,GAAG,IAAI,EACzC,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,SAAS,EACT,IAAI,GACL,GAAG,KAAK;AAET,IAAA,MAAM,UAAU,GAAG,uBAAuB,EAAE;AAC5C,IAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,oDAAC;AAEtD,IAAA,MAAM,gBAAgB,GAAkC;QACtD,KAAK,EAAE,UAAU,CAAC,YAAY;QAC9B,OAAO,EAAE,UAAU,CAAC,OAAO;QAE3B,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,GAAG,EAAE,UAAU,CAAC,GAAG;KACpB;AAED,IAAA,MAAM,IAAI,GAAkB;QAC1B,IAAI;QACJ,MAAM;QACN,MAAM;QAEN,QAAQ;QACR,gBAAgB;QAEhB,aAAa,EAAE,aAAa,IAAI,IAAI;QACpC,iBAAiB,EAAE,iBAAiB,IAAI,IAAI;QAC5C,aAAa,EAAE,aAAa,IAAI,IAAI;QAEpC,uBAAuB;QACvB,mBAAmB;QACnB,mBAAmB;QAEnB,oBAAoB,EAAE,SAAS,IAAI,IAAI;KACxC;AAED,IAAA,OAAO,IAAa;AACtB;AAOO,MAAM,eAAe,GAAG,CAAC,KAAyB,KAAe;AACtE,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;AAC/B,IAAA,MAAM,QAAQ,GAAG,kBAAkB,EAAE;AAErC,IAAA,eAAe,CAAC;QACd,KAAK,EAAE,MAAK;AACV,YAAA,SAAS,CAAC;gBACR,QAAQ;AACR,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA,CAAC;QACJ,CAAC;AACF,KAAA,CAAC;AAEF,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;AACxB,QAAA,WAAW,CAAC;YACV,QAAQ;AACR,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;AAClC;;ACjIO,MAAM,WAAW,GAAG,CAAoC,MAG9D,KAAI;IACH,IAAI,YAAY,GAAG,KAAK;IAExB,eAAe,CAAC,MAAK;QACnB,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,8EAA8E,EAAE,MAAM,CAAC,IAAI,CAAC;YAC1G;QACF;AACF,IAAA,CAAC,CAAC;IAEF,OAAO,CAAC,MAAS,KAAI;QACnB,IAAI,YAAY,EAAE;AAChB,YAAA,OAAO,CAAC,KAAK,CACX,yEAAyE,EACzE,yCAAyC,EACzC,MAAM,CAAC,IAAI,EACX,8BAA8B,EAC9B,MAAM,CACP;YACD;QACF;QAEA,YAAY,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACxB,IAAA,CAAC;AACH;;AC5BO,MAAM,qBAAqB,GAAG,CAAoD,KAAQ,KAAI;AACnG,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEjC,IAAA,MAAM,aAAa,GAAG,CAAoB,IAAkD,KAAI;AAC9F,QAAA,qBAAqB,CAAC,QAAQ,EAAE,MAAK;YACnC,MAAM,CAAC,MAAK;AACV,gBAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAoB,IAAyC,KAAI;AACpF,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAClC,IAAA,CAAC;IAED,OAAO;AACL,QAAA,GAAG,KAAK;QACR,aAAa;QACb,YAAY;KACb;AACH;;MCda,cAAc,CAAA;AAOzB,IAAA,WAAA,GAAA;AANA,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,GAAA,EAAA,CAAA,EAAyB,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAkB,GAAG;QAExG,IAAA,CAAA,YAAY,GAAG,kBAAkB,EAAE;AAGjC,QAAA,eAAe,CAAC;YACd,KAAK,EAAE,MAAK;AACV,gBAAA,SAAS,CAAC;oBACR,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,iBAAA,CAAC;YACJ,CAAC;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC7B,YAAA,WAAW,CAAC;gBACV,QAAQ,EAAE,IAAI,CAAC,YAAY;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;8GAvBW,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,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA;;;ACkCM,MAAM,gBAAgB,GAAG,CAAC,cAA8C,KAC7E,QAAQ,CAAC,MAAqE;AAC5E,IAAA,MAAM,OAAO,GAAG,cAAc,EAAE;AAEhC,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAO,IAAI;AAEzB,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;SACf;IACH;AAEA,IAAA,IAAI,OAAO,YAAY,WAAW,EAAE;QAClC,OAAO;AACL,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,QAAQ,EAAE,IAAI;SACf;IACH;AAEA,IAAA,IAAI,WAAW,IAAI,OAAO,EAAE;QAC1B,OAAO;AACL,YAAA,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,OAAO,CAAC,SAAS;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC;IACH;AAEA,IAAA,IAAI,UAAU,IAAI,OAAO,EAAE;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;AACxB,YAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC;IACH;IAEA,OAAO;AACL,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,IAAI;KACf;AACH,CAAC;;AC5EI,MAAM,gBAAgB,GAAG,CAC9B,OAA0C,EAC1C,OAA2B,EAC3B,QAAoB,EACpB,OAAqD,KACnD;AACF,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAEnE,IAAA,MAAM,cAAc,GAAG,CAAC,KAA2B,KAAiB,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAEzG,IAAA,MAAM,SAAS,GAAG,OAAO,IAAI,cAAc;IAE3C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,aAAa,EAAE,CAAC;AACrD,IAAA,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;QAC3B,OAAO,CAAC,YAAY,CAAC;IACvB;IAEA,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,KAAK,GAAG,aAAa,EAAE;AAC7B,QAAA,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC;QAChB;aAAO;AACL,YAAA,QAAQ,EAAE;QACZ;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,UAAU,CAAC,SAAS,CAAC,MAAK;AACxB,QAAA,QAAQ,EAAE;AACZ,IAAA,CAAC,CAAC;AACJ;MAEa,qBAAqB,GAAG,CACnC,aAAyC,EACzC,aAAwE,KACtE;IACF,OAAO,CAAC,OAA+C,KAAI;AACzD,QAAA,aAAa,CACX,QAAQ,CAAC,MAAK;YACZ,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACxE,YAAA,OAAO,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;QAC5C,CAAC,CAAC,CACH;AACH,IAAA,CAAC;AACH;MAEa,0BAA0B,GAAG,CACxC,aAAwD,EACxD,aAAwE,KACtE;IACF,OAAO,CAAC,OAAiD,KAAI;AAC3D,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAClE,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,SAAS,CAAC,MAAM,YAAY,EAAE,CAAC,IAAI,EAAE,sDAAC;QAExE,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpC,YAAA,aAAa,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;AAEO,MAAM,eAAe,GAAG,CAC7B,OAAwD,KACd;IAC1C,OAAO,QAAQ,CAAC,MAAK;QACnB,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACxE,QAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACrE,IAAA,CAAC,CAAC;AACJ;MAEa,yBAAyB,GAAG,CACvC,cAAsB,EACtB,aAA0F,KACxF;IACF,OAAO,CAAC,MAAe,KAAI;AACzB,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9C,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,aAAa,CAAC,GAAG,EAAE,KAA+C,CAAC;YACrE;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AACH;;;;;;ACtCO,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IACjD,WAAW;IACX,MAAM;IACN,kBAAkB;IAClB,8BAA8B;IAC9B,YAAY;IACZ,cAAc;IACd,SAAS;IACT,UAAU;IACV,WAAW;IACX,YAAY;IACZ,eAAe;AAChB,CAAA;MAEY,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,GAAG,wBAAwB,CACrF;AACE,IAAA,iBAAiB,EAAE,2BAA2B;AAC/C,CAAA,EACD,EAAE,IAAI,EAAE,mBAAmB,EAAE;AAGxB,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,kBAAkB,CACnE,MAAK;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAACC,UAAQ,CAAC;AACjC,IAAA,MAAM,MAAM,GAAG,qBAAqB,EAAE;IACtC,MAAM,UAAU,GAAG,MAAM,CAAwC,IAAI,GAAG,EAAE,sDAAC;IAC3E,IAAI,eAAe,GAAG,CAAC;AAEvB,IAAA,MAAM,UAAU,GAAG,CAAC,UAAsB,KAAY;AACpD,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,aAAa;QAEhG,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAEjC,IAAI,UAAU,CAAC,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,SAAA,EAAY,UAAU,CAAC,QAAQ,CAAA,CAAE,CAAC;YACzE,IAAI,UAAU,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,UAAU,CAAC,KAAK,CAAA,CAAE,CAAC;YAChE,IAAI,UAAU,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,UAAU,CAAC,KAAK,CAAA,CAAE,CAAC;YAChE,IAAI,UAAU,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,UAAU,CAAC,IAAI,CAAA,CAAE,CAAC;YAC7D,IAAI,UAAU,CAAC,EAAE;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,GAAA,EAAM,UAAU,CAAC,EAAE,CAAA,CAAE,CAAC;;AAGvD,YAAA,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACnG,QAAQ,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,UAAU,CAAC,IAAI,CAAA,CAAE,CAAC;YAC1C;AAEA,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3B;QAEA,OAAO,UAAU,CAAC,GAAG;AACvB,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,GAAW,KAAa;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK;QAEtB,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,UAAsB,KAAqB;QACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;;QAG3C,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU;AAExD,QAAA,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAI;YACtD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACzC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3C;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,GAAW,KAAI;AACvC,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvD,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;QAE3F,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YACpC;QACF;AAEA,QAAA,MAAM,aAAa,GACjB,mBAAmB,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAE/F,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAE5F,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBACjC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC;gBAClD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,KAC1E,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,CACxD;YAED,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;QAClD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,UAAsB,KAAI;AACrD,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;AAClC,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE;AAClC,QAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC;AAE7C,QAAA,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AACnC,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE;AAEpD,YAAA,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC9D,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAEzC,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;QAEF,gBAAgB,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,GAAY,KAAI;QAC9C,IAAI,GAAG,EAAE;AACP,YAAA,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC5B,gBAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBACnC,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAEvC,IAAI,WAAW,EAAE;AACf,oBAAA,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AAEtB,oBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE;AAC1B,wBAAA,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC;oBACxB;yBAAO;wBACL,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;oBAC3C;gBACF;AAEA,gBAAA,OAAO,UAAU;AACnB,YAAA,CAAC,CAAC;YAEF,gBAAgB,CAAC,GAAG,CAAC;YACrB;QACF;AAEA,QAAA,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC5B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AACnC,YAAA,IAAI,WAA+B;YAEnC,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE;AACtC,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpB,oBAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,WAAW,GAAG,CAAC;AAEf,oBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACvB,wBAAA,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtB;yBAAO;wBACL,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtC;oBACA;gBACF;YACF;YAEA,IAAI,WAAW,EAAE;gBACf,cAAc,CAAC,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACrD;AAEA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;AAC5C,CAAC,EACD,EAAE,IAAI,EAAE,YAAY,EAAE;AAGjB,MAAM,gBAAgB,GAAG,CAAC,OAAmD,KAAI;AACtF,IAAA,MAAM,SAAS,GAAG,eAAe,EAAE;AACnC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AACjC,IAAA,IAAI,UAA8B;AAElC,IAAA,gBAAgB,CACd,OAAO,EACP,CAAC,MAAM,KAAI;AACT,QAAA,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;AACzC,QAAA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AACnC,IAAA,CAAC,EACD,MAAM,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAC/C;AACH;MAEa,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB;MAEtG,qBAAqB,GAAG,CAAC,QAAgB,EAAE,OAA+C,KAAI;AACzG,IAAA,gBAAgB,CACd,QAAQ,CAAC,MAAK;QACZ,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACtE,QAAA,OAAO,GAAG,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAC/D,CAAC,CAAC,CACH;AACH;AAMO,MAAM,+BAA+B,GAAG,CAAC,MAAgC,KAAI;AAClF,IAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAI;AACrD,QAAA,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC1C,IAAA,CAAC,CAAC;AACJ;MAEa,gBAAgB,GAAG,qBAAqB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB;MAE5F,gBAAgB,GAAG,qBAAqB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,gBAAgB;AASlG,MAAM,0BAA0B,GAAG,CAAC,MAA2B,KAAI;AACxE,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,WAAA,EAAc,KAAK,CAAA,CAAE,EAAE,CAAC,EAC1E,gBAAgB,CACjB,CAAC,MAAM,CAAC,UAAU,CAAC;IACtB;AAEA,IAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACtB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAE,EAAE,CAAC,EAC9E,gBAAgB,CACjB,CAAC,MAAM,CAAC,WAAW,CAAC;IACvB;AAEA,IAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE,EAAE,CAAC,EACtE,gBAAgB,CACjB,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpB;AAEA,IAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,QAAA,0BAA0B,CACxB,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE,EAAE,CAAC,EACxE,gBAAgB,CACjB,CAAC,MAAM,CAAC,SAAS,CAAC;IACrB;AACF;;MCnQa,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,wBAAwB,CAC7E;AACE,IAAA,OAAO,EAAE,GAAG;AACZ,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,WAAW,EAAE,CAAC,KAAa,KAAK,KAAK;AACtC,CAAA,EACD,EAAE,IAAI,EAAE,cAAc,EAAE;AAGnB,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,kBAAkB,CACrE,MAAK;AACH,IAAA,MAAM,MAAM,GAAG,iBAAiB,EAAE;IAClC,MAAM,UAAU,GAAG,MAAM,CAAyB,IAAI,GAAG,EAAE,sDAAC;AAC5D,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE;AACxC,IAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;AAClC,IAAA,MAAM,mBAAmB,GAAG,yBAAyB,EAAE;IAEvD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,EAAE;AAEnE,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,QAAQ,GAAG,UAAU,EAAE;QAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC;QAC1D;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAa,EAAE;AAEnC,QAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;AACtD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC;AAC3D,YAAA,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;YAE5B,IAAI,IAAI,CAAC,UAAU;gBAAE;QACvB;AAEA,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE;AAC3B,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACrF;AAEA,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE;AAC3B,YAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAClF;QAEA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC;AACnD,IAAA,CAAC,iDAAC;AAEF,IAAA,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,IAAe,KAAI;QAC9C,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,EAAU,KAAI;AAChC,QAAA,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;AAC/B,YAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACnB,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,CAAC,MAAK;AACV,QAAA,MAAM,SAAS,GAAG,KAAK,EAAE;AACzB,QAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE;AACvC,CAAC,EACD,EAAE,IAAI,EAAE,aAAa,EAAE;MAGZ,qBAAqB,GAAG,CACnC,OAAwD,EACxD,OAAiC,KAC/B;AACF,IAAA,MAAM,UAAU,GAAG,gBAAgB,EAAE;AACrC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;IAEnC,gBAAgB,CACd,OAAO,EACP,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAA,EAAG,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,EACvE,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EACnC,CAAC,KAAK,KAA+B,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAC3F;AACH;;ACtEO,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;;IAEjD,qBAAqB;IACrB,yBAAyB;IACzB,gCAAgC;IAChC,qBAAqB;IACrB,yBAAyB;IACzB,gCAAgC;IAChC,qBAAqB;IACrB,yBAAyB;IACzB,gCAAgC;;IAGhC,gCAAgC;;IAGhC,sBAAsB;IACtB,uBAAuB;;IAGvB,2BAA2B;IAC3B,wBAAwB;;IAGxB,uBAAuB;IACvB,2BAA2B;IAC3B,wBAAwB;;IAGxB,wBAAwB;IACxB,2BAA2B;IAC3B,yBAAyB;IACzB,sBAAsB;;IAGtB,wBAAwB;IACxB,qBAAqB;;IAGrB,6BAA6B;;IAG7B,6BAA6B;IAC7B,qCAAqC;;IAGrC,uBAAuB;IACvB,gCAAgC;IAChC,4BAA4B;IAC5B,2BAA2B;IAC3B,gCAAgC;IAChC,+BAA+B;IAC/B,uBAAuB;IACvB,iCAAiC;IACjC,oCAAoC;IACpC,sCAAsC;IACtC,2BAA2B;IAC3B,8BAA8B;IAC9B,gCAAgC;IAChC,qCAAqC;IACrC,wCAAwC;IACxC,0CAA0C;;IAG1C,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;;IAGnB,kBAAkB;IAClB,mBAAmB;;AAGnB,IAAA,yBAAyB;;IAGzB,iCAAiC;IACjC,sBAAsB;IACtB,4BAA4B;AAC5B,IAAA,wBAAwB;IACxB,qCAAqC;AACtC,CAAA;MAEY,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GAAG,wBAAwB,CAC3E;AACE,IAAA,WAAW,EAAE,CAAC,OAAe,KAAK,OAAO;AACzC,IAAA,iBAAiB,EAAE,2BAA2B;AAC/C,CAAA,EACD,EAAE,IAAI,EAAE,aAAa,EAAE;AAGlB,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,GAAG,kBAAkB,CACnE,MAAK;AACH,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,IAAA,MAAM,MAAM,GAAG,gBAAgB,EAAE;AACjC,IAAA,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE;IAExC,MAAM,kBAAkB,GAAG,MAAM,CAA2C,IAAI,GAAG,EAAE,8DAAC;IACtF,IAAI,eAAe,GAAG,CAAC;AAEvB,IAAA,MAAM,WAAW,GAAG,CAAC,MAAqB,KAAY;QACpD,IAAI,MAAM,CAAC,IAAI;AAAE,YAAA,OAAO,CAAA,MAAA,EAAS,MAAM,CAAC,IAAI,GAAG;QAC/C,IAAI,MAAM,CAAC,QAAQ;AAAE,YAAA,OAAO,CAAA,UAAA,EAAa,MAAM,CAAC,QAAQ,GAAG;QAC3D,IAAI,MAAM,CAAC,SAAS;AAAE,YAAA,OAAO,CAAA,YAAA,EAAe,MAAM,CAAC,SAAS,GAAG;QAC/D,IAAI,MAAM,CAAC,QAAQ;AAAE,YAAA,OAAO,CAAA,UAAA,EAAa,MAAM,CAAC,QAAQ,GAAG;AAC3D,QAAA,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,CAAC,QAAgB,KAAa;QACvD,OAAO,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,SAAwB,EAAE,MAAc,KAAqB;AAC7E,QAAA,MAAM,iBAAiB,GAAG,EAAE,GAAG,SAAS,EAAE;AAE1C,QAAA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC7B,YAAA,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC;QACnF;;QAGA,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,GAAG,iBAAiB;AAE/D,QAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAU,CAAoB;AAC1D,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,QAAgB,KAAI;AAC1C,QAAA,MAAM,MAAM,GAAG,aAAa,EAAE;AAC9B,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,kBAAkB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACpC,YAAA,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC/B;QACF;AAEA,QAAA,MAAM,aAAa,GACjB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAEnG,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;AAClD,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEhE,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;AAE5F,YAAA,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACjC,gBAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,KAC1E,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,OAAO,CACxD;AAED,YAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QACxC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,SAAwB,KAAI;AACtD,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACvC,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE;AAElC,QAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;AAC3C,YAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;AACjD,YAAA,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAE;AAErE,YAAA,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YACzD,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE1D,YAAA,OAAO,iBAAiB;AAC1B,QAAA,CAAC,CAAC;QAEF,cAAc,CAAC,QAAQ,CAAC;AAC1B,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,EAAU,EAAE,QAAiB,KAAI;QAClD,IAAI,QAAQ,EAAE;AACZ,YAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;AAC3C,gBAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;gBACjD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAExD,IAAI,gBAAgB,EAAE;AACpB,oBAAA,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;AAE3B,oBAAA,IAAI,gBAAgB,CAAC,IAAI,KAAK,CAAC,EAAE;AAC/B,wBAAA,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACpC;yBAAO;wBACL,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAC5D;gBACF;AAEA,gBAAA,OAAO,iBAAiB;AAC1B,YAAA,CAAC,CAAC;YAEF,cAAc,CAAC,QAAQ,CAAC;YACxB;QACF;AAEA,QAAA,kBAAkB,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;AAC3C,YAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC;AACjD,YAAA,IAAI,gBAAoC;YAExC,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,iBAAiB,EAAE;AAC/C,gBAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpB,oBAAA,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnB,gBAAgB,GAAG,GAAG;AAEtB,oBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;AACvB,wBAAA,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC/B;yBAAO;wBACL,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C;oBACA;gBACF;YACF;YAEA,IAAI,gBAAgB,EAAE;gBACpB,cAAc,CAAC,MAAM,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACxD;AAEA,YAAA,OAAO,iBAAiB;AAC1B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,MAAM,CAAC,MAAK;AACV,QAAA,aAAa,EAAE;QACf,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,kBAAkB,EAAE,CAAC;QAE5D,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAI;YACrC,cAAc,CAAC,QAAQ,CAAC;AAC1B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE;AAC3C,CAAC,EACD,EAAE,IAAI,EAAE,YAAY,EAAE;AAGjB,MAAM,gBAAgB,GAAG,CAAC,OAAsD,KAAI;AACzF,IAAA,MAAM,SAAS,GAAG,eAAe,EAAE;AACnC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,IAAI,eAAmC;AAEvC,IAAA,gBAAgB,CACd,OAAO,EACP,CAAC,MAAM,KAAI;AACT,QAAA,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;AAC/C,QAAA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;AACjC,IAAA,CAAC,EACD,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,CAClD;AACH;MAEa,uBAAuB,GAAG,qBAAqB,CAC1D,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAC/C,gBAAgB;AAGX,MAAM,oBAAoB,GAAG,CAAC,OAAiD,KAAI;AACxF,IAAA,gBAAgB,CACd,QAAQ,CAAC,MAAK;QACZ,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AAC3E,QAAA,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;IACpG,CAAC,CAAC,CACH;AACH;MAEa,kBAAkB,GAAG,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB;AAa7G,MAAM,kBAAkB,GAAG,CAAC,OAAqD,KAAI;AAC1F,IAAA,gBAAgB,CACd,QAAQ,CAAC,MAAK;QACZ,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,IAAI;QAExB,MAAM,UAAU,GAAa,EAAE;AAE/B,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AACtD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,MAAM,CAAC,SAAS;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAClD,IAAI,MAAM,CAAC,SAAS;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAClD,IAAI,MAAM,CAAC,YAAY;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,MAAM,CAAC,UAAU,CAAA,CAAE,CAAC;QACxF,IAAI,MAAM,CAAC,eAAe;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA,kBAAA,EAAqB,MAAM,CAAC,eAAe,CAAA,CAAE,CAAC;AAC1F,QAAA,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,CAAA,kBAAA,EAAqB,MAAM,CAAC,eAAe,CAAA,CAAE,CAAC;QAExG,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;IAC1F,CAAC,CAAC,CACH;AACH;MAEa,cAAc,GAAG,CAAC,QAAgB,EAAE,OAA+C,KAAI;IAClG,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,EAAE,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;AAC1G;AAEA,MAAM,oBAAoB,GAAG,CAAC,QAAgB,KAC5C,0BAA0B,CACxB,CAAC,KAAK,EAAE,KAAK,MAAM;IACjB,QAAQ,EAAE,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAE;AAC1B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,GAAG,EAAE,CAAA,GAAA,EAAM,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;CAC/B,CAAC,EACF,gBAAgB,CACjB;AA4BI,MAAM,sBAAsB,GAAG,CAAC,MAAuB,KAAI;AAChE,IAAA,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,OAAgD,KAAI;AACrF,QAAA,IAAI,OAAO;AAAE,YAAA,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;AAChD,IAAA,CAAC;AAED,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC;AAC1C,IAAA,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;AAC1B,IAAA,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AAC5B,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AAChC,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC;AAClD,IAAA,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AACvC,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAA,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AACrC,IAAA,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC;AAClD,IAAA,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AACvC,IAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;IAE9B,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,UAAU;QAAE,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpF,IAAI,MAAM,CAAC,MAAM;QAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM;QAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/D,IAAI,MAAM,CAAC,MAAM;QAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACjE;AAmBA,MAAM,yBAAyB,GAAG,CAAC,QAAgB,KACjD,0BAA0B,CACxB,CAAC,KAAK,EAAE,KAAK,MAAM;IACjB,IAAI,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE;AAC3B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,GAAG,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;CACpC,CAAC,EACF,gBAAgB,CACjB;AAEI,MAAM,wBAAwB,GAAG,CAAC,MAAyB,KAAI;AACpE,IAAA,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAgD,KAAI;AAC1F,QAAA,IAAI,CAAC,OAAO;YAAE;QACd,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,IAAI,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;AAC3G,IAAA,CAAC;AAED,IAAA,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AACjC,IAAA,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;AACjC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;AACtC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACvC,IAAA,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;AAC5C,IAAA,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AACnC,IAAA,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC;AAC/C,IAAA,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;AACnC,IAAA,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC1C,IAAA,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AACrC,IAAA,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC;IAElD,IAAI,MAAM,CAAC,WAAW;QAAE,YAAY,CAAC,cAAc,EAAE,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,YAAY;QAAE,YAAY,CAAC,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE5F,IAAI,MAAM,CAAC,MAAM;QAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACtE;AAaA,MAAM,yBAAyB,GAAG,CAAC,QAAgB,KACjD,0BAA0B,CACxB,CAAC,KAAK,EAAE,KAAK,MAAM;IACjB,QAAQ,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE;AAC/B,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,GAAG,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE;CACpC,CAAC,EACF,gBAAgB,CACjB;AAEI,MAAM,oBAAoB,GAAG,CAAC,MAAqB,KAAI;AAC5D,IAAA,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAgD,KAAI;AAC1F,QAAA,IAAI,CAAC,OAAO;YAAE;QACd,qBAAqB,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,EAAE,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,OAAO,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC;AAC/G,IAAA,CAAC;AAED,IAAA,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC;AACpD,IAAA,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC;AAClD,IAAA,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC;AACtD,IAAA,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;AACrC,IAAA,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC;AACvC,IAAA,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC;IAE/B,IAAI,MAAM,CAAC,OAAO;QAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACvE,IAAI,MAAM,CAAC,IAAI;QAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAChE;AAYO,MAAM,wBAAwB,GAAG,CAAC,MAAyB,KAAI;IACpE,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC;IACrD,IAAI,MAAM,CAAC,WAAW;AAAE,QAAA,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC;IAEnE,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE;AACxF,QAAA,sBAAsB,CAAC;YACrB,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC9C,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW;YAChE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC9C,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG;YACxC,GAAG,MAAM,CAAC,SAAS;AACpB,SAAA,CAAC;IACJ;AAEA,IAAA,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE;AACxE,QAAA,wBAAwB,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC5C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW;YAC9D,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK;YAC5C,GAAG,MAAM,CAAC,OAAO;AAClB,SAAA,CAAC;IACJ;IAEA,IAAI,MAAM,CAAC,OAAO;AAAE,QAAA,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1D;;ACriBA,MAAM,cAAc,GAAG,CAAC,MAAiB,EAAE,YAAuB,KAAe;IAC/E,OAAO;AACL,QAAA,GAAG,YAAY;AACf,QAAA,GAAG,MAAM;KACV;AACH,CAAC;MAEY,mBAAmB,GAAG,IAAI,cAAc,CAAe,qBAAqB;AAEzF;MAIa,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAW;QAEhD,IAAA,CAAA,cAAc,GAAG,KAAK;AAErB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAKzE,IAAA,CAAA,OAAO,GAAc,EAAE;AA0JhC,IAAA;AA7JC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;IAGA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE;IAC1B;AAEA,IAAA,YAAY,CAAC,MAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;AAEhE,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB;QACF;QAEA,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAE3B,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACvD,YAAA,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3F;AAAO,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,oBAAA,IAAI,KAAK,YAAY,UAAU,EAAE;wBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBAC3F;yBAAO;AACL,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;oBAC1B;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACtD,gBAAA,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtD,oBAAA,IAAI,QAAQ,YAAY,UAAU,EAAE;AAClC,wBAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,KAAK,CAAC,CAAC;oBAC7G;yBAAO;wBACL,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,QAAQ,CAAC;oBAC5C;gBACF;YACF;iBAAO;AACL,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1B;QACF;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;IAC5B;IAEQ,OAAO,CAAC,GAAW,EAAE,KAAc,EAAA;QACzC,QAAQ,GAAG;AACT,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACtC,oBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACpC;gBACA;AAEF,YAAA,KAAK,WAAW;gBACd;oBACE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC;oBAEzD,IAAI,IAAI,EAAE;AACR,wBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAe,CAAC;oBAC5C;yBAAO;wBACL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,wBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;AAChC,wBAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,KAAe,CAAC;AAC7C,wBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBACpC;gBACF;gBAEA;AAEF,YAAA,KAAK,WAAW;gBACd;AACE,oBAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,aAAA,EAAiB,KAAuB,CAAC,QAAQ,CAAA,EAAA,CAAI,CAAC;oBAE1G,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,YAAY,CAAC,MAAM,EAAG,KAAuB,CAAC,IAAI,CAAC;oBAC1D;yBAAO;wBACL,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,wBAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;wBAChC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAG,KAAuB,CAAC,QAAQ,CAAC;wBACnE,OAAO,CAAC,YAAY,CAAC,MAAM,EAAG,KAAuB,CAAC,IAAI,CAAC;AAC3D,wBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;oBACpC;gBACF;gBAEA;AAEF,YAAA;gBACE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,KAAgB;AAEvE,oBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC1D;qBAAO;oBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA,MAAA,EAAS,GAAG,CAAA,CAAA,CAAG,CAAC;gBAC9C;gBACA;;IAEN;IAEQ,QAAQ,GAAA;AACd,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC;AAE7D,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;oBACrB,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,CAAC,CAAC;gBAEF;YACF;AAEA,YAAA,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,UAAA,EAAa,GAAG,CAAA,EAAA,CAAI,CAAC;gBAEzD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,MAAM,EAAE;gBACf;gBAEA;YACF;YAEA,IACE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;AACrC,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;gBAC1B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,CAAC,EAC1C;gBACA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAA4B,EAAE;AACjE,oBAAA,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAsB,CAAC,GAAG,MAA0C,CAAC;AAE7F,oBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;wBAC7B,IAAI,CAAC,OAAO,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,EAAE,SAAS,CAAC;oBAC7C;gBACF;YACF;iBAAO;gBACL,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,GAAsB,CAAC;AAEjE,gBAAA,IAAI,WAAW,KAAK,SAAS,EAAE;AAC7B,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;gBACzB;YACF;QACF;IACF;8GArKW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,SAAA,EAFZ,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE7D,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,YAAc,EAAE,CAAC;AACzE,iBAAA;;;MCKY,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,GAAG,wBAAwB,CAC/F;AACE,IAAA,SAAS,EAAE,MAAM;AAClB,CAAA,EACD,EAAE,IAAI,EAAE,wBAAwB,EAAE;AAG7B,MAAM,CAAC,0BAA0B,EAAE,yBAAyB,CAAC,GAAG,kBAAkB,CACvF,MAAK;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAACA,UAAQ,CAAC;AACjC,IAAA,MAAM,QAAQ,GAAG,cAAc,EAAE;AACjC,IAAA,MAAM,MAAM,GAAG,0BAA0B,EAAE;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAiC,IAAI,GAAG,EAAE,mDAAC;IAEjE,MAAM,gBAAgB,GAAG,MAAkB;AACzC,QAAA,OAAO,MAAM,CAAC,SAAS,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACpE,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,IAAqD,KAAI;AAC9F,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;YAErC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,YAAA,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE;gBACrC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;YACvD;YAEA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;YAE/C,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAE3F,YAAA,MAAM,MAAM,GAAG,gBAAgB,EAAE;AACjC,YAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;AAEpC,YAAA,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;AAC1B,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,EAAU,KAAI;AAC1C,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC;YACrC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAEjC,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC/B,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;AAE/C,gBAAA,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB;AAEA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE;AACpD,CAAC,EACD,EAAE,IAAI,EAAE,uBAAuB,EAAE;AAG5B,MAAM,0BAA0B,GAAG,CACxC,OAAwF,KACtF;AACF,IAAA,MAAM,KAAK,GAAG,yBAAyB,EAAE;AACzC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE1C,gBAAgB,CACd,OAAO,EACP,CAAC,IAAI,KAAK,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjD,MAAM,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAC3C;AACH;;MC9Ea,uBAAuB,CAAA;AAVpC,IAAA,WAAA,GAAA;AAWU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAExC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqE,IAAI,gDAAC;AAEtF,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YAExB,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,IAAI;YACb;YAEA,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE;AAC5F,YAAA,MAAM,IAAI,GAAG,CAAA,mCAAA,EAAsC,IAAI,WAAW;YAClE,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACrD,QAAA,CAAC,kDAAC;AACH,IAAA;8GAhBY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,mSARxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQD,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,aAAa,EAAE,UAAU;AAC1B,qBAAA;AACF,iBAAA;;;ACwBM,MAAM,kBAAkB,GAAG,CAAC,IAAY,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAA,CAAE;AAEtG,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,GAAG,oBAAoB,CAAW,SAAS,EAAE;AAChG,IAAA,IAAI,EAAE,cAAc;AACrB,CAAA;AACM,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;AAEvG,MAAM,+BAA+B,GAAG,CAAC,MAAe,EAAE,MAAM,GAAG,IAAI,KAAK;AACjF,IAAA,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,oBAAoB,CAAC,MAAM,CAAC;;;AC3C9B;;AAEG;AACI,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,KAAc,EAAE,IAAiB,KAAI;AACnF,IAAA,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAClD,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE;IAEvC,OAAO;AACM,aAAA,EAAA,SAAS,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;AAChC,aAAA,EAAA,SAAS,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;eACpC,SAAS,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;AACxD,aAAA,EAAA,SAAS,CAAA,SAAA,EAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;AACtC,aAAA,EAAA,SAAS,CAAA,WAAA,EAAc,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;;AAE1C,aAAA,EAAA,WAAW,MAAM,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAChD,aAAA,EAAA,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAC5E,aAAA,EAAA,WAAW,MAAM,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAClG,aAAA,EAAA,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,SAAA,EAAY,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;AAC9E,aAAA,EAAA,WAAW,CAAA,GAAA,EAAM,MAAM,CAAA,WAAA,EAAc,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;GAC9F;AACH;AAEA;;AAEG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAe,KAAI;AACpD,IAAA,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAmB,KAAI;QACvD,OAAO;AACM,eAAA,EAAA,IAAI,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAA;AAC7B,eAAA,EAAA,IAAI,CAAA,QAAA,EAAW,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;iBACjC,IAAI,CAAA,QAAA,EAAW,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;AACvD,eAAA,EAAA,IAAI,CAAA,SAAA,EAAY,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;AACnC,eAAA,EAAA,IAAI,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAA;;AAEpC,kBAAA,EAAA,IAAI,CAAA,EAAA,EAAK,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC/B,IAAI,CAAA,QAAA,EAAW,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;AAC7D,kBAAA,EAAA,IAAI,WAAW,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;oBACrF,IAAI,CAAA,SAAA,EAAY,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC/D,IAAI,CAAA,WAAA,EAAc,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAA;KAClF;AACH,IAAA,CAAC;IAED,MAAM,IAAI,GAAa,EAAE;AAEzB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;QAE3C,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,QAAA,CAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAEvD,YAAA,IAAI,KAAK,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,UAAA,CAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7D;AAEA,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,SAAA,CAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3D;QACF;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5C;IACF;AAEA,IAAA,MAAM,GAAG,GAAG;;AAER,IAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;GAElB;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,IAAA,KAAK,CAAC,EAAE,GAAG,CAAA,cAAA,CAAgB;IAC3B,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC;AAEA;;AAEG;MACU,gBAAgB,GAAG,CAAC,KAAY,EAAE,KAAc,KAAI;IAC/D,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;IACnD,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE;AAExC,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,MAAM,KAAK,CAAC,YAAY,IAAI,KAAK;AAC7D,cAAE,CAAC,OAAO,EAAE,CAAA,SAAA,EAAY,YAAY,WAAW;cAC7C,EAAE,CAAC;QACP,CAAA,SAAA,EAAY,YAAY,CAAA,EAAA,EAAK,YAAY,CAAA,CAAE;KAC5C;AAED,IAAA,MAAM,GAAG,GAAG;AACV,EAAA,EAAA,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;MAClB,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;AAChD,IAAA,EAAA,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;AAC3E,IAAA,EAAA,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;;GAE3E;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IAC7C,KAAK,CAAC,EAAE,GAAG,CAAA,QAAA,EAAW,YAAY,CAAA,EAAA,EAAK,YAAY,EAAE;IACrD,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC;AAEA;;AAEG;MACU,oBAAoB,GAAG,CAAC,IAAwB,MAAM,IAAI,GAAG,aAAa,IAAI,CAAA,kBAAA,CAAoB,GAAG,IAAI;AAEtH;;AAEG;MACU,oBAAoB,GAAG,CAAC,GAAuB,MAAM,GAAG,GAAG,OAAO,GAAG,CAAA,iBAAA,CAAmB,GAAG,IAAI;AAE5G;;AAEG;AACI,MAAM,yBAAyB,GAAG,CAAC,MAAe,EAAE,MAAM,GAAG,IAAI,KAAI;IAC1E,MAAM,QAAQ,GASV,EAAE;AAEN,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,IAAI,KAAK,CAAC,IAAI,CAAA,CAAE;QAErC,QAAQ,CAAC,GAAG,CAAC,GAAG;YACd,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAE;YAC3D,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAE;YACvD,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAE;YAC1G,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAE;YACzD,QAAQ,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAE;SAC9D;QAED,MAAM,KAAK,GAAG,CAAA,EAAG,MAAM,OAAO,KAAK,CAAC,IAAI,CAAA,CAAE;QAE1C,QAAQ,CAAC,KAAK,CAAC,GAAG;YAChB,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YAC7D,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YAChH,KAAK,EACH,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjD,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjD,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YACtD,MAAM,EACJ,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;YAC5G,QAAQ,EACN,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAE;SAC/G;IACH;AAEA,IAAA,OAAO,QAAQ;AACjB;AAEA;;AAEG;AACI,MAAM,kBAAkB,GAAG,CAAC,MAAe,KAAI;IACpD,IAAI,SAAS,EAAE,EAAE;AACf,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM;AACrE,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM;AAE3E,QAAA,IAAI,YAAY,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC,IAAI,CACV,iHAAiH,CAClH;QACH;AAAO,aAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CACV,mIAAmI,CACpI;QACH;AAEA,QAAA,IAAI,eAAe,GAAG,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC,IAAI,CACV,8IAA8I,CAC/I;QACH;IACF;AAEA,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,QAAA,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC;AAC9B,QAAA,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC;IAC/B;IAEA,kBAAkB,CAAC,MAAM,CAAC;IAE1B,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7F;;MCjLa,cAAc,GAAG,IAAI,cAAc,CAAwB,eAAe;MAS1E,qBAAqB,CAAA;AAPlC,IAAA,WAAA,GAAA;QAQU,IAAA,CAAA,MAAM,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9C,IAAA,CAAA,MAAM,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE3B,IAAA,CAAA,mBAAmB,GAAqB,IAAI;QAEpD,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,SAAS,sDAAI,KAAK,EAAE,gBAAgB,EAAA,CAAG;QACxE,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAgB,SAAS,qDAAI,KAAK,EAAE,mBAAmB,EAAA,CAAG;AAE1E,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAE9B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;gBAAE;YAE5B,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;AACnF,gBAAA,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,CAAA,mEAAA,CAAqE,CAAC;YACpG;AAEA,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE7B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;gBAAE;YAE5B,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE;AACnF,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,CAAA,mEAAA,CAAqE,CAAC;YACnG;AAEA,YAAA,OAAO,kBAAkB,CAAC,KAAK,CAAC;AAClC,QAAA,CAAC,wDAAC;AAEQ,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YACnC,MAAM,MAAM,GAAa,EAAE;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI;AAElC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,QAAA,EAAW,IAAI,CAAC,aAAa,EAAE,CAAA,CAAE,CAAC;YACzD;AAEA,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,YAAA,EAAe,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,CAAC;YAC5D;AAEA,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACzB,QAAA,CAAC,sDAAC;AAsBH,IAAA;AApBC,IAAA,gBAAgB,CAAC,QAA+B,EAAA;AAC9C,QAAA,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE;AAEnC,QAAA,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;AACxC,YAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAK;AACrC,gBAAA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,EAAE;AAC7C,gBAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,EAAE;gBAE3C,SAAS,CAAC,MAAK;AACb,oBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;AAChD,oBAAA,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAChD,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,+DAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE;AACnC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;IACjC;8GApEW,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,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,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,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EALrB,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAKjE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAA,qBAAuB,EAAE,CAAC;AAC5E,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,cAAc;AAC1B,qBAAA;AACF,iBAAA;;;ACxBD;;AAEG;;;;"}
|