{"version":3,"file":"taiga-ui-kit-components-slider.mjs","sources":["../../../projects/kit/components/slider/helpers/key-steps.ts","../../../projects/kit/components/slider/slider.options.ts","../../../projects/kit/components/slider/slider.component.ts","../../../projects/kit/components/slider/helpers/slider-key-steps.directive.ts","../../../projects/kit/components/slider/helpers/slider-readonly.directive.ts","../../../projects/kit/components/slider/helpers/slider-thumb-label.component.ts","../../../projects/kit/components/slider/helpers/slider-thumb-label.template.html","../../../projects/kit/components/slider/slider.ts","../../../projects/kit/components/slider/taiga-ui-kit-components-slider.ts"],"sourcesContent":["import type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\n\nimport type {TuiSliderComponent} from '../slider.component';\n\n/**\n * Used as a limit for eliminating JS issues with floating point math\n */\nexport const TUI_FLOATING_PRECISION = 7;\n\n/**\n * Steps for splitting sliders into different linear dependencies.\n * Each element of the array has the form [percent, value]\n *\n * Thus, to set a field from 50,000 to 30,000,000 in steps:\n * 1) From 50 000 to 200 000 by 5000 per step (30 steps)\n * 2) From 200 000 to 1 000 000 by 50 000 per step (16 steps)\n * 3) From 1 000 000 to 30 000 000 by 500 000 per step (58 steps)\n *\n * You need to pass the following keyStep (where 104 = 30 + 16 + 58 is the total number of steps):\n *  [\n *      [0, 50_000],\n *      [100 / 104 * 30, 200_000],\n *      [100 / 104 * (30 + 16), 1_000_000],\n *      [100, 30_000_000],\n *  ];\n *\n */\nexport type TuiKeySteps = [[0, number], ...Array<[number, number]>, [100, number]];\n\nfunction tuiFindKeyStepsBoundariesByFn(\n    keySteps: TuiKeySteps,\n    fn: ([keyStepPercent, keyStepValue]: [number, number]) => boolean,\n): [[number, number], [number, number]] {\n    const keyStepUpperIndex = keySteps.findIndex((keyStep, i) => i && fn(keyStep));\n\n    const lowerStep = keySteps[keyStepUpperIndex - 1] || keySteps[0];\n    const upperStep = keySteps[keyStepUpperIndex] ||\n        keySteps[keySteps.length - 1] || [0, 0];\n\n    return [lowerStep, upperStep];\n}\n\nexport function tuiPercentageToKeyStepValue(\n    valuePercentage: number,\n    keySteps: TuiKeySteps,\n): number {\n    const [[lowerStepPercent, lowerStepValue], [upperStepPercent, upperStepValue]] =\n        tuiFindKeyStepsBoundariesByFn(\n            keySteps,\n            ([keyStepPercentage, _]) => valuePercentage <= keyStepPercentage,\n        );\n    const ratio =\n        (valuePercentage - lowerStepPercent) / (upperStepPercent - lowerStepPercent);\n    const controlValue = (upperStepValue - lowerStepValue) * ratio + lowerStepValue;\n\n    return tuiRound(controlValue, TUI_FLOATING_PRECISION);\n}\n\nexport function tuiKeyStepValueToPercentage(\n    value: number,\n    keySteps: TuiKeySteps,\n): number {\n    const [[lowerStepPercent, lowerStepValue], [upperStepPercent, upperStepValue]] =\n        tuiFindKeyStepsBoundariesByFn(\n            keySteps,\n            ([_, keyStepValue]) => value <= keyStepValue,\n        );\n    const ratio = (value - lowerStepValue) / (upperStepValue - lowerStepValue) || 0;\n\n    return (upperStepPercent - lowerStepPercent) * ratio + lowerStepPercent;\n}\n\nexport function tuiCreateKeyStepsTransformer(\n    keySteps: TuiKeySteps,\n    slider: TuiSliderComponent,\n): TuiValueTransformer<number, number> {\n    return new (class implements TuiValueTransformer<number, number> {\n        public fromControlValue(controlValue: number): number {\n            const newValuePercentage = tuiKeyStepValueToPercentage(\n                controlValue,\n                keySteps,\n            );\n\n            return (newValuePercentage * (slider.max - slider.min)) / 100 + slider.min;\n        }\n\n        public toControlValue(nativeValue: number): number {\n            const valueRatio =\n                (nativeValue - slider.min) / (slider.max - slider.min) || 0;\n\n            return tuiPercentageToKeyStepValue(valueRatio * 100, keySteps);\n        }\n    })();\n}\n","import type {Provider} from '@angular/core';\nimport {InjectionToken} from '@angular/core';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiSliderOptions {\n    readonly size: TuiSizeS;\n    readonly trackColor: string;\n}\n\nexport const TUI_SLIDER_DEFAULT_OPTIONS: TuiSliderOptions = {\n    size: 'm',\n    trackColor: 'var(--tui-background-neutral-2)',\n};\n\n/**\n * Default parameters for Slider component\n */\nexport const TUI_SLIDER_OPTIONS = new InjectionToken(\n    ngDevMode ? 'TUI_SLIDER_OPTIONS' : '',\n    {\n        factory: () => TUI_SLIDER_DEFAULT_OPTIONS,\n    },\n);\n\nexport function tuiSliderOptionsProvider(options: Partial<TuiSliderOptions>): Provider {\n    return tuiProvideOptions(TUI_SLIDER_OPTIONS, options, TUI_SLIDER_DEFAULT_OPTIONS);\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    inject,\n    Input,\n    signal,\n} from '@angular/core';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\nimport {take} from 'rxjs';\n\nimport {TUI_FLOATING_PRECISION} from './helpers/key-steps';\nimport {TuiSliderKeyStepsBase} from './helpers/slider-key-steps.directive';\nimport {TUI_SLIDER_OPTIONS} from './slider.options';\n\n@Component({\n    standalone: true,\n    selector: 'input[type=range][tuiSlider]',\n    template: '',\n    styleUrls: ['./slider.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiAsAuxiliary(TuiSliderComponent)],\n    host: {\n        /**\n         * For change detection.\n         * Webkit does not have built-in method for customization of filling progress (as Firefox).\n         * We draw filling of progress by `background: linear-gradient(...)` of the track.\n         * This function triggers change detection (for {@link valueRatio} getter) when we drag thumb of the input.\n         */\n        '(input)': '0',\n        '[style.--tui-slider-track-color]': 'options.trackColor',\n        '[style.--tui-ticks-gradient]': 'ticksGradient()',\n        '[style.--tui-slider-fill-ratio]': 'valueRatio',\n        '[attr.data-size]': 'size',\n    },\n})\nexport class TuiSliderComponent {\n    private readonly control = inject(NgControl, {self: true, optional: true});\n\n    protected readonly options = inject(TUI_SLIDER_OPTIONS);\n    protected readonly segments = signal<number[]>([1]);\n    protected readonly ticksGradient = computed((segments = this.segments()) =>\n        this.getTicksGradient(segments),\n    );\n\n    @Input()\n    public size: TuiSizeS = this.options.size;\n\n    public readonly el = tuiInjectElement<HTMLInputElement>();\n    public readonly keySteps = inject(TuiSliderKeyStepsBase, {\n        self: true,\n        optional: true,\n    });\n\n    constructor() {\n        if (this.control instanceof NgModel) {\n            /**\n             * The ValueAccessor.writeValue method is called twice on any value accessor during component initialization,\n             * when a control is bound using [(ngModel)], first time with a phantom null value.\n             * With `changeDetection: ChangeDetectionStrategy.OnPush` the second call of writeValue with real value don't re-render the view.\n             * ___\n             * See this {@link https://github.com/angular/angular/issues/14988 issue}\n             */\n            this.control.valueChanges?.pipe(tuiWatch(), take(1)).subscribe();\n        }\n    }\n\n    // TODO(v5): use signal inputs\n    @Input({\n        alias: 'segments',\n        transform: (x: number[] | number) =>\n            Array.isArray(x) ? x : new Array(x).fill(null).map((_, i) => i / x),\n    })\n    public set segmentsSetter(segments: number[]) {\n        this.segments.set(segments);\n    }\n\n    public get valueRatio(): number {\n        return (this.value - this.min) / (this.max - this.min) || 0;\n    }\n\n    public get min(): number {\n        return Number(this.el.min);\n    }\n\n    public set min(x: number) {\n        this.el.min = String(x);\n    }\n\n    public get max(): number {\n        return Number(this.el.max || 100);\n    }\n\n    public set max(x: number) {\n        this.el.max = String(x);\n    }\n\n    public get step(): number {\n        if (!this.el.step) {\n            return 1;\n        }\n\n        return this.el.step === 'any' ? 0 : Number(this.el.step);\n    }\n\n    public set step(x: number) {\n        this.el.step = String(x);\n    }\n\n    public get value(): number {\n        /**\n         * If developer uses `[(ngModel)]` and programmatically change value,\n         * the `el.nativeElement.value` is equal to the previous value at this moment\n         * (it will be updated only in next microtask).\n         * @see https://github.com/angular/angular/issues/13568\n         */\n        if (this.control instanceof NgModel) {\n            const transformer = this.keySteps?.transformer();\n            const value = transformer\n                ? transformer.fromControlValue(this.control.value)\n                : this.control.viewModel;\n\n            return this.step\n                ? tuiRound(\n                      Math.round(value / this.step) * this.step,\n                      TUI_FLOATING_PRECISION,\n                  )\n                : value;\n        }\n\n        return Number(this.el.value) || 0;\n    }\n\n    public set value(newValue: number) {\n        this.el.value = `${newValue}`;\n    }\n\n    protected getTicksGradient(segments: number[]): string {\n        if (segments.length <= 1) {\n            return 'linear-gradient(to right, transparent 0 100%)';\n        }\n\n        const percentages = segments\n            .filter((segment) => segment > 0 && segment < 1)\n            .map((segment) => segment * 100);\n\n        return percentages.reduce(\n            (acc, segment, index) =>\n                `${acc}\n                var(--tui-text-tertiary) ${segment}% calc(${segment}% + var(--t-tick-thickness)),\n                transparent ${segment}% ${percentages[index + 1] ?? 100}%${percentages[index + 1] ? ',' : ')'}\n                `,\n            `linear-gradient(to right, transparent 0 ${percentages[0]}%,`,\n        );\n    }\n}\n","import {Directive, forwardRef, inject, INJECTOR, Input, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {switchMap, timer} from 'rxjs';\n\nimport {TuiSliderComponent} from '../slider.component';\nimport type {TuiKeySteps} from './key-steps';\nimport {tuiCreateKeyStepsTransformer} from './key-steps';\n\n@Directive({\n    standalone: true,\n    selector: 'input[tuiSlider][keySteps]',\n    host: {\n        '[attr.aria-valuemin]': 'min',\n        '[attr.aria-valuemax]': 'max',\n        '[attr.aria-valuenow]': 'value()',\n    },\n})\nexport class TuiSliderKeyStepsBase {\n    private readonly injector = inject(INJECTOR);\n    private readonly control = inject(NgControl, {self: true, optional: true});\n\n    protected min?: number;\n    protected max?: number;\n\n    @Input({transform: (x: number | 'any') => (x === 'any' ? null : x)})\n    public step: number | null = 1;\n\n    public transformer = signal<TuiValueTransformer<number, number> | null>(null);\n    public value = toSignal(\n        timer(0) // https://github.com/angular/angular/issues/54418\n            .pipe(switchMap(() => tuiControlValue<number>(this.control))),\n    );\n\n    @tuiPure\n    public get slider(): TuiSliderComponent {\n        return this.injector.get(TuiSliderComponent);\n    }\n\n    @Input()\n    public set keySteps(steps: TuiKeySteps | null) {\n        this.transformer.set(steps && tuiCreateKeyStepsTransformer(steps, this.slider));\n        this.min = steps?.[0][1];\n        this.max = steps?.[steps.length - 1]?.[1];\n    }\n\n    /**\n     * TODO(v5): standardize logic between `TuiSlider` & `TuiInputSlider` (for non-linear slider `step` means percentage)\n     * Add these host-bindings to `TuiSliderKeyStepsBase`:\n     * ```\n     * host: {\n     *     '[attr.min]': '0',\n     *     '[attr.step]': '1',\n     *     '[attr.max]': 'totalSteps',\n     * },\n     * ```\n     */\n    public get totalSteps(): number {\n        /**\n         * Not-integer amount of steps is invalid usage of native sliders\n         * ```html\n         * <input type=\"range\" [max]=\"100\" [step]=\"3.33\" />\n         * ```\n         * (impossible to select 100; 99.9 is max allowed value)\n         */\n        return this.step ? Math.round(100 / this.step) : Infinity;\n    }\n\n    public takeStep(coefficient: number): number {\n        const newValue = this.slider.value + coefficient;\n\n        return (\n            this.transformer()?.toControlValue(this.slider.value + coefficient) ??\n            newValue\n        );\n    }\n}\n\n@Directive({\n    standalone: true,\n    selector:\n        'input[tuiSlider][keySteps][ngModel],input[tuiSlider][keySteps][formControl],input[tuiSlider][keySteps][formControlName]',\n    providers: [tuiFallbackValueProvider(0)],\n    host: {\n        '[value]': 'value()',\n        '[disabled]': 'disabled()',\n        '(blur)': 'onTouched()',\n        '(input)': 'onChange($event.target.value)',\n        '(change)': 'onChange($event.target.value)',\n    },\n})\nexport class TuiSliderKeySteps extends TuiControl<number> {\n    private readonly slider = inject<TuiSliderComponent>(\n        forwardRef(() => TuiSliderComponent),\n    );\n\n    @Input()\n    public set keySteps(steps: TuiKeySteps) {\n        this.transformer = tuiCreateKeyStepsTransformer(steps, this.slider);\n    }\n}\n","import type {BooleanInput} from '@angular/cdk/coercion';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOCUMENT} from '@angular/common';\nimport {Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {combineLatest, filter, map, merge, tap} from 'rxjs';\n\nconst SLIDER_INTERACTION_KEYS = new Set([\n    'ArrowDown',\n    'ArrowLeft',\n    'ArrowRight',\n    'ArrowUp',\n    'End',\n    'Home',\n    'PageDown',\n    'PageUp',\n]);\n\n/**\n * Native <input type='range' readonly> doesn't work.\n * This directive imitates this native behaviour.\n */\n@Directive({\n    standalone: true,\n    selector: 'input[tuiSlider][readonly]',\n    host: {\n        '(keydown)': 'preventKeyboardInteraction($event)',\n        '(mousedown)': 'preventEvent($event)',\n    },\n})\nexport class TuiSliderReadonly {\n    private readonly el = tuiInjectElement<HTMLInputElement>();\n    private readonly doc = inject(DOCUMENT);\n\n    @Input({transform: coerceBooleanProperty})\n    public readonly: BooleanInput = true;\n\n    constructor() {\n        const touchStart$ = tuiTypedFromEvent(this.el, 'touchstart', {\n            passive: false,\n        });\n        const touchMove$ = tuiTypedFromEvent(this.doc, 'touchmove', {\n            passive: false,\n        });\n        const touchEnd$ = tuiTypedFromEvent(this.doc, 'touchend', {\n            passive: true,\n        });\n\n        const shouldPreventMove$ = merge(\n            touchStart$.pipe(\n                tap((e) => this.preventEvent(e)),\n                map(TUI_TRUE_HANDLER),\n            ),\n            touchEnd$.pipe(map(TUI_FALSE_HANDLER)),\n        );\n\n        /**\n         * @bad TODO think about another solution.\n         * Keep in mind that preventing touch event (on slider) inside `@HostListener('touchstart')` doesn't work for mobile chrome.\n         */\n        combineLatest([touchMove$, shouldPreventMove$])\n            .pipe(\n                filter(([_, shouldPreventMove]) => shouldPreventMove),\n                takeUntilDestroyed(),\n            )\n            .subscribe(([moveEvent]) => this.preventEvent(moveEvent));\n    }\n\n    protected preventEvent(event: Event): void {\n        if (event.cancelable && this.readonly) {\n            event.preventDefault();\n        }\n    }\n\n    protected preventKeyboardInteraction(event: KeyboardEvent): void {\n        if (SLIDER_INTERACTION_KEYS.has(event.key)) {\n            this.preventEvent(event);\n        }\n    }\n}\n","/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {AsyncPipe, NgIf} from '@angular/common';\nimport type {AfterContentInit} from '@angular/core';\nimport {ChangeDetectionStrategy, Component, ContentChild} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TuiSliderComponent} from '../slider.component';\n\n@Component({\n    standalone: true,\n    selector: '[tuiSliderThumbLabel]',\n    imports: [AsyncPipe, NgIf],\n    templateUrl: './slider-thumb-label.template.html',\n    styleUrls: ['./slider-thumb-label.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiHintOptionsProvider({direction: 'top', appearance: 'dark'})],\n})\nexport class TuiSliderThumbLabel implements AfterContentInit {\n    @ContentChild(TuiSliderComponent)\n    protected readonly slider?: TuiSliderComponent;\n\n    @ContentChild(NgControl)\n    protected readonly control?: NgControl;\n\n    public ngAfterContentInit(): void {\n        ngDevMode &&\n            console.assert(\n                Boolean(this.control?.valueChanges),\n                '\\n[tuiSliderThumbLabel] expected <input tuiSlider type=\"range\" /> to use Angular Forms.\\n' +\n                    'Use [(ngModel)] or [formControl] or formControlName for correct work.',\n            );\n    }\n\n    protected get size(): TuiSizeS {\n        return this.slider?.size || 'm';\n    }\n\n    protected get ratio(): number {\n        return this.slider?.valueRatio || 0;\n    }\n\n    protected get ghostStart(): number {\n        return this.ratio * (this.slider?.el.offsetWidth || 0);\n    }\n}\n","<ng-container *ngIf=\"control?.valueChanges | async\" />\n\n<div\n    class=\"t-ghost\"\n    [attr.data-size]=\"size\"\n    [style.--tui-slider-thumb-ratio]=\"ratio\"\n    [style.inset-inline-start.px]=\"ghostStart\"\n    [style.left.px]=\"ghostStart\"\n>\n    <ng-content />\n</div>\n\n<ng-content select=\"input[type=range]\" />\n","import {\n    TuiSliderKeySteps,\n    TuiSliderKeyStepsBase,\n} from './helpers/slider-key-steps.directive';\nimport {TuiSliderReadonly} from './helpers/slider-readonly.directive';\nimport {TuiSliderThumbLabel} from './helpers/slider-thumb-label.component';\nimport {TuiSliderComponent} from './slider.component';\n\nexport const TuiSlider = [\n    TuiSliderComponent,\n    TuiSliderThumbLabel,\n    TuiSliderKeyStepsBase,\n    TuiSliderKeySteps,\n    TuiSliderReadonly,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAKA;;AAEG;AACI,MAAM,sBAAsB,GAAG,EAAE;AAsBxC,SAAS,6BAA6B,CAClC,QAAqB,EACrB,EAAiE,EAAA;IAEjE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/E,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjE,IAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC;AACzC,QAAA,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5C,IAAA,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAClC,CAAC;AAEe,SAAA,2BAA2B,CACvC,eAAuB,EACvB,QAAqB,EAAA;AAErB,IAAA,MAAM,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,GAC1E,6BAA6B,CACzB,QAAQ,EACR,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,eAAe,IAAI,iBAAiB,CACnE,CAAC;AACN,IAAA,MAAM,KAAK,GACP,CAAC,eAAe,GAAG,gBAAgB,KAAK,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,CAAC,cAAc,GAAG,cAAc,IAAI,KAAK,GAAG,cAAc,CAAC;AAEhF,IAAA,OAAO,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAC1D,CAAC;AAEe,SAAA,2BAA2B,CACvC,KAAa,EACb,QAAqB,EAAA;AAErB,IAAA,MAAM,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,GAC1E,6BAA6B,CACzB,QAAQ,EACR,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,KAAK,IAAI,YAAY,CAC/C,CAAC;AACN,IAAA,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,cAAc,KAAK,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAEhF,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,KAAK,GAAG,gBAAgB,CAAC;AAC5E,CAAC;AAEe,SAAA,4BAA4B,CACxC,QAAqB,EACrB,MAA0B,EAAA;AAE1B,IAAA,OAAO,KAAK,MAAA;AACD,QAAA,gBAAgB,CAAC,YAAoB,EAAA;YACxC,MAAM,kBAAkB,GAAG,2BAA2B,CAClD,YAAY,EACZ,QAAQ,CACX,CAAC;AAEF,YAAA,OAAO,CAAC,kBAAkB,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;SAC9E;AAEM,QAAA,cAAc,CAAC,WAAmB,EAAA;YACrC,MAAM,UAAU,GACZ,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEhE,OAAO,2BAA2B,CAAC,UAAU,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;SAClE;AACJ,KAAA,GAAG,CAAC;AACT;;ACpFa,MAAA,0BAA0B,GAAqB;AACxD,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,UAAU,EAAE,iCAAiC;EAC/C;AAEF;;AAEG;AACU,MAAA,kBAAkB,GAAG,IAAI,cAAc,CAChD,SAAS,GAAG,oBAAoB,GAAG,EAAE,EACrC;AACI,IAAA,OAAO,EAAE,MAAM,0BAA0B;AAC5C,CAAA,EACH;AAEI,SAAU,wBAAwB,CAAC,OAAkC,EAAA;IACvE,OAAO,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC;AACtF;;ACPA,MAqBa,kBAAkB,CAAA;AAkB3B,IAAA,WAAA,GAAA;AAjBiB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;AAExD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,KACnE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAClC,CAAC;AAGK,QAAA,IAAA,CAAA,IAAI,GAAa,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB,CAAC;AAC1C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE;AACrD,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC,CAAC;AAGC,QAAA,IAAI,IAAI,CAAC,OAAO,YAAY,OAAO,EAAE;AACjC;;;;;;AAMG;AACH,YAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AACpE,SAAA;KACJ;;IAGD,IAKW,cAAc,CAAC,QAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC/B;AAED,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC/D;AAED,IAAA,IAAW,GAAG,GAAA;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KAC9B;IAED,IAAW,GAAG,CAAC,CAAS,EAAA;QACpB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC3B;AAED,IAAA,IAAW,GAAG,GAAA;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;KACrC;IAED,IAAW,GAAG,CAAC,CAAS,EAAA;QACpB,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC3B;AAED,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;AACf,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;KAC5D;IAED,IAAW,IAAI,CAAC,CAAS,EAAA;QACrB,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KAC5B;AAED,IAAA,IAAW,KAAK,GAAA;AACZ;;;;;AAKG;AACH,QAAA,IAAI,IAAI,CAAC,OAAO,YAAY,OAAO,EAAE;YACjC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,WAAW;kBACnB,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAClD,kBAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAE7B,OAAO,IAAI,CAAC,IAAI;AACZ,kBAAE,QAAQ,CACJ,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EACzC,sBAAsB,CACzB;kBACD,KAAK,CAAC;AACf,SAAA;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACrC;IAED,IAAW,KAAK,CAAC,QAAgB,EAAA;QAC7B,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,CAAG,EAAA,QAAQ,EAAE,CAAC;KACjC;AAES,IAAA,gBAAgB,CAAC,QAAkB,EAAA;AACzC,QAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AACtB,YAAA,OAAO,+CAA+C,CAAC;AAC1D,SAAA;QAED,MAAM,WAAW,GAAG,QAAQ;AACvB,aAAA,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;aAC/C,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC;AAErC,QAAA,OAAO,WAAW,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,KAChB,GAAG,GAAG,CAAA;AACqB,yCAAA,EAAA,OAAO,UAAU,OAAO,CAAA;8BACrC,OAAO,CAAA,EAAA,EAAK,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAI,CAAA,EAAA,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;AAC5F,gBAAA,CAAA,EACL,2CAA2C,WAAW,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI,CAChE,CAAC;KACL;+GAtHQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAkCZ,CAAC,CAAoB,KAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gCAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAlDhE,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHrC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,44OAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAkBH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBArB9B,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACN,QAAA,EAAA,8BAA8B,EAC9B,QAAA,EAAA,EAAE,EAEK,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,cAAc,CAAA,kBAAA,CAAoB,CAAC,EACzC,IAAA,EAAA;AACF;;;;;AAKG;AACH,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,kCAAkC,EAAE,oBAAoB;AACxD,wBAAA,8BAA8B,EAAE,iBAAiB;AACjD,wBAAA,iCAAiC,EAAE,YAAY;AAC/C,wBAAA,kBAAkB,EAAE,MAAM;AAC7B,qBAAA,EAAA,MAAA,EAAA,CAAA,44OAAA,CAAA,EAAA,CAAA;0EAYM,IAAI,EAAA,CAAA;sBADV,KAAK;gBA4BK,cAAc,EAAA,CAAA;sBALxB,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACH,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,SAAS,EAAE,CAAC,CAAoB,KAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1E,qBAAA,CAAA;;;AC/DL,MASa,qBAAqB,CAAA;AATlC,IAAA,WAAA,GAAA;AAUqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;QAMpE,IAAI,CAAA,IAAA,GAAkB,CAAC,CAAC;AAExB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA6C,IAAI,CAAC,CAAC;QACvE,IAAK,CAAA,KAAA,GAAG,QAAQ,CACnB,KAAK,CAAC,CAAC,CAAC;AACH,aAAA,IAAI,CAAC,SAAS,CAAC,MAAM,eAAe,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACpE,CAAC;AA4CL,KAAA;AAzCG,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;KAChD;IAED,IACW,QAAQ,CAAC,KAAyB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7C;AAED;;;;;;;;;;AAUG;AACH,IAAA,IAAW,UAAU,GAAA;AACjB;;;;;;AAMG;QACH,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;KAC7D;AAEM,IAAA,QAAQ,CAAC,WAAmB,EAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;AAEjD,QAAA,QACI,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;AACnE,YAAA,QAAQ,EACV;KACL;+GAzDQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+FAOX,CAAC,CAAiB,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAUlE,UAAA,CAAA;IADC,OAAO;AAGP,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;4FAnBQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACF,wBAAA,sBAAsB,EAAE,KAAK;AAC7B,wBAAA,sBAAsB,EAAE,KAAK;AAC7B,wBAAA,sBAAsB,EAAE,SAAS;AACpC,qBAAA;AACJ,iBAAA,CAAA;8BASU,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,EAAC,SAAS,EAAE,CAAC,CAAiB,MAAM,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,EAAC,CAAA;AAUxD,aAAA,CAAA,EAAA,MAAM,MAKN,QAAQ,EAAA,CAAA;sBADlB,KAAK;;AAuCV,MAaa,iBAAkB,SAAQ,UAAkB,CAAA;AAbzD,IAAA,WAAA,GAAA;;QAcqB,IAAM,CAAA,MAAA,GAAG,MAAM,CAC5B,UAAU,CAAC,MAAM,kBAAkB,CAAC,CACvC,CAAC;AAML,KAAA;IAJG,IACW,QAAQ,CAAC,KAAkB,EAAA;QAClC,IAAI,CAAC,WAAW,GAAG,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACvE;+GARQ,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,2YATf,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAS/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EACJ,yHAAyH;AAC7H,oBAAA,SAAS,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,QAAQ,EAAE,aAAa;AACvB,wBAAA,SAAS,EAAE,+BAA+B;AAC1C,wBAAA,UAAU,EAAE,+BAA+B;AAC9C,qBAAA;AACJ,iBAAA,CAAA;8BAOc,QAAQ,EAAA,CAAA;sBADlB,KAAK;;;AC3FV,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACpC,WAAW;IACX,WAAW;IACX,YAAY;IACZ,SAAS;IACT,KAAK;IACL,MAAM;IACN,UAAU;IACV,QAAQ;AACX,CAAA,CAAC,CAAC;AAEH;;;AAGG;AACH,MAQa,iBAAiB,CAAA;AAO1B,IAAA,WAAA,GAAA;QANiB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB,CAAC;AAC1C,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAGjC,IAAQ,CAAA,QAAA,GAAiB,IAAI,CAAC;QAGjC,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE;AACzD,YAAA,OAAO,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE;AACxD,YAAA,OAAO,EAAE,KAAK;AACjB,SAAA,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE;AACtD,YAAA,OAAO,EAAE,IAAI;AAChB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAC5B,WAAW,CAAC,IAAI,CACZ,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAChC,GAAG,CAAC,gBAAgB,CAAC,CACxB,EACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CACzC,CAAC;AAEF;;;AAGG;AACH,QAAA,aAAa,CAAC,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAC1C,aAAA,IAAI,CACD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,iBAAiB,CAAC,EACrD,kBAAkB,EAAE,CACvB;AACA,aAAA,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;KACjE;AAES,IAAA,YAAY,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,KAAK,CAAC,cAAc,EAAE,CAAC;AAC1B,SAAA;KACJ;AAES,IAAA,0BAA0B,CAAC,KAAoB,EAAA;QACrD,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAA;KACJ;+GAhDQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,2GAIP,qBAAqB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oCAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAJ/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,IAAI,EAAE;AACF,wBAAA,WAAW,EAAE,oCAAoC;AACjD,wBAAA,aAAa,EAAE,sBAAsB;AACxC,qBAAA;AACJ,iBAAA,CAAA;0EAMU,QAAQ,EAAA,CAAA;sBADd,KAAK;uBAAC,EAAC,SAAS,EAAE,qBAAqB,EAAC,CAAA;;;ACrC7C;AAAA;AAUA,MASa,mBAAmB,CAAA;IAOrB,kBAAkB,GAAA;QACrB,SAAS;AACL,YAAA,OAAO,CAAC,MAAM,CACV,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EACnC,2FAA2F;AACvF,gBAAA,uEAAuE,CAC9E,CAAC;KACT;AAED,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,CAAC;KACnC;AAED,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,IAAc,UAAU,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;KAC1D;+GA1BQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,SAAA,EAFjB,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC,EAG7D,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kBAAkB,EAGlB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,SAAS,gDCvB3B,8UAaA,EAAA,MAAA,EAAA,CAAA,qfAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDAc,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAMhB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,uBAAuB,EAAA,OAAA,EACxB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC,EAAA,QAAA,EAAA,8UAAA,EAAA,MAAA,EAAA,CAAA,qfAAA,CAAA,EAAA,CAAA;8BAIxD,MAAM,EAAA,CAAA;sBADxB,YAAY;uBAAC,kBAAkB,CAAA;gBAIb,OAAO,EAAA,CAAA;sBADzB,YAAY;uBAAC,SAAS,CAAA;;;AEfd,MAAA,SAAS,GAAG;IACrB,kBAAkB;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;;;ACbrB;;AAEG;;;;"}